Температура равна нулю

Версия Minecraft
1.7.10
1,470
19
189
Что-то у меня пакеты не работают, температуру нулевую возвращает.
Код:
public class NetworkHandler {
 
 public static final SimpleNetworkWrapper NETWORK = NetworkRegistry.INSTANCE.newSimpleChannel("RCCChannel");
 private static int dec;

 public NetworkHandler()
 {
 NETWORK.registerMessage(TempSync.class, TempSync.class, 0, Side.CLIENT);
 }
   
 //Метод который отправляет пакеты всем на клиенте/сервере(Зависит от ситуации)
 public void sendToAll(final IMessage message) 
 {
 NETWORK.sendToAll(message);
 }

   //Метод который отправляет пакет конкретному игроку.
   public void sendTo(final IMessage message, final EntityPlayerMP player) 
   {
       NETWORK.sendTo(message, player);
   }

   //Наш пользовательский метод, который использует LocationDoublePacket для упрощения отправки пакетов методом sendToAllAround.
   public void sendToAllAround(final LocationDoublePacket message, final World world) 
   {
       sendToAllAround(message, message.getTargetPoint(world));
   }

   //Метод который отправляет пакет всем игрокам от отправителя, в определённом радиусе.
   public void sendToAllAround(final IMessage message, final NetworkRegistry.TargetPoint point) 
   {
       NETWORK.sendToAllAround(message, point);
   }

   //Метод который отправляет пакет в определённое измерение.
   public void sendToDimension(final IMessage message, final int dimensionId) 
   {
       NETWORK.sendToDimension(message, dimensionId);
   }

   //Метод который отправляет пакет на сервер.
   public void sendToServer(final IMessage message)
   {
       NETWORK.sendToServer(message);
   }
}

Код:
public class ExtendedPlayer implements IExtendedEntityProperties {
 
 private double temp;
 
 @Override
 public void saveNBTData(NBTTagCompound compound) {
 NBTTagCompound tag = new NBTTagCompound(); 
 tag.setDouble("temp", temp);
    compound.setTag("customAbilities", tag);
 }
 @Override
 public void loadNBTData(NBTTagCompound compound) {
 NBTTagCompound tag = (NBTTagCompound)compound.getTag("customAbilities");
 temp = tag.getDouble("temp");
 }

 @Override
 public void init(Entity entity, World world) {
 this.temp = 36.6;
 }
 
 public void setTemp(double count, final EntityPlayer player) {
 if(RCC.DEBUG) {
 System.out.println("Count: " + count + "\n" + "Temp: " + temp);
 }
 this.temp = count;
 syncTemp(player);
 }
 
 public double getTemp() {
 return this.temp;
 }
 
 public void syncTemp(final EntityPlayer player)
 {
 if(!player.getEntityWorld().isRemote) {
 NetworkHandler.NETWORK.sendTo(new TempSync(this), (EntityPlayerMP) player);
 }
 } 
}

Код:
public class TempSync extends AbstractPacket<TempSync> {

 private double temp;
 
 public TempSync(ExtendedPlayer data){
 this.temp = data.getTemp();
 }
   
 @Override
 /* Получаем данные с сервера */
 public void fromBytes(ByteBuf buf)
 {
 temp = buf.readDouble();
 }

 @Override
 /* Записываем данные в пакет для клиента */
 public void toBytes(ByteBuf buf)
 {
 buf.writeDouble(temp);
 }

 @Override
 public void handleClientSide(EntityPlayer player) {
 if(player != null && player.worldObj != null) {
 ExtendedPlayer data = (ExtendedPlayer) Minecraft.getMinecraft().thePlayer.getExtendedProperties("temp");
 data.setTemp(temp, player);
 }
 }
 
 @Override
 public void handleServerSide(EntityPlayerMP player) {
 
 }
}
 
Решение
Короче, я всё это пофиксил, но вот со своими костылями (и моими, ибо на костылях получатся только костыли) разбирайся сам:

https://www.dropbox.com/s/3uefblr4kxuklbj/TempFix.zip?dl=0

/гита у тебя нет, так что лови мусор-коробку/




Кстати, зачем писать температуру в модах, если есть энвиромайн? Как раз на 1.7.10.

CumingSoon

Местный стендапер
1,634
12
269
"Ниже нуля значительно упали столбики за окнами,
Да и дома у нас не теплее, чем за стеклами,
Покрытыми узорами с обеих сторон."

Гений?

Код:
@Override
 public void handleClientSide(TempSync message, EntityPlayer player) {
 if(player != null && player.worldObj != null) {
 ExtendedPlayer data = (ExtendedPlayer) Minecraft.getMinecraft().thePlayer.getExtendedProperties("temp");
 this.temp = message.temp;

 } 
 }
 
1,200
37
237
CoomingSoon написал(а):
"Ниже нуля значительно упали столбики за окнами,
Да и дома у нас не теплее, чем за стеклами,
Покрытыми узорами с обеих сторон."

Гений?

Код:
@Override
 public void handleClientSide(TempSync message, EntityPlayer player) {
 if(player != null && player.worldObj != null) {
 ExtendedPlayer data = (ExtendedPlayer) Minecraft.getMinecraft().thePlayer.getExtendedProperties("temp");
 this.temp = message.temp;

 } 
 }

У него ещё температура проверялась через клиент событие с биомами, вот сижу и переписываю
 

CumingSoon

