Не удаляется предмет из инвентаря в вызове onItemRightClick

Версия Minecraft
1.7.10
Всем привет, снова проблемс.

Имею следующий код:
ItemLevelUpper:
public class ItemLevelUpper extends Item {

    public IIcon icon;
    
    public ItemLevelUpper() {
        this.setMaxStackSize(1);
        this.setMaxDamage(0);
        this.setHasSubtypes(false);
        this.setCreativeTab(GamePassMod.tab);
        this.setUnlocalizedName("levelupper");
    }
    
    @SideOnly(Side.CLIENT)
    @Override
    public void registerIcons(IIconRegister ir) {
        this.icon = ir.registerIcon("gamepass:25");
    }
    
    @SideOnly(Side.CLIENT)
    @Override
    public IIcon getIconFromDamage(int damage) {
        return icon;
    }
    
    @SideOnly(Side.CLIENT)
    @Override
    public EnumRarity getRarity(ItemStack stack) {
        if(stack.getItem() instanceof ItemLevelUpper) return EnumRarity.epic;
        else return EnumRarity.common;
    }
    
    @SideOnly(Side.CLIENT)
    @Override
    public void addInformation(ItemStack stack, EntityPlayer player, List strings, boolean show) {
        if(stack.hasTagCompound()) {
            NBTTagCompound tag = stack.getTagCompound();
            if(!tag.hasKey("donate")) return;
            NBTTagCompound donate = tag.getCompoundTag("donate");
            String owner = donate.getString("owner");
            if(owner.length() == 0) return;
            strings.add(ColorUtil.Gold+new ChatComponentTranslation("gamepass.text.owner").getUnformattedText()+": "+ColorUtil.LightGreen+owner);
        }
    }
    
    @Override
    @GradleSideOnly(GradleSide.SERVER)
    public ItemStack onItemRightClick(ItemStack stack, World world, EntityPlayer player) {
        if (world.isRemote) return stack;
        PassAccount pacc = DBManager.findAccount(player.getUniqueID().toString());
        if(pacc == null) return stack;
        if(pacc.getLevel() >= 100) {
            GamePassMod.network.sendTo(new PacketSendLocalizedMessage("gamepass.text.maxlevel",ColorUtil.Rose), (EntityPlayerMP)player);
            return stack;
        }
        if(stack.hasTagCompound()) {
            NBTTagCompound tag = stack.getTagCompound();
            if(!tag.hasKey("donate")) return stack;
            NBTTagCompound donate = tag.getCompoundTag("donate");
            String owner = donate.getString("owner");
            if(!owner.equalsIgnoreCase(player.getCommandSenderName())) {
                GamePassMod.network.sendTo(new PacketSendLocalizedMessage("gamepass.text.onlyforowner",ColorUtil.Rose), (EntityPlayerMP)player);
                return stack;
            }
            int newlvl = pacc.getLevel()+25;
            if(newlvl > 100) newlvl = 100;
            pacc.setLevel(newlvl);
            stack.stackSize--;
            GamePassMod.network.sendTo(new PacketSendLocalizedMessage("gamepass.text.levelupped",ColorUtil.Green), (EntityPlayerMP)player);
        }
        return stack;
    }
}

В строке stack.stackSize-- задача удалять предмет из инвентаря(макс. лимит предмета в стаке - 1), но оно по каким-то причинам его не удаляет.
Весь остальной код исполняется, метод работает, консоль чиста, а происходит такой бред.

Пробовал ещё использовать player.inventory.consumeInventoryItem(stack.getItem()) - тоже не дало никакого результата.

Прошу помочь с решением проблемы.
 
7,099
324
1,510
Попробуй выкинуть предмет. По идее, он может быть фантомным просто. Если да - попробуй вызвать после декремента стака player.inventoryContainer.detectAndSendChanges().
Как раз таки не фантомный, а его вполне можно не только перемещать в инвентаре, выкидывать, но и нажать ещё раз.

Upd:
Дело было во включённом креативе. Спасибо @Xukori за наводку, а так же остальным за попытку помочь :)
 

tox1cozZ

aka Agravaine
8,455
598
2,892
Господи, ты серьезно... Мда.
Я еще думаю что за бред: у всех предметов ванильный так убирается количество и все норм, ибо там где вызывается onItemRightClick есть проверка что stackSize <= 0 - удалить предмет. Но так же там проверка что если креатив, то стак вообще не изменяется.
 
Сверху