diff options
Diffstat (limited to 'src/main/java/me/shedaniel/gui')
| -rw-r--r-- | src/main/java/me/shedaniel/gui/ConfigGui.java | 11 | ||||
| -rwxr-xr-x | src/main/java/me/shedaniel/gui/GuiItemList.java | 33 |
2 files changed, 33 insertions, 11 deletions
diff --git a/src/main/java/me/shedaniel/gui/ConfigGui.java b/src/main/java/me/shedaniel/gui/ConfigGui.java index 1073c1f24..ab97be55f 100644 --- a/src/main/java/me/shedaniel/gui/ConfigGui.java +++ b/src/main/java/me/shedaniel/gui/ConfigGui.java @@ -75,7 +75,7 @@ public class ConfigGui extends Gui { addButton(new ButtonWidget(1001, parent.width / 2 - 90, 150, 150, 20, "") { @Override public void onPressed(double double_1, double double_2) { - int index = Arrays.asList(REIItemListOrdering.values()).indexOf(Core.config.itemListOrdering); + int index = Arrays.asList(REIItemListOrdering.values()).indexOf(Core.config.itemListOrdering) + 1; if (index >= REIItemListOrdering.values().length) { index = 0; Core.config.isAscending = !Core.config.isAscending; @@ -83,6 +83,7 @@ public class ConfigGui extends Gui { Core.config.itemListOrdering = REIItemListOrdering.values()[index]; try { Core.saveConfig(); + REIRenderHelper.reiGui.updateView(); } catch (IOException e) { e.printStackTrace(); } @@ -102,13 +103,13 @@ public class ConfigGui extends Gui { drawBackground(); super.draw(mouseX, mouseY, partialTicks); String text = I18n.translate("key.rei.recipe") + ": "; - drawString(MinecraftClient.getInstance().fontRenderer, text, parent.width / 2 - 40 - MinecraftClient.getInstance().fontRenderer.getStringWidth(text), 30 + 6, -1); + drawString(MinecraftClient.getInstance().fontRenderer, text, parent.width / 2 - 25 - MinecraftClient.getInstance().fontRenderer.getStringWidth(text), 30 + 6, -1); text = I18n.translate("key.rei.use") + ": "; - drawString(MinecraftClient.getInstance().fontRenderer, text, parent.width / 2 - 40 - MinecraftClient.getInstance().fontRenderer.getStringWidth(text), 60 + 6, -1); + drawString(MinecraftClient.getInstance().fontRenderer, text, parent.width / 2 - 25 - MinecraftClient.getInstance().fontRenderer.getStringWidth(text), 60 + 6, -1); text = I18n.translate("key.rei.hide") + ": "; - drawString(MinecraftClient.getInstance().fontRenderer, text, parent.width / 2 - 40 - MinecraftClient.getInstance().fontRenderer.getStringWidth(text), 90 + 6, -1); + drawString(MinecraftClient.getInstance().fontRenderer, text, parent.width / 2 - 25 - MinecraftClient.getInstance().fontRenderer.getStringWidth(text), 90 + 6, -1); text = I18n.translate("text.rei.list_ordering") + ": "; - drawString(MinecraftClient.getInstance().fontRenderer, text, parent.width / 2 - 110 - MinecraftClient.getInstance().fontRenderer.getStringWidth(text), 150 + 6, -1); + drawString(MinecraftClient.getInstance().fontRenderer, text, parent.width / 2 - 95 - MinecraftClient.getInstance().fontRenderer.getStringWidth(text), 150 + 6, -1); } @Override diff --git a/src/main/java/me/shedaniel/gui/GuiItemList.java b/src/main/java/me/shedaniel/gui/GuiItemList.java index defdd6643..06bbd0104 100755 --- a/src/main/java/me/shedaniel/gui/GuiItemList.java +++ b/src/main/java/me/shedaniel/gui/GuiItemList.java @@ -3,16 +3,20 @@ package me.shedaniel.gui; import com.mojang.blaze3d.platform.GlStateManager; import me.shedaniel.ClientListener; import me.shedaniel.Core; +import me.shedaniel.config.REIItemListOrdering; import me.shedaniel.gui.widget.Button; import me.shedaniel.gui.widget.Control; import me.shedaniel.gui.widget.REISlot; import me.shedaniel.gui.widget.TextBox; +import me.shedaniel.impl.REIRecipeManager; import me.shedaniel.listenerdefinitions.IMixinContainerGui; +import net.fabricmc.fabric.client.itemgroup.FabricCreativeGuiComponents; import net.minecraft.client.MinecraftClient; import net.minecraft.client.gui.ContainerGui; import net.minecraft.client.network.ClientPlayerEntity; import net.minecraft.client.resource.language.I18n; import net.minecraft.client.util.Window; +import net.minecraft.item.ItemGroup; import net.minecraft.item.ItemStack; import net.minecraft.text.TextComponent; import net.minecraft.text.TranslatableTextComponent; @@ -21,8 +25,7 @@ import net.minecraft.util.math.MathHelper; import net.minecraft.util.registry.Registry; import java.awt.*; -import java.util.ArrayList; -import java.util.Arrays; +import java.util.*; import java.util.List; import java.util.stream.Collectors; import java.util.stream.Stream; @@ -118,7 +121,7 @@ public class GuiItemList extends Drawable { private Rectangle getSearchBoxArea() { int ch = ((IMixinContainerGui) overlayedGui).getContainerHeight(), cw = ((IMixinContainerGui) overlayedGui).getContainerWidth(); if (Core.centreSearchBox) { - if (ch + 4 + 18 > rect.height) //Will be out of bounds + if (ch + 4 + 18 > MinecraftClient.getInstance().window.getScaledHeight()) //Will be out of bounds return new Rectangle(overlayedGui.width / 2 - cw / 2, rect.height + 100, cw, 18); return new Rectangle(overlayedGui.width / 2 - cw / 2, rect.height - 31, cw, 18); } @@ -162,9 +165,10 @@ public class GuiItemList extends Drawable { while (true) { REISlot slot = new REISlot(x + xOffset, y + yOffset); slot.setCheatable(true); + if (REIRecipeManager.instance().canAddSlot(MinecraftClient.getInstance().currentGui.getClass(), slot.rect)) + displaySlots.add(slot); xOffset += 18; currentX++; - displaySlots.add(slot); if (currentX >= perRow) { xOffset = 0; yOffset += 18; @@ -247,7 +251,23 @@ public class GuiItemList extends Drawable { List<ItemStack> stacks = new ArrayList<>(); if (ClientListener.stackList == null && !Registry.ITEM.isEmpty()) Core.getListeners(ClientListener.class).forEach(ClientListener::onDoneLoading); - if (ClientListener.stackList != null) + if (ClientListener.stackList != null) { + List<ItemStack> stackList = new LinkedList<>(ClientListener.stackList); + List<ItemGroup> itemGroups = new LinkedList<>(Arrays.asList(ItemGroup.GROUPS)); + FabricCreativeGuiComponents.COMMON_GROUPS.forEach(itemGroups::add); + itemGroups.add(null); + if (Core.config.itemListOrdering != REIItemListOrdering.REGISTRY) + Collections.sort(stackList, (itemStack, t1) -> { + switch (Core.config.itemListOrdering) { + case NAME: + return itemStack.getDisplayName().getFormattedText().compareToIgnoreCase(t1.getDisplayName().getFormattedText()); + case ITEM_GROUPS: + return itemGroups.indexOf(itemStack.getItem().getItemGroup()) - itemGroups.indexOf(t1.getItem().getItemGroup()); + } + return 0; + }); + if (!Core.config.isAscending) + Collections.reverse(stackList); Arrays.stream(searchText.split("\\|")).forEachOrdered(s -> { List<SearchArgument> arguments = new ArrayList<>(); while (s.startsWith(" ")) s = s.substring(1); @@ -264,8 +284,9 @@ public class GuiItemList extends Drawable { arguments.add(new SearchArgument(SearchArgument.ArgumentType.TEXT, s.substring(1), false)); else arguments.add(new SearchArgument(SearchArgument.ArgumentType.TEXT, s, true)); - ClientListener.stackList.stream().filter(itemStack -> filterItem(itemStack, arguments)).forEachOrdered(stacks::add); + stackList.stream().filter(itemStack -> filterItem(itemStack, arguments)).forEachOrdered(stacks::add); }); + } view.addAll(stacks.stream().distinct().collect(Collectors.toList())); page = 0; fillSlots(); |
