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

警告: ログインしていません。編集を行うと、あなたの IP アドレスが公開されます。ログインまたはアカウントを作成すれば、あなたの編集はその利用者名とともに表示されるほか、その他の利点もあります。

この編集を取り消せます。 下記の差分を確認して、本当に取り消していいか検証してください。よろしければ変更を保存して取り消しを完了してください。
最新版 編集中の文章
1行目: 1行目:
{{前提MOD|reqmod="ModLoader"}}
+
このページはModLoaderを使っていることを前提に書かれています。
作成するクラス<br/>
+
作成するソース
mod_hoge<br/>
+
mod_hoge.java
BlockHoge<br/>
+
BlockHoge.java
  
 
また、データとしてBlockを追加するだけなので機能部分は省いています。
 
また、データとしてBlockを追加するだけなので機能部分は省いています。
  
==ソースの解説==
+
==全体の完成形==
 
+
mod_hoge.java
===mod_hogeクラス作成===
 
mod_***クラスを作成します。
 
これがないとModLoaderが追加として読み込まないので。
 
 
 
mod_hogeソース
 
 
<source lang="java">
 
<source lang="java">
 
package net.minecraft.src;
 
package net.minecraft.src;
30行目: 25行目:
 
     blockID = 120;
 
     blockID = 120;
 
     fileToOverride = "/terrain.png";
 
     fileToOverride = "/terrain.png";
     textureFilePath = "/block/hoge.png";
+
     textureFilePath = "block/hoge.png";
    /*
 
     BlockHogeクラスから新規BlockのIDとテクスチャファイルを指定
 
     blockID:追加するBlockのIDを指定 ここでは120として定義
 
     fileToOverride:GUIインベントリを使用しない場合は"/terrain.png"
 
             GUIインベントリを使用する場合は"/gui/items.png"
 
     textureFilePath:テクスチャの参照ファイルパスを指定
 
    */
 
 
     oreHoge = new BlockHoge(blockID, ModLoader.addOverride(fileToOverride, textureFilePath));
 
     oreHoge = new BlockHoge(blockID, ModLoader.addOverride(fileToOverride, textureFilePath));
    /*
 
     setHardness:対象Blockの硬さをFloatで指定 デフォルトは3F
 
    */
 
 
     oreHoge.setHardness(3F);
 
     oreHoge.setHardness(3F);
    /*
 
     setBlockName:対象Blockの名前を指定
 
    */
 
 
     oreHoge.setBlockName("oreHoge");
 
     oreHoge.setBlockName("oreHoge");
    /*
 
     setResistance:対象Blockの爆破耐性をFloatで指定 デフォルトは5F
 
    */
 
 
     oreHoge.setResistance(5F);
 
     oreHoge.setResistance(5F);
    /*
 
     setStepSound:対象Blockの上を歩いた際の音を指定
 
     下記では石の上を歩いた場合と同じ音を参照
 
    */
 
 
     oreHoge.setStepSound(Block.soundStoneFootstep);
 
     oreHoge.setStepSound(Block.soundStoneFootstep);
    /*
 
     setLightValue:対象ブロックを発光させる場合、明るさをFloatで指定
 
    */
 
 
     oreHoge.setLightValue(1.0F);
 
     oreHoge.setLightValue(1.0F);
    /*
+
     ModLoader.RegisterBlock(oreHoge);
     ModLoader.registerBlock:指定したBlockデータを登録します。
+
         ModLoader.AddName(oreHoge, "Hoge Ore");
    */
 
     ModLoader.registerBlock(oreHoge);
 
    /*
 
     ModLOader.addName:Minecraftで表示させるBlockの名前を指定
 
    */
 
         ModLoader.addName(oreHoge, "Hoge Ore");
 
 
     }
 
     }
 
     public String getVersion()
 
     public String getVersion()
76行目: 42行目:
 
</source>
 
</source>
  
===BlockHogeクラス作成===
+
BlockHoge.java
BlockHogeクラスを作成します。
 
Blockクラスを継承して作成します。
 
 
 
 
<source lang="java">
 
<source lang="java">
 
package net.minecraft.src;
 
package net.minecraft.src;
  
 
import java.util.Random;
 
import java.util.Random;
 +
import net.minecraft.src.forge.*;
  
 
public class BlockHoge extends Block
 
public class BlockHoge extends Block
 
{
 
{
  /*
+
public BlockHoge(int i, int j)
  親クラスを初期化する必要があるため定義
+
{
  */
+
super(i, j, Material.rock);
  public BlockHoge(int i, int j)
+
}
  {
+
}
    /*
+
</source>
    Material.rock:石と同じ処理をさせる定義をしているだけです。
+
 
    */
+
==mod_hoge==
super(i, j, Material.rock);
+
各項目部分を説明します。
  }
+
 
    /*
+
<source lang="java">
  ブロックが破壊された時にドロップするものを設定
+
blockID = 120;
  returnでthis.blockIDなので同じ物をドロップさせています
+
fileToOverride = "/terrain.png";
  */
