diff options
Diffstat (limited to 'src')
16 files changed, 174 insertions, 124 deletions
diff --git a/src/main/java/me/shedaniel/rei/api/Renderer.java b/src/main/java/me/shedaniel/rei/api/Renderer.java index eb327cef1..8c3a362af 100644 --- a/src/main/java/me/shedaniel/rei/api/Renderer.java +++ b/src/main/java/me/shedaniel/rei/api/Renderer.java @@ -9,12 +9,16 @@ import me.shedaniel.rei.gui.renderers.EmptyRenderer; import me.shedaniel.rei.gui.renderers.FluidRenderer; import me.shedaniel.rei.gui.renderers.ItemStackRenderer; import me.shedaniel.rei.gui.renderers.SimpleRecipeRenderer; +import me.shedaniel.rei.gui.widget.QueuedTooltip; import net.minecraft.client.gui.DrawableHelper; import net.minecraft.fluid.Fluid; import net.minecraft.item.ItemStack; import net.minecraft.util.math.MathHelper; +import javax.annotation.Nullable; +import java.util.Collections; import java.util.List; +import java.util.function.Function; import java.util.function.Supplier; public abstract class Renderer extends DrawableHelper { @@ -25,12 +29,7 @@ public abstract class Renderer extends DrawableHelper { * @return the item stack renderer */ public static ItemStackRenderer fromItemStackSupplier(Supplier<ItemStack> supplier) { - return new ItemStackRenderer() { - @Override - public ItemStack getItemStack() { - return supplier.get(); - } - }; + return fromItemStacks(() -> Collections.singletonList(supplier.get()), true, null); } /** @@ -40,17 +39,7 @@ public abstract class Renderer extends DrawableHelper { * @return the item stack renderer */ public static ItemStackRenderer fromItemStackSupplierNoCounts(Supplier<ItemStack> supplier) { - return new ItemStackRenderer() { - @Override - public ItemStack getItemStack() { - return supplier.get(); - } - - @Override - protected boolean renderCounts() { - return false; - } - }; + return fromItemStacks(() -> Collections.singletonList(supplier.get()), false, null); } /** @@ -60,14 +49,28 @@ public abstract class Renderer extends DrawableHelper { * @return the item stack renderer */ public static ItemStackRenderer fromItemStack(ItemStack stack) { - return fromItemStackSupplier(() -> stack); + return fromItemStacks(() -> Collections.singletonList(stack), true, null); } public static FluidRenderer fromFluid(Fluid fluid) { + return fromFluid(() -> fluid, null); + } + + public static FluidRenderer fromFluid(Supplier<Fluid> fluidSupplier, @Nullable Function<Fluid, List<String>> extraTooltipSupplier) { return new FluidRenderer() { @Override public Fluid getFluid() { - return fluid; + return fluidSupplier.get(); + } + + @Override + protected List<String> getExtraToolTips(Fluid fluid) { + if (extraTooltipSupplier == null) + return super.getExtraToolTips(fluid); + List<String> apply = extraTooltipSupplier.apply(fluid); + if (apply == null) + return super.getExtraToolTips(fluid); + return apply; } }; } @@ -79,7 +82,7 @@ public abstract class Renderer extends DrawableHelper { * @return the item stack renderer */ public static ItemStackRenderer fromItemStackNoCounts(ItemStack stack) { - return fromItemStackSupplierNoCounts(() -> stack); + return fromItemStacks(() -> Collections.singletonList(stack), false, null); } /** @@ -103,32 +106,39 @@ public abstract class Renderer extends DrawableHelper { } public static ItemStackRenderer fromItemStacks(List<ItemStack> stacks) { - return new ItemStackRenderer() { - @Override - public ItemStack getItemStack() { - if (stacks.isEmpty()) - return ItemStack.EMPTY; - return stacks.get(MathHelper.floor((System.currentTimeMillis() / 500 % (double) stacks.size()) / 1f)); - } - }; + return fromItemStacks(() -> stacks, true, null); } - public static ItemStackRenderer fromItemStacksNoCounts(List<ItemStack> stacks) { + public static ItemStackRenderer fromItemStacks(Supplier<List<ItemStack>> stacksSupplier, boolean renderCounts, @Nullable Function<ItemStack, List<String>> extraTooltipSupplier) { return new ItemStackRenderer() { @Override public ItemStack getItemStack() { - if (stacks.isEmpty()) + if (stacksSupplier.get().isEmpty()) return ItemStack.EMPTY; - return stacks.get(MathHelper.floor((System.currentTimeMillis() / 500 % (double) stacks.size()) / 1f)); + return stacksSupplier.get().get(MathHelper.floor((System.currentTimeMillis() / 500 % (double) stacksSupplier.get().size()) / 1f)); } @Override protected boolean renderCounts() { - return false; + return renderCounts; + } + + @Override + protected List<String> getExtraToolTips(ItemStack stack) { + if (extraTooltipSupplier == null) + return super.getExtraToolTips(stack); + List<String> apply = extraTooltipSupplier.apply(stack); + if (apply == null) + return super.getExtraToolTips(stack); + return apply; } }; } + public static ItemStackRenderer fromItemStacksNoCounts(List<ItemStack> stacks) { + return fromItemStacks(() -> stacks, false, null); + } + /** * Gets the current blit offset * @@ -158,4 +168,9 @@ public abstract class Renderer extends DrawableHelper { */ public abstract void render(int x, int y, double mouseX, double mouseY, float delta); + @Nullable + public QueuedTooltip getQueuedTooltip(float delta) { + return null; + } + } diff --git a/src/main/java/me/shedaniel/rei/gui/VillagerRecipeViewingScreen.java b/src/main/java/me/shedaniel/rei/gui/VillagerRecipeViewingScreen.java index 1bed855c8..e09a64b8f 100644 --- a/src/main/java/me/shedaniel/rei/gui/VillagerRecipeViewingScreen.java +++ b/src/main/java/me/shedaniel/rei/gui/VillagerRecipeViewingScreen.java @@ -358,6 +358,7 @@ public class VillagerRecipeViewingScreen extends Screen { GuiLighting.disable(); recipeRenderers.get(i).setBlitOffset(1); recipeRenderers.get(i).render(buttonWidgets.get(i).getBounds().x, buttonWidgets.get(i).getBounds().y, mouseX, mouseY, delta); + ScreenHelper.getLastOverlay().addTooltip(recipeRenderers.get(i).getQueuedTooltip(delta)); } } double height = buttonWidgets.stream().map(ButtonWidget::getBounds).collect(Collectors.summingDouble(Rectangle::getHeight)); 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 db34ce0ac..c55be8b87 100644 --- a/src/main/java/me/shedaniel/rei/gui/renderers/FluidRenderer.java +++ b/src/main/java/me/shedaniel/rei/gui/renderers/FluidRenderer.java @@ -27,10 +27,15 @@ import net.minecraft.util.Pair; import net.minecraft.util.math.BlockPos; import net.minecraft.util.registry.Registry; +import javax.annotation.Nullable; import java.util.Collections; import java.util.List; public abstract class FluidRenderer extends Renderer { + /** + * @deprecated This boolean is no longer used + */ + @Deprecated public boolean drawTooltip = false; public Lazy<Pair<Sprite, Integer>> sprite = new Lazy<>(() -> { try { @@ -72,16 +77,27 @@ public abstract class FluidRenderer extends Renderer { tess.draw(); } this.blitOffset = 0; - if (drawTooltip && mouseX >= x - 8 && mouseX <= x + 8 && mouseY >= y - 6 && mouseY <= y + 10) - queueTooltip(getFluid(), delta); - this.drawTooltip = false; } + @Nullable + @Override + public QueuedTooltip getQueuedTooltip(float delta) { + return QueuedTooltip.create(getTooltip(getFluid())); + } + + /** + * Queue a tooltip to the REI overlay + * + * @param fluid the fluid to queue + * @param delta the delta + * @deprecated Use {@link Renderer#getQueuedTooltip(float)} instead and queue manually + */ + @Deprecated protected void queueTooltip(Fluid fluid, float delta) { - ScreenHelper.getLastOverlay().addTooltip(QueuedTooltip.create(getTooltip(fluid))); + ScreenHelper.getLastOverlay().addTooltip(getQueuedTooltip(delta)); } - private List<String> getTooltip(Fluid fluid) { + protected List<String> getTooltip(Fluid fluid) { List<String> toolTip = Lists.newArrayList(EntryListWidget.tryGetFluidName(fluid)); if (RoughlyEnoughItemsCore.getConfigManager().getConfig().shouldAppendModNames()) { final String modString = ClientHelper.getInstance().getFormattedModFromIdentifier(Registry.FLUID.getId(fluid)); 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 609c74f97..67143c99e 100644 --- a/src/main/java/me/shedaniel/rei/gui/renderers/ItemStackRenderer.java +++ b/src/main/java/me/shedaniel/rei/gui/renderers/ItemStackRenderer.java @@ -19,12 +19,17 @@ import net.minecraft.client.render.item.ItemRenderer; import net.minecraft.item.ItemStack; import net.minecraft.util.Identifier; +import javax.annotation.Nullable; import java.util.Collections; import java.util.List; public abstract class ItemStackRenderer extends Renderer { public static final Identifier CHEST_GUI_TEXTURE = new Identifier("roughlyenoughitems", "textures/gui/recipecontainer.png"); + /** + * @deprecated This boolean is no longer used + */ + @Deprecated public boolean drawTooltip = false; @Override @@ -42,15 +47,26 @@ public abstract class ItemStackRenderer extends Renderer { itemRenderer.renderGuiItemOverlay(MinecraftClient.getInstance().textRenderer, getItemStack(), l, i1, renderCounts() ? null : ""); itemRenderer.zOffset = 0.0F; this.blitOffset = 0; - if (drawTooltip && mouseX >= x - 8 && mouseX <= x + 8 && mouseY >= y - 6 && mouseY <= y + 10) - queueTooltip(getItemStack(), delta); - this.drawTooltip = false; } + /** + * Queue a tooltip to the REI overlay + * + * @param itemStack the stack to queue + * @param delta the delta + * @deprecated Use {@link Renderer#getQueuedTooltip(float)} instead and queue manually + */ + @Deprecated protected void queueTooltip(ItemStack itemStack, float delta) { ScreenHelper.getLastOverlay().addTooltip(QueuedTooltip.create(getTooltip(itemStack))); } + @Nullable + @Override + public QueuedTooltip getQueuedTooltip(float delta) { + return QueuedTooltip.create(getTooltip(getItemStack())); + } + protected boolean renderCounts() { return true; } diff --git a/src/main/java/me/shedaniel/rei/gui/renderers/SimpleRecipeRenderer.java b/src/main/java/me/shedaniel/rei/gui/renderers/SimpleRecipeRenderer.java index 9c5ad4ebc..1aa45aa3f 100644 --- a/src/main/java/me/shedaniel/rei/gui/renderers/SimpleRecipeRenderer.java +++ b/src/main/java/me/shedaniel/rei/gui/renderers/SimpleRecipeRenderer.java @@ -8,6 +8,7 @@ package me.shedaniel.rei.gui.renderers; import com.google.common.collect.Lists; import me.shedaniel.rei.api.Renderer; import me.shedaniel.rei.gui.VillagerRecipeViewingScreen; +import me.shedaniel.rei.gui.widget.QueuedTooltip; import net.minecraft.client.MinecraftClient; import net.minecraft.client.render.GuiLighting; import net.minecraft.item.ItemStack; @@ -15,6 +16,7 @@ import net.minecraft.util.Identifier; import net.minecraft.util.Pair; import net.minecraft.util.math.MathHelper; +import javax.annotation.Nullable; import java.util.Comparator; import java.util.List; import java.util.Optional; @@ -40,6 +42,7 @@ public class SimpleRecipeRenderer extends RecipeRenderer { private static final Identifier CHEST_GUI_TEXTURE = new Identifier("roughlyenoughitems", "textures/gui/recipecontainer.png"); private List<ItemStackRenderer> inputRenderer; private ItemStackRenderer outputRenderer; + private QueuedTooltip lastTooltip; public SimpleRecipeRenderer(Supplier<List<List<ItemStack>>> input, Supplier<List<ItemStack>> output) { List<Pair<List<ItemStack>, AtomicInteger>> newList = Lists.newArrayList(); @@ -77,12 +80,15 @@ public class SimpleRecipeRenderer extends RecipeRenderer { @Override public void render(int x, int y, double mouseX, double mouseY, float delta) { + lastTooltip = null; int xx = x + 4, yy = y + 2; int j = 0; int itemsPerLine = getItemsPerLine(); for (ItemStackRenderer itemStackRenderer : inputRenderer) { itemStackRenderer.setBlitOffset(getBlitOffset() + 50); - itemStackRenderer.drawTooltip = MinecraftClient.getInstance().currentScreen instanceof VillagerRecipeViewingScreen; + if (lastTooltip == null && MinecraftClient.getInstance().currentScreen instanceof VillagerRecipeViewingScreen && mouseX >= xx && mouseX <= xx + 16 && mouseY >= yy && mouseY <= yy + 16) { + lastTooltip = itemStackRenderer.getQueuedTooltip(delta); + } itemStackRenderer.render(xx + 8, yy + 6, mouseX, mouseY, delta); xx += 18; j++; @@ -99,8 +105,16 @@ public class SimpleRecipeRenderer extends RecipeRenderer { blit(xx, yy, 0, 28, 18, 18); xx += 18; outputRenderer.setBlitOffset(getBlitOffset() + 50); - outputRenderer.drawTooltip = MinecraftClient.getInstance().currentScreen instanceof VillagerRecipeViewingScreen; outputRenderer.render(xx + 8, yy + 6, mouseX, mouseY, delta); + if (lastTooltip == null && MinecraftClient.getInstance().currentScreen instanceof VillagerRecipeViewingScreen && mouseX >= xx && mouseX <= xx + 16 && mouseY >= yy && mouseY <= yy + 16) { + lastTooltip = outputRenderer.getQueuedTooltip(delta); + } + } + + @Nullable + @Override + public QueuedTooltip getQueuedTooltip(float delta) { + return lastTooltip; } @Override 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 0f2e57361..e613073a7 100644 --- a/src/main/java/me/shedaniel/rei/gui/widget/EntryListWidget.java +++ b/src/main/java/me/shedaniel/rei/gui/widget/EntryListWidget.java @@ -29,6 +29,7 @@ import net.minecraft.item.ItemStack; import net.minecraft.text.Text; import net.minecraft.util.ActionResult; import net.minecraft.util.Formatting; +import net.minecraft.util.Identifier; import net.minecraft.util.math.MathHelper; import net.minecraft.util.registry.Registry; import org.apache.commons.lang3.StringUtils; @@ -128,7 +129,10 @@ public class EntryListWidget extends Widget { } public static String tryGetFluidName(Fluid fluid) { - return Stream.of(Registry.FLUID.getId(fluid).getPath().split("_")).map(StringUtils::capitalize).collect(Collectors.joining(" ")); + Identifier id = Registry.FLUID.getId(fluid); + if (I18n.hasTranslation("block." + id.toString().replaceFirst(":", "."))) + return I18n.translate("block." + id.toString().replaceFirst(":", ".")); + return Stream.of(id.getPath().split("_")).map(StringUtils::capitalize).collect(Collectors.joining(" ")); } public static String tryGetItemStackName(ItemStack stack) { @@ -325,9 +329,9 @@ public class EntryListWidget extends Widget { cheatedStack.setCount(1); return ClientHelper.getInstance().tryCheatingStack(cheatedStack); } - } else if (button == 0) + } else if (button == 0) { return ClientHelper.getInstance().executeRecipeKeyBind(getCurrentItemStack().copy()); - else if (button == 1) + } else if (button == 1) return ClientHelper.getInstance().executeUsageKeyBind(getCurrentItemStack().copy()); } return false; diff --git a/src/main/java/me/shedaniel/rei/gui/widget/SlotWidget.java b/src/main/java/me/shedaniel/rei/gui/widget/SlotWidget.java index 187c3a99b..e54354f39 100644 --- a/src/main/java/me/shedaniel/rei/gui/widget/SlotWidget.java +++ b/src/main/java/me/shedaniel/rei/gui/widget/SlotWidget.java @@ -122,19 +122,13 @@ public class SlotWidget extends WidgetWithBounds { blit(this.x - 1, this.y - 1, 0, 222, 18, 18); } boolean highlighted = containsMouse(mouseX, mouseY); - if (isCurrentRendererItem() && !getCurrentItemStack().isEmpty()) { - renderer.setBlitOffset(200); - renderer.render(x + 8, y + 6, mouseX, mouseY, delta); - if (!getCurrentItemStack().isEmpty() && highlighted && showToolTips) - queueTooltip(getCurrentItemStack(), delta); - } else if (isCurrentRendererFluid()) { - renderer.setBlitOffset(200); - renderer.render(x + 8, y + 6, mouseX, mouseY, delta); - if (((FluidRenderer) renderer).getFluid() != null && highlighted && showToolTips) - queueTooltip(((FluidRenderer) renderer).getFluid(), delta); - } else { - renderer.setBlitOffset(200); - renderer.render(x + 8, y + 6, mouseX, mouseY, delta); + renderer.setBlitOffset(200); + renderer.render(x + 8, y + 6, mouseX, mouseY, delta); + if (highlighted && showToolTips) { + QueuedTooltip queuedTooltip = renderer.getQueuedTooltip(delta); + if (queuedTooltip != null) { + ScreenHelper.getLastOverlay().addTooltip(queuedTooltip); + } } if (drawHighlightedBackground && highlighted) { RenderHelper.disableLighting(); @@ -150,18 +144,28 @@ public class SlotWidget extends WidgetWithBounds { } } + @Deprecated public int getBlitOffset() { return this.blitOffset; } + @Deprecated public void setBlitOffset(int offset) { this.blitOffset = offset; } + /** + * @deprecated Not used anymore, see {@link Renderer#getQueuedTooltip(float)} + */ + @Deprecated protected void queueTooltip(Fluid fluid, float delta) { ScreenHelper.getLastOverlay().addTooltip(QueuedTooltip.create(getTooltip(fluid))); } + /** + * @deprecated Not used anymore, see {@link Renderer#getQueuedTooltip(float)} + */ + @Deprecated private List<String> getTooltip(Fluid fluid) { List<String> toolTip = Lists.newArrayList(EntryListWidget.tryGetFluidName(fluid)); toolTip.addAll(getExtraFluidToolTips(fluid)); @@ -179,10 +183,18 @@ public class SlotWidget extends WidgetWithBounds { return toolTip; } + /** + * @deprecated Not used anymore, see {@link Renderer#getQueuedTooltip(float)} + */ + @Deprecated protected void queueTooltip(ItemStack itemStack, float delta) { ScreenHelper.getLastOverlay().addTooltip(QueuedTooltip.create(getTooltip(itemStack))); } + /** + * @deprecated Not used anymore, see {@link Renderer#getQueuedTooltip(float)} + */ + @Deprecated protected List<String> getTooltip(ItemStack itemStack) { List<String> toolTip = Lists.newArrayList(EntryListWidget.tryGetItemStackToolTip(itemStack, true)); toolTip.addAll(getExtraItemToolTips(itemStack)); @@ -197,10 +209,18 @@ public class SlotWidget extends WidgetWithBounds { return toolTip; } + /** + * @deprecated See {@link ItemStackRenderer#getExtraToolTips(ItemStack)} + */ + @Deprecated protected List<String> getExtraItemToolTips(ItemStack stack) { return Collections.emptyList(); } + /** + * @deprecated See {@link FluidRenderer#getExtraToolTips(Fluid)} + */ + @Deprecated protected List<String> getExtraFluidToolTips(Fluid fluid) { return Collections.emptyList(); } @@ -212,11 +232,16 @@ public class SlotWidget extends WidgetWithBounds { } public Renderer getCurrentRenderer() { - if (renderers.size() == 0) + if (renderers.isEmpty()) return Renderer.empty(); return renderers.get(MathHelper.floor((System.currentTimeMillis() / 500 % (double) renderers.size()) / 1f)); } + /** + * @param itemList the list of items + * @deprecated Use {@link SlotWidget#setRenderers(List)} + */ + @Deprecated public void setItemList(List<ItemStack> itemList) { this.setRenderers(itemList.stream().map(Renderer::fromItemStack).collect(Collectors.toList())); } diff --git a/src/main/java/me/shedaniel/rei/impl/EntryRegistryImpl.java b/src/main/java/me/shedaniel/rei/impl/EntryRegistryImpl.java index 327a0111e..9819b09c1 100644 --- a/src/main/java/me/shedaniel/rei/impl/EntryRegistryImpl.java +++ b/src/main/java/me/shedaniel/rei/impl/EntryRegistryImpl.java @@ -37,7 +37,7 @@ public class EntryRegistryImpl implements EntryRegistry { @Override public ItemStack[] getAllStacksFromItem(Item item) { - DefaultedList<ItemStack> list = DefaultedList.create(); + DefaultedList<ItemStack> list = DefaultedList.of(); list.add(item.getStackForRender()); item.appendStacks(item.getGroup(), list); TreeSet<ItemStack> stackSet = list.stream().collect(Collectors.toCollection(() -> new TreeSet<ItemStack>((p1, p2) -> ItemStack.areEqualIgnoreDamage(p1, p2) ? 0 : 1))); diff --git a/src/main/java/me/shedaniel/rei/plugin/autocrafting/DefaultCategoryHandler.java b/src/main/java/me/shedaniel/rei/plugin/autocrafting/DefaultCategoryHandler.java index 97bfc42af..5df184dad 100644 --- a/src/main/java/me/shedaniel/rei/plugin/autocrafting/DefaultCategoryHandler.java +++ b/src/main/java/me/shedaniel/rei/plugin/autocrafting/DefaultCategoryHandler.java @@ -81,7 +81,7 @@ public class DefaultCategoryHandler implements AutoTransferHandler { public IntList hasItems(List<List<ItemStack>> inputs) { // Create a clone of player's inventory, and count - DefaultedList<ItemStack> copyMain = DefaultedList.create(); + DefaultedList<ItemStack> copyMain = DefaultedList.of(); for (ItemStack stack : MinecraftClient.getInstance().player.inventory.main) { copyMain.add(stack.copy()); } diff --git a/src/main/java/me/shedaniel/rei/plugin/blasting/DefaultBlastingCategory.java b/src/main/java/me/shedaniel/rei/plugin/blasting/DefaultBlastingCategory.java index b7652e0ab..b6561c438 100644 --- a/src/main/java/me/shedaniel/rei/plugin/blasting/DefaultBlastingCategory.java +++ b/src/main/java/me/shedaniel/rei/plugin/blasting/DefaultBlastingCategory.java @@ -74,12 +74,7 @@ public class DefaultBlastingCategory implements TransferRecipeCategory<DefaultBl widgets.add(new RecipeArrowWidget(startPoint.x + 24, startPoint.y + 18, true)); List<List<ItemStack>> input = recipeDisplay.getInput(); widgets.add(new SlotWidget(startPoint.x + 1, startPoint.y + 1, Renderer.fromItemStacks(input.get(0)), true, true, true)); - widgets.add(new SlotWidget(startPoint.x + 1, startPoint.y + 37, Renderer.fromItemStacks(recipeDisplay.getFuel()), true, true, true) { - @Override - protected List<String> getExtraItemToolTips(ItemStack stack) { - return Collections.singletonList(Formatting.YELLOW.toString() + I18n.translate("category.rei.smelting.fuel")); - } - }); + widgets.add(new SlotWidget(startPoint.x + 1, startPoint.y + 37, Renderer.fromItemStacks(() -> recipeDisplay.getFuel(), true, stack -> Collections.singletonList(Formatting.YELLOW.toString() + I18n.translate("category.rei.smelting.fuel"))), true, true, true)); widgets.add(new SlotWidget(startPoint.x + 61, startPoint.y + 19, Renderer.fromItemStacks(recipeDisplay.getOutput()), false, true, true)); return widgets; } diff --git a/src/main/java/me/shedaniel/rei/plugin/brewing/DefaultBrewingCategory.java b/src/main/java/me/shedaniel/rei/plugin/brewing/DefaultBrewingCategory.java index 69f93557d..31c193d5d 100644 --- a/src/main/java/me/shedaniel/rei/plugin/brewing/DefaultBrewingCategory.java +++ b/src/main/java/me/shedaniel/rei/plugin/brewing/DefaultBrewingCategory.java @@ -64,36 +64,11 @@ public class DefaultBrewingCategory implements RecipeCategory<DefaultBrewingDisp } })); widgets.add(new SlotWidget(startPoint.x + 1, startPoint.y + 1, Renderer.fromItemStack(new ItemStack(Items.BLAZE_POWDER)), false, true, true)); - widgets.add(new SlotWidget(startPoint.x + 40, startPoint.y + 1, Renderer.fromItemStacks(recipeDisplay.getInput().get(0)), false, true, true) { - @Override - protected List<String> getExtraItemToolTips(ItemStack stack) { - return Collections.singletonList(Formatting.YELLOW.toString() + I18n.translate("category.rei.brewing.input")); - } - }); - widgets.add(new SlotWidget(startPoint.x + 63, startPoint.y + 1, Renderer.fromItemStacks(recipeDisplay.getInput().get(1)), false, true, true) { - @Override - protected List<String> getExtraItemToolTips(ItemStack stack) { - return Collections.singletonList(Formatting.YELLOW.toString() + I18n.translate("category.rei.brewing.reactant")); - } - }); - widgets.add(new SlotWidget(startPoint.x + 40, startPoint.y + 35, Renderer.fromItemStacks(recipeDisplay.getOutput(0)), false, true, true) { - @Override - protected List<String> getExtraItemToolTips(ItemStack stack) { - return Collections.singletonList(Formatting.YELLOW.toString() + I18n.translate("category.rei.brewing.result")); - } - }); - widgets.add(new SlotWidget(startPoint.x + 63, startPoint.y + 42, Renderer.fromItemStacks(recipeDisplay.getOutput(1)), false, true, true) { - @Override - protected List<String> getExtraItemToolTips(ItemStack stack) { - return Collections.singletonList(Formatting.YELLOW.toString() + I18n.translate("category.rei.brewing.result")); - } - }); - widgets.add(new SlotWidget(startPoint.x + 86, startPoint.y + 35, Renderer.fromItemStacks(recipeDisplay.getOutput(2)), false, true, true) { - @Override - protected List<String> getExtraItemToolTips(ItemStack stack) { - return Collections.singletonList(Formatting.YELLOW.toString() + I18n.translate("category.rei.brewing.result")); - } - }); + widgets.add(new SlotWidget(startPoint.x + 40, startPoint.y + 1, Renderer.fromItemStacks(() -> recipeDisplay.getInput().get(0), true, stack -> Collections.singletonList(Formatting.YELLOW.toString() + I18n.translate("category.rei.brewing.input"))), false, true, true)); + widgets.add(new SlotWidget(startPoint.x + 63, startPoint.y + 1, Renderer.fromItemStacks(() -> recipeDisplay.getInput().get(1), true, stack -> Collections.singletonList(Formatting.YELLOW.toString() + I18n.translate("category.rei.brewing.reactant"))), false, true, true)); + widgets.add(new SlotWidget(startPoint.x + 40, startPoint.y + 35, Renderer.fromItemStacks(() -> recipeDisplay.getOutput(0), true, stack -> Collections.singletonList(Formatting.YELLOW.toString() + I18n.translate("category.rei.brewing.result"))), false, true, true)); + widgets.add(new SlotWidget(startPoint.x + 63, startPoint.y + 42, Renderer.fromItemStacks(() -> recipeDisplay.getOutput(1), true, stack -> Collections.singletonList(Formatting.YELLOW.toString() + I18n.translate("category.rei.brewing.result"))), false, true, true)); + widgets.add(new SlotWidget(startPoint.x + 86, startPoint.y + 35, Renderer.fromItemStacks(() -> recipeDisplay.getOutput(2), true, stack -> Collections.singletonList(Formatting.YELLOW.toString() + I18n.translate("category.rei.brewing.result"))), false, true, true)); return widgets; } diff --git a/src/main/java/me/shedaniel/rei/plugin/composting/DefaultCompostingCategory.java b/src/main/java/me/shedaniel/rei/plugin/composting/DefaultCompostingCategory.java index 8e049ba94..632fa623d 100644 --- a/src/main/java/me/shedaniel/rei/plugin/composting/DefaultCompostingCategory.java +++ b/src/main/java/me/shedaniel/rei/plugin/composting/DefaultCompostingCategory.java @@ -26,6 +26,7 @@ import net.minecraft.util.Identifier; import net.minecraft.util.math.MathHelper; import java.util.Arrays; +import java.util.Collections; import java.util.LinkedList; import java.util.List; import java.util.function.Supplier; @@ -79,19 +80,17 @@ public class DefaultCompostingCategory implements RecipeCategory<DefaultComposti int i = 0; for (int y = 0; y < 6; y++) for (int x = 0; x < 8; x++) { - widgets.add(new SlotWidget(bounds.getCenterX() - 72 + x * 18, bounds.y + y * 18, stacks.size() > i ? Renderer.fromItemStack(stacks.get(i).asItem().getStackForRender()) : Renderer.empty(), true, true, true) { - @Override - protected List<String> getExtraItemToolTips(ItemStack stack) { - final List<String>[] thing = new List[]{null}; - recipeDisplaySupplier.get().getInputMap().forEach((itemProvider, aFloat) -> { - if (itemProvider.asItem().equals(stack.getItem())) - thing[0] = Arrays.asList(I18n.translate("text.rei.composting.chance", MathHelper.fastFloor(aFloat * 100))); - }); - if (thing[0] != null) - return thing[0]; - return super.getExtraItemToolTips(stack); - } - }); + int finalI = i; + widgets.add(new SlotWidget(bounds.getCenterX() - 72 + x * 18, bounds.y + y * 18, stacks.size() > i ? Renderer.fromItemStacks(() -> Collections.singletonList(new ItemStack(stacks.get(finalI))), true, stack -> { + final List<String>[] thing = new List[]{null}; + recipeDisplaySupplier.get().getInputMap().forEach((itemProvider, aFloat) -> { + if (itemProvider.asItem().equals(stack.getItem())) + thing[0] = Arrays.asList(I18n.translate("text.rei.composting.chance", MathHelper.fastFloor(aFloat * 100))); + }); + if (thing[0] != null) + return thing[0]; + return null; + }) : Renderer.empty(), true, true, true)); i++; } widgets.add(new SlotWidget(startingPoint.x + 34, startingPoint.y + 5, Renderer.fromItemStacks(recipeDisplaySupplier.get().getOutput()), false, true, true)); diff --git a/src/main/java/me/shedaniel/rei/plugin/crafting/DefaultCraftingDisplay.java b/src/main/java/me/shedaniel/rei/plugin/crafting/DefaultCraftingDisplay.java index 701b9347d..7a0bbba84 100644 --- a/src/main/java/me/shedaniel/rei/plugin/crafting/DefaultCraftingDisplay.java +++ b/src/main/java/me/shedaniel/rei/plugin/crafting/DefaultCraftingDisplay.java @@ -44,7 +44,7 @@ public interface DefaultCraftingDisplay extends TransferRecipeDisplay { } for (int i = 0; i < getInput().size(); i++) { List<ItemStack> stacks = getInput().get(i); - list.set(i, stacks); + list.set(DefaultCraftingCategory.getSlotWithSize(this, i), stacks); } return list; } |
