提供: Minecraft Modding Wiki
移動先: 案内検索
((テンプレ挿入により改行の位置が中途半端でしたので少し変えました))
1行目: 1行目:
 
{{前提MOD|reqmod="ModLoader及びMinecraftForge"}}
 
{{前提MOD|reqmod="ModLoader及びMinecraftForge"}}
また、1.23からUpdateで1.24が来た場合BlockID,ItemIDの書き方に変更があるかもしれないので、1.1を基準に記述してます。<br/>
+
1.23からUpdateで1.24が来た場合BlockID,ItemIDの書き方に変更があるかもしれないので、1.1を基準に記述してます。<br/>
MLPropを使う場合は、ModLoaderAPIに記載してありますのでそちらを確認ください。
+
設定ファイルの生成方法は3種類あり、それぞれ使い勝手が違います。<br/>
  
作成するクラス<br/>
+
=ModLoaderの機能を使用した方法=
mod_hoge<br/>
 
  
==ソース解説==
+
最も簡単な方法ですが、後述の事前準備が必要となります。<br/>
  
===mod_hogeクラス作成===
+
==サンプルソース==
 +
 
 +
<source lang="java">
 +
package net.minecraft.src;
 +
 
 +
public class mod_hoge extends BaseMod
 +
{
 +
  @MLProp(info="please assign an ID, hogeBlock", min = 1, max = 255)
 +
  public static hogeBlockID = 111;
 +
  @MLProp
 +
  public static hogeItemID = 5000;
 +
  public static Block hogeBlock;
 +
  public static Item hogeItem;
 +
 
 +
  public mod_hoge
 +
  {
 +
  }
 +
 
 +
  public void load
 +
  {
 +
      hogeBlock = new Block(hogeBlockID, 1, Material.rock)
 +
      ModLoader.RegisterBlock(hogeBlock);
 +
      ModLoader.AddName(hogeBlockID, "Hoge Block");
 +
 
 +
      hogeItem = new Item(hogeItemID).setItemName("hogeItem");
 +
      hogeItem.iconIndex = ModLoader.addOverride("/gui/items.png", "/item/hogeitem.png");
 +
      ModLoader.AddName(hogeItem, "Hoge Item");
 +
  }
 +
}
 +
</source>
 +
 
 +
==解説==
 +
<source lang="java">
 +
@MLProp(info="please assign an ID, hogeBlock", min = 1, max = 255)
 +
public static hogeBlockID = 111;
 +
@MLProp
 +
public static hogeItemID = 5000;
 +
</source>
 +
変更できるようにしたい変数の定義の前に"@MLProp"と記述するだけで設定ファイルから変更可能になります。<br/>
 +
その際、infoを設定することでヘルプ用コメントを表示させることができます。<br/>
 +
また、同じようにしてminで最小値、maxで最大値を設定することができます。<br/>
 +
範囲外の数値が設定されている場合、初期値に変更されます。<br/>
 +
 
 +
==事前準備==
 +
 
 +
デコンパイルしただけの状態では、info,min,maxを設定しなければリコンパイル時にエラーが発生します。<br/>
 +
そこで、これらを設定しなくとも正常にリコンパイルできるよう、MLPropクラスを書き換えます。<br/>
 +
 
 +
=MinecraftForgeの機能を使用した方法=
 +
 
 +
MinecraftForgeの設定フアイルはModLoaderと以下の様な違いがあります。<br/>
 +
・ファイル名、配置位置を変更できる<br/>
 +
・ブロックID、アイテムID、その他のカテゴリに分類される<br/>
 +
 
 +
==サンプルソース==
  
 
<source lang="java">
 
<source lang="java">
20行目: 73行目:
 
public class mod_hoge extends BaseMod
 
public class mod_hoge extends BaseMod
 
