Minecraft(我的世界)中文论坛

标题: MCP的Mod制作教程(1) - MCP和Eclipse的配置

作者: szszss    时间: 2012-3-3 22:55
标题: MCP的Mod制作教程(1) - MCP和Eclipse的配置
本帖最后由 szszss 于 2012-8-12 17:14 编辑

MCP的Mod制作教程(1)
MCP和Eclipse的配置
作者:szszss

索引贴地址:
http://www.mcbbs.net/thread-18949-1-2.html

首先需要强调,这个教程不是给没有任何编程基础的人准备的...你至少要懂得最基础的编程知识和OOP(面向对象编程)的基础,如果你真的对编程一窍不通的话建议先读读Java教程.

首先你要确保你安装了JDK(Java开发环境),具体的安装方法可以看这个
http://zhidao.baidu.com/question/351018707.html

自从MCP70a开始,JDK6用户和JDK7用户遇到的情况会有所不同,MCP70a装配了FernFlower反编译器,然而它似乎对JDK6的支持不是很好,我使用JDK6进行反编译时在客户端的RenderBlock类反编译时遇到了问题.然而这个反编译器自然有它的强力之处:它修正了ModLoaderMP的MinecraftServer类反编译错误问题.然而这种福利只有JDK7用户能体验到.
However,这个地球上大部分人仍在使用JRE6,所以开发者不得不考虑兼容性,以兼容性至上的开发者建议使用JDK6,以性能和稳定性至上的建议使用JDK7.我使用的是JDK6,JDK7的一些部分我是咨询MineLogin的开发者Fanhua的,所以出了事找他(Fanhua:CNMB...)

然后你要下载MCP并配置它,我最早是倡导所有人都自行配置MCP,但现在我发现每次自行配置MCP都非常麻烦而且耗时间,并且有些人的机器非常神奇,无论怎么弄就是反编译不对,所以我上传了一份已经配置好的MCP7.0a,它包括完整的源代码文件和所需的资源文件,理论上是解压即用.所以你现在有2个选择,一个是下载一份已配置好的MCP,另一种是自己配置.
使用已配置好的MCP:
http://dl.dbank.com/c0maxsbm9b

自行配置MCP:
够爷♂们,首先你要下载MCP7.0a
它的Wiki网址是
http://mcp.ocean-labs.de/index.php/MCP_Releases

很不幸的是下载需要在MedieFire进行,MedieFire是隔三差五被墙,然后隔三差五解封,如果你使用MCPLab本站的下载地址还要面对可怕的速度和限时...以前我会在妖々舞上上传最新版的MCP.然而西行妖被退治后妖々舞一蹶不振最终在8月7号埋骨于弘川了.所以我转战DBank,上传了一份MCP70a.(如果你需要旧版请联系我)
http://dl.dbank.com/c05510fqna
<<这个是MCP6.1的截图,MCP7.0a和它相同
MCP解压到一个文件夹内.对文件夹的命名没有什么太大要求,我习惯直接命名为MCP,老外习惯命名为source.
此外,你需要配置MCP的文件,包括:
(1)从官网下载一个对应版本的Minecraft_Server.jar拷贝到Jars目录下(有可能你下载到的是Minecraft_Server.zip,将后缀名从.zip改为.jar就行了)
(2)MC目录下的bin文件夹全部拷进MCP下的Jars.
(3)复制资源文件,MC目录下的resources文件夹拷入MCPJars
(4)安装ModLoader(并打上反编译修正补丁),有条件还要安一个AudioMod,别忘记删掉验证文件.
(5)安装ModLoaderMP.

很麻烦吧...所以我将我的Jars文件夹全部打包并上传了,你可以直接下载并使用.这套文件已被验证可以正常反编译.
标准套(MC1.3.1,客户端包含ModLoader,ModLoaderMPAudioMod,服务器包括ModLoaderMP)
http://dl.dbank.com/c0ge165xt6
(不知道为什么,这次我换成了zip,以前我用rar打包)
(很抱歉,但从MCP7.0a开始,我只提供标准套了-w-||)

