aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/me/shedaniel/gui/GuiItemList.java
diff options
context:
space:
mode:
authorUnknown <shekwancheung0528@gmail.com>2019-01-09 14:28:42 +0800
committerUnknown <shekwancheung0528@gmail.com>2019-01-09 14:28:42 +0800
commit4ab17cd1d282dc23d2a4afdc5f300227be1fc5fb (patch)
tree73ba8f73002399c5990cc5cb23db57f8be630ea9 /src/main/java/me/shedaniel/gui/GuiItemList.java
parent72e1653cbb38282f8dce59a00fb381e18bfc795d (diff)
downloadRoughlyEnoughItems-4ab17cd1d282dc23d2a4afdc5f300227be1fc5fb.tar.gz
RoughlyEnoughItems-4ab17cd1d282dc23d2a4afdc5f300227be1fc5fb.tar.bz2
RoughlyEnoughItems-4ab17cd1d282dc23d2a4afdc5f300227be1fc5fb.zip
Basic Craftable Only
Diffstat (limited to 'src/main/java/me/shedaniel/gui/GuiItemList.java')
-rwxr-xr-xsrc/main/java/me/shedaniel/gui/GuiItemList.java76
1 files changed, 36 insertions, 40 deletions
diff --git a/src/main/java/me/shedaniel/gui/GuiItemList.java b/src/main/java/me/shedaniel/gui/GuiItemList.java
index 18f8c3db8..153758ab9 100755
--- a/src/main/java/me/shedaniel/gui/GuiItemList.java
+++ b/src/main/java/me/shedaniel/gui/GuiItemList.java
@@ -4,7 +4,6 @@ import com.google.common.collect.ImmutableList;
import com.mojang.blaze3d.platform.GlStateManager;
import me.shedaniel.ClientListener;
import me.shedaniel.Core;
-import me.shedaniel.api.IRecipe;
import me.shedaniel.config.REIItemListOrdering;
import me.shedaniel.gui.widget.Button;
import me.shedaniel.gui.widget.Control;
@@ -19,11 +18,9 @@ import net.minecraft.client.network.ClientPlayerEntity;
import net.minecraft.client.render.GuiLighting;
import net.minecraft.client.resource.language.I18n;
import net.minecraft.client.util.Window;
-import net.minecraft.item.Item;
import net.minecraft.item.ItemGroup;
import net.minecraft.item.ItemStack;
-import net.minecraft.text.TextComponent;
-import net.minecraft.text.TranslatableTextComponent;
+import net.minecraft.item.Items;
import net.minecraft.util.DefaultedList;
import net.minecraft.util.Identifier;
import net.minecraft.util.math.MathHelper;
@@ -147,7 +144,7 @@ public class GuiItemList extends Drawable {
private Rectangle getCraftableToggleArea() {
Rectangle searchBoxArea = getSearchBoxArea();
- searchBoxArea.setLocation(searchBoxArea.x + searchBoxArea.width + 4, searchBoxArea.y - 2);
+ searchBoxArea.setLocation(searchBoxArea.x + searchBoxArea.width + 4, searchBoxArea.y - 1);
searchBoxArea.setSize(20, 20);
return searchBoxArea;
}
@@ -210,16 +207,12 @@ public class GuiItemList extends Drawable {
return;
if (MinecraftClient.getInstance().currentGui instanceof ContainerGui)
overlayedGui = (ContainerGui) MinecraftClient.getInstance().currentGui;
- if (Core.runtimeConfig.craftableOnly) {
- List<ItemStack> currentPlayerItems = getInventoryItemsTypes();
- for(ItemStack item : lastPlayerItems)
- if (!currentPlayerItems.contains(item) || currentPlayerItems.size() != lastPlayerItems.size()) {
- lastPlayerItems = new ArrayList<>(currentPlayerItems);
- updateView();
- }
- }
if (needsResize == true || oldGuiLeft != ((IMixinContainerGui) overlayedGui).getGuiLeft())
resize();
+ else if (Core.runtimeConfig.craftableOnly && (!hasSameListContent(new LinkedList<>(lastPlayerItems), getInventoryItemsTypes()) || (getInventoryItemsTypes().size() != lastPlayerItems.size()))) {
+ this.lastPlayerItems = new LinkedList<>(getInventoryItemsTypes());
+ updateView();
+ }
GlStateManager.pushMatrix();
updateButtons();
controls.forEach(Control::draw);
@@ -229,12 +222,26 @@ public class GuiItemList extends Drawable {
GlStateManager.popMatrix();
}
+ private boolean hasSameListContent(List<ItemStack> list1, List<ItemStack> list2) {
+ Collections.sort(list1, (itemStack, t1) -> {
+ return itemStack.getDisplayName().getFormattedText().compareToIgnoreCase(t1.getDisplayName().getFormattedText());
+ });
+ Collections.sort(list2, (itemStack, t1) -> {
+ return itemStack.getDisplayName().getFormattedText().compareToIgnoreCase(t1.getDisplayName().getFormattedText());
+ });
+ String lastString = String.join("", list1.stream().map(itemStack -> {
+ return itemStack.getDisplayName().getFormattedText();
+ }).collect(Collectors.toList())), currentString = String.join("", list2.stream().map(itemStack -> {
+ return itemStack.getDisplayName().getFormattedText();
+ }).collect(Collectors.toList()));
+ return lastString.equals(currentString);
+ }
+
private void updateButtons() {
buttonLeft.setEnabled(MathHelper.ceil(view.size() / displaySlots.size()) > 1);
buttonRight.setEnabled(MathHelper.ceil(view.size() / displaySlots.size()) > 1);
}
-
public boolean btnRightClicked(int button) {
if (button == 0) {
page++;
@@ -260,7 +267,6 @@ public class GuiItemList extends Drawable {
public boolean cheatClicked(int button) {
if (button == 0) {
cheatMode = !cheatMode;
-
buttonCheating.setString(getCheatModeText());
return true;
}
@@ -268,12 +274,7 @@ public class GuiItemList extends Drawable {
}
private String getCheatModeText() {
- if (cheatMode) {
- TextComponent cheat = new TranslatableTextComponent("text.rei.cheat", new Object[]{null});
- return cheat.getFormattedText();
- }
- TextComponent noCheat = new TranslatableTextComponent("text.rei.nocheat", new Object[]{null});
- return noCheat.getFormattedText();
+ return I18n.translate(String.format("%s%s", "text.rei.", cheatMode ? "cheat" : "nocheat"));
}
protected void updateView() {
@@ -289,12 +290,10 @@ public class GuiItemList extends Drawable {
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());
- }
+ if (Core.config.itemListOrdering.equals(REIItemListOrdering.NAME))
+ return itemStack.getDisplayName().getFormattedText().compareToIgnoreCase(t1.getDisplayName().getFormattedText());
+ if (Core.config.itemListOrdering.equals(REIItemListOrdering.ITEM_GROUPS))
+ return itemGroups.indexOf(itemStack.getItem().getItemGroup()) - itemGroups.indexOf(t1.getItem().getItemGroup());
return 0;
});
if (!Core.config.isAscending)
@@ -318,21 +317,15 @@ public class GuiItemList extends Drawable {
stackList.stream().filter(itemStack -> filterItem(itemStack, arguments)).forEachOrdered(stacks::add);
});
}
- List<ItemStack> workingItems = ClientListener.stackList == null ? new ArrayList<>() : ClientListener.stackList;
+ List<ItemStack> workingItems = ClientListener.stackList == null || (Core.runtimeConfig.craftableOnly && lastPlayerItems.size() > 0) ? new ArrayList<>() : ClientListener.stackList;
if (Core.runtimeConfig.craftableOnly) {
- List<IRecipe> workingRecipes = new ArrayList<>();
- REIRecipeManager.instance().findUsageForItems(getInventoryItemsTypes()).forEach(workingRecipes::add);
- workingItems = new ArrayList<>();
- for(IRecipe workingRecipe : workingRecipes) {
- List list = workingRecipe.getOutput();
- try {
- workingItems.addAll((List<ItemStack>) list);
- } catch (Exception e) {
- }
- }
+ REIRecipeManager.instance().findCraftableByItems(lastPlayerItems).forEach(workingItems::add);
+ workingItems.addAll(lastPlayerItems);
}
final List<ItemStack> finalWorkingItems = workingItems;
view.addAll(stacks.stream().filter(itemStack -> {
+ if (!Core.runtimeConfig.craftableOnly)
+ return true;
for(ItemStack workingItem : finalWorkingItems)
if (itemStack.isEqualIgnoreTags(workingItem))
return true;
@@ -346,8 +339,11 @@ public class GuiItemList extends Drawable {
List<DefaultedList<ItemStack>> field_7543 = ImmutableList.of(MinecraftClient.getInstance().player.inventory.main, MinecraftClient.getInstance().player.inventory.armor
, MinecraftClient.getInstance().player.inventory.offHand);
List<ItemStack> inventoryStacks = new ArrayList<>();
- field_7543.forEach(inventoryStacks::addAll);
- return inventoryStacks.stream().distinct().collect(Collectors.toList());
+ field_7543.forEach(itemStacks -> itemStacks.forEach(itemStack -> {
+ if (!itemStack.getItem().equals(Items.AIR))
+ inventoryStacks.add(itemStack);
+ }));
+ return inventoryStacks;
}
private boolean filterItem(ItemStack itemStack, List<SearchArgument> arguments) {