アイテム解説
メタデータにより色が変わるアイテムの作成
皮装備やスポーンエッグなどっで使用される、アイテムに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 更新