+
textureFilePath = "/block/hoge.png";
  public int idDropped(int i, Random random, int j)
+
oreHoge = new BlockHoge(blockID, ModLoader.addOverride(fileToOverride, textureFilePath));
    {
+
</source>
        return this.blockID;
+
BlockHogeに対してBlockIDとテクスチャファイルの参照先を指定しています。
    }
+
 
    /*
+
ModLoader.addOverride(fileToOverride,textureFilePath)は
  上記破壊時のドロップアイテムの個数を指定
+
fileToOverride:GUIインベントリを使用しない場合は"/terrain.png"
  returnで1個ドロップするように指定しています。
+
        GUIインベントリを使用する場合は"/gui/items.png"と覚えておけばいいと思います。
  */
+
textureFilePath:テクスチャの参照ファイルのパスを指定する。
  public int quantityDropped(Random random)
+
 
    {
+
<source lang="java">
        return 1;
+
oreHoge.setHardness(3F);
    }
+
oreHoge.setBlockName("oreHoge");
 +
oreHoge.setResistance(5F);
 +
oreHoge.setStepSound(Block.soundStoneFootstep);
 +
oreHoge.setLightValue(1.0F);
 +
ModLoader.RegisterBlock(oreHoge);
 +
ModLoader.AddName(oreHoge, "Hoge Ore");
 +
</source>
 +
setHardness(Float):対象Blockの硬さをFloatで指定しています。デフォルトは3F
 +
setBlockName(String):Blockの名前を指定
 +
setResistance(Float):Blockの爆破耐性を指定指定しています。デフォルトは5F
 +
setStepSound(stepsound):Blockの上を歩いた際の音を指定しています。上記例では石の上を歩いた時と同じ音を出します。
 +
setLightValue(Float):対象ブロックを発光させる場合明るさを指定します。
 +
ModLoader.RegisterBlock(Block):設定したBlock(例ではoreHoge)をBlockとして登録します。
 +
ModLoader.AddName(Block, String);Minecraft内で表示させるBlockの名前をStringで指定します。
 +
 
 +
 
 +
 
 +
<source lang="java">
 +
public class BlockHoge extends Block
 +
{
 +
public BlockHoge(int i, int j)
 +
{
 +
super(i, j, Material.rock);
 +
}
 
}
 
}
 
</source>
 
</source>
  
===レシピに追加===
 
自作ブロックはクリエイティブモードのItem Listに現れません。
 
ブロックをゲームに登場させるために、レシピを追加しましょう。
 
[[レシピの追加]]を参考に、mod_hoge.javaに例えば以下の様なコードを追加します。
 
 
<source lang="java">
 
<source lang="java">
ModLoader.addRecipe(new ItemStack(oreHoge, 1), new Object[] { "XXX",
+
 
Character.valueOf('X'), Block.dirt });
+
</source>
 +
 
 +
<source lang="java">
 +
 
 +
</source>
 +
 
 +
<source lang="java">
 +
 
 +
</source>
 +
 
 +
<source lang="java">
 +
 
 
</source>
 
</source>
  
==機能を追加するには==
+
<source lang="java">
自作ブロックの親クラスであるBlock.javaから使えそうな関数を探して(eclipseのアウトラインから探せばコードから探すより効率的です)オーバーライドします。
 
例えばブロックを置いた時に何か処理をしたいなら、Block.javaのonBlockAdded関数が適当だと予想できます。これを自作ブロッククラスで実装し直します。
 
  
<comments />
+
</source>
----
 
* 下記の通りVer1.1でサンプルソース作成されています。1.2.3はModLoaderのmethod名の先頭が小文字になっているはずです。大した変更でもないので、 --[[利用者:Nagisawa|Nagisawa]] 2012年3月30日 (金) 09:32 (JST)
 
----
 
* AddNameじゃなくてaddNameですね、今のModLoaderですと --[[特別:投稿記録/219.99.11.26|219.99.11.26]] 2012年3月29日 (木) 23:09 (JST)
 
----
 
* 上記はVer1.1を基礎としています。理由は1.23のBlockID増えてるけど公式拡張されてないので変更があるかもしれないため --[[利用者:Nagisawa|Nagisawa]] 2012年3月19日 (月) 22:25 (JST)
 
  
[[category:ブロック]]
+
<source lang="java">
 +
 
 +
</source>
 +
執筆中・・・

Minecraft Modding Wikiへの投稿はすべて、他の投稿者によって編集、変更、除去される場合があります。 自分が書いたものが他の人に容赦なく編集されるのを望まない場合は、ここに投稿しないでください。
また、投稿するのは、自分で書いたものか、パブリック ドメインまたはそれに類するフリーな資料からの複製であることを約束してください(詳細はMinecraft Modding Wiki:著作権を参照)。 著作権保護されている作品は、許諾なしに投稿しないでください!

このページを編集するには、下記の確認用の質問に回答してください (詳細):

取り消し 編集の仕方 (新しいウィンドウで開きます)

このページで使用されているテンプレート: