From 545cece3e49786a0ffe6e3b2f798e67b201d7f99 Mon Sep 17 00:00:00 2001 From: KAMKEEL Date: Tue, 21 Mar 2023 19:34:04 -0400 Subject: [PATCH 01/45] Fix Spacing/Indentation Faction Controller --- .../npcs/controllers/FactionController.java | 149 +++++++++--------- 1 file changed, 75 insertions(+), 74 deletions(-) diff --git a/src/main/java/noppes/npcs/controllers/FactionController.java b/src/main/java/noppes/npcs/controllers/FactionController.java index 339362daa..6d1d68784 100644 --- a/src/main/java/noppes/npcs/controllers/FactionController.java +++ b/src/main/java/noppes/npcs/controllers/FactionController.java @@ -18,11 +18,11 @@ import java.util.zip.GZIPInputStream; public class FactionController implements IFactionHandler { public HashMap factions; - + private static FactionController instance; private int lastUsedID = 0; - + public FactionController(){ instance = this; factions = new HashMap(); @@ -32,9 +32,9 @@ public class FactionController implements IFactionHandler { factions.put(1,new Faction(1,"Neutral", 0xF2DD00, 1000)); factions.put(2,new Faction(2,"Aggressive", 0xDD0000, 0)); } - + } - + public static FactionController getInstance(){ return instance; } @@ -50,79 +50,79 @@ public class FactionController implements IFactionHandler { return; } try { - File file = new File(saveDir, "factions.dat"); - if(file.exists()){ - loadFactionsFile(file); - } + File file = new File(saveDir, "factions.dat"); + if(file.exists()){ + loadFactionsFile(file); + } } catch (Exception e) { try { - File file = new File(saveDir, "factions.dat_old"); - if(file.exists()){ - loadFactionsFile(file); - } - + File file = new File(saveDir, "factions.dat_old"); + if(file.exists()){ + loadFactionsFile(file); + } + } catch (Exception ee) { } } } private void loadFactionsFile(File file) throws IOException{ - DataInputStream var1 = new DataInputStream(new BufferedInputStream(new GZIPInputStream(new FileInputStream(file)))); + DataInputStream var1 = new DataInputStream(new BufferedInputStream(new GZIPInputStream(new FileInputStream(file)))); loadFactions(var1); var1.close(); } public void loadFactions(DataInputStream stream) throws IOException{ HashMap factions = new HashMap(); - NBTTagCompound nbttagcompound1 = CompressedStreamTools.read(stream); - lastUsedID = nbttagcompound1.getInteger("lastID"); - NBTTagList list = nbttagcompound1.getTagList("NPCFactions", 10); + NBTTagCompound nbttagcompound1 = CompressedStreamTools.read(stream); + lastUsedID = nbttagcompound1.getInteger("lastID"); + NBTTagList list = nbttagcompound1.getTagList("NPCFactions", 10); - if(list != null){ - for(int i = 0; i < list.tagCount(); i++) - { - NBTTagCompound nbttagcompound = list.getCompoundTagAt(i); - Faction faction = new Faction(); - faction.readNBT(nbttagcompound); - factions.put(faction.id,faction); - } - } - this.factions = factions; + if(list != null){ + for(int i = 0; i < list.tagCount(); i++) + { + NBTTagCompound nbttagcompound = list.getCompoundTagAt(i); + Faction faction = new Faction(); + faction.readNBT(nbttagcompound); + factions.put(faction.id,faction); + } + } + this.factions = factions; } public NBTTagCompound getNBT(){ - NBTTagList list = new NBTTagList(); - for(int slot : factions.keySet()){ - Faction faction = factions.get(slot); - NBTTagCompound nbtfactions = new NBTTagCompound(); - faction.writeNBT(nbtfactions); - list.appendTag(nbtfactions); - } - NBTTagCompound nbttagcompound = new NBTTagCompound(); - nbttagcompound.setInteger("lastID", lastUsedID); - nbttagcompound.setTag("NPCFactions", list); - return nbttagcompound; + NBTTagList list = new NBTTagList(); + for(int slot : factions.keySet()){ + Faction faction = factions.get(slot); + NBTTagCompound nbtfactions = new NBTTagCompound(); + faction.writeNBT(nbtfactions); + list.appendTag(nbtfactions); + } + NBTTagCompound nbttagcompound = new NBTTagCompound(); + nbttagcompound.setInteger("lastID", lastUsedID); + nbttagcompound.setTag("NPCFactions", list); + return nbttagcompound; } public void saveFactions(){ try { File saveDir = CustomNpcs.getWorldSaveDirectory(); - File file = new File(saveDir, "factions.dat_new"); - File file1 = new File(saveDir, "factions.dat_old"); - File file2 = new File(saveDir, "factions.dat"); - CompressedStreamTools.writeCompressed(getNBT(), new FileOutputStream(file)); - if(file1.exists()) - { - file1.delete(); - } - file2.renameTo(file1); - if(file2.exists()) - { - file2.delete(); - } - file.renameTo(file2); - if(file.exists()) - { - file.delete(); - } + File file = new File(saveDir, "factions.dat_new"); + File file1 = new File(saveDir, "factions.dat_old"); + File file2 = new File(saveDir, "factions.dat"); + CompressedStreamTools.writeCompressed(getNBT(), new FileOutputStream(file)); + if(file1.exists()) + { + file1.delete(); + } + file2.renameTo(file1); + if(file2.exists()) + { + file2.delete(); + } + file.renameTo(file2); + if(file.exists()) + { + file.delete(); + } } catch (Exception e) { LogWriter.except(e); } @@ -166,7 +166,7 @@ public class FactionController implements IFactionHandler { this.saveFaction(faction); return faction; } - + public int getUnusedId(){ if(lastUsedID == 0){ for(int catid : factions.keySet()) @@ -191,7 +191,7 @@ public class FactionController implements IFactionHandler { return null; } } - + public int getFirstFactionId() { return factions.keySet().iterator().next(); } @@ -206,22 +206,23 @@ public class FactionController implements IFactionHandler { return true; return false; } - public Faction getFactionFromName(String factioname){ - for (Map.Entryentryfaction:FactionController.getInstance().factions.entrySet()){ - if (entryfaction.getValue().name.equalsIgnoreCase(factioname)){ - return entryfaction.getValue(); - } - } - return null; - } - - public String[] getNames() { - String[] names = new String[factions.size()]; - int i = 0; - for(Faction faction : factions.values()){ - names[i] = faction.name.toLowerCase(); - i++; + + public Faction getFactionFromName(String factioname){ + for (Map.Entryentryfaction:FactionController.getInstance().factions.entrySet()){ + if (entryfaction.getValue().name.equalsIgnoreCase(factioname)){ + return entryfaction.getValue(); } - return names; } + return null; + } + + public String[] getNames() { + String[] names = new String[factions.size()]; + int i = 0; + for(Faction faction : factions.values()){ + names[i] = faction.name.toLowerCase(); + i++; + } + return names; + } } From 3df8acfaeec665d4458c3666012c96cffd85a5c6 Mon Sep 17 00:00:00 2001 From: KAMKEEL Date: Tue, 21 Mar 2023 19:34:24 -0400 Subject: [PATCH 02/45] GetAnimation / AnimationNames --- .../npcs/controllers/AnimationController.java | 25 +++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/src/main/java/noppes/npcs/controllers/AnimationController.java b/src/main/java/noppes/npcs/controllers/AnimationController.java index 120574bf2..897402a35 100644 --- a/src/main/java/noppes/npcs/controllers/AnimationController.java +++ b/src/main/java/noppes/npcs/controllers/AnimationController.java @@ -5,6 +5,7 @@ import noppes.npcs.LogWriter; import noppes.npcs.api.handler.IAnimationHandler; import noppes.npcs.api.handler.data.IAnimation; import noppes.npcs.controllers.data.Animation; +import noppes.npcs.controllers.data.Faction; import noppes.npcs.util.NBTJsonUtil; import java.io.File; @@ -20,6 +21,10 @@ public class AnimationController implements IAnimationHandler { load(); } + public static AnimationController getInstance(){ + return instance; + } + public void load(){ LogWriter.info("Loading animations..."); loadAnimations(); @@ -100,4 +105,24 @@ public class AnimationController implements IAnimationHandler { ArrayList animations = new ArrayList<>(this.animations.values()); return animations.toArray(new IAnimation[0]); } + + public Animation getAnimationFromName(String animation){ + for (Map.Entry entryAnimation : AnimationController.getInstance().animations.entrySet()){ + if (entryAnimation.getValue().name.equalsIgnoreCase(animation)){ + return entryAnimation.getValue(); + } + } + return null; + } + + public String[] getNames() { + String[] names = new String[animations.size()]; + int i = 0; + for(Animation animation : animations.values()){ + names[i] = animation.name.toLowerCase(); + i++; + } + return names; + } + } From 44c0ecc3fd88523939500018fbb38cd4301774b3 Mon Sep 17 00:00:00 2001 From: KAMKEEL Date: Tue, 21 Mar 2023 19:34:30 -0400 Subject: [PATCH 03/45] Animation Command framework --- src/main/java/kamkeel/AnimationCommand.java | 67 +++++++++++++++++++++ 1 file changed, 67 insertions(+) create mode 100644 src/main/java/kamkeel/AnimationCommand.java diff --git a/src/main/java/kamkeel/AnimationCommand.java b/src/main/java/kamkeel/AnimationCommand.java new file mode 100644 index 000000000..2326fe809 --- /dev/null +++ b/src/main/java/kamkeel/AnimationCommand.java @@ -0,0 +1,67 @@ +package kamkeel; + +import net.minecraft.command.CommandBase; +import net.minecraft.command.CommandException; +import net.minecraft.command.ICommandSender; +import net.minecraft.entity.monster.EntityEnderman; +import noppes.npcs.controllers.AnimationController; +import noppes.npcs.controllers.PlayerDataController; +import noppes.npcs.controllers.data.Animation; +import noppes.npcs.controllers.data.PlayerData; +import noppes.npcs.controllers.data.PlayerFactionData; + +import java.util.Arrays; +import java.util.List; + +public class AnimationCommand extends CommandKamkeelBase { + + public Animation selectedAnimation; + public List data; + + @Override + public String getCommandName() { + return "animation"; + } + + @Override + public String getDescription() { + return "Animation operations"; + } + + @Override + public String getUsage() { + return " "; + } + + @Override + public boolean runSubCommands(){ + return false; + } + + @Override + public void processCommand(ICommandSender sender, String[] args) throws CommandException { + String playername = args[0]; + String animationName = args[1]; + + data = PlayerDataController.instance.getPlayersData(sender, playername); + if (data.isEmpty()) { + throw new CommandException("Unknown player: " + playername); + } + + selectedAnimation = AnimationController.getInstance().getAnimationFromName(animationName); + + if (selectedAnimation == null) { + throw new CommandException("Unknown animation: " + animationName); + } + + processSubCommand(sender, args[2], Arrays.copyOfRange(args, 3, args.length)); + } + + @SubCommand( + desc = "play animation", + usage = " play" + ) + public void play(ICommandSender sender, String[] args) throws CommandException { + + } +} From 7bd14b06dde4f6d2247354fa90172f6b9cae3e2a Mon Sep 17 00:00:00 2001 From: KAMKEEL Date: Tue, 21 Mar 2023 19:37:04 -0400 Subject: [PATCH 04/45] Move InnDoorData to proper directory --- .../java/noppes/npcs/controllers/{ => data}/InnDoorData.java | 2 +- src/main/java/noppes/npcs/roles/RoleInnkeeper.java | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) rename src/main/java/noppes/npcs/controllers/{ => data}/InnDoorData.java (69%) diff --git a/src/main/java/noppes/npcs/controllers/InnDoorData.java b/src/main/java/noppes/npcs/controllers/data/InnDoorData.java similarity index 69% rename from src/main/java/noppes/npcs/controllers/InnDoorData.java rename to src/main/java/noppes/npcs/controllers/data/InnDoorData.java index 07c653c3d..18397afc8 100644 --- a/src/main/java/noppes/npcs/controllers/InnDoorData.java +++ b/src/main/java/noppes/npcs/controllers/data/InnDoorData.java @@ -1,4 +1,4 @@ -package noppes.npcs.controllers; +package noppes.npcs.controllers.data; public class InnDoorData { public int x = 0; diff --git a/src/main/java/noppes/npcs/roles/RoleInnkeeper.java b/src/main/java/noppes/npcs/roles/RoleInnkeeper.java index 7e8bee8df..d910af254 100644 --- a/src/main/java/noppes/npcs/roles/RoleInnkeeper.java +++ b/src/main/java/noppes/npcs/roles/RoleInnkeeper.java @@ -5,7 +5,7 @@ import net.minecraft.nbt.NBTBase; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.nbt.NBTTagList; import net.minecraft.util.ChatComponentTranslation; -import noppes.npcs.controllers.InnDoorData; +import noppes.npcs.controllers.data.InnDoorData; import noppes.npcs.entity.EntityNPCInterface; import java.util.HashMap; From 87949b62faf8dd6bd61c77727b43ae6341d5a071 Mon Sep 17 00:00:00 2001 From: KAMKEEL Date: Wed, 22 Mar 2023 04:31:47 -0400 Subject: [PATCH 05/45] Delete SubGUI Filters --- .../npcs/client/gui/SubGuiNpcFilterTags.java | 67 ------------------- 1 file changed, 67 deletions(-) delete mode 100644 src/main/java/noppes/npcs/client/gui/SubGuiNpcFilterTags.java diff --git a/src/main/java/noppes/npcs/client/gui/SubGuiNpcFilterTags.java b/src/main/java/noppes/npcs/client/gui/SubGuiNpcFilterTags.java deleted file mode 100644 index de2a1df84..000000000 --- a/src/main/java/noppes/npcs/client/gui/SubGuiNpcFilterTags.java +++ /dev/null @@ -1,67 +0,0 @@ -package noppes.npcs.client.gui; - -import net.minecraft.client.gui.GuiButton; -import net.minecraft.util.StatCollector; -import noppes.npcs.client.gui.util.GuiCustomScroll; -import noppes.npcs.client.gui.util.GuiNpcButton; -import noppes.npcs.client.gui.util.GuiNpcLabel; -import noppes.npcs.client.gui.util.SubGuiInterface; - -import java.util.*; - -public class SubGuiNpcFilterTags extends SubGuiInterface -{ - ArrayList allTags = new ArrayList<>(); - HashSet filter; - public GuiCustomScroll filterScroll; - public boolean showNoTags; - - public SubGuiNpcFilterTags(){ - setBackground("menubg.png"); - xSize = 305; - ySize = 200; - closeOnEsc = true; - this.allTags.addAll(GuiNpcMobSpawner.allTags); - this.filter = GuiNpcMobSpawner.filter; - this.showNoTags = GuiNpcMobSpawner.showNoTags; - } - - public void initGui(){ - super.initGui(); - if(filterScroll == null){ - filterScroll = new GuiCustomScroll(this,0); - filterScroll.setSize(140, 180); - } - filterScroll.guiLeft = guiLeft + 4; - filterScroll.guiTop = guiTop + 14; - filterScroll.setList(this.allTags); - filterScroll.multipleSelection = true; - filterScroll.setSelectedList(this.filter); - this.addScroll(filterScroll); - - addButton(new GuiNpcButton(10, guiLeft + 150, guiTop + 20, 120, 20, "gui.selectAll")); - addButton(new GuiNpcButton(11, guiLeft + 150, guiTop + 43, 120, 20, "gui.deselectAll")); - addLabel(new GuiNpcLabel(1, StatCollector.translateToLocal("tags.taglessEntries") + ":", guiLeft + 150, guiTop + 72)); - addButton(new GuiNpcButton(12, guiLeft + 240, guiTop + 65, new String[]{"display.show", "display.hide"}, showNoTags ? 0 : 1)); - getButton(12).width = 60; - getButton(12).height = 20; - - addButton(new GuiNpcButton(66, guiLeft + 240, guiTop + 175, 60, 20, "gui.done")); - } - - protected void actionPerformed(GuiButton guibutton){ - if (guibutton.id == 10) { - HashSet hashSet = new HashSet<>(this.allTags); - filterScroll.setSelectedList(hashSet); - } - if (guibutton.id == 11) { - filterScroll.setSelectedList(new HashSet<>()); - } - if (guibutton.id == 12) { - showNoTags = !showNoTags; - } - if (guibutton.id == 66) { - close(); - } - } -} From 7b239ea6bda62db1d2c1adc4cbfa7d605bc516a2 Mon Sep 17 00:00:00 2001 From: KAMKEEL Date: Wed, 22 Mar 2023 04:32:00 -0400 Subject: [PATCH 06/45] Add Filters Tab to Cloner --- .../npcs/client/gui/GuiNpcMobSpawner.java | 111 +++++++++++------- 1 file changed, 70 insertions(+), 41 deletions(-) diff --git a/src/main/java/noppes/npcs/client/gui/GuiNpcMobSpawner.java b/src/main/java/noppes/npcs/client/gui/GuiNpcMobSpawner.java index 504ce1fd7..a7fede545 100644 --- a/src/main/java/noppes/npcs/client/gui/GuiNpcMobSpawner.java +++ b/src/main/java/noppes/npcs/client/gui/GuiNpcMobSpawner.java @@ -7,6 +7,7 @@ import net.minecraft.entity.EntityList; import net.minecraft.entity.EntityLiving; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.nbt.NBTTagList; +import net.minecraft.util.StatCollector; import net.minecraft.world.World; import noppes.npcs.client.Client; import noppes.npcs.client.controllers.ClientCloneController; @@ -17,14 +18,16 @@ import noppes.npcs.controllers.data.Tag; import java.lang.reflect.Modifier; import java.util.*; -public class GuiNpcMobSpawner extends GuiNPCInterface implements IScrollData,IGuiData,ISubGuiListener { +public class GuiNpcMobSpawner extends GuiNPCInterface implements IScrollData,IGuiData { public static HashSet allTags = new HashSet<>(); public static HashSet filter = new HashSet<>(); - public static boolean showNoTags = true; + public static boolean showHidden = false; public HashMap> tags = new HashMap<>(); private final GuiCustomScrollCloner scroll = new GuiCustomScrollCloner(this,0); + private final GuiCustomScroll filterScroll = new GuiCustomScroll(this,1); + private int posX,posY,posZ; private List list; @@ -57,9 +60,14 @@ public class GuiNpcMobSpawner extends GuiNPCInterface implements IScrollData,IGu scroll.setSize(293, 188); scroll.guiLeft = guiLeft + 4; scroll.guiTop = guiTop + 26; - addScroll(scroll); - addTextField(new GuiNpcTextField(1, this, fontRendererObj, guiLeft + 4, guiTop + 4, 293, 20, search)); + filterScroll.clear(); + filterScroll.setSize(140, 188); + filterScroll.guiLeft = guiLeft + 4; + filterScroll.guiTop = guiTop + 19; + filterScroll.setList(new ArrayList<>(allTags)); + filterScroll.multipleSelection = true; + filterScroll.setSelectedList(filter); GuiMenuTopButton button; addTopButton(button = new GuiMenuTopButton(3,guiLeft + 4, guiTop - 17, "spawner.clones")); @@ -68,41 +76,53 @@ public class GuiNpcMobSpawner extends GuiNPCInterface implements IScrollData,IGu button.active = showingClones == 2; addTopButton(button = new GuiMenuTopButton(4, button, "spawner.entities")); button.active = showingClones == 1; + addTopButton(button = new GuiMenuTopButton(16, guiLeft + (xSize - 67), guiTop - 17, "gui.filters")); + button.active = showingClones == 3; + addTopButton(button = new GuiMenuTopButton(17, guiLeft + (xSize - 22), guiTop - 17, "X")); + if (showingClones < 3){ + addScroll(scroll); + addTextField(new GuiNpcTextField(1, this, fontRendererObj, guiLeft + 4, guiTop + 4, 293, 20, search)); + addButton(new GuiNpcButton(1, guiLeft + 298, guiTop + 6, 52, 20, "item.monsterPlacer.name")); + addButton(new GuiNpcButton(2, guiLeft + 298, guiTop + 100, 52, 20, "spawner.mobspawner")); - addButton(new GuiNpcButton(1, guiLeft + 298, guiTop + 6, 52, 20, "item.monsterPlacer.name")); + if(showingClones == 0 || showingClones == 2){ - addButton(new GuiNpcButton(7, guiLeft + 298, guiTop + 78, 52, 20, "gui.filters")); - addButton(new GuiNpcButton(2, guiLeft + 298, guiTop + 100, 52, 20, "spawner.mobspawner")); + addSideButton(new GuiMenuSideButton(21,guiLeft - 70, this.guiTop + 2, 70,22, "1")); + addSideButton(new GuiMenuSideButton(22,guiLeft - 70, this.guiTop + 23, 70,22, "2")); + addSideButton(new GuiMenuSideButton(23,guiLeft - 70, this.guiTop + 44, 70,22, "3")); + addSideButton(new GuiMenuSideButton(24,guiLeft - 70, this.guiTop + 65, 70,22, "4")); + addSideButton(new GuiMenuSideButton(25,guiLeft - 70, this.guiTop + 86, 70,22, "5")); + addSideButton(new GuiMenuSideButton(26,guiLeft - 70, this.guiTop + 107, 35,22, "6")); + addSideButton(new GuiMenuSideButton(27,guiLeft - 35, this.guiTop + 107, 35,22, "7")); + addSideButton(new GuiMenuSideButton(28,guiLeft - 70, this.guiTop + 128, 35,22, "8")); + addSideButton(new GuiMenuSideButton(29,guiLeft - 35, this.guiTop + 128, 35,22, "9")); + addSideButton(new GuiMenuSideButton(30,guiLeft - 70, this.guiTop + 149, 35,22, "10")); + addSideButton(new GuiMenuSideButton(31,guiLeft - 35, this.guiTop + 149, 35,22, "11")); + addSideButton(new GuiMenuSideButton(32,guiLeft - 70, this.guiTop + 170, 35,22, "12")); + addSideButton(new GuiMenuSideButton(33,guiLeft - 35, this.guiTop + 170, 35,22, "13")); + addSideButton(new GuiMenuSideButton(34,guiLeft - 70, this.guiTop + 191, 35,22, "14")); + addSideButton(new GuiMenuSideButton(35,guiLeft - 35, this.guiTop + 191, 35,22, "15")); - if(showingClones == 0 || showingClones == 2){ + addButton(new GuiNpcButton(6, guiLeft + 298, guiTop + 190, 52, 20, "gui.remove")); - addSideButton(new GuiMenuSideButton(21,guiLeft - 70, this.guiTop + 2, 70,22, "1")); - addSideButton(new GuiMenuSideButton(22,guiLeft - 70, this.guiTop + 23, 70,22, "2")); - addSideButton(new GuiMenuSideButton(23,guiLeft - 70, this.guiTop + 44, 70,22, "3")); - addSideButton(new GuiMenuSideButton(24,guiLeft - 70, this.guiTop + 65, 70,22, "4")); - addSideButton(new GuiMenuSideButton(25,guiLeft - 70, this.guiTop + 86, 70,22, "5")); - addSideButton(new GuiMenuSideButton(26,guiLeft - 70, this.guiTop + 107, 35,22, "6")); - addSideButton(new GuiMenuSideButton(27,guiLeft - 35, this.guiTop + 107, 35,22, "7")); - addSideButton(new GuiMenuSideButton(28,guiLeft - 70, this.guiTop + 128, 35,22, "8")); - addSideButton(new GuiMenuSideButton(29,guiLeft - 35, this.guiTop + 128, 35,22, "9")); - addSideButton(new GuiMenuSideButton(30,guiLeft - 70, this.guiTop + 149, 35,22, "10")); - addSideButton(new GuiMenuSideButton(31,guiLeft - 35, this.guiTop + 149, 35,22, "11")); - addSideButton(new GuiMenuSideButton(32,guiLeft - 70, this.guiTop + 170, 35,22, "12")); - addSideButton(new GuiMenuSideButton(33,guiLeft - 35, this.guiTop + 170, 35,22, "13")); - addSideButton(new GuiMenuSideButton(34,guiLeft - 70, this.guiTop + 191, 35,22, "14")); - addSideButton(new GuiMenuSideButton(35,guiLeft - 35, this.guiTop + 191, 35,22, "15")); + getSideButton(20 + activeTab).active = true; + showClones(); + } + else { + showEntities(); + } + } else { + // Show Filters + addLabel(new GuiNpcLabel(1, StatCollector.translateToLocal("menu.tags"), guiLeft + 7, guiTop + 7)); + addScroll(filterScroll); - - - // addButton(new GuiNpcButton(6, guiLeft + 298, guiTop + 190, 82, 20, "gui.remove")); - addButton(new GuiNpcButton(6, guiLeft + 298, guiTop + 190, 52, 20, "gui.remove")); - - getSideButton(20 + activeTab).active = true; - showClones(); - } - else{ - showEntities(); + addButton(new GuiNpcButton(10, guiLeft + 150, guiTop + 20, 120, 20, "gui.selectAll")); + addButton(new GuiNpcButton(11, guiLeft + 150, guiTop + 43, 120, 20, "gui.deselectAll")); + addLabel(new GuiNpcLabel(2, StatCollector.translateToLocal("tags.taglessEntries") + ":", guiLeft + 150, guiTop + 72)); + addButton(new GuiNpcButton(12, guiLeft + 240, guiTop + 65, new String[]{"display.show", "display.hide"}, showHidden ? 0 : 1)); + getButton(12).width = 60; + getButton(12).height = 20; } } @@ -220,6 +240,13 @@ public class GuiNpcMobSpawner extends GuiNPCInterface implements IScrollData,IGu showingClones = 2; initGui(); } + if(id == 16){ + showingClones = 3; + initGui(); + } + if(id == 17){ + close(); + } if(id == 6){ if(scroll.getSelected() != null){ if(showingClones == 2){ @@ -234,6 +261,16 @@ public class GuiNpcMobSpawner extends GuiNPCInterface implements IScrollData,IGu if (id == 7) { setSubGui(new SubGuiNpcFilterTags()); } + if (id == 10) { + HashSet hashSet = new HashSet<>(allTags); + filterScroll.setSelectedList(hashSet); + } + if (id == 11) { + filterScroll.setSelectedList(new HashSet<>()); + } + if (id == 12) { + showHidden = !showHidden; + } if(id > 20){ activeTab = id - 20; initGui(); @@ -244,7 +281,6 @@ public class GuiNpcMobSpawner extends GuiNPCInterface implements IScrollData,IGu public void setData(Vector list, HashMap data) { allTags.addAll(list); - filter.addAll(allTags); } @Override @@ -286,11 +322,4 @@ public class GuiNpcMobSpawner extends GuiNPCInterface implements IScrollData,IGu } } - @Override - public void subGuiClosed(SubGuiInterface subgui) { - SubGuiNpcFilterTags filterGui = (SubGuiNpcFilterTags) subgui; - filter = filterGui.filterScroll.getSelectedList(); - showNoTags = filterGui.showNoTags; - initGui(); - } } \ No newline at end of file From de4b169754f166262943721ef9f887a14717927f Mon Sep 17 00:00:00 2001 From: KAMKEEL Date: Wed, 22 Mar 2023 04:32:06 -0400 Subject: [PATCH 07/45] Refactor --- .../java/noppes/npcs/client/gui/util/GuiCustomScrollCloner.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/noppes/npcs/client/gui/util/GuiCustomScrollCloner.java b/src/main/java/noppes/npcs/client/gui/util/GuiCustomScrollCloner.java index d9addc3f3..155a7244d 100644 --- a/src/main/java/noppes/npcs/client/gui/util/GuiCustomScrollCloner.java +++ b/src/main/java/noppes/npcs/client/gui/util/GuiCustomScrollCloner.java @@ -31,7 +31,7 @@ public class GuiCustomScrollCloner extends GuiCustomScroll { if (!inFilter) { continue; } - } else if (!GuiNpcMobSpawner.showNoTags) { + } else if (!GuiNpcMobSpawner.showHidden) { continue; } From 6e74bc0597b7db9774fd5249ad44cf30a408b500 Mon Sep 17 00:00:00 2001 From: KAMKEEL Date: Wed, 22 Mar 2023 04:33:53 -0400 Subject: [PATCH 08/45] Remove SubGUI Button --- src/main/java/noppes/npcs/client/gui/GuiNpcMobSpawner.java | 3 --- 1 file changed, 3 deletions(-) diff --git a/src/main/java/noppes/npcs/client/gui/GuiNpcMobSpawner.java b/src/main/java/noppes/npcs/client/gui/GuiNpcMobSpawner.java index a7fede545..9d2371ab0 100644 --- a/src/main/java/noppes/npcs/client/gui/GuiNpcMobSpawner.java +++ b/src/main/java/noppes/npcs/client/gui/GuiNpcMobSpawner.java @@ -258,9 +258,6 @@ public class GuiNpcMobSpawner extends GuiNPCInterface implements IScrollData,IGu initGui(); } } - if (id == 7) { - setSubGui(new SubGuiNpcFilterTags()); - } if (id == 10) { HashSet hashSet = new HashSet<>(allTags); filterScroll.setSelectedList(hashSet); From 6714daa60a83cc2a5639763c9ec3e2a83b66187a Mon Sep 17 00:00:00 2001 From: KAMKEEL Date: Wed, 22 Mar 2023 04:34:02 -0400 Subject: [PATCH 09/45] TagMap initial commit --- .../noppes/npcs/controllers/data/TagMap.java | 47 +++++++++++++++++++ 1 file changed, 47 insertions(+) create mode 100644 src/main/java/noppes/npcs/controllers/data/TagMap.java diff --git a/src/main/java/noppes/npcs/controllers/data/TagMap.java b/src/main/java/noppes/npcs/controllers/data/TagMap.java new file mode 100644 index 000000000..8c7b2aa3c --- /dev/null +++ b/src/main/java/noppes/npcs/controllers/data/TagMap.java @@ -0,0 +1,47 @@ +package noppes.npcs.controllers.data; + +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.nbt.NBTTagList; +import java.util.*; + +public class TagMap { + public int cloneTab; + public HashMap> tagMap; + + public TagMap(int tab){ + this.cloneTab = tab; + this.tagMap = new HashMap>(); + } + + public void readNBT(NBTTagCompound compound){ + NBTTagList list = compound.getTagList(String.valueOf((cloneTab)), 10); + if(list != null){ + for(int i = 0; i < list.tagCount(); i++) + { + NBTTagCompound nbttagcompound = list.getCompoundTagAt(i); + String cloneName = nbttagcompound.getString("Clone"); + NBTTagList allUUIDs = compound.getTagList("UUIDs", 10); + Set uuids = new HashSet(); + if(list != allUUIDs){ + for(int j = 0; j < allUUIDs.tagCount(); j++) + { + NBTTagCompound uuidCompound = list.getCompoundTagAt(j); + String uuid = nbttagcompound.getString("UUID"); + if(!uuid.isEmpty()){ + uuids.add(UUID.fromString(uuid)); + } + } + } + tagMap.put(cloneName, uuids); + } + } + } + public void writeNBT(NBTTagCompound compound){ + + } + + public int getCloneTab() { + return this.cloneTab; + } + +} From eb11170a9b8fac0433c09ff1e49a449895e00b4a Mon Sep 17 00:00:00 2001 From: KAMKEEL Date: Wed, 22 Mar 2023 04:52:16 -0400 Subject: [PATCH 10/45] TagMap writeToNBT --- .../noppes/npcs/controllers/data/TagMap.java | 27 ++++++++++++++++--- 1 file changed, 24 insertions(+), 3 deletions(-) diff --git a/src/main/java/noppes/npcs/controllers/data/TagMap.java b/src/main/java/noppes/npcs/controllers/data/TagMap.java index 8c7b2aa3c..1221ba9cc 100644 --- a/src/main/java/noppes/npcs/controllers/data/TagMap.java +++ b/src/main/java/noppes/npcs/controllers/data/TagMap.java @@ -14,7 +14,7 @@ public class TagMap { } public void readNBT(NBTTagCompound compound){ - NBTTagList list = compound.getTagList(String.valueOf((cloneTab)), 10); + NBTTagList list = compound.getTagList(String.valueOf(cloneTab), 10); if(list != null){ for(int i = 0; i < list.tagCount(); i++) { @@ -35,9 +35,30 @@ public class TagMap { tagMap.put(cloneName, uuids); } } - } - public void writeNBT(NBTTagCompound compound){ + } + public NBTTagCompound writeNBT(){ + NBTTagCompound nbt = new NBTTagCompound(); + + NBTTagList cloneList = new NBTTagList(); + for(String key: tagMap.keySet()){ + Set uuidSet = tagMap.get(key); + if(uuidSet.size() > 0){ + NBTTagCompound cloneCompound = new NBTTagCompound(); + cloneCompound.setString("Clone", key); + NBTTagList uuidList = new NBTTagList(); + for(UUID uuid : uuidSet){ + NBTTagCompound uuidCompound = new NBTTagCompound(); + uuidCompound.setString("UUID", uuid.toString()); + uuidList.appendTag(uuidCompound); + } + cloneCompound.setTag("UUIDs", uuidList); + cloneList.appendTag(cloneCompound); + } + } + + nbt.setTag(String.valueOf(cloneTab), cloneList); + return nbt; } public int getCloneTab() { From a2af8ca0b2bee2f6bd09189691c36c73e416c3f9 Mon Sep 17 00:00:00 2001 From: KAMKEEL Date: Wed, 22 Mar 2023 11:52:33 -0400 Subject: [PATCH 11/45] Apply isKilled() to update AI Tasks if NPC dies --- .../java/noppes/npcs/entity/EntityNPCInterface.java | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/src/main/java/noppes/npcs/entity/EntityNPCInterface.java b/src/main/java/noppes/npcs/entity/EntityNPCInterface.java index ce7a2f603..2d2c56aa0 100644 --- a/src/main/java/noppes/npcs/entity/EntityNPCInterface.java +++ b/src/main/java/noppes/npcs/entity/EntityNPCInterface.java @@ -291,6 +291,8 @@ public abstract class EntityNPCInterface extends EntityCreature implements IEnti if(getHealth() <= 0){ clearActivePotions(); setBoolFlag(true, 8); + updateTasks(); + updateHitbox(); } setBoolFlag(this.getAttackTarget() != null, 4); setBoolFlag(!getNavigator().noPath(), 1); @@ -618,6 +620,9 @@ public abstract class EntityNPCInterface extends EntityCreature implements IEnti clearTasks(tasks); clearTasks(targetTasks); + if(isKilled()) + return; + IEntitySelector attackEntitySelector = new NPCAttackSelector(this); this.targetTasks.addTask(0, new EntityAIClearTarget(this)); this.targetTasks.addTask(1, new EntityAIHurtByTarget(this, false)); @@ -1018,6 +1023,13 @@ public abstract class EntityNPCInterface extends EntityCreature implements IEnti width = (width / 5f) * display.modelSize; height = (height / 5f) * display.modelSize; + if(isKilled() && stats.hideKilledBody) { + width = 0.00001f; + } + if(width / 2 > worldObj.MAX_ENTITY_RADIUS) { + worldObj.MAX_ENTITY_RADIUS = width / 2; + } + this.setPosition(posX, posY, posZ); } From 1fc7c8ea50769cdf10f46dadaec6e3a9b32e1642 Mon Sep 17 00:00:00 2001 From: KAMKEEL Date: Wed, 22 Mar 2023 12:52:49 -0400 Subject: [PATCH 12/45] Fix TagMap to use "CloneMap" as its Tag Value --- src/main/java/noppes/npcs/controllers/data/TagMap.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/noppes/npcs/controllers/data/TagMap.java b/src/main/java/noppes/npcs/controllers/data/TagMap.java index 1221ba9cc..3501f7a98 100644 --- a/src/main/java/noppes/npcs/controllers/data/TagMap.java +++ b/src/main/java/noppes/npcs/controllers/data/TagMap.java @@ -14,7 +14,7 @@ public class TagMap { } public void readNBT(NBTTagCompound compound){ - NBTTagList list = compound.getTagList(String.valueOf(cloneTab), 10); + NBTTagList list = compound.getTagList("CloneMap", 10); if(list != null){ for(int i = 0; i < list.tagCount(); i++) { @@ -57,7 +57,7 @@ public class TagMap { } } - nbt.setTag(String.valueOf(cloneTab), cloneList); + nbt.setTag("CloneMap", cloneList); return nbt; } From f2190b350d56fc07878b9a2ed2fc80593359f148 Mon Sep 17 00:00:00 2001 From: KAMKEEL Date: Wed, 22 Mar 2023 13:18:17 -0400 Subject: [PATCH 13/45] Update TagMap NBT Tag --- src/main/java/noppes/npcs/controllers/data/TagMap.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/noppes/npcs/controllers/data/TagMap.java b/src/main/java/noppes/npcs/controllers/data/TagMap.java index 3501f7a98..58475924b 100644 --- a/src/main/java/noppes/npcs/controllers/data/TagMap.java +++ b/src/main/java/noppes/npcs/controllers/data/TagMap.java @@ -14,7 +14,7 @@ public class TagMap { } public void readNBT(NBTTagCompound compound){ - NBTTagList list = compound.getTagList("CloneMap", 10); + NBTTagList list = compound.getTagList("TagMap", 10); if(list != null){ for(int i = 0; i < list.tagCount(); i++) { @@ -57,7 +57,7 @@ public class TagMap { } } - nbt.setTag("CloneMap", cloneList); + nbt.setTag("TagMap", cloneList); return nbt; } From 8ef4276865c0af1393c21a85965a3634db6dae12 Mon Sep 17 00:00:00 2001 From: KAMKEEL Date: Wed, 22 Mar 2023 13:18:24 -0400 Subject: [PATCH 14/45] ServerTagMap Controller --- .../controllers/ServerTagMapController.java | 64 +++++++++++++++++++ 1 file changed, 64 insertions(+) create mode 100644 src/main/java/noppes/npcs/controllers/ServerTagMapController.java diff --git a/src/main/java/noppes/npcs/controllers/ServerTagMapController.java b/src/main/java/noppes/npcs/controllers/ServerTagMapController.java new file mode 100644 index 000000000..c08c42f3b --- /dev/null +++ b/src/main/java/noppes/npcs/controllers/ServerTagMapController.java @@ -0,0 +1,64 @@ +package noppes.npcs.controllers; + +import net.minecraft.nbt.CompressedStreamTools; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.nbt.NBTTagList; +import noppes.npcs.CustomNpcs; +import noppes.npcs.controllers.data.Faction; +import noppes.npcs.controllers.data.TagMap; + +import java.io.*; +import java.util.zip.GZIPInputStream; + +public class ServerTagMapController { + public static ServerTagMapController Instance; + public TagMap tagMap; + + public ServerTagMapController(){} + + public File getDir(){ + File dir = new File(CustomNpcs.getWorldSaveDirectory(), "clones"); + if(!dir.exists()) + dir.mkdir(); + return dir; + } + + public File getCloneTabDir(int tab){ + File dir = new File(getDir(), tab + ""); + if(!dir.exists()) + dir.mkdir(); + return dir; + } + + public TagMap getTagMap(int tab){ + this.tagMap = new TagMap(tab); + try { + File file = new File(getCloneTabDir(tab), "_____tag_map.dat"); + if(file.exists()){ + loadTagMapFile(file); + } + } catch (Exception e) { + try { + File file = new File(getCloneTabDir(tab), "_____tag_map.dat_old"); + if(file.exists()){ + loadTagMapFile(file); + } + + } catch (Exception ee) { + } + } + return this.tagMap; + } + + private void loadTagMapFile(File file) throws IOException { + DataInputStream var1 = new DataInputStream(new BufferedInputStream(new GZIPInputStream(new FileInputStream(file)))); + loadTagMaps(var1); + var1.close(); + } + + public void loadTagMaps(DataInputStream stream) throws IOException{ + NBTTagCompound nbtCompound = CompressedStreamTools.read(stream); + this.tagMap.readNBT(nbtCompound); + } + +} From 418d345293fe218761c2951926b658e008b3c1ba Mon Sep 17 00:00:00 2001 From: KAMKEEL Date: Wed, 22 Mar 2023 13:19:08 -0400 Subject: [PATCH 15/45] Create ClientTagMapController.java --- .../controllers/ClientTagMapController.java | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) create mode 100644 src/main/java/noppes/npcs/client/controllers/ClientTagMapController.java diff --git a/src/main/java/noppes/npcs/client/controllers/ClientTagMapController.java b/src/main/java/noppes/npcs/client/controllers/ClientTagMapController.java new file mode 100644 index 000000000..4937f7036 --- /dev/null +++ b/src/main/java/noppes/npcs/client/controllers/ClientTagMapController.java @@ -0,0 +1,19 @@ +package noppes.npcs.client.controllers; + +import noppes.npcs.CustomNpcs; +import noppes.npcs.controllers.ServerCloneController; +import noppes.npcs.controllers.ServerTagMapController; + +import java.io.File; + +public class ClientTagMapController extends ServerTagMapController { + public static ClientTagMapController Instance; + + @Override + public File getDir(){ + File dir = new File(CustomNpcs.Dir,"clones"); + if(!dir.exists()) + dir.mkdir(); + return dir; + } +} From 33e5071b11694df0f6a4d640e0851d5b75b81f89 Mon Sep 17 00:00:00 2001 From: KAMKEEL Date: Wed, 22 Mar 2023 13:35:49 -0400 Subject: [PATCH 16/45] Convert Set to HashSet --- .../controllers/ClientTagMapController.java | 1 - .../controllers/ServerTagMapController.java | 27 +++++++++++++++++++ .../noppes/npcs/controllers/data/TagMap.java | 23 +++++++++++++--- 3 files changed, 46 insertions(+), 5 deletions(-) diff --git a/src/main/java/noppes/npcs/client/controllers/ClientTagMapController.java b/src/main/java/noppes/npcs/client/controllers/ClientTagMapController.java index 4937f7036..9a2083745 100644 --- a/src/main/java/noppes/npcs/client/controllers/ClientTagMapController.java +++ b/src/main/java/noppes/npcs/client/controllers/ClientTagMapController.java @@ -1,7 +1,6 @@ package noppes.npcs.client.controllers; import noppes.npcs.CustomNpcs; -import noppes.npcs.controllers.ServerCloneController; import noppes.npcs.controllers.ServerTagMapController; import java.io.File; diff --git a/src/main/java/noppes/npcs/controllers/ServerTagMapController.java b/src/main/java/noppes/npcs/controllers/ServerTagMapController.java index c08c42f3b..48e0a116a 100644 --- a/src/main/java/noppes/npcs/controllers/ServerTagMapController.java +++ b/src/main/java/noppes/npcs/controllers/ServerTagMapController.java @@ -4,6 +4,7 @@ import net.minecraft.nbt.CompressedStreamTools; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.nbt.NBTTagList; import noppes.npcs.CustomNpcs; +import noppes.npcs.LogWriter; import noppes.npcs.controllers.data.Faction; import noppes.npcs.controllers.data.TagMap; @@ -61,4 +62,30 @@ public class ServerTagMapController { this.tagMap.readNBT(nbtCompound); } + public void saveTagMap(TagMap tagMap){ + try { + File saveDir = getCloneTabDir(tagMap.cloneTab); + File file = new File(saveDir, "_____tag_map.dat_new"); + File file1 = new File(saveDir, "_____tag_map.dat_old"); + File file2 = new File(saveDir, "_____tag_map.dat"); + CompressedStreamTools.writeCompressed(tagMap.writeNBT(), new FileOutputStream(file)); + if(file1.exists()) + { + file1.delete(); + } + file2.renameTo(file1); + if(file2.exists()) + { + file2.delete(); + } + file.renameTo(file2); + if(file.exists()) + { + file.delete(); + } + } catch (Exception e) { + LogWriter.except(e); + } + } + } diff --git a/src/main/java/noppes/npcs/controllers/data/TagMap.java b/src/main/java/noppes/npcs/controllers/data/TagMap.java index 58475924b..34f191ca4 100644 --- a/src/main/java/noppes/npcs/controllers/data/TagMap.java +++ b/src/main/java/noppes/npcs/controllers/data/TagMap.java @@ -6,11 +6,11 @@ import java.util.*; public class TagMap { public int cloneTab; - public HashMap> tagMap; + public HashMap> tagMap; public TagMap(int tab){ this.cloneTab = tab; - this.tagMap = new HashMap>(); + this.tagMap = new HashMap>(); } public void readNBT(NBTTagCompound compound){ @@ -21,7 +21,7 @@ public class TagMap { NBTTagCompound nbttagcompound = list.getCompoundTagAt(i); String cloneName = nbttagcompound.getString("Clone"); NBTTagList allUUIDs = compound.getTagList("UUIDs", 10); - Set uuids = new HashSet(); + HashSet uuids = new HashSet(); if(list != allUUIDs){ for(int j = 0; j < allUUIDs.tagCount(); j++) { @@ -42,7 +42,7 @@ public class TagMap { NBTTagList cloneList = new NBTTagList(); for(String key: tagMap.keySet()){ - Set uuidSet = tagMap.get(key); + HashSet uuidSet = tagMap.get(key); if(uuidSet.size() > 0){ NBTTagCompound cloneCompound = new NBTTagCompound(); cloneCompound.setString("Clone", key); @@ -65,4 +65,19 @@ public class TagMap { return this.cloneTab; } + public HashSet getUUIDs(String cloneName) { + if(tagMap.containsKey(cloneName)){ + return tagMap.get(cloneName); + } + return null; + } + + public boolean hasTag(String cloneName, UUID tag) { + HashSet uuids = getUUIDs(cloneName); + if(uuids == null){ + return false; + } + return uuids.contains(tag); + } + } From 89efe67f448b9763443e17be8ff813d648425643 Mon Sep 17 00:00:00 2001 From: KAMKEEL Date: Wed, 22 Mar 2023 13:37:09 -0400 Subject: [PATCH 17/45] hasClone for TagMap --- src/main/java/noppes/npcs/controllers/data/TagMap.java | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/main/java/noppes/npcs/controllers/data/TagMap.java b/src/main/java/noppes/npcs/controllers/data/TagMap.java index 34f191ca4..489f801f5 100644 --- a/src/main/java/noppes/npcs/controllers/data/TagMap.java +++ b/src/main/java/noppes/npcs/controllers/data/TagMap.java @@ -65,8 +65,12 @@ public class TagMap { return this.cloneTab; } + public boolean hasClone(String cloneName) { + return tagMap.containsKey(cloneName); + } + public HashSet getUUIDs(String cloneName) { - if(tagMap.containsKey(cloneName)){ + if(hasClone(cloneName)){ return tagMap.get(cloneName); } return null; From 573aab23e56dd879b8c017bb48ffce52aabd58e6 Mon Sep 17 00:00:00 2001 From: KAMKEEL Date: Wed, 22 Mar 2023 16:06:22 -0400 Subject: [PATCH 18/45] Register TagMap Controllers --- src/main/java/noppes/npcs/CustomNpcs.java | 1 + src/main/java/noppes/npcs/client/ClientProxy.java | 6 ++---- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/src/main/java/noppes/npcs/CustomNpcs.java b/src/main/java/noppes/npcs/CustomNpcs.java index ef8d0e2c9..7eaa5d533 100644 --- a/src/main/java/noppes/npcs/CustomNpcs.java +++ b/src/main/java/noppes/npcs/CustomNpcs.java @@ -231,6 +231,7 @@ public class CustomNpcs { QuestController.instance.load(); ScriptController.HasStart = true; ServerCloneController.Instance = new ServerCloneController(); + ServerTagMapController.Instance = new ServerTagMapController(); } @EventHandler diff --git a/src/main/java/noppes/npcs/client/ClientProxy.java b/src/main/java/noppes/npcs/client/ClientProxy.java index 352e36fec..60746591e 100644 --- a/src/main/java/noppes/npcs/client/ClientProxy.java +++ b/src/main/java/noppes/npcs/client/ClientProxy.java @@ -30,10 +30,7 @@ import net.minecraftforge.common.util.FakePlayer; import noppes.npcs.*; import noppes.npcs.api.IWorld; import noppes.npcs.blocks.tiles.*; -import noppes.npcs.client.controllers.ClientCloneController; -import noppes.npcs.client.controllers.MusicController; -import noppes.npcs.client.controllers.PresetController; -import noppes.npcs.client.controllers.ScriptSoundController; +import noppes.npcs.client.controllers.*; import noppes.npcs.client.fx.EntityElementalStaffFX; import noppes.npcs.client.fx.EntityEnderFX; import noppes.npcs.client.fx.EntityRainbowFX; @@ -145,6 +142,7 @@ public class ClientProxy extends CommonProxy { } ClientCloneController.Instance = new ClientCloneController(); + ClientTagMapController.Instance = new ClientTagMapController(); MinecraftForge.EVENT_BUS.register(new ClientEventHandler()); From 2c349cb34c3058def737b1579c363462d6e8cac1 Mon Sep 17 00:00:00 2001 From: KAMKEEL Date: Wed, 22 Mar 2023 16:06:32 -0400 Subject: [PATCH 19/45] Ignore Exception --- .../java/noppes/npcs/controllers/ServerTagMapController.java | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/src/main/java/noppes/npcs/controllers/ServerTagMapController.java b/src/main/java/noppes/npcs/controllers/ServerTagMapController.java index 48e0a116a..d7aa16338 100644 --- a/src/main/java/noppes/npcs/controllers/ServerTagMapController.java +++ b/src/main/java/noppes/npcs/controllers/ServerTagMapController.java @@ -44,9 +44,7 @@ public class ServerTagMapController { if(file.exists()){ loadTagMapFile(file); } - - } catch (Exception ee) { - } + } catch (Exception ignored) {} } return this.tagMap; } From 69154bec2486304a8e37bd30d43ccb1f0e93bd40 Mon Sep 17 00:00:00 2001 From: KAMKEEL Date: Wed, 22 Mar 2023 16:07:09 -0400 Subject: [PATCH 20/45] Send ServerTag Map through packet --- .../java/noppes/npcs/PacketHandlerServer.java | 23 ++----------------- 1 file changed, 2 insertions(+), 21 deletions(-) diff --git a/src/main/java/noppes/npcs/PacketHandlerServer.java b/src/main/java/noppes/npcs/PacketHandlerServer.java index aae75cd7a..998b56d9c 100644 --- a/src/main/java/noppes/npcs/PacketHandlerServer.java +++ b/src/main/java/noppes/npcs/PacketHandlerServer.java @@ -1078,28 +1078,9 @@ public class PacketHandlerServer{ else if (type == EnumPacketServer.CloneTagList) { int tab = buffer.readInt(); List cloneNames = ServerCloneController.Instance.getClones(tab); - NBTTagList cloneTags = new NBTTagList(); - for (String name : cloneNames) { - NBTTagCompound compound = ServerCloneController.Instance.getCloneData(null, name, tab); - if (compound.hasKey("TagUUIDs")) { - NBTTagCompound tagCompound = new NBTTagCompound(); - tagCompound.setString("Name",name); - - NBTTagList uuidList = compound.getTagList("TagUUIDs",8); - NBTTagList tags = new NBTTagList(); - for (int i = 0; i < uuidList.tagCount(); i++) { - String uuidString = uuidList.getStringTagAt(i); - NBTTagCompound tagNBT = new NBTTagCompound(); - TagController.getInstance().getTagFromUUID(UUID.fromString(uuidString)).writeNBT(tagNBT); - tags.appendTag(tagNBT); - } - tagCompound.setTag("Tags",tags); - cloneTags.appendTag(tagCompound); - } - } - + TagMap tagMap = ServerTagMapController.Instance.getTagMap(tab); NBTTagCompound compound = new NBTTagCompound(); - compound.setTag("CloneTags", cloneTags); + compound.setTag("CloneTags", tagMap.writeNBT()); Server.sendData(player, EnumPacketClient.GUI_DATA, compound); } else From 214f0a4c00a674549c9455c7706fd0bde77c4994 Mon Sep 17 00:00:00 2001 From: KAMKEEL Date: Wed, 22 Mar 2023 16:07:42 -0400 Subject: [PATCH 21/45] Add UUID to Int HashMap in TagController --- .../npcs/controllers/TagController.java | 23 +++++++++++++++---- 1 file changed, 19 insertions(+), 4 deletions(-) diff --git a/src/main/java/noppes/npcs/controllers/TagController.java b/src/main/java/noppes/npcs/controllers/TagController.java index 4915076b8..768f78347 100644 --- a/src/main/java/noppes/npcs/controllers/TagController.java +++ b/src/main/java/noppes/npcs/controllers/TagController.java @@ -8,6 +8,7 @@ import noppes.npcs.LogWriter; import noppes.npcs.api.handler.ITagHandler; import noppes.npcs.api.handler.data.ITag; import noppes.npcs.controllers.data.Tag; +import scala.Int; import java.io.*; import java.util.*; @@ -15,6 +16,7 @@ import java.util.zip.GZIPInputStream; public class TagController implements ITagHandler { public HashMap tags; + public HashMap tagsUUID; private static TagController instance; private int lastUsedID = 0; @@ -22,14 +24,14 @@ public class TagController implements ITagHandler { public TagController(){ instance = this; tags = new HashMap(); + tagsUUID = new HashMap(); loadTags(); - if(tags.isEmpty()){ - // TO-DO +// if(tags.isEmpty()){ +// // TO-DO // tags.put(0,new Faction(0,"Friendly", 0x00DD00, 2000)); // tags.put(1,new Faction(1,"Neutral", 0xF2DD00, 1000)); // tags.put(2,new Faction(2,"Aggressive", 0xDD0000, 0)); - } - +// } } public static TagController getInstance(){ return instance; @@ -66,6 +68,7 @@ public class TagController implements ITagHandler { public void loadTags(DataInputStream stream) throws IOException{ HashMap tags = new HashMap(); + HashMap tagUUIDs = new HashMap(); NBTTagCompound nbttagcompound1 = CompressedStreamTools.read(stream); lastUsedID = nbttagcompound1.getInteger("lastID"); NBTTagList list = nbttagcompound1.getTagList("NPCTags", 10); @@ -77,9 +80,11 @@ public class TagController implements ITagHandler { Tag tag = new Tag(); tag.readNBT(nbttagcompound); tags.put(tag.id,tag); + tagUUIDs.put(tag.uuid, tag.id); } } this.tags = tags; + this.tagsUUID = tagUUIDs; } public NBTTagCompound getNBT(){ @@ -126,6 +131,14 @@ public class TagController implements ITagHandler { return tags.get(tagSlot); } + public Tag get(UUID uuid) { + Integer id = tagsUUID.get(uuid); + if(id != null){ + get(id); + } + return null; + } + public List list() { return new ArrayList(this.tags.values()); } @@ -145,6 +158,7 @@ public class TagController implements ITagHandler { } tags.remove(tag.id); tags.put(tag.id, tag); + tagsUUID.put(tag.uuid, tag.id); saveTags(); } @@ -178,6 +192,7 @@ public class TagController implements ITagHandler { if (tag == null) { return null; } else { + this.tagsUUID.remove(tag.uuid); this.saveTags(); tag.id = -1; return tag; From a9f2fe4a0eda518fb9223ad2125b6349df75aac5 Mon Sep 17 00:00:00 2001 From: KAMKEEL Date: Wed, 22 Mar 2023 17:00:55 -0400 Subject: [PATCH 22/45] Useless List --- src/main/java/noppes/npcs/PacketHandlerServer.java | 1 - 1 file changed, 1 deletion(-) diff --git a/src/main/java/noppes/npcs/PacketHandlerServer.java b/src/main/java/noppes/npcs/PacketHandlerServer.java index 998b56d9c..3225ba456 100644 --- a/src/main/java/noppes/npcs/PacketHandlerServer.java +++ b/src/main/java/noppes/npcs/PacketHandlerServer.java @@ -1077,7 +1077,6 @@ public class PacketHandlerServer{ } else if (type == EnumPacketServer.CloneTagList) { int tab = buffer.readInt(); - List cloneNames = ServerCloneController.Instance.getClones(tab); TagMap tagMap = ServerTagMapController.Instance.getTagMap(tab); NBTTagCompound compound = new NBTTagCompound(); compound.setTag("CloneTags", tagMap.writeNBT()); From 270a9cbd46e8216e1a25238684c642ae601f620a Mon Sep 17 00:00:00 2001 From: KAMKEEL Date: Wed, 22 Mar 2023 17:01:46 -0400 Subject: [PATCH 23/45] Refactor Tags to work with TagMap on Filter Tab --- .../npcs/client/gui/GuiNpcMobSpawner.java | 86 ++++++++++++------- .../gui/util/GuiCustomScrollCloner.java | 21 ++--- 2 files changed, 66 insertions(+), 41 deletions(-) diff --git a/src/main/java/noppes/npcs/client/gui/GuiNpcMobSpawner.java b/src/main/java/noppes/npcs/client/gui/GuiNpcMobSpawner.java index 9d2371ab0..e07c36347 100644 --- a/src/main/java/noppes/npcs/client/gui/GuiNpcMobSpawner.java +++ b/src/main/java/noppes/npcs/client/gui/GuiNpcMobSpawner.java @@ -11,19 +11,20 @@ import net.minecraft.util.StatCollector; import net.minecraft.world.World; import noppes.npcs.client.Client; import noppes.npcs.client.controllers.ClientCloneController; +import noppes.npcs.client.controllers.ClientTagMapController; import noppes.npcs.client.gui.util.*; import noppes.npcs.constants.EnumPacketServer; import noppes.npcs.controllers.data.Tag; +import noppes.npcs.controllers.data.TagMap; import java.lang.reflect.Modifier; import java.util.*; public class GuiNpcMobSpawner extends GuiNPCInterface implements IScrollData,IGuiData { - public static HashSet allTags = new HashSet<>(); - public static HashSet filter = new HashSet<>(); + public static HashMap allTags = new HashMap<>(); + public static HashSet filter = new HashSet<>(); public static boolean showHidden = false; - public HashMap> tags = new HashMap<>(); - + public TagMap tagMap; private final GuiCustomScrollCloner scroll = new GuiCustomScrollCloner(this,0); private final GuiCustomScroll filterScroll = new GuiCustomScroll(this,1); @@ -60,14 +61,20 @@ public class GuiNpcMobSpawner extends GuiNPCInterface implements IScrollData,IGu scroll.setSize(293, 188); scroll.guiLeft = guiLeft + 4; scroll.guiTop = guiTop + 26; - filterScroll.clear(); filterScroll.setSize(140, 188); filterScroll.guiLeft = guiLeft + 4; filterScroll.guiTop = guiTop + 19; - filterScroll.setList(new ArrayList<>(allTags)); + filterScroll.setList(new ArrayList<>(allTags.values())); + +// HashSet set = new HashSet(); +// for(String s : data.keySet()){ +// if(!s.equals(faction.name) && faction.attackFactions.contains(data.get(s))) +// set.add(s); +// } + filterScroll.multipleSelection = true; - filterScroll.setSelectedList(filter); + filterScroll.setSelectedList(new HashSet()); GuiMenuTopButton button; addTopButton(button = new GuiMenuTopButton(3,guiLeft + 4, guiTop - 17, "spawner.clones")); @@ -150,27 +157,51 @@ public class GuiNpcMobSpawner extends GuiNPCInterface implements IScrollData,IGu } ArrayList list = new ArrayList(); this.list = ClientCloneController.Instance.getClones(activeTab); + this.tagMap = ClientTagMapController.Instance.getTagMap(activeTab); scroll.setList(getSearchList()); } public void keyTyped(char c, int i) { super.keyTyped(c, i); - - if(search.equals(getTextField(1).getText())) - return; - search = getTextField(1).getText().toLowerCase(); + if(getTextField(1) != null){ + if(search.equals(getTextField(1).getText())) + return; + search = getTextField(1).getText().toLowerCase(); + } scroll.setList(getSearchList()); } + private List getSearchList(){ - if(search.isEmpty()) + // No Search // No Filters + if(search.isEmpty() && filter.size() == 0) return new ArrayList(list); + // Yes Search // No Filters + else if(!search.isEmpty() && filter.size() == 0){ + List list = new ArrayList(); + for(String name : this.list){ + if(name.toLowerCase().contains(search)) + list.add(name); + } + return list; + } + // No Search // Yes Filters + else if(search.isEmpty() && filter.size() > 0){ + List list = new ArrayList(); + for(String name : this.list){ + if(name.toLowerCase().contains(search)) + list.add(name); + } + } + // Yes Search // Yes Filters List list = new ArrayList(); for(String name : this.list){ - if(name.toLowerCase().contains(search)) + if(name.toLowerCase().contains(search)){ list.add(name); + } } return list; } + private NBTTagCompound getCompound(){ String sel = scroll.getSelected(); if(sel == null) @@ -259,7 +290,7 @@ public class GuiNpcMobSpawner extends GuiNPCInterface implements IScrollData,IGu } } if (id == 10) { - HashSet hashSet = new HashSet<>(allTags); + HashSet hashSet = new HashSet<>(allTags.values()); filterScroll.setSelectedList(hashSet); } if (id == 11) { @@ -277,7 +308,13 @@ public class GuiNpcMobSpawner extends GuiNPCInterface implements IScrollData,IGu @Override public void setData(Vector list, HashMap data) { - allTags.addAll(list); + System.out.println("------- LIST"); + System.out.println(list); + System.out.println("------- DATA"); + System.out.println(data); + for(String s : list){ + allTags.put(UUID.randomUUID(), s); + } } @Override @@ -292,22 +329,9 @@ public class GuiNpcMobSpawner extends GuiNPCInterface implements IScrollData,IGu @Override public void setGuiData(NBTTagCompound compound) { if (compound.hasKey("CloneTags")) { - this.tags.clear(); - NBTTagList cloneTags = compound.getTagList("CloneTags", 10); - for (int i = 0; i < cloneTags.tagCount(); i++) { - NBTTagCompound tagCompound = cloneTags.getCompoundTagAt(i); - String name = tagCompound.getString("Name"); - - HashSet tagNames = new HashSet<>(); - NBTTagList tagList = tagCompound.getTagList("Tags", 10); - for (int j = 0; j < tagList.tagCount(); j++) { - Tag tag = new Tag(); - tag.readNBT(tagList.getCompoundTagAt(j)); - tagNames.add(tag); - } - - this.tags.put(name, tagNames); - } + tagMap = new TagMap(activeTab); + NBTTagCompound cloneTags = compound.getCompoundTag("CloneTags"); + tagMap.readNBT(cloneTags); } else { NBTTagList nbtlist = compound.getTagList("List", 8); List list = new ArrayList(); diff --git a/src/main/java/noppes/npcs/client/gui/util/GuiCustomScrollCloner.java b/src/main/java/noppes/npcs/client/gui/util/GuiCustomScrollCloner.java index 155a7244d..41c2dff2b 100644 --- a/src/main/java/noppes/npcs/client/gui/util/GuiCustomScrollCloner.java +++ b/src/main/java/noppes/npcs/client/gui/util/GuiCustomScrollCloner.java @@ -5,6 +5,7 @@ import noppes.npcs.client.gui.GuiNpcMobSpawner; import noppes.npcs.controllers.data.Tag; import java.util.HashSet; +import java.util.UUID; public class GuiCustomScrollCloner extends GuiCustomScroll { private final GuiNpcMobSpawner parent; @@ -19,11 +20,11 @@ public class GuiCustomScrollCloner extends GuiCustomScroll { int l = 0; for(int i = 0; i < list.size(); i++) { - if (this.parent.tags.containsKey(list.get(i))) { - HashSet tags = this.parent.tags.get(list.get(i)); + if (this.parent.tagMap.hasClone(list.get(i))) { + HashSet tags = this.parent.tagMap.getUUIDs(list.get(i)); boolean inFilter = false; - for (Tag tag : tags) { - if (GuiNpcMobSpawner.filter.contains(tag.name)) { + for (UUID uuid : tags) { + if (GuiNpcMobSpawner.filter.contains(uuid)) { inFilter = true; break; } @@ -71,12 +72,12 @@ public class GuiCustomScrollCloner extends GuiCustomScroll { } int tagStartX = j + fontRendererObj.getStringWidth(displayString) + 5; - if (this.parent.tags.containsKey(list.get(i))) { - for (Tag tag : this.parent.tags.get(list.get(i))) { - if (!tag.getIsHidden()) { - fontRendererObj.drawString("[" + tag.name + "]", tagStartX, k, tag.color); - tagStartX += fontRendererObj.getStringWidth("[" + tag.name + "]") + 2; - } + if (this.parent.tagMap.hasClone(list.get(i))) { + for (UUID tag : this.parent.tagMap.getUUIDs(list.get(i))) { +// if (!tag.getIsHidden()) { +// fontRendererObj.drawString("[" + tag.name + "]", tagStartX, k, tag.color); +// tagStartX += fontRendererObj.getStringWidth("[" + tag.name + "]") + 2; +// } } } } From f8b182008cc6d6b7bac1caf63e96e370178a0aaf Mon Sep 17 00:00:00 2001 From: KAMKEEL Date: Wed, 22 Mar 2023 17:13:49 -0400 Subject: [PATCH 24/45] Fix Filter / Search Selection Clone GUI --- .../npcs/client/gui/GuiNpcMobSpawner.java | 55 +++++++++++-------- 1 file changed, 32 insertions(+), 23 deletions(-) diff --git a/src/main/java/noppes/npcs/client/gui/GuiNpcMobSpawner.java b/src/main/java/noppes/npcs/client/gui/GuiNpcMobSpawner.java index e07c36347..95907462d 100644 --- a/src/main/java/noppes/npcs/client/gui/GuiNpcMobSpawner.java +++ b/src/main/java/noppes/npcs/client/gui/GuiNpcMobSpawner.java @@ -21,8 +21,8 @@ import java.lang.reflect.Modifier; import java.util.*; public class GuiNpcMobSpawner extends GuiNPCInterface implements IScrollData,IGuiData { - public static HashMap allTags = new HashMap<>(); - public static HashSet filter = new HashSet<>(); + public static HashSet allTags = new HashSet<>(); + public static HashSet filter = new HashSet<>(); public static boolean showHidden = false; public TagMap tagMap; @@ -65,16 +65,9 @@ public class GuiNpcMobSpawner extends GuiNPCInterface implements IScrollData,IGu filterScroll.setSize(140, 188); filterScroll.guiLeft = guiLeft + 4; filterScroll.guiTop = guiTop + 19; - filterScroll.setList(new ArrayList<>(allTags.values())); - -// HashSet set = new HashSet(); -// for(String s : data.keySet()){ -// if(!s.equals(faction.name) && faction.attackFactions.contains(data.get(s))) -// set.add(s); -// } - + filterScroll.setList(new ArrayList<>(allTags)); filterScroll.multipleSelection = true; - filterScroll.setSelectedList(new HashSet()); + filterScroll.setSelectedList(filter); GuiMenuTopButton button; addTopButton(button = new GuiMenuTopButton(3,guiLeft + 4, guiTop - 17, "spawner.clones")); @@ -188,15 +181,37 @@ public class GuiNpcMobSpawner extends GuiNPCInterface implements IScrollData,IGu else if(search.isEmpty() && filter.size() > 0){ List list = new ArrayList(); for(String name : this.list){ - if(name.toLowerCase().contains(search)) - list.add(name); + if(tagMap.hasClone(name)){ + boolean hasAll = true; + for(String uuid : filter){ + if(!tagMap.hasTag(name, UUID.fromString(uuid))){ + hasAll = false; + break; + } + } + if(hasAll){ + list.add(name); + } + } } + return list; } // Yes Search // Yes Filters List list = new ArrayList(); for(String name : this.list){ - if(name.toLowerCase().contains(search)){ - list.add(name); + if(name.toLowerCase().contains(search)) { + if(tagMap.hasClone(name)){ + boolean hasAll = true; + for(String uuid : filter){ + if(!tagMap.hasTag(name, UUID.fromString(uuid))){ + hasAll = false; + break; + } + } + if(hasAll){ + list.add(name); + } + } } } return list; @@ -290,7 +305,7 @@ public class GuiNpcMobSpawner extends GuiNPCInterface implements IScrollData,IGu } } if (id == 10) { - HashSet hashSet = new HashSet<>(allTags.values()); + HashSet hashSet = new HashSet<>(allTags); filterScroll.setSelectedList(hashSet); } if (id == 11) { @@ -308,13 +323,7 @@ public class GuiNpcMobSpawner extends GuiNPCInterface implements IScrollData,IGu @Override public void setData(Vector list, HashMap data) { - System.out.println("------- LIST"); - System.out.println(list); - System.out.println("------- DATA"); - System.out.println(data); - for(String s : list){ - allTags.put(UUID.randomUUID(), s); - } + allTags.addAll(list); } @Override From 0943299384328b0c1bbac558da67e8cca70b0197 Mon Sep 17 00:00:00 2001 From: KAMKEEL Date: Wed, 22 Mar 2023 17:31:32 -0400 Subject: [PATCH 25/45] Fix ReadNBT TagMap --- src/main/java/noppes/npcs/controllers/data/TagMap.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/noppes/npcs/controllers/data/TagMap.java b/src/main/java/noppes/npcs/controllers/data/TagMap.java index 489f801f5..5af9968ad 100644 --- a/src/main/java/noppes/npcs/controllers/data/TagMap.java +++ b/src/main/java/noppes/npcs/controllers/data/TagMap.java @@ -22,11 +22,11 @@ public class TagMap { String cloneName = nbttagcompound.getString("Clone"); NBTTagList allUUIDs = compound.getTagList("UUIDs", 10); HashSet uuids = new HashSet(); - if(list != allUUIDs){ + if(allUUIDs != null){ for(int j = 0; j < allUUIDs.tagCount(); j++) { NBTTagCompound uuidCompound = list.getCompoundTagAt(j); - String uuid = nbttagcompound.getString("UUID"); + String uuid = uuidCompound.getString("UUID"); if(!uuid.isEmpty()){ uuids.add(UUID.fromString(uuid)); } From 41c4fc66d0c300f51955456fa899d2babfba1ee1 Mon Sep 17 00:00:00 2001 From: KAMKEEL Date: Wed, 22 Mar 2023 17:58:02 -0400 Subject: [PATCH 26/45] Send Valid Tags to Client that correlate with UUIDs found on the Server. No longer needs the Clones Data --- .../java/noppes/npcs/PacketHandlerServer.java | 9 ++++ .../npcs/client/gui/GuiNpcMobSpawner.java | 19 +++++-- .../gui/util/GuiCustomScrollCloner.java | 53 +++++++++++-------- .../npcs/controllers/TagController.java | 12 +++++ .../noppes/npcs/controllers/data/TagMap.java | 11 ++++ 5 files changed, 80 insertions(+), 24 deletions(-) diff --git a/src/main/java/noppes/npcs/PacketHandlerServer.java b/src/main/java/noppes/npcs/PacketHandlerServer.java index 3225ba456..ff24e8d3c 100644 --- a/src/main/java/noppes/npcs/PacketHandlerServer.java +++ b/src/main/java/noppes/npcs/PacketHandlerServer.java @@ -1080,6 +1080,15 @@ public class PacketHandlerServer{ TagMap tagMap = ServerTagMapController.Instance.getTagMap(tab); NBTTagCompound compound = new NBTTagCompound(); compound.setTag("CloneTags", tagMap.writeNBT()); + + HashSet validTags = TagController.getInstance().getValidTags(tagMap); + NBTTagList validTagList = new NBTTagList(); + for(Tag tag : validTags){ + NBTTagCompound tagCompound = new NBTTagCompound(); + tag.writeNBT(tagCompound); + validTagList.appendTag(tagCompound); + } + compound.setTag("ValidTags", validTagList); Server.sendData(player, EnumPacketClient.GUI_DATA, compound); } else diff --git a/src/main/java/noppes/npcs/client/gui/GuiNpcMobSpawner.java b/src/main/java/noppes/npcs/client/gui/GuiNpcMobSpawner.java index 95907462d..ac9389080 100644 --- a/src/main/java/noppes/npcs/client/gui/GuiNpcMobSpawner.java +++ b/src/main/java/noppes/npcs/client/gui/GuiNpcMobSpawner.java @@ -23,7 +23,8 @@ import java.util.*; public class GuiNpcMobSpawner extends GuiNPCInterface implements IScrollData,IGuiData { public static HashSet allTags = new HashSet<>(); public static HashSet filter = new HashSet<>(); - public static boolean showHidden = false; + public static HashMap tags = new HashMap<>(); + public byte displayTags = 0; public TagMap tagMap; private final GuiCustomScrollCloner scroll = new GuiCustomScrollCloner(this,0); @@ -120,7 +121,7 @@ public class GuiNpcMobSpawner extends GuiNPCInterface implements IScrollData,IGu addButton(new GuiNpcButton(10, guiLeft + 150, guiTop + 20, 120, 20, "gui.selectAll")); addButton(new GuiNpcButton(11, guiLeft + 150, guiTop + 43, 120, 20, "gui.deselectAll")); addLabel(new GuiNpcLabel(2, StatCollector.translateToLocal("tags.taglessEntries") + ":", guiLeft + 150, guiTop + 72)); - addButton(new GuiNpcButton(12, guiLeft + 240, guiTop + 65, new String[]{"display.show", "display.hide"}, showHidden ? 0 : 1)); + addButton(new GuiNpcButton(12, guiLeft + 240, guiTop + 65, new String[]{"all", "none", "hidden"}, displayTags)); getButton(12).width = 60; getButton(12).height = 20; } @@ -312,7 +313,8 @@ public class GuiNpcMobSpawner extends GuiNPCInterface implements IScrollData,IGu filterScroll.setSelectedList(new HashSet<>()); } if (id == 12) { - showHidden = !showHidden; + GuiNpcButton button = (GuiNpcButton) guibutton; + displayTags = (byte) button.getValue(); } if(id > 20){ activeTab = id - 20; @@ -341,6 +343,17 @@ public class GuiNpcMobSpawner extends GuiNPCInterface implements IScrollData,IGu tagMap = new TagMap(activeTab); NBTTagCompound cloneTags = compound.getCompoundTag("CloneTags"); tagMap.readNBT(cloneTags); + + NBTTagList validTags = compound.getTagList("ValidTags", 10); + if(validTags != null){ + for(int j = 0; j < validTags.tagCount(); j++) + { + NBTTagCompound tagStructure = validTags.getCompoundTagAt(j); + Tag tag = new Tag(); + tag.readNBT(tagStructure); + tags.put(tag.uuid, tag); + } + } } else { NBTTagList nbtlist = compound.getTagList("List", 8); List list = new ArrayList(); diff --git a/src/main/java/noppes/npcs/client/gui/util/GuiCustomScrollCloner.java b/src/main/java/noppes/npcs/client/gui/util/GuiCustomScrollCloner.java index 41c2dff2b..87657642b 100644 --- a/src/main/java/noppes/npcs/client/gui/util/GuiCustomScrollCloner.java +++ b/src/main/java/noppes/npcs/client/gui/util/GuiCustomScrollCloner.java @@ -20,21 +20,21 @@ public class GuiCustomScrollCloner extends GuiCustomScroll { int l = 0; for(int i = 0; i < list.size(); i++) { - if (this.parent.tagMap.hasClone(list.get(i))) { - HashSet tags = this.parent.tagMap.getUUIDs(list.get(i)); - boolean inFilter = false; - for (UUID uuid : tags) { - if (GuiNpcMobSpawner.filter.contains(uuid)) { - inFilter = true; - break; - } - } - if (!inFilter) { - continue; - } - } else if (!GuiNpcMobSpawner.showHidden) { - continue; - } +// if (this.parent.tagMap.hasClone(list.get(i))) { +// HashSet tags = this.parent.tagMap.getUUIDs(list.get(i)); +// boolean inFilter = false; +// for (UUID uuid : tags) { +// if (GuiNpcMobSpawner.filter.contains(uuid)) { +// inFilter = true; +// break; +// } +// } +// if (!inFilter) { +// continue; +// } +// } else if (!GuiNpcMobSpawner.showHidden) { +// continue; +// } int j = 4; int k = (14 * l + 4) - scrollY; @@ -72,12 +72,23 @@ public class GuiCustomScrollCloner extends GuiCustomScroll { } int tagStartX = j + fontRendererObj.getStringWidth(displayString) + 5; - if (this.parent.tagMap.hasClone(list.get(i))) { - for (UUID tag : this.parent.tagMap.getUUIDs(list.get(i))) { -// if (!tag.getIsHidden()) { -// fontRendererObj.drawString("[" + tag.name + "]", tagStartX, k, tag.color); -// tagStartX += fontRendererObj.getStringWidth("[" + tag.name + "]") + 2; -// } + if(this.parent.displayTags == 0 || this.parent.displayTags == 2){ + if (this.parent.tagMap.hasClone(list.get(i))) { + for (UUID tagUUID : this.parent.tagMap.getUUIDs(list.get(i))){ + Tag tag = this.parent.tags.get(tagUUID); + if(tag != null){ + if(this.parent.displayTags == 2){ + fontRendererObj.drawString("[" + tag.name + "]", tagStartX, k, tag.color); + tagStartX += fontRendererObj.getStringWidth("[" + tag.name + "]") + 2; + } + else { + if(!tag.getIsHidden()){ + fontRendererObj.drawString("[" + tag.name + "]", tagStartX, k, tag.color); + tagStartX += fontRendererObj.getStringWidth("[" + tag.name + "]") + 2; + } + } + } + } } } } diff --git a/src/main/java/noppes/npcs/controllers/TagController.java b/src/main/java/noppes/npcs/controllers/TagController.java index 768f78347..50b8a724d 100644 --- a/src/main/java/noppes/npcs/controllers/TagController.java +++ b/src/main/java/noppes/npcs/controllers/TagController.java @@ -8,6 +8,7 @@ import noppes.npcs.LogWriter; import noppes.npcs.api.handler.ITagHandler; import noppes.npcs.api.handler.data.ITag; import noppes.npcs.controllers.data.Tag; +import noppes.npcs.controllers.data.TagMap; import scala.Int; import java.io.*; @@ -246,4 +247,15 @@ public class TagController implements ITagHandler { } return null; } + + public HashSet getValidTags(TagMap tagMap){ + HashSet tags = new HashSet(); + for(UUID tagUUID : tagMap.getAllUUIDs()){ + Tag foundTag = get(tagUUID); + if(foundTag != null){ + tags.add(foundTag); + } + } + return tags; + } } diff --git a/src/main/java/noppes/npcs/controllers/data/TagMap.java b/src/main/java/noppes/npcs/controllers/data/TagMap.java index 5af9968ad..f38fe3b90 100644 --- a/src/main/java/noppes/npcs/controllers/data/TagMap.java +++ b/src/main/java/noppes/npcs/controllers/data/TagMap.java @@ -2,6 +2,9 @@ package noppes.npcs.controllers.data; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.nbt.NBTTagList; +import noppes.npcs.controllers.ServerCloneController; +import noppes.npcs.controllers.TagController; + import java.util.*; public class TagMap { @@ -84,4 +87,12 @@ public class TagMap { return uuids.contains(tag); } + public HashSet getAllUUIDs() { + HashSet uuids = new HashSet(); + for(HashSet uuids1 : tagMap.values()){ + uuids.addAll(uuids1); + } + return uuids; + } + } From 8842fdfbf6f4b061cb9477edfefb028754b81ae0 Mon Sep 17 00:00:00 2001 From: KAMKEEL Date: Wed, 22 Mar 2023 18:32:53 -0400 Subject: [PATCH 27/45] Catch Null Pointer --- src/main/java/noppes/npcs/client/gui/GuiNpcMobSpawner.java | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/main/java/noppes/npcs/client/gui/GuiNpcMobSpawner.java b/src/main/java/noppes/npcs/client/gui/GuiNpcMobSpawner.java index ac9389080..21e0dc14d 100644 --- a/src/main/java/noppes/npcs/client/gui/GuiNpcMobSpawner.java +++ b/src/main/java/noppes/npcs/client/gui/GuiNpcMobSpawner.java @@ -166,6 +166,9 @@ public class GuiNpcMobSpawner extends GuiNPCInterface implements IScrollData,IGu } private List getSearchList(){ + if(this.list == null){ + this.list = new ArrayList(); + } // No Search // No Filters if(search.isEmpty() && filter.size() == 0) return new ArrayList(list); From 6882838cf85dc7a88ca89b5ae6e66f6792af8863 Mon Sep 17 00:00:00 2001 From: KAMKEEL Date: Wed, 22 Mar 2023 18:56:04 -0400 Subject: [PATCH 28/45] Remove Useless Comment --- .../gui/util/GuiCustomScrollCloner.java | 42 +++++++------------ 1 file changed, 14 insertions(+), 28 deletions(-) diff --git a/src/main/java/noppes/npcs/client/gui/util/GuiCustomScrollCloner.java b/src/main/java/noppes/npcs/client/gui/util/GuiCustomScrollCloner.java index 87657642b..c187f0a0d 100644 --- a/src/main/java/noppes/npcs/client/gui/util/GuiCustomScrollCloner.java +++ b/src/main/java/noppes/npcs/client/gui/util/GuiCustomScrollCloner.java @@ -20,22 +20,6 @@ public class GuiCustomScrollCloner extends GuiCustomScroll { int l = 0; for(int i = 0; i < list.size(); i++) { -// if (this.parent.tagMap.hasClone(list.get(i))) { -// HashSet tags = this.parent.tagMap.getUUIDs(list.get(i)); -// boolean inFilter = false; -// for (UUID uuid : tags) { -// if (GuiNpcMobSpawner.filter.contains(uuid)) { -// inFilter = true; -// break; -// } -// } -// if (!inFilter) { -// continue; -// } -// } else if (!GuiNpcMobSpawner.showHidden) { -// continue; -// } - int j = 4; int k = (14 * l + 4) - scrollY; l++; @@ -71,21 +55,23 @@ public class GuiCustomScrollCloner extends GuiCustomScroll { fontRendererObj.drawString(text, j, k, this.colors.getOrDefault(text, 0xffffff)); } - int tagStartX = j + fontRendererObj.getStringWidth(displayString) + 5; - if(this.parent.displayTags == 0 || this.parent.displayTags == 2){ - if (this.parent.tagMap.hasClone(list.get(i))) { - for (UUID tagUUID : this.parent.tagMap.getUUIDs(list.get(i))){ - Tag tag = this.parent.tags.get(tagUUID); - if(tag != null){ - if(this.parent.displayTags == 2){ - fontRendererObj.drawString("[" + tag.name + "]", tagStartX, k, tag.color); - tagStartX += fontRendererObj.getStringWidth("[" + tag.name + "]") + 2; - } - else { - if(!tag.getIsHidden()){ + if((this.parent.getShowingClones() == 0 || this.parent.getShowingClones() == 2) && this.parent.tagMap != null){ + int tagStartX = j + fontRendererObj.getStringWidth(displayString) + 5; + if(this.parent.displayTags == 0 || this.parent.displayTags == 2){ + if (this.parent.tagMap.hasClone(list.get(i))) { + for (UUID tagUUID : this.parent.tagMap.getUUIDs(list.get(i))){ + Tag tag = this.parent.tags.get(tagUUID); + if(tag != null){ + if(this.parent.displayTags == 2){ fontRendererObj.drawString("[" + tag.name + "]", tagStartX, k, tag.color); tagStartX += fontRendererObj.getStringWidth("[" + tag.name + "]") + 2; } + else { + if(!tag.getIsHidden()){ + fontRendererObj.drawString("[" + tag.name + "]", tagStartX, k, tag.color); + tagStartX += fontRendererObj.getStringWidth("[" + tag.name + "]") + 2; + } + } } } } From df45247c895c72b6781a529ea81420bba2dc83a6 Mon Sep 17 00:00:00 2001 From: KAMKEEL Date: Wed, 22 Mar 2023 18:56:42 -0400 Subject: [PATCH 29/45] Add ShowingClones Get --- .../npcs/client/gui/GuiNpcMobSpawner.java | 23 +++++++++++-------- 1 file changed, 14 insertions(+), 9 deletions(-) diff --git a/src/main/java/noppes/npcs/client/gui/GuiNpcMobSpawner.java b/src/main/java/noppes/npcs/client/gui/GuiNpcMobSpawner.java index 21e0dc14d..46a6eb550 100644 --- a/src/main/java/noppes/npcs/client/gui/GuiNpcMobSpawner.java +++ b/src/main/java/noppes/npcs/client/gui/GuiNpcMobSpawner.java @@ -22,7 +22,7 @@ import java.util.*; public class GuiNpcMobSpawner extends GuiNPCInterface implements IScrollData,IGuiData { public static HashSet allTags = new HashSet<>(); - public static HashSet filter = new HashSet<>(); + public static HashSet tagFilters = new HashSet<>(); public static HashMap tags = new HashMap<>(); public byte displayTags = 0; public TagMap tagMap; @@ -68,7 +68,7 @@ public class GuiNpcMobSpawner extends GuiNPCInterface implements IScrollData,IGu filterScroll.guiTop = guiTop + 19; filterScroll.setList(new ArrayList<>(allTags)); filterScroll.multipleSelection = true; - filterScroll.setSelectedList(filter); + filterScroll.setSelectedList(tagFilters); GuiMenuTopButton button; addTopButton(button = new GuiMenuTopButton(3,guiLeft + 4, guiTop - 17, "spawner.clones")); @@ -127,6 +127,11 @@ public class GuiNpcMobSpawner extends GuiNPCInterface implements IScrollData,IGu } } + public int getShowingClones() + { + return showingClones; + } + private void showEntities() { Map data = EntityList.stringToClassMapping; ArrayList list = new ArrayList(); @@ -169,11 +174,11 @@ public class GuiNpcMobSpawner extends GuiNPCInterface implements IScrollData,IGu if(this.list == null){ this.list = new ArrayList(); } - // No Search // No Filters - if(search.isEmpty() && filter.size() == 0) + // No Search // No Filters - or - Entities + if(search.isEmpty() && (tagFilters.size() == 0 || showingClones == 1)) return new ArrayList(list); - // Yes Search // No Filters - else if(!search.isEmpty() && filter.size() == 0){ + // Yes Search // No Filters - or - Entities + else if(!search.isEmpty() && (tagFilters.size() == 0 || showingClones == 1)){ List list = new ArrayList(); for(String name : this.list){ if(name.toLowerCase().contains(search)) @@ -182,12 +187,12 @@ public class GuiNpcMobSpawner extends GuiNPCInterface implements IScrollData,IGu return list; } // No Search // Yes Filters - else if(search.isEmpty() && filter.size() > 0){ + else if(search.isEmpty() && tagFilters.size() > 0){ List list = new ArrayList(); for(String name : this.list){ if(tagMap.hasClone(name)){ boolean hasAll = true; - for(String uuid : filter){ + for(String uuid : tagFilters){ if(!tagMap.hasTag(name, UUID.fromString(uuid))){ hasAll = false; break; @@ -206,7 +211,7 @@ public class GuiNpcMobSpawner extends GuiNPCInterface implements IScrollData,IGu if(name.toLowerCase().contains(search)) { if(tagMap.hasClone(name)){ boolean hasAll = true; - for(String uuid : filter){ + for(String uuid : tagFilters){ if(!tagMap.hasTag(name, UUID.fromString(uuid))){ hasAll = false; break; From 81c752c483c9a8cdc694e4f90fac023771ce640f Mon Sep 17 00:00:00 2001 From: KAMKEEL Date: Wed, 22 Mar 2023 19:14:13 -0400 Subject: [PATCH 30/45] Tag Code Cleanup --- .../java/noppes/npcs/PacketHandlerServer.java | 8 ++++---- .../noppes/npcs/controllers/TagController.java | 17 ----------------- 2 files changed, 4 insertions(+), 21 deletions(-) diff --git a/src/main/java/noppes/npcs/PacketHandlerServer.java b/src/main/java/noppes/npcs/PacketHandlerServer.java index ff24e8d3c..d3ebd3a15 100644 --- a/src/main/java/noppes/npcs/PacketHandlerServer.java +++ b/src/main/java/noppes/npcs/PacketHandlerServer.java @@ -102,7 +102,7 @@ public class PacketHandlerServer{ NBTTagCompound compound = new NBTTagCompound(); NBTTagList tagList = new NBTTagList(); for (UUID uuid : npc.advanced.tagUUIDs) { - Tag tag = TagController.getInstance().getTagFromUUID(uuid); + Tag tag = TagController.getInstance().get(uuid); if (tag != null) { tagList.appendTag(new NBTTagString(tag.name)); } @@ -762,7 +762,7 @@ public class PacketHandlerServer{ Server.sendData(player, EnumPacketClient.GUI_DATA, compound); } else if(type == EnumPacketServer.TagSet){ - npc.advanced.tagUUIDs.removeIf(uuid -> TagController.getInstance().getTagFromUUID(uuid) != null); + npc.advanced.tagUUIDs.removeIf(uuid -> TagController.getInstance().get(uuid) != null); NBTTagCompound compound = Server.readNBT(buffer); NBTTagList list = compound.getTagList("TagNames",8); for (int i = 0; i < list.tagCount(); i++) { @@ -1000,7 +1000,7 @@ public class PacketHandlerServer{ Server.sendData(player, EnumPacketClient.GUI_DATA, compound); } else - warn(player,"tried todo something with the wrong tool, probably a hacker"); + warn(player,"WE 1 tried todo something with the wrong tool, probably a hacker"); } private void clonePackets(EnumPacketServer type, ByteBuf buffer, EntityPlayerMP player) throws IOException { @@ -1092,7 +1092,7 @@ public class PacketHandlerServer{ Server.sendData(player, EnumPacketClient.GUI_DATA, compound); } else - warn(player,"tried todo something with the wrong tool, probably a hacker"); + warn(player,"WE 2 tried todo something with the wrong tool, probably a hacker"); } private void warn(EntityPlayer player, String warning){ diff --git a/src/main/java/noppes/npcs/controllers/TagController.java b/src/main/java/noppes/npcs/controllers/TagController.java index 50b8a724d..213e8f5a7 100644 --- a/src/main/java/noppes/npcs/controllers/TagController.java +++ b/src/main/java/noppes/npcs/controllers/TagController.java @@ -203,14 +203,6 @@ public class TagController implements ITagHandler { } } - public int getFirstTagId() { - return tags.keySet().iterator().next(); - } - - public Tag getFirstTag() { - return tags.values().iterator().next(); - } - public boolean hasName(String newName) { if(newName.trim().isEmpty()) return true; @@ -239,15 +231,6 @@ public class TagController implements ITagHandler { return names; } - public Tag getTagFromUUID(UUID uuid){ - for (Map.Entry entryTag: TagController.getInstance().tags.entrySet()){ - if (entryTag.getValue().uuid.equals(uuid)) { - return entryTag.getValue(); - } - } - return null; - } - public HashSet getValidTags(TagMap tagMap){ HashSet tags = new HashSet(); for(UUID tagUUID : tagMap.getAllUUIDs()){ From cc2e8805d8b0c3249bc42b9b9d982ef104ce26c4 Mon Sep 17 00:00:00 2001 From: KAMKEEL Date: Wed, 22 Mar 2023 19:43:36 -0400 Subject: [PATCH 31/45] Create Tag Map --- .../controllers/ClientCloneController.java | 23 +++ .../controllers/ServerCloneController.java | 144 ++++++++++-------- .../noppes/npcs/controllers/data/TagMap.java | 10 +- 3 files changed, 111 insertions(+), 66 deletions(-) diff --git a/src/main/java/noppes/npcs/client/controllers/ClientCloneController.java b/src/main/java/noppes/npcs/client/controllers/ClientCloneController.java index b0cf6523d..afbf07d03 100644 --- a/src/main/java/noppes/npcs/client/controllers/ClientCloneController.java +++ b/src/main/java/noppes/npcs/client/controllers/ClientCloneController.java @@ -1,9 +1,14 @@ package noppes.npcs.client.controllers; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.nbt.NBTTagList; import noppes.npcs.CustomNpcs; import noppes.npcs.controllers.ServerCloneController; +import noppes.npcs.controllers.data.TagMap; import java.io.File; +import java.util.HashSet; +import java.util.UUID; public class ClientCloneController extends ServerCloneController{ public static ClientCloneController Instance; @@ -15,4 +20,22 @@ public class ClientCloneController extends ServerCloneController{ dir.mkdir(); return dir; } + + @Override + public boolean addToTagMap(NBTTagCompound nbttagcompound, String name, int tab){ + HashSet tagUUIDs = new HashSet(); + if(nbttagcompound.hasKey("TagUUIDs")){ + NBTTagList nbtTagList = nbttagcompound.getTagList("TagUUIDs",8); + for (int i = 0; i < nbtTagList.tagCount(); i++) { + tagUUIDs.add(UUID.fromString(nbtTagList.getStringTagAt(i))); + } + } + if(tagUUIDs.size() > 0){ + TagMap tagMap = ClientTagMapController.Instance.getTagMap(tab); + tagMap.putClone(name, tagUUIDs); + ClientTagMapController.Instance.saveTagMap(tagMap); + return true; + } + return false; + } } diff --git a/src/main/java/noppes/npcs/controllers/ServerCloneController.java b/src/main/java/noppes/npcs/controllers/ServerCloneController.java index e29d26ea1..bed456118 100644 --- a/src/main/java/noppes/npcs/controllers/ServerCloneController.java +++ b/src/main/java/noppes/npcs/controllers/ServerCloneController.java @@ -14,44 +14,42 @@ import noppes.npcs.api.IPos; import noppes.npcs.api.IWorld; import noppes.npcs.api.entity.IEntity; import noppes.npcs.api.handler.ICloneHandler; +import noppes.npcs.controllers.data.TagMap; import noppes.npcs.scripted.CustomNPCsException; import noppes.npcs.scripted.NpcAPI; import noppes.npcs.util.NBTJsonUtil; import java.io.File; import java.io.FileInputStream; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; +import java.util.*; public class ServerCloneController implements ICloneHandler { public static ServerCloneController Instance; - + public ServerCloneController(){ loadClones(); } - + private void loadClones(){ try { File dir = new File(getDir(), ".."); - File file = new File(dir, "clonednpcs.dat"); - // System.out.println(file.getAbsolutePath()); - // System.out.println(file.exists()); - if(file.exists()){ - Map> clones = loadOldClones(file); - file.delete(); + File file = new File(dir, "clonednpcs.dat"); + // System.out.println(file.getAbsolutePath()); + // System.out.println(file.exists()); + if(file.exists()){ + Map> clones = loadOldClones(file); + file.delete(); file = new File(dir, "clonednpcs.dat_old"); if(file.exists()) file.delete(); - + for(int tab : clones.keySet()){ Map map = clones.get(tab); for(String name: map.keySet()){ saveClone(tab, name, map.get(name)); } } - } + } } catch (Exception e) { LogWriter.except(e); } @@ -63,40 +61,40 @@ public class ServerCloneController implements ICloneHandler { dir.mkdir(); return dir; } - + private Map> loadOldClones(File file) throws Exception{ Map> clones = new HashMap>(); - NBTTagCompound nbttagcompound1 = CompressedStreamTools.readCompressed(new FileInputStream(file)); - NBTTagList list = nbttagcompound1.getTagList("Data", 10); - if(list == null){ - return clones; - } - for(int i = 0; i < list.tagCount(); i++) - { - NBTTagCompound compound = list.getCompoundTagAt(i); - if(!compound.hasKey("ClonedTab")){ - compound.setInteger("ClonedTab", 1); - } - - Map tab = clones.get(compound.getInteger("ClonedTab")); - if(tab == null) - clones.put(compound.getInteger("ClonedTab"), tab = new HashMap()); - - String name = compound.getString("ClonedName"); - int number = 1; - while(tab.containsKey(name)){ - number++; - name = String.format("%s%s", compound.getString("ClonedName"), number); - } - compound.removeTag("ClonedName"); - compound.removeTag("ClonedTab"); - compound.removeTag("ClonedDate"); - cleanTags(compound); - tab.put(name, compound); - } + NBTTagCompound nbttagcompound1 = CompressedStreamTools.readCompressed(new FileInputStream(file)); + NBTTagList list = nbttagcompound1.getTagList("Data", 10); + if(list == null){ + return clones; + } + for(int i = 0; i < list.tagCount(); i++) + { + NBTTagCompound compound = list.getCompoundTagAt(i); + if(!compound.hasKey("ClonedTab")){ + compound.setInteger("ClonedTab", 1); + } + + Map tab = clones.get(compound.getInteger("ClonedTab")); + if(tab == null) + clones.put(compound.getInteger("ClonedTab"), tab = new HashMap()); + + String name = compound.getString("ClonedName"); + int number = 1; + while(tab.containsKey(name)){ + number++; + name = String.format("%s%s", compound.getString("ClonedName"), number); + } + compound.removeTag("ClonedName"); + compound.removeTag("ClonedTab"); + compound.removeTag("ClonedDate"); + cleanTags(compound); + tab.put(name, compound); + } return clones; } - + public NBTTagCompound getCloneData(ICommandSender player, String name, int tab) { File file = new File(new File(getDir(), tab + ""), name + ".json"); if(!file.exists()){ @@ -113,22 +111,23 @@ public class ServerCloneController implements ICloneHandler { } return null; } - + public void saveClone(int tab, String name, NBTTagCompound compound){ try { File dir = new File(getDir(), tab + ""); if(!dir.exists()) dir.mkdir(); String filename = name + ".json"; - - File file = new File(dir, filename + "_new"); - File file2 = new File(dir, filename); - - NBTJsonUtil.SaveFile(file, compound); - if(file2.exists()){ - file2.delete(); - } - file.renameTo(file2); + + File file = new File(dir, filename + "_new"); + File file2 = new File(dir, filename); + + NBTJsonUtil.SaveFile(file, compound); + if(file2.exists()){ + file2.delete(); + } + file.renameTo(file2); + addToTagMap(compound, name, tab); } catch (Exception e) { LogWriter.except(e); } @@ -144,27 +143,44 @@ public class ServerCloneController implements ICloneHandler { } return list; } - + public boolean removeClone(String name, int tab){ - File file = new File(new File(getDir(), tab + ""), name + ".json"); - if(!file.exists()) - return false; - file.delete(); - return true; + File file = new File(new File(getDir(), tab + ""), name + ".json"); + if(!file.exists()) + return false; + file.delete(); + return true; } - + public String addClone(NBTTagCompound nbttagcompound, String name, int tab) { cleanTags(nbttagcompound); saveClone(tab, name, nbttagcompound); return name; } - + + public boolean addToTagMap(NBTTagCompound nbttagcompound, String name, int tab){ + HashSet tagUUIDs = new HashSet(); + if(nbttagcompound.hasKey("TagUUIDs")){ + NBTTagList nbtTagList = nbttagcompound.getTagList("TagUUIDs",8); + for (int i = 0; i < nbtTagList.tagCount(); i++) { + tagUUIDs.add(UUID.fromString(nbtTagList.getStringTagAt(i))); + } + } + if(tagUUIDs.size() > 0){ + TagMap tagMap = ServerTagMapController.Instance.getTagMap(tab); + tagMap.putClone(name, tagUUIDs); + ServerTagMapController.Instance.saveTagMap(tagMap); + return true; + } + return false; + } + public void cleanTags(NBTTagCompound nbttagcompound){ if(nbttagcompound.hasKey("ItemGiverId")) nbttagcompound.setInteger("ItemGiverId", 0); if(nbttagcompound.hasKey("TransporterId")) nbttagcompound.setInteger("TransporterId", -1); - + nbttagcompound.removeTag("StartPosNew"); nbttagcompound.removeTag("StartPos"); nbttagcompound.removeTag("MovingPathNew"); @@ -187,7 +203,7 @@ public class ServerCloneController implements ICloneHandler { adv.setInteger("ItemGiverId", 0); nbttagcompound.setTag("TransformJob", adv); } - + if(nbttagcompound.hasKey("TransformAI")){ NBTTagCompound adv = nbttagcompound.getCompoundTag("TransformAI"); adv.removeTag("StartPosNew"); diff --git a/src/main/java/noppes/npcs/controllers/data/TagMap.java b/src/main/java/noppes/npcs/controllers/data/TagMap.java index f38fe3b90..79ed50b78 100644 --- a/src/main/java/noppes/npcs/controllers/data/TagMap.java +++ b/src/main/java/noppes/npcs/controllers/data/TagMap.java @@ -2,8 +2,6 @@ package noppes.npcs.controllers.data; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.nbt.NBTTagList; -import noppes.npcs.controllers.ServerCloneController; -import noppes.npcs.controllers.TagController; import java.util.*; @@ -79,6 +77,14 @@ public class TagMap { return null; } + public void removeClone(String cloneName) { + tagMap.remove(cloneName); + } + + public void putClone(String cloneName, HashSet uuids) { + tagMap.put(cloneName, uuids); + } + public boolean hasTag(String cloneName, UUID tag) { HashSet uuids = getUUIDs(cloneName); if(uuids == null){ From abb2d13e6ea5f00c52c0acc6b820246bd0960ad7 Mon Sep 17 00:00:00 2001 From: KAMKEEL Date: Wed, 22 Mar 2023 19:47:13 -0400 Subject: [PATCH 32/45] Remove From TagMap --- .../noppes/npcs/controllers/ServerCloneController.java | 10 ++++++++++ src/main/java/noppes/npcs/controllers/data/TagMap.java | 4 ++-- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/src/main/java/noppes/npcs/controllers/ServerCloneController.java b/src/main/java/noppes/npcs/controllers/ServerCloneController.java index bed456118..6aa99088f 100644 --- a/src/main/java/noppes/npcs/controllers/ServerCloneController.java +++ b/src/main/java/noppes/npcs/controllers/ServerCloneController.java @@ -149,6 +149,7 @@ public class ServerCloneController implements ICloneHandler { if(!file.exists()) return false; file.delete(); + removeFromTagMap(name, tab); return true; } @@ -175,6 +176,15 @@ public class ServerCloneController implements ICloneHandler { return false; } + public boolean removeFromTagMap(String name, int tab){ + TagMap tagMap = ServerTagMapController.Instance.getTagMap(tab); + if(tagMap.removeClone(name)){ + ServerTagMapController.Instance.saveTagMap(tagMap); + return true; + } + return false; + } + public void cleanTags(NBTTagCompound nbttagcompound){ if(nbttagcompound.hasKey("ItemGiverId")) nbttagcompound.setInteger("ItemGiverId", 0); diff --git a/src/main/java/noppes/npcs/controllers/data/TagMap.java b/src/main/java/noppes/npcs/controllers/data/TagMap.java index 79ed50b78..dd4a1576d 100644 --- a/src/main/java/noppes/npcs/controllers/data/TagMap.java +++ b/src/main/java/noppes/npcs/controllers/data/TagMap.java @@ -77,8 +77,8 @@ public class TagMap { return null; } - public void removeClone(String cloneName) { - tagMap.remove(cloneName); + public boolean removeClone(String cloneName) { + return tagMap.remove(cloneName) != null; } public void putClone(String cloneName, HashSet uuids) { From ac87f2c2c28379b5aff16c86ff4593a0efc0d6ae Mon Sep 17 00:00:00 2001 From: KAMKEEL Date: Wed, 22 Mar 2023 20:01:05 -0400 Subject: [PATCH 33/45] Fix TagMap UUID List --- .../noppes/npcs/controllers/data/TagMap.java | 28 ++++++++----------- 1 file changed, 11 insertions(+), 17 deletions(-) diff --git a/src/main/java/noppes/npcs/controllers/data/TagMap.java b/src/main/java/noppes/npcs/controllers/data/TagMap.java index dd4a1576d..38c1f8369 100644 --- a/src/main/java/noppes/npcs/controllers/data/TagMap.java +++ b/src/main/java/noppes/npcs/controllers/data/TagMap.java @@ -2,6 +2,7 @@ package noppes.npcs.controllers.data; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.nbt.NBTTagList; +import net.minecraft.nbt.NBTTagString; import java.util.*; @@ -21,16 +22,13 @@ public class TagMap { { NBTTagCompound nbttagcompound = list.getCompoundTagAt(i); String cloneName = nbttagcompound.getString("Clone"); - NBTTagList allUUIDs = compound.getTagList("UUIDs", 10); + HashSet uuids = new HashSet(); - if(allUUIDs != null){ - for(int j = 0; j < allUUIDs.tagCount(); j++) - { - NBTTagCompound uuidCompound = list.getCompoundTagAt(j); - String uuid = uuidCompound.getString("UUID"); - if(!uuid.isEmpty()){ - uuids.add(UUID.fromString(uuid)); - } + NBTTagList nbtTagList = compound.getTagList("TagUUIDs",8); + for (int j = 0; j < nbtTagList.tagCount(); j++) { + String uuid = nbtTagList.getStringTagAt(i); + if(!uuid.isEmpty()){ + uuids.add(UUID.fromString(uuid)); } } tagMap.put(cloneName, uuids); @@ -40,24 +38,20 @@ public class TagMap { public NBTTagCompound writeNBT(){ NBTTagCompound nbt = new NBTTagCompound(); - NBTTagList cloneList = new NBTTagList(); for(String key: tagMap.keySet()){ HashSet uuidSet = tagMap.get(key); if(uuidSet.size() > 0){ NBTTagCompound cloneCompound = new NBTTagCompound(); cloneCompound.setString("Clone", key); - NBTTagList uuidList = new NBTTagList(); - for(UUID uuid : uuidSet){ - NBTTagCompound uuidCompound = new NBTTagCompound(); - uuidCompound.setString("UUID", uuid.toString()); - uuidList.appendTag(uuidCompound); + NBTTagList nbtTagList = new NBTTagList(); + for (UUID uuid : uuidSet) { + nbtTagList.appendTag(new NBTTagString(uuid.toString())); } - cloneCompound.setTag("UUIDs", uuidList); + cloneCompound.setTag("TagUUIDs", nbtTagList); cloneList.appendTag(cloneCompound); } } - nbt.setTag("TagMap", cloneList); return nbt; } From 30b3f55e7c8f5b0096fda8f2ef71021a7a93eebd Mon Sep 17 00:00:00 2001 From: KAMKEEL Date: Wed, 22 Mar 2023 20:13:36 -0400 Subject: [PATCH 34/45] Send All Tags to Client for Viewing --- .../java/noppes/npcs/PacketHandlerServer.java | 5 ++-- .../npcs/client/gui/GuiNpcMobSpawner.java | 30 +++++++------------ .../controllers/ServerTagMapController.java | 10 +++---- .../npcs/controllers/TagController.java | 4 +++ 4 files changed, 23 insertions(+), 26 deletions(-) diff --git a/src/main/java/noppes/npcs/PacketHandlerServer.java b/src/main/java/noppes/npcs/PacketHandlerServer.java index d3ebd3a15..d5b05fa37 100644 --- a/src/main/java/noppes/npcs/PacketHandlerServer.java +++ b/src/main/java/noppes/npcs/PacketHandlerServer.java @@ -28,6 +28,7 @@ import net.minecraft.world.WorldProvider; import net.minecraft.world.WorldServer; import net.minecraftforge.common.DimensionManager; import noppes.npcs.api.entity.IPlayer; +import noppes.npcs.api.handler.data.ITag; import noppes.npcs.config.ConfigDebug; import noppes.npcs.config.ConfigMain; import noppes.npcs.config.ConfigScript; @@ -1081,14 +1082,14 @@ public class PacketHandlerServer{ NBTTagCompound compound = new NBTTagCompound(); compound.setTag("CloneTags", tagMap.writeNBT()); - HashSet validTags = TagController.getInstance().getValidTags(tagMap); + HashSet validTags = TagController.getInstance().getAllTags(); NBTTagList validTagList = new NBTTagList(); for(Tag tag : validTags){ NBTTagCompound tagCompound = new NBTTagCompound(); tag.writeNBT(tagCompound); validTagList.appendTag(tagCompound); } - compound.setTag("ValidTags", validTagList); + compound.setTag("AllTags", validTagList); Server.sendData(player, EnumPacketClient.GUI_DATA, compound); } else diff --git a/src/main/java/noppes/npcs/client/gui/GuiNpcMobSpawner.java b/src/main/java/noppes/npcs/client/gui/GuiNpcMobSpawner.java index 46a6eb550..fe98e3a60 100644 --- a/src/main/java/noppes/npcs/client/gui/GuiNpcMobSpawner.java +++ b/src/main/java/noppes/npcs/client/gui/GuiNpcMobSpawner.java @@ -20,10 +20,10 @@ import noppes.npcs.controllers.data.TagMap; import java.lang.reflect.Modifier; import java.util.*; -public class GuiNpcMobSpawner extends GuiNPCInterface implements IScrollData,IGuiData { - public static HashSet allTags = new HashSet<>(); - public static HashSet tagFilters = new HashSet<>(); +public class GuiNpcMobSpawner extends GuiNPCInterface implements IGuiData { + public static HashMap tagNames = new HashMap<>(); public static HashMap tags = new HashMap<>(); + public static HashSet tagFilters = new HashSet<>(); public byte displayTags = 0; public TagMap tagMap; @@ -66,7 +66,7 @@ public class GuiNpcMobSpawner extends GuiNPCInterface implements IScrollData,IGu filterScroll.setSize(140, 188); filterScroll.guiLeft = guiLeft + 4; filterScroll.guiTop = guiTop + 19; - filterScroll.setList(new ArrayList<>(allTags)); + filterScroll.setList(new ArrayList<>(tagNames.keySet())); filterScroll.multipleSelection = true; filterScroll.setSelectedList(tagFilters); @@ -314,7 +314,7 @@ public class GuiNpcMobSpawner extends GuiNPCInterface implements IScrollData,IGu } } if (id == 10) { - HashSet hashSet = new HashSet<>(allTags); + HashSet hashSet = new HashSet<>(tagNames.keySet()); filterScroll.setSelectedList(hashSet); } if (id == 11) { @@ -330,29 +330,20 @@ public class GuiNpcMobSpawner extends GuiNPCInterface implements IScrollData,IGu } } - @Override - public void setData(Vector list, HashMap data) - { - allTags.addAll(list); - } - - @Override - public void setSelected(String selected) { - } - @Override public void save() { // TODO Auto-generated method stub - } + @Override public void setGuiData(NBTTagCompound compound) { if (compound.hasKey("CloneTags")) { tagMap = new TagMap(activeTab); NBTTagCompound cloneTags = compound.getCompoundTag("CloneTags"); tagMap.readNBT(cloneTags); - - NBTTagList validTags = compound.getTagList("ValidTags", 10); + } + else if (compound.hasKey("AllTags")) { + NBTTagList validTags = compound.getTagList("AllTags", 10); if(validTags != null){ for(int j = 0; j < validTags.tagCount(); j++) { @@ -362,7 +353,8 @@ public class GuiNpcMobSpawner extends GuiNPCInterface implements IScrollData,IGu tags.put(tag.uuid, tag); } } - } else { + } + else { NBTTagList nbtlist = compound.getTagList("List", 8); List list = new ArrayList(); for(int i = 0; i < nbtlist.tagCount(); i++){ diff --git a/src/main/java/noppes/npcs/controllers/ServerTagMapController.java b/src/main/java/noppes/npcs/controllers/ServerTagMapController.java index d7aa16338..209def895 100644 --- a/src/main/java/noppes/npcs/controllers/ServerTagMapController.java +++ b/src/main/java/noppes/npcs/controllers/ServerTagMapController.java @@ -34,13 +34,13 @@ public class ServerTagMapController { public TagMap getTagMap(int tab){ this.tagMap = new TagMap(tab); try { - File file = new File(getCloneTabDir(tab), "_____tag_map.dat"); + File file = new File(getCloneTabDir(tab), "___tagmap.dat"); if(file.exists()){ loadTagMapFile(file); } } catch (Exception e) { try { - File file = new File(getCloneTabDir(tab), "_____tag_map.dat_old"); + File file = new File(getCloneTabDir(tab), "___tagmap.dat_old"); if(file.exists()){ loadTagMapFile(file); } @@ -63,9 +63,9 @@ public class ServerTagMapController { public void saveTagMap(TagMap tagMap){ try { File saveDir = getCloneTabDir(tagMap.cloneTab); - File file = new File(saveDir, "_____tag_map.dat_new"); - File file1 = new File(saveDir, "_____tag_map.dat_old"); - File file2 = new File(saveDir, "_____tag_map.dat"); + File file = new File(saveDir, "___tagmap.dat_new"); + File file1 = new File(saveDir, "___tagmap.dat_old"); + File file2 = new File(saveDir, "___tagmap.dat"); CompressedStreamTools.writeCompressed(tagMap.writeNBT(), new FileOutputStream(file)); if(file1.exists()) { diff --git a/src/main/java/noppes/npcs/controllers/TagController.java b/src/main/java/noppes/npcs/controllers/TagController.java index 213e8f5a7..e3c044775 100644 --- a/src/main/java/noppes/npcs/controllers/TagController.java +++ b/src/main/java/noppes/npcs/controllers/TagController.java @@ -231,6 +231,10 @@ public class TagController implements ITagHandler { return names; } + public HashSet getAllTags(){ + return new HashSet(this.tags.values()); + } + public HashSet getValidTags(TagMap tagMap){ HashSet tags = new HashSet(); for(UUID tagUUID : tagMap.getAllUUIDs()){ From fcfc01b2ab8d43a43c7b34f79691c78f9420076d Mon Sep 17 00:00:00 2001 From: KAMKEEL Date: Wed, 22 Mar 2023 20:17:56 -0400 Subject: [PATCH 35/45] Fix Tag Filtering - Send All Tags to Client --- .../npcs/client/gui/GuiNpcMobSpawner.java | 22 ++++++++++++------- 1 file changed, 14 insertions(+), 8 deletions(-) diff --git a/src/main/java/noppes/npcs/client/gui/GuiNpcMobSpawner.java b/src/main/java/noppes/npcs/client/gui/GuiNpcMobSpawner.java index fe98e3a60..50e30c13b 100644 --- a/src/main/java/noppes/npcs/client/gui/GuiNpcMobSpawner.java +++ b/src/main/java/noppes/npcs/client/gui/GuiNpcMobSpawner.java @@ -192,10 +192,13 @@ public class GuiNpcMobSpawner extends GuiNPCInterface implements IGuiData { for(String name : this.list){ if(tagMap.hasClone(name)){ boolean hasAll = true; - for(String uuid : tagFilters){ - if(!tagMap.hasTag(name, UUID.fromString(uuid))){ - hasAll = false; - break; + for(String tagName : tagFilters){ + UUID tagUUID = tagNames.get(tagName); + if(tagUUID != null){ + if(!tagMap.hasTag(name, tagUUID)){ + hasAll = false; + break; + } } } if(hasAll){ @@ -211,10 +214,13 @@ public class GuiNpcMobSpawner extends GuiNPCInterface implements IGuiData { if(name.toLowerCase().contains(search)) { if(tagMap.hasClone(name)){ boolean hasAll = true; - for(String uuid : tagFilters){ - if(!tagMap.hasTag(name, UUID.fromString(uuid))){ - hasAll = false; - break; + for(String tagName : tagFilters){ + UUID tagUUID = tagNames.get(tagName); + if(tagUUID != null){ + if(!tagMap.hasTag(name, tagUUID)){ + hasAll = false; + break; + } } } if(hasAll){ From aa02580c2873225a39f279e9b4abff1e05a76e72 Mon Sep 17 00:00:00 2001 From: KAMKEEL Date: Wed, 22 Mar 2023 20:18:09 -0400 Subject: [PATCH 36/45] Add RemoveFromTagMap Override for ClientSide --- .../client/controllers/ClientCloneController.java | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/src/main/java/noppes/npcs/client/controllers/ClientCloneController.java b/src/main/java/noppes/npcs/client/controllers/ClientCloneController.java index afbf07d03..10d190431 100644 --- a/src/main/java/noppes/npcs/client/controllers/ClientCloneController.java +++ b/src/main/java/noppes/npcs/client/controllers/ClientCloneController.java @@ -4,6 +4,7 @@ import net.minecraft.nbt.NBTTagCompound; import net.minecraft.nbt.NBTTagList; import noppes.npcs.CustomNpcs; import noppes.npcs.controllers.ServerCloneController; +import noppes.npcs.controllers.ServerTagMapController; import noppes.npcs.controllers.data.TagMap; import java.io.File; @@ -38,4 +39,15 @@ public class ClientCloneController extends ServerCloneController{ } return false; } + + @Override + public boolean removeFromTagMap(String name, int tab){ + TagMap tagMap = ClientTagMapController.Instance.getTagMap(tab); + if(tagMap.removeClone(name)){ + ClientTagMapController.Instance.saveTagMap(tagMap); + return true; + } + return false; + } + } From 9d68a5e079746a5f9e73c09387d0a9baad2dcf27 Mon Sep 17 00:00:00 2001 From: KAMKEEL Date: Wed, 22 Mar 2023 21:27:20 -0400 Subject: [PATCH 37/45] Fix UUIDs not saving to NPCs - Revert TagMapUUID List --- .../java/noppes/npcs/PacketHandlerServer.java | 10 ++++-- .../npcs/client/gui/GuiNpcMobSpawner.java | 3 +- .../npcs/constants/EnumPacketServer.java | 2 +- .../npcs/controllers/TagController.java | 33 +++++-------------- 4 files changed, 19 insertions(+), 29 deletions(-) diff --git a/src/main/java/noppes/npcs/PacketHandlerServer.java b/src/main/java/noppes/npcs/PacketHandlerServer.java index d5b05fa37..a5c2b263e 100644 --- a/src/main/java/noppes/npcs/PacketHandlerServer.java +++ b/src/main/java/noppes/npcs/PacketHandlerServer.java @@ -103,7 +103,7 @@ public class PacketHandlerServer{ NBTTagCompound compound = new NBTTagCompound(); NBTTagList tagList = new NBTTagList(); for (UUID uuid : npc.advanced.tagUUIDs) { - Tag tag = TagController.getInstance().get(uuid); + Tag tag = TagController.getInstance().getTagFromUUID(uuid); if (tag != null) { tagList.appendTag(new NBTTagString(tag.name)); } @@ -763,7 +763,7 @@ public class PacketHandlerServer{ Server.sendData(player, EnumPacketClient.GUI_DATA, compound); } else if(type == EnumPacketServer.TagSet){ - npc.advanced.tagUUIDs.removeIf(uuid -> TagController.getInstance().get(uuid) != null); + npc.advanced.tagUUIDs.removeIf(uuid -> TagController.getInstance().getTagFromUUID(uuid) != null); NBTTagCompound compound = Server.readNBT(buffer); NBTTagList list = compound.getTagList("TagNames",8); for (int i = 0; i < list.tagCount(); i++) { @@ -1081,7 +1081,10 @@ public class PacketHandlerServer{ TagMap tagMap = ServerTagMapController.Instance.getTagMap(tab); NBTTagCompound compound = new NBTTagCompound(); compound.setTag("CloneTags", tagMap.writeNBT()); - + Server.sendData(player, EnumPacketClient.GUI_DATA, compound); + } + else if (type == EnumPacketServer.CloneAllTags) { + NBTTagCompound compound = new NBTTagCompound(); HashSet validTags = TagController.getInstance().getAllTags(); NBTTagList validTagList = new NBTTagList(); for(Tag tag : validTags){ @@ -1091,6 +1094,7 @@ public class PacketHandlerServer{ } compound.setTag("AllTags", validTagList); Server.sendData(player, EnumPacketClient.GUI_DATA, compound); + System.out.println("-------------- We sent the tags"); } else warn(player,"WE 2 tried todo something with the wrong tool, probably a hacker"); diff --git a/src/main/java/noppes/npcs/client/gui/GuiNpcMobSpawner.java b/src/main/java/noppes/npcs/client/gui/GuiNpcMobSpawner.java index 50e30c13b..cb497808c 100644 --- a/src/main/java/noppes/npcs/client/gui/GuiNpcMobSpawner.java +++ b/src/main/java/noppes/npcs/client/gui/GuiNpcMobSpawner.java @@ -50,7 +50,7 @@ public class GuiNpcMobSpawner extends GuiNPCInterface implements IGuiData { this.closeOnEsc = true; setBackground("menubg.png"); - Client.sendData(EnumPacketServer.TagsGet); + Client.sendData(EnumPacketServer.CloneAllTags, activeTab); } public void initGui() { @@ -357,6 +357,7 @@ public class GuiNpcMobSpawner extends GuiNPCInterface implements IGuiData { Tag tag = new Tag(); tag.readNBT(tagStructure); tags.put(tag.uuid, tag); + tagNames.put(tag.name, tag.uuid); } } } diff --git a/src/main/java/noppes/npcs/constants/EnumPacketServer.java b/src/main/java/noppes/npcs/constants/EnumPacketServer.java index 71d222a56..fdde8cf0c 100644 --- a/src/main/java/noppes/npcs/constants/EnumPacketServer.java +++ b/src/main/java/noppes/npcs/constants/EnumPacketServer.java @@ -33,7 +33,7 @@ public enum EnumPacketServer { RoleCompanionUpdate(CustomNpcsPermissions.NPC_ADVANCED, true), LinkedSet(CustomNpcsPermissions.NPC_ADVANCED, true), - ClonePreSave(CustomNpcsPermissions.NPC_CLONE), CloneSave(CustomNpcsPermissions.NPC_CLONE), CloneRemove(CustomNpcsPermissions.NPC_CLONE), CloneList, CloneTagList, + ClonePreSave(CustomNpcsPermissions.NPC_CLONE), CloneSave(CustomNpcsPermissions.NPC_CLONE), CloneRemove(CustomNpcsPermissions.NPC_CLONE), CloneList, CloneTagList, CloneAllTags, ScriptGlobalGuiDataSave(CustomNpcsPermissions.TOOL_SCRIPTER, false), ScriptGlobalGuiDataGet(false), diff --git a/src/main/java/noppes/npcs/controllers/TagController.java b/src/main/java/noppes/npcs/controllers/TagController.java index e3c044775..ac8d8176e 100644 --- a/src/main/java/noppes/npcs/controllers/TagController.java +++ b/src/main/java/noppes/npcs/controllers/TagController.java @@ -17,7 +17,6 @@ import java.util.zip.GZIPInputStream; public class TagController implements ITagHandler { public HashMap tags; - public HashMap tagsUUID; private static TagController instance; private int lastUsedID = 0; @@ -25,7 +24,6 @@ public class TagController implements ITagHandler { public TagController(){ instance = this; tags = new HashMap(); - tagsUUID = new HashMap(); loadTags(); // if(tags.isEmpty()){ // // TO-DO @@ -85,7 +83,6 @@ public class TagController implements ITagHandler { } } this.tags = tags; - this.tagsUUID = tagUUIDs; } public NBTTagCompound getNBT(){ @@ -132,14 +129,6 @@ public class TagController implements ITagHandler { return tags.get(tagSlot); } - public Tag get(UUID uuid) { - Integer id = tagsUUID.get(uuid); - if(id != null){ - get(id); - } - return null; - } - public List list() { return new ArrayList(this.tags.values()); } @@ -159,7 +148,6 @@ public class TagController implements ITagHandler { } tags.remove(tag.id); tags.put(tag.id, tag); - tagsUUID.put(tag.uuid, tag.id); saveTags(); } @@ -193,7 +181,6 @@ public class TagController implements ITagHandler { if (tag == null) { return null; } else { - this.tagsUUID.remove(tag.uuid); this.saveTags(); tag.id = -1; return tag; @@ -221,6 +208,15 @@ public class TagController implements ITagHandler { return null; } + public Tag getTagFromUUID(UUID uuid){ + for (Map.Entry entryTag: TagController.getInstance().tags.entrySet()){ + if (entryTag.getValue().uuid.equals(uuid)) { + return entryTag.getValue(); + } + } + return null; + } + public String[] getNames() { String[] names = new String[tags.size()]; int i = 0; @@ -234,15 +230,4 @@ public class TagController implements ITagHandler { public HashSet getAllTags(){ return new HashSet(this.tags.values()); } - - public HashSet getValidTags(TagMap tagMap){ - HashSet tags = new HashSet(); - for(UUID tagUUID : tagMap.getAllUUIDs()){ - Tag foundTag = get(tagUUID); - if(foundTag != null){ - tags.add(foundTag); - } - } - return tags; - } } From c4b9a5ca210543b17f667b04238ffdc7680afe1a Mon Sep 17 00:00:00 2001 From: KAMKEEL Date: Wed, 22 Mar 2023 22:03:01 -0400 Subject: [PATCH 38/45] Sort of Working --- .../noppes/npcs/client/gui/GuiNpcMobSpawner.java | 14 +++++++++----- .../client/gui/util/GuiCustomScrollCloner.java | 8 ++++++-- .../java/noppes/npcs/controllers/data/TagMap.java | 1 + 3 files changed, 16 insertions(+), 7 deletions(-) diff --git a/src/main/java/noppes/npcs/client/gui/GuiNpcMobSpawner.java b/src/main/java/noppes/npcs/client/gui/GuiNpcMobSpawner.java index cb497808c..836bfc9fb 100644 --- a/src/main/java/noppes/npcs/client/gui/GuiNpcMobSpawner.java +++ b/src/main/java/noppes/npcs/client/gui/GuiNpcMobSpawner.java @@ -16,16 +16,18 @@ import noppes.npcs.client.gui.util.*; import noppes.npcs.constants.EnumPacketServer; import noppes.npcs.controllers.data.Tag; import noppes.npcs.controllers.data.TagMap; +import org.lwjgl.Sys; import java.lang.reflect.Modifier; import java.util.*; public class GuiNpcMobSpawner extends GuiNPCInterface implements IGuiData { public static HashMap tagNames = new HashMap<>(); - public static HashMap tags = new HashMap<>(); public static HashSet tagFilters = new HashSet<>(); - public byte displayTags = 0; + public static byte displayTags = 0; + public TagMap tagMap; + public HashMap tags = new HashMap<>(); private final GuiCustomScrollCloner scroll = new GuiCustomScrollCloner(this,0); private final GuiCustomScroll filterScroll = new GuiCustomScroll(this,1); @@ -149,14 +151,16 @@ public class GuiNpcMobSpawner extends GuiNPCInterface implements IGuiData { scroll.setList(getSearchList()); } private void showClones() { - Client.sendData(EnumPacketServer.CloneTagList, activeTab); if(showingClones == 2){ + Client.sendData(EnumPacketServer.CloneTagList, activeTab); Client.sendData(EnumPacketServer.CloneList, activeTab); return; } ArrayList list = new ArrayList(); this.list = ClientCloneController.Instance.getClones(activeTab); this.tagMap = ClientTagMapController.Instance.getTagMap(activeTab); + System.out.println("Client Tag Map"); + System.out.println(this.tagMap); scroll.setList(getSearchList()); } public void keyTyped(char c, int i) @@ -344,9 +348,9 @@ public class GuiNpcMobSpawner extends GuiNPCInterface implements IGuiData { @Override public void setGuiData(NBTTagCompound compound) { if (compound.hasKey("CloneTags")) { - tagMap = new TagMap(activeTab); + this.tagMap = new TagMap(activeTab); NBTTagCompound cloneTags = compound.getCompoundTag("CloneTags"); - tagMap.readNBT(cloneTags); + this.tagMap.readNBT(cloneTags); } else if (compound.hasKey("AllTags")) { NBTTagList validTags = compound.getTagList("AllTags", 10); diff --git a/src/main/java/noppes/npcs/client/gui/util/GuiCustomScrollCloner.java b/src/main/java/noppes/npcs/client/gui/util/GuiCustomScrollCloner.java index c187f0a0d..e761b4241 100644 --- a/src/main/java/noppes/npcs/client/gui/util/GuiCustomScrollCloner.java +++ b/src/main/java/noppes/npcs/client/gui/util/GuiCustomScrollCloner.java @@ -57,12 +57,16 @@ public class GuiCustomScrollCloner extends GuiCustomScroll { if((this.parent.getShowingClones() == 0 || this.parent.getShowingClones() == 2) && this.parent.tagMap != null){ int tagStartX = j + fontRendererObj.getStringWidth(displayString) + 5; - if(this.parent.displayTags == 0 || this.parent.displayTags == 2){ + if(GuiNpcMobSpawner.displayTags == 0 || GuiNpcMobSpawner.displayTags == 2){ if (this.parent.tagMap.hasClone(list.get(i))) { + System.out.println("BRUH 2"); for (UUID tagUUID : this.parent.tagMap.getUUIDs(list.get(i))){ Tag tag = this.parent.tags.get(tagUUID); + System.out.println("BRUH 2.5"); if(tag != null){ - if(this.parent.displayTags == 2){ + System.out.println("-- BRUH 3 --"); + System.out.println(GuiNpcMobSpawner.displayTags); + if(GuiNpcMobSpawner.displayTags == 2){ fontRendererObj.drawString("[" + tag.name + "]", tagStartX, k, tag.color); tagStartX += fontRendererObj.getStringWidth("[" + tag.name + "]") + 2; } diff --git a/src/main/java/noppes/npcs/controllers/data/TagMap.java b/src/main/java/noppes/npcs/controllers/data/TagMap.java index 38c1f8369..f15d027bf 100644 --- a/src/main/java/noppes/npcs/controllers/data/TagMap.java +++ b/src/main/java/noppes/npcs/controllers/data/TagMap.java @@ -16,6 +16,7 @@ public class TagMap { } public void readNBT(NBTTagCompound compound){ + this.tagMap = new HashMap>(); NBTTagList list = compound.getTagList("TagMap", 10); if(list != null){ for(int i = 0; i < list.tagCount(); i++) From 53070b47c4e70432dc152b2be99c2863a29012f9 Mon Sep 17 00:00:00 2001 From: KAMKEEL Date: Wed, 22 Mar 2023 22:36:41 -0400 Subject: [PATCH 39/45] Fix ReadNBT Tag Error --- src/main/java/noppes/npcs/PacketHandlerServer.java | 1 - src/main/java/noppes/npcs/client/gui/GuiNpcMobSpawner.java | 4 +--- .../noppes/npcs/client/gui/util/GuiCustomScrollCloner.java | 4 ---- src/main/java/noppes/npcs/controllers/data/TagMap.java | 4 ++-- 4 files changed, 3 insertions(+), 10 deletions(-) diff --git a/src/main/java/noppes/npcs/PacketHandlerServer.java b/src/main/java/noppes/npcs/PacketHandlerServer.java index a5c2b263e..9900676ac 100644 --- a/src/main/java/noppes/npcs/PacketHandlerServer.java +++ b/src/main/java/noppes/npcs/PacketHandlerServer.java @@ -1094,7 +1094,6 @@ public class PacketHandlerServer{ } compound.setTag("AllTags", validTagList); Server.sendData(player, EnumPacketClient.GUI_DATA, compound); - System.out.println("-------------- We sent the tags"); } else warn(player,"WE 2 tried todo something with the wrong tool, probably a hacker"); diff --git a/src/main/java/noppes/npcs/client/gui/GuiNpcMobSpawner.java b/src/main/java/noppes/npcs/client/gui/GuiNpcMobSpawner.java index 836bfc9fb..130d1d732 100644 --- a/src/main/java/noppes/npcs/client/gui/GuiNpcMobSpawner.java +++ b/src/main/java/noppes/npcs/client/gui/GuiNpcMobSpawner.java @@ -22,12 +22,12 @@ import java.lang.reflect.Modifier; import java.util.*; public class GuiNpcMobSpawner extends GuiNPCInterface implements IGuiData { + public static HashMap tags = new HashMap<>(); public static HashMap tagNames = new HashMap<>(); public static HashSet tagFilters = new HashSet<>(); public static byte displayTags = 0; public TagMap tagMap; - public HashMap tags = new HashMap<>(); private final GuiCustomScrollCloner scroll = new GuiCustomScrollCloner(this,0); private final GuiCustomScroll filterScroll = new GuiCustomScroll(this,1); @@ -159,8 +159,6 @@ public class GuiNpcMobSpawner extends GuiNPCInterface implements IGuiData { ArrayList list = new ArrayList(); this.list = ClientCloneController.Instance.getClones(activeTab); this.tagMap = ClientTagMapController.Instance.getTagMap(activeTab); - System.out.println("Client Tag Map"); - System.out.println(this.tagMap); scroll.setList(getSearchList()); } public void keyTyped(char c, int i) diff --git a/src/main/java/noppes/npcs/client/gui/util/GuiCustomScrollCloner.java b/src/main/java/noppes/npcs/client/gui/util/GuiCustomScrollCloner.java index e761b4241..13fb9b95f 100644 --- a/src/main/java/noppes/npcs/client/gui/util/GuiCustomScrollCloner.java +++ b/src/main/java/noppes/npcs/client/gui/util/GuiCustomScrollCloner.java @@ -59,13 +59,9 @@ public class GuiCustomScrollCloner extends GuiCustomScroll { int tagStartX = j + fontRendererObj.getStringWidth(displayString) + 5; if(GuiNpcMobSpawner.displayTags == 0 || GuiNpcMobSpawner.displayTags == 2){ if (this.parent.tagMap.hasClone(list.get(i))) { - System.out.println("BRUH 2"); for (UUID tagUUID : this.parent.tagMap.getUUIDs(list.get(i))){ Tag tag = this.parent.tags.get(tagUUID); - System.out.println("BRUH 2.5"); if(tag != null){ - System.out.println("-- BRUH 3 --"); - System.out.println(GuiNpcMobSpawner.displayTags); if(GuiNpcMobSpawner.displayTags == 2){ fontRendererObj.drawString("[" + tag.name + "]", tagStartX, k, tag.color); tagStartX += fontRendererObj.getStringWidth("[" + tag.name + "]") + 2; diff --git a/src/main/java/noppes/npcs/controllers/data/TagMap.java b/src/main/java/noppes/npcs/controllers/data/TagMap.java index f15d027bf..4a14706c9 100644 --- a/src/main/java/noppes/npcs/controllers/data/TagMap.java +++ b/src/main/java/noppes/npcs/controllers/data/TagMap.java @@ -25,9 +25,9 @@ public class TagMap { String cloneName = nbttagcompound.getString("Clone"); HashSet uuids = new HashSet(); - NBTTagList nbtTagList = compound.getTagList("TagUUIDs",8); + NBTTagList nbtTagList = nbttagcompound.getTagList("TagUUIDs",8); for (int j = 0; j < nbtTagList.tagCount(); j++) { - String uuid = nbtTagList.getStringTagAt(i); + String uuid = nbtTagList.getStringTagAt(j); if(!uuid.isEmpty()){ uuids.add(UUID.fromString(uuid)); } From d3551dda362ab542d3ff13aaabe3242f47a8a5d0 Mon Sep 17 00:00:00 2001 From: KAMKEEL Date: Thu, 23 Mar 2023 21:26:22 -0400 Subject: [PATCH 40/45] Add Lang Update --- src/main/resources/assets/customnpcs/lang/en_US.lang | 1 + 1 file changed, 1 insertion(+) diff --git a/src/main/resources/assets/customnpcs/lang/en_US.lang b/src/main/resources/assets/customnpcs/lang/en_US.lang index 3c815bb39..d54d116e9 100644 --- a/src/main/resources/assets/customnpcs/lang/en_US.lang +++ b/src/main/resources/assets/customnpcs/lang/en_US.lang @@ -175,6 +175,7 @@ mailbox.setup=Setup mail display.model=Model display.show=Show display.hide=Hide +display.all=All display.showAttacking=Show when attacking display.size=Size display.texture=Texture From 7dc5cc5e8c37f4f27e9d6caec8e23d46c4bb2a47 Mon Sep 17 00:00:00 2001 From: KAMKEEL Date: Thu, 23 Mar 2023 21:26:34 -0400 Subject: [PATCH 41/45] Compress Display Tag Statements --- .../npcs/client/gui/util/GuiCustomScrollCloner.java | 10 ++-------- 1 file changed, 2 insertions(+), 8 deletions(-) diff --git a/src/main/java/noppes/npcs/client/gui/util/GuiCustomScrollCloner.java b/src/main/java/noppes/npcs/client/gui/util/GuiCustomScrollCloner.java index 13fb9b95f..36e50a69f 100644 --- a/src/main/java/noppes/npcs/client/gui/util/GuiCustomScrollCloner.java +++ b/src/main/java/noppes/npcs/client/gui/util/GuiCustomScrollCloner.java @@ -57,21 +57,15 @@ public class GuiCustomScrollCloner extends GuiCustomScroll { if((this.parent.getShowingClones() == 0 || this.parent.getShowingClones() == 2) && this.parent.tagMap != null){ int tagStartX = j + fontRendererObj.getStringWidth(displayString) + 5; - if(GuiNpcMobSpawner.displayTags == 0 || GuiNpcMobSpawner.displayTags == 2){ + if(GuiNpcMobSpawner.displayTags == 0 || GuiNpcMobSpawner.displayTags == 1){ if (this.parent.tagMap.hasClone(list.get(i))) { for (UUID tagUUID : this.parent.tagMap.getUUIDs(list.get(i))){ Tag tag = this.parent.tags.get(tagUUID); if(tag != null){ - if(GuiNpcMobSpawner.displayTags == 2){ + if(GuiNpcMobSpawner.displayTags == 1 || !tag.getIsHidden()){ fontRendererObj.drawString("[" + tag.name + "]", tagStartX, k, tag.color); tagStartX += fontRendererObj.getStringWidth("[" + tag.name + "]") + 2; } - else { - if(!tag.getIsHidden()){ - fontRendererObj.drawString("[" + tag.name + "]", tagStartX, k, tag.color); - tagStartX += fontRendererObj.getStringWidth("[" + tag.name + "]") + 2; - } - } } } } From f9a4fc0d54271a63ad0e720510dcd9c368a917da Mon Sep 17 00:00:00 2001 From: KAMKEEL Date: Thu, 23 Mar 2023 21:26:47 -0400 Subject: [PATCH 42/45] Add Ascending/Descending SetList --- .../npcs/client/gui/util/GuiCustomScroll.java | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/src/main/java/noppes/npcs/client/gui/util/GuiCustomScroll.java b/src/main/java/noppes/npcs/client/gui/util/GuiCustomScroll.java index bcd34411a..295db8a2d 100644 --- a/src/main/java/noppes/npcs/client/gui/util/GuiCustomScroll.java +++ b/src/main/java/noppes/npcs/client/gui/util/GuiCustomScroll.java @@ -231,12 +231,24 @@ public class GuiCustomScroll extends GuiScreen // TODO Auto-generated method stub return selected >= 0; } - public void setList(List list){ + + public void setList(List list){ isSorted = true; Collections.sort(list, String.CASE_INSENSITIVE_ORDER); this.list = list; setSize(xSize,ySize); } + + public void setList(List list, boolean ascending){ + isSorted = true; + Collections.sort(list, String.CASE_INSENSITIVE_ORDER); + if(!ascending){ + Collections.reverse(list); + } + this.list = list; + setSize(xSize,ySize); + } + public void setUnsortedList(List list){ isSorted = false; this.list = list; From c30a9014f874a34254bb047ac06005228559f505 Mon Sep 17 00:00:00 2001 From: KAMKEEL Date: Thu, 23 Mar 2023 21:27:30 -0400 Subject: [PATCH 43/45] Add Tag Search / Fix Tags not Updating from Server / Few Crash Fixes --- .../npcs/client/gui/GuiNpcMobSpawner.java | 77 +++++++++++++------ 1 file changed, 55 insertions(+), 22 deletions(-) diff --git a/src/main/java/noppes/npcs/client/gui/GuiNpcMobSpawner.java b/src/main/java/noppes/npcs/client/gui/GuiNpcMobSpawner.java index 130d1d732..693ce20c7 100644 --- a/src/main/java/noppes/npcs/client/gui/GuiNpcMobSpawner.java +++ b/src/main/java/noppes/npcs/client/gui/GuiNpcMobSpawner.java @@ -16,7 +16,6 @@ import noppes.npcs.client.gui.util.*; import noppes.npcs.constants.EnumPacketServer; import noppes.npcs.controllers.data.Tag; import noppes.npcs.controllers.data.TagMap; -import org.lwjgl.Sys; import java.lang.reflect.Modifier; import java.util.*; @@ -26,6 +25,7 @@ public class GuiNpcMobSpawner extends GuiNPCInterface implements IGuiData { public static HashMap tagNames = new HashMap<>(); public static HashSet tagFilters = new HashSet<>(); public static byte displayTags = 0; + public static boolean ascending = true; public TagMap tagMap; @@ -35,10 +35,12 @@ public class GuiNpcMobSpawner extends GuiNPCInterface implements IGuiData { private int posX,posY,posZ; private List list; + private List tagList; private static int showingClones = 0; private static String search = ""; + private static String tagSearch = ""; private int activeTab = 1; @@ -65,10 +67,9 @@ public class GuiNpcMobSpawner extends GuiNPCInterface implements IGuiData { scroll.guiLeft = guiLeft + 4; scroll.guiTop = guiTop + 26; filterScroll.clear(); - filterScroll.setSize(140, 188); + filterScroll.setSize(140, 166); filterScroll.guiLeft = guiLeft + 4; filterScroll.guiTop = guiTop + 19; - filterScroll.setList(new ArrayList<>(tagNames.keySet())); filterScroll.multipleSelection = true; filterScroll.setSelectedList(tagFilters); @@ -87,7 +88,7 @@ public class GuiNpcMobSpawner extends GuiNPCInterface implements IGuiData { addScroll(scroll); addTextField(new GuiNpcTextField(1, this, fontRendererObj, guiLeft + 4, guiTop + 4, 293, 20, search)); addButton(new GuiNpcButton(1, guiLeft + 298, guiTop + 6, 52, 20, "item.monsterPlacer.name")); - addButton(new GuiNpcButton(2, guiLeft + 298, guiTop + 100, 52, 20, "spawner.mobspawner")); + addButton(new GuiNpcButton(2, guiLeft + 298, guiTop + 140, 52, 20, "spawner.mobspawner")); if(showingClones == 0 || showingClones == 2){ @@ -119,19 +120,23 @@ public class GuiNpcMobSpawner extends GuiNPCInterface implements IGuiData { // Show Filters addLabel(new GuiNpcLabel(1, StatCollector.translateToLocal("menu.tags"), guiLeft + 7, guiTop + 7)); addScroll(filterScroll); + addTextField(new GuiNpcTextField(2, this, fontRendererObj, guiLeft + 4, guiTop + 190, 140, 20, tagSearch)); + + addLabel(new GuiNpcLabel(2, StatCollector.translateToLocal("display.visible") + ":", guiLeft + 150, guiTop + 27)); + addButton(new GuiNpcButton(12, guiLeft + 190, guiTop + 20, new String[]{"display.show", "display.all", "display.hide"}, displayTags)); + addButton(new GuiNpcButton(11, guiLeft + 150, guiTop + 43, 100, 20, "gui.deselectAll")); - addButton(new GuiNpcButton(10, guiLeft + 150, guiTop + 20, 120, 20, "gui.selectAll")); - addButton(new GuiNpcButton(11, guiLeft + 150, guiTop + 43, 120, 20, "gui.deselectAll")); - addLabel(new GuiNpcLabel(2, StatCollector.translateToLocal("tags.taglessEntries") + ":", guiLeft + 150, guiTop + 72)); - addButton(new GuiNpcButton(12, guiLeft + 240, guiTop + 65, new String[]{"all", "none", "hidden"}, displayTags)); getButton(12).width = 60; getButton(12).height = 20; + + showFilters(); } } - public int getShowingClones() - { - return showingClones; + public int getShowingClones() {return showingClones; } + + public void showFilters(){ + filterScroll.setList(getTagList()); } private void showEntities() { @@ -148,7 +153,7 @@ public class GuiNpcMobSpawner extends GuiNPCInterface implements IGuiData { } } this.list = list; - scroll.setList(getSearchList()); + scroll.setList(getSearchList(), ascending); } private void showClones() { if(showingClones == 2){ @@ -159,7 +164,7 @@ public class GuiNpcMobSpawner extends GuiNPCInterface implements IGuiData { ArrayList list = new ArrayList(); this.list = ClientCloneController.Instance.getClones(activeTab); this.tagMap = ClientTagMapController.Instance.getTagMap(activeTab); - scroll.setList(getSearchList()); + scroll.setList(getSearchList(), ascending); } public void keyTyped(char c, int i) { @@ -168,8 +173,15 @@ public class GuiNpcMobSpawner extends GuiNPCInterface implements IGuiData { if(search.equals(getTextField(1).getText())) return; search = getTextField(1).getText().toLowerCase(); + scroll.setList(getSearchList(), ascending); } - scroll.setList(getSearchList()); + if(getTextField(2) != null){ + if(tagSearch.equals(getTextField(2).getText())) + return; + tagSearch = getTextField(2).getText().toLowerCase(); + filterScroll.setList(getTagList()); + } + } private List getSearchList(){ @@ -234,6 +246,23 @@ public class GuiNpcMobSpawner extends GuiNPCInterface implements IGuiData { return list; } + private List getTagList(){ + if(this.tagList == null){ + this.tagList = new ArrayList(); + } + // No Search // No Filters - or - Entities + if(tagSearch.isEmpty()) + return new ArrayList(tagNames.keySet()); + // Yes Search // No Filters - or - Entities + + List list = new ArrayList(); + for(String name : this.tagList){ + if(name.toLowerCase().contains(tagSearch)) + list.add(name); + } + return list; + } + private NBTTagCompound getCompound(){ String sel = scroll.getSelected(); if(sel == null) @@ -321,12 +350,10 @@ public class GuiNpcMobSpawner extends GuiNPCInterface implements IGuiData { initGui(); } } - if (id == 10) { - HashSet hashSet = new HashSet<>(tagNames.keySet()); - filterScroll.setSelectedList(hashSet); - } if (id == 11) { - filterScroll.setSelectedList(new HashSet<>()); + tagFilters = new HashSet<>(); + filterScroll.setSelectedList(tagFilters); + initGui(); } if (id == 12) { GuiNpcButton button = (GuiNpcButton) guibutton; @@ -353,14 +380,20 @@ public class GuiNpcMobSpawner extends GuiNPCInterface implements IGuiData { else if (compound.hasKey("AllTags")) { NBTTagList validTags = compound.getTagList("AllTags", 10); if(validTags != null){ + HashMap tagsUpdate = new HashMap<>(); + HashMap tagNamesUpdate = new HashMap<>(); for(int j = 0; j < validTags.tagCount(); j++) { NBTTagCompound tagStructure = validTags.getCompoundTagAt(j); Tag tag = new Tag(); tag.readNBT(tagStructure); - tags.put(tag.uuid, tag); - tagNames.put(tag.name, tag.uuid); + tagsUpdate.put(tag.uuid, tag); + tagNamesUpdate.put(tag.name, tag.uuid); } + tags = tagsUpdate; + tagNames = tagNamesUpdate; + this.tagList = new ArrayList(tagNames.keySet()); + filterScroll.setList(getTagList()); } } else { @@ -370,7 +403,7 @@ public class GuiNpcMobSpawner extends GuiNPCInterface implements IGuiData { list.add(nbtlist.getStringTagAt(i)); } this.list = list; - scroll.setList(getSearchList()); + scroll.setList(getSearchList(), ascending); } } From ffd25430c9b23fcb9e5400b6767eed4ae12024e5 Mon Sep 17 00:00:00 2001 From: KAMKEEL Date: Thu, 23 Mar 2023 23:07:21 -0400 Subject: [PATCH 44/45] Fix Lang not Working with "Hidden" --- .../java/noppes/npcs/client/gui/global/GuiNPCManageTags.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/noppes/npcs/client/gui/global/GuiNPCManageTags.java b/src/main/java/noppes/npcs/client/gui/global/GuiNPCManageTags.java index f3e8a0013..ac6daf058 100644 --- a/src/main/java/noppes/npcs/client/gui/global/GuiNPCManageTags.java +++ b/src/main/java/noppes/npcs/client/gui/global/GuiNPCManageTags.java @@ -57,7 +57,7 @@ public class GuiNPCManageTags extends GuiNPCInterface2 implements IScrollData,IC addLabel(new GuiNpcLabel(1,"gui.color", guiLeft + 8, guiTop + 31)); getButton(10).setTextColor(tag.color); - addLabel(new GuiNpcLabel(3,"tag.hidden", guiLeft + 8, guiTop + 75)); + addLabel(new GuiNpcLabel(3,"faction.hidden", guiLeft + 8, guiTop + 75)); this.addButton(new GuiNpcButton(3,guiLeft + 100, guiTop + 70, 45, 20, new String[]{"gui.no","gui.yes"},tag.hideTag?1:0)); } From 319d7b050356ae37bf2c9edf24b903a1cda3f2a9 Mon Sep 17 00:00:00 2001 From: KAMKEEL Date: Thu, 23 Mar 2023 23:21:27 -0400 Subject: [PATCH 45/45] Reorganize Tag Maker to be more organized --- .../noppes/npcs/client/gui/global/GuiNPCManageTags.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/main/java/noppes/npcs/client/gui/global/GuiNPCManageTags.java b/src/main/java/noppes/npcs/client/gui/global/GuiNPCManageTags.java index ac6daf058..045adf2ae 100644 --- a/src/main/java/noppes/npcs/client/gui/global/GuiNPCManageTags.java +++ b/src/main/java/noppes/npcs/client/gui/global/GuiNPCManageTags.java @@ -53,12 +53,12 @@ public class GuiNPCManageTags extends GuiNPCInterface2 implements IScrollData,IC String color = Integer.toHexString(tag.color); while(color.length() < 6) color = "0" + color; - addButton(new GuiNpcButton(10, guiLeft + 40, guiTop + 26, 60, 20, color)); - addLabel(new GuiNpcLabel(1,"gui.color", guiLeft + 8, guiTop + 31)); + addButton(new GuiNpcButton(10, guiLeft + 50, guiTop + 30, 60, 20, color)); + addLabel(new GuiNpcLabel(1,"gui.color", guiLeft + 8, guiTop + 35)); getButton(10).setTextColor(tag.color); - addLabel(new GuiNpcLabel(3,"faction.hidden", guiLeft + 8, guiTop + 75)); - this.addButton(new GuiNpcButton(3,guiLeft + 100, guiTop + 70, 45, 20, new String[]{"gui.no","gui.yes"},tag.hideTag?1:0)); + addLabel(new GuiNpcLabel(3,"faction.hidden", guiLeft + 8, guiTop + 59)); + this.addButton(new GuiNpcButton(3,guiLeft + 50, guiTop + 54, 60, 20, new String[]{"gui.no","gui.yes"},tag.hideTag?1:0)); } @Override