9 战利品表


推荐阅读:Minecraft 原版模组入门教程 - 战利品表(作者ruhuasiyu)

一、事件监听

ServerEvents下有多个用于修改战利品表的子事件:

事件
描述

ServerEvents.blockLootTables

方块战利品表修改

ServerEvents.chestLootTables

宝箱战利品表修改

ServerEvents.giftLootTables

礼物战利品表修改[1]

ServerEvents.entityLootTables

实体战利品表修改

ServerEvents.fishingLootTables

钓鱼战利品表修改

ServerEvents.genericLootTables

战利品表修改(按命名空间)

[1]如猫、村民(村庄英雄)等。

以修改方块战利品表为例:

ServerEvents.blockLootTables(event =>{
    // code here
})

二、战利品表修改

KubeJS添加了一些方法来简化战利品表的修改。

这里以修改方块战利品表为例:

事件方法
功能
补充说明

addSimpleBlock(BlockStatePredicate 方块)

快捷添加掉落自身的战利品表

可以传入tag、方块ID等

addBlock(BlockStatePredicate 方块,LootBuilder 战利品表)

设置战利品表

见下

modifyBlock(BlockStatePredicate 方块,LootBuilder 战利品表)

修改战利品表

见下

addJson(命名空间 战利品表ID, JsonObject 战利品表)

直接添加json格式的战利品表

-

对于其他类型的战利品表修改,你只需要修改方法名,其他内容大同小异。例如实体对应的战利品表设置方法为addEntity,而钓鱼的则为addFishing,以此类推。

三、LootBuilder

LootBuilder添加了一系列用于修改战利品表的方法:

🔎方法
功能
补充说明

addCondition(JsonObject 战利品表条件)

添加战利品表条件

-

addFunction(JsonObject 战利品表函数)

添加战利品表函数

-

addPool(LootBuilderPool 战利品池)

添加战利品池

-

randomChance(概率)

设置触发概率

-

randomChanceWithLooting(概率, 倍率)

设置抢夺附魔掉落概率

-

survivesExplosion()

设置战利品表不受爆炸影响

-

enchantWithLevels(NumberProvider 等级, 布尔值 是否为宝藏)

设置附魔

NumberProvider[2]

enchantRandomly(命名空间[] 附魔项)

随机附魔

随机从传入的附魔中选择进行附魔

killedByPlayer()

设置由玩家击杀才掉落

-

...

...

...

[2] NumberProvider可以接受:{min: 最小值, max: 最大值}单个数字

注意:上述附魔效果必定生效,如需对其进行限制,你需要添加战利品表条件。

四、LootBuilderPool

🔎方法 / 属性
功能
补充说明

addItem(Itemstack 物品, 权重, 数量)

添加目标物品

以下各项均对之生效。权重, 数量可留空。

属性 rolls

设置抽取次数

-

setBinomialRolls(n,p)

设置抽取次数(二项分布)

n为总试验次数,p为单次概率

setUniformRolls(最小值, 最大值)

设置抽取次数(均匀分布)

最小->最大机会均等

addEntry(JsonObject 项目)

添加项目

-

enchantWithLevels(NumberProvider 等级, 布尔值 是否为宝藏)

设置附魔

NumberProvider[2]

enchantRandomly(命名空间[] 附魔项)

随机附魔

随机从传入的附魔中选择进行附魔

randomChanceWithLooting(概率, 倍率)

设置抢夺附魔掉落概率

-

survivesExplosion()

设置战利品表不受爆炸影响

-

killedByPlayer()

设置由玩家击杀才掉落

-

randomChance(概率)

设置触发概率

-

randomChanceWithLooting(概率, 倍率)

设置抢夺附魔掉落概率

-

注意,LootBuilderLootBuilderPool中的条件在不相符时不会生效,例如挖掘方块时游戏不会检查是否是玩家击杀。

注意:上述附魔效果必定生效,如需对其进行限制,你需要添加战利品表条件。

五、示例