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

この記事は"Minecraft Forge6.6x"を前提MODとしています。

ChestGenHooksの利用

バニラでは村の鍛冶屋, ダンジョン(スポナー部屋), 坑道, 遺跡(Stronghold), ピラミッド, 寺院, そしてゲーム開始時のボーナスに特定のアイテムが入ったチェストが自動生成される. ChestGenHooksはこれらのチェストに格納されるアイテムを変更できるAPIである. 逆に, 自分でワールドにチェストを生成して, その中身を設定する際のAPIとしても利用できる.

基本的な使い方

  • アイテムの追加, 削除
public static void addItem(String category, WeightedRandomChestContent item)
public static void removeItem(String category, ItemStack item)

addItemは引数のcategoryに, itemを追加するメソッド(WeightedRandomChestContentはそのアイテムが出現する確率と, 最小・最大スタック数を保持するクラス).
removeItemはcategoryからitemを削除するメソッド.

  • アイテム, アイテム数の取得
public static WeightedRandomChestContent[] getItems(String category, Random rand)
public static ItemStack getOneItem(String category, Random rand)
public static int getCount(String category, Random rand)

getItemはcategoryに登録されているアイテムをランダムに複数返す.
getOneItemはcategoryに登録されているアイテムを1つ返す.
getCountはcategoryで設定されているアイテムの抽選回数を返す.

  • カテゴリー, ChestGenHooks内で定義されている
MINESHAFT_CORRIDOR
PYRAMID_DESERT_CHEST
PYRAMID_JUNGLE_CHEST
PYRAMID_JUNGLE_DISPENSER
STRONGHOLD_CORRIDOR
STRONGHOLD_LIBRARY
STRONGHOLD_CROSSING
VILLAGE_BLACKSMITH
BONUS_CHEST
DUNGEON_CHEST

上から
坑道
ピラミッド
寺院
寺院のディスペンサー
遺跡の廊下
遺跡の図書室
遺跡の交差
村の鍛冶屋
ボーナスチェスト
ダンジョンのチェスト

抽選回数について

単純にaddItemしただけではそのアイテムが選択される可能性は低い. また複数のModでたとえばダンジョンのチェストにアイテムを追加する場合, バニラのアイテムの数も多いためそうそう追加アイテムがでることはない. そこで, チェストのアイテムの抽選回数を変更することで相対的に追加アイテムの出現率を高めることができる.

ChestGenHooks.getInfo(String category).setMax(int max)
ChestGenHooks.getInfo(String category).setMin(int min)

チェストに格納されるアイテムの最大抽選回数と最小抽選回数を変更する. 前述したgetCountはこのメソッドで設定される値の間からランダムに選ばれる. maxとminが同じ場合は常に同じ個数のアイテムが選択される.

新しいカテゴリの作成

ChestGenHooks.getInfo(String category)を呼んだ際, 存在しないカテゴリの場合は新しいカテゴリが生成される. 当然追加アイテムなども自分で0から設定しなければならないが, 自分でチェストをワールドに生成する場合, その管理に利用できる.

まとめ

ChestGenHooksはバニラで生成されるチェストに対し, 自由にアイテムの追加, 削除ができるAPIだが, バニラのアイテムだったり, 他のModでもこのAPIを利用している場合, Modの組み合わせによってはチェスト内のアイテムが大量になったり, 目的のアイテムがなかなか出ないこともある. もし特定のアイテムを確実に出現させたいなら, 新しいカテゴリを作成し, IWorldGeneratorなどで自分でチェストを生成し, 格納するという方法もある.