月之暗面z
天阿 这么好的贴为啥没人评论?

Wudji
月之暗面z 发表于 2022-1-16 19:01
天阿 这么好的贴为啥没人评论?

因为这东西在子版块的子版块里


月之暗面z
Wudji 发表于 2022-1-16 19:11
因为这东西在子版块的子版块里

这就很尴尬,顺便请问如何在机械动力的序列组装中设置某个物品不消耗或者消耗耐久呢?

Wudji
月之暗面z 发表于 2022-1-17 20:04
这就很尴尬,顺便请问如何在机械动力的序列组装中设置某个物品不消耗或者消耗耐久呢? ...

11-3 例子3可以对输入物品进行修改

月之暗面z
大佬什么时候更新啊~

夜丶尛乖
想问一下大佬,用这个模组能不能实现“矿物词典统一”?就是科技类mod,跨mod使用同一种矿物,并且让产物[合成输入、合成输出]也变成同一种,而不是各个mod各管各的。
想请问一下大致思路是什么?

Wudji
夜丶尛乖 发表于 2022-1-29 03:47
想问一下大佬,用这个模组能不能实现“矿物词典统一”?就是科技类mod,跨mod使用同一种矿物,并且让产物[ ...

可以啊
event.replaceInput({mod: '对应modid'}, '被替换输入物品', '要替换的输入物品')
其中物品都可以用tag或注册名

Wudji
月之暗面z 发表于 2022-1-27 10:07
大佬什么时候更新啊~

已更新      

xiao小xiao
感谢大佬分享~
(礼貌提问:kubejs怎么实现右键方块掉落物品?
我也不知道在这问里不礼貌但孩子是真的没有金粒发布问答了

Wudji
xiao小xiao 发表于 2022-2-3 20:20
感谢大佬分享~
(礼貌提问:kubejs怎么实现右键方块掉落物品?
我也不知道在这问里不礼貌但孩子是真的没有 ...

监听block.right_click事件,如果对应方块为指定方块,则给予玩家物品
或者直接runcommand /summon 物品,坐标为方块的坐标(y值可能要做调整)

xiao小xiao
Wudji 发表于 2022-2-3 20:23
监听block.right_click事件,如果对应方块为指定方块,则给予玩家物品
或者直接runcommand /summon 物品 ...

感谢大佬~!

xiao小xiao
Wudji 发表于 2022-2-3 20:23
监听block.right_click事件,如果对应方块为指定方块,则给予玩家物品
或者直接runcommand /summon 物品 ...

... ...能稍微讲的详细一点吗?搞了几个小时结果没啥用(打扰了)

月之暗面z

坐等沉浸工程~

Wudji
xiao小xiao 发表于 2022-2-4 00:09
... ...能稍微讲的详细一点吗?搞了几个小时结果没啥用(打扰了)
  1. onEvent('block.right_click', event=>{
  2.   if (event.block.id == "minecraft:dirt" && event.player.mainHandItem.id == 'minecraft:glass_bottle'){
  3.     event.server.runCommandSilent('give ' + event.player.name + " minecraft:dirt 1")
  4.     //或者也可以这样写:
  5.     //event.player.give(Item.of('minecraft:dirt'))
  6.     //冷却200tickevent.player.addItemCooldown('minecraft:glass_bottle', 200)
  7.     event.block.set('minecraft:stone')
  8.     event.player.tell('1x 泥土已到账')
  9.     event.sendInventoryUpdate()
  10.   }
  11. })
复制代码

更详细的教程见15章(正在编写中)



0880
这个mod牛逼啊,功能强大,谢谢分享

云底下的星星
请问 如果需要批量删除大量物品的合成  使用  let = 应该怎么写?

凡人丶小陈陈
多谢大佬分享
请问能出1.18.1高本版的物品添加和属性修改的详细教程吗?

凡人丶小陈陈
自己去wiki看了看
物品添加搞定了,但属性修改(指攻击伤害和攻击速度不成功)就很麻,
如果大佬有时间,麻烦了~

q522461078
1.18版本的kubejs,修改标签的的事件居然变成了tags.items,这玩意找了我老半天才发现....吐血。

q522461078
想问下楼主有没有什么方法可以写出这样的效果:
写一个熔炉的配方,输入是#forge:dusts/(任意金属),输出是对应的#forge:ingots/(粉的对应金属)

Mz_beichen
唉 又是魔改。。居然还出了教程 无语

Mz_beichen
哎呀 又是魔改 魔改实在太痛苦了

dodomos
本帖最后由 dodomos 于 2022-3-3 20:06 编辑

血魔法的那个arc不是奥数粉灰,而是炼金反应炉

生涯满腹
很棒的教程!灰常详细!

KNFF
大佬,想请问自定义盔甲的材质应该怎么放,我无论放哪里都是紫块,哭了

3453890470
可不可以移除指定mod某个物品的配方

q522461078
3453890470 发表于 2022-3-22 12:37
可不可以移除指定mod某个物品的配方

JEI里还可以看到某个物品的合成ID为:XXXX,配方里有A物品,而你想替换成B物品
你可以直接replaceInput({id:XXXX},A,B),这样就可以只改动这一个配方里的A物品,而不用先给这个配方remove再添加。

天秀之人就是我
监听事件是怎么做的?我这里抄的那个聊天事件的第一个,提示我'event' is not defined,错误报在了events.listen那里

Wudji
天秀之人就是我 发表于 2022-3-29 09:59
监听事件是怎么做的?我这里抄的那个聊天事件的第一个,提示我'event' is not defined,错误报在了events.li ...

见1-1基础代码格式

Wudji
天秀之人就是我 发表于 2022-3-29 09:59
监听事件是怎么做的?我这里抄的那个聊天事件的第一个,提示我'event' is not defined,错误报在了events.li ...

比如
onEvent('player.chat', event => {
  event.xxx.xxx()//在此编写脚本内容
})

Wudji
天秀之人就是我 发表于 2022-3-29 09:59
监听事件是怎么做的?我这里抄的那个聊天事件的第一个,提示我'event' is not defined,错误报在了events.li ...

貌似第八章的内容过时了,我回来更新一下吧

千绝qianjue01
15玩家事件交互好像显示不出来了

cyx3018_aF60E
感谢分享

小岳唷
这不叫Minecraft
这叫Mine Craft

ASGORE_DREAMER
看不懂,但我大为震撼

ASGORE_DREAMER
好东西,要了

q522461078
更新了好耶!!!

lingaott
非常感谢!这个真的超好用,尝试兼容《机械动力:超越一切》和《沉浸工程》的时候真的被震惊了

Tollainmear
本帖最后由 Tollainmear 于 2022-4-30 02:12 编辑

@Wudji 翻了一下文档,没有找到kubejs如何监听玩家吃东西的事件,'item.right_click'监听的事件一按右键就触发了,我看forge上监听吃东西的事件似乎是通过'LivingEntityUseItemEvent.finish',但没有在kubejs的文档里找到这个,可以帮忙提供个思路嘛?


补更,查了半天文档没有卵用,最后翻了源码找到了没有在文档里提到的事件:
https://github.com/KubeJS-Mods/K ... beJSEvents.java#L83


成了!奥耶!


aa1122a33
Tollainmear 发表于 2022-4-30 01:24
@Wudji 翻了一下文档,没有找到kubejs如何监听玩家吃东西的事件,'item.right_click'监听的事件一按右键就 ...

老哥,我用1.18.1版本来尝试注册物品,但是并不能实现,然后我在这个文件中并没有看到registery.item事件,那么我应该如何注册物品呢?

Tollainmear
本帖最后由 Tollainmear 于 2022-5-2 11:51 编辑
aa1122a33 发表于 2022-4-30 23:30
老哥,我用1.18.1版本来尝试注册物品,但是并不能实现,然后我在这个文件中并没有看到registery.item事件 ...

在kubejs\startup_scripts文件夹下创建一个js文件,里面写监听,如果要注册物品,就写在'item.registrt'事件里,方块写在'block.registry'里,流体写在'fluid.registry'里,可以参考我写的:

  1. //注册物品写这里
  2. onEvent('item.registry', event => {
  3.     //注册一个食物
  4.     event.create('opened_soup_can').maxStackSize(1).food((food) => {food.hunger(8).meat(true).alwaysEdible(true).fastToEat(true).effect('watersource:thirst', 1200, 2, 0.1)}).texture('kubejs:item/opened_soup_can').displayName('启封的炖菜罐头')
  5.     //注册一个没什么用的道具
  6.     event.create('soup_can').maxStackSize(16).texture('kubejs:item/soup_can').displayName('炖菜罐头')
  7. })

  8. //注册方块写这里
  9. onEvent('block.registry', event => {
  10.     event.create('soup_block').material('iron').hardness(1.0).displayName('箱装炖菜罐头')
  11. })

  12. //注册流体写这里
  13. onEvent('fluid.registry', event => {
  14.     event.create('liquid_soup').displayName(`炖菜汤`).textureStill('kubejs:fluid/soup_still').textureFlowing('kubejs:fluid/soup_flow').bucketColor(0xb07f22)
  15. })
复制代码



Tollainmear
event.remove({id: '物品ID'})      移除合成该物品的所有配方

@Wudji 这个描述有误,id后面放的不是物品ID,而是配方ID:


『南南』
为什么我目录点不进去?

Tollainmear
本帖最后由 Tollainmear 于 2022-5-23 23:25 编辑

巧了 我上个月也在服务器里搞了一个罐头的配方,也拿出来分享一下吧:


添加的物品:

从左至右依次是:
锡板、轻薄锡板、锡罐、炖菜汤、启封的炖菜罐头、炖菜罐头、脏兮兮的锡罐
注册这些道具、流体的代码:
  1. //道具注册
  2. onEvent('item.registry', event => {
  3.     //工序复杂,所以我们多加一些buff收益,其中口渴Debuff源自水源mod
  4.     event.create('opened_soup_can').maxStackSize(1)//不可堆叠
  5.         .food((food) => {
  6.             food.hunger(12)  //恢复12点饱食度
  7.             .meat(true)
  8.             .alwaysEdible(true)//不饿的时候也可以吃
  9.             .fastToEat(true)    //吃的快
  10.             .effect('watersource:thirst', 1200, 2, 0.1)         //10%概率获得口渴buff
  11.             .effect('minecraft:night_vision', 3600, 1, 1)       //100%概率获得夜视buff
  12.             .effect('minecraft:haste', 1800, 1, 1)              //100%概率获得急迫buff
  13.             .effect('minecraft:strength', 1200, 2, 0.25)        //25%概率获得力量2buff
  14.             .effect('minecraft:regeneration', 200, 1, 0.5)      //50%概率获得生命再生buff
  15.         }).texture('kubejs:item/opened_soup_can')
  16.         .displayName('启封的炖菜罐头')

  17.     //这里我们把没启封的罐头也设定为食物,后面解释
  18.     event.create('soup_can').maxStackSize(16)
  19.         .food((food) => {
  20.             food.hunger(0)
  21.             .fastToEat(true)
  22.             .alwaysEdible(true)
  23.         }).texture('kubejs:item/soup_can')
  24.         .displayName('炖菜罐头')

  25.     event.create('tin_plate').maxStackSize(64)
  26.         .texture('kubejs:item/tin_plate')
  27.         .displayName('锡板')

  28.     event.create('tin_thin_plate').maxStackSize(64)
  29.         .texture('kubejs:item/tin_thin_plate')
  30.         .displayName('轻薄锡板')

  31.     event.create('tin_can').maxStackSize(64)
  32.         .texture('kubejs:item/tin_can')
  33.         .displayName('锡罐')

  34.     event.create('dirty_tin_can').maxStackSize(64)
  35.         .texture('kubejs:item/dirty_tin_can')
  36.         .displayName('脏兮兮的锡罐')
  37. })

  38. //注册流体
  39. onEvent('fluid.registry', event => {
  40.     event.create('liquid_soup').bucketColor(0xb07f22)  //流体颜色(安装Optifine可能导致显示不正确)
  41.         .textureStill('kubejs:fluid/soup_still')       //不流动的纹理
  42.         .textureFlowing('kubejs:fluid/soup_flow')      //流动的纹理
  43.         .displayName(`炖菜汤`)
  44. })
复制代码


制作顺序:

第一步
锡锭 >> 锡板
Create金属压片

  1. event.recipes.createPressing('kubejs:tin_plate', '#forge:ingots/tin')
复制代码

第二步
锡板 >> 轻薄锡板x8
Create序列组装

  1. //锡板辊压8次获得8张轻薄锡板
  2.     event.recipes.createSequencedAssembly('8x kubejs:tin_thin_plate', 'kubejs:tin_plate', [
  3.         event.recipes.createPressing('kubejs:tin_thin_plate', 'kubejs:tin_thin_plate')
  4.     ]).transitionalItem('kubejs:tin_thin_plate')
  5.       .loops(8)  //循环8次
  6.       .id('kubejs:tin_thin_plate')
复制代码

第三步
轻薄锡板x7 >> 锡罐x4
原版合成

  1. //如上图所示
  2.     event.shaped('4x kubejs:tin_can', [
  3.         'A A',
  4.         'A A',
  5.         'AAA'
  6.     ], {
  7.         A: 'kubejs:tin_thin_plate'
  8.     })
复制代码

第四步
盐 + 水(1000mb) + 任意蔬菜x16 + 任意木屑x8 + 任意蛋白质x2 >> 炖菜汤(1000mb)
Create混合搅拌(加热)

  1. //这里用#来匹配tag,以实现任意蔬菜和任意蛋白质
  2.     event.recipes.createMixing(Fluid.of('kubejs:liquid_soup', 1000), [
  3.         Fluid.of('minecraft:water', 1000), //注意:单中流体不能大于1000
  4.         '16x #forge:vegetables',    //16个任意蔬菜
  5.         '8x #forge:dusts/wood',     //8个木屑,因为是冬季救援整合包,所以恶搞了一些蒸汽朋克的梗
  6.         '2x #diet:proteins',        //2个蛋白质,该tag属于diet模组
  7.         '#forge:salt'               //一撮盐,吃了盐才有力气对吧?
  8.     ]).heated();//加热
复制代码
  1. //这是指定Tag,用于匹配配方
  2. onEvent('item.tags', event => {
  3.     event.get('forge:vegetables').add('frostedheart:white_turnip_block') //把白萝卜加上蔬菜的tag
  4.     event.get("diet:proteins").add("kubejs:opened_soup_can")             //把炖菜汤加上蛋白质的tag
  5. })
复制代码


第五步
肉汤 + 锡罐 >> 启封的的炖菜罐头
Create注液

  1. //注液的方法,把250mb的炖菜汤灌到锡罐里
  2.     event.recipes.createFilling('kubejs:opened_soup_can', ['kubejs:tin_can', Fluid.of('kubejs:liquid_soup', 250)])
复制代码

第六步
启封的炖菜罐头 + 轻薄锡板 >> 炖菜罐头
Create机械手

  1. //利用机械手臂给罐头封闭
  2. event.recipes.createDeploying('kubejs:soup_can', ['kubejs:opened_soup_can', 'kubejs:tin_thin_plate'])
复制代码


关于启封罐头的两种方式

第一种方法 —— 用嘴啃:
  1. //监听吃东西的事件
  2. onEvent('item.food_eaten', event => {
  3.     //判断被吃掉物品的类型
  4.     if (event.item.id == "kubejs:soup_can") {
  5.         //给他一个启封的炖菜罐头,代表他启封成功啦
  6.         event.player.giveInHand('kubejs:opened_soup_can')
  7.         //不会有人觉得嘴巴比锡罐硬吧
  8.         //不会有人觉得嘴巴不会受伤吧
  9.         //当玩家生命值低于4,那他开完罐头大概率就死了
  10.         if (event.player.getHealth() <= 4){
  11.             event.server.tell("§4[奇葩新闻]§c" + event.player + "因为用嘴开罐头被活活扎死。")
  12.         }else{
  13.         //没死算你小子命硬,提醒一下,下次不要用嘴巴开罐头了
  14.             event.player.tell("§c你为啃开一个罐头,把嘴巴划破了。")
  15.         }
  16.         //给嘴硬的家伙施加4点伤害
  17.         event.player.attack(4)
  18.     }
  19. })
复制代码
第二种开罐头的方法 —— 合成:
  1. //这样才规规矩矩   
  2.     event.shapeless('kubejs:opened_soup_can', 'kubejs:soup_can')
复制代码


让锡罐重复利用!
  1. //当有人吃完罐头,让罐头留下一个沾满油渍的空罐子
  2. onEvent('item.food_eaten', event => {
  3.     if (event.item.id == "kubejs:opened_soup_can") {
  4.         event.player.giveInHand('kubejs:dirty_tin_can')
  5.     }
  6. })
复制代码

两种清洁罐子的方法
第一种 —— 手洗!
  1. //我们这里使用右击物品事件
  2. onEvent('item.right_click', event => {
  3.     let player = event.player
  4.     //判定手持物类型
  5.     if (player.getHeldItem(event.hand) == 'kubejs:dirty_tin_can') {
  6.         //因为水方块不像实心方块一样有交互事件,所以我们选择用射线追踪
  7.         let target = player.rayTrace(5)
  8.         //如果视线5格范围内有水方块
  9.         if (target.block.id == 'minecraft:water') {
  10.             player.tell('我: 芜湖~有点儿冷[抖...]')
  11.             //使用原版指令,给他一个潮湿的buff(该效果来自冰冻之心,会让玩家失温)
  12.             let testCmd = `effect give ${player.name} frostedheart:wet 15`
  13.             //这里使用悄咪咪的执行指令
  14.             event.server.runCommandSilent(testCmd)
  15.             //拿走一个浸油的锡罐
  16.             let amount = (player.getHeldItem(event.hand).count - 1)
  17.             player.setHeldItem(event.hand, Item.of('kubejs:dirty_tin_can', amount))
  18.             //给他一个洗干净的锡罐
  19.             player.giveInHand('kubejs:tin_can')
  20.         }
  21.     }
  22. })
复制代码
第二种 —— 机器搅拌!
  1. //工作盆里用100mb水进行搅拌
  2.     event.recipes.createMixing('kubejs:tin_can', [
  3.     Fluid.of('minecraft:water', 100),
  4.     'kubejs:dirty_tin_can'
  5.     ])
复制代码











怆然无措
请问有没有办法获取方块的红石充能等级呢,看mcwiki应该写在blockState的Power里,但试过
  1. onEvent('block.right_click', event => {
  2. if(event.player.mainHandItem=='minecraft:ghast_tear'
  3. )

  4. event.server.runCommand(`say ${event.block.blockState}`)
  5.   
  6. })
复制代码

没有报给我充能值,只有是否snowy和朝向(

Wudji
怆然无措 发表于 2022-5-25 20:37
请问有没有办法获取方块的红石充能等级呢,看mcwiki应该写在blockState的Power里,但试过

没有报给我充能 ...

event.block.blockState改成event.block.properties试试,然后再读红石等级

怆然无措
Wudji 发表于 2022-5-25 20:51
event.block.blockState改成event.block.properties试试,然后再读红石等级

event.block.properties还是只有{snowy=false},用event.block.properties.signal则是undefined,寄(

Leo-qian
请问一下大佬,我要怎么才能让所有的敌对生物都去破坏一个方块,就是类似于塔防的效果,谢谢!

人类最后的hope
大佬你好,我想要做一个在指定的时间发生特定事件的东西,我在游戏中加入了SimpleWorldTimer的模组,可以在游戏中看见天数与当前的时间,我想请问一下如何在指定的一天中的精确时间触发一个特定的事件,谢谢!

Wudji
人类最后的hope 发表于 2022-5-30 17:01
大佬你好,我想要做一个在指定的时间发生特定事件的东西,我在游戏中加入了SimpleWorldTimer的模组,可以在游 ...
  1. onEvent("server.tick", event => {// 监听server.tick事件
  2.     if(event.world.localTime == 1000){
  3.         event.server.runCommandSilent(`say localTime is 1000`);
  4.     }
  5. })
复制代码

详见15.4

第一页 上一页 下一页 最后一页