(gregのハンマー見たいな感じ)
思いついた方法としては、onUpdateで変数にentityを入れてthis.setContainerItem(this.damageItem(1, player))
みたいな感じでいけるとおもったのですが、うまくいかず、いろいろ試行錯誤したのですが、
結局うまくいかなかったので、質問させていただきました。
理想としては、
・クラフト時グリッドにそのまま残る
・クラフト時に耐久力が1減る
です。
よろしく御願いします。
アイテムクラスのソース(アイテムの追加やツールマテリアルの設定は動作確認済みです。あといろいろ試行錯誤したのでコードがぐちゃぐちゃです。すいません)
- コード: 全て選択
//(インポート等は省略しています。)
public class Hammer extends ItemSword{
public static Entity ent;
public Hammer(ToolMaterial Material) {
super(Material);
this.setMaxStackSize(1);
this.setCreativeTab(CreativeTabs.tabTools);
this.setContainerItem(this);
this.setFull3D();
this.setUnlocalizedName("Hammer");
this.setTextureName("kaiseimod:hammer");
}
public void onUpdate(ItemStack itemStack, World world, Entity entity, int slot, boolean isHeld) {
ent = entity;
//((ICommandSender) ent).addChatMessage(new ChatComponentTranslation(""+ ent));
//((ICommandSender) entity).addChatMessage(new ChatComponentTranslation("onUpdate2"));
//itemStack.damageItem(1, (EntityLivingBase) entity);
}
public boolean doesContainerItemLeaveCraftingGrid(ItemStack stack){
//stack.damageItem(1, (EntityLivingBase) ent);
//((ICommandSender) ent).addChatMessage(new ChatComponentTranslation(""+ent));
return false;
}
public boolean hasContainerItem(){
return true;
}
public ItemStack getContainerItemStack(ItemStack itemStack){
itemStack.damageItem(1,(EntityLivingBase) ent);
return itemStack;
}
}