村と村人に関するレジストリ. 村に建物を追加したり, 新しい職業の村人, 新しい取引などを追加できる.
インスタンス
public static VillagerRegistry instance()
シングルトンなのでこのメソッドを利用しインスタンスを経由する必要がある.
内部インターフェース
public interface IVillageCreationHandler
{
/**
* Called when {@link MapGenVillage} is creating a new village
*
* @param random
* @param i
* @return
*/
StructureVillagePieceWeight getVillagePieceWeight(Random random, int i);
/**
* The class of the root structure component to add to the village
* @return
*/
Class<?> getComponentClass();
/**
* Build an instance of the village component {@link StructureVillagePieces}
* @param villagePiece
* @param startPiece
* @param pieces
* @param random
* @param p1
* @param p2
* @param p3
* @param p4
* @param p5
* @return
*/
Object buildComponent(StructureVillagePieceWeight villagePiece, ComponentVillageStartPiece startPiece, List pieces, Random random, int p1, int p2, int p3, int p4, int p5);
}
村が生成されるときに, 村に新しい建物を追加するためのインタフェース.
public interface IVillageTradeHandler
{
/**
* Called to allow changing the content of the {@link MerchantRecipeList} for the villager
* supplied during creation
*
* @param villager
* @param recipeList
* @param random
*/
void manipulateTradesForVillager(EntityVillager villager, MerchantRecipeList recipeList, Random random);
}
村人との取引内容に新しい内容を追加するためのインタフェース. 基本的にはMerchantRecipeListにaddしていくだけでよい.
register関連
public void registerVillagerType(int villagerId, String villagerSkin)
村人に新しい職業を追加するメソッド. 0~4はバニラで使用しているので5以降になるが, このIDは重複が許されないため実際に利用する場合は他のMODとの競合を考えてコンフィグで設定可能にする必要がある.
public void registerVillageCreationHandler(IVillageCreationHandler handler)
上記の内部インタフェースIVillageCreationHandlerを登録するメソッド.
public void registerVillageTradeHandler(int villagerId, IVillageTradeHandler handler)
上記の内部インタフェースIVillageTradeHandlerを登録するメソッド. villagerIdは取引内容を追加したい村人の職業. バニラでは以下の5つ.
- 0 : farmer (茶色の服)
- 1 : libirarian (白い服)
- 2 : priest (紫色の服)
- 3 : smith (黒い前掛け)
- 4 : buther (白い前掛け)
最終更新:2012年09月18日 02:10