aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/me/shedaniel/gui/GuiItemList.java
diff options
context:
space:
mode:
authorUnknown <shekwancheung0528@gmail.com>2019-01-05 20:36:52 +0800
committerUnknown <shekwancheung0528@gmail.com>2019-01-05 20:36:52 +0800
commit41b33981e802541f1ce273782d8c3fe28579d04a (patch)
treef00d81effad5945734e842f85d532de024f11e94 /src/main/java/me/shedaniel/gui/GuiItemList.java
parent5d5c0b9729283f758003c89e92c879022a78eae9 (diff)
downloadRoughlyEnoughItems-41b33981e802541f1ce273782d8c3fe28579d04a.tar.gz
RoughlyEnoughItems-41b33981e802541f1ce273782d8c3fe28579d04a.tar.bz2
RoughlyEnoughItems-41b33981e802541f1ce273782d8c3fe28579d04a.zip
Custom Ordering works
Diffstat (limited to 'src/main/java/me/shedaniel/gui/GuiItemList.java')
-rwxr-xr-xsrc/main/java/me/shedaniel/gui/GuiItemList.java33
1 files changed, 27 insertions, 6 deletions
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();