Arthas
Arthas(中文名:阿尔萨斯) 是一个 Java 诊断工具,在 Minecraft 中可以用来分析报错或追踪调用。
自行参考:官方文档 - 下载
Arthas IDEA
Section titled “Arthas IDEA”Arthas 的 idea 插件,可以帮助你生成 Arthas 命令。
自行参考 官方文档 - 快速开始
哪个插件发送了聊天信息?
Section titled “哪个插件发送了聊天信息?”watch -x 2 net.minecraft.server.network.PlayerConnection * '{params[0],@java.lang.Thread@currentThread().getStackTrace()}' 'params.length==2 && (params[0].class.name == "net.minecraft.network.protocol.game.ClientboundPlayerChatPacket" || params[0].class.name == "net.minecraft.network.protocol.game.ClientboundSystemChatPacket")'解释:
-x 2表示遍历深度,可以调整来打印具体的参数和结果内容。net.minecraft.server.network.PlayerConnection是 1.17+ 玩家连接的主类。- 单引号括起来的是OGNL 表达式,是 Arthas 的核心。
params[0]会让 Arthas 输出调用的第一个参数。@java.lang.Thread@currentThread().getStackTrace()输出调用堆栈。- 后面那一大坨是输出过滤,只关注参数长度为 2,并且发包为
net.minecraft.network.protocol.game.ClientboundSystemChatPacket或net.minecraft.network.protocol.game.ClientboundPlayerChatPacket。
查看类是哪个插件添加的
Section titled “查看类是哪个插件添加的”sc -d com.google.gson.Gson过于基础,不做解释。
日志是哪个插件打印的
Section titled “日志是哪个插件打印的”watch -x 2 org.apache.logging.log4j.core.config.LoggerConfig processLogEvent '{params[0].message.message,@java.lang.Thread@currentThread().getStackTrace()}' 'params[0].message.message.contains("日志中的一部分内容")'org.apache.logging.log4j.core.config.LoggerConfig是 Minecraft 的日志核心库。processLogEvent是日志记录事件方法。params[0].message.message,@java.lang.Thread@currentThread().getStackTrace()打印出输出的日志和调用堆栈。params[0].message.message.contains("日志中的一部分内容")检查输出消息中是否有想要的。