• admin
  • 144
  • 2025-07-24 20:13:41

概述

这是一个Forge/NeoForge模组,需要前置KubeJS。

该模组使用Forge/NeoForge的 Global Loot System 以及 KubeJS 来添加基于特定条件的战利品修改。

作者不会将其反向移植到 1.17 或 1.16.5 以下版本,且 1.21 及以上版本仅支持 Neoforge 。

安装

从 CurseForge(或GitHub上)下载最新版模组。

下载最新版 KubeJS。

安装 Forge/NeoForge。

将两个模组放到 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())});高版本(1.19+)

由于高版本KubeJS改动很大,1.16的JavaScript代码部分不再通用

来自GitHub Wiki的官方例子,为砂砾添加火药作为随机掉落:

LootJS.modifiers((event) => { event .addBlockLootModifier("minecraft:gravel") //为砂砾添加Modifier .randomChance(0.3) //概率为30% .addLoot("minecraft:gunpowder");}); //掉落内容为火药依然可以为苦力怕添加火药作为掉落:

LootJS.modifiers((event) => { event .addEntityLootModifier("minecraft:creeper") //为苦力怕添加实体Modifier .addLoot("minecraft:gunpowder");}); //掉落内容为火药还可以添加战利品列表(Loot Table):

LootJS.modifiers((event) => { // by id 通过loot table的id添加 event .addLootTableModifier("minecraft:entities/creeper") //使用苦力怕的战利品列表 .randomChance(0.3) //概率为30% .addLoot("minecraft:gunpowder"); //掉落内容为火药 // by regular expression 通过正则表达式添加 event .addLootTableModifier(/.*creeper.*/) //正则表达式,内容依旧是苦力怕 .randomChance(0.3) //概率为30% .addLoot("minecraft:gunpowder");}); //掉落内容为火药更多信息

有关模组的更多功能以及信息,请查看Wiki或示例。

禁用战利品表

一些方块例如树叶会被随机破坏。你可以禁用它们的战利品表。

onEvent("lootjs", (event) => { // 禁用所有树叶 event.disableLootModification(/.*:blocks\/.*_leaves/); // 禁止蝙蝠战利品 event.disableLootModification("minecraft:entities/bat");});为战利品修改启用日志记录

当进行了大量修改时,很难追踪在特定条件下触发了哪些修改。启用 enableLogging 后 LootJS 会将每次触发修改的日志记录到 logs/kubejs/server.txt 中。