提供: Minecraft Modding Wiki
移動先: 案内検索
(無駄な処理が多かったので全体的に書き直し)
 
1行目: 1行目:
{{前提MOD|reqmod="ModLoader及びMinecraftForge"}}
+
{{前提MOD|reqmod="1.2.5~1.4.7MinecraftForge"}}
  
BlockとItem両方を行います。<br/>
+
Forgeを使用してスプライトIDを無限化する方法です。<br/>
Blockの追加並びにItemの追加の詳細は下記を参照してください。
+
※注:ただしこの方法では、1つのクラス内で256個を超えるテクスチャは扱えません。<br/>
  
作成するクラス<br/>
+
;作成するクラス<br/>
mod_hoge<br/>
+
:mod_textureSample<br/>
BlockHoge<br/>
 
ItemHoge<br/>
 
  
 
==ソース解説==
 
==ソース解説==
===mod_hogeクラス作成===
+
===mod_textureSampleクラス作成===
 
<source lang="java">
 
<source lang="java">
 
package net.minecraft.src;
 
package net.minecraft.src;
  
/*
+
//forgeを忘れずにインポートしておきましょう
 forgeを忘れずにインポートしておきましょう
 
*/
 
 
import net.minecraft.src.forge.*;
 
import net.minecraft.src.forge.*;
  
public class mod_hoge extends BaseMod{
+
public class mod_textureSample extends BaseMod
 +
{  
 +
    public static Block sampleBlock;
 +
    public static Item sampleItem;
 +
 
 +
    @MLProp(info="", min=1, max=4095)
 +
    public static int sampleBlockID = 3000;
 +
 
 +
    @MLProp(info="", min=256, max=31999)
 +
    public static int sampleItemID = 5000;
 +
 
 +
    //16*16個のテクスチャが入ったpngファイルを用意します。画像サイズは任意です。
 +
    private final String blockTextureFilePath = "/textureBlock.png";
 +
    private final String itemTextureFilePath = "/textureItems.png";
 
   
 
   
    public static Block oreHoge;
 
    public static Item itemHoge;
 
    public int blockID;
 
    public int itemID;
 
    public String blockTextureFilePath;
 
    public String itemTextureFilePath;
 
 
    public mod_hoge()
 
    {
 
    }
 
 
 
     public void load()
 
     public void load()
 
     {
 
     {
    blockID = 120;
+
         //MOD内で使用する全てのテクスチャをForgeに登録します。
        itemID = 5000;
 
        blockTextureFilePath = "/block/hoge.png";
 
        itemTextureFilePath = "/item/hoge.png";
 
         /*
 
    テクスチャファイルは256*256のpngファイルを用意します。
 
    MinecraftForgeClient.preloadTextureで対象のテクスチャファイルを指定してあげるだけです。
 
    */
 
 
         MinecraftForgeClient.preloadTexture(blockTextureFilePath);
 
         MinecraftForgeClient.preloadTexture(blockTextureFilePath);
 
         MinecraftForgeClient.preloadTexture(itemTextureFilePath );
 
         MinecraftForgeClient.preloadTexture(itemTextureFilePath );
    ModLoader.RegisterBlock(oreHoge);
+
       
         ModLoader.AddName(oreHoge, "Hoge Ore");
+
        sampleBlock = new Block(sampleBlockID, 0, Material.stone).setBlockName("sampleBlock");
         ModLoader.addName(itemHoge, "Hoge Item");
+
        //setTextureFile()でテクスチャファイルを設定します。
 +
        sampleBlock .setTextureFile(blockTextureFilePath);
 +
        ModLoader.RegisterBlock(sampleBlock);
 +
         ModLoader.AddName(sampleBlock, "Sample Block");
 +
        ModLoader.AddName(sampleBlock, "ja_JP", "サンプルブロック");
 +
       
 +
        sampleItem = new Item(sampleItemID - 256).setIconCoord(0, 0).setItemName("sampleItem");
 +
        //setTextureFile()でテクスチャファイルを設定します。
 +
        sampleItem .setTextureFile(itemTextureFilePath);
 +
         ModLoader.addName(sampleItem , "Sample Item");
 +
        ModLoader.addName(sampleItem , "ja_JP", "サンプルアイテム");
 
     }
 
     }
 +
 
     public String getVersion()
 
     public String getVersion()
 
     {
 
     {
53行目: 55行目:
 
     }
 
     }
 
}
 
}
</source>
 
