McLists一周年快乐
服务器已经添加了详细介绍信息板块
服主可以在管理后台来提交自己服务器介绍信息。
服务器介绍信息提交后,管理人员会进行审核
审核通过后会在服务器详细页面进行显示
提交服务器介绍信息会让新玩家更好的了解你的服务器哦~
添加图片信息,也会让百度等搜索引擎更好的收录您的服务器哦~
管理平台地址:传送门
Advancement JS

Advancement JS - Advancement JS(进度脚本)

通过 KubeJS 配置的不仅仅是进度。
fabric / forge 作者 westernat233 支持版本 1.18.2 - 1.20.1
下载量
231,649
关注数
20
数据来源
Modrinth
模组详细介绍

AdvancementJS

通过 KubeJS 配置更多成就

快速示例(适用于最新版本 2.9.3

启动脚本

// 创建自定义触发器
AdvJSEvents.trigger(event => {
    event.create("advjs:get_adv")
        // 你定义了多少个匹配项,就需要放入多少个测试
        // 在这个例子中,我们定义了 2 个匹配项
        .match(advancement => advancement.getId() == "minecraft:story/smelt_iron")
        .match(playerName => playerName == "Dev")
})

服务器脚本

AdvJSEvents.advancement(event => {
    const { PREDICATE, TRIGGER } = event;

    // 定义触发器
    const jump5times = TRIGGER.tick(triggerBuilder =>
        triggerBuilder.addStat(Stats.JUMP, Stats.CUSTOM, { min: 5 }));
    const bred_in_nether = TRIGGER.bredAnimals(triggerBuilder => {
        triggerBuilder.setChildByPredicate(PREDICATE.entityFromJson({
            stepping_on: {
                dimension: "the_nether"
            }
        }))
    });
    // AdvJS 自定义触发器
    const destroy_dirt = TRIGGER.blockDestroyed(triggerBuilder => triggerBuilder.setBlock("dirt"));
    // 你的自定义触发器
    const get_adv = TRIGGER.custom("advjs:get_adv");

    // 创建根成就
    const root = event.create("advjs:hell")
        .display(displayBuilder => {
            displayBuilder.setTitle("AdvancementJS")
            displayBuilder.setDescription("快速示例")
            displayBuilder.setIcon("diamond")
        })
        .criteria(criteriaBuilder => criteriaBuilder.add("dirt", destroy_dirt))
        .rewards(rewardsBuilder => {
            rewardsBuilder.setExperience(100)
            // AdvJS 自定义奖励
            rewardsBuilder.addEffect("absorption", 200)
        })
        // 使其可重复完成
        .repeatable();

    // 为根成就添加子成就
    root.addChild("child1", childBuilder => {
        childBuilder
            .display(displayBuilder => {
                displayBuilder.setTitle(Text.red("Holy"))
                displayBuilder.setDescription(Text.red("Hell starts"))
            })
            .criteria(criteriaBuilder => {
                // 'OR' 意味着如果你想达成这个成就,
                // 只需要满足下面两个触发器中的一个
                criteriaBuilder.setStrategy(RequirementsStrategy.OR)
                criteriaBuilder.add("bred", bred_in_nether)
                criteriaBuilder.add("jump", jump5times)
                criteriaBuilder.add("get_adv", get_adv)
            })
            .rewards(rewardsBuilder => {
                rewardsBuilder.setRecipes("minecraft:lodestone", "minecraft:brewing_stand")
                rewardsBuilder.setExperience(100)
            })
    });

    // 通过 AdvancementFilter 移除一个已存在的成就,可用的过滤器已在文档中写明。
    // 你也可以通过 id 移除:'event.remove("minecraft:story/lava_bucket");'
    event.remove({
        mod: "minecraft",
        icon: "minecraft:lava_bucket",
        frame: "task"
    });

    // 修改一个已存在的成就
    event.get("minecraft:story/smelt_iron")
        // 对显示应用偏移
        .displayOffset(1, 1, true)
        .modifyDisplay(displayBuilder => displayBuilder.setIcon("diamond_pickaxe"))
        .addChild("child2", childBuilder => {
            childBuilder
                .display(displayBuilder => {
                    displayBuilder.setIcon("recovery_compass")
                    displayBuilder.setTitle('我会回来的!')
                    displayBuilder.setDescription(Text.green("祝你好运"))
                    // 你也可以在 DisplayBuilder 中应用显示偏移
                    displayBuilder.offset(-1, 0)
                })
                // 触发器也可以从 JSON 创建
                .criteria(criteriaBuilder => criteriaBuilder.add("go_back_to_home", TRIGGER.fromJson({
                    "trigger": "minecraft:changed_dimension",
                    "conditions": {
                        "from": "minecraft:the_end",
                        "to": "minecraft:overworld"
                    }
                })))
                // 检查父成就是否已完成,否则此成就将无法完成
                .requireParentDone()
        });
})

AdvJSEvents.lock(event => {
    event.result("stone_slab", "minecraft:story/smelt_iron");
    event.itemUse("spyglass", "minecraft:story/smelt_iron");
    event.blockInteract("chest", "minecraft:story/smelt_iron");
    event.entityInteract("villager", "minecraft:story/smelt_iron");
})

// 与 'Better Advancements' 兼容
AdvJSEvents.betterAdv(event => {
    event.modify("advjs:hell/child1").posX(0).posY(32).hideLines()
})

PlayerEvents.advancement(event => {
    const player = event.getPlayer();
    // 第一个参数用于匹配玩家谓词,另外两个是你定义的匹配项
    CustomTriggers.of("advjs:get_adv").trigger(player, event.getAdvancement(), player.username)
})

如何重载

只需使用 /reload

功能特性

  • 命令 /advjs 用于生成内置示例
  • 你可以在启动事件 AdvJSEvents.trigger 中创建自定义触发器。
  • AdvJS 自定义触发器
  • blockDestroyed:当玩家破坏方块时触发。
  • playerTouch:当玩家接触实体时触发。
  • bossEvent:当玩家加入首领战斗时触发。
  • increasedKillScore:当玩家击杀实体时触发。
  • AdvJS 自定义奖励
  • addEffect:给予效果。
  • AdvJS 自定义方法
  • displayOffset(offsetX: number, offsetY: number, modifyChildren?: boolean)
  • 对成就显示及其子成就应用偏移
  • requireParentDone()
  • 检查父成就是否已完成,否则此成就将无法完成。
  • requireOthersDone(requires[]: ...ResourceLocation)
  • 检查你放入的成就是否已完成。
  • requireAnyDone(requires[]: ...ResourceLocation)
  • 兼容性
  • Better Advancements,新的服务器事件:AdvJSEvents.betterAdv
基本信息
模组名称Advancement JS
作者westernat233
下载量231,649
关注数20
支持版本1.18.2 - 1.20.1
加载器fabric / forge
客户端required
服务端required

友情链接: 网易我的世界 | 泰拉瑞亚 | ocent云计算 | 米饭Minecraft插件文档 | 友链合作

历史访问人数:1,318,170  |  历史访问人次:1,631,192

今日访问人数:5,281  |  今日访问人次:5,761

昨日访问人数:26,708  |  昨日访问人次:29,775

Copyright © 2019-2026 我的世界服务器列表站. All rights reserved.

Powered by GermMC 京ICP备17023959号-6