From cf78ff792a526e2f6c464273bb9e6b86619f6518 Mon Sep 17 00:00:00 2001 From: Pahimar Date: Thu, 19 May 2016 15:17:56 -0400 Subject: [PATCH] Clean up some of the filtering - a lot of unnecessary repeated code removed --- .../ee3/api/exchange/RecipeRegistryProxy.java | 52 +++-- .../ee3/api/recipe/RecipeRegistryProxy.java | 43 ++++ .../ee3/inventory/ContainerAlchenomicon.java | 2 +- .../pahimar/ee3/inventory/ContainerEE.java | 2 +- .../ContainerTransmutationTablet.java | 2 +- .../ee3/knowledge/TransmutationKnowledge.java | 4 +- .../TransmutationKnowledgeRegistry.java | 4 +- .../pahimar/ee3/recipe/RecipeRegistry.java | 1 + .../com/pahimar/ee3/util/FilterUtils.java | 207 +++++++----------- .../java/com/pahimar/ee3/util/ItemHelper.java | 79 ++----- 10 files changed, 181 insertions(+), 215 deletions(-) create mode 100644 src/main/java/com/pahimar/ee3/api/recipe/RecipeRegistryProxy.java diff --git a/src/main/java/com/pahimar/ee3/api/exchange/RecipeRegistryProxy.java b/src/main/java/com/pahimar/ee3/api/exchange/RecipeRegistryProxy.java index a075c490..b77b7f94 100644 --- a/src/main/java/com/pahimar/ee3/api/exchange/RecipeRegistryProxy.java +++ b/src/main/java/com/pahimar/ee3/api/exchange/RecipeRegistryProxy.java @@ -5,42 +5,46 @@ import cpw.mods.fml.common.Mod; import java.util.List; -public final class RecipeRegistryProxy -{ - public static void addRecipe(Object recipeOutput, List recipeInputList) - { - init(); +/** + * @deprecated + * @see com.pahimar.ee3.api.recipe.RecipeRegistryProxy + */ +@Deprecated +public final class RecipeRegistryProxy { - // NOOP if EquivalentExchange3 is not present - if (ee3Mod != null) - { - EE3Wrapper.ee3mod.getRecipeRegistry().addRecipe(recipeOutput, recipeInputList); - } + /** + * + * @deprecated + * @param recipeOutput + * @param recipeInputList + * @see com.pahimar.ee3.api.recipe.RecipeRegistryProxy#addRecipe(Object, List) + */ + @Deprecated + public static void addRecipe(Object recipeOutput, List recipeInputList) { + + com.pahimar.ee3.api.recipe.RecipeRegistryProxy.addRecipe(recipeOutput, recipeInputList); } - public static void dumpRecipeRegistryToLog() - { - init(); + /** + * @deprecated + * @see com.pahimar.ee3.api.recipe.RecipeRegistryProxy#dumpRecipeRegistryToLog() + */ + @Deprecated + public static void dumpRecipeRegistryToLog() { - // NOOP if EquivalentExchange3 is not present - if (ee3Mod != null) - { - EE3Wrapper.ee3mod.getRecipeRegistry().dumpRecipeRegistryToLog(); - } + com.pahimar.ee3.api.recipe.RecipeRegistryProxy.dumpRecipeRegistryToLog(); } @Mod.Instance("EE3") private static Object ee3Mod; - private static class EE3Wrapper - { + private static class EE3Wrapper { private static EquivalentExchange3 ee3mod; } - private static void init() - { - if (ee3Mod != null) - { + private static void init() { + + if (ee3Mod != null) { EE3Wrapper.ee3mod = (EquivalentExchange3) ee3Mod; } } diff --git a/src/main/java/com/pahimar/ee3/api/recipe/RecipeRegistryProxy.java b/src/main/java/com/pahimar/ee3/api/recipe/RecipeRegistryProxy.java new file mode 100644 index 00000000..660dd3ef --- /dev/null +++ b/src/main/java/com/pahimar/ee3/api/recipe/RecipeRegistryProxy.java @@ -0,0 +1,43 @@ +package com.pahimar.ee3.api.recipe; + +import com.pahimar.ee3.EquivalentExchange3; +import cpw.mods.fml.common.Mod; + +import java.util.List; + +public final class RecipeRegistryProxy { + + public static void addRecipe(Object recipeOutput, List recipeInputList) { + + init(); + + // NOOP if EquivalentExchange3 is not present + if (ee3Mod != null) { + EE3Wrapper.ee3mod.getRecipeRegistry().addRecipe(recipeOutput, recipeInputList); + } + } + + public static void dumpRecipeRegistryToLog() { + + init(); + + // NOOP if EquivalentExchange3 is not present + if (ee3Mod != null) { + EE3Wrapper.ee3mod.getRecipeRegistry().dumpRecipeRegistryToLog(); + } + } + + @Mod.Instance("EE3") + private static Object ee3Mod; + + private static class EE3Wrapper { + private static EquivalentExchange3 ee3mod; + } + + private static void init() { + + if (ee3Mod != null) { + EE3Wrapper.ee3mod = (EquivalentExchange3) ee3Mod; + } + } +} diff --git a/src/main/java/com/pahimar/ee3/inventory/ContainerAlchenomicon.java b/src/main/java/com/pahimar/ee3/inventory/ContainerAlchenomicon.java index 2243b4a9..1bc7aecb 100644 --- a/src/main/java/com/pahimar/ee3/inventory/ContainerAlchenomicon.java +++ b/src/main/java/com/pahimar/ee3/inventory/ContainerAlchenomicon.java @@ -188,7 +188,7 @@ public class ContainerAlchenomicon extends ContainerEE implements IElementButton this.requiresUpdate = true; boolean shouldUpdateInventory = false; ItemStack[] newInventory = new ItemStack[80]; - List filteredList = new ArrayList(FilterUtils.filterByNameContains(inventoryAlchenomicon.getKnownTransmutations(), searchTerm, Comparators.displayNameComparator)); + List filteredList = new ArrayList(FilterUtils.filterByDisplayName(inventoryAlchenomicon.getKnownTransmutations(), searchTerm, FilterUtils.NameFilterType.CONTAINS, Comparators.displayNameComparator)); maxPageOffset = filteredList.size() / 80; if (pageOffset > maxPageOffset) diff --git a/src/main/java/com/pahimar/ee3/inventory/ContainerEE.java b/src/main/java/com/pahimar/ee3/inventory/ContainerEE.java index 7e117c7f..1cf45a53 100644 --- a/src/main/java/com/pahimar/ee3/inventory/ContainerEE.java +++ b/src/main/java/com/pahimar/ee3/inventory/ContainerEE.java @@ -62,7 +62,7 @@ public abstract class ContainerEE extends Container if (slot.isItemValid(itemStack) && stackInSlot == null) { - slot.putStack(ItemHelper.cloneItemStack(itemStack, Math.min(itemStack.stackSize, slot.getSlotStackLimit()))); + slot.putStack(ItemHelper.clone(itemStack, Math.min(itemStack.stackSize, slot.getSlotStackLimit()))); slot.onSlotChanged(); if (slot.getStack() != null) diff --git a/src/main/java/com/pahimar/ee3/inventory/ContainerTransmutationTablet.java b/src/main/java/com/pahimar/ee3/inventory/ContainerTransmutationTablet.java index f52fb521..3f4c9ced 100644 --- a/src/main/java/com/pahimar/ee3/inventory/ContainerTransmutationTablet.java +++ b/src/main/java/com/pahimar/ee3/inventory/ContainerTransmutationTablet.java @@ -202,7 +202,7 @@ public class ContainerTransmutationTablet extends ContainerEE implements IElemen { ItemStack[] newInventory = new ItemStack[30]; - Set filteredSet = FilterUtils.filterByNameContains(this.inventoryTransmutationTablet.getKnownTransmutations(), searchTerm); + Set filteredSet = FilterUtils.filterByDisplayName(this.inventoryTransmutationTablet.getKnownTransmutations(), searchTerm, FilterUtils.NameFilterType.CONTAINS); List filteredList = new ArrayList(FilterUtils.filterByEnergyValue(filteredSet, energyValue)); int adjustedStartIndex = (int) ((scrollBarPosition / 187f) * filteredList.size()); diff --git a/src/main/java/com/pahimar/ee3/knowledge/TransmutationKnowledge.java b/src/main/java/com/pahimar/ee3/knowledge/TransmutationKnowledge.java index 8af0e103..175644e6 100644 --- a/src/main/java/com/pahimar/ee3/knowledge/TransmutationKnowledge.java +++ b/src/main/java/com/pahimar/ee3/knowledge/TransmutationKnowledge.java @@ -90,12 +90,12 @@ public class TransmutationKnowledge implements JsonSerializer filterByNameStartsWith(String filterString) { - return FilterUtils.filterByNameStartsWith(getKnownTransmutations(), filterString); + return FilterUtils.filterByDisplayName(getKnownTransmutations(), filterString, FilterUtils.NameFilterType.STARTS_WITH); } public Set filterByNameContains(String filterString) { - return FilterUtils.filterByNameContains(getKnownTransmutations(), filterString); + return FilterUtils.filterByDisplayName(getKnownTransmutations(), filterString, FilterUtils.NameFilterType.CONTAINS); } @Override diff --git a/src/main/java/com/pahimar/ee3/knowledge/TransmutationKnowledgeRegistry.java b/src/main/java/com/pahimar/ee3/knowledge/TransmutationKnowledgeRegistry.java index 8afde911..d076dbcd 100644 --- a/src/main/java/com/pahimar/ee3/knowledge/TransmutationKnowledgeRegistry.java +++ b/src/main/java/com/pahimar/ee3/knowledge/TransmutationKnowledgeRegistry.java @@ -67,7 +67,7 @@ public class TransmutationKnowledgeRegistry loadTemplateKnowledgeFromDisk(); } - return FilterUtils.filterByNameStartsWith(templateKnowledge.getKnownTransmutations(), filterString); + return FilterUtils.filterByDisplayName(templateKnowledge.getKnownTransmutations(), filterString, FilterUtils.NameFilterType.STARTS_WITH); } public Set getTemplatesKnownTransmutationsFilteredContains(String filterString) @@ -77,7 +77,7 @@ public class TransmutationKnowledgeRegistry loadTemplateKnowledgeFromDisk(); } - return FilterUtils.filterByNameContains(templateKnowledge.getKnownTransmutations(), filterString); + return FilterUtils.filterByDisplayName(templateKnowledge.getKnownTransmutations(), filterString, FilterUtils.NameFilterType.CONTAINS); } public boolean doesTemplateKnow(ItemStack itemStack) diff --git a/src/main/java/com/pahimar/ee3/recipe/RecipeRegistry.java b/src/main/java/com/pahimar/ee3/recipe/RecipeRegistry.java index 2b55bdd9..e3230707 100644 --- a/src/main/java/com/pahimar/ee3/recipe/RecipeRegistry.java +++ b/src/main/java/com/pahimar/ee3/recipe/RecipeRegistry.java @@ -71,6 +71,7 @@ public class RecipeRegistry { public Multimap> getRecipeMappings() { if (immutableRecipeMap == null) { + // FIXME Check to ensure we don't have multiple entries {@link https://github.com/pahimar/Equivalent-Exchange-3/issues/1046} immutableRecipeMap = ImmutableMultimap.copyOf(recipeRegistry.recipeMap); } diff --git a/src/main/java/com/pahimar/ee3/util/FilterUtils.java b/src/main/java/com/pahimar/ee3/util/FilterUtils.java index 5d7022e3..b4005271 100644 --- a/src/main/java/com/pahimar/ee3/util/FilterUtils.java +++ b/src/main/java/com/pahimar/ee3/util/FilterUtils.java @@ -3,153 +3,104 @@ package com.pahimar.ee3.util; import com.pahimar.ee3.api.exchange.EnergyValue; import com.pahimar.ee3.api.exchange.EnergyValueRegistryProxy; import com.pahimar.ee3.reference.Comparators; -import net.minecraft.item.ItemBlock; import net.minecraft.item.ItemStack; -import java.util.*; +import java.util.Collection; +import java.util.Comparator; +import java.util.Set; +import java.util.TreeSet; -public class FilterUtils -{ - public static Set filterForItemBlock(Set unfilteredItemStackSet) - { - return filterForItemBlock(unfilteredItemStackSet, Comparators.idComparator); +public class FilterUtils { + + public static Set filterByDisplayName(Set itemStacks, String filterString) { + return filterByDisplayName(itemStacks, filterString, NameFilterType.STARTS_WITH, null); } - public static Set filterForItemBlock(Set unfilteredItemStackSet, Comparator comparator) - { - Set itemBlockOnlySet = new TreeSet(comparator); + public static Set filterByDisplayName(Set itemStacks, String filterString, NameFilterType filterType) { + return filterByDisplayName(itemStacks, filterString, filterType, null); + } - for (ItemStack itemStack : unfilteredItemStackSet) - { - if (itemStack.getItem() instanceof ItemBlock) - { - itemBlockOnlySet.add(itemStack); + public static Set filterByDisplayName(Collection itemStacks, String filterString, NameFilterType filterType, Comparator comparator) { + + Set filteredSet = (comparator != null ? new TreeSet<>(comparator) : new TreeSet<>(Comparators.displayNameComparator)); + + if (itemStacks != null) { + if (filterString == null || filterString.isEmpty()) { + filteredSet.addAll(itemStacks); } - } + else { + for (ItemStack itemStack : itemStacks) { - return itemBlockOnlySet; - } + String itemDisplayName = itemStack.getDisplayName().toLowerCase(); - public static Set filterByNameStartsWith(Set unfilteredItemStackSet, String filterString) - { - return filterByNameStartsWith(unfilteredItemStackSet, filterString, Comparators.idComparator); - } - - public static Set filterByNameStartsWith(Set unfilteredItemStackSet, String filterString, Comparator comparator) - { - Set nameSortedSet = new TreeSet(comparator); - - for (ItemStack itemStack : unfilteredItemStackSet) - { - String itemDisplayName = itemStack.getDisplayName().toLowerCase(); - - if (filterString != null) - { - if (itemDisplayName.startsWith(filterString.toLowerCase())) - { - nameSortedSet.add(itemStack); - } - } - else - { - nameSortedSet.add(itemStack); - } - } - - return nameSortedSet; - } - - public static Set filterByNameContains(Collection unfilteredCollection, String filterString) - { - Set nameSortedSet = new HashSet(); - - for (ItemStack itemStack : unfilteredCollection) - { - String itemDisplayName = itemStack.getDisplayName().toLowerCase(); - - if (filterString != null) - { - if (itemDisplayName.contains(filterString.toLowerCase())) - { - nameSortedSet.add(itemStack); - } - } - else - { - nameSortedSet.add(itemStack); - } - } - - return nameSortedSet; - } - - public static Set filterByNameContains(Collection unfilteredCollection, String filterString, Comparator comparator) - { - Set nameSortedSet = new TreeSet(comparator); - - for (ItemStack itemStack : unfilteredCollection) - { - String itemDisplayName = itemStack.getDisplayName().toLowerCase(); - - if (filterString != null) - { - if (itemDisplayName.contains(filterString.toLowerCase())) - { - nameSortedSet.add(itemStack); - } - } - else - { - nameSortedSet.add(itemStack); - } - } - - return nameSortedSet; - } - - public static Set filterByEnergyValue(Collection unfilteredCollection, EnergyValue energyValue) - { - return filterByEnergyValue(unfilteredCollection, energyValue.getValue()); - } - - public static Set filterByEnergyValue(Collection unfilteredCollection, EnergyValue energyValue, Comparator comparator) - { - return filterByEnergyValue(unfilteredCollection, energyValue.getValue(), comparator); - } - - public static Set filterByEnergyValue(Collection unfilteredCollection, float energyValue) - { - Set sortedSet = new HashSet(); - - for (ItemStack itemStack : unfilteredCollection) - { - if (energyValue > 0f && EnergyValueRegistryProxy.hasEnergyValue(itemStack)) - { - if (EnergyValueRegistryProxy.getEnergyValue(itemStack).getValue() <= energyValue) - { - sortedSet.add(itemStack); + if (filterType == NameFilterType.STARTS_WITH && itemDisplayName.startsWith(filterString.toLowerCase())) { + filteredSet.add(itemStack); + } else if (filterType == NameFilterType.CONTAINS && itemDisplayName.contains(filterString.toLowerCase())) { + filteredSet.add(itemStack); + } } } } - return sortedSet; + return filteredSet; } - public static Set filterByEnergyValue(Collection unfilteredCollection, float energyValue, Comparator comparator) - { - Set sortedSet = new TreeSet(comparator); + public static Set filterByEnergyValue(Collection itemStacks, Number valueBound) { + return filterByEnergyValue(itemStacks, new EnergyValue(valueBound.floatValue()), ValueFilterType.VALUE_LOWER_THAN_BOUND, null); + } - for (ItemStack itemStack : unfilteredCollection) - { - if (energyValue > 0f && EnergyValueRegistryProxy.hasEnergyValue(itemStack)) - { - if (EnergyValueRegistryProxy.getEnergyValue(itemStack).getValue() <= energyValue) - { - sortedSet.add(itemStack); + public static Set filterByEnergyValue(Collection itemStacks, EnergyValue valueBound) { + return filterByEnergyValue(itemStacks, valueBound, ValueFilterType.VALUE_LOWER_THAN_BOUND, null); + } + + public static Set filterByEnergyValue(Collection itemStacks, Number valueBound, ValueFilterType filterType) { + return filterByEnergyValue(itemStacks, new EnergyValue(valueBound.floatValue()), filterType, null); + } + + public static Set filterByEnergyValue(Collection itemStacks, EnergyValue valueBound, ValueFilterType filterType) { + return filterByEnergyValue(itemStacks, valueBound, filterType, null); + } + + public static Set filterByEnergyValue(Collection itemStacks, Number valueBound, ValueFilterType filterType, Comparator comparator) { + return filterByEnergyValue(itemStacks, new EnergyValue(valueBound.floatValue()), filterType, comparator); + } + + public static Set filterByEnergyValue(Collection itemStacks, EnergyValue valueBound, ValueFilterType filterType, Comparator comparator) { + + Set filteredSet = (comparator != null ? new TreeSet<>(comparator) : new TreeSet<>(Comparators.displayNameComparator)); + + if (itemStacks != null) { + + if (valueBound == null) { + filteredSet.addAll(itemStacks); + } + else { + for (ItemStack itemStack : itemStacks) { + + EnergyValue energyValue = EnergyValueRegistryProxy.getEnergyValue(itemStack); + + if (energyValue != null) { + if (filterType == ValueFilterType.VALUE_LOWER_THAN_BOUND && energyValue.compareTo(valueBound) <= 0) { + filteredSet.add(itemStack); + } + else if (filterType == ValueFilterType.VALUE_GREATER_THAN_BOUND && energyValue.compareTo(valueBound) >= 0) { + filteredSet.add(itemStack); + } + } } } } - return sortedSet; + return filteredSet; + } + + public enum NameFilterType { + STARTS_WITH, + CONTAINS + } + + public enum ValueFilterType { + VALUE_GREATER_THAN_BOUND, + VALUE_LOWER_THAN_BOUND } } diff --git a/src/main/java/com/pahimar/ee3/util/ItemHelper.java b/src/main/java/com/pahimar/ee3/util/ItemHelper.java index 6a22d7a9..dca8c6e2 100644 --- a/src/main/java/com/pahimar/ee3/util/ItemHelper.java +++ b/src/main/java/com/pahimar/ee3/util/ItemHelper.java @@ -3,18 +3,22 @@ package com.pahimar.ee3.util; import com.pahimar.ee3.reference.Comparators; import com.pahimar.ee3.reference.Names; import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import java.util.UUID; -public class ItemHelper -{ - public static ItemStack cloneItemStack(ItemStack itemStack, int stackSize) - { - ItemStack clonedItemStack = itemStack.copy(); - clonedItemStack.stackSize = stackSize; - return clonedItemStack; +public class ItemHelper { + + public static ItemStack clone(ItemStack itemStack, int stackSize) { + + if (itemStack != null) { + ItemStack clonedItemStack = itemStack.copy(); + clonedItemStack.stackSize = stackSize; + return clonedItemStack; + } + else { + return null; + } } /** @@ -25,60 +29,25 @@ public class ItemHelper * @param second The second ItemStack being tested for equality * @return true if the two ItemStacks are equivalent, false otherwise */ - public static boolean equals(ItemStack first, ItemStack second) - { + public static boolean equals(ItemStack first, ItemStack second) { return (Comparators.idComparator.compare(first, second) == 0); } - public static boolean equalsIgnoreStackSize(ItemStack itemStack1, ItemStack itemStack2) - { - if (itemStack1 != null && itemStack2 != null) - { - // Sort on itemID - if (Item.getIdFromItem(itemStack1.getItem()) - Item.getIdFromItem(itemStack2.getItem()) == 0) - { - // Sort on item - if (itemStack1.getItem() == itemStack2.getItem()) - { - // Then sort on meta - if (itemStack1.getItemDamage() == itemStack2.getItemDamage()) - { - // Then sort on NBT - if (itemStack1.hasTagCompound() && itemStack2.hasTagCompound()) - { - // Then sort on stack size - if (ItemStack.areItemStackTagsEqual(itemStack1, itemStack2)) - { - return true; - } - } - else if (!itemStack1.hasTagCompound() && !itemStack2.hasTagCompound()) - { - return true; - } - } - } - } - } - - return false; + public static boolean equalsIgnoreStackSize(ItemStack itemStack1, ItemStack itemStack2) { + return equals(clone(itemStack1, 1), clone(itemStack2, 1)); } - public static int compare(ItemStack itemStack1, ItemStack itemStack2) - { + public static int compare(ItemStack itemStack1, ItemStack itemStack2) { return Comparators.idComparator.compare(itemStack1, itemStack2); } - public static String toString(ItemStack itemStack) - { - if (itemStack != null) - { - if (itemStack.hasTagCompound()) - { + public static String toString(ItemStack itemStack) { + + if (itemStack != null) { + if (itemStack.hasTagCompound()) { return String.format("%sxitemStack[%s@%s:%s]", itemStack.stackSize, itemStack.getUnlocalizedName(), itemStack.getItemDamage(), itemStack.getTagCompound()); } - else - { + else { return String.format("%sxitemStack[%s@%s]", itemStack.stackSize, itemStack.getUnlocalizedName(), itemStack.getItemDamage()); } } @@ -86,13 +55,11 @@ public class ItemHelper return "null"; } - public static boolean hasOwner(ItemStack itemStack) - { + public static boolean hasOwner(ItemStack itemStack) { return (NBTHelper.hasTag(itemStack, Names.NBT.OWNER_UUID_MOST_SIG) && NBTHelper.hasTag(itemStack, Names.NBT.OWNER_UUID_LEAST_SIG)) || NBTHelper.hasTag(itemStack, Names.NBT.OWNER); } - public static boolean hasOwnerUUID(ItemStack itemStack) - { + public static boolean hasOwnerUUID(ItemStack itemStack) { return NBTHelper.hasTag(itemStack, Names.NBT.OWNER_UUID_MOST_SIG) && NBTHelper.hasTag(itemStack, Names.NBT.OWNER_UUID_LEAST_SIG); }