本篇教程由作者设定未经允许禁止转载。

minecraft版本forge1.20.1

模组版本:

lootjs-forge-1.20.1-2.12.0

reap-forge-1.20.1-1.1.2

这个情况在搓整合包的农作物掉落时偶然发现

先贴代码

LootJS.modifiers((event)=>{
    event
    .addBlockLootModifier("minecraft:wheat")
    .customCondition({
        condition: "minecraft:block_state_property",
        block: "minecraft:wheat",
        properties: {
        age: "7"
      }
    })
    .randomChance(0.03)
    .addLoot("kubejs:iron_wheat")
})

这是一个小麦植株的方块破坏掉落事件,当小麦方块成熟(age=7)时破坏方块有3%的概率掉落一个物品,且原本的掉落不会被覆盖


这时突然想起收获模组可以右击收获植株,但是右击交互与方块破坏是两种概念,正当在思考要不要用kubejs专门搓一个右击收获文件的时候特地下载了收获(Reap)测试了一下。


结果就是,右击收获模组可以正常触发上述lootjs添加的方块破坏掉落事件,并且利用骨粉催熟时掉落率也会正常运作。

初步判断这是因为收获模组会将作物方块的方块状态回退一个阶段,而回退的原理是因为方块被收获时执行的是方块破坏事件。


同时为了严谨测试了另一个相似的模组Right Click, Get Crops,结果也是一样,lootjs添加的方块掉落能够正常运行。

但要注意,不是所有的作物都会触发lootjs的掉落物修改,例如原版的甜浆果和发光浆果,两者在原版即有右键收获的特性,因此不会正常运行。


值得注意的是。收获(Reap)模组将甜浆果纳入右键收获列表里中后lootjs的代码也会正常运行,发光浆果则无效,因为发光浆果的藤蔓不存在名为“age”的方块状态,将其纳入收获列表里后收获浆果会直接将其回退到未结果的状态且不会掉落果实。


最后附甜浆果的lootjs代码

LootJS.modifiers((event)=>{
  event
  .addBlockLootModifier("minecraft:sweet_berry_bush")
  .customCondition({
      condition: "minecraft:block_state_property",
      block: "minecraft:sweet_berry_bush",
      properties: {
      age: "3"
    }
  })
  .randomChance(0.02)
  .addLoot("kubejs:iron_sweet_berry_bush")
  .limitCount([1,3], [30, 64])
})

因此可以发现,收获模组在收获具有“age”方块状态的农作物时可以触发lootjs的掉落物修改。