[周边教程]MinecraftMOD制作:从入门到精通精编版

上传人:B****n 文档编号:47172632 上传时间:2021-12-17 格式:DOCX 页数:24 大小:329.56KB
收藏 版权申诉 举报 下载
[周边教程]MinecraftMOD制作:从入门到精通精编版_第1页
第1页 / 共24页
[周边教程]MinecraftMOD制作:从入门到精通精编版_第2页
第2页 / 共24页
[周边教程]MinecraftMOD制作:从入门到精通精编版_第3页
第3页 / 共24页
资源描述:

《[周边教程]MinecraftMOD制作:从入门到精通精编版》由会员分享,可在线阅读,更多相关《[周边教程]MinecraftMOD制作:从入门到精通精编版(24页珍藏版)》请在装配图网上搜索。

1、第一章 学习 Javajava 是什么? java 是一门计算机语言,我相信很多人都知道这一事实,这很可能是由于您曾经玩过由这一语言编译而成的游戏。Java 是一门面向对象的计算机语言,也就是说它由两主要部分组成:字段和方法。那什么是字段和方法呢?我们以人为例:我们可以把一个人比作一个工程(o( _ )o 好像有些类比不当 )。在这个工程中会有许多包,比如“”。在每个包中会包含好多类(我们之后详细阐述),比如说 "ear.java" 就是一个类。现在我们已经知道了字段和方法,那么什么是类呢?我们以之前的 ear.java 为例,这个耳朵类可以诸如“耳垂高度 ”和 “音量 ”

2、等特征,所以一个解决方案是建立如 “listenTo() 和”"moveEars()" 等函数。您可能会问这到底是什么呀,也可能会问这些和Minecraft 到底有神马关系?好吧,以下就是一个例子:方法 / 函数举例1. public int getMaxHealth()2. 3. return 20;4. 复制代码这是 minecraft中 EntityCreeper.java中的一段代码。这段代码非常基本,您只需关心的是如果把返回值20 改为其它的什么东西会发生什么呢?当然您有可能会猜测:嗯,有可能会带来我砍苦力怕多少刀它会死呢?其中的"public"

3、; 表示其它的类也可以调用该函数,"int" 表示该函数为整型函数(在+/-2,147,483,647之间的所有十进制整数)。"getMaxHealth()"为函数名, "return 20" 表示返回值,比如如果有人问这个类:“苦力怕的最大生命值是多少呀?”,它将回答: “是 20”。由于我们在函数头声明了"int" ,所以我们的返回值必须为整数。字段 / 变量举例1. private double velocityY;1复制代码这是在 EntityMinecart 类中所生命的一个字段。 其中 "pr

4、ivate" 表示只有这个类才可以访问这个字段, "double" 表示为一个十进制数, "velocityY" 为这个变量的变量名(字段和变量有时表示同一个东西)。以上就是关于Java 的一些最基本的知识。网络上还有许许多多更为优秀的Java 教程,所以就不再花时间赘述了。相关教程:TheNewBoston's Java (Beginner) ProgrammingTutorialsThe JavaTM Tutorials第二章 计划与头脑风暴再次强调, 这一章非常重要, 有许多准备制作 MOD 的人士 “天赋异禀 ”,最后全都 “楼

5、主我要整合包 ”了。您应该对于这个 MOD 最终能够实现什么功能、 您能做到什么程度有一个明确的计划。可以在脑中对MOD 进行简单地规划,或者对于每一项您所要添加的项目列出一份长达10 页的清单,这都可以,取决于您个人的习惯。需要牢记的事情:从简单之处做起!我见过好多好多人再问楼主类似的问题:“如何让 NPC 自动建筑、谈话、 打猎、去杀末影之龙呀? ”。MOD 制作是一个长期的过程,您也不可能马上就成为高手。正如我之前谈过的,您可以通过学习一些Java 基础知识来了解一些知识,这样可以使您更快地成为高手。所以说要从简单之处入手,先试着为Minecraft 添加一个方块吧。2要有兴趣!请注意,

