diff --git a/src/main/java/codechicken/nei/ItemList.java b/src/main/java/codechicken/nei/ItemList.java index 14e3575f..50278081 100644 --- a/src/main/java/codechicken/nei/ItemList.java +++ b/src/main/java/codechicken/nei/ItemList.java @@ -17,6 +17,7 @@ import com.google.common.collect.ListMultimap; import codechicken.nei.api.ItemFilter; import codechicken.nei.api.ItemFilter.ItemFilterProvider; +import codechicken.nei.api.ItemInfo; import codechicken.nei.util.ItemUntranslator; public class ItemList { @@ -96,7 +97,15 @@ public class ItemList { displayName = EnumChatFormatting .getTextWithoutFormattingCodes(item.getItem().getItemStackDisplayName(item)); - return displayName != null && !displayName.isEmpty() && this.pattern.matcher(displayName).find(); + if (displayName != null && !displayName.isEmpty() && this.pattern.matcher(displayName).find()) { + return true; + } + } + + for (String alias : ItemInfo.getAliases(item)) { + if (this.pattern.matcher(alias).find()) { + return true; + } } return false; diff --git a/src/main/java/codechicken/nei/api/API.java b/src/main/java/codechicken/nei/api/API.java index bf03fa2b..c900d76a 100644 --- a/src/main/java/codechicken/nei/api/API.java +++ b/src/main/java/codechicken/nei/api/API.java @@ -1,9 +1,11 @@ package codechicken.nei.api; +import java.util.Arrays; import java.util.Collections; import java.util.Comparator; import java.util.List; import java.util.Objects; +import java.util.stream.Collectors; import net.minecraft.block.Block; import net.minecraft.client.gui.inventory.GuiContainer; @@ -176,6 +178,21 @@ public class API { } } + /** + * Add an alias name that this item can be found by in the search field, in addition to its display name. + */ + public static void setAliases(ItemStack item, String... aliases) { + final List list = Arrays.asList(aliases).stream().filter(Objects::nonNull).map(String::trim) + .filter(s -> !s.isEmpty()).collect(Collectors.toList()); + + if (list.isEmpty()) { + ItemInfo.itemAliases.remove(item); + } else { + ItemInfo.itemAliases.put(item, list); + } + + } + /** * Adds an item to the item panel. Any items added using this function will override the default search pattern. * diff --git a/src/main/java/codechicken/nei/api/ItemInfo.java b/src/main/java/codechicken/nei/api/ItemInfo.java index b3204695..c776bced 100644 --- a/src/main/java/codechicken/nei/api/ItemInfo.java +++ b/src/main/java/codechicken/nei/api/ItemInfo.java @@ -1,6 +1,7 @@ package codechicken.nei.api; import java.util.ArrayList; +import java.util.Collections; import java.util.HashMap; import java.util.HashSet; import java.util.LinkedList; @@ -84,6 +85,7 @@ public class ItemInfo { public static final ArrayListMultimap highlightHandlers = ArrayListMultimap.create(); public static final ItemStackMap nameOverrides = new ItemStackMap<>(); + public static final ItemStackMap> itemAliases = new ItemStackMap<>(); public static final ItemStackSet hiddenItems = new ItemStackSet(); public static final AnyMultiItemFilter hiddenItemsRules = new AnyMultiItemFilter(); public static final ItemStackSet finiteItems = new ItemStackSet(); @@ -109,6 +111,11 @@ public class ItemInfo { return nameOverrides.get(stack); } + public static List getAliases(ItemStack stack) { + final List aliases = itemAliases.get(stack); + return aliases != null ? aliases : Collections.emptyList(); + } + public static boolean canBeInfinite(ItemStack stack) { return !finiteItems.contains(stack); }