本帖最后由 DJXGAME 于 2012-10-10 12:23 编辑

Forge编程指南:农作物
在本教程将为您讲述如何制作您自己的农作物。


欲添加农作物您首先需要制作一个常规的方块,以下为其代码:




这段代码于其他方块的代码完全相同。其中所走过的声音被设置为草的声音,硬度等级被设置为0.0F,也就是说会被一击分解,此时代码应如下所示:



接下来为您讲解如何制作BlockCropTutorial文件。
首先,将您的鼠标悬停至BlockCropTutorial时点击create 。

此时代码如下:



首先您需要使该文件自BlockFlower。此时会在BlockCropTutorial中出现语法错误,这是由于并没有为该方块添加method的缘故。你所需要添加的method如下所示。



请确保名字与文件名完全相同。
super(par1, par2) 在每一个方块中的作用都是相同的,都是赋予其所继承方块的ID以及材质。lockIndexInTexture = par2; 赋值材质变量(blockIndexIn Texture)
setTickRandomly(true) 赋值为真可以使农作物的生长时间更为随机。
以下两行用于设置植物的碰撞区域。建议您进行反复的调整直至获得您所满意的最佳尺寸。
this.setCreativeTab((CreativeTabs)null); 设置该方块的标签不显示。由于只需要显示种子即可,稍后的教程中会详细进行。
his.disableStats()与 this.setRequiresSelfNotify()为植物所必须的函数,与元数据有关。


需要另行添加一个如下的Method。

此Method控制方块的生长,我们只关心其中的两部分。
第一部分是 par1World.getBlockLightValue.这一method由于控制方块的光照等级。如果您希望您的庄稼只在有阳光的时候生长可以使用此Method。在本例中,庄稼只能在高于9的光照等级下生长。
第二部分为 i < 2。这一部分用于控制农作物的生长过程。在此例中,会生成0、1、2这些元数据。如果您将2替换为3,则会生成元数据3。这些元数据存储了方块生长过程的信息。


在您添加上述代码后,会在getGrowthRate中出现错误。当然修复错误的方法是添加如下method。


这一Method实现两种功能。第一项为控制其生长速度,第二项为确认农作物下方块为其所设置的方块。在本例中所设置方块为草。

为了确保该方块只能在草上才能生长,可以添加如下method。


如果您希望您的农作物可以在使用上生长,请将Block.grass替换为Block.stone。另外,请记得在getGrowthRate中也进行相应替换。


接下来为您讲解如何渲染您的农作物以及修改其掉落物。

首先需要添加如下method。

如果您深谙方块制作之道的话,相信您对上述method不会陌生。


接下来会可能会用到如下method。

该method用于确保该方块以庄稼的形式显示。

为了确保该方块使用正确材质,您需要添加如下method。

par2 为方块的元数据。由于在上文中设置其生长过程为3部。0为开始状态、2为成熟状态。返回值为您像素图中对应的位置。


在这里请确保代码返回值正确,这样才能是您的庄稼如您所愿生长。至于掉落物,需要添加如下method。

par1 为方块的元数据。在本例中需要判断农作是否生长成熟( if (par1 == 2) )而关于掉落物的设置,在之前的教程中已有所涉及故不再赘述。

以下需要添加的两个Method较为重要。第一个method用于种子的掉落设定。

这一method用于设置该方块被破坏时的掉落物。

上述代码中的绝大部分用于设置其掉落位置的随机性和掉落物品的几率。唯一重要的是以EntityItem开头的那句,句中包含诸多变量。最后一个变量为所掉落物品。在本例中被设置为在稍后章节中所讲述的种子。

第二个较为重要的Method为在创造模式中通过在方块上按鼠标中键可以拾取该方块/物品。需要在之后的种子讲解中也添加此method。

此时整个文件如下所示:

接下来会为您讲述如何创建种子文件。您需要在您的Mod中添加一个新的物品,代码如下说示:


在前文中已经展示了如何处理农作物方块。接下来需要为农作物的种子物品添加代码。所添加的代码如下所示:

这段代码为作为种子所必备的代码。


如果您深谙物品制作之道,这段代码您将易如反掌。
唯一的区别在于Itemcropseed之后的设置。第一个参数为ID,第二个参数为对应的庄稼ID,最后一个参数为所放置方块的ID。


此时文件应如下所示。

现在您需要创建 Itemcropseed文件。

该文件需要包含如下。

这段代码中的绝大部分都非常简单。

在tryPlaceIntoWorld method中检查你所点击的是否是第三个参量以及该方块是否暴露在空气中。如果为真则放置第二个参量代表的方块。

接下来为您讲述如何为您的农作物添加骨粉。这其中的一部分代码需要在您的方块文件中完成,另一部分则需要添加进Mod文件中国。以下是方块文件的内容。

以下是Mod文件。

请确保骨粉会改变农作物生长过程对应的元数据。以下是在block文件中所需的method。

其中2为本例中农作物的成熟状态。如果您的农作物的生长状态设置为5此处也应相应地做出修改。此时文件如下所示:

现在您只需要确保当您在使用骨粉时会调用响应的method即可。请在mod文件中添加如下代码。

上述代码中您只能修改TutorialEvent。此时文件如下所示。

其中TutorialEvent类应如下所示。




文章好长,排版好麻烦%>_<%,有错误的话请留言O(∩_∩)O~(注明大概位置哦,不然人家找起来很麻烦的……)
需要转载的话请先留言,不要再直接偷走这篇帖子了……