- 43
- 8
Всем привет, снова проблемс.
Имею следующий код:
В строке stack.stackSize-- задача удалять предмет из инвентаря(макс. лимит предмета в стаке - 1), но оно по каким-то причинам его не удаляет.
Весь остальной код исполняется, метод работает, консоль чиста, а происходит такой бред.
Пробовал ещё использовать player.inventory.consumeInventoryItem(stack.getItem()) - тоже не дало никакого результата.
Прошу помочь с решением проблемы.
Имею следующий код:
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()) - тоже не дало никакого результата.
Прошу помочь с решением проблемы.