配置好的jars文件夹应该是这样
之后运行MCP下的decompile.bat开始反编译,此时高潮来了
对JDK6的用户
FernFlower对JDK6支持不好,它会把你的RenderBlock类给艹花了,所以我们得解除FernFlower,进入你的MCP目录下的conf\patches,删掉minecraft_server_ff和minecraft_ff.之后运行decompile.bat

对JDK7的用户
直接运行decompile.bat,体验FernFlower的快感吧,You 0xB16B00B5

反编译时MCP可能提醒你有新版本,建议不要升级...(反正我升级了反而213)
如果你的MC版本没错的话,通常几分钟内便能反编译完成.
反编译过程中在Client阶段会报两个错误,如果我没猜错应该是RenderBlocks.#,StructureStro.#,这两个奇葩的文件老外反编译时也噗噗噗地弹错,无视就好了,不影响任何操作.
在反编译Server阶段可能会报个MinecraftServ#的错误,同样不影响任何操作.

反编译结束后开始正编译验证阶段,这时候高潮又来了.
对JDK6的用户
在使用FernFlower前,MCP对ModLoaderMP有个万年Bug,MinecraftServer类会抱大量错误,我们需要修正这个错误并重新完成正编译的最后阶段.修正的方法是将MCP目录下的src\minecraft_server\net\minecraft\server内的MinecraftServer.java的第516至第552行全部替换为一个},之后保存,听起来可能有些麻烦,所以我上传了一个已修正的MinecraftServer.java.
http://dl.dbank.com/c04k0n9dab
之后你需要运行MCP目录下的updatemd5.bat重新进行用于验证的正编译.打开bat后输入Yes,回车.
<<这个是MCP6.1的截图,MCP7.0a和它相同
如果一切顺利,大约几十秒后你就能完成全部正编译工作了(如果遇到错误可能是因为你的MinecraftServer.java没有修复正确).

对JDK7的用户
Fanhua说JDK7下用MCP7.0a反编译完全正常,所以我这里就认为使用JDK7的人不会遇到任何问题,直接顺利过正编译验证阶段.

当你配置完毕MCP后
我们就要配置Eclipse了(如果你是用记事本编java的话请容我一拜)(HTTP_404:我用VIM)
如果不知道Eclipse为何物请自行百度和下载,Eclipse版本最低要3.6
进入Eclipse,工作空间随便选一个,建议默认,随后创建一个新的JavaProject
关于项目的命名,许多人喜欢以自己的mod的名字来命名,但事实上有时我们不得不重复使用源文件,出于这些考虑,我建议干脆将项目命名为Minecraft
之后点击Next
然后我们要定位MC源代码的位置,默认情况下你会转入项目配置页面,右键Source窗内的Minecraft,选择Link Source,在新窗口内选择你的MCP文件夹下的src\minecraft
之后直接点击Finish,于是便完成了MC源代码的添加工作,以后我们的编程也要在源代码目录进行,所以原始项目自带的src就没用了,我习惯将它Remove from build path.
之后我们要添加用于编译的库,选择Libraries窗口,点击Add External JARs,将你的MCP下的jars\bin下的4个Jar文件全部加入(包括Minecraft.jar,MC使用了一个第三方声音引擎,反编译阶段它会被忽略,而正常编译阶段却需要它)
于是乎我们就完成配置了,点击下方的Finish,项目便正式建立了,Eclipse会花一段时间重建工作区(进度会在右下方显示),如果情况正常,不会有Error(错误)报告,但会有一大堆Warning(警告),警告可以忽略.
(大家好 我是第一个谜题)
(这张图内有一个很值得吐槽的东西,你发现了吗,提示:和东方有关)

以后我们的编程就要在net.minecraft.src这个Package内进行,所有的MC源文件都在里头.
(注:这张图是MCP5.6版的,新版多了一些目录,但都不重要)
顺便说明一下,关于Mod的编译,虽然MCP开发组说过配置完毕的Eclipse能够直接编译MC源代码,但我不建议这样做.我推荐依然使用MCP目录下的recompile.bat进行编译.编译完的Class文件不会被打包成Jar,而是会存在MCP下的Bin文件夹内.

