引言

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源代码的更多相关文章

  1. vue打包后反编译到源代码(reverse-sourcemap)

    因为突然的疫情把我困在家了,家里的电脑没有源代码,但是需求还要改,工作还得继续... 从服务器下载了之前上传的打包后的文件,找了一圈反编译方法,得救了,在此记录一下. 1.npm install -- ...

  2. 如何使用Visual Studio 2017自带的源代码反编译功能

    反编译C#源代码,大家可能第一时间想到 .NET Reflector 这个工具.但是这个工具反编译出来的代码跟实际源码还是有一定差距的,阅读起来不是很便利. 本人在查看Visual Studio 20 ...

  3. 7 款开源 Java 反编译工具

    今天我们要来分享一些关于Java的反编译工具,反编译听起来是一个非常高上大的技术词汇,通俗的说,反编译是一个对目标可执行程序进行逆向分析,从而得到原始代码的过程.尤其是像.NET.Java这样的运行在 ...

  4. 7款开源Java反编译工具

    今天我们要来分享一些关于Java的反编译工具,反编译听起来是一个非常高上大的技术词汇,通俗的说,反编译是一个对目标可执行程序进行逆向分析,从而得到原始代码的过程.尤其是像.NET.Java这样的运行在 ...

  5. Java反编译工具Jad详解

    做项目过程中需要反编译一个jar包,于是作了一些学习,记录下来. Jad(JAva Decompiler)是一个Java的反编译器,可以通过命令行把Java的class文件反编译成源代码. 如果你在使 ...

  6. Java基础学习总结(27)——7 款开源 Java 反编译工具

    今天我们要来分享一些关于Java的反编译工具,反编译听起来是一个非常高上大的技术词汇,通俗的说,反编译是一个对目标可执行程序进行逆向分析,从而得到原始代码的过程.尤其是像.NET.Java这样的运行在 ...

  7. Eclipse 安装反编译插件 Eclipse Class Decompiler

    Eclipse Class Decompiler在线安装方法 https://blog.csdn.net/tangjinquan1157/article/details/77506015 Eclips ...

  8. android 混淆 与 反编译

    1, 文件 project.properties 修改: target=android-14proguard.config=${sdk.dir}/tools/proguard/proguard-and ...

  9. JDK 的配置和反编译工具的使用---------------Java知识点

    初始Java 1995年5月,sun公司开发了一门新的编程语言------Java 詹姆斯.高斯林(Java之父),Java语言小巧安全具有可移植可跨平台性的优点. 开发java程序的步骤:编写 ,编 ...

随机推荐

  1. ES6之主要知识点(二) 变量的解构赋值。默认值

    引自http://es6.ruanyifeng.com/#docs/destructuring 数组解构赋值 默认值 对象解构赋值 用途 1.数组的解构赋值 let [a, b, c] = [1, 2 ...

  2. HBase与传统关系数据库的对比分析

  3. mongoDB可视化工具RoBo 3T的安装和使用

    第一步下载RoBo3T https://robomongo.org/download 第二步安装 双击安装包安装,修改安装路径,不停下一步,点击安装. 一路next,最后到了这个页面直接点击finis ...

  4. 中国 SaaS 企业如何突围?这几点是关键!

    进入2019年,关于SaaS的各种言论甚嚣尘上,有人看好:“SaaS市场得大客户者得天下”,也有人唱衰:“SaaS已死,下一个”.在众说纷纭中,中国SaaS企业的成功之路迷雾重重,前期走的较早的头部S ...

  5. Windows 下 MQTT 服务器搭建之Apollo

    https://blog.csdn.net/wangh0802/article/details/84861226#%EF%BC%881%EF%BC%89%E4%B8%8B%E8%BD%BD%20Apo ...

  6. LUOGU P2962 [USACO09NOV]灯Lights

    题目描述 Bessie and the cows were playing games in the barn, but the power was reset and the lights were ...

  7. sql调优的总结

    sql调优的总结 列类型尽量定义成数值类型,且长度尽可能短,如主键和外键,类型字段等等 建立单列索引 根据需要建立多列联合索引 当单个列过滤之后还有很多数据,那么索引的效率将会比较低,即列的区分度较低 ...

  8. Maven实战07_依赖

    1:依赖声明 <project> ... <dependencies> <dependency> <groupId>...</groupId> ...

  9. jdk 数组位移运算

    1.采用先shift=31-Integer.numberOfLeadingZeros(scale);取int前面的补零个数31再减去拿到占得内存位长度 2.i偏移shift(其实等于I*位数) 加上b ...

  10. JAVA面试常见问题之常见集合篇

    1.List 和 Set 区别 List 可以允许重复的对象. 可以插入多个null元素. 有序容器 Set 不允许重复的对象. 只能插入1个null元素 无序容器,可以使用TreeSet实现有序 2 ...