Minecraft 1.12.2 Forge模组开发:如何获取玩家发送的聊天消息内容
1.12.2 Forge 通过 ServerChatEvent 获取玩家聊天内容方法
核心获取方法
在ServerChatEvent的监听方法中,直接调用事件实例的getMessage()方法即可获取玩家发送的原始聊天内容,返回值为纯字符串格式,不含聊天消息的装饰性内容(比如玩家名称、前缀后缀等)。
完整代码示例
首先确保你的事件监听类已经注册到服务端事件总线,示例代码如下:
import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; import net.minecraftforge.event.ServerChatEvent; public class ChatListener { @SubscribeEvent public void onPlayerChat(ServerChatEvent event) { // 核心代码:获取玩家发送的原始消息 String playerChatContent = event.getMessage(); // 示例逻辑:检测到玩家发送对应关键词时执行自定义逻辑 if (playerChatContent.equals("hello")) { System.out.println("玩家" + event.getPlayer().getName() + "发送了hello消息"); } // 可选操作:修改玩家发送的消息 // event.setMessage("修改后的消息内容"); // 可选操作:取消本次聊天消息的全服广播 // event.setCanceled(true); } }
注意事项
- 调用
getMessage()拿到的是玩家在聊天框输入的原始未加工内容,没有经过任何服务端的格式化处理 ServerChatEvent是服务端专属事件,不要将监听注册到客户端事件总线,否则无法触发- 如果你需要获取最终广播的带格式聊天组件,可以调用
event.getComponent()方法获取IChatComponent实例
内容的提问来源于stack exchange,提问作者1231231
相关产品推荐
相关产品推荐

