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; +// } } } }