📄
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 提供支持
在本页

这有帮助吗?

在GitHub上编辑
  1. 四、事件初步

8 聊天事件

上一页10:自定义窗口标题和logo下一页9 计划重启

最后更新于1年前

这有帮助吗?


Warning: This page may be outdated. Please verify the details with the latest updates or documentation.

一个基础的例子:当有人在发送‘kubejs教程’时回复'请访问

onEvent('player.chat', function (event) {
     // 检测如果聊天内容为“kubejs教程” 执行命令, 忽略大小写
  if (event.message.trim().equalsIgnoreCase('kubejs教程')) {
     // 将事件推迟1刻,否则服务器信息将会显示在玩家信息之前
    event.server.scheduleInTicks(1, event.server, function (callback) {
      // 对每个人说以下内容,颜色为绿色。聊天信息为[Server]
      callback.data.tell(text.green('请访问h t  tp s://www.mcbbs.net/thread-1207772-1-1.html'[/url]))
      // 下面的这种表述方法设置了聊天信息
      callback.data.tell([Text.red('[Test]'),text.green('请访问h t  tp s://www.mcbbs.net/thread-1207772-1-1.html')])
    })
  }
})

另一个例子:监测到聊天信息时执行对应指令

onEvent('player.chat', function (event) {
  if (event.message.startsWith('test')) {
    event.server.runCommandSilent('kick '+event.player.name+' test ')
    event.server.runCommandSilent(`say 已踢出玩家${event.player.name}`)
    event.cancel()//取消该事件,也就是说玩家的聊天信息不会显示
  }
})

利用取消的这一特性,你甚至还可以做到"伪造"聊天

下面这个例子在检测到发送消息的玩家带有 rankexample 时在其聊天信息前加上rank标识

onEvent('player.chat',function (event){
	let input = event.message.trim();//获取聊天信息
	if(event.player.stages.has("rankexample")){
        event.server.tell([Text.blue('[MVP--]').bold(), `<${event.player.name}> ${input}`]);
        event.cancel();
    }
})

注:更多关于gamestage的操作详见11-4章节,关于玩家、世界的操作详见第15章

https://www.mcbbs.net/thread-1207772-1-1.html'