1.7のアイテムで部分的に色を変える方法

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

この記事は"Minecraft Forge Universal 10.12.0.xxx~"を前提MODとしています。

Wood pickaxe.png
初心者向けのチュートリアルです。
C item.png
Itemに関係のあるチュートリアルです。


[編集] 防具の追加

簡単な防具の追加方法

[編集] ソースコード

  • SampleItemCore.java
package 等省略
 
@Mod(modid="SampleItemCore", name="SampleItemCore", version="1.0")
public class SampleItemCore
{
	public static Item sampleItem;
 
	@EventHandler
	public void preInit(FMLPreInitializationEvent event)
	{
		//アイテムのインスタンス生成
		sampleItem = new SampleItemColor()
		.setCreativeTab(CreativeTabs.tabMisc)/*クリエイティブのタブ*/
		.setUnlocalizedName("SampleItemColor")/*システム名の登録*/
		.setTextureName("potion_bottle_drinkable")/*テクスチャの指定(ここではポーションのものを指定している)*/
		//アイテムの登録。登録文字列はMOD内で被らなければ何でも良い。
		GameRegistry.registerItem(sampleItem, "sampleItemColor");
	}
}
  • SampleItemColor.java
package 等省略
public class SampleItemColor extends Item {
    private IIcon overIcon;
    private String overIconName;
 
    protected ItemChangeColorPartiallyFromDye(){
        overIconName="potion_overlay";
    }
 
    @SideOnly(Side.CLIENT)
    public boolean requiresMultipleRenderPasses(){
        return true;//ここで複数のテクスチャを重ねられるようにする。
    }
 
    @SideOnly(Side.CLIENT)
    public IIcon getIconFromDamageForRenderPass(int damage, int pass){
        return pass > 0 ? overIcon : super.getIconFromDamageForRenderPass(damage, pass);//RenderPassに応じて渡すアイコンを変えている
    }
 
    @SideOnly(Side.CLIENT)
    public int getColorFromItemStack(ItemStack stack, int pass){
        return pass==1?ItemDye.field_150922_c[stack.getItemDamage()]:16777215;//ここではRenderPassが1の時だけItemStackのDamage値に応じてItemDyeの色を渡している。
    }
 
    @SuppressWarnings("unchecked")
    @SideOnly(Side.CLIENT)
    public void getSubItems(Item item, CreativeTabs tab, List list) {
        for(int i = 0; i < 16; i++)list.add(new ItemStack(item,1,i));//クリエイティブタブへの登録
    }
 
    public String getUnlocalizedName(ItemStack par1ItemStack) {
        return super.getUnlocalizedName() + "_" + ItemDye.field_150923_a[par1ItemStack.getItemDamage()];//翻訳キーとなる名前をダメージ値で変えている。
    }
 
    public void registerIcons(IIconRegister register){
        super.registerIcons(register);
        overIcon=register.registerIcon(overIconName);
    }
 
    public int getMetadata(int p_77647_1_)
    {
        return p_77647_1_;//Metadataを返す。
    }
}

[編集] 解説

基本的に1.7のアイテム追加と同じ要領で追加できる。 その他の解説はコメントを参照のこと。

チュートリアル
個人用ツール