下一篇:建立一个使用ModLoader的Mod
http://www.mcbbs.net/thread-18939-1-1.html

作者: DR.MC.ztz    时间: 2012-3-3 23:02
MCP是啥?
作者: john180    时间: 2012-3-3 23:07
看着就挺复杂的
作者: 453914742    时间: 2012-3-3 23:29
精前留名......
作者: ivymichael    时间: 2012-3-3 23:46
非常棒,这几天正好也在研究制作MOD
作者: geludan    时间: 2012-3-4 00:06
懒得管这种东西
作者: 86638872    时间: 2012-3-4 13:11
我想,有没有汉化的

作者: ykc200    时间: 2012-4-1 08:32
亮点就是那个图书馆library吧
作者: minecraft小子    时间: 2012-4-6 22:01
DR.MC.ztz 发表于 2012-3-3 23:02
MCP是啥?

MC编程基础系统啊。我比你还烂都懂......
作者: minecraft小子    时间: 2012-4-6 22:37
找不到Libraries窗口
作者: szszss    时间: 2012-4-6 22:42
minecraft小子 发表于 2012-4-6 22:37
找不到Libraries窗口


BTW,确定你的版本够新吗- -

作者: minecraft小子    时间: 2012-4-7 15:35
szszss 发表于 2012-4-6 22:42
BTW,确定你的版本够新吗- -

在第二个帖子才看到,你的版本是5.6......
作者: szszss    时间: 2012-4-7 16:15
minecraft小子 发表于 2012-4-7 15:35
在第二个帖子才看到,你的版本是5.6......

- w -我是指Eclipse版本
图是MCP5.6版的,但文字内容都已更新至最新版了.
作者: DR.MC.ztz    时间: 2012-4-7 17:25
minecraft小子 发表于 2012-4-6 22:01
MC编程基础系统啊。我比你还烂都懂......

...我对编程不熟...你懂的
作者: minecraft小子    时间: 2012-4-7 18:35
szszss 发表于 2012-4-7 16:15
- w -我是指Eclipse版本
图是MCP5.6版的,但文字内容都已更新至最新版了.

你的Eclipse是多少的?
作者: wolski    时间: 2012-4-7 18:59
maaaaaaaaaaaaaaaaaaaaaaaaaaaaaaark!!!
作者: szszss    时间: 2012-4-7 21:33
minecraft小子 发表于 2012-4-7 18:35
你的Eclipse是多少的?

Eclipse for RCP and RAP Developers,相当于Eclipse3.7
作者: gy7610    时间: 2012-4-10 17:45
MK一下,,准备入住JAVA

作者: a919298641    时间: 2012-4-12 17:48
跪求1.1的  mcp 和整合好的 ..
作者: 949512869    时间: 2012-4-21 06:23
直接把Eclipse的工作空间设置到MCP里的Eclipse就可以了
顶一下
作者: 949512869    时间: 2012-4-21 06:24
反编译好慢啊!!!!
作者: opzyo    时间: 2012-5-16 21:47
完全看不懂弄了一半= =
作者: oneeyes    时间: 2012-6-13 10:38
本帖最后由 oneeyes 于 2012-6-13 10:43 编辑

反编译莫名停止,
你给的那个修改过519~555的MinecraftServer.java.还是报错了,在539错误的,求指导,顺便如果可以把完整的mcp包发一下,[email protected]

作者: 497817979    时间: 2012-6-28 13:44
第一章看完,虽然是只照猫画虎地配置好了
作者: 704009905    时间: 2012-7-14 14:43
我的和23楼的问题一样,如果知道为什么的话解释一下吧,不然要每个有这个问题的人又回来问一遍的吧。
作者: minecraft小子    时间: 2012-8-5 19:44
LZ球更新,MCP7.0也出来了
作者: Condor    时间: 2012-8-11 01:04
教程更新到1.3.1了,很好~
作者: 风障    时间: 2012-8-15 22:15

