Не выдается предмет игроку

Версия Minecraft
1.12.2
API
Forge
33
5
7
У меня есть код, который логически работает правильно, но по какой-то причине предмет игроку не выдается

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;
    }
}
Подскажите, почему предмет не выдается, если код работает правильно?
 
Стаки надо копировать, у тебя в таком случае в тайле и инвентаре один и тот же стак
Во так попробуй:
tile.setKey(new ItemStack(itemstack.getItem()));
И еще можешь использовать playerIn.addItemStackToInventory();
 
Назад
Сверху