У меня есть код, который логически работает правильно, но по какой-то причине предмет игроку не выдается
Подскажите, почему предмет не выдается, если код работает правильно?
Java:
@Override
public boolean onBlockActivated(World worldIn, BlockPos pos, IBlockState state, EntityPlayer playerIn, EnumHand hand, EnumFacing facing, float hitX, float hitY, float hitZ) {
if(hand == EnumHand.OFF_HAND) return false;
TileEntity tileEntity = worldIn.getTileEntity(pos);
if(!(tileEntity instanceof TileEntityCarpetBlock)) return false;
ItemStack itemstack = playerIn.getHeldItem(hand);
TileEntityCarpetBlock tile = (TileEntityCarpetBlock)tileEntity;
if(tile.isFree() && itemstack.getItem() instanceof ItemKey) {
tile.setKey(itemstack);
itemstack.shrink(1);
playerIn.sendStatusMessage(new TextComponentString("Предмет положен"), false);
return true;
}
else if(!tile.isFree()){
ItemStack itemstack2 = tile.getKey();
playerIn.inventory.addItemStackToInventory(itemstack2);
playerIn.sendStatusMessage(new TextComponentString("Предмет должен быть выдан"), false);
tile.setFree();
}
return true;
}
Java:
public class TileEntityCarpetBlock extends TileEntity {
private ItemStack key = ItemStack.EMPTY;
public TileEntityCarpetBlock() {
}
public ItemStack getKey() {
return this.key;
}
public void setKey(ItemStack key) {
this.key = key;
}
public boolean isFree() {
return this.getKey() == ItemStack.EMPTY;
}
public void setFree() {
this.key = ItemStack.EMPTY;
}
}