Местный стендапер
1,634
12
269
Зачем?)0)
Сам пусть пишет. Ах да, кстати, не нужно обновлять пакет каждый тик. Сделать observer, который будет отсылать пакет при изменении каких-либо данных. Они же не каждый тик меняются.
 
1,200
37
237
CoomingSoon написал(а):
Зачем?)0)
Сам пусть пишет. Ах да, кстати, не нужно обновлять пакет каждый тик. Сделать observer, который будет отсылать пакет при изменении каких-либо данных. Они же не каждый тик меняются.

Я обещал пофиксить температуру, уточнялось ли как?))

Сделал через ПлеерТикЭвент, который проверяет биом игрока (А вот как температуру назначать - задача автора, я пока что увидел лишь if(biome == FOREST) temp=value /ну.. с правильными названиями/
 
1,200
37
237
Короче, я всё это пофиксил, но вот со своими костылями (и моими, ибо на костылях получатся только костыли) разбирайся сам:

https://www.dropbox.com/s/3uefblr4kxuklbj/TempFix.zip?dl=0

/гита у тебя нет, так что лови мусор-коробку/




Кстати, зачем писать температуру в модах, если есть энвиромайн? Как раз на 1.7.10.
 
1,470
19
189
MJaroslav написал(а):
Короче, я всё это пофиксил, но вот со своими костылями (и моими, ибо на костылях получатся только костыли) разбирайся сам:

https://www.dropbox.com/s/3uefblr4kxuklbj/TempFix.zip?dl=0

/гита у тебя нет, так что лови мусор-коробку/




Кстати, зачем писать температуру в модах, если есть энвиромайн? Как раз на 1.7.10.

Какие файлы менял?
 
1,200
37
237
Nix13 написал(а):
Какие файлы менял?

Вот поэтому нужно было на гитхаб заливать ;p

Главный класс дополнил одной строкой, почти весь пакет с событиями, класс с установкой температуры от биома, рендер температуры, сам пакет (класс), может ещё что.
 
1,470
19
189
MJaroslav написал(а):
Nix13 написал(а):
Какие файлы менял?

Вот поэтому нужно было на гитхаб заливать ;p

Главный класс дополнил одной строкой, почти весь пакет с событиями, класс с установкой температуры от биома, рендер температуры, сам пакет (класс), может ещё что.

Температура сбрасывается при перезаходе
 
1,200
37
237
Nix13 написал(а):
MJaroslav написал(а):
Nix13 написал(а):
Какие файлы менял?

Вот поэтому нужно было на гитхаб заливать ;p

Главный класс дополнил одной строкой, почти весь пакет с событиями, класс с установкой температуры от биома, рендер температуры, сам пакет (класс), может ещё что.

Температура сбрасывается при перезаходе
Значит что-то забыл перенести, у меня всё было норм. Ты новый класс мой перенёс?
 
1,470
19
189
MJaroslav написал(а):
Nix13 написал(а):
MJaroslav написал(а):
Nix13 написал(а):
Какие файлы менял?

Вот поэтому нужно было на гитхаб заливать ;p

Главный класс дополнил одной строкой, почти весь пакет с событиями, класс с установкой температуры от биома, рендер температуры, сам пакет (класс), может ещё что.

Температура сбрасывается при перезаходе
Значит что-то забыл перенести, у меня всё было норм. Ты новый класс мой перенёс?

Всё с заменой
 
1,200
37
237
Ну.. выводи в консоль значения (могут отличаться от тех, что на экране игры), смотри, где ломается и чини. Если при перезаходе, то, скорее всего, в событии логина на сервер. Проверь ещё ExtendedPlayer.get(EntityPlayer) на косяк в проверке на нуль, может каждый раз новый создает.
 
1,470
19
189
MJaroslav написал(а):
Ну.. выводи в консоль значения (могут отличаться от тех, что на экране игры), смотри, где ломается и чини. Если при перезаходе, то, скорее всего, в событии логина на сервер. Проверь ещё ExtendedPlayer.get(EntityPlayer) на косяк в проверке на нуль, может каждый раз новый создает.

Какой шиной EventNetwork?
 
1,470
19
189
Thunder написал(а):
А что делается там где игрок заходит?

Код:
@SubscribeEvent
 public void onPlayerLoggedIn(PlayerLoggedInEvent e) {
 if (!e.player.worldObj.isRemote) {
 ExtendedPlayer.get((EntityPlayer) e.player).syncTemp(e.player);
 }
 }
 
1,470
19
189
Код:
@SubscribeEvent
 public void onEntityConstructing(EntityConstructing e) {
 if (e.entity != null && e.entity instanceof EntityPlayer) {
 System.out.println("================================1");
 ExtendedPlayer.get((EntityPlayer) e.entity);
 }
 }

Этот метод не срабатывает
 
1,470
19
189
Код:
public static final ExtendedPlayer get(EntityPlayer player) {
 IExtendedEntityProperties props = player.getExtendedProperties(ExtendedPlayer.EXT_PROP_NAME);
 ExtendedPlayer eplayer = null;
 if (props != null && props instanceof ExtendedPlayer) {
 eplayer = (ExtendedPlayer) props;
 } else {
 eplayer = new ExtendedPlayer(player);
 player.registerExtendedProperties(EXT_PROP_NAME, eplayer);
 }
 return eplayer;
 }

Создал новый мир, метод не сработал
 
Сверху