提供: Minecraft Modding Wiki
移動先: 案内検索
(解説)
(ソースコード: 行数表示)
6行目: 6行目:
 
===ソースコード===
 
===ソースコード===
 
SampleMod.java
 
SampleMod.java
<source lang = "java">
+
<source lang = "java" line>
 
package com.example.item;
 
package com.example.item;
  

2017年2月16日 (木) 17:42時点における版

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

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

アイテムの追加

簡単な無機能アイテムの追加方法

ソースコード

SampleMod.java

package com.example.item;

import net.minecraft.client.renderer.block.model.ModelResourceLocation;
import net.minecraft.creativetab.CreativeTabs;
import net.minecraft.item.Item;
import net.minecraftforge.client.model.ModelLoader;
import net.minecraftforge.event.RegistryEvent;
import net.minecraftforge.fml.common.Mod;
import net.minecraftforge.fml.common.Mod.EventBusSubscriber;
import net.minecraftforge.fml.common.Mod.EventHandler;
import net.minecraftforge.fml.common.event.FMLPreInitializationEvent;
import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
import net.minecraftforge.fml.common.registry.GameRegistry.ObjectHolder;
import net.minecraftforge.fml.relauncher.Side;

@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)
@EventBusSubscriber
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.11-13.19.0.2130,)";

    /**
     * 起動出来るMinecraft本体のバージョン。記法はMavenのVersion Range Specificationを検索すること。
     */
    public static final String MOD_ACCEPTED_MC_VERSIONS = "[1.11]";

    /**
     * アイテム保持用内部クラス
     */
    @ObjectHolder(MOD_ID)
    public static class ITEMS{
        public static final Item sample_item = null;
    }

    /**
     * アイテム登録用イベント
     */
    @SubscribeEvent
    protected static void registerItems(RegistryEvent.Register<Item> event){
        event.getRegistry().registerAll(
                new Item()
                    .setRegistryName(MOD_ID, "sample_item")/*登録名の設定*/
                    .setCreativeTab(CreativeTabs.MISC)/*クリエイティブのタブ*/
                    .setUnlocalizedName("sample")/*翻訳キーの設定*/
                    /*.setHasSubtypes(true)*//*ダメージ値等で複数の種類のアイテムを分けているかどうか。デフォルトfalse*/
                    /*.setMaxDamage(256)*//*耐久値の設定。デフォルト0*/
                    /*.setFull3D()*//*3D表示で描画させる。ツールや骨、棒等。*/
                    /*.setContainerItem(Items.stick)*//*クラフト時にアイテムを返却できるようにしている際の返却アイテムの指定。*/
                    /*.setPotionEffect(PotionHelper.ghastTearEffect)*//*指定文字列に対応した素材として醸造台で使える。PotionHelper参照のこと。*/
                    /*.setNoRepair()*//*修理レシピを削除し、金床での修繕を出来なくする*/
                    /*.setMaxStackSize(64)*//*スタックできる量。デフォルト64*/
        );
    }

    @EventHandler
    private void preInit(FMLPreInitializationEvent event){
        if (event.getSide() == Side.CLIENT)
            ModelLoader.setCustomModelResourceLocation(ITEMS.sample_item, 0, new ModelResourceLocation(ITEMS.sample_item.getRegistryName(), "inventory"));
    }
}

解説

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