概要
何の機能もない基本的なブロックを追加する。
前のチュートリアルと同様の部分は割愛している。
ソースコード
package com.tntmodders.tutorial;
import net.minecraft.block.Block;
import net.minecraft.client.renderer.block.model.ModelResourceLocation;
import net.minecraft.item.Item;
import net.minecraft.item.ItemBlock;
import net.minecraft.util.ResourceLocation;
import net.minecraftforge.client.event.ModelRegistryEvent;
import net.minecraftforge.client.model.ModelLoader;
import net.minecraftforge.common.MinecraftForge;
import net.minecraftforge.event.RegistryEvent;
import net.minecraftforge.fml.common.Mod;
import net.minecraftforge.fml.common.event.FMLConstructionEvent;
import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
import net.minecraftforge.fml.relauncher.Side;
import net.minecraftforge.fml.relauncher.SideOnly;
@Mod(modid = "aluminiummod", version = "1.0", name = "AluminiumMod")
public class AluminiumMod {
public static final Item ALUMINIUM = new ItemAluminium();
public static final Block ALUMINIUM_BLOCK = new BlockAluminium();
public static final AluminiumRecipeHolder HOLDER = new AluminiumRecipeHolder();
@Mod.EventHandler
//この関数でMODファイル自体をイベントの発火先にする。
public void construct(FMLConstructionEvent event) {
MinecraftForge.EVENT_BUS.register(this);
}
//アイテムを登録するイベント。 旧preinitのタイミングで発火する。
@SubscribeEvent
public void registerItems(RegistryEvent.Register<Item> event) {
event.getRegistry().register(ALUMINIUM);
event.getRegistry().register(new ItemBlock(ALUMINIUM_BLOCK).setRegistryName("aluminiummod", "aluminium_block"));
}
//ブロックを登録するイベント。 旧preinitのタイミングで発火する。
@SubscribeEvent
public void registerBlocks(RegistryEvent.Register<Block> event) {
event.getRegistry().register(ALUMINIUM_BLOCK);
}
//モデルを登録するイベント。@SideOnlyによってクライアント側のみ呼ばれる。旧preinitのタイミングで発火する。
@SubscribeEvent
@SideOnly(Side.CLIENT)
public void registerModels(ModelRegistryEvent event) {
ModelLoader.setCustomModelResourceLocation(ALUMINIUM, 0, new ModelResourceLocation(new ResourceLocation("aluminiummod", "aluminium"), "inventory"));
ModelLoader.setCustomModelResourceLocation(Item.getItemFromBlock(ALUMINIUM_BLOCK), 0, new ModelResourceLocation(new ResourceLocation("aluminiummod", "aluminium_block"), "inventory"));
}
}
package com.tntmodders.tutorial;
import net.minecraft.block.Block;
import net.minecraft.block.material.Material;
import net.minecraft.creativetab.CreativeTabs;
public class BlockAluminium extends Block {
public BlockAluminium() {
super(Material.IRON);
this.setRegistryName("aluminiummod","aluminium_block");
this.setCreativeTab(CreativeTabs.BUILDING_BLOCKS);
this.setUnlocalizedName("aluminium_block");
}
}
アセット
- aluminium_block.json[item]
src/main/resources/assets/aluminiummod/models/item/に配置する
{
"parent": "aluminiummod:block/aluminium_block"
}
- aluminium_block.json[block]
src/main/resources/assets/aluminiummod/models/block/に配置する
{
"parent": "block/cube_all",
"textures": {
"all": "aluminiummod:blocks/aluminium_block"
}
}
- aluminium_block.json[blockstate]
src/main/resources/assets/aluminiummod/blockstates/に配置する
{
"forge_marker": 1,
"defaults": {
"textures": {
"particle": "aluminiummod:blocks/aluminium_block"
},
"model": "aluminiummod:aluminium_block",
"uvlock": false
},
"variants": {
"normal": [{
}],
"inventory": [{
}]
}
}
#AluminiumMod English Langage File
item.aluminium.name=aluminium
tile.aluminium_block.name=aluminium block
#アルミニウムMOD 日本語言語ファイル
item.aluminium.name=アルミニウム
tile.aluminium_block.name=アルミニウムブロック
src/main/resources/assets/aluminiummod/textures/blocks/に配置する
解説
AluminiumMod.java
@Modの使い方は1.7.10版参照。MODIDは小文字推奨。
public void registerItems(RegistryEvent.Register<Item> event)
アイテム登録用のイベント。1.12では、ItemBlockをItemのレジスターに登録しなければいけない。
public void registerBlocks(RegistryEvent.Register<Block> event)
ブロック登録用のイベント。アイテムとほぼ同仕様。
BlockAluminium.java
登録したレジスター名はblockstateの描画の方で使用する。基本的にモデル名と一緒にしておくと良い。
aluminium_block.json[item]
アイテムのモデルjsonはsrc/resources/assets/<modid>/models/item/ に配置する。名称はsetCustonResourceLocationに渡したModelResourceLocationでの名称にする。
これはblockの方のモデルを継承している。アイテムと同様、display等の要素で描画を操作できる。
aluminium_block.json[block]
ブロックのモデルjsonはsrc/resources/assets/<modid>/models/block/ に配置する。名称はアイテムのモデルjsonと同様。
テクスチャの指定方法もアイテムと同様である。
aluminium_block.json[blockstate]
blockstateのモデルjsonはsrc/resources/assets/<modid>/blockstates/
forge式記法でインベントリとワールド描画が同様のblockにおいてあるモデルを使用することを指定する。
また、破壊時のパーティクルをテクスチャで指定できる。
en_US.lang, ja_JP.lang
アイテムの名称は tile.<翻訳名>.name=<名称> で登録できる。
コメント
この項目に関する質問などをどうぞ。
最終更新:2017年08月08日 17:54