【Modding】Baubles対応アイテムを作ろう その1

2016-07-14_00-06-50.png

さてさて、ThaumCraftの前提Modとして有名になりつつある「Baubles」。

アクセサリを装備するスロットを追加する小物Modですね。

僕の作っているMod、「AdditionalRecipe」は持っていると効果を発揮するアイテムが多く、
いろんな効果を得ようとするとすぐインベントリがぱんぱんになってしまいます。

そんなある日、「ExtraUtilities」の「Flying Ring」がBaubles追加スロットの、
Ringsスロットに装備できるという今更ながらな話を聞いて、これだと思いました。

・IBaubleをimplementsする

@Optional.Interface(iface = "baubles.api.IBauble", modid = "Baubles")
public class GravitationFeather extends Item implements IBauble

当然Baublesスロットに装備するためには必要になってきます。
Optional.InterfaceアノーテションでBaublesが導入されているときだけ、
IBaublesをimplementsできる……と思うのですが、正直使い方がわかっていません。

・必要メソッドをオーバーライドする

@Override
@Optional.Method(modid = "Baubles")
public BaubleType getBaubleType(ItemStack itemstack) {
return BaubleType.AMULET;
}
@Override
@Optional.Method(modid = "Baubles")
public void onWornTick(ItemStack itemstack, EntityLivingBase player) {
}
@Override
@Optional.Method(modid = "Baubles")
public void onEquipped(ItemStack itemstack, EntityLivingBase player) {
}
@Override
@Optional.Method(modid = "Baubles")
public void onUnequipped(ItemStack itemstack, EntityLivingBase player) {
}
@Override
@Optional.Method(modid = "Baubles")
public boolean canEquip(ItemStack itemstack, EntityLivingBase player) {
return true;
}
@Override
@Optional.Method(modid = "Baubles")
public boolean canUnequip(ItemStack itemstack, EntityLivingBase player) {
return true;
}

当然BaublesAPIを利用する上では必要になってきます。

getBaubleTypeでどのスロットに装備可能か決まります。
AMULETは上段のスロット、RINGは中段の2スロット、BELTは下段のスロットです。

onWornTickは装備時に毎Tick呼び出されます。
onUpdateのBaubleスロット版だと思います。

onEquipped、OnUnequippedはそれぞれ装備されたとき、
はずされたときに一度だけ呼び出されます。

canEquip、canUnequipはまぁ見たとおりだと思います。
canUnequipはわかりますがcanEquipの使いどころがわからない。

Optional.Methodアノテーションで非導入時は、
メソッドとして認識しないようにできる……のかな?

まぁこれだけやっておけば一応は装備可能になります。
次回以降はBaublesスロットに装備したときの特殊効果を、
どう付けるかを考えていきたいと思います。
スポンサーサイト

コメント

コメントの投稿


管理者にだけ表示を許可する