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开发环境),具体的安装方法可以看这个
自从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网址是
很不幸的是下载需要在MedieFire进行,MedieFire是隔三差五被墙,然后隔三差五解封,如果你使用MCPLab本站的下载地址还要面对可怕的速度和限时...以前我会在妖々舞上上传最新版的MCP.然而西行妖被退治后妖々舞一蹶不振最终在8月7号埋骨于弘川了.所以我转战DBank,上传了一份MCP70a.(如果你需要旧版请联系我)
<<这个是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文件夹拷入MCP的Jars内
(4)安装ModLoader(并打上反编译修正补丁),有条件还要安一个AudioMod,别忘记删掉验证文件.
(5)安装ModLoaderMP.
很麻烦吧...所以我将我的Jars文件夹全部打包并上传了,你可以直接下载并使用.这套文件已被验证可以正常反编译.
标准套(MC1.3.1,客户端包含ModLoader,ModLoaderMP和AudioMod,服务器包括ModLoaderMP)
(不知道为什么,这次我换成了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.
之后你需要运行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
作者: 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
有些太屌的功能用不上 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
我就知道总有人不看索引贴...
作者: 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)
作者: 【实习】Xiao-Li 时间: 2015-2-24 20:21
如果我没有猜错的话 这句话是说配置成功
作者: 【实习】Xiao-Li 时间: 2015-2-24 20:23
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,很不错,但是看着有点绕= =。。。