跳转至

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 玩家失去某个游戏阶段时触发 ❌