アイテム解説

メタデータにより色が変わるアイテムの作成

皮装備やスポーンエッグなどっで使用される、アイテムにRGBで色を付けるクラスの例文です。

色の指定にはjavaのシステムライブラリのColor.classを使用しています。

ここでは例としてmeta0~4の範囲のカードキーを作成しています。

Itemをextendsしたクラス内に記述してください。


//ここから本文


private IIcon iconsA;//色が変わるキー本体、

private IIcon iconsB;//カードキーのリング部分、白固定


//読み込み時のテクスチャロード、変数に格納を行う。

@SideOnly(Side.CLIENT)

public void registerIcons(IIconRegister register) {

         iconsA = register.registerIcon("enjoywolf:CardKey.0");

         iconsB = register.registerIcon("enjoywolf:CardKey.1");

}


//色を決めるメソッド、.getRenderPasses(int metadata)で返した数字の回数呼ばれます。

  //0が下に、1が上のレイヤーに配置されます。

//今回は下のレイヤーの色を変えて、上は白固定で返します。

@Override

public int getColorFromItemStack(ItemStack itemStack, int pass) {

if(pass != 0) {

return Color.WHITE.getRGB();

}

//アイテムのダメージを取得して対応した色を返す。

int meta = itemStack.getItemDamage();

if(meta == 0) {

return Color.GREEN.getRGB();

}else if(meta == 1) {

return Color.YELLOW.getRGB();

}else if(meta == 2) {

return Color.ORANGE.getRGB();

}else if(meta == 3) {

return Color.RED.getRGB();

}else if(meta == 4) {

return Color.CYAN.getRGB();

}

return Color.WHITE.getRGB();

}


//ここで複数のテクスチャを重ねられるようにする。

@SideOnly(Side.CLIENT)

public boolean requiresMultipleRenderPasses(){

return true;

}

    

//passによってどんなiconを表示するかを指定する。

//.getRenderPasses(int metadata)で返した数字の回数呼ばれます。

     @SideOnly(Side.CLIENT)

     public IIcon getIconFromDamageForRenderPass(int damage, int pass){

         if(pass == 0) {

         return iconsA;

         }

         return iconsB;

     }

    

//翻訳キーとなる名前をダメージ値で変えている。

     public String getUnlocalizedName(ItemStack ItemStack) {

         return super.getUnlocalizedName() + "."+ItemStack.getItemDamage();

    } 


//本文ここまで

なお、2枚以上のiiconを使用したい場合は.getRenderPasses(int metadata)を@Overrideして使いたいレイヤー数を返してください。

筆者 : inurokosann 2024/4/17 更新