活跃
开源

LootJS: KubeJS Addon

0.5

闻所未闻

昨日指数: 102
昨日平均指数: 56.925

7.80万

总浏览

--

资料填充率


如何下载?
  • 概述

    该模组使用 (Neo)Forge 的 Global Loot System 和 KubeJS 来添加基于特定条件的战利品修改。

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

    战利品修改示例

    战利品修改应在服务端处理,所以脚本应当放在 kubejs/server_scripts 文件夹中,并创建一个 .js 的文件。

    这是一个为 苦力怕 添加火药战利品的简单示例:

    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+)

    由于高版本 Kube JS 改动很大,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");});                              //掉落内容为火药

    禁用战利品表

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

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

    更多信息

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

    为战利品修改启用日志记录

    当进行了大量修改时,很难追踪在特定条件下触发了哪些修改。

    启用 enableLogging 后 LootJS 会将每次触发修改的日志记录到 logs/kubejs/server.txt 中。

  • 论Lootjs中农作物掉落修改与收获(Reap)模组之间的奇妙反应
    1.21.1 NeoForge LootJS 快速启动(战利品箱)

短评加载中..