提供: Minecraft Modding Wiki
(セクション追加:「レシピに追加」) |
(セクション追加:「機能を追加するには」) |
||
125行目: | 125行目: | ||
</source> | </source> | ||
+ | ==機能を追加するには== | ||
+ | 自作ブロックの親クラスであるBlock.javaから使えそうな関数を探して(eclipseのアウトラインから探せばコードから探すより効率的です)オーバーライドします。 | ||
+ | 例えばブロックを置いた時に何か処理をしたいなら、Block.javaのonBlockAdded関数が適当だと予想できます。これを自作ブロッククラスで実装し直します。 | ||
<comments /> | <comments /> |
2012年6月24日 (日) 19:28時点における版
この記事は"ModLoader"を前提MODとしています。 |
作成するクラス
mod_hoge
BlockHoge
また、データとしてBlockを追加するだけなので機能部分は省いています。
ソースの解説
mod_hogeクラス作成
mod_***クラスを作成します。 これがないとModLoaderが追加として読み込まないので。
mod_hogeソース
package net.minecraft.src; public class mod_hoge extends BaseMod{ public static Block oreHoge; public int blockID; public String fileToOverride; public String textureFilePath; public mod_hoge() { } public void load() { blockID = 120; fileToOverride = "/terrain.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)); /* setHardness:対象Blockの硬さをFloatで指定 デフォルトは3F */ oreHoge.setHardness(3F); /* setBlockName:対象Blockの名前を指定 */ oreHoge.setBlockName("oreHoge"); /* setResistance:対象Blockの爆破耐性をFloatで指定 デフォルトは5F */ oreHoge.setResistance(5F); /* setStepSound:対象Blockの上を歩いた際の音を指定 下記では石の上を歩いた場合と同じ音を参照 */ oreHoge.setStepSound(Block.soundStoneFootstep); /* setLightValue:対象ブロックを発光させる場合、明るさをFloatで指定 */ oreHoge.setLightValue(1.0F); /* ModLoader.registerBlock:指定したBlockデータを登録します。 */ ModLoader.registerBlock(oreHoge); /* ModLOader.AddName:Minecraftで表示させるBlockの名前を指定 */ ModLoader.AddName(oreHoge, "Hoge Ore"); } public String getVersion() { return "1.0.0"; } }
BlockHogeクラス作成
BlockHogeクラスを作成します。 Blockクラスを継承して作成します。
package net.minecraft.src; import java.util.Random; public class BlockHoge extends Block { /* 親クラスを初期化する必要があるため定義 */ public BlockHoge(int i, int j) { /* Material.rock:石と同じ処理をさせる定義をしているだけです。 */ super(i, j, Material.rock); } /* ブロックが破壊された時にドロップするものを設定 returnでthis.blockIDなので同じ物をドロップさせています */ public int idDropped(int i, Random random, int j) { return this.blockID; } /* 上記破壊時のドロップアイテムの個数を指定 returnで1個ドロップするように指定しています。 */ public int quantityDropped(Random random) { return 1; } }
レシピに追加
自作ブロックはクリエイティブモードのItem Listに現れません。 ブロックをゲームに登場させるために、レシピを追加しましょう。 レシピの追加を参考に、mod_hoge.javaに例えば以下の様なコードを追加します。
ModLoader.addRecipe(new ItemStack(oreHoge, 1), new Object[] { "XXX", Character.valueOf('X'), Block.dirt });
機能を追加するには
自作ブロックの親クラスであるBlock.javaから使えそうな関数を探して(eclipseのアウトラインから探せばコードから探すより効率的です)オーバーライドします。 例えばブロックを置いた時に何か処理をしたいなら、Block.javaのonBlockAdded関数が適当だと予想できます。これを自作ブロッククラスで実装し直します。
- 下記の通りVer1.1でサンプルソース作成されています。1.2.3はModLoaderのmethod名の先頭が小文字になっているはずです。大した変更でもないので、 --Nagisawa 2012年3月30日 (金) 09:32 (JST)
- AddNameじゃなくてaddNameですね、今のModLoaderですと --219.99.11.26 2012年3月29日 (木) 23:09 (JST)
- 上記はVer1.1を基礎としています。理由は1.23のBlockID増えてるけど公式拡張されてないので変更があるかもしれないため --Nagisawa 2012年3月19日 (月) 22:25 (JST)
コメントの自動更新を有効化