From 6e2791f101af396f2af3974a86e1e2062c7669e6 Mon Sep 17 00:00:00 2001 From: Danielshe Date: Sat, 7 Sep 2019 14:17:46 +0800 Subject: Clean up & stack count function --- src/main/java/me/shedaniel/rei/api/Renderer.java | 8 +++-- .../shedaniel/rei/gui/ContainerScreenOverlay.java | 6 ++-- .../me/shedaniel/rei/gui/RecipeViewingScreen.java | 7 +---- .../rei/gui/VillagerRecipeViewingScreen.java | 7 +---- .../shedaniel/rei/gui/renderers/FluidRenderer.java | 4 +-- .../rei/gui/renderers/ItemStackRenderer.java | 8 +++-- .../shedaniel/rei/gui/widget/EntryListWidget.java | 34 +++++++++++++++++----- .../plugin/crafting/DefaultCraftingCategory.java | 5 ++-- 8 files changed, 50 insertions(+), 29 deletions(-) (limited to 'src/main/java') diff --git a/src/main/java/me/shedaniel/rei/api/Renderer.java b/src/main/java/me/shedaniel/rei/api/Renderer.java index 8c3a362af..3f5c2f03d 100644 --- a/src/main/java/me/shedaniel/rei/api/Renderer.java +++ b/src/main/java/me/shedaniel/rei/api/Renderer.java @@ -110,6 +110,10 @@ public abstract class Renderer extends DrawableHelper { } public static ItemStackRenderer fromItemStacks(Supplier> stacksSupplier, boolean renderCounts, @Nullable Function> extraTooltipSupplier) { + return fromItemStacks(stacksSupplier, stack -> renderCounts ? null : "", extraTooltipSupplier); + } + + public static ItemStackRenderer fromItemStacks(Supplier> stacksSupplier, Function countsFunction, @Nullable Function> extraTooltipSupplier) { return new ItemStackRenderer() { @Override public ItemStack getItemStack() { @@ -119,8 +123,8 @@ public abstract class Renderer extends DrawableHelper { } @Override - protected boolean renderCounts() { - return renderCounts; + protected String getCounts() { + return countsFunction.apply(getItemStack()); } @Override diff --git a/src/main/java/me/shedaniel/rei/gui/ContainerScreenOverlay.java b/src/main/java/me/shedaniel/rei/gui/ContainerScreenOverlay.java index 63b860136..8fee4b2bd 100644 --- a/src/main/java/me/shedaniel/rei/gui/ContainerScreenOverlay.java +++ b/src/main/java/me/shedaniel/rei/gui/ContainerScreenOverlay.java @@ -40,6 +40,7 @@ import net.minecraft.util.Identifier; import net.minecraft.util.math.MathHelper; import net.minecraft.world.GameMode; +import javax.annotation.Nullable; import java.util.*; import java.util.stream.Collectors; @@ -458,8 +459,9 @@ public class ContainerScreenOverlay extends Widget { return list1.stream().map(Objects::toString).collect(Collectors.joining("")).equals(list2.stream().map(Objects::toString).collect(Collectors.joining(""))); } - public void addTooltip(QueuedTooltip queuedTooltip) { - QUEUED_TOOLTIPS.add(queuedTooltip); + public void addTooltip(@Nullable QueuedTooltip queuedTooltip) { + if (queuedTooltip != null) + QUEUED_TOOLTIPS.add(queuedTooltip); } public void renderWidgets(int int_1, int int_2, float float_1) { diff --git a/src/main/java/me/shedaniel/rei/gui/RecipeViewingScreen.java b/src/main/java/me/shedaniel/rei/gui/RecipeViewingScreen.java index 30d285e32..ac53cd35a 100644 --- a/src/main/java/me/shedaniel/rei/gui/RecipeViewingScreen.java +++ b/src/main/java/me/shedaniel/rei/gui/RecipeViewingScreen.java @@ -305,12 +305,7 @@ public class RecipeViewingScreen extends Screen { List list = Collections.singletonList(Formatting.YELLOW.toString() + I18n.translate("text.rei.working_station")); xx += (innerWidth - 1) * 18; for (List workingStation : workingStations) { - preWidgets.add(new SlotWidget(xx, yy, Renderer.fromItemStacks(workingStation), true, true, true) { - @Override - protected List getExtraItemToolTips(ItemStack stack) { - return list; - } - }); + preWidgets.add(new SlotWidget(xx, yy, Renderer.fromItemStacks(() -> workingStation, true, stack -> list), true, true, true)); index++; yy += 18; if (index >= hh) { diff --git a/src/main/java/me/shedaniel/rei/gui/VillagerRecipeViewingScreen.java b/src/main/java/me/shedaniel/rei/gui/VillagerRecipeViewingScreen.java index e09a64b8f..9f2b0cc91 100644 --- a/src/main/java/me/shedaniel/rei/gui/VillagerRecipeViewingScreen.java +++ b/src/main/java/me/shedaniel/rei/gui/VillagerRecipeViewingScreen.java @@ -108,12 +108,7 @@ public class VillagerRecipeViewingScreen extends Screen { int index = 0; List list = Collections.singletonList(Formatting.YELLOW.toString() + I18n.translate("text.rei.working_station")); for (List workingStation : workingStations) { - widgets.add(new SlotWidget(xx, yy, Renderer.fromItemStacks(workingStation), true, true, true) { - @Override - protected List getExtraItemToolTips(ItemStack stack) { - return list; - } - }); + widgets.add(new SlotWidget(xx, yy, Renderer.fromItemStacks(() -> workingStation, true, stack -> list), true, true, true)); index++; xx += 18; if (index >= ww) { diff --git a/src/main/java/me/shedaniel/rei/gui/renderers/FluidRenderer.java b/src/main/java/me/shedaniel/rei/gui/renderers/FluidRenderer.java index c55be8b87..069c15af1 100644 --- a/src/main/java/me/shedaniel/rei/gui/renderers/FluidRenderer.java +++ b/src/main/java/me/shedaniel/rei/gui/renderers/FluidRenderer.java @@ -99,9 +99,9 @@ public abstract class FluidRenderer extends Renderer { protected List getTooltip(Fluid fluid) { List toolTip = Lists.newArrayList(EntryListWidget.tryGetFluidName(fluid)); + toolTip.addAll(getExtraToolTips(fluid)); if (RoughlyEnoughItemsCore.getConfigManager().getConfig().shouldAppendModNames()) { final String modString = ClientHelper.getInstance().getFormattedModFromIdentifier(Registry.FLUID.getId(fluid)); - toolTip.addAll(getExtraToolTips(fluid)); boolean alreadyHasMod = false; for (String s : toolTip) if (s.equalsIgnoreCase(modString)) { @@ -114,7 +114,7 @@ public abstract class FluidRenderer extends Renderer { return toolTip; } - protected List getExtraToolTips(Fluid stack) { + protected List getExtraToolTips(Fluid fluid) { return Collections.emptyList(); } diff --git a/src/main/java/me/shedaniel/rei/gui/renderers/ItemStackRenderer.java b/src/main/java/me/shedaniel/rei/gui/renderers/ItemStackRenderer.java index 67143c99e..106a85561 100644 --- a/src/main/java/me/shedaniel/rei/gui/renderers/ItemStackRenderer.java +++ b/src/main/java/me/shedaniel/rei/gui/renderers/ItemStackRenderer.java @@ -44,7 +44,7 @@ public abstract class ItemStackRenderer extends Renderer { RenderHelper.enableRescaleNormal(); RenderHelper.enableDepthTest(); itemRenderer.renderGuiItem(getItemStack(), l, i1); - itemRenderer.renderGuiItemOverlay(MinecraftClient.getInstance().textRenderer, getItemStack(), l, i1, renderCounts() ? null : ""); + itemRenderer.renderGuiItemOverlay(MinecraftClient.getInstance().textRenderer, getItemStack(), l, i1, getCounts()); itemRenderer.zOffset = 0.0F; this.blitOffset = 0; } @@ -71,11 +71,15 @@ public abstract class ItemStackRenderer extends Renderer { return true; } + protected String getCounts() { + return renderCounts() ? null : ""; + } + protected List getTooltip(ItemStack itemStack) { List toolTip = Lists.newArrayList(EntryListWidget.tryGetItemStackToolTip(itemStack, true)); + toolTip.addAll(getExtraToolTips(itemStack)); if (RoughlyEnoughItemsCore.getConfigManager().getConfig().shouldAppendModNames()) { final String modString = ClientHelper.getInstance().getFormattedModFromItem(itemStack.getItem()); - toolTip.addAll(getExtraToolTips(itemStack)); boolean alreadyHasMod = false; for (String s : toolTip) if (s.equalsIgnoreCase(modString)) { diff --git a/src/main/java/me/shedaniel/rei/gui/widget/EntryListWidget.java b/src/main/java/me/shedaniel/rei/gui/widget/EntryListWidget.java index 64512aa0a..e329a51aa 100644 --- a/src/main/java/me/shedaniel/rei/gui/widget/EntryListWidget.java +++ b/src/main/java/me/shedaniel/rei/gui/widget/EntryListWidget.java @@ -15,6 +15,8 @@ import me.shedaniel.rei.RoughlyEnoughItemsCore; import me.shedaniel.rei.api.*; import me.shedaniel.rei.gui.config.ItemCheatingMode; import me.shedaniel.rei.gui.config.ItemListOrdering; +import me.shedaniel.rei.gui.renderers.FluidRenderer; +import me.shedaniel.rei.gui.renderers.ItemStackRenderer; import me.shedaniel.rei.impl.ScreenHelper; import me.shedaniel.rei.impl.SearchArgument; import net.minecraft.client.MinecraftClient; @@ -37,6 +39,7 @@ import net.minecraft.util.math.MathHelper; import net.minecraft.util.registry.Registry; import org.apache.commons.lang3.StringUtils; +import javax.annotation.Nullable; import java.util.*; import java.util.concurrent.atomic.AtomicReference; import java.util.stream.Collectors; @@ -343,7 +346,7 @@ public class EntryListWidget extends Widget { ScreenHelper.getLastOverlay().addTooltip(QueuedTooltip.create(I18n.translate("text.rei.delete_items"))); } - public void updateList(DisplayHelper.DisplayBoundsHandler boundsHandler, Rectangle rectangle, int page, String searchTerm, boolean processSearchTerm) { + public void updateList(DisplayHelper.DisplayBoundsHandler boundsHandler, Rectangle rectangle, int page, String searchTerm, boolean processSearchTerm) { this.rectangle = rectangle; this.page = page; this.widgets = Lists.newCopyOnWriteArrayList(); @@ -370,21 +373,38 @@ public class EntryListWidget extends Widget { break; final Entry entry = currentDisplayed.get(j - 1); maxScroll = y + 18; - widgets.add(new Slot(entry, xx, yy, x, y, entry.getEntryType() == Entry.Type.ITEM ? Renderer.fromItemStackNoCounts(entry.getItemStack()) : Renderer.fromFluid(entry.getFluid()), false, true, true) { + widgets.add(new Slot(entry, xx, yy, x, y, entry.getEntryType() == Entry.Type.ITEM ? new ItemStackRenderer() { @Override - protected void queueTooltip(ItemStack itemStack, float delta) { + public ItemStack getItemStack() { + return entry.getItemStack(); + } + + @Override + protected String getCounts() { + return ""; + } + + @Nullable + @Override + public QueuedTooltip getQueuedTooltip(float delta) { ClientPlayerEntity player = minecraft.player; if (!ClientHelper.getInstance().isCheating() || player.inventory.getCursorStack().isEmpty()) - super.queueTooltip(itemStack, delta); + return super.getQueuedTooltip(delta); + return null; + } + } : new FluidRenderer() { + @Override + public Fluid getFluid() { + return entry.getFluid(); } @Override - protected List getExtraFluidToolTips(Fluid fluid) { + protected List getExtraToolTips(Fluid fluid) { if (MinecraftClient.getInstance().options.advancedItemTooltips) return Collections.singletonList(Formatting.DARK_GRAY.toString() + Registry.FLUID.getId(fluid).toString()); - return super.getExtraFluidToolTips(fluid); + return super.getExtraToolTips(fluid); } - + }, false, true, true) { @Override public boolean mouseClicked(double mouseX, double mouseY, int button) { if (isCurrentRendererItem() && containsMouse(mouseX, mouseY)) { diff --git a/src/main/java/me/shedaniel/rei/plugin/crafting/DefaultCraftingCategory.java b/src/main/java/me/shedaniel/rei/plugin/crafting/DefaultCraftingCategory.java index 6769a7054..da04713c9 100644 --- a/src/main/java/me/shedaniel/rei/plugin/crafting/DefaultCraftingCategory.java +++ b/src/main/java/me/shedaniel/rei/plugin/crafting/DefaultCraftingCategory.java @@ -25,6 +25,7 @@ import net.minecraft.item.ItemStack; import net.minecraft.util.Identifier; import java.util.Arrays; +import java.util.Collections; import java.util.LinkedList; import java.util.List; import java.util.function.Supplier; @@ -78,9 +79,9 @@ public class DefaultCraftingCategory implements TransferRecipeCategory