{
 
{
  static Configuration configuration;
+
    static Configuration configuration;
  static Block hogeBlock;
+
    static Block hogeBlock;
  static int hogeBlockID;
+
    static int hogeBlockID;
  static Item hogeItem;
+
    static Item hogeItem;
  static int itemHogeShiftedIndex;
+
    static int itemHogeShiftedIndex;
 
+
 
  public mod_hoge()
+
    public mod_hoge()
  {
+
    {
  }
+
    }
  
  public void load()
+
    public void load()
  {
+
    {
  /*
+
        configuration = new Configuration(new File(Minecraft.getMinecraftDir(), "config/hoge.cfg"));
    * configurationファイルを設定します。
+
        hogeBlockID = configurationProperties();
    * FileメソッドでMinecraftのconfig/hoge/cfgファイルを参照することを定義しています。
+
        hogeBlock = new Block(hogeBlockID, ModLoader.addOverride("/terrain.png", "/block/hogeBlock.png"));
    */
+
        //ItemIDはBlockIDのMAX値256から減算した値がItemIDになるので-256をしています。
  configuration = new Configuration(new File(Minecraft.getMinecraftDir(), "config/hoge.cfg"));
+
        hogeItem = new Item(itemHogeShiftedIndex - 256, "/gui/items.png", "/item/hogeItem.png").setItemName("hogeItem");
  /*
+
        ModLoader.RegisterBlock(hogeBlock);
  * BlockIDはconfigurationProperties();でコンフィグファイルから取って来いという宣言です。
+
        ModLoader.AddName(hogeBlock, "Hoge Block");
  */
+
        ModLoader.AddName(hogeItem, "Hoge Item");
      hogeBlockID = configurationProperties();
+
    }
      hogeBlock = new Block(hogeBlockID, ModLoader.addOverride("/terrain.png", "/block/hogeBlock.png"));
 
      /*
 
      * ItemIDはBlockIDのMAX値256から減算した値がItemIDになるので-256をしています。
 
      */
 
      hogeItem = new Item(itemHogeShiftedIndex - 256, "/gui/items.png", "/item/hogeItem.png").setItemName("hogeItem");
 
      ModLoader.RegisterBlock(hogeBlock);
 
      ModLoader.AddName(hogeBlock, "Hoge Block");
 
      ModLoader.AddName(hogeItem, "Hoge Item");
 
  }
 
  
  public String getVersion()
+
    public String getVersion()
  {
+
    {
      return "1.0.0";
+
        return "1.0.0";
  }
+
    }
  
  private int configurationProperties()
+
    private int configurationProperties()
  {
+
    {
  /*
+
        configuration.load();
    * configuration.load()でコンフィグファイルをロードします。
+
        hogeBlockID = Integer.parseInt(configuration.getOrCreateBlockIdProperty("Hoge Block", 123).value);
    * 2行目でコンフィグファイルで定義されているBlockIDを設定します。
+
        itemHogeShiftedIndex = Integer.parseInt(configuration.getOrCreateIntProperty("Hoge Item", Configuration.ITEM_PROPERTY, 5000).value);
    * getOrCreateBlockIdPropertyで対象ブロックに設定するものを定義します。
+
        configuration.save();
    * 数字123は初期定義値です。
+
        return hogeBlockID;
    * 3行目のgetOrCreateIntPropertyでは、前の行のgetOrCreateBlockIdPropertyの項目を使用しています。
+
    }
    * 数字の5000はhogeItemの初期ItemID(実際のデータは+256)です。
 
    * configuration.save();でコンフィングファイルをセーブします。(よく忘れます。必ずセーブしましょう)
 
    * 最後に最初のBlockIDを返す必要があります。
 
  */
 
      configuration.load();
 
      hogeBlockID = Integer.parseInt(configuration.getOrCreateBlockIdProperty("Hoge Block", 123).value);
 
      itemHogeShiftedIndex = Integer.parseInt(configuration.getOrCreateIntProperty("Hoge Item", Configuration.ITEM_PROPERTY, 5000).value);
 
      configuration.save();
 
      return hogeBlockID;
 
  }
 
 
}
 
}
 
</source>
 
</source>
 +
==解説==
 +
<source lang="java">
 +
configuration = new Configuration(new File(Minecraft.getMinecraftDir(), "config/hoge.cfg"));
 +
hogeBlockID = configurationProperties();
 +
</source>
 +
configurationファイルを設定します。<br/>
 +
FileメソッドでMinecraftのconfig/hoge/cfgファイルを参照することを定義しています。<br/>
 +
BlockIDはconfigurationProperties();でコンフィグファイルから取って来いという宣言です。<br/>
 +
<source lang="java">
 +
    private int configurationProperties()
 +
    {
 +
        configuration.load();
 +
        hogeBlockID = Integer.parseInt(configuration.getOrCreateBlockIdProperty("Hoge Block", 123).value);
 +
        itemHogeShiftedIndex = Integer.parseInt(configuration.getOrCreateIntProperty("Hoge Item", Configuration.ITEM_PROPERTY, 5000).value);
 +
        configuration.save();
 +
        return hogeBlockID;
 +
    }
 +
</source>
 +
configuration.load()でコンフィグファイルをロードします。
 +
2行目でコンフィグファイルで定義されているBlockIDを設定します。
 +
getOrCreateBlockIdPropertyで対象ブロックに設定するものを定義します。
 +
数字123は初期定義値です。
 +
3行目のgetOrCreateIntPropertyでは、前の行のgetOrCreateBlockIdPropertyの項目を使用しています。
 +
数字の5000はhogeItemの初期ItemID(実際のデータは+256)です。
 +
configuration.save();でコンフィングファイルをセーブします。(よく忘れます。必ずセーブしましょう)
 +
最後に最初のBlockIDを返す必要があります。
 +
 +
=java標準の機能だけを使用する方法=
  
ざっとソースに説明文を書きましたが、MLPropかForgeでのConfigファイル生成かは<br/>
+
=まとめ=
タイプが分かれると思います。<br/>
+
MLPropかForgeでのConfigファイル生成かは好みが分かれると思います。<br/>
今回はBlockID、ItemIDを設定させていますが、<br/>
+
今回はBlockID、ItemIDを設定させていますが、EntityIDや対象Blockの生成有無の判定にも使えますので、好きな方をお使いください。
EntityIDや対象Blockの生成有無の判定にも使えますので、好きな方をお使いください。
 
  
 
<comments />
 
<comments />

2012年3月26日 (月) 12:09時点における版

この記事は"ModLoader及びMinecraftForge"を前提MODとしています。

1.23からUpdateで1.24が来た場合BlockID,ItemIDの書き方に変更があるかもしれないので、1.1を基準に記述してます。
設定ファイルの生成方法は3種類あり、それぞれ使い勝手が違います。

ModLoaderの機能を使用した方法

最も簡単な方法ですが、後述の事前準備が必要となります。

サンプルソース

package net.minecraft.src;

public class mod_hoge extends BaseMod
{
   @MLProp(info="please assign an ID, hogeBlock", min = 1, max = 255)
   public static hogeBlockID = 111;
   @MLProp
   public static hogeItemID = 5000;
   public static Block hogeBlock;
   public static Item hogeItem;

