1.11のブロック追加

提供:Minecraft Modding Wiki
移動: 案内, 検索

この記事は"Minecraft Forge Universal 13.19.0.xxx~"を前提MODとしています。

Wood pickaxe.png
初心者向けのチュートリアルです。
C block.png
Blockに関係のあるチュートリアルです。

ワールド上に設置できる簡単な無機能ブロックの追加方法。

[編集] ブロックの追加

[編集] ソースコード

SampleMod.java

  1. package com.example.block;
  2.  
  3. import net.minecraft.block.Block;
  4. import net.minecraft.block.material.Material;
  5. import net.minecraft.client.renderer.block.model.ModelResourceLocation;
  6. import net.minecraft.creativetab.CreativeTabs;
  7. import net.minecraft.item.Item;
  8. import net.minecraft.item.ItemBlock;
  9. import net.minecraftforge.client.model.ModelLoader;
  10. import net.minecraftforge.event.RegistryEvent;
  11. import net.minecraftforge.fml.common.Mod;
  12. import net.minecraftforge.fml.common.Mod.EventBusSubscriber;
  13. import net.minecraftforge.fml.common.Mod.EventHandler;
  14. import net.minecraftforge.fml.common.event.FMLPreInitializationEvent;
  15. import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
  16. import net.minecraftforge.fml.common.registry.GameRegistry.ObjectHolder;
  17. import net.minecraftforge.fml.relauncher.Side;
  18.  
  19. @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)
  20. @EventBusSubscriber
  21. public class SampleMod{
  22.     /**
  23.      * ModID文字列
  24.      */
  25.     public static final String MOD_ID = "samplemod";
  26.  
  27.     /**
  28.      * MOD名称
  29.      */
  30.     public static final String MOD_NAME = "SampleMod";
  31.  
  32.     /**
  33.      * MODのバージョン
  34.      */
  35.     public static final String MOD_VERSION = "0.0.1";
  36.  
  37.     /**
  38.      * 前に読み込まれるべき前提MODをバージョン込みで指定
  39.      */
  40.     public static final String MOD_DEPENDENCIES = "required-after:forge@[1.11-13.19.0.2130,)";
  41.  
  42.     /**
  43.      * 起動出来るMinecraft本体のバージョン。記法はMavenのVersion Range Specificationを検索すること。
  44.      */
  45.     public static final String MOD_ACCEPTED_MC_VERSIONS = "[1.11]";
  46.  
  47.     @ObjectHolder(MOD_ID)
  48.     public static class BLOCKS{
  49.         public static final Block sample_block = null;
  50.     }
  51.  
  52.     @ObjectHolder(MOD_ID)
  53.     public static class ITEMS{
  54.         public static final Item sample_block = null;
  55.     }
  56.  
  57.  
  58.     /**
  59.      * アイテム登録用イベント
  60.      */
  61.     @SubscribeEvent
  62.     protected static void registerItems(RegistryEvent.Register<Item> event){
  63.         event.getRegistry().registerAll(
  64.                 new ItemBlock(BLOCKS.sample_block).setRegistryName(MOD_ID, "sample_block")
  65.         );
  66.     }
  67.  
  68.     /**
  69.      * ブロック登録用イベント
  70.      */
  71.     @SubscribeEvent
  72.     protected static void registerBlocks(RegistryEvent.Register<Block> event){
  73.         event.getRegistry().registerAll(
  74.                 new Block(Material.ROCK)
  75.                         .setRegistryName(MOD_ID, "sample_block")/*登録名の設定*/
  76.                         .setCreativeTab(CreativeTabs.BUILDING_BLOCKS)/*クリエイティブタブの選択*/
  77.                         .setUnlocalizedName("blockSample")/*システム名の設定*/
  78.                         .setHardness(1.5F)/*硬さ*/
  79.                         .setResistance(1.0F)/*爆破耐性*/
  80.         );
  81.     }
  82.  
  83.     @EventHandler
  84.     public void preInit(FMLPreInitializationEvent event){
  85.         if (event.getSide().isClient())
  86.             ModelLoader.setCustomModelResourceLocation(ITEMS.sample_block, 0, new ModelResourceLocation(ITEMS.sample_block.getRegistryName(), "inventory"));
  87.     }
  88. }

[編集] 解説

以前とは違い、登録用イベントが発火されるようになった。
アイテムとブロックのインスタンス保持はForgeの中の人の手法に沿ったものであるが、別に従来の方法でも問題ない。ここでは細かな解説をしない。
LangやModel用Jsonについては過去のチュートリアルを参照のこと。

チュートリアル
個人用ツール