提供: Minecraft Modding Wiki
移動先: 案内検索

警告: ログインしていません。編集を行うと、あなたの IP アドレスが公開されます。ログインまたはアカウントを作成すれば、あなたの編集はその利用者名とともに表示されるほか、その他の利点もあります。

この編集を取り消せます。 下記の差分を確認して、本当に取り消していいか検証してください。よろしければ変更を保存して取り消しを完了してください。
最新版 編集中の文章
1行目: 1行目:
{{前提MOD|reqmod="Minecraft Forge Universal 9.10.0.871~"}}
 
{{ チュートリアル難易度 | difficulty=1 |clear=none}}
 
{{チュートリアルカテゴリー|type=Entity| difficulty=1}}
 
'''このページは、編集中です。'''
 
 
==MOBの追加==
 
==MOBの追加==
EntityLivingを継承して、MOBを追加します。
 
モデルやAIも実装します
 
===ソースコード===
 
*SampleEntityCore.java
 
<source lang="java">
 
package mods.entity;
 
 
import cpw.mods.fml.client.registry.RenderingRegistry;
 
import cpw.mods.fml.common.FMLCommonHandler;
 
import cpw.mods.fml.common.Mod;
 
import cpw.mods.fml.common.event.FMLInitializationEvent;
 
import cpw.mods.fml.common.registry.EntityRegistry;
 
import cpw.mods.fml.relauncher.Side;
 
import net.minecraft.entity.EnumCreatureType;
 
import net.minecraft.world.biome.BiomeGenBase;
 
 
@Mod(modid = "SampleEntity", name = "SampleEntity", version = "1.0.0")
 
public class SampleEntityCore {
 
    @EventHandler
 
    public void init(FMLInitialization event) {
 
        EntityRegistry.registerModEntity(EntitySample.class, "SampleEntity", 0, this, 250, 1, false);
 
        EntityRegistry.addSpawn(EntitySample.class, 20, 1, 4, EnumCreatureType.creature, BiomeGenBase.plains);
 
        if(FMLCommonHandler.instance().getSide() == Side.CLIENT) {
 
RenderingRegistry.registerEntityRenderingHandler(EntitySample.class, new RenderSample());
 
        }
 
}
 
</source>
 
 
*EntitySample.java
 
<source lang="java">
 
package mods.entity;
 
 
import net.minecraft.block.Block;
 
import net.minecraft.entity.EnumCreatureAttribute;
 
import net.minecraft.entity.EntityLiving;
 
import net.minecraft.entity.ai.EntityAIWander;
 
import net.minecraft.entity.ai.EntityAILookIdle;
 
import net.minecraft.init.Items;
 
import net.minecraft.item.Item;
 
import net.minecraft.world.World;
 
 
 
public class EntitySample extends EntityCreature {
 
    public EntitySample(World world) {
 
        super(world);
 
        // うろうろ移動するAIの追加
 
this.tasks.addTask(1, new EntityAIWander(this, 1.0D));
 
// 見回すAIの追加
 
this.tasks.addTask(2, new EntityAILookIdle(this));
 
    }
 
 
    @Override
 
    public boolean isAIEnabled() { return true; }
 
 
    @Override
 
    public String getLivingSound() { return /* MOBが生きている時の音のファイルパスを返す。 */ ; }
 
 
    @Override
 
    public String getHurtSound() { return /* MOBがダメージを受けた時の音のファイルパスを返す。 */ ; }
 
 
    @Override
 
    public String getDeathSound() { return /* MOBが死亡した時の音のファイルパスを返す。*/ ; }
 
 
    /*
 
    * このMobが動いているときの音のファイルパスを返す.
 
    * 引数のblockはMobの下にあるBlock.
 
    */
 
    @Override
 
    protected void func_145780_a(int x, int y, int z, Block block)
 
    {
 
this.playSound("mob.skeleton.step", 0.15F, 1.0F);
 
    }
 
 
  @Override
 
    public EnumCreatureAttribute getCreatureAttribute() { return EnumCreatureAttribute.UNDEFINED; }
 
 
    @Override
 
    public Item getDropItem() { return /* ドロップするアイテム */ ; }
 
}
 
</source>
 
*RenderSample.java
 
<source lang="java">
 
package mods.entity;
 
 
import net.minecraft.client.renderer.entity.RenderBiped;
 
import net.minecraft.entity.EntityLiving;
 
import net.minecraft.util.ResourceLocation;
 
 
public class RenderSample extends Render {
 
    public static final ResourceLocation texture = new ResourceLocation("entity:textures/entity/sample.png");
 
    public RenderSample() {
 
        // 引数:(ModelBase以降を継承したクラスのインスタンス、影の大きさ)
 
        super(new ModelSample(), 0.6f);
 
    }
 
 
    public ResourceLocation getEntityTexture(EntityLiving entity) { return texture; }
 
}
 
</source>
 
 
*ModelSample.java
 
<source lang="java">
 
package mods.entity;
 
 
import net.minecraft.client.model.ModelBase;
 
import net.minecraft.client.model.ModelRenderer;
 
 
public class ModelSample extends ModelBase {
 
    // モデルの直方体を代入する変数
 
    ModelRenderer bottom;
 
    ModelRenderer base;
 
    ModelRenderer top;
 
 
    public ModelSample() {
 
        super();
 
        // テクスチャの縦と横のサイズ
 
        textureWidth = 32;
 
        textureHeight = 64;
 
        // モデルの形を作る
 
        base = new ModelRenderer(0, 14);
 
        base.addBox(0F, 0F, 0F, 10, 8, 10);
 
 
        bottom = new ModelRenderer(32, 2);
 
        bottom.addBox(1F, 8F, 1F, 8, 8, 8);
 
 
        top = new ModelRenderer(40, 18);
 
        top.addBox(2F, 16F, 2F, 6, 8, 6);
 
    }
 
 
    @Override
 
    public void render(Entity entity, float f, float f1, float f2, float f3, float f4, float f5) {
 
        // 描画
 
        base.render(f5);
 
        bottom.render(f5);
 
        top.render(f5);
 
    }
 
}
 
</source>
 
 
===解説===
 
*SampleEntityCore.java
 
このModのエントリクラス。
 
*EntitySample.java
 
うろついたり、見回したりする程度のAIを追加している。
 
*RenderSample.java
 
追加するMobの描画クラス。
 
*ModelSample.java
 
コンストラクタで、モデルの各直方体の大きさ、 回転軸、角度を決める。
 
<source lang="java">
 
ModelRenderer base;
 
 
public ModelSample() {
 
    base = new ModelRenderer(0, 0); // 引数:(テクスチャ画像の始点のX座標、テクスチャ画像の始点のY座標)
 
    base.addBox(0f, 0f, 0f, 1, 1, 1,); // 大きさの定義。引数:(始X, 始Y, 始Z, 終X, 終Y, 終Z)
 
    base.setRotationPoint(0.5f, 0.5f, 0.5f); // 回転軸の定義。引数:(X, Y, Z)
 
    base.rotateAngleX = 45f;
 
    base.rotateAngleZ = 45f; // X軸とZ軸方向に45度ずつ回転
 
}
 
</source>
 

Minecraft Modding Wikiへの投稿はすべて、他の投稿者によって編集、変更、除去される場合があります。 自分が書いたものが他の人に容赦なく編集されるのを望まない場合は、ここに投稿しないでください。
また、投稿するのは、自分で書いたものか、パブリック ドメインまたはそれに類するフリーな資料からの複製であることを約束してください(詳細はMinecraft Modding Wiki:著作権を参照)。 著作権保護されている作品は、許諾なしに投稿しないでください!

このページを編集するには、下記の確認用の質問に回答してください (詳細):

取り消し 編集の仕方 (新しいウィンドウで開きます)