这个怎么办?我家WIN7

作者: ryanminecraft    时间: 2012-8-15 22:15
wolski 发表于 2012-4-7 18:59
maaaaaaaaaaaaaaaaaaaaaaaaaaaaaaark!!!

新手必备!
作者: Nsplayerol    时间: 2012-8-26 21:21
突然跳到了MCP并没有任何介绍有点蛋疼,如果作者可以的话在中间插一段MCP的介绍吧(这样都看得蛋疼了一会MCP是什么)

很高兴你能够教大家做MOD,也希望你能为这个你/大家喜欢的游戏继续做贡献。
作者: Nsplayerol    时间: 2012-8-27 18:21
对了我有个问题求助于你
报错了:

      Minecraft has crashed!      
      ----------------------      

Minecraft has stopped running because it encountered a problem; Exception occured in ModLoader
This error has been saved to G:\腾讯QQ用户数据\869536553\FileRecv\Minecraft1.2.5\.\.minecraft\crash-reports\crash-2012-08-27_18.19.53-client.txt for your convenience. Please include a copy of this file if you report this crash to anyone.



--- BEGIN ERROR REPORT 17138db1 --------
Generated 12-8-27 下午6:19

- Minecraft Version: 1.3.2
- Operating System: Windows XP (x86) version 5.1
- Java Version: 1.6.0_25, Sun Microsystems Inc.
- Java VM Version: Java HotSpot(TM) Client VM (mixed mode), Sun Microsystems Inc.
- Memory: 450888568 bytes (430 MB) / 518979584 bytes (494 MB) up to 1037959168 bytes (989 MB)
- JVM Flags: 2 total; -Xms512m -Xmx1024m
- ModLoader: Mods loaded: 1
ModLoader 1.3.2


java.lang.NoClassDefFoundError: mod_normalblock (wrong name: net/minecraft/src/mod_normalblock)
        at java.lang.ClassLoader.defineClass1(Native Method)
        at java.lang.ClassLoader.defineClassCond(ClassLoader.java:631)
        at java.lang.ClassLoader.defineClass(ClassLoader.java:615)
        at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:141)
        at java.net.URLClassLoader.defineClass(URLClassLoader.java:283)
        at java.net.URLClassLoader.access$000(URLClassLoader.java:58)
        at java.net.URLClassLoader$1.run(URLClassLoader.java:197)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
        at ModLoader.addMod(ModLoader.java:335)
        at ModLoader.readFromClassPath(ModLoader.java:1333)
        at ModLoader.init(ModLoader.java:931)
        at ModLoader.addAllRenderers(ModLoader.java:185)
        at avy.<init>(RenderManager.java:87)
        at avy.<clinit>(RenderManager.java:14)
        at net.minecraft.client.Minecraft.a(SourceFile:260)
        at net.minecraft.client.Minecraft.run(SourceFile:516)
        at java.lang.Thread.run(Thread.java:662)
--- END ERROR REPORT 337f4260 ----------

源码:package net.minecraft.src;

public class dcBlockDiracOre extends Block {

        public dcBlockDiracOre(int id, int textureIndex, Material mat)
        {
                super(id, textureIndex, mat);
                super.setHardness(0.5f);
                super.setBlockName("oreDiracium");
                super.setStepSound(soundStoneFootstep);
        }
}

package net.minecraft.src;

public class mod_normalblock extends BaseMod
{
        public static Block BlockDiracium;
        public String getVersion()
        {
             return "1.0.0";
        }
        public void load()
        {
                BlockDiracium = new dcBlockDiracOre(176, ModLoader.addOverride("/terrain.png", "/diracore.png"), Material.rock);
                ModLoader.registerBlock(BlockDiracium);
                ModLoader.addName(BlockDiracium, "Diracium Ore");
                ModLoader.addRecipe(new ItemStack(BlockDiracium, 4), new Object[]
                                {
                                         " D ",
                                         Character.valueOf('D'), Block.dirt
                                });
        }
}

