概述
这是一个 Forge 模组,需要前置Kubejs。
该模组使用 Forge 的 Global Loot System 以及 Kubejs 来添加基于特定条件的战利品修改。
本模组适用于 1.16.5,1.18.1以及1.18.2,作者不会将其反向移植到 1.17 或 1.16.5 以下版本。
安装
从 CurseForge(或GitHub上)下载最新版模组。
下载最新版 Kubejs。
安装 Forge。
将两个模组放到 mods 文件夹中。
战利品修改示例
战利品修改应在服务端处理,所以脚本应当放在 kubejs/server_scripts 文件夹中,并创建一个 .js 的文件。
这是一个为苦力怕 (Creeper) 添加火药战利品的简单示例:
onEvent("lootjs", (event) => {
event
.addEntityLootModifier("minecraft:creeper")
.randomChance(0.3) // 30% 概率
.thenAdd("minecraft:gunpowder");
});
除了指定战利品表,还可以修改所有实体:
onEvent("lootjs", (event) => {
event
.addLootTypeModifier(LootType.ENTITY) // 可应用于多种类型
.logName("It's raining loot") // 你可以自定义在log中显示的名字
.weatherCheck({
raining: true,
})
.thenModify(Ingredient.getAll(), (itemStack) => {
return itemStack.withCount(itemStack.getCount() * 2);
});
});
并且还可以检测是否手持指定物品:
onEvent("lootjs", (event) => {
event
.addBlockLootModifier("#forge:ores") // 注意此处是方块标签而非物品标签
.matchEquip(EquipmentSlot.MAINHAND, Item.of("minecraft:netherite_pickaxe").ignoreNBT())
.thenAdd("minecraft:gravel");
// 检测主手以及副手示例如下:
// matchMainHand(Item.of("minecraft:netherite_pickaxe").ignoreNBT())
// matchOffHand(Item.of("minecraft:netherite_pickaxe").ignoreNBT())
});
更多信息
有关模组的更多功能以及信息,请查看wiki或示例。
禁用战利品表
一些方块例如树叶会被随机破坏。你可以禁用它们的战利品表。
onEvent("lootjs", (event) => {
// 禁用所有树叶
event.disableLootModification(/.*:blocks\/.*_leaves/);
// 禁止蝙蝠战利品
event.disableLootModification("minecraft:entities/bat");
});
为战利品修改启用日志记录
当进行了大量修改时,很难追踪在特定条件下触发了哪些修改。启用 enableLogging 后 LootJS 会将每次触发修改的日志记录到 logs/kubejs/server.txt 中。