aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorshedaniel <daniel@shedaniel.me>2021-03-20 18:03:04 +0800
committershedaniel <daniel@shedaniel.me>2021-03-20 18:03:04 +0800
commit2c29cac8a5e0878696c8e6635f4e41ed4845b41c (patch)
tree52e2599cdd561900bcb8c2f22efb665dd4c41529
parent0292fa5317106c46a39cd39e9664936f807b6270 (diff)
downloadRoughlyEnoughItems-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>
-rw-r--r--api/src/main/java/me/shedaniel/rei/api/ingredient/EntryStack.java26
-rw-r--r--default-plugin/src/main/java/me/shedaniel/rei/plugin/brewing/DefaultBrewingDisplay.java10
-rw-r--r--default-plugin/src/main/java/me/shedaniel/rei/plugin/composting/DefaultCompostingCategory.java7
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/gui/plugin/entry/FluidEntryDefinition.java16
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/gui/plugin/entry/ItemEntryDefinition.java11
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/impl/AbstractEntryStack.java12
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