ExtendedPlayer не работает

Статус
В этой теме нельзя размещать новые ответы.
Версия Minecraft
1.7.10
1,470
19
189
Вот код класса, который не работает. Что можно сделать?
При попытки использовать метод getTemp в gui, крашит
ExtendedPlayer
Код:
public final static String EXT_PROP_NAME = "ExtendedPlayer";
 
 public final EntityPlayer player;
 
 private double currentTemp, normalTemp, highTemp, lowTemp;
 
 public ExtendedPlayer(EntityPlayer player) {
 this.player = player;
 this.currentTemp = this.normalTemp = 36.6;
 }
 
 public static final void register(EntityPlayer player)
 {
 player.registerExtendedProperties(ExtendedPlayer.EXT_PROP_NAME, new ExtendedPlayer(player));
 }
 
 public static final ExtendedPlayer get(EntityPlayer player)
 {
 return (ExtendedPlayer) player.getExtendedProperties(EXT_PROP_NAME);
 }
 
 @Override
 public void saveNBTData(NBTTagCompound compound) {
 NBTTagCompound properties = new NBTTagCompound();
 
 properties.setDouble("CurrentTemp", this.currentTemp);
 properties.setDouble("LowTemp", this.lowTemp);
 properties.setDouble("HighTemp", this.highTemp);
 properties.setDouble("NormalTemp", this.normalTemp);
 
 compound.setTag(EXT_PROP_NAME, properties); 
 }

 @Override
 public void loadNBTData(NBTTagCompound compound) {
 NBTTagCompound properties = new NBTTagCompound();
 
 properties.getDouble("CurrentTemp");
 properties.getDouble("LowTemp");
 properties.getDouble("HighTemp");
 properties.getDouble("NormalTemp");
 
 if(RCC.DEBUG) {
 Log.info("Temp from NBT:" + this.currentTemp);
 }
 }

 @Override
 public void init(Entity entity, World world) {
 
 }
 
 public boolean consumeTemp(double amount) {
 boolean sufficient = amount <= this.currentTemp;
 
 this.currentTemp -= (amount < this.currentTemp ? amount : this.currentTemp);

 return sufficient;
 }
 
 public boolean addTemp(double amount) {
 boolean sufficient = amount <= this.currentTemp;
 
 this.currentTemp += (amount < this.currentTemp ? amount : this.currentTemp);

 return sufficient;
 }
 
 public double getTemp() {
 return this.currentTemp;
 }
 
Решение
Миллион туторов есть и по IEEP, и по пакетом. Не можешь исправить синтаксическую ошибку в коде - иди учи java. За время существования темы уже мог бы не просто перебрать все туторы и сделать, что нужно, но и досконально изучить, как все работает внутри.
1,470
19
189
Agravaine написал(а):

Хороший вопрос... А где?


EventHandler
Код:
@SubscribeEvent
 public void onEntityConstructing(EntityConstructing event)
 {
 if (event.entity instanceof EntityPlayer && ExtendedPlayer.get((EntityPlayer) event.entity) == null)
 ExtendedPlayer.register((EntityPlayer) event.entity);
 
 if (event.entity instanceof EntityPlayer && event.entity.getExtendedProperties(ExtendedPlayer.EXT_PROP_NAME) == null)
 event.entity.registerExtendedProperties(ExtendedPlayer.EXT_PROP_NAME, new ExtendedPlayer((EntityPlayer) event.entity));
 }
 
3,005
192
592
@SubscribeEvent
public void onEntityConstructing(EntityConstructing e) {
if (e.entity instanceof EntityPlayer)
IEEP.register((EntityPlayer) e.entity);
}
 
691
1
5
Nix13Chanel написал(а):
Готовьте тапки. Я зарегал не так XD

Вот: Последняя уникальная разработка) XD
1363182175_1843969210.jpg
 
1,470
19
189
Вот такой код на изменение температуры 
Код:
@SubscribeEvent
    public void onClientTickEvent(TickEvent.ClientTickEvent event) {
        Minecraft mc = Minecraft.getMinecraft();
        switch (event.phase) {
        case START:{
         int x = (int)mc.thePlayer.posX;
 int z = (int)mc.thePlayer.posZ;
 BiomeGenBase biome = mc.thePlayer.worldObj.getBiomeGenForCoords(x, z);
 
 ExtendedPlayer props = ExtendedPlayer.get(mc.thePlayer);
 if(biome == BiomeGenBase.forest) {
 props.consumeTemp(0.4F);
 }
 if(biome == BiomeGenBase.desert) {
 props.addTemp(1.0F);
 }

            break;
        }
        default:break;
        }

    }

