📄
XPlus KubeJS Tutorial v1 (zh_cn)
  • 前言
    • 本文更新日志
  • 一、一切的开始
    • 1.1 常用指令
    • 1.2 文件结构
    • 1.3 脚本基础
    • 1.4 事件列表
  • 二、配方
    • 2.1 新建配方及物品表示
    • 2.2 配方的修改和删除
    • 2.3 非标准配方修改
  • 三、自定义修改初步
    • 3 标签
    • 4 自定义Loot Table
    • 5 自定义流体
    • 6 自定义世界生成
    • 7 添加方块
    • 10:自定义窗口标题和logo
  • 四、事件初步
    • 8 聊天事件
    • 9 计划重启
  • 五、针对其他模组的修改
    • 11.1 JEI信息修改
    • 11.2 REI信息修改
    • 11.3 FTB Quest相关修改
    • 11.4 KubeJs内置游戏阶段 (类似于GameStage)
  • 六、拓展模组简介
    • 12.1 KubeJS Create
    • 12.2 KubeJS Blood Magic
    • 12.3 KubeJS Mekanism
    • 12.4 KubeJS UI
    • 12.5 KubeJS Termal
    • 12.7 便捷战利品表修改(LootJS Forge)
    • 12.8 LootJS战利品表修改实例
  • 七、游戏内容修改进阶
    • 13 自定义物品和物品ToolTip
    • 14 方块和物品属性修改
  • 八、事件进阶
    • 15.0 事件列表
    • 15.1 玩家&实体事件,信息获取及操作
    • 15.2 实体生成 & RayTraceResultJS & ItemStackJS及其他
    • 15.3 方块信息获取及操作
    • 15.4 WorldJS 和 ServerJS
    • 15.5 本章例子
    • 15.6 测试用例
  • 九、杂项
    • 16 网络包和Painter API
    • 17 本地化相关
    • 18.1 熔炼之镐
    • 18.2 罐头示例(包含物品注册, 配方添加, 玩家交互和persistentData的使用)
    • 19 Forge事件监听
  • 十、1.18.2的变化和介绍
    • 20 1.18.2中的变化和功能
    • 20.1 ProbeJS
    • 20.2 组件(Component)的使用
    • 20.3 格式变化
      • 20.3.1 世界生成
      • 20.3.2 方块 / 物品注册
      • 20.3.3 事件
      • 20.3.4 global[] 的使用
    • 20.4 命令注册
    • 20.5 反射与Java access
由 GitBook 提供支持
在本页
  • 1、于其他事件中直接修改进度
  • 2、自定义奖励
  • 3、自定义任务
  • 4、监听任务完成事件

这有帮助吗?

在GitHub上编辑
  1. 五、针对其他模组的修改

11.3 FTB Quest相关修改

上一页11.2 REI信息修改下一页11.4 KubeJs内置游戏阶段 (类似于GameStage)

这有帮助吗?


FTB Quest任务模组内置对KubeJS的支持,你可以通过KubeJS便捷地修改FTB Quest任务的进度/自定义任务等

FTB Quest自身提供了 ftbquests.completed.[任务ID] (任务完成事件), ftbquests.custom_reward.<奖励ID> (自定义任务奖励)和 ftbquests.custom_task.<任务ID> 三个事件可供监听,你也可以在其他事件中对玩家游戏进度进行修改。

本节将通过任务示例“村民挚友”来讲解如何通过KubeJS修改FTB Quest相关内容**(推荐先阅读第15章内容)**

1、于其他事件中直接修改进度

例子1:当玩家攻击村民时重置其任务进度

ID为onEvent('entity.attack', event => {
	if(event.source && event.source.actual && event.source.actual.player && event.entity.type == 'minecraft:villager'){// 检测玩家攻击村民,防止为空报错
        event.source.actual.tell("你攻击了村民,村民挚友任务失败!");
        event.source.actual.data.ftbquests.changeProgress("4425171B4650EB54", event => {
            event.reset = true;// 重设ID为4425171B4650EB54的任务的进度
        })
    }
})
// 另一种写法
onEvent('entity.attack', event => {
	if(event.source.actual.player!=null && event.entity.type == 'minecraft:villager'){
        event.source.actual.tell("你攻击了村民,村民挚友任务失败!");
        event.source.actual.data.ftbquests.reset("4425171B4650EB54的");// 重设ID为4425171B4650EB54的任务的进度
    }
})

例子2:玩家攻击掠夺兽时添加进度

onEvent('entity.death', event => {
    	if(event.source && event.source.actual && event.source.actual.player && event.entity.type == 'minecraft:ravager'){
            event.source.actual.tell("你击杀了劫掠受,等价于击杀三个唤魔者!");
            event.source.actual.data.ftbquests.addProgress("6B2089D4683E7907", 3);// 为ID为6B2089D4683E7907的任务添加进度值3
        }
})

2、自定义奖励

例子:玩家完成村民挚友任务时给予村庄英雄效果

onEvent('ftbquests.custom_reward.4883F7BD04E2C597', event => {// 设置ID为4883F7BD04E2C597的自定义奖励
    // 给予玩家药水效果奖励(村庄英雄)
    event.player.potionEffects.add('minecraft:hero_of_the_village', 120000, 5, false, false);
})

3、自定义任务

例子:检测玩家是否完成进度minecraft:adventure/trade

onEvent('ftbquests.custom_task.76AA10188A48B51F', event => {// 设置ID为76AA10188A48B51F的自定义任务
    event.checkTimer = 1;// 定义多久检测一次
    event.maxProgress = 1;// 定义最大进度
    event.check = (task, player) => {
        if (player.isAdvancementDone("minecraft:adventure/trade")) {// 检测进度是否完成
            player.tell("done");
            task.progress++;// 添加进度
        }
    }
})

4、监听任务完成事件

onEvent('ftbquests.completed.4425171B4650EB54', event => {// 检测ID为4425171B4650EB54的任务是否完成
    console.log("村民挚友任务已被完成");
})

注:你可以通过右击任务图标并点击复制ID来获取指定任务/奖励的ID

附本节用到的FTB Quest配置文件:https://wwu.lanzouw.com/iTone04k5arc