importcrafttweaker.api.events.CTEventManager;// 事件管理器importcrafttweaker.api.event.item.MCItemTossEvent;// 丢弃物品事件importcrafttweaker.api.util.text.MCTextComponent;// 给玩家发消息需要的类,你在修改 tooltip 的时候应该见到过了CTEventManager.register<MCItemTossEvent>(event =>{// 我们监听丢弃物品事件 val item =event.entityItem.item; val player =event.player;player.sendMessage(MCTextComponent.createStringTextComponent("You tossed "+item.commandString+" !"));});
服务端与客户端
如果你加载了上面的脚本,你会发现消息发了两次。这是由于 MC 是一个双端游戏:客户端和服务端。但很多游戏逻辑是双端耦合的。所以这个事件会在双端各触发一次,消息自然也发了两遍。然而只有服务端用来处理游戏主逻辑,存档也是保存在服务端的,而客户端只是用来进行渲染,键鼠输入的。我们使用 CraftTweaker 是为了干预原版游戏逻辑,管不着客户端的行为。所以我们的事件处理大多需要跳过客户端,即如果是客户端,则什么事都不干。