作者: szszss    时间: 2012-8-29 16:38
...其实...我也不明白问题在哪...ModLoader的原理是扫描Jar包内以"mod_"开头的类文件,然后载入.然而你的mod虽然被扫描到了但却提示"没有找到类"...
顺便一提,在MCP中主要的类都在net.minecraft.scr包下,但实际发布后类是不存放在包内的,所以recompile得到的文件不能塞入Jar中.
作者: dan42393638    时间: 2012-11-20 19:46
ModLoader,ModLoaderMP和AudioMod MOD放在MCP的Jars那個JAR 還是放在%appdata%那個
作者: 1016470686    时间: 2012-11-24 11:17
额。。。。看的我眼花缭乱
作者: dhnkajfhla    时间: 2012-12-29 15:34
找不到Libraries窗口
作者: hpws_naruto    时间: 2013-3-23 01:19
怎么练反编译都做不到啊?  其他的PY文件好像也有问题(估计不是PY文件的问题,但是运行时候出错了),求大神帮忙啊
== MCP 7.0 (data: 7.0a, client: 1.3.1, server: 1.3.1) ==
FATAL ERROR
Traceback (most recent call last):
  File "runtime\recompile.py", line 26, in recompile
    commands = Commands(conffile, verify=True)
  File "D:\McModZhiZuo\jars\MCP\runtime\commands.py", line 196, in __init__
    self.checkjava()
  File "D:\McModZhiZuo\jars\MCP\runtime\commands.py", line 708, in checkjava
    path = os.path.join(str(path), 'bin')
UnicodeEncodeError: 'ascii' codec can't encode characters in position 3-6: ordin
al not in range(128)


作者: hpws_naruto    时间: 2013-3-23 01:31
用楼主给的完整版的没显示错误,但是运行就出错了,编译不过去啊

Exception in thread "main" java.lang.UnsatisfiedLinkError: no lwjgl in java.library.path
        at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1709)
        at java.lang.Runtime.loadLibrary0(Runtime.java:823)
        at java.lang.System.loadLibrary(System.java:1030)
        at org.lwjgl.Sys$1.run(Sys.java:73)
        at java.security.AccessController.doPrivileged(Native Method)
        at org.lwjgl.Sys.doLoadLibrary(Sys.java:66)
        at org.lwjgl.Sys.loadLibrary(Sys.java:95)
        at org.lwjgl.Sys.<clinit>(Sys.java:112)
        at net.minecraft.client.Minecraft.getSystemTime(Minecraft.java:2463)
        at net.minecraft.client.Minecraft.main(Minecraft.java:2120)
        at Start.main(Start.java:22)

作者: szszss    时间: 2013-3-23 19:23
hpws_naruto 发表于 2013-3-23 01:31
用楼主给的完整版的没显示错误,但是运行就出错了,编译不过去啊

Exception in thread "main" java.lang ...

没有找到外部库...这个帖子是用ModLoader做Mod的,已经过时了哟,去看看Forge版的吧...http://www.hakugyokurou.net/wordpress/?page_id=126
作者: hpws_naruto    时间: 2013-3-23 22:34
szszss 发表于 2013-3-23 19:23
没有找到外部库...这个帖子是用ModLoader做Mod的,已经过时了哟,去看看Forge版的吧...http://www.hakugyok ...

谢谢楼主,我去看看新教程
作者: hagb    时间: 2013-7-8 10:22
大神呀!!
作者: hagb    时间: 2013-7-8 10:39
用Eclipse怎么调式Minecraft呀?
作者: hagb    时间: 2013-7-8 10:53

用Eclipse怎么调式Minecraft呀?
作者: szszss    时间: 2013-7-8 20:40
hagb 发表于 2013-7-8 10:53
用Eclipse怎么调式Minecraft呀?

