From 241120c32afa1cc83a6489fc2d32e3baf4ae8ad4 Mon Sep 17 00:00:00 2001 From: "Luis C.M" <42545778+c0508383@users.noreply.github.com> Date: Thu, 11 May 2023 18:29:44 -0500 Subject: [PATCH] Fixes to quest tracking and setting alerts. --- src/main/java/noppes/npcs/PacketHandlerServer.java | 10 +++++++--- .../noppes/npcs/client/gui/player/GuiQuestLog.java | 14 +++++++++----- 2 files changed, 16 insertions(+), 8 deletions(-) diff --git a/src/main/java/noppes/npcs/PacketHandlerServer.java b/src/main/java/noppes/npcs/PacketHandlerServer.java index db0ffe5c5..f3b66a7bd 100644 --- a/src/main/java/noppes/npcs/PacketHandlerServer.java +++ b/src/main/java/noppes/npcs/PacketHandlerServer.java @@ -192,14 +192,18 @@ public class PacketHandlerServer{ } String trackedQuestString = Server.readString(buffer); + Quest prevTracked = (Quest) playerData.questData.trackedQuest; Quest trackedQuest = this.getQuestFromString(trackedQuestString); if (trackedQuest != null) { playerData.questData.trackedQuest = trackedQuest; NoppesUtilPlayer.sendTrackedQuestData(player, trackedQuest); + if (prevTracked != playerData.questData.trackedQuest) { + NoppesUtilPlayer.sendTrackedQuestData(player, (Quest) playerData.questData.trackedQuest); + } + } else { + playerData.questData.trackedQuest = null; + Server.sendData((EntityPlayerMP) player, EnumPacketClient.OVERLAY_QUEST_TRACKING); } - - playerData.questData.trackedQuest = null; - Server.sendData(player, EnumPacketClient.OVERLAY_QUEST_TRACKING); } private void isGuiOpenPacket(ByteBuf buffer, EntityPlayerMP player) throws IOException { diff --git a/src/main/java/noppes/npcs/client/gui/player/GuiQuestLog.java b/src/main/java/noppes/npcs/client/gui/player/GuiQuestLog.java index 7b59feeca..e68c63d6a 100644 --- a/src/main/java/noppes/npcs/client/gui/player/GuiQuestLog.java +++ b/src/main/java/noppes/npcs/client/gui/player/GuiQuestLog.java @@ -20,10 +20,7 @@ import org.lwjgl.opengl.GL11; import tconstruct.client.tabs.InventoryTabQuests; import tconstruct.client.tabs.TabRegistry; -import java.util.ArrayList; -import java.util.Collections; -import java.util.HashMap; -import java.util.List; +import java.util.*; public class GuiQuestLog extends GuiNPCInterface implements ITopButtonListener,ICustomScrollListener, IGuiData{ @@ -36,6 +33,9 @@ public class GuiQuestLog extends GuiNPCInterface implements ITopButtonListener,I private boolean noQuests = false; private boolean questDetails = true; + private HashMap questAlertsOnOpen; + private String trackedQuestKeyOnOpen; + private Minecraft mc = Minecraft.getMinecraft(); public GuiQuestLog(EntityPlayer player) { @@ -245,6 +245,8 @@ public class GuiQuestLog extends GuiNPCInterface implements ITopButtonListener,I QuestLogData data = new QuestLogData(); data.readNBT(compound); this.data = data; + this.questAlertsOnOpen = new HashMap<>(data.questAlerts); + this.trackedQuestKeyOnOpen = data.trackedQuestKey; initGui(); } @@ -256,7 +258,9 @@ public class GuiQuestLog extends GuiNPCInterface implements ITopButtonListener,I @Override public void save() { - if (this.data != null) { + if (this.data != null && + (!Objects.equals(this.questAlertsOnOpen, data.questAlerts) || + !Objects.equals(this.trackedQuestKeyOnOpen, data.trackedQuestKey))) { NBTTagCompound compound = new NBTTagCompound(); compound.setTag("Alerts", NBTTags.nbtStringStringMap(data.questAlerts)); Client.sendData(EnumPacketServer.QuestLogToServer, compound, this.data.trackedQuestKey);