Eifel
Модератор
- 1,624
- 79
- 609
Привет!
В общем проблема такая: юзаю PlayerLoggedInEvent и отправляю пакет с капабилитисами для отображения нужной инфы на Гуихе. Запускаю майн, захожу в мир, все норм, пакет пошел, Гуиха работает. Нажимаю кнопочку отключиться(выйти в гл. меню), после чего опять захожу в мир - пакет отправился, но player в handleClientSide у меня теперь null. Соответственно ничего не работает. Код:
P.s. юзаю пакетную систему Ivasik`а
В общем проблема такая: юзаю PlayerLoggedInEvent и отправляю пакет с капабилитисами для отображения нужной инфы на Гуихе. Запускаю майн, захожу в мир, все норм, пакет пошел, Гуиха работает. Нажимаю кнопочку отключиться(выйти в гл. меню), после чего опять захожу в мир - пакет отправился, но player в handleClientSide у меня теперь null. Соответственно ничего не работает. Код:
Код:
@SubscribeEvent
public void syncInvHUD(PlayerLoggedInEvent event) {
if(!event.player.worldObj.isRemote){
IEnhancedInventory cap = event.player.getCapability(EnhancedInventoryProvider.INVENTORY_CAP, null);
NetworkHandler.INSTANCE.sendTo(new HUDSyncMessage(cap), (EntityPlayerMP)event.player);
}
}
Код:
public class HUDSyncMessage extends AbstractPacket<HUDSyncMessage> {
private static NBTTagCompound tag;
public HUDSyncMessage() {}
public HUDSyncMessage(IEnhancedInventory cap) {
tag = new NBTTagCompound();
cap.getInventory().writeToNBT(tag);
}
@Override
public void fromBytes(ByteBuf buf) {
tag = ByteBufUtils.readTag(buf);
}
@Override
public void toBytes(ByteBuf buf) {
ByteBufUtils.writeTag(buf, tag);
}
@Override
public void handleClientSide(EntityPlayer player) {
if(player != null){
IEnhancedInventory cap = player.getCapability(EnhancedInventoryProvider.INVENTORY_CAP, null);
cap.getInventory().readFromNBT(tag);
}else{
System.out.println("player null");
}
}
@Override
public void handleServerSide(EntityPlayer player) {}
}
P.s. юзаю пакетную систему Ivasik`а