diff options
| author | shedaniel <daniel@shedaniel.me> | 2021-03-20 18:03:04 +0800 |
|---|---|---|
| committer | shedaniel <daniel@shedaniel.me> | 2021-03-20 18:03:04 +0800 |
| commit | 2c29cac8a5e0878696c8e6635f4e41ed4845b41c (patch) | |
| tree | 52e2599cdd561900bcb8c2f22efb665dd4c41529 | |
| parent | 0292fa5317106c46a39cd39e9664936f807b6270 (diff) | |
| download | RoughlyEnoughItems-2c29cac8a5e0878696c8e6635f4e41ed4845b41c.tar.gz RoughlyEnoughItems-2c29cac8a5e0878696c8e6635f4e41ed4845b41c.tar.bz2 RoughlyEnoughItems-2c29cac8a5e0878696c8e6635f4e41ed4845b41c.zip | |
Remove useless EntryStack settings, properly implement tooltip callbacks
Signed-off-by: shedaniel <daniel@shedaniel.me>
6 files changed, 41 insertions, 41 deletions
diff --git a/api/src/main/java/me/shedaniel/rei/api/ingredient/EntryStack.java b/api/src/main/java/me/shedaniel/rei/api/ingredient/EntryStack.java index d083b425b..b817c33b6 100644 --- a/api/src/main/java/me/shedaniel/rei/api/ingredient/EntryStack.java +++ b/api/src/main/java/me/shedaniel/rei/api/ingredient/EntryStack.java @@ -28,6 +28,7 @@ import com.google.gson.JsonObject; import com.mojang.serialization.Dynamic; import com.mojang.serialization.JsonOps; import me.shedaniel.rei.api.gui.Renderer; +import me.shedaniel.rei.api.gui.widgets.Tooltip; import me.shedaniel.rei.api.ingredient.entry.EntrySerializer; import me.shedaniel.rei.api.ingredient.entry.comparison.ComparisonContext; import me.shedaniel.rei.api.ingredient.entry.renderer.EntryRenderer; @@ -46,10 +47,8 @@ import net.minecraft.util.Unit; import org.jetbrains.annotations.ApiStatus; import org.jetbrains.annotations.Nullable; -import java.util.ArrayList; -import java.util.Collections; -import java.util.List; -import java.util.Optional; +import java.util.*; +import java.util.function.BiFunction; import java.util.function.Function; import java.util.function.Supplier; @@ -147,6 +146,18 @@ public interface EntryStack<T> extends TextRepresentable, Renderer { <R> R get(Settings<R> settings); + default EntryStack<T> tooltip(Component... tooltips) { + return tooltip(Arrays.asList(tooltips)); + } + + default EntryStack<T> tooltip(List<Component> tooltips) { + return tooltip(stack -> tooltips); + } + + default EntryStack<T> tooltip(Function<EntryStack<?>, List<Component>> tooltipProvider) { + return setting(Settings.TOOLTIP_APPEND_EXTRA, tooltipProvider); + } + class Settings<R> { @ApiStatus.Internal private static final List<Settings<?>> SETTINGS = new ArrayList<>(); @@ -154,15 +165,12 @@ public interface EntryStack<T> extends TextRepresentable, Renderer { public static final Supplier<Boolean> TRUE = () -> true; public static final Supplier<Boolean> FALSE = () -> false; public static final Function<EntryStack<?>, EntryRenderer<?>> DEFAULT_RENDERER = stack -> stack.getDefinition().getRenderer(); + public static final BiFunction<EntryStack<?>, Tooltip, Tooltip> DEFAULT_TOOLTIP_PROCESSOR = (stack, tooltip) -> tooltip; public static final Settings<Function<EntryStack<?>, EntryRenderer<?>>> RENDER = new Settings<>(DEFAULT_RENDERER); @Deprecated - public static final Settings<Supplier<Boolean>> TOOLTIP_ENABLED = new Settings<>(TRUE); - @Deprecated - public static final Settings<Supplier<Boolean>> TOOLTIP_APPEND_MOD = new Settings<>(TRUE); + public static final Settings<BiFunction<EntryStack<?>, Tooltip, Tooltip>> TOOLTIP_PROCESSOR = new Settings<>(DEFAULT_TOOLTIP_PROCESSOR); @Deprecated public static final Settings<Function<EntryStack<?>, List<Component>>> TOOLTIP_APPEND_EXTRA = new Settings<>(stack -> Collections.emptyList()); - @Deprecated - public static final Settings<Function<EntryStack<?>, String>> COUNTS = new Settings<>(stack -> null); private static short nextId; private R defaultValue; diff --git a/default-plugin/src/main/java/me/shedaniel/rei/plugin/brewing/DefaultBrewingDisplay.java b/default-plugin/src/main/java/me/shedaniel/rei/plugin/brewing/DefaultBrewingDisplay.java index e3b4843b6..be45551b2 100644 --- a/default-plugin/src/main/java/me/shedaniel/rei/plugin/brewing/DefaultBrewingDisplay.java +++ b/default-plugin/src/main/java/me/shedaniel/rei/plugin/brewing/DefaultBrewingDisplay.java @@ -52,20 +52,16 @@ public class DefaultBrewingDisplay implements Display { ItemStack[] inputItems = input.getItems(); List<EntryStack<?>> i = new ArrayList<>(inputItems.length); for (ItemStack inputItem : inputItems) { - EntryStack<?> entryStack = EntryStacks.of(inputItem); - entryStack.setting(EntryStack.Settings.TOOLTIP_APPEND_EXTRA, s -> Collections.singletonList(new TranslatableComponent("category.rei.brewing.input").withStyle(ChatFormatting.YELLOW))); - i.add(entryStack); + i.add(EntryStacks.of(inputItem).tooltip(new TranslatableComponent("category.rei.brewing.input").withStyle(ChatFormatting.YELLOW))); } this.input = EntryIngredient.of(i); ItemStack[] reactantStacks = reactant.getItems(); List<EntryStack<?>> r = new ArrayList<>(reactantStacks.length); for (ItemStack stack : reactantStacks) { - EntryStack<?> entryStack = EntryStacks.of(stack); - entryStack.setting(EntryStack.Settings.TOOLTIP_APPEND_EXTRA, s -> Collections.singletonList(new TranslatableComponent("category.rei.brewing.reactant").withStyle(ChatFormatting.YELLOW))); - r.add(entryStack); + r.add(EntryStacks.of(stack).tooltip(new TranslatableComponent("category.rei.brewing.reactant").withStyle(ChatFormatting.YELLOW))); } this.reactant = EntryIngredient.of(r); - this.output = EntryStacks.of(output).setting(EntryStack.Settings.TOOLTIP_APPEND_EXTRA, stack -> Collections.singletonList(new TranslatableComponent("category.rei.brewing.result").withStyle(ChatFormatting.YELLOW))); + this.output = EntryStacks.of(output).tooltip(new TranslatableComponent("category.rei.brewing.result").withStyle(ChatFormatting.YELLOW)); } @Override diff --git a/default-plugin/src/main/java/me/shedaniel/rei/plugin/composting/DefaultCompostingCategory.java b/default-plugin/src/main/java/me/shedaniel/rei/plugin/composting/DefaultCompostingCategory.java index 41aebe62d..7638f363b 100644 --- a/default-plugin/src/main/java/me/shedaniel/rei/plugin/composting/DefaultCompostingCategory.java +++ b/default-plugin/src/main/java/me/shedaniel/rei/plugin/composting/DefaultCompostingCategory.java @@ -46,7 +46,10 @@ import net.minecraft.resources.ResourceLocation; import net.minecraft.util.Mth; import net.minecraft.world.level.block.Blocks; -import java.util.*; +import java.util.ArrayList; +import java.util.List; +import java.util.Map; +import java.util.Objects; @Environment(EnvType.CLIENT) public class DefaultCompostingCategory implements DisplayCategory<DefaultCompostingDisplay> { @@ -94,7 +97,7 @@ public class DefaultCompostingCategory implements DisplayCategory<DefaultCompost if (!entryStack.isEmpty()) { display.getInputMap().object2FloatEntrySet().stream().filter(entry -> entry.getKey() != null && Objects.equals(entry.getKey().asItem(), entryStack.get(0).getValue())).findAny().map(Map.Entry::getValue).ifPresent(chance -> { for (EntryStack<?> stack : entryStack) { - stack.setting(EntryStack.Settings.TOOLTIP_APPEND_EXTRA, s -> Collections.singletonList(new TranslatableComponent("text.rei.composting.chance", Mth.fastFloor(chance * 100)).withStyle(ChatFormatting.YELLOW))); + stack.tooltip(new TranslatableComponent("text.rei.composting.chance", Mth.fastFloor(chance * 100)).withStyle(ChatFormatting.YELLOW)); } }); } diff --git a/runtime/src/main/java/me/shedaniel/rei/gui/plugin/entry/FluidEntryDefinition.java b/runtime/src/main/java/me/shedaniel/rei/gui/plugin/entry/FluidEntryDefinition.java index dc3fc0109..b7d6312b4 100644 --- a/runtime/src/main/java/me/shedaniel/rei/gui/plugin/entry/FluidEntryDefinition.java +++ b/runtime/src/main/java/me/shedaniel/rei/gui/plugin/entry/FluidEntryDefinition.java @@ -34,8 +34,6 @@ import me.shedaniel.architectury.platform.Platform; import me.shedaniel.architectury.utils.Fraction; import me.shedaniel.math.Point; import me.shedaniel.math.Rectangle; -import me.shedaniel.rei.api.ClientHelper; -import me.shedaniel.rei.api.config.ConfigObject; import me.shedaniel.rei.api.gui.widgets.Tooltip; import me.shedaniel.rei.api.ingredient.EntryStack; import me.shedaniel.rei.api.ingredient.entry.EntrySerializer; @@ -193,7 +191,7 @@ public class FluidEntryDefinition implements EntryDefinition<FluidStack>, EntryS @Override public @Nullable Tooltip getTooltip(EntryStack<FluidStack> entry, Point mouse) { - if (!entry.get(EntryStack.Settings.TOOLTIP_ENABLED).get() || entry.isEmpty()) + if (entry.isEmpty()) return null; List<Component> toolTip = Lists.newArrayList(entry.asFormattedText()); Fraction amount = entry.getValue().getAmount(); @@ -202,20 +200,10 @@ public class FluidEntryDefinition implements EntryDefinition<FluidStack>, EntryS if (amountTooltip != null) toolTip.addAll(Stream.of(amountTooltip.split("\n")).map(TextComponent::new).collect(Collectors.toList())); } - ResourceLocation fluidId = null; if (Minecraft.getInstance().options.advancedItemTooltips) { - if (fluidId == null) { - fluidId = Registry.FLUID.getKey(entry.getValue().getFluid()); - } + ResourceLocation fluidId = Registry.FLUID.getKey(entry.getValue().getFluid()); toolTip.add((new TextComponent(fluidId.toString())).withStyle(ChatFormatting.DARK_GRAY)); } - toolTip.addAll(entry.get(EntryStack.Settings.TOOLTIP_APPEND_EXTRA).apply(entry)); - if (entry.get(EntryStack.Settings.TOOLTIP_APPEND_MOD).get() && ConfigObject.getInstance().shouldAppendModNames()) { - if (fluidId == null) { - fluidId = Registry.FLUID.getKey(entry.getValue().getFluid()); - } - ClientHelper.getInstance().appendModIdToTooltips(toolTip, fluidId.getNamespace()); - } return Tooltip.create(toolTip); } } diff --git a/runtime/src/main/java/me/shedaniel/rei/gui/plugin/entry/ItemEntryDefinition.java b/runtime/src/main/java/me/shedaniel/rei/gui/plugin/entry/ItemEntryDefinition.java index 6a639bc31..f3c913b72 100644 --- a/runtime/src/main/java/me/shedaniel/rei/gui/plugin/entry/ItemEntryDefinition.java +++ b/runtime/src/main/java/me/shedaniel/rei/gui/plugin/entry/ItemEntryDefinition.java @@ -231,7 +231,7 @@ public class ItemEntryDefinition implements EntryDefinition<ItemStack>, EntrySer public void renderOverlay(EntryStack<ItemStack> entry, PoseStack matrices, Rectangle bounds, int mouseX, int mouseY, float delta) { if (!entry.isEmpty()) { Minecraft.getInstance().getItemRenderer().blitOffset = entry.getZ(); - Minecraft.getInstance().getItemRenderer().renderGuiItemDecorations(Minecraft.getInstance().font, entry.getValue(), bounds.x, bounds.y, entry.get(EntryStack.Settings.COUNTS).apply(entry)); + Minecraft.getInstance().getItemRenderer().renderGuiItemDecorations(Minecraft.getInstance().font, entry.getValue(), bounds.x, bounds.y, null); Minecraft.getInstance().getItemRenderer().blitOffset = 0.0F; } } @@ -249,14 +249,9 @@ public class ItemEntryDefinition implements EntryDefinition<ItemStack>, EntrySer @Override public @Nullable Tooltip getTooltip(EntryStack<ItemStack> entry, Point mouse) { - if (entry.isEmpty() || !entry.get(EntryStack.Settings.TOOLTIP_ENABLED).get()) + if (entry.isEmpty()) return null; - List<Component> toolTip = tryGetItemStackToolTip(entry, entry.getValue(), true); - toolTip.addAll(entry.get(EntryStack.Settings.TOOLTIP_APPEND_EXTRA).apply(entry)); - if (entry.get(EntryStack.Settings.TOOLTIP_APPEND_MOD).get() && ConfigObject.getInstance().shouldAppendModNames()) { - ClientHelper.getInstance().appendModIdToTooltips(toolTip, Registry.ITEM.getKey(entry.getValue().getItem()).getNamespace()); - } - return Tooltip.create(toolTip); + return Tooltip.create(tryGetItemStackToolTip(entry, entry.getValue(), true)); } } } diff --git a/runtime/src/main/java/me/shedaniel/rei/impl/AbstractEntryStack.java b/runtime/src/main/java/me/shedaniel/rei/impl/AbstractEntryStack.java index dc6eb2e43..8f9cddf1d 100644 --- a/runtime/src/main/java/me/shedaniel/rei/impl/AbstractEntryStack.java +++ b/runtime/src/main/java/me/shedaniel/rei/impl/AbstractEntryStack.java @@ -29,6 +29,8 @@ import it.unimi.dsi.fastutil.shorts.Short2ObjectMaps; import it.unimi.dsi.fastutil.shorts.Short2ObjectOpenHashMap; import me.shedaniel.math.Point; import me.shedaniel.math.Rectangle; +import me.shedaniel.rei.api.ClientHelper; +import me.shedaniel.rei.api.config.ConfigObject; import me.shedaniel.rei.api.gui.AbstractRenderer; import me.shedaniel.rei.api.gui.widgets.Tooltip; import me.shedaniel.rei.api.ingredient.EntryStack; @@ -104,7 +106,15 @@ public abstract class AbstractEntryStack<A> extends AbstractRenderer implements @Override @Nullable public Tooltip getTooltip(Point mouse) { - return this.getDefinition().getRenderer().getTooltip(this, mouse); + Tooltip[] tooltip = {this.getDefinition().getRenderer().getTooltip(this, mouse)}; + if (tooltip[0] == null) return null; + tooltip[0].getText().addAll(get(EntryStack.Settings.TOOLTIP_APPEND_EXTRA).apply(this)); + tooltip[0] = get(EntryStack.Settings.TOOLTIP_PROCESSOR).apply(this, tooltip[0]); + if (tooltip[0] == null) return null; + if (ConfigObject.getInstance().shouldAppendModNames()) { + getIdentifier().ifPresent(location -> ClientHelper.getInstance().appendModIdToTooltips(tooltip[0].getText(), location.getNamespace())); + } + return tooltip[0]; } @Override |
