概述这是一个直接对服务端进度进行操作的 KubeJS 拓展。
以下是一个进度操作示例:// 1.18.2版请替换下一行为 onEvent("advjs", (event) => {
ServerEvents.advancement((event) => {
const { BOUNDS, PREDICATE, TRIGGER } = event;
// 定义触发器
const jump5times = TRIGGER.tick((triggerBuilder) =>
triggerBuilder.addStat(Stats.JUMP, Stats.CUSTOM, BOUNDS.min$Integer(5)));
const bred_in_nether = TRIGGER.bredAnimals((triggerBuilder) => {
// 支持json格式导入
triggerBuilder.setChild(PREDICATE.entity({
stepping_on: {
dimension: "the_nether"
}
}))
});
// 新增根进度
const root = event.create("advjs:hell")
.display((displayBuilder) => {
displayBuilder.setTitle("AdvancementJS")
displayBuilder.setDescription("Quick example")
displayBuilder.setIcon("diamond")
})
.criteria((criteriaBuilder) => criteriaBuilder.add("tick", TRIGGER.tick()));
// 为根进度添加子进度
root.addChild("child1", (childBuilder) => {
childBuilder
.display((displayBuilder) => {
displayBuilder.setTitle(Text.red("Holy"))
displayBuilder.setDescription(Text.red("Hell starts"))
})
.criteria((criteriaBuilder) => {
// 'OR' means that if you want to achieve this advancement,
// you just need one of two triggers matched below
criteriaBuilder.setStrategy(RequirementsStrategy.OR)
criteriaBuilder.add("bred", bred_in_nether)
criteriaBuilder.add("jump", jump5times)
})
.rewards((rewardsBuilder) => {
rewardsBuilder.setRecipes("minecraft:lodestone", "minecraft:brewing_stand")
rewardsBuilder.setExperience(100)
})
});
// 删除一个已存在的进度
event.remove("minecraft:story/lava_bucket");
// 修改一个已存在的进度
event.get("minecraft:story/smelt_iron")
.modifyDisplay((displayBuilder) => displayBuilder.setIcon("diamond_pickaxe"))
.addChild("child2", (childBuilder) => {
childBuilder
.display((displayBuilder) => {
displayBuilder.setTitle('A nice one!')
displayBuilder.setDescription(Text.green("Good luck"))
})
.criteria((criteriaBuilder) => criteriaBuilder.add("jump", jump5times))
});
// 通过进度来锁合成
event.lock("stone_slab", "minecraft:story/smelt_iron");
});
该模组支持热重载,只需在修改完代码后在游戏内输入“/reload”即可
效果演示添加新的进度

修改已存在的进度

以下是一个进度操作示例:// 1.18.2版请替换下一行为 onEvent("advjs", (event) => {
ServerEvents.advancement((event) => {
const { BOUNDS, PREDICATE, TRIGGER } = event;
// 定义触发器
const jump5times = TRIGGER.tick((triggerBuilder) =>
triggerBuilder.addStat(Stats.JUMP, Stats.CUSTOM, BOUNDS.min$Integer(5)));
const bred_in_nether = TRIGGER.bredAnimals((triggerBuilder) => {
// 支持json格式导入
triggerBuilder.setChild(PREDICATE.entity({
stepping_on: {
dimension: "the_nether"
}
}))
});
// 新增根进度
const root = event.create("advjs:hell")
.display((displayBuilder) => {
displayBuilder.setTitle("AdvancementJS")
displayBuilder.setDescription("Quick example")
displayBuilder.setIcon("diamond")
})
.criteria((criteriaBuilder) => criteriaBuilder.add("tick", TRIGGER.tick()));
// 为根进度添加子进度
root.addChild("child1", (childBuilder) => {
childBuilder
.display((displayBuilder) => {
displayBuilder.setTitle(Text.red("Holy"))
displayBuilder.setDescription(Text.red("Hell starts"))
})
.criteria((criteriaBuilder) => {
// 'OR' means that if you want to achieve this advancement,
// you just need one of two triggers matched below
criteriaBuilder.setStrategy(RequirementsStrategy.OR)
criteriaBuilder.add("bred", bred_in_nether)
criteriaBuilder.add("jump", jump5times)
})
.rewards((rewardsBuilder) => {
rewardsBuilder.setRecipes("minecraft:lodestone", "minecraft:brewing_stand")
rewardsBuilder.setExperience(100)
})
});
// 删除一个已存在的进度
event.remove("minecraft:story/lava_bucket");
// 修改一个已存在的进度
event.get("minecraft:story/smelt_iron")
.modifyDisplay((displayBuilder) => displayBuilder.setIcon("diamond_pickaxe"))
.addChild("child2", (childBuilder) => {
childBuilder
.display((displayBuilder) => {
displayBuilder.setTitle('A nice one!')
displayBuilder.setDescription(Text.green("Good luck"))
})
.criteria((criteriaBuilder) => criteriaBuilder.add("jump", jump5times))
});
// 通过进度来锁合成
event.lock("stone_slab", "minecraft:story/smelt_iron");
});
该模组支持热重载,只需在修改完代码后在游戏内输入“/reload”即可
效果演示添加新的进度

修改已存在的进度
