第四章:您等待已久的一章
我希望您能多加阅读一些Minecraft的代码,虽然对于一个java造诣不精人来说,代码有可能显得凌乱,但是不要灰心丧气。
在您创建工具成功后,我们下一步就是学习如何创建盔甲,创建盔甲与创建工具十分类似。
首先需要新建一个EnumArmorMaterial对象,这个对象与EnumToolMaterial十分类似但是却不尽相同:
Create a New Armor Material
名称 | 含义 |
EnumHelper.addArmorMaterial | 我们所引用的Forge类函数。如果您在此处出现错误,请手动导入net.minecraft.forge.EnumHelper |
以下这些函数您应该都能看懂和修改…… | |
"BLUE" | 材料名称 |
25 | 在该盔甲损坏之前可以承受多少伤害。 |
new int[] | 创建一个指向护甲值的整型指针变量。 |
2, 6, 5, 2 | 各部分的护甲值:从左至右依次为:头部、胸部、腿部、脚部。 |
9 | 可附魔性,我不确定……(羽毛为15,钻石为10,金块为25.) |
接下来需要创建一个新物品对象,与前文所述类似:
New Item Objects
此时会报错,这是由于还没有新建类。与工具不同的是,您只需要创建一个类即可。
现在我们需要扩展ItemArmor以及完成ITextureProvider和IArmorProvider:
- public class BlueStoneArmor extends ItemArmor implements ITextureProvider, IArmorTextureProvider {
接下来需要添加getTextureFile和结构体
- public ItemArmor(int par1, EnumArmorMaterial par2EnumArmorMaterial, int par3, int par4)
- {
- super(par1, par2EnumArmorMaterial, par3, par4);
- }
- @Override
- public String getTextureFile() {
- return "/New/Untitled-1.png";
- }
此时程序会报错,这是由于需要添加一个类函数,覆盖如下函数:
- @Override
- public String getArmorTextureFile(ItemStack itemstack) {
- }
当然这个类函数仍未完成,需要在其中添加一些内容:
getArmorTextureFile() method该类函数的作用是在材质文件中检索您当前穿着的护甲,并返回相应的材质将其显示在您身上,从而完成您穿着护甲的判定。
|| | Java语句中的“或” |
itemstack.itemID == mod_YourModName.blueStoneHelmet.shiftedIndex | 本逻辑表达式用于检索头盔 |
|| | Java语句中的“或” |
itemstack.itemID == mod_YourModName.blueStoneBoots.shiftedIndex | 检索脚部 |
return "/New/armor/blue_1.png" | 如果检索头盔成功则"blue_1.png"即为我们需要的材质文件。 |
else if (..) | 如果逻辑表达式非真,则执行该语句…… |
(itemstack.itemID == mod_YourModName.blueStoneLeggings.shiftedIndex | 检索腿部 |
return "/New/armor/blue_2.png"; | 与上文类似 |
return null | 返回空值。 |
明白了吧?没有?⊙﹏⊙b……我们一步一步仔细讲解。
首先需要为护甲创建材质:打开minecraft.jar文件,打开armor文件夹,解压缩其中任意的两个文件(如:cloth_1和cloth_2)。
按您的喜好为这两个文件上色,修改形状,等等。并保存为您之前在getArmorTexture()使用过的文件名字……如blue_1.png和blue_2.png。
创建与之前在getArmorTextureFile()类函数中指向的地址吻合的目录。如我就必须新创建一个文件夹"New"、然后在创建一个"Armor",然后把blue1和blue2放到其中,确保一定要吻合~
打开您的MCP文件夹/jars/bin/minecraft.jar。将这堆东西扔到里面。
想在返回eclipse并运行Minecraft,检查您的MOD是否正常运行。由于您不能在创造模式调用该护甲,所以建议您为其使用泥土制作一份合成表,这样可以在生存模式中方便地检测MOD。如果其工作正常,恭喜您!如果其工作不正常,请返回各处检查代码……