6、为您喜欢的游戏制作MOD 并不应该成为您的一份工作,在MOD 制作之时您应该能获得成就感与愉悦。虽然当您不能修正错误,或者您的MOD 的反响没有预想中高时难免会灰心丧气,但这只是一时之举。如果您经常性地感到厌倦并没有从中获得乐趣,或许玩 Minecraft 更加适合您吧第二章到此结束第三章:设置工作环境在这章开始之前呢,我们需要提一下forge 。我个人相比较modloader而言更倾向于forge 。您可以在安装之前阅读关于Forge 与 modloader 之间的比较,但是记得总结。有许多工具有助于提高您MOD 的兼容性并使您的MOD 制作之路更为轻松。Forge 可以通过更新支持不同的版

7、本但是modloader只支持对应的版本。所以不要犹豫通过安装FML 和其他一些工具,您可以不需要安装那繁多的API 。如果您有任何问题,请移驾至并加入#MinecraftForge。请参阅本文:准备文件在工作环境中,您需要一份纯净的.minecraft文件夹。可以通过备份您当前.minecraft文件夹,并通过点击"force update"来获得纯净的minecraft文件下载您在开始 MOD 制作之前还需要下载一下这三样东西:最新版本的Eclipse :最新版本的Minecraft ForgeSRC :最新版本的MCP: http:/mcp.ocean-labs.de

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

9、r.jar文件,也放在前文所述的"jars" 文件夹中,如下图所示:4现在返回 MCP 目录下的 “forge 文”件夹,运行 "install.cmd"文件,如果您操作系统不同文件名字也不同。稍等片刻,安装结束后我们继续收尾工作如果您在运行install.bat或者 install.sh 文件时没有任何错误,您现在应该可以开始您的大师之路了。返回Mcp/eclipse文件夹中,复制文件夹的地址,如:X:UsersMitchDesktopModsNewModMCPeclipse。现在您可以通过在您文件解压缩至您所希望的位置的方式安装eclipse 。安装

10、结束之后通过双击eclipse.exe 的方式运行eclipse ,当系统问及您的工作环境时,粘贴之前您复制的Mcp/eclipse文件夹的位置。当加载结束后,需要您找到 “的位”置。第四章:您等待已久的一章我希望您能多加阅读一些Minecraft 的代码,虽然对于一个java 造诣不精人来说,代码有可能显得凌乱,但是不要灰心丧气。第一节:您的第一个方块通过在包内右击任意文件,点击New ->Class 。将其命名为 “mod_YOURMODNAME” ,必须确保其以“mod_”开头,因为只有这样系统才会识别该文件为一个MOD 并开始加载。 无需在底部选择任何的选项,点击 "F

11、inish" 完成创建。此时您会看见一段预先写好的类代码。您的第一件事就是要扩展这个MOD 使之成为一个基本类( BaseMod )。您可以通过添加“extends BaseMod”这样的代码完成类的声明,此时代码如下:1.2.3. public class mod_YourModName extends BaseMod 4.5. 5复制代码当然,此时会在 “mod_YOURMODNAME” 处显示错误,此时将鼠标移至该错误处,在弹出的对话框中单击“Add unimplemented methods ”。此时会在当前的基本类里添加两个类函数: “load与”“getVersion 。

12、”您可以删除掉“/TODO”这种行,在 “getVersion 类”函数中,您需要将 null 替换为 ”1.0或“者其他您喜欢的版本号。您需要保留引用,就如同需要返回一个字符串一样。此时的代码如下所示:1.2.3. public class mod_YourModName extends BaseMod 4.5. Override6. public String getVersion() 7. return "1.0"8. 9.10. Override11. public void load() 12.13. 14.15.复制代码现在您终于可以开始创作您的第一份方块代码啦

13、在类的顶端添加下列代码(在“ 之”内):1. public static Block yourFirstBlock = new BlockTutorial(blockID,0).setHardness(2.5F).setStepSound(Block.soundWoodFootstep).setBlockName ("blockName");复制代码6其中:名称publicstaticBlockyourfirstBLock= new BlockTutorial(blockID, 0).setHardness(2.5F).setStepSound(Block.soundWoo

14、dFootstep).setBlockName("blockName");含义表示所有类均可以访问。表示在类内不创建一个新的实例的条件下即可访问(详情请查阅程)该变量引用 “ Block.java”变量名,叫什么都行此时在 BlockTutorial 类中创建了一个新的实例,由于我们之前没因此会出错。您可以将其改为任何您喜欢的名字,只要之后的名同就可以了。您所传递给BlockTutorial类的信息, 就是方块ID 。您可以在这里成您所希望的任何数值。特别提醒您,在最新版本的Forge 中,调整您的方块 ID ,并将其设置到 137 到 4096 中的一个未使用过您可以在这