   public mod_hoge
   {
   }
   
   public void load
   {
      hogeBlock = new Block(hogeBlockID, 1, Material.rock)
      ModLoader.RegisterBlock(hogeBlock);
      ModLoader.AddName(hogeBlockID, "Hoge Block");

      hogeItem = new Item(hogeItemID).setItemName("hogeItem");
      hogeItem.iconIndex = ModLoader.addOverride("/gui/items.png", "/item/hogeitem.png");
      ModLoader.AddName(hogeItem, "Hoge Item");
   }
}

解説

@MLProp(info="please assign an ID, hogeBlock", min = 1, max = 255)
public static hogeBlockID = 111;
@MLProp
public static hogeItemID = 5000;

変更できるようにしたい変数の定義の前に"@MLProp"と記述するだけで設定ファイルから変更可能になります。
その際、infoを設定することでヘルプ用コメントを表示させることができます。
また、同じようにしてminで最小値、maxで最大値を設定することができます。
範囲外の数値が設定されている場合、初期値に変更されます。

事前準備

デコンパイルしただけの状態では、info,min,maxを設定しなければリコンパイル時にエラーが発生します。
そこで、これらを設定しなくとも正常にリコンパイルできるよう、MLPropクラスを書き換えます。

MinecraftForgeの機能を使用した方法

MinecraftForgeの設定フアイルはModLoaderと以下の様な違いがあります。
・ファイル名、配置位置を変更できる
・ブロックID、アイテムID、その他のカテゴリに分類される

サンプルソース

package net.minecraft.src;

import java.io.File;
import java.util.*;
import net.minecraft.client.Minecraft;
import net.minecraft.src.forge.*;

public class mod_hoge extends BaseMod
{
    static Configuration configuration;
    static Block hogeBlock;
    static int hogeBlockID;
    static Item hogeItem;
    static int itemHogeShiftedIndex;

