From 03215e3b5bf6830cd97b3878f0ac0bf1c7fefd6d Mon Sep 17 00:00:00 2001 From: Ellpeck Date: Wed, 15 Jun 2016 17:15:26 +0200 Subject: [PATCH] Fixed crash on singleplayer joining with the new system >_> --- .../actuallyadditions/mod/booklet/GuiBooklet.java | 8 +++----- .../actuallyadditions/mod/data/PlayerData.java | 8 ++++---- .../mod/event/EntityLivingEvents.java | 6 +++--- .../mod/event/PlayerConnectionEvents.java | 14 +++++++------- .../mod/event/PlayerObtainEvents.java | 6 +++--- .../mod/network/PacketHandler.java | 10 ++++++---- .../actuallyadditions/mod/proxy/ClientProxy.java | 1 - 7 files changed, 26 insertions(+), 27 deletions(-) diff --git a/src/main/java/de/ellpeck/actuallyadditions/mod/booklet/GuiBooklet.java b/src/main/java/de/ellpeck/actuallyadditions/mod/booklet/GuiBooklet.java index 4107ac1a9..195ca0f58 100644 --- a/src/main/java/de/ellpeck/actuallyadditions/mod/booklet/GuiBooklet.java +++ b/src/main/java/de/ellpeck/actuallyadditions/mod/booklet/GuiBooklet.java @@ -378,9 +378,9 @@ public class GuiBooklet extends GuiScreen implements IBookletGui{ if(ItemBooklet.forcedEntry == null){ //Open last entry or introductory entry - NBTTagCompound data = PlayerData.getDataFromPlayer(Minecraft.getMinecraft().thePlayer); + PlayerData.PlayerSave data = PlayerData.getDataFromPlayer(Minecraft.getMinecraft().thePlayer); if(data != null){ - if(this.tryOpenMainPage && !data.getBoolean("BookAlreadyOpened")){ + if(this.tryOpenMainPage && !data.theCompound.getBoolean("BookAlreadyOpened")){ BookletUtils.openIndexEntry(this, InitBooklet.chapterIntro.entry, 1, true); BookletUtils.openChapter(this, InitBooklet.chapterIntro, null); @@ -393,7 +393,7 @@ public class GuiBooklet extends GuiScreen implements IBookletGui{ PacketHandler.theNetwork.sendToServer(new PacketClientToServer(dataToSend, PacketHandler.CHANGE_PLAYER_DATA_HANDLER)); } else{ - BookletUtils.openLastBookPage(this, data.getCompoundTag("BookletData")); + BookletUtils.openLastBookPage(this, data.theCompound.getCompoundTag("BookletData")); } } } @@ -446,8 +446,6 @@ public class GuiBooklet extends GuiScreen implements IBookletGui{ @Override public void onGuiClosed(){ if(this.saveOnClose && this.changedPageSinceOpen){ - System.out.println("SAVING"); - NBTTagCompound bookletData = new NBTTagCompound(); BookletUtils.saveBookPage(this, bookletData); diff --git a/src/main/java/de/ellpeck/actuallyadditions/mod/data/PlayerData.java b/src/main/java/de/ellpeck/actuallyadditions/mod/data/PlayerData.java index 6e3b8f905..ef93eda0d 100644 --- a/src/main/java/de/ellpeck/actuallyadditions/mod/data/PlayerData.java +++ b/src/main/java/de/ellpeck/actuallyadditions/mod/data/PlayerData.java @@ -18,25 +18,25 @@ import java.util.UUID; public class PlayerData{ - public static NBTTagCompound getDataFromPlayer(EntityPlayer player){ + public static PlayerSave getDataFromPlayer(EntityPlayer player){ ArrayList data = WorldData.PLAYER_SAVE_DATA; //Get Data from existing data for(PlayerSave save : data){ if(save.thePlayerUUID.equals(player.getUniqueID())){ - return save.theCompound; + return save; } } //Add Data if none is existant PlayerSave aSave = new PlayerSave(player.getUniqueID(), new NBTTagCompound()); data.add(aSave); - return aSave.theCompound; + return aSave; } public static class PlayerSave{ public final UUID thePlayerUUID; - public final NBTTagCompound theCompound; + public NBTTagCompound theCompound; public PlayerSave(UUID theUUID, NBTTagCompound theCompound){ this.thePlayerUUID = theUUID; diff --git a/src/main/java/de/ellpeck/actuallyadditions/mod/event/EntityLivingEvents.java b/src/main/java/de/ellpeck/actuallyadditions/mod/event/EntityLivingEvents.java index 5b255d1a6..6baae896f 100644 --- a/src/main/java/de/ellpeck/actuallyadditions/mod/event/EntityLivingEvents.java +++ b/src/main/java/de/ellpeck/actuallyadditions/mod/event/EntityLivingEvents.java @@ -70,9 +70,9 @@ public class EntityLivingEvents{ public void livingDeathEvent(LivingDeathEvent event){ if(event.getEntityLiving().worldObj != null && !event.getEntityLiving().worldObj.isRemote && event.getEntityLiving() instanceof EntityPlayer){ EntityPlayer player = (EntityPlayer)event.getEntityLiving(); - NBTTagCompound data = PlayerData.getDataFromPlayer(player); + PlayerData.PlayerSave data = PlayerData.getDataFromPlayer(player); - NBTTagList deaths = data.getTagList("Deaths", 10); + NBTTagList deaths = data.theCompound.getTagList("Deaths", 10); while(deaths.tagCount() >= 5){ deaths.removeTag(0); } @@ -83,7 +83,7 @@ public class EntityLivingEvents{ death.setDouble("Z", player.posZ); deaths.appendTag(death); - data.setTag("Deaths", deaths); + data.theCompound.setTag("Deaths", deaths); //player.addChatComponentMessage(new TextComponentTranslation("info."+ModUtil.MOD_ID+".deathRecorded")); } diff --git a/src/main/java/de/ellpeck/actuallyadditions/mod/event/PlayerConnectionEvents.java b/src/main/java/de/ellpeck/actuallyadditions/mod/event/PlayerConnectionEvents.java index ebe6bc096..f385ce589 100644 --- a/src/main/java/de/ellpeck/actuallyadditions/mod/event/PlayerConnectionEvents.java +++ b/src/main/java/de/ellpeck/actuallyadditions/mod/event/PlayerConnectionEvents.java @@ -16,7 +16,7 @@ import de.ellpeck.actuallyadditions.mod.network.PacketHandler; import de.ellpeck.actuallyadditions.mod.network.PacketServerToClient; import de.ellpeck.actuallyadditions.mod.util.ModUtil; import net.minecraft.entity.player.EntityPlayerMP; -import net.minecraft.nbt.NBTTagCompound; +import net.minecraftforge.event.entity.EntityJoinWorldEvent; import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; import net.minecraftforge.fml.common.gameevent.PlayerEvent; @@ -30,12 +30,12 @@ public class PlayerConnectionEvents{ } @SubscribeEvent - public void onLogInEvent(PlayerEvent.PlayerLoggedInEvent event){ - if(!event.player.worldObj.isRemote && event.player instanceof EntityPlayerMP){ - NBTTagCompound data = PlayerData.getDataFromPlayer(event.player); - if(!data.hasNoTags()){ - PacketHandler.theNetwork.sendTo(new PacketServerToClient(data, PacketHandler.PLAYER_DATA_TO_CLIENT_HANDLER), (EntityPlayerMP)event.player); - ModUtil.LOGGER.info("Sending Player Data to player "+event.player.getName()+"!"); + public void onLogInEvent(EntityJoinWorldEvent event){ + if(!event.getEntity().worldObj.isRemote && event.getEntity() instanceof EntityPlayerMP){ + EntityPlayerMP player = (EntityPlayerMP)event.getEntity(); + PlayerData.PlayerSave data = PlayerData.getDataFromPlayer(player); + if(!data.theCompound.hasNoTags()){ + PacketHandler.theNetwork.sendTo(new PacketServerToClient(data.theCompound, PacketHandler.PLAYER_DATA_TO_CLIENT_HANDLER), player); } } } diff --git a/src/main/java/de/ellpeck/actuallyadditions/mod/event/PlayerObtainEvents.java b/src/main/java/de/ellpeck/actuallyadditions/mod/event/PlayerObtainEvents.java index ad78d50c6..49822ea79 100644 --- a/src/main/java/de/ellpeck/actuallyadditions/mod/event/PlayerObtainEvents.java +++ b/src/main/java/de/ellpeck/actuallyadditions/mod/event/PlayerObtainEvents.java @@ -48,9 +48,9 @@ public class PlayerObtainEvents{ String name = event.crafting.getItem().getRegistryName().toString(); if(name != null && name.toLowerCase(Locale.ROOT).contains(ModUtil.MOD_ID)){ - NBTTagCompound compound = PlayerData.getDataFromPlayer(event.player); - if(compound != null && !compound.getBoolean("BookGottenAlready")){ - compound.setBoolean("BookGottenAlready", true); + PlayerData.PlayerSave compound = PlayerData.getDataFromPlayer(event.player); + if(compound != null && !compound.theCompound.getBoolean("BookGottenAlready")){ + compound.theCompound.setBoolean("BookGottenAlready", true); EntityItem entityItem = new EntityItem(event.player.worldObj, event.player.posX, event.player.posY, event.player.posZ, new ItemStack(InitItems.itemBooklet)); entityItem.setPickupDelay(0); diff --git a/src/main/java/de/ellpeck/actuallyadditions/mod/network/PacketHandler.java b/src/main/java/de/ellpeck/actuallyadditions/mod/network/PacketHandler.java index 68eeb5ecc..7d7962e17 100644 --- a/src/main/java/de/ellpeck/actuallyadditions/mod/network/PacketHandler.java +++ b/src/main/java/de/ellpeck/actuallyadditions/mod/network/PacketHandler.java @@ -127,10 +127,10 @@ public final class PacketHandler{ EntityPlayer player = (EntityPlayer)world.getEntityByID(compound.getInteger("PlayerID")); if(player != null){ - NBTTagCompound playerData = PlayerData.getDataFromPlayer(player); - playerData.merge(data); + PlayerData.PlayerSave playerData = PlayerData.getDataFromPlayer(player); + playerData.theCompound.merge(data); if(player instanceof EntityPlayerMP){ - PacketHandler.theNetwork.sendTo(new PacketServerToClient(playerData, PLAYER_DATA_TO_CLIENT_HANDLER), (EntityPlayerMP)player); + PacketHandler.theNetwork.sendTo(new PacketServerToClient(playerData.theCompound, PLAYER_DATA_TO_CLIENT_HANDLER), (EntityPlayerMP)player); } } } @@ -141,7 +141,9 @@ public final class PacketHandler{ @SideOnly(Side.CLIENT) public void handleData(NBTTagCompound compound){ EntityPlayer player = Minecraft.getMinecraft().thePlayer; - PlayerData.getDataFromPlayer(player).merge(compound); + if(player != null){ + PlayerData.getDataFromPlayer(player).theCompound = compound; + } } }; diff --git a/src/main/java/de/ellpeck/actuallyadditions/mod/proxy/ClientProxy.java b/src/main/java/de/ellpeck/actuallyadditions/mod/proxy/ClientProxy.java index 44754379f..9ab99f51a 100644 --- a/src/main/java/de/ellpeck/actuallyadditions/mod/proxy/ClientProxy.java +++ b/src/main/java/de/ellpeck/actuallyadditions/mod/proxy/ClientProxy.java @@ -20,7 +20,6 @@ import de.ellpeck.actuallyadditions.mod.blocks.render.RenderDisplayStand; import de.ellpeck.actuallyadditions.mod.blocks.render.RenderReconstructorLens; import de.ellpeck.actuallyadditions.mod.blocks.render.RenderSmileyCloud; import de.ellpeck.actuallyadditions.mod.config.values.ConfigBoolValues; -import de.ellpeck.actuallyadditions.mod.data.ExtraClientData; import de.ellpeck.actuallyadditions.mod.event.InitEvents; import de.ellpeck.actuallyadditions.mod.fluids.InitFluids; import de.ellpeck.actuallyadditions.mod.misc.special.SpecialRenderInit;