提供: Minecraft Modding Wiki
このページはModLoaderを使用することを前提に書かれています。
MOBを追加するModのサンプルとして、Mr.Minecraft氏(公式ではThe Playerや"Steve?"と呼ばれるようですが、ここでは便宜上この名前を使用します)を追加するModを示します。
目次
Modを構成するファイル
このModは以下のファイルで構成されています。
- mod_MrMinecraft.java
- Modの本体
- EntityMrMinecraft.java
- Mr.Minecraft氏の動作を定義する
- ModelMrMinecraft.java
- Mr.Minecraft氏の形を定義する
- RenderMrMinecraft.java
- Mr.Minecraft氏の描画を行う
ファイルの内容
mod_MrMinecraft.java
package net.minecraft.src; import java.util.*; public class mod_MrMinecraft extends BaseMod { public mod_MrMinecraft() { super(); } public void load() { ModLoader.registerEntityID(EntityMrMinecraft.class, "Mr.Minecraft", ModLoader.getUniqueEntityId()); ModLoader.addSpawn(EntityMrMinecraft.class, 10, 3, 6,EnumCreatureType.creature); } public String getVersion() { return "1.2.3-a"; } public void addRenderer(Map renderers) { renderers.put(net.minecraft.src.EntityMrMinecraft.class, new RenderMrMinecraft(new ModelMrMinecraft(), 0.5f)); } }
EntityMrMinecraft.java
package net.minecraft.src; public class EntityMrMinecraft extends EntityVillager { public EntityMrMinecraft(World world) { super(world); texture = "/mob/char.png"; } public void readEntityFromNBT(NBTTagCompound par1NBTTagCompound) { super.readEntityFromNBT(par1NBTTagCompound); texture = "/mob/char.png"; } protected int getDropItemId() { return Item.appleRed.shiftedIndex; } }
ModelMrMinecraft.java
package net.minecraft.src; public class ModelMrMinecraft extends ModelBiped { public ModelMrMinecraft() { this(0.0f); } public ModelMrMinecraft(float f) { this(f, 0.0F); } public ModelMrMinecraft(float f, float f1) { super(f, f1); } }
RenderMrMinecraft.java
package net.minecraft.src; public class RenderMrMinecraft extends RenderLiving { public RenderMrMinecraft(ModelBase modelbase, float f) { super(modelbase, f); } public void renderMrMinecraft(EntityMrMinecraft entity, double d, double d1, double d2, float f, float f1) { super.doRenderLiving(entity, d, d1, d2, f, f1); } public void doRenderLiving(EntityLiving entityliving, double d, double d1, double d2, float f, float f1) { renderMrMinecraft((EntityMrMinecraft)entityliving, d, d1, d2, f, f1); } public void doRender(Entity entity, double d, double d1, double d2, float f, float f1) { renderMrMinecraft((EntityMrMinecraft)entity, d, d1, d2, f, f1); } }
解説
新しくMOBを追加するとき、Entity、Model、Renderの3種類のファイルが必要となります。
EntityはMOBの動作を定義し、クリーパーであれば爆発、ニワトリであれば産卵といった処理を記述します。このサンプルでは、Mr.Minecraft氏は村人(EntityVillager)の動作を継承しているため、村人と同じように建築物を出入りしたりゾンビに追いかけられたりします。またテクスチャをデフォルトスキンに設定しています。
ModeはMOBの形を定義します。形はすべて直方体の組み合わせで表されます。このサンプルでは人間型モデル(ModelBiped)を継承しています。オリジナルのModelを作成する際はTechneなどのModel作成ツールを用いるとよいでしょう。
Renderは実際にMOBを描画します。歩行、手を振る、座るなどのモデルの動きもこのファイルで定義されています。このサンプルではデフォルトの描画および動きを継承しています。