на строке
Код:
int x = (int)mc.thePlayer.posX;

крашит
 
3,005
192
592
Можно краш?
И почему ты меняешь на клиенте?
В клиенте, после перезапуска - это все обнулится.
А на сервере - вроде бы не будет работать.
 
1,470
19
189
Doc написал(а):
Можно краш?
И почему ты меняешь на клиенте?
В клиенте, после перезапуска - это все обнулится.
А на сервере - вроде бы не будет работать.

Т.е. пилить пакеты?

Код:
java.lang.NullPointerException: Unexpected error
 at com.rcp.rcc.events.BiomeChangeTemp.onClientTickEvent(BiomeChangeTemp.java:30)
 at cpw.mods.fml.common.eventhandler.ASMEventHandler_11_BiomeChangeTemp_onClientTickEvent_ClientTickEvent.invoke(.dynamic)
 at cpw.mods.fml.common.eventhandler.ASMEventHandler.invoke(ASMEventHandler.java:54)
 at cpw.mods.fml.common.eventhandler.EventBus.post(EventBus.java:140)
 at cpw.mods.fml.common.FMLCommonHandler.onPreClientTick(FMLCommonHandler.java:325)
 at net.minecraft.client.Minecraft.runTick(Minecraft.java:1678)
 at net.minecraft.client.Minecraft.runGameLoop(Minecraft.java:1039)
 at net.minecraft.client.Minecraft.run(Minecraft.java:962)
 at net.minecraft.client.main.Main.main(Main.java:164)
 at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
 at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
 at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
 at java.lang.reflect.Method.invoke(Unknown Source)
 at net.minecraft.launchwrapper.Launch.launch(Launch.java:135)
 at net.minecraft.launchwrapper.Launch.main(Launch.java:28)
 at net.minecraftforge.gradle.GradleStartCommon.launch(Unknown Source)
 at GradleStart.main(Unknown Source)
P.S. краш при запуске
 

Icosider

Kotliner
Администратор
3,603
99
664
Nix13Chanel написал(а):
Doc написал(а):
Можно краш?
И почему ты меняешь на клиенте?
В клиенте, после перезапуска - это все обнулится.
А на сервере - вроде бы не будет работать.

Т.е. пилить пакеты?

Код:
java.lang.NullPointerException: Unexpected error
 at com.rcp.rcc.events.BiomeChangeTemp.onClientTickEvent(BiomeChangeTemp.java:30)
 at cpw.mods.fml.common.eventhandler.ASMEventHandler_11_BiomeChangeTemp_onClientTickEvent_ClientTickEvent.invoke(.dynamic)
 at cpw.mods.fml.common.eventhandler.ASMEventHandler.invoke(ASMEventHandler.java:54)
 at cpw.mods.fml.common.eventhandler.EventBus.post(EventBus.java:140)
 at cpw.mods.fml.common.FMLCommonHandler.onPreClientTick(FMLCommonHandler.java:325)
 at net.minecraft.client.Minecraft.runTick(Minecraft.java:1678)
 at net.minecraft.client.Minecraft.runGameLoop(Minecraft.java:1039)
 at net.minecraft.client.Minecraft.run(Minecraft.java:962)
 at net.minecraft.client.main.Main.main(Main.java:164)
 at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
 at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
 at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
 at java.lang.reflect.Method.invoke(Unknown Source)
 at net.minecraft.launchwrapper.Launch.launch(Launch.java:135)
 at net.minecraft.launchwrapper.Launch.main(Launch.java:28)
 at net.minecraftforge.gradle.GradleStartCommon.launch(Unknown Source)
 at GradleStart.main(Unknown Source)
P.S. краш при запуске

Так у тебя нет игрока, проверяй != null игрок и мир.
 
1,470
19
189
Ivasik написал(а):
Nix13Chanel написал(а):
Что-то не пойму как использовать этот код для IEEP

У тебя в IEEP должны быть переменные, типа mana = 0 и т.п., вот их и делай по туториалу.
А что из себя представляет например класс IMana?
 

Icosider

Kotliner
Администратор
3,603
99
664
Nix13Chanel написал(а):
Ivasik написал(а):
Nix13Chanel написал(а):
Что-то не пойму как использовать этот код для IEEP

У тебя в IEEP должны быть переменные, типа mana = 0 и т.п., вот их и делай по туториалу.
А что из себя представляет например класс IMana?

Это интерфейс, в учебнике по жабе описано зачем и как применять.
 
Статус
В этой теме нельзя размещать новые ответы.
Сверху