Синхронизация Capability

Версия Minecraft
1.16.5
API
Forge
76
3
5
Ну чтоже, создал я капу, всё работает, но данные клиента и сервера расходятся, клиент не меняется вовсе, как я понял нужно их засинхронить.
Но не понимаю саму логику, как передать переменные, которые хранятся в INBTStorage.

Добавил либу ElegantNetworking, создал тестовый пакет.
ExamplePacket:
@ElegantPacket
public class ExamplePacket implements ServerToClientPacket {

    final int randomInt;

    public ExamplePacket(int randomInt) {

        this.randomInt = randomInt;
    }

    @Override
    public void onReceive(Minecraft mc) {
        System.out.println("ExamplePacket2#onReceive randomInt: " + randomInt);
    }
}

Далее создал ивент в главном классе мода, с выводом в консоль, выводит "onKeyPressed" при нажатии любой из клавишь, как я понял этот вывод не для клиента...
Java:
@SubscribeEvent
    public void onKeyPressed(InputEvent.KeyInputEvent event) {
        System.out.println("onKeyPressed");
        for (KeyBinding key : Minecraft.getInstance().options.keyHotbarSlots)
            if (key.isDown()) {
                new ExamplePacket(key.getKey().getValue()).sendToClients();
                return;
            }
    }

Что делать дальше, как получить данные из INBT и передать их клиенту?
Если можно то с примерами, заранее спасибо <3
 
1,356
109
233
Как раз-таки обработка нажатий осуществляется на клиенте.
После того, как обработал нажатие, отправляй пакет о нажатии на сервер, там отдавай нужные команды.
Чтобы передать данные с сервера на клиент нужны пакеты, в т.ч. и для NBT. Откуда и куда передавать пакеты зависит от контекста. Порой нужно передавать по обновлении блока, порой по нажатии кнопки.
 
Сверху