    public mod_hoge()
    {
    }

    public void load()
    {
        configuration = new Configuration(new File(Minecraft.getMinecraftDir(), "config/hoge.cfg"));
        hogeBlockID = configurationProperties();
        hogeBlock = new Block(hogeBlockID, ModLoader.addOverride("/terrain.png", "/block/hogeBlock.png"));
        //ItemIDはBlockIDのMAX値256から減算した値がItemIDになるので-256をしています。
        hogeItem = new Item(itemHogeShiftedIndex - 256, "/gui/items.png", "/item/hogeItem.png").setItemName("hogeItem");
        ModLoader.RegisterBlock(hogeBlock);
        ModLoader.AddName(hogeBlock, "Hoge Block");
        ModLoader.AddName(hogeItem, "Hoge Item");
    }

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

    private int configurationProperties()
    {
        configuration.load();
        hogeBlockID = Integer.parseInt(configuration.getOrCreateBlockIdProperty("Hoge Block", 123).value);
        itemHogeShiftedIndex = Integer.parseInt(configuration.getOrCreateIntProperty("Hoge Item", Configuration.ITEM_PROPERTY, 5000).value);
        configuration.save();
        return hogeBlockID;
    }
}

解説

configuration = new Configuration(new File(Minecraft.getMinecraftDir(), "config/hoge.cfg"));
hogeBlockID = configurationProperties();

configurationファイルを設定します。
FileメソッドでMinecraftのconfig/hoge/cfgファイルを参照することを定義しています。
BlockIDはconfigurationProperties();でコンフィグファイルから取って来いという宣言です。

private int configurationProperties()
    {
        configuration.load();
        hogeBlockID = Integer.parseInt(configuration.getOrCreateBlockIdProperty("Hoge Block", 123).value);
        itemHogeShiftedIndex = Integer.parseInt(configuration.getOrCreateIntProperty("Hoge Item", Configuration.ITEM_PROPERTY, 5000).value);
        configuration.save();
        return hogeBlockID;
    }

configuration.load()でコンフィグファイルをロードします。 2行目でコンフィグファイルで定義されているBlockIDを設定します。 getOrCreateBlockIdPropertyで対象ブロックに設定するものを定義します。 数字123は初期定義値です。 3行目のgetOrCreateIntPropertyでは、前の行のgetOrCreateBlockIdPropertyの項目を使用しています。 数字の5000はhogeItemの初期ItemID(実際のデータは+256)です。 configuration.save();でコンフィングファイルをセーブします。(よく忘れます。必ずセーブしましょう) 最後に最初のBlockIDを返す必要があります。

java標準の機能だけを使用する方法

まとめ

MLPropかForgeでのConfigファイル生成かは好みが分かれると思います。
今回はBlockID、ItemIDを設定させていますが、EntityIDや対象Blockの生成有無の判定にも使えますので、好きな方をお使いください。


自分のコメントを追加
Minecraft Modding Wikiはすべてのコメントを歓迎します。匿名で投稿したくない場合は、アカウント作成またはログインしてください。無料です。