> For the complete documentation index, see [llms.txt](https://wangtingzheng.gitbook.io/minecraft-source-code-wiki/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://wangtingzheng.gitbook.io/minecraft-source-code-wiki/ke-qian-yu-xi/huan-jing-zhun-bei/bian-yi-zi-ji-de-yuan-ma.md).

# 编译自己的源码

获得你自己的Minecraft源代码

## 下载源代码以及配套程序

{% file src="/files/-MDZpr2xRxgj7FON-6NB" %}

{% file src="/files/-MDZqyVcs3w-2RTmxjvj" %}

{% file src="/files/-MDZqx7MNMPoT-\_lGN1n" %}

{% file src="/files/-MDZqsevnEoN4o-yBfVb" %}

## 使用启动器创建原版游戏

请使用启动器创建一个Minecraft 1.12并开始游戏，启动器我只测试了官方启动器：

![Minecraft官方启动器](https://187213255-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MDZbToSFTeR4WMDTUeQ%2F-MDZosAErgvoEHvGNISZ%2F-MDZsHNUNghstDKzodAv%2Fminecraft-lan.png?alt=media\&token=e7c78aa4-abe2-4d7f-91e4-904e1449cabb)

请确保

> %HOMEPATH%\AppData\Roaming\\.minecraft\versions\1.12

文件夹下有1.12.jar文件

## 反编译Minecraft

解压缩mcp940.zip到你的工作区：

* MacOS/Linux：运行 [decompile.sh](https://github.com/WangTingZheng/mcp940/blob/master/decompile.sh)
* Windows：运行 [decompile.](https://github.com/WangTingZheng/mcp940/blob/master/decompile.sh)

运行成功后，会在`src/minecraft`文件夹下产生net包和一个`Start.java`

## 加入其它工具包

解压缩：

* DarkMagician6-eventapi.zip
* Optifine SRC Version \[1.12 HD U A4].rar

把解压缩后的内容加入到`src/minecraft`文件夹下，加入好后应该是这样的：

![完整的minecraft文件夹](https://187213255-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MDZbToSFTeR4WMDTUeQ%2F-MDZuzHBkJTQFtEtsIbQ%2F-MDZx3nvBqg0Nhf7273D%2Fminecraft-folder.png?alt=media\&token=bc1bf18c-4d6e-4484-9472-f9577856635a)

## 加入vecmath依赖

解压缩`vecmath.zip`获得`vecmath.jar`，将它放入`lib`文件夹下

## 在IDEA上配置

在IDEA中，点击：

```c
File-> New-> Project from Existing Sources...
```

![open project](https://187213255-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MDZbToSFTeR4WMDTUeQ%2F-MDZosAErgvoEHvGNISZ%2F-MDZpCkahn-S18kymVOd%2Fopen.png?alt=media\&token=44c1f458-ff79-4546-82e2-3ac07e775926)

选择`Import project from external model`再选择`Eclipse`

![import Eclipse](https://187213255-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MDZbToSFTeR4WMDTUeQ%2F-MDZosAErgvoEHvGNISZ%2F-MDZpCkXZovL0ZlrcfLU%2Fimport-eclipse.png?alt=media\&token=ee62c27d-daa1-46df-92d8-2a931e88fd47)

接下来一页什么都不干

![直接点next](https://187213255-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MDZbToSFTeR4WMDTUeQ%2F-MDZosAErgvoEHvGNISZ%2F-MDZpCkYYTyFUoyZeQZr%2Fimport-path.png?alt=media\&token=a14cd308-77bb-4da6-a2c3-1e8ed650bf24)

接下来取消选择Server

![不用选择Server](https://187213255-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MDZbToSFTeR4WMDTUeQ%2F-MDZosAErgvoEHvGNISZ%2F-MDZpCkWaZGo89V0lC50%2Fimport-client.png?alt=media\&token=5db0b94c-f53c-4d18-b9e7-be4bc8cf27ca)

一直点击next直到IDEA打开本项目，如果有报错，忽略就好，打开后请配置JDK为1.8

打开`Project Structure`，点击`Modules`，从`lib`加入`vecmath.jar`

![加入库](https://187213255-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MDZbToSFTeR4WMDTUeQ%2F-MDZosAErgvoEHvGNISZ%2F-MDZpCk_fsxBA54DMZc9%2Fmod.png?alt=media\&token=e0623166-1aa7-4c5a-b852-1bb467bf6464)

运行Start.java内的主函数，你会得到一个报错：

```java
Exception in thread "main" java.lang.UnsatisfiedLinkError: no lwjgl64 in java.library.path
	at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1860)
	at java.lang.Runtime.loadLibrary0(Runtime.java:870)
	at java.lang.System.loadLibrary(System.java:1122)
	at org.lwjgl.Sys$1.run(Sys.java:72)
	at java.security.AccessController.doPrivileged(Native Method)
	at org.lwjgl.Sys.doLoadLibrary(Sys.java:66)
	at org.lwjgl.Sys.loadLibrary(Sys.java:87)
	at org.lwjgl.Sys.<clinit>(Sys.java:117)
	at net.minecraft.client.Minecraft.getSystemTime(Minecraft.java:3282)
	at net.minecraft.client.main.Main.main(Main.java:39)
	at Start.main(Start.java:11)
```

打开Edit Configurations：

![打开配置窗口](https://187213255-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MDZbToSFTeR4WMDTUeQ%2F-MDZosAErgvoEHvGNISZ%2F-MDZpCkRbCjFTSqA-o2Z%2Fconf.png?alt=media\&token=98f1c886-dc12-4227-ae64-2b6b6422ea00)

配置Start.java的启动参数，在`VM options`中填入`-Djava.library.path=versions\1.12\1.12-natives`，并修改`Working directory`下的最后一个文本为`jars`：

![配置窗口](https://187213255-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MDZbToSFTeR4WMDTUeQ%2F-MDZosAErgvoEHvGNISZ%2F-MDZpCkcCk-qIPUbNJnE%2Fstart.png?alt=media\&token=fd54e24b-01f0-4cfa-8af2-be8c6ec62562)

重新执行Start.java下的主函数就可以运行游戏

![IDEA内运行Minecraft的效果](https://187213255-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MDZbToSFTeR4WMDTUeQ%2F-MDZosAErgvoEHvGNISZ%2F-MDZpCkZ8bTAqbwPj_4M%2Fminecraft.png?alt=media\&token=e9e0d1d0-d5f8-4880-959f-221620447e80)

## 存在的问题

* 缺少国际化，目前只支持英文，无法选择中文
* 整个游戏没有声音、音乐和音效
* 点击资源包，整个游戏就会奔溃

## 参考

* [\[教程\]全民写端-MCP918配置\&Optifine装载\&EventAPI](https://www.bilibili.com/video/BV1W741127EZ): 使用mcp编译1.8的视频教程
* [mcp940.zip](http://www.modcoderpack.com/): Minecraft 1.12 原版反编译程序，能反编译服务端和客户端
* [Optifine SRC Version \[1.12 HD U A4\]](https://optifinesource.co.uk/downloads/1-12.html): Optifine 包，用来提升游戏帧数
* [DarkMagician6-eventapi.zip](https://bitbucket.org/DarkMagician6/eventapi/downloads/): 一个Minecraft的事件监听api
* [vecmath-1.5.2.jar](https://mvnrepository.com/artifact/javax.vecmath/vecmath/1.5.2): Minecraft中用到的3D向量数学包
