From 5e5e212c9a00bfd97d847493567188ce7a8642b0 Mon Sep 17 00:00:00 2001 From: luisc Date: Tue, 13 Feb 2024 13:24:25 -0600 Subject: [PATCH] Only partyable quests can be set as party quests. --- src/main/java/noppes/npcs/NBTTags.java | 46 ++++++++++++++----- .../java/noppes/npcs/PacketHandlerServer.java | 2 +- src/main/java/noppes/npcs/QuestLogData.java | 14 ++++-- .../gui/player/inventory/GuiQuestLog.java | 1 + 4 files changed, 47 insertions(+), 16 deletions(-) diff --git a/src/main/java/noppes/npcs/NBTTags.java b/src/main/java/noppes/npcs/NBTTags.java index 9e6e64d3c..3624290f2 100644 --- a/src/main/java/noppes/npcs/NBTTags.java +++ b/src/main/java/noppes/npcs/NBTTags.java @@ -91,6 +91,28 @@ public class NBTTags { } return list; } + + public static HashSet getStringSet(NBTTagList tagList) { + HashSet list = new HashSet<>(); + for(int i = 0; i < tagList.tagCount(); i++) + { + NBTTagCompound nbttagcompound = tagList.getCompoundTagAt(i); + list.add(nbttagcompound.getString("String")); + } + return list; + } + + public static NBTTagList nbtStringSet(HashSet collection) { + NBTTagList nbttaglist = new NBTTagList(); + if(collection == null) + return nbttaglist; + for (String slot : collection) { + NBTTagCompound nbttagcompound = new NBTTagCompound(); + nbttagcompound.setString("String", slot); + nbttaglist.appendTag(nbttagcompound); + } + return nbttaglist; + } public static HashSet getIntegerSet(NBTTagList tagList) { HashSet list = new HashSet(); @@ -102,6 +124,18 @@ public class NBTTags { return list; } + public static NBTTagList nbtIntegerSet(HashSet set) { + NBTTagList nbttaglist = new NBTTagList(); + if(set == null) + return nbttaglist; + for (int slot : set) { + NBTTagCompound nbttagcompound = new NBTTagCompound(); + nbttagcompound.setInteger("Integer", slot); + nbttaglist.appendTag(nbttagcompound); + } + return nbttaglist; + } + public static HashMap getStringStringMap(NBTTagList tagList) { HashMap list = new HashMap(); for(int i = 0; i < tagList.tagCount(); i++) @@ -304,18 +338,6 @@ public class NBTTags { return nbttaglist; } - public static NBTTagList nbtIntegerSet(HashSet set) { - NBTTagList nbttaglist = new NBTTagList(); - if(set == null) - return nbttaglist; - for (int slot : set) { - NBTTagCompound nbttagcompound = new NBTTagCompound(); - nbttagcompound.setInteger("Integer", slot); - nbttaglist.appendTag(nbttagcompound); - } - return nbttaglist; - } - public static NBTTagList nbtVectorMap(HashMap> map) { NBTTagList list = new NBTTagList(); if(map == null) diff --git a/src/main/java/noppes/npcs/PacketHandlerServer.java b/src/main/java/noppes/npcs/PacketHandlerServer.java index 8f8536503..f645ec166 100644 --- a/src/main/java/noppes/npcs/PacketHandlerServer.java +++ b/src/main/java/noppes/npcs/PacketHandlerServer.java @@ -193,7 +193,7 @@ public class PacketHandlerServer{ String questName = Server.readString(buffer); party.setQuest(null); for (Quest quest : QuestController.Instance.quests.values()) { - if (quest.getCategory().getName().equals(questCategory) && quest.getName().equals(questName)) { + if (quest.allowParty && quest.getCategory().getName().equals(questCategory) && quest.getName().equals(questName)) { party.setQuest(quest); break; } diff --git a/src/main/java/noppes/npcs/QuestLogData.java b/src/main/java/noppes/npcs/QuestLogData.java index b2111474d..508fe03b1 100644 --- a/src/main/java/noppes/npcs/QuestLogData.java +++ b/src/main/java/noppes/npcs/QuestLogData.java @@ -9,6 +9,7 @@ import noppes.npcs.controllers.data.PlayerData; import noppes.npcs.controllers.data.Quest; import java.util.HashMap; +import java.util.HashSet; import java.util.Vector; public class QuestLogData { @@ -16,10 +17,11 @@ public class QuestLogData { public HashMap> categories = new HashMap>(); public String selectedQuest = ""; public String selectedCategory = ""; - public HashMap questText = new HashMap(); + public HashMap questText = new HashMap<>(); public HashMap questAlerts = new HashMap<>(); - public HashMap> questStatus = new HashMap>(); - public HashMap finish = new HashMap(); + public HashMap> questStatus = new HashMap<>(); + public HashMap finish = new HashMap<>(); + public HashSet partyAbleQuests = new HashSet<>(); public NBTTagCompound writeNBT(){ NBTTagCompound compound = new NBTTagCompound(); @@ -29,6 +31,7 @@ public class QuestLogData { compound.setTag("Status", NBTTags.nbtVectorMap(questStatus)); compound.setTag("QuestFinisher", NBTTags.nbtStringStringMap(finish)); compound.setString("TrackedQuestID", trackedQuestKey); + compound.setTag("PartyQuests", NBTTags.nbtStringSet(partyAbleQuests)); return compound; } @@ -39,6 +42,7 @@ public class QuestLogData { questStatus = NBTTags.getVectorMap(compound.getTagList("Status", 10)); finish = NBTTags.getStringStringMap(compound.getTagList("QuestFinisher", 10)); trackedQuestKey = compound.getString("TrackedQuestID"); + partyAbleQuests = NBTTags.getStringSet(compound.getTagList("PartyQuests", 10)); } public void setData(EntityPlayer player){ PlayerData playerData = PlayerDataController.Instance.getPlayerData(player); @@ -62,6 +66,10 @@ public class QuestLogData { trackedQuestKey = category + ":" + quest.title; } } + + if (quest.allowParty) { + partyAbleQuests.add(category + ":" + quest.title); + } } } diff --git a/src/main/java/noppes/npcs/client/gui/player/inventory/GuiQuestLog.java b/src/main/java/noppes/npcs/client/gui/player/inventory/GuiQuestLog.java index d21923871..96e083339 100644 --- a/src/main/java/noppes/npcs/client/gui/player/inventory/GuiQuestLog.java +++ b/src/main/java/noppes/npcs/client/gui/player/inventory/GuiQuestLog.java @@ -88,6 +88,7 @@ public class GuiQuestLog extends GuiCNPCInventory implements ITopButtonListener, addButton(new GuiButtonNextPage(2, guiLeft + 144, guiTop + 176, false)); if (ClientCacheHandler.party != null && data.hasSelectedQuest() + && data.partyAbleQuests.contains(data.selectedCategory + ":" + data.selectedQuest) && ClientCacheHandler.party.getPartyLeaderName().equals(this.player.getCommandSenderName())) { String questName = ClientCacheHandler.party.getCurrentQuestName(); GuiNpcButton partyButton = new GuiNpcButton(3, guiLeft + 150, guiTop + 151, 50, 20, new String[]{"party.party", "party.partying"}, Objects.equals(questName, data.selectedQuest) ? 1 : 0);