提供: Minecraft Modding Wiki
この記事は"Minecraft Forge Universal 11.14.0.xxx~"を前提MODとしています。 |
アイテムで部分的に色を変える方法
簡単なアイテムの追加方法+レイヤーの使い方+部分的に色を変える方法
注意:一度入れたMODを外すと、再び入れてもテクスチャが反映されなくなります。デバッグ時にご注意を。
ソースコード
SampleMod.java
package com.example.examplemod; import net.minecraft.client.resources.model.ModelResourceLocation; import net.minecraft.item.Item; import net.minecraftforge.client.model.ModelLoader; import net.minecraftforge.fml.common.Mod; import net.minecraftforge.fml.common.event.FMLInitializationEvent; import net.minecraftforge.fml.common.event.FMLPreInitializationEvent; import net.minecraftforge.fml.common.registry.GameRegistry; @Mod(modid = "SampleMod", name = "SampleMod", version = "1.0", dependencies = "required-after:Forge@[1.8-11.14.0.1239,)", useMetadata = true) public class SampleMod { public static final String MOD_ID = "SampleMod"; @Mod.Instance("SampleMod") public static SampleMod INSTANCE; public static Item sampleItem; @Mod.EventHandler public void preInit(FMLPreInitializationEvent event) { sampleItem = new SampleItem(); //アイテムの登録。登録文字列はMOD内で被らなければ何でも良い。 GameRegistry.registerItem(sampleItem,"sampleitem"); //テクスチャ・モデル指定JSONファイル名の登録。 if (event.getSide().isClient()) { //1IDで複数モデルを登録するなら、上のメソッドで登録した登録名を指定する。 ModelLoader.setCustomModelResourceLocation(sampleItem, 0, new ModelResourceLocation(MOD_ID + ":" + "sampleitem", "inventory")); } } @Mod.EventHandler public void init(FMLInitializationEvent event) { } }
SampleItem.java
package com.example.examplemod; import net.minecraft.creativetab.CreativeTabs; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; public class SampleItem extends Item{ public SampleItem(){ this .setCreativeTab(CreativeTabs.tabMaterials)/*クリエイティブのタブ*/ .setUnlocalizedName("SampleItem")/*システム名の登録*/ /*.setHasSubtypes(true)*//*ダメージ値等で複数の種類のアイテムを分けているかどうか。デフォルトfalse*/ /*.setMaxDamage(256)*//*耐久値の設定。デフォルト0*/ /*.setFull3D()*//*3D表示で描画させる。ツールや骨、棒等。*/ /*.setContainerItem(Items.stick)*//*クラフト時にアイテムを返却できるようにしている際の返却アイテムの指定。*/ /*.setPotionEffect(PotionHelper.ghastTearEffect)*//*指定文字列に対応した素材として醸造台で使える。PotionHelper参照のこと。*/ /*.setNoRepair()*//*修理レシピを削除し、金床での修繕を出来なくする*/ .setMaxStackSize(64);/*スタックできる量。デフォルト64*/ } /** renderPassとかいう名前が付いているが、要するにレイヤー。 番号に対応している。 */ public int getColorFromItemStack(ItemStack stack, int renderPass){ switch(renderPass){ case 0:return 0xFFFFFF; case 1:return 0x00FF00; case 2:return 0x000000; default:return 0xFFFFFF; } } }
sampleitem.json
{ "parent": "builtin/generated", "textures": { "layer0": "blocks/stone", "layer1": "blocks/grass_side_overlay", "layer2": "items/iron_pickaxe" }, "display": { "thirdperson": { "rotation": [ 0, 90, -35 ], "translation": [ 0, 1.25, -3.5 ], "scale": [ 0.85, 0.85, 0.85 ] }, "firstperson": { "rotation": [ 0, -135, 25 ], "translation": [ 0, 4, 2 ], "scale": [ 1.7, 1.7, 1.7 ] } } }
解説
SampleMod.java
1.8のアイテム追加を参照のこと。
SampleItem.java
/** renderPassとかいう名前が付いているが、要するにレイヤー。 番号に対応している。 */ public int getColorFromItemStack(ItemStack stack, int renderPass){ switch(renderPass){ case 0:return 0xFFFFFF; case 1:return 0x00FF00; case 2:return 0x000000; default:return 0xFFFFFF; } }
レイヤーの番号に対応したrenderPassに対して色を返せばいい。
sampleitem.json
{ "parent": "builtin/generated", "textures": { "layer0": "blocks/stone", "layer1": "blocks/grass_side_overlay", "layer2": "items/iron_pickaxe" }, "display": { "thirdperson": { "rotation": [ 0, 90, -35 ], "translation": [ 0, 1.25, -3.5 ], "scale": [ 0.85, 0.85, 0.85 ] }, "firstperson": { "rotation": [ 0, -135, 25 ], "translation": [ 0, 4, 2 ], "scale": [ 1.7, 1.7, 1.7 ] } } }
レイヤーを増やしている以外は1.8のアイテム追加と変わらない。