15、里查看您的 MOD 与 MOD 的兼容性。之后的 0 稍后会阐述,现在暂且放过它。设置该方块的硬度为2.5 ,您可以随意调整。走在上面的声音,如果您喜欢的话,也可以将“soundWoodFoots“ soundClothFootstep 或者任”何你喜欢的声音。这个变量无关紧要,只是要保证每个的名字不同就可以了。现在您已经掌握了如何新建一个BlockTutorial 类了 ,当然有可能在之前您就把这个名字改掉了现在我们要扩展方块,我们首先需要执行ITextureProvider,当您将如下代码复制进其中时,可以使鼠标悬停在ITextureProvider处并单击导入(import )。1. p

16、ublic class BlockTutorial extends Block implements ITextureProvider 复制代码现在我们需要为我们之前跳过的那部分创建一个构造函数(可以在java 教程中获得更为详实的信息)。1. public BlockTutorial(int i, int j)2. 73. super(i, j, Material.wood);4. 复制代码名称含义BlockTutorial由于是构造函数,此处需与类的名字相同。我们在之前使用(blockID, 0)的声明。更为详细的来说,表示该构造函数使用两个整数变量并(int i, int j)名为 i

17、和 j。super表示需要使用超类来传递方块信息,这也是问什么我们扩展这个类的缘故。可能难以理解但java 教程 o( _ )o(i, j,这是由我们的 MOD 类中继承的将要传给方块的参数,我们同时也传递了Material.wood 是Material.wood);望这个方块在被镐敲击时可以更为容易地被破坏。好,现在您即将进行的步骤是添加一个 Forge 的类函数以便我们可以为这个方块设置材质 。1. public String getTextureFile()2. 3. return "/Mic'sMods/CrossbowMod/gui/Crossbow.png&quo

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