http://www.hakugyokurou.net/wordpress/?p=257 如果是Minecraft1.6.1的话还需要额外参照这个http://www.hakugyokurou.net/wordpress/?p=590
作者: wyz1471327268    时间: 2014-2-11 16:24
貌似现在更多人用MyEclipse
作者: szszss    时间: 2014-2-14 14:46
wyz1471327268 发表于 2014-2-11 16:24
貌似现在更多人用MyEclipse

有些太屌的功能用不上 233
作者: 大叔很有爱    时间: 2014-4-22 13:19
我想问下 为什么我的MC目录里 没有lib和resources文件夹?
作者: 1667642043    时间: 2014-4-22 13:27
感觉好复杂啊
作者: 24k纯坑    时间: 2014-9-8 09:29
什么是resources文件夹,我只找到后面跟着packs的{:10_494:}
作者: Falling_空城    时间: 2014-9-23 15:46
好老的mc=w=!!其实mcp很早以前就不用自己配置了,提个建议:劝楼主改做1.6以上的版本并发相关教程,与时俱进
作者: szszss    时间: 2014-9-25 11:18
Falling_空城 发表于 2014-9-23 15:46
好老的mc=w=!!其实mcp很早以前就不用自己配置了,提个建议:劝楼主改做1.6以上的版本并发相关教程,与时 ...

我就知道总有人不看索引贴...
作者: 88429354    时间: 2014-10-5 01:12
kankan ~~~~~
作者: 红石奇葩大神    时间: 2014-10-5 01:22
Notepad++怎么活
作者: pangyiju    时间: 2015-2-24 18:52
.........{:10_527:}

360截图20150224185208734.jpg (60.39 KB, 下载次数: 2)

360截图20150224185208734.jpg

作者: 【实习】Xiao-Li    时间: 2015-2-24 20:21
pangyiju 发表于 2015-2-24 18:52
.........

如果我没有猜错的话 这句话是说配置成功
作者: 【实习】Xiao-Li    时间: 2015-2-24 20:23
大叔很有爱 发表于 2014-4-22 13:19
我想问下 为什么我的MC目录里 没有lib和resources文件夹?

1.6.2之后的版本bin  就是versions  和resources 是assets
作者: 惆丿怅    时间: 2015-6-28 22:34
地址挂了
作者: 659186445    时间: 2015-7-9 20:50
能给一份1.7.10的mcp么
作者: 321zhangjvzhi    时间: 2016-11-6 10:21
中文版的Eclipse你让我咋搞?而且图片也挂了
作者: ツ夜爵    时间: 2017-2-26 15:14
提示: 作者被禁止或删除 内容自动屏蔽
作者: 漢堡o    时间: 2017-2-28 15:19
96666666666666666666666666666666666666
作者: 2011033567    时间: 2018-7-20 12:13
给的链接一个都打不开啊!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

作者: FortuneQ    时间: 2018-7-21 23:57
不错正在学习写插件
作者: 萌萌白喵喵    时间: 2018-7-23 11:46
http://dl.dbank.com/c0maxsbm9b 这个链接好像挂了。。。
作者: xiaozaizai    时间: 2018-7-23 18:22
不是,这个东东
作者: xiaozaizai    时间: 2018-7-23 18:23
为毛文件没了???
作者: wan2009qi    时间: 2018-9-29 15:04
jdk8不知道会不会有问题
作者: BrackRat    时间: 2018-9-29 21:29
看起来好难,加油学习吧o(?^`)o
作者: jeact3    时间: 2018-11-15 11:42
这个.........好像有点难懂啊
作者: 钰某人    时间: 2018-11-17 21:29
2333看不懂
作者: q2639716792    时间: 2019-7-31 18:54
提示: 作者被禁止或删除 内容自动屏蔽
作者: sulinly    时间: 2019-8-2 01:53
学习下 谢谢
作者: 欧涂诺Memeda    时间: 2019-8-2 13:14
来学习学习了!
作者: Hengxi_funny    时间: 2019-8-2 13:36
感谢楼主带来的教学
作者: 凉凉丶    时间: 2019-8-2 21:34
emmmm,很不错,但是看着有点绕= =。。。