On server side, how to reduce players item from inventory?
I used below codes.
It doesn't work. Nothing changed.
@Override
public IMessage onMessage(CostMessage message, MessageContext ctx) {
EntityPlayerMP player = ctx.getServerHandler().player;
if (message != null) {
ItemStack stack = message.getItemStack();
if (stack == null)
return null;
InventoryPlayer inv = player.inventory;
inv.deleteStack(stack);
}
return null;
}
It caused NoSuchMethodException with func_184429_b
@Override
public IMessage onMessage(CostMessage message, MessageContext ctx) {
EntityPlayerMP player = ctx.getServerHandler().player;
if (message != null) {
ItemStack stack = message.getItemStack();
if (stack == null)
return null;
InventoryPlayer inv = player.inventory;
int amount = stack.getCount();
int p = 0, cnt = stack.getCount();
while (cnt > 0) {
int slot = inv.getSlotFor(stack);
int cntFrom = inv.getStackInSlot(slot).getCount();
cnt -= cntFrom;
if (cnt > 0) {
inv.setInventorySlotContents(slot, null);
} else if (cnt != 0) {
stack.setCount(-cnt);
inv.setInventorySlotContents(slot, stack);
}
}
}
return null;
}
Is there any method or way to reduce items from player's inventory by item name & count?