Выдать предмет из GUI

Версия Minecraft
1.12.2
1,560
86
204
Как можно выдать предмет с клиентской стороны? Пробовал пакетами на сервере выдать, но не получается.
Java:
public class CPacketGiveItem implements IMessage, IMessageHandler<CPacketGiveItem, IMessage> {

    public ItemStack stack;
    
    public CPacketGiveItem(ItemStack stack) {
        this.stack = stack;
    }
    
    public CPacketGiveItem() {
        
    }
    
    @Override
    public IMessage onMessage(CPacketGiveItem message, MessageContext ctx) {
        if (ctx.side == Side.SERVER) {
            MPMod.LOG.info(message.stack + " " + message.times);
            ctx.getServerHandler().player.addItemStackToInventory(stack);
        }
        return null;
    }

    @Override
    public void fromBytes(ByteBuf buf) {
        stack = ByteBufUtils.readItemStack(buf);
    }

    @Override
    public void toBytes(ByteBuf buf) {
        ByteBufUtils.writeItemStack(buf, stack);
    }
}
 
1,031
19
87
По коду сказать ничего не могу так как не писал подобное но логически нужно на клиенте сделать эвент, который чекает пакет с сервера, если он не приходит то просто ждать, а если приходит то в свободный слот инвентаря добавлять сколько то единиц чего то. Наводка думаю правильная. Можешь так-же скачать какой сервак с плагинами да позырить там
 
3,005
192
592
сделать эвент, который чекает пакет с сервера, если он не приходит то просто ждать
Чего....
Бред полный..
~~~~
Пробовал пакетами на сервере выдать, но не получается.
Покажи регистрацию и отправку пакета.
 

timaxa007

Модератор
5,831
409
672
ctx.getServerHandler().player.addItemStackToInventory(stack);
Нужно брать переменную не из текущего класса, а из пакета, ты даже написал его в логе "message.stack", т.е.:
Java:
ctx.getServerHandler().player.addItemStackToInventory(message.stack);
 
Сверху