本帖最后由 DJXGAME 于 2013-1-30 17:00 编辑

原文地址: http://minecraftmodding.wikkii.com/wiki/Making_an_new_entity_using_modloader_(Penguin)
PS:为方便大家使用,所有关键位置均使用中英双语翻译。

使用Modloader生成实体(企鹅篇)



Modloader


  1. package net.minecraft.src;
  2. import java.util.*;
  3. import java.util.Map;

  4. public class mod_Penguin extends BaseMod
  5. {
  6.         
  7.     public mod_Penguin()
  8.     {
  9.                 ModLoader.RegisterEntityID(EntityPenguin.class, "Penguin", ModLoader.getUniqueEntityId()); //This registers the entity
  10.                
  11.                 ModLoader.AddSpawn("Penguin", 3, EnumCreatureType.creature,new BiomeGenBase[] {
  12.                                 BiomeGenBase.iceDesert,
  13.                                 BiomeGenBase.taiga,
  14.                                 BiomeGenBase.tundra                          
  15.                 });

  16.                               
  17.   
  18.     }
  19.         
  20.         // RENDERERS
  21.         public void AddRenderer(Map map)
  22.     {
  23.         map.put(EntityPenguin.class, new RenderPenguin(new ModelPenguin(), 0.5F)); // this assigns the Entity class to the renderer and model class.
  24.     }

  25.     public String Version()
  26.     {
  27.         return "Penguin Mod 1.0"; //this can be whatever you like
  28.     }

  29. }
复制代码
  1. ModLoader.AddSpawn(java.lang.String entityName, int weightedProb, lg spawnList, new BiomeGenBase[] { biomes })
复制代码

[/spoiler]
这一段代码是将该生物添加至Minecraft的生成名单中,其中
"WeightedPro"代表着该生物的生成几率。
"SpawnList"代表生物种类
  • EnumCreatureType.creature 为动物(典型生物:猪)
  • EnumCreatureType.monster 为敌人(典型生物:僵尸)
  • ENumCreatureType.watercreature 为水生生物(典型生物:墨鱼)
"BiomeGenBase"为指向生物所在生物群戏的指针。
  • BiomeGenBase.savanna        热带草原
  • BiomeGenBase.swampland    沼泽
  • BiomeGenBase.shrubland      灌木林地
  • BiomeGenBase.plains             平原
  • BiomeGenBase.iceDesert       冰漠
  • BiomeGenBase.taiga              针叶林
  • BiomeGenBase.forest            森林
  • BiomeGenBase.seasonalForest      季节性森林
  • BiomeGenBase.rainforest      雨林
  • BiomeGenBase.desert           沙漠

[/spoiler]


生成实体(entity)文件

实体文件决定了该生物所使用的材质、声音、AI、掉落物以及其他您所希望实现的功能

  1. package net.minecraft.src;

  2. public class EntityPenguin extends EntityAnimals
  3. {

  4.     public EntityPenguin(World world)
  5.     {
  6.         super(world);
  7.         texture = "Penguin/Penguin.png"; //this set the texture the mobs going to use
  8.         setSize(1.5F, 1.9F); // this sets the HIT AREA of the mob.
  9.     }

  10.     public void writeEntityToNBT(NBTTagCompound nbttagcompound)
  11.     {
  12.         super.writeEntityToNBT(nbttagcompound); // this saves the mob to disk
  13.     }

  14.     public void readEntityFromNBT(NBTTagCompound nbttagcompound)
  15.     {
  16.         super.readEntityFromNBT(nbttagcompound); // this loads the mob from disk
  17.     }

  18.     protected String getLivingSound()
  19.     {
  20.         return null; //Living sound of the mob
  21.     }

  22.     protected String getHurtSound()
  23.     {
  24.         return null; //Hurt sound of the mob
  25.     }

  26.     protected String getDeathSound()
  27.     {
  28.         return null; //Death sound of the mob
  29.     }

  30.     protected float getSoundVolume()
  31.     {
  32.         return 0.4F;
  33.     }

  34.     protected int getDropItemId()
  35.     {
  36.         return 0; //this is the item id of the drop for example  Item.porkchop.shiftedIndex
  37.     }
  38. }
复制代码

企鹅模型

以前文所述的企鹅模型为例,如果需要也可以在此处下载。


企鹅模型的渲染


如果不熟悉操作请不要编辑此处!!


  1. package net.minecraft.src;


  2. public class RenderPenguin extends RenderLiving
  3. {

  4.     public RenderPenguin(ModelBase modelbase, float f)
  5.     {
  6.         super(modelbase, f);
  7.     }

  8.     public void func_177_a(EntityPenguin entitypenguin, double d, double d1, double d2,
  9.             float f, float f1)
  10.     {
  11.         super.doRenderLiving(entitypenguin, d, d1, d2, f, f1);
  12.     }

  13.     public void doRenderLiving(EntityLiving entityliving, double d, double d1, double d2,
  14.             float f, float f1)
  15.     {
  16.         func_177_a((EntityPenguin)entityliving, d, d1, d2, f, f1);
  17.     }

  18.     public void doRender(Entity entity, double d, double d1, double d2,
  19.             float f, float f1)
  20.     {
  21.         func_177_a((EntityPenguin)entity, d, d1, d2, f, f1);
  22.     }
  23. }
复制代码