kl800.com省心范文网

[周边教程] Minecraft MOD制作:从入门到精通


第一章 学习 Java
java 是什么?java 是一门计算机语言,我相信很多人都知道这一事实,这很可能是由 于您曾经玩过由这一语言编译而成的游戏。Java 是一门面向对象的计算机语言,也就是说 它由两主要部分组成:字段和方法。那什么是字段和方法呢?我们以人为例: 我们可以把一个人比作一个工程(o(∩_∩)o 好像有些类比不当~)。在这个工程中会 有许多包,比如“human.body.head”。在每个包中会包含好多类(我们之后详细阐述),比 如说"ear.java"就是一个类。现在我们已经知道了字段和方法,那么什么是类呢?我们以之 前的 ear.java 为例,这个耳朵类可以诸如“耳垂高度”和“音量”等特征,所以一个解决方案是 建立如“listenTo()”和"moveEars()"等函数。 您可能会问这到底是什么呀,也可能会问这些和 Minecraft 到底有神马关系?好吧,以 下就是一个例子:

方法/函数举例
1. public int getMaxHealth() 2. { 3. 4. } 复制代码 return 20;

这是 minecraft 中 EntityCreeper.java 中的一段代码。这段代码非常基本,您只需关心 的是如果把返回值 20 改为其它的什么东西会发生什么呢?当然您有可能会猜测:嗯,有可 能会带来我砍苦力怕多少刀它会死呢?其中的"public"表示其它的类也可以调用该函数, "int"表示该函数为整型函数(在+/-2,147,483,647 之间的所有十进制整数)。 "getMaxHealth()"为函数名,"return 20"表示返回值,比如如果有人问这个类:“苦力怕的最 大生命值是多少呀?”,它将回答:“是 20~”。由于我们在函数头声明了"int",所以我们的 返回值必须为整数。

字段/变量举例
1. private double velocityY;

复制代码

这是在 EntityMinecart 类中所生命的一个字段。 其中"private"表示只有这个类才可以访 问这个字段,"double"表示为一个十进制数,"velocityY"为这个变量的变量名(字段和变量 有时表示同一个东西)。 以上就是关于 Java 的一些最基本的知识。网络上还有许许多多更为优秀的 Java 教程, 所以就不再花时间赘述了。

相关教程:
?

TheNewBoston's Java (Beginner) Programming Tutorials

?

The JavaTM Tutorials

第二章 计划与头脑风暴
再次强调,这一章非常重要,有许多准备制作 MOD 的人士“天赋异禀”,最后全都“楼

主我要整合包”了。您应该对于这个 MOD 最终能够实现什么功能、您能做到什么程度有一
个明确的计划。可以在脑中对 MOD 进行简单地规划,或者对于每一项您所要添加的项目列 出一份长达 10 页的清单,这都可以,取决于您个人的习惯。

需要牢记的事情:

?

从简单之处做起! 我见过好多好多人再问楼主类似的问题:“如何让 NPC 自动建筑、谈话、打猎、去杀末

影之龙呀?”。MOD 制作是一个长期的过程,您也不可能马上就成为高手。正如我之前谈过 的,您可以通过学习一些 Java 基础知识来了解一些知识,这样可以使您更快地成为高手。 所以说要从简单之处入手,先试着为 Minecraft 添加一个方块吧。

?

要有兴趣! 请注意,为您喜欢的游戏制作 MOD 并不应该成为您的一份工作,在 MOD 制作之时您

应该能获得成就感与愉悦。虽然当您不能修正错误,或者您的 MOD 的反响没有预想中 高 时难免会灰心丧气,但这只是一时之举。如果您经常性地感到厌倦并没有从中获得乐趣,或 许玩 Minecraft 更加适合您吧…… ——第二章到此结束——

第三章:设置工作环境
在这章开始之前呢,我们需要提一下 forge。我个人相比较 modloader 而言更倾向于 forge。您可以在安装之前阅读关于 Forge 与 modloader 之间的比较,但是记得总结。有许 多工具有助于提高您 MOD 的兼容性并使您的 MOD 制作之路更为轻松。Forge 可以通过更 新支持不同的版本但是 modloader 只支持对应的版本。所以不要犹豫通过安装 FML 和其他 一些工具,您可以不需要安装那繁多的 API。如果您有任何问题,请移驾至 esper.net 并加 入#MinecraftForge。

