Forge 1.12模组服务器用Python捕获未知命令实现自定义功能咨询
Minecraft Forge 1.12 自定义Python命令可行方案
方案1:注册自定义命令到服务端体系(推荐,无未知命令提示)
- 优先选择轻量Mod+Python后端的组合实现:你只需要写一个不足百行的Forge 1.12辅助Mod,核心逻辑只有两点:
- 服务端启动阶段调用
ICommandManager.registerCommand()方法注册你需要的自定义命令(例如/echo) - 命令触发时,将命令发送者UUID、完整参数内容通过本地HTTP请求/套接字发送到本地运行的Python服务,待Python返回结果后,调用
ICommandSender.sendMessage()方法将结果输出到聊天框
- 服务端启动阶段调用
- 如果不想编写Java Mod,也可以使用已有的脚本类Forge Mod(如CraftTweaker、GroovyScript)预置的命令注册接口,直接在脚本中写转发逻辑调用Python后端,无需编译Mod
- 该方案不会触发未知命令提示,命令日志默认会输出到控制台,可直接读取捕获,稳定性最高
方案2:开启未知命令的控制台日志打印
- 找到服务端根目录下的
log4j2.xml日志配置文件,在Loggers段内新增如下配置,精准开启命令处理类的DEBUG日志:<Logger name="net.minecraft.command.CommandHandler" level="DEBUG" additivity="false"> <AppenderRef ref="FmlFile"/> <AppenderRef ref="SysOut"/> </Logger> - 修改后重启服务端,所有玩家执行的未知命令都会打印在控制台和
latest.log中,日志包含执行玩家ID、完整命令内容,可直接用Python实时读取捕获 - 额外优化:如果需要屏蔽玩家收到的
Unknown command提示,可以在捕获到目标命令后,立刻通过RCON向执行玩家发送返回内容,同时可借助辅助Mod修改未知命令的提示逻辑隐藏报错 - 注意:该方案会额外输出所有命令的调试日志,日志量会有所上升,建议同时调整日志滚动策略避免日志文件过大
配套工具说明
- Python端实时读取日志可以用
pygtail库,自动记录文件偏移量,避免重复读取历史内容 - 服务端操作可以使用
mcrcon库连接服务端RCON端口(需提前在server.properties中开启enable-rcon=true并配置密码),直接执行/tell、/give等内置命令
内容的提问来源于stack exchange,提问作者SpaceBroetchen
相关产品推荐
相关产品推荐

