提供: Minecraft Modding Wiki
移動先: 案内検索
(作った)
 
(ソースコード)
 
(2人の利用者による、間の4版が非表示)
18行目: 18行目:
 
import net.minecraftforge.fml.common.registry.GameRegistry;
 
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)
+
@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.Instance("SampleMod")
+
    /** MOD名称 */
     public static SampleMod INSTANCE;
+
    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;
 
     public static Item sampleItem;
  
158行目: 169行目:
 
}
 
}
 
</source>
 
</source>
アイテムモデル用JSONファイルである。このファイルは、<br />assets\<modid>\models\item<br />ディレクトリに配置する。(※MODIDに大文字が含まれる場合、フォルダ名称は小文字にする)
+
レイヤーを増やしている以外は[[1.8のアイテム追加]]と変わらない。
 
 
parent:親のモデルJSONファイルを指定。"builtin/generated"で通常のアイテムのモデルを指定。
 
 
 
texture:テクスチャのファイルパスを指定。"layer0"、"layer1"、"layer2"……というように指定できる。マルチパスレンダリングしないなら、"layer0"のみで良い。
 
 
 
display:描画時の回転、平行移動、拡大縮小の係数を指定する。コピペ安定。
 
 
 
"thirdperson"は三人称視点、"firstperson"は一人称視点
 

2015年12月30日 (水) 23:48時点における最新版

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

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

アイテムで部分的に色を変える方法[編集]

簡単なアイテムの追加方法+レイヤーの使い方+部分的に色を変える方法

注意:一度入れた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.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;

    @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のアイテム追加と変わらない。