跳转至

List of Events

原文:List of Events

这里是 KubeJS 的所有事件列表,按触发时机分为三大类

  • 🚀 启动时(Startup):脚本放 /kubejs/startup_scripts/,游戏启动时执行一次,客户端和服务端都会运行。用于注册/修改内容(自定义方块、物品、流体等)。
  • 🖥️ 客户端(Client):脚本放 /kubejs/client_scripts/,按 F3+T 重载。用于针对单个客户端的修改(渲染、提示文本、GUI 等)。
  • 🌐 服务端(Server):脚本放 /kubejs/server_scripts/,按 /reload 重载。用于游戏运行期间对世界的修改(配方、方块、实体、玩家等)。

可取消 = 事件回调返回 event.cancel() 可以阻止该行为发生。


🚀 启动时事件(Startup)

事件 作用 可取消
StartupEvents.init 游戏启动初始化时触发,适合注册事件监听、预加载内容
StartupEvents.postInit 所有启动注册完成后触发,适合对已注册内容做关联调整
StartupEvents.registry(fluid) 注册自定义流体
StartupEvents.registry(block) 注册自定义方块
StartupEvents.registry(item) 注册自定义物品
StartupEvents.registry(enchantment) 注册自定义附魔
StartupEvents.registry(mob_effect) 注册自定义状态效果(药水效果)
StartupEvents.registry(sound_event) 注册自定义音效
StartupEvents.registry(block_entity_type) 注册自定义方块实体类型
StartupEvents.registry(potion) 注册自定义药水
StartupEvents.registry(particle_type) 注册自定义粒子类型
StartupEvents.registry(painting_variant) 注册自定义画作变体
StartupEvents.registry(custom_stat) 注册自定义统计项(统计信息)
StartupEvents.registry(point_of_interest_type) 注册兴趣点类型(村民工作站绑定)
StartupEvents.registry(villager_type) 注册村民类型
StartupEvents.registry(villager_profession) 注册村民职业
WorldgenEvents.add 向世界生成添加地物(如矿石、树木、建筑)
WorldgenEvents.remove 从世界生成移除地物
ItemEvents.modification 修改已有物品的属性(堆叠上限、耐久、属性等)
ItemEvents.toolTierRegistry 注册自定义工具等级(挖掘速度/伤害/耐久)
ItemEvents.armorTierRegistry 注册自定义盔甲等级
ItemEvents.modelProperties 注册物品模型属性(决定物品显示哪个模型/变体)
BlockEvents.modification 修改已有方块的属性(硬度、爆炸抗性、音效、行为等)

🖥️ 客户端事件(Client)

事件 作用 可取消
ClientEvents.highPriorityAssets 以最高优先级加载资源(覆盖贴图/模型,常用于自定义资源包)
ClientEvents.init 客户端初始化完成时触发一次
ClientEvents.loggedIn 玩家进入(登录)客户端世界时触发
ClientEvents.loggedOut 玩家退出客户端世界时触发
ClientEvents.tick 客户端每 tick(每帧)触发,用于持续更新
ClientEvents.painterUpdated Painter 绘制工具内容更新时触发
ClientEvents.leftDebugInfo 往 F3 调试界面左侧添加文本
ClientEvents.rightDebugInfo 往 F3 调试界面右侧添加文本
ClientEvents.paintScreen 屏幕渲染时触发,用于自定义 GUI/覆盖层绘制
ItemEvents.tooltip 修改物品的提示文本(tooltip)
ItemEvents.clientRightClicked 客户端侧右键点击物品(本地即时反应,不经过服务器)
ItemEvents.clientLeftClicked 客户端侧左键点击物品
NetworkEvents.fromServer 客户端收到服务端数据包时触发

🌐 服务端事件(Server)

服务器/世界生命周期

事件 作用 可取消
ServerEvents.lowPriorityData 低优先级数据包加载时触发(数据包加载早期)
ServerEvents.highPriorityData 高优先级数据包加载时触发(数据包加载后期)
ServerEvents.loaded 服务端加载完成时触发(适合初始化服务端数据)
ServerEvents.unloaded 服务端卸载时触发(适合清理数据)
ServerEvents.tick 服务端每 tick 触发,适合全局定时逻辑
LevelEvents.loaded 某个维度(世界)加载时触发
LevelEvents.unloaded 某个维度(世界)卸载时触发
LevelEvents.tick 每个维度每 tick 触发
LevelEvents.beforeExplosion 爆炸发生触发,可取消爆炸
LevelEvents.afterExplosion 爆炸发生触发

配方与数据