请参阅本文: http://www.mcbbs.net/thread-71071-1-1.html
准备文件

在工作环境中,您需要一份纯净的.minecraft 文件夹。可以通过备份您当前.minecraft 文件夹,并通过点击"force update"来获得纯净的 minecraft 文件

下载
您在开始 MOD 制作之前还需要下载一下这三样东西: ? 最新版本的 Eclipse:
? ?

http://www.eclipse.org/downloads/packages/eclipse-ide-java-developers/junor 最新版本的 Minecraft ForgeSRC:http://www.minecraftforge.net/ 最新版本的 MCP:http://mcp.ocean-labs.de/index.php/MCP_Releases

设置工作环境
首先将 MCP 解压缩至您所希望的位置,我个人的习惯是在桌面新建一个名为"Mods" 的文件夹, 并将 MCP 解压缩至那里。 Forge SRC 的下载文件应该会是一个单独的名为"forge" 的文件夹,将其解压缩至 MCP 目录下的“jars”文件夹里(其实只需要 Bin 和 resources 文件 夹……但是无妨)。由于 Forge 不在依赖 modloader,所以您不再需要安装 modloader 了。 如果您计划制作支持多人生存模式(SSP)的 MOD,您必须要在 http://www.minecraft.net/download 下载 minecraft_server.jar 文件,也放在前文所述的 "jars"文件夹中,如下图所示:

现在返回 MCP 目录下的“forge”文件夹, 运行"install.cmd"文件, 如果您操作系统不同文件名 字也不同。稍等片刻,安装结束后我们继续……

收尾工作
如果您在运行 install.bat 或者 install.sh 文件时没有任何错误,您现在应该可以开始您 的大师之路了。返回 Mcp/eclipse 文件夹中,复制文件夹的地址,如: X:UsersMitchDesktopModsNewModMCPeclipse。现在您可以通过在您文件解压缩至您所希 望的位置的方式安装 eclipse。安装结束之后通过双击 eclipse.exe 的方式运行 eclipse,当系 统问及您的工作环境时,粘贴之前您复制的 Mcp/eclipse 文件夹的位置。当加载结束后,需 要您找到“Client/src/net.minecraft.src/”的位置。

第四章:您等待已久的一章
我希望您能多加阅读一些 Minecraft 的代码,虽然对于一个 java 造诣不精人来说,代 码有可能显得凌乱,但是不要灰心丧气。

第一节:您的第一个方块

通过在 net.minecraft.src 包内右击任意文件,点击 New ->Class。 将其命名为“mod_YOURMODNAME”,必须确保其以“mod_”开头,因为只有这样系统 才会识别该文件为一个 MOD 并开始加载。 无需在底部选择任何的选项, 点击"Finish"完成创 建。 此时您会看见一段预先写好的类代码。 您的第一件事就是要扩展这个 MOD 使之成为一 个基本类(BaseMod)。您可以通过添加“extends BaseMod”这样的代码完成类的声明,此 时代码如下:
1. package net.minecraft.src; 2. 3. public class mod_YourModName extends BaseMod { 4. 5. }

复制代码

当然,此时会在“mod_YOURMODNAME”处显示错误,此时将鼠标移至该错误处,在弹 出的对话框中单击“Add unimplemented methods”。此时会在当前的基本类里添加两个类函 数:“load”与“getVersion”。您可以删除掉“//TODO”这种行,在“getVersion”类函数中,您需 要将 null 替换为”1.0“或者其他您喜欢的版本号。您需要保留引用,就如同需要返回一个字 符串一样。此时的代码如下所示:

