引言

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. ListCtrl使用指南

    http://blog.csdn.net/bqw2008/article/details/2047489 Windows ListCtrl使用技巧1. ListCtrl 风格       LVS_IC ...

  2. 2018-12-21-WPF-弹出-popup-里面的-TextBox-无法输入汉字

    title author date CreateTime categories WPF 弹出 popup 里面的 TextBox 无法输入汉字 lindexi 2018-12-21 18:10:30 ...

  3. windows API 第 11 篇 GetCurrentDirectory SetCurrentDirectory

    GetCurrentDirectory函数获得当前文件所在的目录,并不是进程的目录(debug 和 release),它和GetCommandLine不同这里只讲 GetCurrentDirector ...

  4. /etc/sysctl.conf配置文件

    # vi /etc/sysctl.conf # add by digoal.zhou fs.aio-max-nr = fs. kernel.core_pattern= /data01/corefile ...

  5. 一条sql获取每个类别最新的一条记录

    1.初始化数据 create table Products ( id ,), name ), categroy int, addtime datetime , ) insert into Produc ...

  6. PhpStorm中terminal窗口字体修改

    在PhpStorm–File–Settings–Tools–Terminal中可以看到terminal调用的系统的cmd.exe程序 因此需要做的就是修改系统的cmd.exe中的字体,如下: CMD命 ...

  7. Spring AOP(二)--注解方式

    本文介绍通过注解@AspectJ实现Spring AOP,这里要重点说明一下这种方式实现时所需的包,因为Aspect是第三方提供的,不包含在spring中,所以不能只导入spring-aop的包,为了 ...

  8. 013- unittest单元测试框架

    unittest单元测试框架 重要的概念 1. TestCase TestCase 是最小的测试单元,用于检查特定输入集合的特定返回值.unittest提供了TestCase基类,我们创建的测试类需要 ...

  9. Phone List HDU1671 字典树Trie

    模板题...不过会爆内存,要小心 #include <iostream> #include <cstdio> #include <string.h> #pragma ...

  10. layui -page 分页类

    <?phpnamespace page; // +---------------------------------------------------------------------- / ...