فهرست منبع

Clean up & stack count function

Danielshe 5 سال پیش
والد
کامیت
440a1d6ea7

+ 1 - 1
gradle.properties

@@ -1,4 +1,4 @@
-mod_version=3.1.2
+mod_version=3.1.3
 minecraft_version=1.14.4
 yarn_version=1.14.4+build.1
 fabricloader_version=0.6.1+build.164

+ 6 - 2
src/main/java/me/shedaniel/rei/api/Renderer.java

@@ -110,6 +110,10 @@ public abstract class Renderer extends DrawableHelper {
     }
     
     public static ItemStackRenderer fromItemStacks(Supplier<List<ItemStack>> stacksSupplier, boolean renderCounts, @Nullable Function<ItemStack, List<String>> extraTooltipSupplier) {
+        return fromItemStacks(stacksSupplier, stack -> renderCounts ? null : "", extraTooltipSupplier);
+    }
+    
+    public static ItemStackRenderer fromItemStacks(Supplier<List<ItemStack>> stacksSupplier, Function<ItemStack, String> countsFunction, @Nullable Function<ItemStack, List<String>> 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

+ 4 - 2
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) {

+ 1 - 6
src/main/java/me/shedaniel/rei/gui/RecipeViewingScreen.java

@@ -305,12 +305,7 @@ public class RecipeViewingScreen extends Screen {
             List<String> list = Collections.singletonList(Formatting.YELLOW.toString() + I18n.translate("text.rei.working_station"));
             xx += (innerWidth - 1) * 18;
             for (List<ItemStack> workingStation : workingStations) {
-                preWidgets.add(new SlotWidget(xx, yy, Renderer.fromItemStacks(workingStation), true, true, true) {
-                    @Override
-                    protected List<String> 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) {

+ 1 - 6
src/main/java/me/shedaniel/rei/gui/VillagerRecipeViewingScreen.java

@@ -108,12 +108,7 @@ public class VillagerRecipeViewingScreen extends Screen {
             int index = 0;
             List<String> list = Collections.singletonList(Formatting.YELLOW.toString() + I18n.translate("text.rei.working_station"));
             for (List<ItemStack> workingStation : workingStations) {
-                widgets.add(new SlotWidget(xx, yy, Renderer.fromItemStacks(workingStation), true, true, true) {
-                    @Override
-                    protected List<String> 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) {

+ 2 - 2
src/main/java/me/shedaniel/rei/gui/renderers/FluidRenderer.java

@@ -99,9 +99,9 @@ public abstract class FluidRenderer extends Renderer {
     
     protected List<String> getTooltip(Fluid fluid) {
         List<String> 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<String> getExtraToolTips(Fluid stack) {
+    protected List<String> getExtraToolTips(Fluid fluid) {
         return Collections.emptyList();
     }
     

+ 6 - 2
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<String> getTooltip(ItemStack itemStack) {
         List<String> 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)) {

+ 27 - 7
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<String> getExtraFluidToolTips(Fluid fluid) {
+                    protected List<String> 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)) {

+ 3 - 2
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<DefaultCr
         for (int i = 0; i < input.size(); i++) {
             if (recipeDisplaySupplier.get() instanceof DefaultShapedDisplay) {
                 if (!input.get(i).isEmpty())
-                    slots.get(getSlotWithSize(recipeDisplaySupplier.get(), i, 3)).setItemList(input.get(i));
+                    slots.get(getSlotWithSize(recipeDisplaySupplier.get(), i, 3)).setRenderers(Collections.singletonList(Renderer.fromItemStacks(input.get(i))));
             } else if (!input.get(i).isEmpty())
-                slots.get(i).setItemList(input.get(i));
+                slots.get(i).setRenderers(Collections.singletonList(Renderer.fromItemStacks(input.get(i))));
         }
         widgets.addAll(slots);
         widgets.add(new SlotWidget(startPoint.x + 95, startPoint.y + 19, Renderer.fromItemStacks(recipeDisplaySupplier.get().getOutput()), false, true, true));