diff --git a/src/main/java/codechicken/nei/BookmarkPanel.java b/src/main/java/codechicken/nei/BookmarkPanel.java index e449773d..a951b2e8 100644 --- a/src/main/java/codechicken/nei/BookmarkPanel.java +++ b/src/main/java/codechicken/nei/BookmarkPanel.java @@ -130,9 +130,12 @@ public class BookmarkPanel extends PanelWidget { } public void setEndRowIndex(BookmarkGrid BGrid, int rowIndex) { - this.endRowIndex = rowIndex; - this.endItemIndexTop = getTopItemIndex(BGrid, rowIndex); - this.endItemIndexBottom = getBottomItemIndex(BGrid, rowIndex); + + if (BGrid.getRowItemIndex(rowIndex, true) >= 0) { + this.endRowIndex = rowIndex; + this.endItemIndexTop = getTopItemIndex(BGrid, rowIndex); + this.endItemIndexBottom = getBottomItemIndex(BGrid, rowIndex); + } } public boolean hasEndRow() { @@ -226,12 +229,12 @@ public class BookmarkPanel extends PanelWidget { } } - public static enum BookmarkViewMode { + public enum BookmarkViewMode { DEFAULT, TODO_LIST } - public static enum BookmarkLoadingState { + public enum BookmarkLoadingState { LOADING, LOADED } @@ -2726,8 +2729,9 @@ public class BookmarkPanel extends PanelWidget { } public boolean pullBookmarkItems(int groupId, boolean onlyIngredients) { - IBookmarkContainerHandler containerHandler = BookmarkContainerInfo - .getBookmarkContainerHandler(getGuiContainer()); + final GuiContainer guiContainer = getGuiContainer(); + final IBookmarkContainerHandler containerHandler = BookmarkContainerInfo + .getBookmarkContainerHandler(guiContainer); if (containerHandler == null) { return false; @@ -2736,7 +2740,6 @@ public class BookmarkPanel extends PanelWidget { final BookmarkGrid BGrid = (BookmarkGrid) grid; final ArrayList items = new ArrayList<>(); final ItemStackMap uniqueItems = new ItemStackMap<>(); - final BookmarkGroup group = groupId >= 0 ? BGrid.groups.get(groupId) : null; ItemStackMetadata meta; for (int idx = 0; idx < BGrid.realItems.size(); idx++) { @@ -2744,6 +2747,7 @@ public class BookmarkPanel extends PanelWidget { if (groupId == -1 || groupId == meta.groupId) { final ItemStack stack = BGrid.getItem(idx); + final BookmarkGroup group = BGrid.groups.get(meta.groupId); if (!onlyIngredients || meta.ingredient && (group == null || group.crafting == null || group.crafting.inputs.containsKey(BGrid.realItems.get(idx)))) { @@ -2768,7 +2772,7 @@ public class BookmarkPanel extends PanelWidget { return false; } - containerHandler.pullBookmarkItemsFromContainer(getGuiContainer(), items); + containerHandler.pullBookmarkItemsFromContainer(guiContainer, items); return true; } } diff --git a/src/main/java/codechicken/nei/ItemZoom.java b/src/main/java/codechicken/nei/ItemZoom.java index 4cbb86b5..5df0d966 100644 --- a/src/main/java/codechicken/nei/ItemZoom.java +++ b/src/main/java/codechicken/nei/ItemZoom.java @@ -61,6 +61,9 @@ public class ItemZoom extends Widget implements IContainerInputHandler { GL11.glPopMatrix(); + GL11.glPushAttrib(GL11.GL_ALL_ATTRIB_BITS); + GuiContainerManager.enable2DRender(); + if (NEIClientConfig.getBooleanSetting("inventory.itemzoom.showName")) { String dispalyName = NEIClientUtils.cropText(fontRenderer, this.displayName, this.availableAreaWidth); drawStringC( @@ -90,6 +93,7 @@ public class ItemZoom extends Widget implements IContainerInputHandler { } } + GL11.glPopAttrib(); } } diff --git a/src/main/java/codechicken/nei/PresetsList.java b/src/main/java/codechicken/nei/PresetsList.java index 97cbbe6e..50528a2c 100644 --- a/src/main/java/codechicken/nei/PresetsList.java +++ b/src/main/java/codechicken/nei/PresetsList.java @@ -32,7 +32,7 @@ import codechicken.nei.util.NBTJson; public class PresetsList { - public static enum PresetMode { + public enum PresetMode { HIDE, REMOVE, GROUP; diff --git a/src/main/java/codechicken/nei/SearchTokenParser.java b/src/main/java/codechicken/nei/SearchTokenParser.java index e45fce79..c2c5f227 100644 --- a/src/main/java/codechicken/nei/SearchTokenParser.java +++ b/src/main/java/codechicken/nei/SearchTokenParser.java @@ -11,6 +11,7 @@ import java.util.stream.Collectors; import net.minecraft.client.Minecraft; import net.minecraft.client.resources.Language; +import net.minecraft.item.ItemStack; import net.minecraft.util.EnumChatFormatting; import codechicken.nei.ItemList.AllMultiItemFilter; @@ -69,6 +70,22 @@ public class SearchTokenParser { } } + private static class IsRegisteredItemFilter implements ItemFilter { + + public ItemFilter filter; + + public IsRegisteredItemFilter(ItemFilter filter) { + this.filter = filter; + } + + @Override + public boolean matches(ItemStack item) { + return item != null && item.getItem() != null + && item.getItem().delegate.name() != null + && this.filter.matches(item); + } + } + protected final List searchProviders; protected final ProvidersCache providersCache = new ProvidersCache(); protected final TCharCharMap prefixRedefinitions = new TCharCharHashMap(); @@ -118,15 +135,15 @@ public class SearchTokenParser { public ItemFilter getFilter(String filterText) { final String[] parts = EnumChatFormatting.getTextWithoutFormattingCodes(filterText).toLowerCase().split("\\|"); - final List searchTokens = Arrays.stream(parts).map(s -> parseSearchText(s)).filter(s -> s != null) + final List searchTokens = Arrays.stream(parts).map(this::parseSearchText).filter(s -> s != null) .collect(Collectors.toCollection(ArrayList::new)); if (searchTokens.isEmpty()) { return new EverythingItemFilter(); } else if (searchTokens.size() == 1) { - return searchTokens.get(0); + return new IsRegisteredItemFilter(searchTokens.get(0)); } else { - return new AnyMultiItemFilter(searchTokens); + return new IsRegisteredItemFilter(new AnyMultiItemFilter(searchTokens)); } } diff --git a/src/main/java/codechicken/nei/SubsetWidget.java b/src/main/java/codechicken/nei/SubsetWidget.java index 5021f9b7..2e030751 100644 --- a/src/main/java/codechicken/nei/SubsetWidget.java +++ b/src/main/java/codechicken/nei/SubsetWidget.java @@ -22,6 +22,8 @@ import net.minecraft.nbt.NBTTagCompound; import net.minecraft.nbt.NBTTagList; import net.minecraft.util.EnumChatFormatting; +import org.lwjgl.opengl.GL11; + import codechicken.core.gui.GuiScrollSlot; import codechicken.lib.gui.GuiDraw; import codechicken.lib.vec.Rectangle4i; @@ -711,9 +713,14 @@ public class SubsetWidget extends Button implements ItemFilterProvider, ItemsLoa hoverStack = null; if (root.isVisible()) { + GL11.glPushAttrib(GL11.GL_ALL_ATTRIB_BITS); + GuiContainerManager.enable2DRender(); + root.resize(area.x, 0, area.y); root.cacheState(); root.draw(mx, my); + + GL11.glPopAttrib(); } }