引言

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. selenium 三种断言以及异常类型

    selenium 提供了三种模式的断言:assert .verify.waitfor Assert 失败时,该测试将终止. Verify 失败时,该测试将继续执行,并将错误记入日显示屏 .也就是说允许 ...

  2. [转]C# 中的委托和事件 + 观察者模式

    引言 委托 和 事件在 .Net Framework中的应用非常广泛,然而,较好地理解委托和事件对很多接触C#时间不长的人来说并不容易.它们就像是一道槛儿,过了这个槛的人,觉得真是太容易了,而没有过去 ...

  3. Ionic JPush极光推送二

    1.看图解决问题   2.解决出现统计代码提示问题 修改这个java 文件 导入命名空间 import cn.jpush.android.api.JPushInterface; 添加方法 @Overr ...

  4. MICROSOFT SQL SERVER 2012 序列号

    MICROSOFT SQL SERVER DEVELOPER 版(开发版) 序列号:YQWTX-G8T4R-QW4XX-BVH62-GP68Y MICROSOFT SQL SERVER ENTERPR ...

  5. [转]模块化——Common规范及Node模块实现

    Node在实现中并非完全按照CommonJS规范实现,而是对模块规范进行了一定的取舍,同时也增加了少许自身需要的特性.本文将详细介绍NodeJS的模块实现 引入 nodejs是区别于javascrip ...

  6. PAT甲级——A1041 Be Unique

    Being unique is so important to people on Mars that even their lottery is designed in a unique way. ...

  7. JavaScript对象继承方式

    一.对象冒充 其原理如下:构造函数使用 this 关键字给所有属性和方法赋值(即采用类声明的构造函数方式).因为构造函数只是一个函数,所以可使 Parent 构造函数 成为 Children 的方法, ...

  8. log4j 配置文件参数说明

    log4j 框架配置文件常用参数说明 %d 时间(-- ::,) %-5p 日志级别(INFO/DEBUG) %10c 包名(com.xxx.xxx.business.logging) %M 执行的方 ...

  9. Redis源码解析:11RDB持久化

    Redis的RDB持久化的相关功能主要是在src/rdb.c中实现的.RDB文件是具有一定编码格式的数据文件,因此src/rdb.c中大部分代码都是处理数据格式的问题. 一:RDB文件格式 上图就是一 ...

  10. 用Python的requests库作接口测试——上传文件

    POST一个多部分编码(Multipart-Encoded)的文件 Requests使得上传多部分编码文件变得很简单: >>> url = 'http://httpbin.org/p ...