java我的世界反编译_基于mcp940反编译Minecraft源代码引⾔
Minecraft中⽂叫“我的世界”,没怎么深⼊玩过,来试试把它源代码反编译出来吧。
我⽤的是最新的mcp940,对应版本是1.12。
遇到问题及解决
因为我的是Mac系统,遇到⼀些坑,下⾯简要说明⼀下。python转java代码
客户端下载
因为官⽅客户端需要mojang账号才能登陆,⽽mojang账号注册点击没反应,因此怎么也进⾏不下去。
感谢楼主。
下载下来,解压到~/.minecraft⽬录
服务端下载
运⾏⼀次:java -jar minecraft_server.1.12.jar
python命令
mcp的runtime⽬录的python脚本中,都指定由python2运⾏,现改为python。
text2speech库没有osx版本
此问题导致反编译时检查脚本出错。
解决办法:修改1.12.json,借⽤linux的,把“linux”改为“osx”,如下:
{"extract":{"exclude":["META-INF/"]},"name":"jang:text2speech:1.10.3","natives":{"osx":"natives-linux","windows":"natives-windows"}
提⽰不到库
如果反编译时提⽰类似“Copying Error copying library java-objc-bridge"的错误,那么就打开1.12.json⽂件,到相关的库的下载链接,⾃⾏下载放到相应⽬录中即可。
结论
⾄此,可以成功反编译了。后续就可以尝试eclipse打开,研究分析源代码了。
后续:Eclipse打开项⽬
Eclipse中,把workspace指定到⽬录mcp940/eclipse⽬录下,启动Eclipse后⾃动就打开Client和Server项⽬了。
Server能正常运⾏,没问题。
客户端错误
Java Build Path中重新加⼊jar包,修正红叉错误。
因为⽤到了与text2speech相关的osx特性的代码需要注释掉,否则客户端会提⽰类没到,没办法运⾏,例如:
GuiIngame.java中GuiIngame函数中NarratorChatListener相关的注释掉:
// IChatListener ichatlistener = NarratorChatListener.field_193643_a;
(this.field_(ChatType.CHAT)).add(new NormalChatListener(mcIn));
// (this.field_(ChatType.CHAT)).add(ichatlistener);
(this.field_(ChatType.SYSTEM)).add(new NormalChatListener(mcIn));
// (this.field_(ChatType.SYSTEM)).add(ichatlistener);
(this.field_(ChatType.GAME_INFO)).add(new OverlayChatListener(mcIn)); this.setDefaultTitlesTimes();
Minecraft.java中loadWorld函数的NarratorChatListener相关代码注释掉:
// NarratorChatListener.field_193643_a.func_193642_b();
好了,Eclipse可以正常运⾏Client了~