基于mcp940反编译Minecraft源代码
引言
Minecraft中文叫“我的世界”,没怎么深入玩过,来试试把它源代码反编译出来吧。
参考教程:
https://minecraft.gamepedia.com/Mods/Creating_mods/Setting_up_the_MCP_workspace
我用的是最新的mcp940,对应版本是1.12。
遇到问题及解决
因为我的是Mac系统,遇到一些坑,下面简要说明一下。
客户端下载
因为官方客户端需要mojang账号才能登陆,而mojang账号注册点击没反应,因此怎么也进行不下去。
解决办法:网上找!还好,被我在百度贴吧找到了:https://tieba.baidu.com/p/5235025666
感谢楼主。
下载下来,解压到~/.minecraft目录
服务端下载
最新服务端在:https://minecraft.net/en-us/download/server
版本是1.12.1,而我们要找的是1.12,链接是猜出来的:https://s3.amazonaws.com/Minecraft.Download/versions/1.12/minecraft_server.1.12.jar
放入mcp目录的jars目录中。
运行一次: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":"com.mojang:text2speech:1.10.3","natives":{"osx":"natives-linux","windows":"natives-windows"}
提示找不到库
如果反编译时提示类似“Copying library java-objc-bridge... 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_191743_I.get(ChatType.CHAT)).add(new NormalChatListener(mcIn));
// (this.field_191743_I.get(ChatType.CHAT)).add(ichatlistener);
(this.field_191743_I.get(ChatType.SYSTEM)).add(new NormalChatListener(mcIn));
// (this.field_191743_I.get(ChatType.SYSTEM)).add(ichatlistener);
(this.field_191743_I.get(ChatType.GAME_INFO)).add(new OverlayChatListener(mcIn));
this.setDefaultTitlesTimes();
Minecraft.java中loadWorld函数的NarratorChatListener相关代码注释掉:
// NarratorChatListener.field_193643_a.func_193642_b();
好了,Eclipse可以正常运行Client了~
基于mcp940反编译Minecraft源代码的更多相关文章
- vue打包后反编译到源代码(reverse-sourcemap)
因为突然的疫情把我困在家了,家里的电脑没有源代码,但是需求还要改,工作还得继续... 从服务器下载了之前上传的打包后的文件,找了一圈反编译方法,得救了,在此记录一下. 1.npm install -- ...
- 如何使用Visual Studio 2017自带的源代码反编译功能
反编译C#源代码,大家可能第一时间想到 .NET Reflector 这个工具.但是这个工具反编译出来的代码跟实际源码还是有一定差距的,阅读起来不是很便利. 本人在查看Visual Studio 20 ...
- 7 款开源 Java 反编译工具
今天我们要来分享一些关于Java的反编译工具,反编译听起来是一个非常高上大的技术词汇,通俗的说,反编译是一个对目标可执行程序进行逆向分析,从而得到原始代码的过程.尤其是像.NET.Java这样的运行在 ...
- 7款开源Java反编译工具
今天我们要来分享一些关于Java的反编译工具,反编译听起来是一个非常高上大的技术词汇,通俗的说,反编译是一个对目标可执行程序进行逆向分析,从而得到原始代码的过程.尤其是像.NET.Java这样的运行在 ...
- Java反编译工具Jad详解
做项目过程中需要反编译一个jar包,于是作了一些学习,记录下来. Jad(JAva Decompiler)是一个Java的反编译器,可以通过命令行把Java的class文件反编译成源代码. 如果你在使 ...
- Java基础学习总结(27)——7 款开源 Java 反编译工具
今天我们要来分享一些关于Java的反编译工具,反编译听起来是一个非常高上大的技术词汇,通俗的说,反编译是一个对目标可执行程序进行逆向分析,从而得到原始代码的过程.尤其是像.NET.Java这样的运行在 ...
- Eclipse 安装反编译插件 Eclipse Class Decompiler
Eclipse Class Decompiler在线安装方法 https://blog.csdn.net/tangjinquan1157/article/details/77506015 Eclips ...
- android 混淆 与 反编译
1, 文件 project.properties 修改: target=android-14proguard.config=${sdk.dir}/tools/proguard/proguard-and ...
- JDK 的配置和反编译工具的使用---------------Java知识点
初始Java 1995年5月,sun公司开发了一门新的编程语言------Java 詹姆斯.高斯林(Java之父),Java语言小巧安全具有可移植可跨平台性的优点. 开发java程序的步骤:编写 ,编 ...
随机推荐
- 11-7-this的最基本认识
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- ES6之主要知识点(六)数组
引自http://es6.ruanyifeng.com/#docs/array 1.扩展运算符(...) 扩展运算符(spread)是三个点(...).它好比 rest 参数的逆运算,将一个数组转为用 ...
- sql语句怎么看效率?
1.数据库设计当面: 对查询进行优化,应该尽量避免全表扫描,首先应考虑在where及order by设计的列上加索引. d.索引并不是越多越好,索引可以提高查询效率,同时降低了insert和updat ...
- css的书写位置+元素分类
1.css的书写位置 1>行内样式: <span style="color:red;">haha</span> 2>内部样式 在style标签中 ...
- Collection接口和Map接口
- JS两个相同的字符串被判断为不相等问题
今天在写js的时候,遇到一个奇怪的问题,明明两个字符串相等,用alert()打印出来都一样,typeof的结果都是string, 仔细查看过了首尾都没有空格. 可是用a==b却判断为不相等 后来在网上 ...
- 19-10-18-Y
ZJ一下: 感觉能拿到的分都拿到了,至于后来改题就缶了 其实是:太tui导致没改好 TJ: T1: 正解是$\mathsf{KMP}$,但是广大群众都用了$\mathsf{hash}$…… 发现了一个 ...
- 深入浅出 Java Concurrency (2): 原子操作 part 1[转]
从相对简单的Atomic入手(java.util.concurrent是基于Queue的并发包,而Queue,很多情况下使用到了Atomic操作,因此首先从这里开始).很多情况下我们只是需要一个简单的 ...
- Delphi 设计模式:《HeadFirst设计模式》Delphi代码---模式小结之一个叫声接口和几只鸭子[转]
一.一个叫声接口和几只鸭子 从一个叫声接口开始. {<HeadFirst设计模式>Delphi代码之模式小结 } { 一个叫声接口 } ...
- MyBatis-Spring(五)--MapperScannerConfigurer实现增删改查
上一篇文章中已经介绍,MapperScannerConfigurer可以通过扫描的方式获取我们需要的mapper,而不需要我们自己去配置,它的基本配置如下: <bean class=" ...