19、emStack(this);86. 7. 复制代码当鼠标悬停至 ArrayList 时可以导入。最后一个类函数可能有些复杂名称含义void表示该函数没有返回值addCreativeItems(ArrayList itemList)类函数和构造函数的名字。不要进行修改,否则会覆盖类函数。if(根据真假不同返回值也不同,如果不懂请多看看教程blockID = mod_ YourModName.逻辑表达式,如果该方块的方块ID 与您创建的方块的方yourFirstBlock.blockID继续itemList.add(new ItemStack(this);在创造模式中可以创建和堆叠这一方块,这条语

20、句不懂亦之后,我们 在 load() 类函数中添加如下语句:1. ModLoader.registerBlock(yourFirstBlock);2. ModLoader.addName(yourFirstBlock, "Woohoo! My first Block :D");复制代码其中:名称含义ModLoader.registerBlock您所调用的类函数(yourFirstBlock)您所使用的方块,确保之前声明过。ModLoader.addName调用另一个类函数,用于添加名字(yourFirstBlock, "Woohoo! My first这里是为您的

21、方块实例赋予名字的地方,您可以在这里写“红石灯( RedstoBlock :D");Lamp ) ” 楼,“主我要整合包 (LouzhuWoyaoZhengheBao)等等”。现在要做一件最为重要的事请:hx940525 ,如果您要查看本帖隐藏内容请回复9您已经为Minecraft制作了一个属于您的 MOD,不再是 MOD 制作小白痴了!无论这个 MOD 多么粗糙和简陋,但都是您在 MOD 制作大师之路的一个见证! 希望当您在成为大师之时蓦然回首还能记得您的第一份作品,无论如何,恭喜您!第四章:您等待已久的一章我希望您能多加阅读一些Minecraft 的代码,虽然对于一个java 造

22、诣不精人来说,代码有可能显得凌乱,但是不要灰心丧气。第二节:为您的方块添加材质在这一部分教程中,将会为您讲述如何为您的方块添加材质。首先您需要一份默认的“子图 ”。所谓 “子图 ”就是一份可以由程序在需要时可以随时加载的图片。在Minecraft中,可以从terrain.png和 items.png中加载材质。实际上,依托于Forge ,您所做的工作即为编辑一张属于您的terrain.png以及 items.png并将您的MOD 与这些子图之间建立联系。再次特意为您精心准备了两张默认的子图(items.png 、terrain.png )。我们可以打开编辑软件(Photoshop 、 Gimp

23、 、Paint.NET (译者强力推荐 ),此时您可以看见256 个紫色方块,现在需要做的就是按照您的喜好绘制图案。请牢记您的材质是 16×16 的,并且按照如下方式排列。10您可能很好奇为什么是从0 开始的呢?好吧,还记得我们之前的“(blockID, 0) 吗”?其中的 “0就”是调用这个文件。如果我们在之前的文档中保持“0不”变就会在加载子图之后您的方块将显示为蓝色的“0方”块,如果我们在代码中将“0改”为 “1,”则在最后您的方块将变为红色“1方”块。当您绘制完您的方块材质后,您需要以 png 格式保存这份子图,否则 Minecraft不会正确加载。还记得之前的“getTex

24、tureFile() 类”函数么, Forge 虽然会自动进行寻找,但还请将子图与代码放在一系列的文件夹内。打开“YourMCPFolder/jars/bin/minecraft.jar并”将文件夹拖入其中,此时getTextureFile()就应该在minecraft.jar内找到您子图所在的位置。这可能有些晦涩难懂, 所以我们需要测试一下您是否真正搞懂了。在我们运行客户端之前还有一件事需要进行:需要 Forge 预加载材质。1. MinecraftForgeClient.preloadTexture("/New/Untitled-1.png");复制代码请确保您在类函数

25、中所输入的文件地址与 getTexture() 所引用地址相同。 我使用 Forge 客户端而不是用普通的 forge 类的原因是材质只是在客户端加载, 不需要服务器端提供支持。现在您就应该看到您的那个大大的0方块啦 11P.S:默认的子图文件下载地址在这里第四章:您等待已久的一章我希望您能多加阅读一些Minecraft 的代码,虽然对于一个java 造诣不精人来说,代码有可能显得凌乱,但是不要灰心丧气。第三节:创建一份合成表在这一节, 我将为您讲述如何创建一份合成表,本章不会有任何下载内容O( _ )O当您已经成功地掌握了前两节的内容,您就已经基本掌握了制作MOD 的基本知识。 现在需要为那

26、些奋斗在生存模式的人们考虑了本节内容十分简单,仅调用一个类函数。所以您可以尝试一下能否自己一个人搞清楚代码,我会将释义附在后面。当然,这些代码完全可以一行写完,但是写成这样子更为直观,就好像您在用工作台进行合成一样。1. ModLoader.addRecipe(new ItemStack(yourFirstBlock), new Object 122. "BBB",3. "BAB",4. "BBB",5. Character.valueOf('A'), Item.diamond,6. Character.valueOf

27、('B'), Block.obsidian7. );复制代码您看懂了么??您当然也可以在合成中使用您自己创建的方块或物品,举例来说," Character.valueOf('A'), yourFirstBlock "即代表之前所述的 “ A为”您所创建的方块。如下图所示:1314以下为一些在编写合成公式时的小技巧:您可以使用空格代表工作台中的空位。1."DDD"," I "," I ",复制代码您可以简化合成公式,这样子无论原材料在工作台内如何放置,只要形状正确即能合成(木板合成工作

28、台就是一例)1."BB","BB",复制代码您可以只使用单一原材料进行合成,也就是说放入一个该方块或物品即可合成您所希望的物品。1. "Z",复制代码第四章:您等待已久的一章我希望您能多加阅读一些Minecraft 的代码,虽然对于一个java 造诣不精人来说,代码有可能显得凌乱,丧气。第四节:生成矿藏现在您可以能会想如何制作一份矿藏呢?如果您希望制作一份矿藏,请不要为其设置可以进行合成的要素不能合成出来的。建议您重新为自己的矿物方块设计一套材质,毕竟在许多灰色的石头中间突然挖到一个蓝色大方块很是诡15据自己使用photoshop或

29、Gimp 的水平进行创作,甚至直接拷贝原版材质并加以修改其中的色调和饱和度也是一选择 .还记得我们在教程之前提到的".setHardness(2.5F)"么?在制作矿藏时这一参数也需要考虑在内:0.1F 意味间摧毁该方块,而1000.0F 则意味着您可以挖到天荒地老。还有一点请注意,此处与您实际进行采矿无任何相关会进行讲解。我们使用 generateSurface()类函数对modloader类函数进行覆盖, 当生成世界时就会调用这个类函数,并进类函数的语句。以下代码将用于您的mod_file :Overriding The ModLoader Method?1. Over

30、ride2. 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. int randPosX = chunkX + random.nextInt(16);3. int randPosY = random.nextInt(20);4. int randPosZ =

31、chunkZ + random.nextInt(16);5.6. 复制代码名称含义16for(.)表示循环,详情请参阅java教程默认的循环语句,您只需要关心其中的“ 20”就可以了,如果您将其设int i = 0; i < 20; i+代表该矿物如同钻石一样珍惜,而将其设置为20 则代表如同煤那样广泛可以将其最大设置为50 左右。int randPosX = chunkX +表示矿藏的确切位置其中变量randPosX用于存储矿藏的X 坐标,而矿脉random.nextInt(16);置则由1 到 16 的一个随机数与区块位置共同决定。不要更改其中的 1int randPosY = ra

32、ndom.nextInt(20);矿脉的 y 坐标由 1 到 20 的一个随机数决定,您可以将20 改为任何一个如矿石就将其设置为16 而煤则为 128。int randPosZ = chunkZ +矿脉的 Z 坐标由变量randPosZ 确定,矿脉的实际位置则由1到16的一random.nextInt(16);与区块位置共同决定。不要更改其中的 16!new WorldGenMinable为 WorldGenMinable 类中添加一个新的实例,该实例主要用于控制生成(this.yourFirstOre.blockID, 8)控制您所生成矿脉的最大矿石数量,最小值为3亦即每个矿脉只生成 1.

33、generate在 WorldGenMinable 中调用 generate 类函数。(world, random, randPosX,''world''为生成世界的名称, 可以由 delaration类函数提供; ''Random的随机场,也由 delaration类函数提供; "Random'' X, Y, Z 为三个整randPosY, randPosZ)用于控制矿脉的位置。我们接下来设置矿藏的硬度等级,也就是说使用何种镐开采这一种矿藏,以下为典型矿石的硬度等级:黑石为 2 。铁矿石为1。在您的 load() 类函

34、数中添加如下代码:Setting Harvest Level?1. MinecraftForge.setBlockHarvestLevel(yourFirstOre, "pickaxe", 3);复制代码此时您的矿藏创建之旅就临近尾声,大家请欣赏我创造的超级恶劣材质的矿藏17P.S:在您重新生成一个世界后(也就是您更改了控制世界生成的变量)如果出现错误, 请先检查区块生成检查代码问题。?d7z65.png(118.59 KB,下载次数 : 14)18第四章:您等待已久的一章我希望您能多加阅读一些Minecraft 的代码,虽然对于一个java 造诣不精人来说,代码有可能显得

35、凌乱,但是不要灰心丧气。第五节:添加烧炼与创建物品在这一节,我们将要为您在上一节创建的矿藏添加烧炼物,以锭为例,因为其相对较为简单。创建物品与创建方块相比非常类似,事实上我们只需要在方块/ 物品的代码中修改一点点的地方即可。我们这次需要创建一个物品对象。New Item Object?1. public static Item yourFirstItem = new ItemTutorial(280).setIconIndex(0).setItemName("item复制代码19与方块相比,除去使用的对象和类不同外其余完全相同。我们此时并没有使用在结构体内添加子图的方法,而是使用 .

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

37、ockID, new ItemStack(yourFirstItem);复制代码其中的第一个参数是输入端,亦即我们之前制作的那个方块,第二个参数为itemStack亦即我们通过熔炉烧炼出的您创建的物品。好啦,您的第一份物品已经通过熔炉烧炼而成了(其实就是一个矿石锭 ),这一章虽然简单,但是却对下一节的教程非常有用,下一节我们讲述如何制作工具第四章:您等待已久的一章我希望您能多加阅读一些Minecraft 的代码,虽然对于一个java 造诣不精人来说,代码有可能显得凌乱,但是不要灰心丧气。第四章第六节:创建一组工具20在接下来的教程中,我们主要集中于讲述如何创建一组工具。这一节要比其他各节都要复

38、杂,所以各位同学打起精神来首先,我们需要为新的工具创建一个EnumToolMaterial 。在您的类中添加如下代码,注意不是在任何的类函数中。New Tool Material?1. static EnumToolMaterial BLUETOOLS = EnumHelper.addToolMaterial("BLUE", 2, 171, 5F, 1, 5);复制代码名称含义我们所引用的Forge 类函数。如果您在此处出现错误,请手动导入EnumHelper.addToolMaterial。以下变量可以进行更改''BLUE''材料名称2您所

39、设定的工具能够正常开采的硬度等级(如黑曜石矿为3、钻石矿为2 、铁矿为171该工具的耐久度(木质工具为59、钻石工具为 1561 )5F使用该工具开采的速度,您可以根据如下数据进行大概地判断(木质工具:2.0F具为 8.0F )1该工具对实体所造成的伤害值,具体计算公式如下(该数值+4 )÷2。(如此时每2.5 颗心。)5可附魔性,此处不确定(石头为5、钻石为 10 、金为22 )第二步,我们需要创建一个新的物品对象:New Items?1. public static Item blueStoneShovel = new BlueStoneSpade(ItemID1, BLUETO

40、OLS).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(&q

41、uot;customAxe");214. 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");复制代码此时会报错,这是由于还没有新建类。

42、BlueStoneSpade我们接下来所要创建的类的名字(ItemID1,为您的铲子所设置的物品ID 。 请记得为您每一个工具都设置一个不同的物品ID !BLUBLUETOOLS)是我们之前建立的 EnumToolMaterial 。.setIconIndex(int)与之前类似,用于设定物品的子图号.setItemName(String)与之前类似,设定物品的内部名称。每个物品都要不同!现在创建一个新的类,此时您应该需要5 个类了。现在我们执行下一步,扩展工具类(不是扩展item 类)。举例来说,我的蓝石铲(BlueStoneSpade)会扩展为ItemSpade 。那么蓝石斧(BlueSt

43、oneAxe) 就应该扩展为ItemAxe ,以此类推。Into load()?1. MinecraftForge.setToolClass(blueStonePickaxe, "pickaxe", 2);2. MinecraftForge.setToolClass(blueStoneShovel, "shovel", 2);3. MinecraftForge.setToolClass(blueStoneAxe, "axe", 2);复制代码调用该类函数可以为我们的物品设置一个恰当的类MinecraftForge.setToolCla

44、ssblueStonePickaxe我们传递的镐的参数,也要记得为您的铲子、斧头进行相应的设置。"pickaxe"小写,工具类型2之前提到的硬度等级,您之前应该通过EnumToolMaterial 进行了硬度等级的设22您只需要为斧、镐、铲进行相应的设置!现在使用 Modloader.addName添加名字,以及参照之前的教程添加合成表好啦,您的蓝石系列工具就出炉啦 我认为 MOD 制作中最为复杂的部分就是绘制一份好看的材质。少年们,用你们手中自己创建的工具挖出个大坑吧第四章:您等待已久的一章我希望您能多加阅读一些Minecraft 的代码,虽然对于一个java 造诣不精人

45、来说,代码有可能显得凌乱,但是不要灰心丧气。第四章第八节:添加多材质方块什么是多材质方块?就是类似草地这样子的方块:绿色的顶部,低端是棕色的,而四周却与上下均不相同。第一步需要为其创建材质。需要绘制至少两幅材质才可以实现多材质的功能,将其放在同一份子图文件下。 确保使用渲染软件将不同的材质渲染在同一方块上使其看起来彼此拼接,毕竟您不希望一个带有紫色边的方块转过去一看编程绿色边了吧在您制作成功材质后实际上代码非常简单,您只需要一个类函数即可:Magical Multi-texture Method?1. Override2. public int getBlockTextureFromSide(int side)3. 4. if (side = 1)5. 6. return 5;237. 8. else if (side = 0)9. 10. return 6;11. 12. else13. 14. return 4;15. 16. 复制代码在这一例程中展示了一份草方块的制作过程。通过使用getBlockTexture()类函数,我们可以调用不同位置的子图。当您看到这一方块时:顶部: 0底部: 1四周: 2、3、4、5请确认您所看到的方块是否与其吻合 (据反馈此处有问题 )好啦,看到这里您已经是 MOD 制作方面的大师了 (至少在理论层面是这样 )恭喜您 O(_)O24

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!