我的世界java怎么开创造,MOD制作教程JAVA篇
您尚未登录,⽴即登录享受更好的浏览体验!
需要 登录 才可以下载或查看,没有帐号?注册(register)
x
本帖最后由 heidada 于 2011-5-12 21:33 编辑
⾸先我阅读了这个教程的⼤概的内容,我觉得这对我来说是个很⼤的挑战,不管结果如何我觉得还是要把这个⽂章翻译出来,因为我觉得我的抛砖引⽟能够激起未来的轩然⼤波。不幸的是⾸先我不懂JAVA,没有进⾏过任何JAVA的编程经验,虽然我少年时候的理想是做个编游戏的⼈,你知道,有的时候理想总是远离现实。其次我的英⽂确实够次,⽃胆翻译这个⽂章我觉得我可能会误⼈⼦弟,呵呵!好吧不管怎么说我决定做第⼀个吃螃蟹的⼈啦再次我觉得制作MOD需要很多专业知识,我可能真的不够格,我⾃⼰也没有任何实践,希望有错误的时候⼤家耐⼼指导,拍砖什么的我⽆所谓,我脸⽪够厚,所以⼤家就省了,有错误就点评指出吧……我虚⼼接受。
本贴持续更新中……给出原帖地址⼼急的童鞋可以⾃⼰去看哈~另外说句题外话,我为什么要极⼒推荐MC这个游戏,因为这个游戏是我有史以来见到最⽜逼的游戏,它产⽣的意义是跨时代的,也是我梦想中
想要制作的游戏!他可以借助简单的物品合成原理制造世界,我向很多⼈推荐这个游戏时候他们总是以画⾯太烂⽽放弃玩这个游戏,我知道,现在很多玩家以游戏画⾯作为评判⼀个游戏的标准,我得说,这是⽆知。当年的神作即时战略⿐祖沙丘魔堡2出来的时候那画⾯⽤现在的话说就是⼀坨屎啊!但是其意义影响到现在,星际,魔兽,红警,帝国,那个敢说其作品⾥没有DUNE2的⾎minecraft,它将是未来游戏发展的趋势,我断⾔,未来10年内,这个游戏的⼦孙后代将⼤量繁衍,衍⽣出新鲜的⾎液,如同QUAKE当年不⾛红CS却⾛红⼀样道理。为什么我盛赞这个游戏,因为,未来你可以在这个世界⾥创造所有能创造的东西,甚⾄⼀些现实社会不能创造的东西,这根本就是虚拟现实世界的伟⼤⼀步。请⼤家也记住我,⼀个伟⼤的预⾔家~~⼤⼤哥!!
第⼀节、准备⼯作和流程解释
(⽜X的同学可以略过这节,不过我真不相信有⼈那么⽜X,如果你⽜X请快现⾝吧!!)⼀、准备⼯作和需求
好了,废话这么多该开始了,⾸先讲下需求,要想制作MINECRAFT的MOD,以下四条⼀定要有:
1.Java Development Kit 6 (JDK6) ⼤概78MJDK下载地址
2.minecraft编码包,这⾥我下载了MCP2.9A版本的编码包,因为他是对应1.
3.01BETA版本的对应编码包,如果⼤家有相应的版本请去MCP编码包汇总下载地址查⾃⼰想要的软件包
3.EditPlus/Notepad++/Eclipse/Netbeans (⽂本编辑语法⾼亮)
4.编程知识,优秀的JAVA编程技术~呵呵,我看到这⾥就呆了,我知道我应该可以知难⽽退了⼆、如何开始
1.1⾸先安装编码包MCP1.2解压缩ZIP⽂件包到你电脑上的⽬录⽐如C:\MCP
1.2解压缩压缩包到电脑,⽐如C:\MCP
1.3复制整个 .minecraft/bin 和 .minecraft/resources⽬录到C:\MCP\JAR下.
1.4运⾏decompile.bat
打开两个窗⼝,⼀个是 C:\MCP\sources\minecraft\net\minecraft\src the other to
另⼀个是 C:\MCP\
三、MODS的运⾏
要运⾏您的MODS的你⾸先需要编译,调试和测试。
1.⾸先编译运⾏'recompile.bat'所有的minecraft类⽂件。
2.转到C:C:\MCP\logs\minecraft_compile.log 和搜索 ^,如果没有到这个字,则没有编译错误。如果有,你需要修复您的代码中的错误,并尝试重新编译。
3.如果没有错误,运⾏'test_game.bat'。
4.这将弹出⼀个已经安装了MOD的minecraft替代版本-⽤来测试你的mod。
⼀旦你的MOD编辑完毕,你需要代码混淆(Obfuscated code是:將電腦程式的代碼,轉換成⼀種功能上等價,但是難於閱讀和理解的形式的⾏為。
使之可以放⼊MINECRAFT.JAR⾥
四、使⽤Eclipse
你可以使⽤Eclipse来写你的MOD,调试编码,编译编码,运⾏编码,当你长时间调试时,它会跟你省下很多时间。
ECLIPSE使⽤视频地址稍后发上来……需要搬运
五、模糊编码(obfuscate暂时翻译为模糊编码好了,希望有⼈给我指点专业解释)
模糊编码允许你的MOD可以在MINECRAFT.JAR运⾏,并可以被任何⼈使⽤
1.打开C:\MCP\conf\
2.删除⽂本⾥所有的东西
3.添加你的class(class是java编译好的类型⽂件)到⽂件⾥,举例如下:
BlockExample
Block
CraftingManager复制代码4.运⾏'reobf.bat'这个⽂件
5.你⽣成的class⽂件将全部放在C:\MCP\final_out\minecraft\⽬录下,你可以把这些做好的MOD放到MINECRAFT.JAR⾥⾯就可以玩⾃⼰的MOD了
额~!好了,上⾯的其实都是⼀些准备⼯作,是为了让⼤家了解真个流程和需要做的准备⼯作,下⾯开始就是真家伙了,程序怎么写就看下⾯的了
第⼆节、制造新的⽅块类型
这节我们学习如何制造⼀个新⽅块,并且怎么⽤⼯作台合成它,这⾥我们给出程序怎么做⼀个像⽯头⼀样的⽅块
1.你需要⼀个叫做BlockExample.java的新⽂件,并且放置其再src⽬录下
2.程序语⾔结构如下:
package net.minecraft.src;
import java.util.Random;
public class BlockExample extends Block
{
public BlockExample(int i, int j)
{
super(i, j, k);
}
public int idDropped(int i, Random random)
{
return 0;
}
}复制代码
该死的作者没有解释上⾯语句是⽤来⼲什么的,没关系,抄作业这个我⾏,不⽤懂题⽬怎么做,达到交作业的⽬的就⾏ XD
3.现在你需要把这个块添加到程序⾥以便让程序可以调⽤,因此,需要打开block.java(俺不知道这个⽂件放哪⾥,请实际操作过的同学告诉我)
4.你可以看见⽂件底部有⼀⼤堆对于变量的声明,好吧,我们加上我们的声明
public static final Block example;复制代码
5.下⾯你可以看见对于声明的变量初始化,初始化你的⽅块,语句如下:
example = (new BlockExample(92, 1)).setHardness(1.5F).setResistance(10F).setStepSound(soundStoneFootstep);复制代码
如我们之前提到的,我们制造了⼀个新的⽯头⽅块
new BlockExample(92, 1)这句的意思是,创造⼀个新⽅块,⽅块ID为92(物品编号是不可以和已经存在的物品重复的,所以你最好参看我另外⼀个教程编号的可选取数字范围是什么),⽅块的图⽚编号为1,也就是说图⽚和⽯头的图⽚⼀样
setHardness(1.5F)是设置⽯头硬度和⽯头⼀样,硬度就是你需要多久可以破坏⽯块的时间参数
setResistance(10F)是抗性参数,也就是你的⽯头对于爆炸的抗性
setStepSound(soundStoneFootstep)是你⾛在该⽅块上时候的声⾳,这⾥设置和⽯头⼀样
这就搞定了⽅块的创建,哈哈,看似简单啊,不知道实际操作有啥难度,同学们⾃⼰尝试去吧,我看热闹~这样创建出来的⽅块可以使⽤单机命令或者OP的命令调出来/give 92,你懂的……
下⾯是关于这个⽅块的合成语句编写
1.打开CraftingManager.java
2.你可以⽴即从这个class⽂件的结构表⾥到添加合成菜单功能(addRecipe function)这⼀项
3.到这个⽂件的最后⼀⾏然后加⼊我们的合成菜单公式addRecipe(new ample, 1), new Object[] {"##", "##", Character.valueOf('#'), Block.dirt});复制代码
这句不难,意思是4块⼟可以合成⼀个你制造的新⽅块
new ample, 1)这句表⽰将⽣成什么⽅块,1代表数量
new Object[] {"##", "##", Character.valueOf('#'), Block.dirt}表⽰这个物品如何合成,相信##,##是代表第⼀⾏放2个#第⼆⾏也放2个#,后⾯是对#这个物品的定义,给出的是⼟块,也就是说由4个⼟块合成,合成的摆放如下
[dirt][dirt]
[dirt][dirt]
第三节、创建新物品类型1.你需要在scr⽬录下创建⼀个新⽂件ItemExample.java
2.语法结构如下:package net.minecraft.src;
public class ItemExample extends Item
{
public ItemFood(int i)
{
super(i);
maxStackSize = 64;
}
public ItemStack onItemRightClick(ItemStack itemstack, World world, EntityPlayer entityplayer)
{
}
}复制代码
3.添加该物品到物品清单⾥,打开item.java这个⽂件
4.到⽂件底部⼤量的实例变量处,添加⼀个新的变量public static Item example = (new ItemExample(95)).setIconIndex(42);复制代码
这样的话,你将建⽴⼀个新的物品,编号ID为256+95,这⾥我不明⽩为什么是256+95,还请⾼⼿来指点。物品的图像时42号。因此看起来像是⼀个标志,这个物品没有任何属性,也不能组合得到。但当你编译并运⾏MOD后会发现这个新物品。
额~原帖的观众提问(1)⼀起翻译吧,我想应该会碰到同样问题……
THX的这个教程,但是我卡在“recompile.bat“,因为当我运⾏它,它说:
Thx for this tutorial, but Im stuck at "recompile.bat" because when I run it, it says:
if you want to speed this up, add it to your PATH
'C:\Users\Hypothawits\minecraft' is not recognized as an internal or external command
,
operable program or batch file.
Path set.
Unable to Please verify that it is in the PATH.
k/java/javase/downloads/index.html and download a JDK.
Press any key to continue . . .
提问者不知道如何更换路径
回答如下
作者说,我想你应该没有⾜够的程序知识,最基本的应该添加JAVAC到指定路径,GOOGLE可以帮你(我X,等于没说)
额~前两天⼀直⽆法登陆论坛就把这个帖⼦放这⾥了,23⽇今夜继续
观众提问(2)
观众提问真的是很有意思的⼀个环节,这⾥有⼀个观众提问⾮常有意思ManxAndrew⼩朋友提问到:好吧,我⼀直在研究我的标~你帮我看看我的尝试package net.minecraft.src;
// Decompiled by Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov.
// Decompiler options: packimports(3) braces deadcode
public class ItemSpear extends Item
{
public ItemSpear(int i, int j)
{
super(i);
maxStackSize = 1;
maxDamage = 44 << j;
if(j == 3)
{
maxDamage *= 4;
我的世界美食mod食谱
}
weaponDamage = 4 + j * 2;
}
public float getStrVsBlock(ItemStack itemstack, Block block)
{
return 1.5F;
}
public void hitEntity(ItemStack itemstack, EntityLiving entityliving)
{
itemstack.damageItem(1);
}
public void hitBlock(ItemStack itemstack, int i, int j, int k, int l)
{
itemstack.damageItem(4);
}
public int getDamageVsEntity(Entity entity)
{
return weaponDamage;
}
public boolean isFull3D()
{
return true;
}
private int weaponDamage;
}复制代码⽂件名 ItemSpear.java
然后是合成菜单公式⼀个X两个#⾃左上向右下排列:craftingmanager.addRecipe(new ItemStack(Item.spear, 1), new Object[] { "  X", " # ", "#  ", Character.valueOf('X'), Item.flint, Character.valueOf('#'), Item.sticks
});复制代码下⾯的合成公式放在RecipesWeapons.java⾥
最后加上如下程序
public static Item spear (new ItemSpear(101, 0)).setIconIndex(53);复制代码唯⼀看的懂的⼀句,给出物品代码并赋予图标