本篇教程由作者设定未经允许禁止转载。
站内实际上存在不使用LootJS的教程,比本教程方便多了。但使用LootJS可以更便捷地实现条件性战利品表而非特定战利品,也就是说本教程实际上阐述的不止是佩戴特定饰品,而是自定义条件的战利品表,同时也适用于箱子中的战利品!
正文部分
那么话不多说,我们用实例分析,我会把要点写出来也方便举一反三。
function isEquippedSeed(entity) {
if (!entity) return false;
return curiosHelper.findFirstCurio(entity, SEED_ITEM).isPresent();
}
LootJS.modifiers((event) => {
event.addEntityLootModifier('minecraft:warden')
.apply((context) => {
let player = context.getPlayer();
if (player && isEquippedHeart(player)) {
context.addLoot('moonstone:thefruit');
}
});
});这实际上是我自己的整合包里的一部分代码,如果你要使用,应当补充:
1、CuriosHelper的获取(如果不能理解为什么写这个请先了解KubeJS Curios的用法)
const curiosHelper = Java.loadClass("top.theillusivec4.curios.api.CuriosApi").getCuriosHelper();2、物品的定义
代码里的“SEED_ITEM”实际上就是你的物品ID,我这样写是因为我在其他地方定义了SEED_ITEM是什么,你也可以直接“minecraft:diamond”或别的什么。
核心思路是使用apply回调再结合你的自定义逻辑,我这里的逻辑是一个返回了是否佩戴指定饰品的函数,你也可以写一个逻辑返回,例如:
function isHealthAboveTwo(player) {
if (!player) return false;
return player.getHealth() > 2;
}当玩家当前生命值大于2时,返回true。
如果你要抄作业
1、把SEED_ITEM换成你自己的物品ID;
2、把'minecraft:warden'换成其他实体名,你也可以直接更换战利品表类型;
3、把'moonstone:thefruit'换成战利品ID(不是战利品表ID)
context.addLoot('moonstone:thefruit');你想add什么都可以。


