(→sampleitem.json) |
細 (→ソースコード) |
||
(2人の利用者による、間の11版が非表示) | |||
3行目: | 3行目: | ||
{{チュートリアルカテゴリー|difficulty=0|type=Item}} | {{チュートリアルカテゴリー|difficulty=0|type=Item}} | ||
==アイテムの追加== | ==アイテムの追加== | ||
− | <p> | + | <p>簡単な無機能アイテムの追加方法</p> |
− | + | 注意:一度入れたMODを外すと、再び入れてもテクスチャが反映されなくなります。デバッグ時にご注意を。 | |
===ソースコード=== | ===ソースコード=== | ||
SampleMod.java | SampleMod.java | ||
10行目: | 10行目: | ||
package com.example.examplemod; | package com.example.examplemod; | ||
− | |||
import net.minecraft.client.Minecraft; | import net.minecraft.client.Minecraft; | ||
import net.minecraft.client.resources.model.ModelBakery; | import net.minecraft.client.resources.model.ModelBakery; | ||
import net.minecraft.client.resources.model.ModelResourceLocation; | import net.minecraft.client.resources.model.ModelResourceLocation; | ||
import net.minecraft.creativetab.CreativeTabs; | import net.minecraft.creativetab.CreativeTabs; | ||
+ | |||
import net.minecraft.item.Item; | import net.minecraft.item.Item; | ||
import net.minecraftforge.fml.common.Mod; | import net.minecraftforge.fml.common.Mod; | ||
+ | |||
import net.minecraftforge.fml.common.Mod.EventHandler; | import net.minecraftforge.fml.common.Mod.EventHandler; | ||
− | import net.minecraftforge.fml.common.event. | + | import net.minecraftforge.fml.common.event.FMLInitializationEvent; |
+ | import net.minecraftforge.fml.common.event.FMLPreInitializationEvent; | ||
import net.minecraftforge.fml.common.registry.GameRegistry; | import net.minecraftforge.fml.common.registry.GameRegistry; | ||
− | |||
− | @Mod(modid = | + | @Mod(modid = SampleMod.MOD_ID, |
+ | name = SampleMod.MOD_NAME, | ||
+ | version = SampleMod.MOD_VERSION, | ||
+ | dependencies = SampleMod.MOD_DEPENDENCIES, | ||
+ | acceptedMinecraftVersions = SampleMod.MOD_ACCEPTED_MC_VERSIONS, | ||
+ | useMetadata = true) | ||
public class SampleMod { | public class SampleMod { | ||
− | public static final String MOD_ID = "SampleMod"; | + | /** ModId文字列 */ |
− | + | public static final String MOD_ID = "samplemod"; | |
− | + | /** MOD名称 */ | |
− | public static | + | public static final String MOD_NAME = "SampleMod"; |
− | + | /** MODのバージョン */ | |
− | public static | + | public static final String MOD_VERSION = "0.0.1"; |
+ | /** 早紀に読み込まれるべき前提MODをバージョン込みで指定 */ | ||
+ | public static final String MOD_DEPENDENCIES = "required-after:Forge@[1.8-11.14.0.1239,)"; | ||
+ | /** 起動出来るMinecraft本体のバージョン。記法はMavenのVersion Range Specificationを検索すること。 */ | ||
+ | public static final String MOD_ACCEPTED_MC_VERSIONS = "[1.8,1.8.9]"; | ||
+ | /** 追加したいアイテムのインスタンスを格納する変数。レシピ等で利用。 */ | ||
public static Item sampleItem; | public static Item sampleItem; | ||
@EventHandler | @EventHandler | ||
− | public void preInit( | + | public void preInit(FMLPreInitializationEvent event) { |
− | |||
sampleItem = new Item() | sampleItem = new Item() | ||
.setCreativeTab(CreativeTabs.tabMaterials)/*クリエイティブのタブ*/ | .setCreativeTab(CreativeTabs.tabMaterials)/*クリエイティブのタブ*/ | ||
46行目: | 56行目: | ||
.setMaxStackSize(64);/*スタックできる量。デフォルト64*/ | .setMaxStackSize(64);/*スタックできる量。デフォルト64*/ | ||
//アイテムの登録。登録文字列はMOD内で被らなければ何でも良い。 | //アイテムの登録。登録文字列はMOD内で被らなければ何でも良い。 | ||
− | GameRegistry.registerItem(sampleItem, " | + | GameRegistry.registerItem(sampleItem, "sampleitem"); |
//テクスチャ・モデル指定JSONファイル名の登録。 | //テクスチャ・モデル指定JSONファイル名の登録。 | ||
− | if (event.getSide() | + | if (event.getSide().isClient()) { |
− | // | + | //1IDで複数モデルを登録するなら、上のメソッドで登録した登録名を指定する。 |
− | + | ModelLoader.setCustomModelResourceLocation(sampleItem, 0, new ModelResourceLocation(MOD_ID + ":" + "sampleitem", "inventory")); | |
− | |||
− | |||
− | |||
} | } | ||
+ | |||
+ | } | ||
+ | |||
+ | @EventHandler | ||
+ | public void init(FMLInitializationEvent event) { | ||
+ | |||
} | } | ||
} | } | ||
+ | |||
+ | |||
</source> | </source> | ||
81行目: | 96行目: | ||
} | } | ||
</source> | </source> | ||
+ | |||
==解説== | ==解説== | ||
===SampleMod.java=== | ===SampleMod.java=== | ||
90行目: | 106行目: | ||
//モデルJSONファイルのファイル名を登録。1IDで1つだけなら、登録名はGameRegistryでの登録名と同じものにする。 | //モデルJSONファイルのファイル名を登録。1IDで1つだけなら、登録名はGameRegistryでの登録名と同じものにする。 | ||
//1IDでmetadata別複数モデルを登録するなら、上のメソッドで登録した登録名を指定する。 | //1IDでmetadata別複数モデルを登録するなら、上のメソッドで登録した登録名を指定する。 | ||
− | + | ModelLoader.setCustomModelResourceLocation(sampleItem, 0, new ModelResourceLocation(MOD_ID + ":" + "sampleItem", "inventory")); | |
} | } | ||
</source> | </source> | ||
99行目: | 115行目: | ||
ここで登録されるのは手持ちやドロップアイテム時の描画についてである。 | ここで登録されるのは手持ちやドロップアイテム時の描画についてである。 | ||
1.7と同様の処理については[[1.7のアイテム追加]]を参照のこと。 | 1.7と同様の処理については[[1.7のアイテム追加]]を参照のこと。 | ||
+ | |||
===sampleitem.json=== | ===sampleitem.json=== | ||
121行目: | 138行目: | ||
} | } | ||
</source> | </source> | ||
− | アイテムモデル用JSONファイルである。このファイルは、<br />assets\<modid>\models\item<br /> | + | アイテムモデル用JSONファイルである。このファイルは、<br />assets\<modid>\models\item<br />ディレクトリに配置する。(※MODIDに大文字が含まれる場合、フォルダ名称は小文字にする) |
parent:親のモデルJSONファイルを指定。"builtin/generated"で通常のアイテムのモデルを指定。 | parent:親のモデルJSONファイルを指定。"builtin/generated"で通常のアイテムのモデルを指定。 | ||
− | texture:テクスチャのファイルパスを指定。"layer0" | + | texture:テクスチャのファイルパスを指定。"layer0"、"layer1"、"layer2"……というように指定できる。マルチパスレンダリングしないなら、"layer0"のみで良い。 |
display:描画時の回転、平行移動、拡大縮小の係数を指定する。コピペ安定。 | display:描画時の回転、平行移動、拡大縮小の係数を指定する。コピペ安定。 | ||
"thirdperson"は三人称視点、"firstperson"は一人称視点 | "thirdperson"は三人称視点、"firstperson"は一人称視点 |
2015年12月30日 (水) 23:48時点における最新版
この記事は"Minecraft Forge Universal 11.14.0.xxx~"を前提MODとしています。 |
アイテムの追加[編集]
簡単な無機能アイテムの追加方法
注意:一度入れたMODを外すと、再び入れてもテクスチャが反映されなくなります。デバッグ時にご注意を。
ソースコード[編集]
SampleMod.java
package com.example.examplemod; import net.minecraft.client.Minecraft; import net.minecraft.client.resources.model.ModelBakery; import net.minecraft.client.resources.model.ModelResourceLocation; import net.minecraft.creativetab.CreativeTabs; import net.minecraft.item.Item; import net.minecraftforge.fml.common.Mod; import net.minecraftforge.fml.common.Mod.EventHandler; import net.minecraftforge.fml.common.event.FMLInitializationEvent; import net.minecraftforge.fml.common.event.FMLPreInitializationEvent; import net.minecraftforge.fml.common.registry.GameRegistry; @Mod(modid = SampleMod.MOD_ID, name = SampleMod.MOD_NAME, version = SampleMod.MOD_VERSION, dependencies = SampleMod.MOD_DEPENDENCIES, acceptedMinecraftVersions = SampleMod.MOD_ACCEPTED_MC_VERSIONS, useMetadata = true) public class SampleMod { /** ModId文字列 */ public static final String MOD_ID = "samplemod"; /** MOD名称 */ public static final String MOD_NAME = "SampleMod"; /** MODのバージョン */ public static final String MOD_VERSION = "0.0.1"; /** 早紀に読み込まれるべき前提MODをバージョン込みで指定 */ public static final String MOD_DEPENDENCIES = "required-after:Forge@[1.8-11.14.0.1239,)"; /** 起動出来るMinecraft本体のバージョン。記法はMavenのVersion Range Specificationを検索すること。 */ public static final String MOD_ACCEPTED_MC_VERSIONS = "[1.8,1.8.9]"; /** 追加したいアイテムのインスタンスを格納する変数。レシピ等で利用。 */ public static Item sampleItem; @EventHandler public void preInit(FMLPreInitializationEvent event) { sampleItem = new Item() .setCreativeTab(CreativeTabs.tabMaterials)/*クリエイティブのタブ*/ .setUnlocalizedName("SampleItem")/*システム名の登録*/ /*.setHasSubtypes(true)*//*ダメージ値等で複数の種類のアイテムを分けているかどうか。デフォルトfalse*/ /*.setMaxDamage(256)*//*耐久値の設定。デフォルト0*/ /*.setFull3D()*//*3D表示で描画させる。ツールや骨、棒等。*/ /*.setContainerItem(Items.stick)*//*クラフト時にアイテムを返却できるようにしている際の返却アイテムの指定。*/ /*.setPotionEffect(PotionHelper.ghastTearEffect)*//*指定文字列に対応した素材として醸造台で使える。PotionHelper参照のこと。*/ /*.setNoRepair()*//*修理レシピを削除し、金床での修繕を出来なくする*/ .setMaxStackSize(64);/*スタックできる量。デフォルト64*/ //アイテムの登録。登録文字列はMOD内で被らなければ何でも良い。 GameRegistry.registerItem(sampleItem, "sampleitem"); //テクスチャ・モデル指定JSONファイル名の登録。 if (event.getSide().isClient()) { //1IDで複数モデルを登録するなら、上のメソッドで登録した登録名を指定する。 ModelLoader.setCustomModelResourceLocation(sampleItem, 0, new ModelResourceLocation(MOD_ID + ":" + "sampleitem", "inventory")); } } @EventHandler public void init(FMLInitializationEvent event) { } }
sampleitem.json
{ "parent": "builtin/generated", "textures": { "layer0": "items/apple" }, "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[編集]
//テクスチャ・モデル指定JSONファイル名の登録。 if (event.getSide() == Side.CLIENT) { //ItemStackのmetadataで種類を分けて描画させたい場合。登録名を予め登録する。今回は使ってない。 //ModelBakery.addVariantName(sampleItem, MOD_ID + ":" + "sampleItem0", MOD_ID + ":" + "sampleItem1"); //モデルJSONファイルのファイル名を登録。1IDで1つだけなら、登録名はGameRegistryでの登録名と同じものにする。 //1IDでmetadata別複数モデルを登録するなら、上のメソッドで登録した登録名を指定する。 ModelLoader.setCustomModelResourceLocation(sampleItem, 0, new ModelResourceLocation(MOD_ID + ":" + "sampleItem", "inventory")); }
アイテムのテクスチャ・モデルのJSONファイルのファイル名を登録している。 ModelBakery#addVariantNameメソッドは、染料のような、1IDで複数種類のアイテムのモデルを登録する際の登録名を予め指定しておくメソッドである。 meta別のモデルがない場合は必要ない。 ItemModelMesher#registerメソッドでテクスチャ・モデルのJSONファイルを登録している。 ここで登録されるのは手持ちやドロップアイテム時の描画についてである。 1.7と同様の処理については1.7のアイテム追加を参照のこと。
sampleitem.json[編集]
{ "parent": "builtin/generated", "textures": { "layer0": "items/apple" }, "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 ] } } }
アイテムモデル用JSONファイルである。このファイルは、
assets\<modid>\models\item
ディレクトリに配置する。(※MODIDに大文字が含まれる場合、フォルダ名称は小文字にする)
parent:親のモデルJSONファイルを指定。"builtin/generated"で通常のアイテムのモデルを指定。
texture:テクスチャのファイルパスを指定。"layer0"、"layer1"、"layer2"……というように指定できる。マルチパスレンダリングしないなら、"layer0"のみで良い。
display:描画時の回転、平行移動、拡大縮小の係数を指定する。コピペ安定。
"thirdperson"は三人称視点、"firstperson"は一人称視点