9.战利品表
推荐阅读:Minecraft 原版模组入门教程 - 战利品表(作者ruhuasiyu)
一、事件监听
ServerEvents
下有多个用于修改战利品表的子事件:
ServerEvents.blockLootTables
方块战利品表修改
ServerEvents.chestLootTables
宝箱战利品表修改
ServerEvents.giftLootTables
礼物战利品表修改[1]
ServerEvents.entityLootTables
实体战利品表修改
ServerEvents.fishingLootTables
钓鱼战利品表修改
ServerEvents.genericLootTables
战利品表修改(按命名空间)
[1]如猫、村民(村庄英雄)等。
以修改方块战利品表为例:
二、战利品表修改
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(概率, 倍率)
设置抢夺附魔掉落概率
-
注意,LootBuilder
和LootBuilderPool
中的条件在不相符时不会生效,例如挖掘方块时游戏不会检查是否是玩家击杀。
注意:上述附魔效果必定生效,如需对其进行限制,你需要添加战利品表条件。
五、示例
最后更新于