事件 作用 可取消
ServerEvents.recipes 添加/移除/修改配方(最常用的配方事件)
ServerEvents.afterRecipes 所有配方处理完成后触发,适合最后兜底修改
ServerEvents.specialRecipeSerializers 注册特殊配方序列化器
ServerEvents.compostableRecipes 修改堆肥配方(什么能进堆肥桶、产多少)
ServerEvents.recipeTypeRegistry 注册自定义配方类型
ServerEvents.tags 增删物品/方块/流体等标签(tag)
ServerEvents.genericLootTables 修改通用战利品表
ServerEvents.blockLootTables 修改方块战利品表(挖掘掉落)
ServerEvents.entityLootTables 修改实体战利品表(击杀掉落)
ServerEvents.giftLootTables 修改村民赠礼战利品表
ServerEvents.fishingLootTables 修改钓鱼战利品表
ServerEvents.chestLootTables 修改箱子战利品表(生成战利品)

命令与网络

事件 作用 可取消
ServerEvents.commandRegistry 注册自定义命令
ServerEvents.command 玩家执行命令时触发,可拦截/修改
ServerEvents.customCommand 执行自定义命令时触发
NetworkEvents.fromClient 服务端收到客户端数据包时触发

物品

事件 作用 可取消
ItemEvents.rightClicked 玩家右键使用物品时触发(如吃东西、扔鸡蛋)
ItemEvents.firstRightClicked 按住右键开始时触发(持续使用的起点)
ItemEvents.firstLeftClicked 按住左键开始时触发
ItemEvents.canPickUp 判断物品能否被拾取时触发
ItemEvents.pickedUp 物品被拾取时触发
ItemEvents.dropped 物品被丢弃时触发
ItemEvents.entityInteracted 用物品与实体交互时触发(如喂动物、给村民东西)
ItemEvents.crafted 物品被合成出来时触发
ItemEvents.smelted 物品被烧炼出来时触发
ItemEvents.foodEaten 食物被食用时触发

方块

事件 作用 可取消
BlockEvents.rightClicked 玩家右键点击方块时触发(如右键箱子、按钮)
BlockEvents.leftClicked 玩家左键点击方块时触发(开始挖掘)
BlockEvents.placed 方块被放置时触发
BlockEvents.broken 方块被破坏时触发
BlockEvents.detectorChanged KubeJS 方块检测器状态改变时触发
BlockEvents.detectorPowered 方块检测器被激活(充能)时触发
BlockEvents.detectorUnpowered 方块检测器取消激活时触发
BlockEvents.farmlandTrampled 耕地被踩踏时触发

实体

事件 作用 可取消
EntityEvents.death 实体死亡时触发
EntityEvents.hurt 实体受伤时触发,可取消伤害
EntityEvents.checkSpawn 检查实体是否允许生成时触发
EntityEvents.spawned 实体生成时触发

玩家

事件 作用 可取消
PlayerEvents.loggedIn 玩家登录服务器时触发
PlayerEvents.loggedOut 玩家登出服务器时触发
PlayerEvents.respawned 玩家重生时触发
PlayerEvents.tick 每个玩家每 tick 触发
PlayerEvents.chat 玩家发送聊天消息时触发,可拦截
PlayerEvents.decorateChat 修饰聊天消息(加前缀/颜色/样式)时触发
PlayerEvents.advancement 玩家获得进度时触发
PlayerEvents.inventoryOpened 玩家打开物品栏/容器时触发
PlayerEvents.inventoryClosed 玩家关闭物品栏/容器时触发
PlayerEvents.inventoryChanged 物品栏内容发生变化时触发
PlayerEvents.chestOpened 玩家打开箱子时触发
PlayerEvents.chestClosed 玩家关闭箱子时触发

模组兼容事件

提示 这些事件在存在对应模组(JEI / REI / GameStages)时才会启用。

Just Enough Items (JEI) —— 客户端

事件 作用 可取消
JEIEvents.subtypes 注册物品子类型(按 NBT 区分不同变体)
JEIEvents.hideItems 从 JEI 隐藏物品
JEIEvents.hideFluids 从 JEI 隐藏流体
JEIEvents.hideCustom 隐藏自定义内容
JEIEvents.removeCategories 移除 JEI 的物品分类(标签页)
JEIEvents.removeRecipes 从 JEI 移除配方显示
JEIEvents.addItems 向 JEI 添加物品显示
JEIEvents.addFluids 向 JEI 添加流体显示
JEIEvents.information 为物品添加信息说明(JEI 里的额外文字)

Roughly Enough Items (REI) —— 客户端

事件 作用 可取消
REIEvents.hide 从 REI 隐藏物品/流体
REIEvents.add 向 REI 添加物品/流体显示
REIEvents.information 为物品添加信息说明
REIEvents.removeCategories 移除 REI 的物品分类
REIEvents.groupEntries 对物品条目分组显示

GameStages —— 服务端

事件 作用 可取消
GameStageEvents.stageAdded 玩家获得某个游戏阶段(GameStage)时触发
GameStageEvents.stageRemoved 玩家失去某个游戏阶段时触发