Как использовать пакеты Ивасика

Версия Minecraft
1.7.10
1,193
31
182
Чекая туториал Ивасика про пакеты, не совсем понял как это работает.
Где регистрировать его NetworkHandler? Как правильно регистрировать пакет в NetworkHandler?
Как его правильно "есть"
Прошу помощи
Если что, тема.
 

timaxa007

Модератор
5,831
409
672
1,193
31
182
В гайде, который ты скинул есть такая вещь
Java:
serverPlayer.getServerWorld().addScheduledTask(() -> {
      serverPlayer.inventory.addItemStackToInventory(new ItemStack(Items.DIAMOND, amount));
    });
Я поменял getServerWorld() на worldObj, ничего не поменялось
Подчеркивает все то же addScheduledTask и говорит что этот метод не определен в World
Далее, в MyMessage создается приватная инт
private int toSend;
И потом в методе onMessage класса MyMessageHandler
Java:
@Override public IMessage onMessage(MyMessage message, MessageContext ctx) {
 
 int amount = message.toSend; //тут инт amount присваивается значение toSend из пакета MyMessage
Но в чем прикол, toSend приватная и она не видна в MyMessageHandler, зачем ее сделали приватной - не понятно.
Из-за этого у меня появляется путаница и непонятность гайда
 

timaxa007

Модератор
5,831
409
672
В гайде, который ты скинул есть такая вещь
Там есть сноска что это. А так-же комментарий. Типа просто не используй, используй просто:
Java:
serverPlayer.inventory.addItemStackToInventory(new ItemStack(Items.DIAMOND, amount));
oSend приватная и она не видна
Ага, наверное Handler использовалась внутри Message, сделай её public. Я так часто использую.
 

timaxa007

Модератор
5,831
409
672
Копируем ссылку, вставляем в Google переводчик, жмём на результат и видим более-менее перевод - Google Переводчик
---
Регистрировать можно где удобно, но я для удобства использую главный класс.
 
1,193
31
182
Все, вроде допер, пакет работает
Не совсем понимаю часть кода в MyMessageHandler

Java:
@Override
public IMessage onMessage(MyMessage message, MessageContext ctx) {
    
 // This is the player the packet was sent to the server from
 EntityPlayerMP serverPlayer = ctx.getServerHandler().playerEntity;
 // The value that was sent
 int amount = message.toSend;
 // Execute the action on the main server thread by adding it as a scheduled task
 
   serverPlayer.inventory.addItemStackToInventory(new ItemStack(Items.diamond, amount));
 
 // No response packet
 return null;
}
Знаю, что он обрабатывает пакет на сервере, однако, этот код выполняется при прибытии любого пакета, так?
Или я что то путаю
 

timaxa007

Модератор
5,831
409
672
Сверху