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("日志中的一部分内容")检查输出消息中是否有想要的