※Blockに対してGUIを入れる場合はMinecraftForgeClient.preloadTextureでGUIテクスチャファイルを追加指定してあげるだけです。
 
 
===BlockHogeクラス作成===
 
<source lang="java">
 
package net.minecraft.src;
 
 
import java.util.Random;
 
/*
 
 forgeを忘れずにインポートしておきましょう
 
*/
 
import net.minecraft.src.forge.*;
 
 
/*
 
 ITextureProviderインターフェイスを追加します。
 
*/
 
public class BlockHoge extends Block implements ITextureProvider
 
{
 
  public BlockHoge(int i, int j)
 
  {
 
super(i, j, Material.rock);
 
  }
 
  public int idDropped(int i, int j,Random random)
 
    {
 
        return this.blockID;
 
    }
 
  public int quantityDropped(Random random)
 
    {
 
        return 1;
 
    }
 
    /*
 
    getTextureFileメソッドを追加します。
 
  retuenでBlockのテクスチャファイルのパスを指定します。
 
    */
 
    public String getTextureFile()
 
    {
 
        return "/block/hoge.png";
 
    }
 
}
 
</source>
 
 
===itemHogeクラス作成===
 
やることはBlockと一緒です。
 
  
<source lang="java">
 
package net.minecraft.src;
 
  
import net.minecraft.src.forge.*;
 
 
public class itemHoge extends Item implements ITextureProvider
 
{
 
        public itemHoge(int i)
 
        {
 
                super(i);
 
        }
 
 
        public String getTextureFile()
 
        {
 
                return "/item/hoge.png";
 
        }
 
}
 
 
</source>
 
</source>

2013年4月1日 (月) 15:09時点における最新版

この記事は"1.2.5~1.4.7MinecraftForge"を前提MODとしています。

Forgeを使用してスプライトIDを無限化する方法です。
※注:ただしこの方法では、1つのクラス内で256個を超えるテクスチャは扱えません。

作成するクラス
mod_textureSample

ソース解説[編集]

mod_textureSampleクラス作成[編集]

package net.minecraft.src;

//forgeを忘れずにインポートしておきましょう
import net.minecraft.src.forge.*;

public class mod_textureSample extends BaseMod
{ 
    public static Block sampleBlock;
    public static Item sampleItem;

    @MLProp(info="", min=1, max=4095)
    public static int sampleBlockID = 3000;

    @MLProp(info="", min=256, max=31999)
    public static int sampleItemID = 5000;

    //16*16個のテクスチャが入ったpngファイルを用意します。画像サイズは任意です。
    private final String blockTextureFilePath = "/textureBlock.png";
    private final String itemTextureFilePath = "/textureItems.png";
 
    public void load()
    {
        //MOD内で使用する全てのテクスチャをForgeに登録します。
        MinecraftForgeClient.preloadTexture(blockTextureFilePath);
        MinecraftForgeClient.preloadTexture(itemTextureFilePath );
        
        sampleBlock = new Block(sampleBlockID, 0, Material.stone).setBlockName("sampleBlock");
        //setTextureFile()でテクスチャファイルを設定します。
        sampleBlock .setTextureFile(blockTextureFilePath);
        ModLoader.RegisterBlock(sampleBlock);
        ModLoader.AddName(sampleBlock, "Sample Block");
        ModLoader.AddName(sampleBlock, "ja_JP", "サンプルブロック");
        
        sampleItem = new Item(sampleItemID - 256).setIconCoord(0, 0).setItemName("sampleItem");
        //setTextureFile()でテクスチャファイルを設定します。
        sampleItem .setTextureFile(itemTextureFilePath);
        ModLoader.addName(sampleItem , "Sample Item");
        ModLoader.addName(sampleItem , "ja_JP", "サンプルアイテム");
    }

    public String getVersion()
    {
            return "1.0.0";
    }
}