1. package net.minecraft.src; 2. 3. public class mod_YourModName extends BaseMod { 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. } 复制代码 } @Override public void load() { } @Override public String getVersion() { return "1.0";

现在您终于可以开始创作您的第一份方块代码啦~
在类的顶端添加下列代码(在“{}”之内):
1. public static Block yourFirstBlock = new BlockTutorial(blockID, 0).setHardness(2.5F).setStepSound(Block.soundWoodFootstep).setBlockName ("blockName"); 复制代码

其中: 名称 public static Block yourfirstBLock = new BlockTutorial 含义 表示所有类均可以访问。

表示在类内不创建一个新的实例的条件下即可访问(详情请查阅 程) 该变量引用“Block.java” 变量名,叫什么都行

此时在 BlockTutorial 类中创建了一个新的实例,由于我们之前没 因此会出错。您可以将其改为任何您喜欢的名字,只要之后的名 同就可以了。

(blockID, 0)

您所传递给 BlockTutorial 类的信息, 就是方块 ID。 您可以在这里 成您所希望的任何数值。特别提醒您,在最新版本的 Forge 中, 调整您的方块 ID,并将其设置到 137 到 4096 中的一个未使用过 您可以在这里查看您的 MOD 与 MOD 的兼容性。 之后的 0 稍后会 阐述,现在暂且放过它。 设置该方块的硬度为 2.5,您可以随意调整。 “soundClothFootstep”或者任何你喜欢的声音。 这个变量无关紧要,只是要保证每个的名字不同就可以了。

.setHardness(2.5F) .setStepSound(Block.soundWoodFootstep) .setBlockName("blockName");

走在上面的声音,如果您喜欢的话,也可以将“soundWoodFoots

现在您已经掌握了如何新建一个 BlockTutorial 类了, 当然有可能在之前
您就把这个名字改掉了…… 现在我们要扩展方块,我们首先需要执行 ITextureProvider,当您将如下代码复制进其 中时,可以使鼠标悬停在 ITextureProvider 处并单击导入(import)。
1. public class BlockTutorial extends Block implements ITextureProvider { 复制代码

现在我们需要为我们之前跳过的那部分创建一个构造函数(可以在 java 教程中获得更 为详实的信息)。
1. public BlockTutorial(int i, int j) 2. {

3. 4. } 复制代码

super(i, j, Material.wood);

名称 BlockTutorial (int i, int j) super (i, j, Material.wood);

含义 由于是构造函数,此处需与类的名字相同。

我们在之前使用(blockID, 0)的声明。更为详细的来说,表示该构造函数使用两个整数变量并 名为 i 和 j。 java 教程 o(∩_∩)o~~

表示需要使用超类来传递方块信息, 这也是问什么我们扩展这个类的缘故。 可能难以理解但

这是由我们的 MOD 类中继承的将要传给方块的参数,我们同时也传递了 Material.wood 是 望这个方块在被镐敲击时可以更为容易地被破坏。

好,现在您即将进行的步骤是添加一个

Forge 的类函数以便我们可以为这

个方块设置材质。
1. public String getTextureFile() 2. { 3. 4. } 复制代码 return "/Mic'sMods/CrossbowMod/gui/Crossbow.png";

切记:不要更改类函数的第一行!乱修改可能覆盖或者替换类函数。 这是一个用于十字弓 MOD 的例子,其中的材质存储在 minecraft.jar 的相应位置中。 您可以很轻松地修改您所使用的材质, 但是如果指向一个空位置则无法进行加载。 当然也要 保证是双引号~ 最后还需要一个 Forge 的类函数将该方块添加至创造模式的物品栏中。
1. public void addCreativeItems(ArrayList itemList) 2. { 3. if(blockID == mod_ YourModName. yourFirstBlock.blockID) 4. 5. { itemList.add(new ItemStack(this));

6. 7. } 复制代码

}

当鼠标悬停至 ArrayList 时可以导入。 最后一个类函数可能有些复杂…… 名称 void addCreativeItems(ArrayList itemList) if( blockID == mod_ YourModName. yourFirstBlock.blockID itemList.add(new ItemStack(this)); 含义 表示该函数没有返回值 类函数和构造函数的名字。不要进行修改,否则会覆盖 类函数。 根据真假不同返回值也不同,如果不懂请多看看教程

逻辑表达式,如果该方块的方块 ID 与您创建的方块的方 继续

在创造模式中可以创建和堆叠这一方块,这条语句不懂亦

之后,我们在

load()类函数中添加如下语句:

1. ModLoader.registerBlock(yourFirstBlock); 2. ModLoader.addName(yourFirstBlock, "Woohoo! My first Block :D"); 复制代码

其中: 名称 ModLoader.registerBlock (yourFirstBlock) ModLoader.addName 含义 您所调用的类函数 您所使用的方块,确保之前声明过。 调用另一个类函数,用于添加名字

(yourFirstBlock, "Woohoo! My first 这里是为您的方块实例赋予名字的地方,您可以在这里写“红石灯(Redsto Lamp)”,“楼主我要整合包~(LouzhuWoyaoZhengheBao)”等等。 Block :D");

现在要做一件最为重要的事请:
hx940525,如果您要查看本帖隐藏内容请回复

您已经为 Minecraft 制作了一个属于您 的 MOD,不再是 MOD 制作小白痴了! 无论这个 MOD 多么粗糙和简陋, 但都是 您在 MOD 制作大师之路的一个见证! 希 望当您在成为大师之时蓦然回首还能记 得您的第一份作品,无论如何,恭喜 您!!! 第四章:您等待已久的一章
我希望您能多加阅读一些 Minecraft 的代码,虽然对于一个 java 造诣不精人来说,代 码有可能显得凌乱,但是不要灰心丧气。

第二节:为您的方块添加材质

在这一部分教程中,将会为您讲述如何为您的方块添加材质。 首先您需要一份默认的“子图”。 所谓“子图”就是一份可以由程序在需要时可以随时加载 的图片。在 Minecraft 中,可以从 terrain.png 和 items.png 中加载材质。实际上,依托于 Forge,您所做的工作即为编辑一张属于您的 terrain.png 以及 items.png 并将您的 MOD 与 这些子图之间建立联系。再次特意为您精心准备了两张默认的子图(items.png、 terrain.png)。 我们可以打开编辑软件(Photoshop、Gimp、Paint.NET(译者强力推荐~)),此时 您可以看见 256 个紫色方块,现在需要做的就是按照您的喜好绘制图案。请牢记您的材质 是 16× 16 的,并且按照如下方式排列。

您可能很好奇为什么是从 0 开始的呢?好吧,还记得我们之前的“(blockID, 0)”吗?其 中的“0”就是调用这个文件。如果我们在之前的文档中保持“0”不变就会在加载子图之后您的 方块将显示为蓝色的“0”方块, 如果我们在代码中将“0”改为“1”, 则在最后您的方块将变为红 色“1”方块。 当您绘制完您的方块材质后, 您需要以 png 格式保存这份子图, 否则 Minecraft 不会正 确加载。还记得之前的“getTextureFile()”类函数么,Forge 虽然会自动进行寻找,但还请将 子图与代码放在一系列的文件夹内。打开“YourMCPFolder/jars/bin/minecraft.jar”并将文件 夹拖入其中,此时 getTextureFile()就应该在 minecraft.jar 内找到您子图所在的位置。这可 能有些晦涩难懂, 所以我们需要测试一下您是否真正搞懂了。 在我们运行客户端之前还有一 件事需要进行: ——需要 Forge 预加载材质。
1. MinecraftForgeClient.preloadTexture("/New/Untitled-1.png"); 复制代码

请确保您在类函数中所输入的文件地址与 getTexture()所引用地址相同。 我使用 Forge 客户端而不是用普通的 forge 类的原因是材质只是在客户端加载, 不需要服务器端提供支持。 现在您就应该看到您的那个大大的 0 方块啦~

P.S:
默认的子图文件下载地址在这里

第四章:您等待已久的一章
我希望您能多加阅读一些 Minecraft 的代码,虽然对于一个 java 造诣不精人来说,代 码有可能显得凌乱,但是不要灰心丧气。

第三节:创建一份合成表

在这一节, 我将为您讲述如何创建一份合成表, 本章不会有任何下载内容 O(∩_∩)O~ 当您已经成功地掌握了前两节的内容,您就已经基本掌握了制作 MOD 的基本知识。现 在需要为那些奋斗在生存模式的人们考虑了~ 本节内容十分简单,仅调用一个类函数。所以您可以尝试一下能否自己一个人搞清楚 代码, 我会将释义附在后面。 当然, 这些代码完全可以一行写完, 但是写成这样子更为直观, 就好像您在用工作台进行合成一样。

1. ModLoader.addRecipe(new ItemStack(yourFirstBlock), new Object[] {

2. 3. 4. 5. 6. 7. }); 复制代码

"BBB", "BAB", "BBB", Character.valueOf('A'), Item.diamond, Character.valueOf('B'), Block.obsidian

您看懂了么?
?

您当然也可以在合成中使用您自己创建的方块或物品,举例来说, "Character.valueOf('A'), yourFirstBlock"即代表之前所述的“A”为您所创建的方块。 如下图所示:

以下为一些在编写合成公式时的小技巧:

您可以使用空格代表工作台中的空位。
1. 复制代码 "DDD", " I ", " I ",

您可以简化合成公式,这样子无论原材料在工作台内如何放置,只要形状正确即能合 成(木板合成工作台就是一例)
1. 复制代码 "BB", "BB",

您可以只使用单一原材料进行合成,也就是说放入一个该方块或物品即可合成您所希 望的物品。
1. "Z", 复制代码

第四章:您等待已久的一章

我希望您能多加阅读一些 Minecraft 的代码,虽然对于一个 java 造诣不精人来说,代码有可能显得凌乱, 丧气。

第四节:生成矿藏

现在您可以能会想如何制作一份矿藏呢?如果您希望制作一份矿藏,请不要为其设置可以进行合成的要素 不能合成出来的。

建议您重新为自己的矿物方块设计一套材质,毕竟在许多灰色的石头中间突然挖到一个蓝色大方块很是诡

据自己使用 photoshop 或 Gimp 的水平进行创作,甚至直接拷贝原版材质并加以修改其中的色调和饱和度也是一 选择.

还记得我们在教程之前提到的".setHardness(2.5F)"么?在制作矿藏时这一参数也需要考虑在内: 0.1F 意味

间摧毁该方块,而 1000.0F 则意味着您可以挖到天荒地老。还有一点请注意,此处与您实际进行采矿无任何相关 会进行讲解。

我们使用 generateSurface()类函数对 modloader 类函数进行覆盖, 当生成世界时就会调用这个类函数, 并 进类函数的语句。以下代码将用于您的 mod_file:

Overriding The ModLoader Method ?

1. @Override 2. public void generateSurface(World world, Random random, int chunkX, int chunkZ) 3. { 4. 5. } 复制代码

再次强调,不要做任何修改,因为您的任何改动都会带来不可知的结果。 现在需要再去中添加一个循环语句: Generation For Loop ?
1. for(int i = 0; i < 20; i++) { 2. 3. 4. 5. int randPosX = chunkX + random.nextInt(16); int randPosY = random.nextInt(20); int randPosZ = chunkZ + random.nextInt(16);

new WorldGenMinable(this.yourFirstOre.blockID, 8).generate(world, random, randPosX, ran randPosZ);

6. } 复制代码

名称]

含义

for(..)

表示循环,详情请参阅 java 教程

int i = 0; i < 20; i++

默认的循环语句,您只需要关心其中的“20”就可以了,如果您将其设 代表该矿物如同钻石一样珍惜,而将其设置为 20 则代表如同煤那样广泛 可以将其最大设置为 50 左右。

int randPosX = chunkX + random.nextInt(16); int randPosY = random.nextInt(20); int randPosZ = chunkZ + random.nextInt(16); new WorldGenMinable (this.yourFirstOre.blockID, 8) .generate (world, random, randPosX, randPosY, randPosZ)

表示矿藏的确切位置其中变量 randPosX 用于存储矿藏的 X 坐标, 而矿脉 置则由 1 到 16 的一个随机数与区块位置共同决定。不要更改其中的 16

矿脉的 y 坐标由 1 到 20 的一个随机数决定,您可以将 20 改为任何一个 如矿石就将其设置为 16 而煤则为 128。

矿脉的 Z 坐标由变量 randPosZ 确定,矿脉的实际位置则由 1 到 16 的一 与区块位置共同决定。不要更改其中的 16!

为 WorldGenMinable 类中添加一个新的实例,该实例主要用于控制生成

控制您所生成矿脉的最大矿石数量,最小值为 3 亦即每个矿脉只生成 1 在 WorldGenMinable 中调用 generate 类函数。

''world''为生成世界的名称, 可以由 delaration 类函数提供; ''Random 的随机场,也由 delaration 类函数提供;"Random'' X, Y, Z 为三个整
用于控制矿脉的位置。

我们接下来设置矿藏的硬度等级,也就是说使用何种镐开采这一种矿藏,以下为典型矿石的硬度等级:黑 石为 2。铁矿石为 1。 在您的 load()类函数中添加如下代码: Setting Harvest Level ?

1. MinecraftForge.setBlockHarvestLevel(yourFirstOre, "pickaxe", 3); 复制代码

此时您的矿藏创建之旅就临近尾声,大家请欣赏我创造的超级恶劣材质的矿藏~

P.S:在您重新生成一个世界后(也就是您更改了控制世界生成的变量)如果出现错误,请先检查区块生成 检查代码问题。~ ?

d7z65.png (118.59 KB, 下载次数: 14)

第四章:您等待已久的一章
我希望您能多加阅读一些 Minecraft 的代码,虽然对于一个 java 造诣不精人来说,代 码有可能显得凌乱,但是不要灰心丧气。

第五节:添加烧炼与创建物品
在这一节,我们将要为您在上一节创建的矿藏添加烧炼物,以锭为例,因为其相对较 为简单。 创建物品与创建方块相比非常类似,事实上我们只需要在方块/物品的代码中修改一点 点的地方即可。我们这次需要创建一个物品对象。 New Item Object ?

1. public static Item yourFirstItem = new ItemTutorial(280).setIconIndex(0).setItemName("item 复制代码

与方块相比,除去使用的对象和类不同外其余完全相同。我们此时并没有使用在结构 体内添加子图的方法,而是使用.setlconindex(int)类函数,.setitemName 与其相同,即使这 些并没有在游戏中出现,但也应该与您的方块不同。 现在我们创建 ItemTutorial 类,代码与前文所述 BlockTutorial 类的代码完全相同(您 可以自行更改类的名称)。此时只需要扩展 item 类,注意并不需要覆盖 addCreativeItems 类函数。 使用 Modloader.addName()类函数、预加载子图(如果您方块和物品使用不同子图重 新预加载的话需要) 在 load()函数中添加如下代码: Into load() ?

1. ModLoader.addSmelting(yourFirstOre.blockID, new ItemStack(yourFirstItem)); 复制代码

其中的第一个参数是输入端,亦即我们之前制作的那个方块,第二个参数为 itemStack 亦即我们通过熔炉烧炼出的您创建的物品。 好啦,您的第一份物品已经通过熔炉烧炼而成了(其实就是一个矿石锭~),这一章虽 然简单,但是却对下一节的教程非常有用,下一节我们讲述如何制作工具

第四章:您等待已久的一章
我希望您能多加阅读一些 Minecraft 的代码,虽然对于一个 java 造诣不精人来说,代 码有可能显得凌乱,但是不要灰心丧气。

第四章第六节:创建一组工具

在接下来的教程中,我们主要集中于讲述如何创建一组工具。这一节要比其他各节都 要复杂,所以各位同学打起精神来~~ 首先,我们需要为新的工具创建一个 EnumToolMaterial。在您的类中添加如下代码, 注意不是在任何的类函数中。 New Tool Material ?

1. static EnumToolMaterial BLUETOOLS = EnumHelper.addToolMaterial("BLUE", 2, 171, 5F, 1, 5); 复制代码

名称

含义 我们所引用的 Forge 类函数。如果您在此处出现错误,请手动导入

EnumHelper.addToolMaterial net.minecraft.forge.EnumHelper。 以下变量可以进行更改 ''BLUE'' 2 171 5F 1 5 材料名称

您所设定的工具能够正常开采的硬度等级(如黑曜石矿为 3、钻石矿为 2、铁矿为 该工具的耐久度(木质工具为 59、钻石工具为 1561)

使用该工具开采的速度,您可以根据如下数据进行大概地判断(木质工具:2.0F 具为 8.0F)

该工具对实体所造成的伤害值,具体计算公式如下(该数值+4)÷ 2。(如此时每 2.5 颗心。) 可附魔性,此处不确定(石头为 5、钻石为 10、金为 22)

第二步,我们需要创建一个新的物品对象: New Items ?

1. public static Item blueStoneShovel = new BlueStoneSpade(ItemID1, BLUETOOLS).setIconIndex(0).setItemName("customShovel"); 2. public static Item blueStonePickaxe = new BlueStonePickaxe(ItemID2, BLUETOOLS).setIconIndex(1).setItemName("customPickaxe"); 3. public static Item blueStoneAxe = new BlueStoneAxe(ItemID3, BLUETOOLS).setIconIndex(2).setItemName("customAxe");

4. public static Item blueStoneHoe = new BlueStoneHoe(ItemID5, BLUETOOLS).setIconIndex(4).setItemName("customHoe"); 5. public static Item blueStoneSword = new BlueStoneSword(ItemID4, BLUETOOLS).setIconIndex(3).setItemName("customSword"); 复制代码

此时会报错,这是由于还没有新建类。 BlueStoneSpade (ItemID1, BLUETOOLS) .setIconIndex(int) .setItemName(String) 我们接下来所要创建的类的名字

为您的铲子所设置的物品 ID。请记得为您每一个工具都设置一个不同的物品 ID!BLU 是我们之前建立的 EnumToolMaterial。 与之前类似,用于设定物品的子图号 与之前类似,设定物品的内部名称。每个物品都要不同!

现在创建一个新的类,此时您应该需要 5 个类了。现在我们执行下一步,扩展工具类 (不是扩展 item 类)。 举例来说,我的蓝石铲(BlueStoneSpade)会扩展为 ItemSpade。那么蓝石斧 (BlueStoneAxe)就应该扩展为 ItemAxe,以此类推。 Into load() ?

1. MinecraftForge.setToolClass(blueStonePickaxe, "pickaxe", 2); 2. MinecraftForge.setToolClass(blueStoneShovel, "shovel", 2); 3. MinecraftForge.setToolClass(blueStoneAxe, "axe", 2); 复制代码

MinecraftForge.setToolClass blueStonePickaxe "pickaxe" 2

调用该类函数可以为我们的物品设置一个恰当的类 我们传递的镐的参数,也要记得为您的铲子、斧头进行相应的设置。 小写,工具类型

之前提到的硬度等级,您之前应该通过 EnumToolMaterial 进行了硬度等级的设

您只需要为斧、镐、铲进行相应的设置! 现在使用 Modloader.addName 添加名字,以及参照之前的教程添加合成表~ 好啦,您的蓝石系列工具就出炉啦~我认为 MOD 制作中最为复杂的部分就是绘制一份 好看的材质。。。。 少年们,用你们手中自己创建的工具挖出个大坑吧~~~

第四章:您等待已久的一章
我希望您能多加阅读一些 Minecraft 的代码,虽然对于一个 java 造诣不精人来说,代 码有可能显得凌乱,但是不要灰心丧气。

第四章第八节:添加多材质方块

什么是多材质方块?就是类似草地这样子的方块:绿色的顶部,低端是棕色的,而四 周却与上下均不相同。 第一步需要为其创建材质。需要绘制至少两幅材质才可以实现多材质的功能,将其放 在同一份子图文件下。 确保使用渲染软件将不同的材质渲染在同一方块上使其看起来彼此拼 接,毕竟您不希望一个带有紫色边的方块转过去一看编程绿色边了吧…… 在您制作成功材质后实际上代码非常简单,您只需要一个类函数即可: Magical Multi-texture Method ?
1. @Override 2. public int getBlockTextureFromSide(int side) 3. { 4. 5. 6. if (side == 1) { return 5;

7. 8. 9. 10. 11. 12. 13. 14. 15. 16. } 复制代码

} else if (side == 0) { return 6; } else { return 4; }

在这一例程中展示了一份草方块的制作过程。通过使用 getBlockTexture()类函数,我 们可以调用不同位置的子图。 当您看到这一方块时: 顶部:0 底部:1 四周:2、3、4、5 请确认您所看到的方块是否与其吻合~~(据反馈此处有问题……)

好啦, 看到这里您已经是 MOD 制作方 面的大师了~~(至少在理论层面是这样 ~~~)恭喜您 O(∩_∩)O~


[周边教程] Minecraft MOD制作:从入门到精通_图文.doc

[周边教程] Minecraft MOD制作:从入门到精通 - MC mod制作介绍,不算全面,2w字左右... [周边教程] Minecraft MOD制作:从入门到精通_电脑基础知识_IT/计算机_专业...

我的世界MOD怎么做 mod开发教程 制作一个基于Forge的MOD.pdf

《文明6》mod制作图文教程 从零开始的mod制作之路 512人 游戏入库/用户福利合作...右键项目中的minecraft,选择New->Package来创建一个Package。 那么此时你的Eclipse...

MCreator系列教程-第九章 发布你的第一个MOD_图文.doc

将 MOD 放入装着 Forge 的 Minecraft 的 文件夹内,然后运行游戏。 运行成功并出现 MOD 的物品则视为 MOD 制作完成,至此你可以发布你的 MOD 了。 本期教程到...

minecraft五难题mod教程.doc

minecraft五难题mod教程_天文/地理_自然科学_专业资料...一击将目标生物的生命降到最大生命的 3/4(对末影...右键探测周围的生物并显示其名字、方向以及距离 紧闭...

Minecraft和风MOD合成表.doc

Minecraft和风MOD合成表_游戏_生活休闲。 老衲找的一些图,希望可以帮

怎么制作mod_图文.doc

怎么制作mod_计算机软件及应用_IT/计算机_专业资料。...所以说要从简单之处入手,先试着为 Minecraft 添加...详情请参阅 java 教程 默认的循环语句, 您只需要...

《MineCraft》我的世界新手入门必备攻略教程_图文攻略_全通关攻略....pdf

我的世界活塞门教程 活塞门图文制作攻略 5322人 我...默认的实体id空间从0到200(注意中间有空白区域),...请使用对应minecraft版本的mod。除了minecraft的版本,...

mcMOD飞机制作.doc

Space = 向上看 Left Shift = 向下看 E = 离开机舱 R = 库存 Left Control = 射击 C = 空投炸弹 以上控制可以在.minecraft/config/mod_Planes.cfg 中修改...

《我的世界》神奇宝贝MOD教程.doc

安装吧手游 http://www.setup8.com 我的世界中有许多的 MOD 可以让玩家来游玩, 下面是关于我的世界像素妖怪 (神奇宝贝) 的 MOD 教程,让我们一起来了解下吧...

minecraft家具MOD说明与合成_图文攻略_全通关攻略_高分攻略.doc

我的世界家具MOD下载 6071人 我的世界怎么制作别墅家具 别墅家具合成图鉴 1978人 游戏入库/用户福利合作请联系: minecraft家具MOD说明与合成szg...

我的世界吸血鬼MOD吸血鬼怎么升级 升级教程_图文攻略_全通关攻略_....pdf

我的世界吸血鬼MOD吸血鬼升级教程。下面就和小编一...一直到4级都是这样! 然后从5级到6级就要用阵法!...Minecraft我的世界方块代码大全物品ID... 我的世界0...

我的世界电脑版1.7.10自动售货机MOD下载_图文攻略_全通关攻略_....pdf

我的世界自动售货机怎么制作 自动售货机制作图文教程 4329人 我的世界自动售...1.找到MOD目录,首先玩家需要先找到MOD路径,路径如下。游戏安装目录\.minecraft\...

我的世界1.7.10工业1mod教程_图文.doc

我的世界1.7.10工业1mod教程_游戏_生活休闲。该...这个才是真正无人电站 只要在水电站附近有 3X3X3 ...上面这三坨东西分别是(从左到右) 1:低压中...

我的世界吸血鬼怎么升级 吸血鬼MOD升级教程_图文攻略_全通关攻略_....pdf

下面小编为大家详细讲解我的世界吸血鬼MOD升级教程,...Minecraft我的世界方块代码大全物品ID... 我的世界0...我的世界怎么制作烟花烟花合成攻略详解 我的世界-物品...

我的世界mod怎么用 安装过程图文详解_图文攻略_全通关攻略_高分....pdf

下载完成后,将启动器移动到之前你下载MC文件夹中 切记,要与minecraft在同一个... 我的世界mod安装教程 9310人 我的世界怎么做 多种剑图文合成攻略详解...

Minecraft 暮色森林mod 教程_图文.doc

Minecraft 暮色森林mod 教程_游戏_生活休闲。我的世界 我的世界暮色森林 MOD 教程详解由魔方网夏天带来,我的世界暮色森林 MOD 教程详解主 要给小伙伴们讲的是 ...

Minecraft群恋传说mod介绍_图文.doc

Minecraft群恋传说mod介绍_游戏_生活休闲。群恋传说...我的世界小型大炮制作教程 我的世界国外牛的制作顶级...如果你在一个被驯服的动物附近, 可以输入 /transfer...

我的世界pe,Minecraftpe方块启动器教程,js,mod,材质包,皮肤_图文....doc

我的世界手机版怎么制作皮肤 pe版皮肤制作教程 13371人 游戏入库/用户福利合作请联系: 我的世界pe,Minecraftpe方块启动器教程,js,mod,材质包,皮肤house...

我的世界智能村民mod中村民职业详解_图文攻略_全通关攻略_高分....pdf

我的世界mod怎么安装 mod安装教程详细分析 6060人 ...智能村民mod中村民职业详解,希望诸位minecraft我的世界...村民就会自动变成伐木工为我们砍伐村庄周围的树,还会...

我的世界阿基米德的船mod图文教程 非常简单哦_图文攻略_全通关....pdf

Minecraft我的世界新手快速入门图文教程 8434人 ...(复制粘贴一份原客户端到其它盘既可,建议每次装MOD...我的世界怎么制作烟花烟花合成攻略详解 我的世界-物品...