aboutsummaryrefslogtreecommitdiff
path: root/runtime/src/main/java/me/shedaniel/rei/plugin/client
diff options
context:
space:
mode:
authorshedaniel <daniel@shedaniel.me>2021-06-22 01:47:32 +0800
committershedaniel <daniel@shedaniel.me>2021-06-22 01:47:32 +0800
commit927a4af76ec3c74dc83c38b5b46d105a933bb48a (patch)
treecffa99dbeb9b56d53e0dfeacdcb857b2368a391d /runtime/src/main/java/me/shedaniel/rei/plugin/client
parent0d1886cd3a85e7829646b666c36b35cf3321f1b0 (diff)
downloadRoughlyEnoughItems-927a4af76ec3c74dc83c38b5b46d105a933bb48a.tar.gz
RoughlyEnoughItems-927a4af76ec3c74dc83c38b5b46d105a933bb48a.tar.bz2
RoughlyEnoughItems-927a4af76ec3c74dc83c38b5b46d105a933bb48a.zip
Fix #558
Diffstat (limited to 'runtime/src/main/java/me/shedaniel/rei/plugin/client')
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/plugin/client/DefaultClientRuntimePlugin.java23
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/plugin/client/entry/FluidEntryDefinition.java10
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/plugin/client/entry/ItemEntryDefinition.java16
3 files changed, 23 insertions, 26 deletions
diff --git a/runtime/src/main/java/me/shedaniel/rei/plugin/client/DefaultClientRuntimePlugin.java b/runtime/src/main/java/me/shedaniel/rei/plugin/client/DefaultClientRuntimePlugin.java
index 23248d2fa..ec1ffd2d2 100644
--- a/runtime/src/main/java/me/shedaniel/rei/plugin/client/DefaultClientRuntimePlugin.java
+++ b/runtime/src/main/java/me/shedaniel/rei/plugin/client/DefaultClientRuntimePlugin.java
@@ -25,7 +25,6 @@ package me.shedaniel.rei.plugin.client;
import com.mojang.blaze3d.systems.RenderSystem;
import com.mojang.blaze3d.vertex.PoseStack;
-import dev.architectury.event.CompoundEventResult;
import dev.architectury.fluid.FluidStack;
import me.shedaniel.math.Point;
import me.shedaniel.math.Rectangle;
@@ -49,9 +48,7 @@ import me.shedaniel.rei.api.client.registry.screen.ScreenRegistry;
import me.shedaniel.rei.api.client.registry.transfer.TransferHandlerRegistry;
import me.shedaniel.rei.api.client.util.ClientEntryStacks;
import me.shedaniel.rei.api.common.entry.EntryStack;
-import me.shedaniel.rei.api.common.entry.type.EntryTypeRegistry;
import me.shedaniel.rei.api.common.entry.type.VanillaEntryTypes;
-import me.shedaniel.rei.api.common.fluid.FluidSupportProvider;
import me.shedaniel.rei.api.common.util.EntryStacks;
import me.shedaniel.rei.impl.client.ClientHelperImpl;
import me.shedaniel.rei.impl.client.gui.ScreenOverlayImpl;
@@ -59,8 +56,6 @@ import me.shedaniel.rei.impl.client.gui.screen.AbstractDisplayViewingScreen;
import me.shedaniel.rei.impl.client.gui.screen.DefaultDisplayViewingScreen;
import me.shedaniel.rei.impl.client.gui.widget.FavoritesListWidget;
import me.shedaniel.rei.plugin.autocrafting.DefaultCategoryHandler;
-import me.shedaniel.rei.plugin.client.entry.FluidEntryDefinition;
-import me.shedaniel.rei.plugin.client.entry.ItemEntryDefinition;
import net.fabricmc.api.EnvType;
import net.fabricmc.api.Environment;
import net.minecraft.client.gui.screens.Screen;
@@ -74,29 +69,11 @@ import org.jetbrains.annotations.ApiStatus;
import org.jetbrains.annotations.Nullable;
import java.util.Collections;
-import java.util.Optional;
import java.util.function.Function;
-import java.util.stream.Stream;
@Environment(EnvType.CLIENT)
@ApiStatus.Internal
public class DefaultClientRuntimePlugin implements REIClientPlugin {
- public static final ResourceLocation PLUGIN = new ResourceLocation("roughlyenoughitems", "default_runtime_plugin");
-
- @Override
- public void registerEntryTypes(EntryTypeRegistry registry) {
- registry.register(VanillaEntryTypes.ITEM, new ItemEntryDefinition());
- registry.register(VanillaEntryTypes.FLUID, new FluidEntryDefinition());
-
- registry.registerBridge(VanillaEntryTypes.ITEM, VanillaEntryTypes.FLUID, input -> {
- Optional<Stream<EntryStack<FluidStack>>> stream = FluidSupportProvider.getInstance().itemToFluids(input);
- if (!stream.isPresent()) {
- return CompoundEventResult.pass();
- }
- return CompoundEventResult.interruptTrue(stream.get());
- });
- }
-
@Override
public void registerEntries(EntryRegistry registry) {
if (ClientHelperImpl.getInstance().isAprilFools.get()) {
diff --git a/runtime/src/main/java/me/shedaniel/rei/plugin/client/entry/FluidEntryDefinition.java b/runtime/src/main/java/me/shedaniel/rei/plugin/client/entry/FluidEntryDefinition.java
index 90e1da0bd..6ddaba0ba 100644
--- a/runtime/src/main/java/me/shedaniel/rei/plugin/client/entry/FluidEntryDefinition.java
+++ b/runtime/src/main/java/me/shedaniel/rei/plugin/client/entry/FluidEntryDefinition.java
@@ -84,7 +84,14 @@ public class FluidEntryDefinition implements EntryDefinition<FluidStack>, EntryS
private EntryRenderer<FluidStack> renderer;
public FluidEntryDefinition() {
- EnvExecutor.runInEnv(Env.CLIENT, () -> () -> renderer = new FluidEntryRenderer());
+ EnvExecutor.runInEnv(Env.CLIENT, () -> () -> Client.init(this));
+ }
+
+ @Environment(EnvType.CLIENT)
+ private static class Client {
+ private static void init(FluidEntryDefinition definition) {
+ definition.renderer = new FluidEntryRenderer();
+ }
}
@Override
@@ -189,6 +196,7 @@ public class FluidEntryDefinition implements EntryDefinition<FluidStack>, EntryS
category.setDetail("Fluid NBT", () -> String.valueOf(stack.getTag()));
}
+ @Environment(EnvType.CLIENT)
public static class FluidEntryRenderer extends AbstractEntryRenderer<FluidStack> implements BatchedEntryRenderer<FluidStack, TextureAtlasSprite> {
private static final Supplier<TextureAtlasSprite> MISSING_SPRITE = Suppliers.memoize(() -> {
TextureAtlas atlas = Minecraft.getInstance().getModelManager().getAtlas(TextureAtlas.LOCATION_BLOCKS);
diff --git a/runtime/src/main/java/me/shedaniel/rei/plugin/client/entry/ItemEntryDefinition.java b/runtime/src/main/java/me/shedaniel/rei/plugin/client/entry/ItemEntryDefinition.java
index 95dc8b3e4..920cfca92 100644
--- a/runtime/src/main/java/me/shedaniel/rei/plugin/client/entry/ItemEntryDefinition.java
+++ b/runtime/src/main/java/me/shedaniel/rei/plugin/client/entry/ItemEntryDefinition.java
@@ -80,7 +80,14 @@ public class ItemEntryDefinition implements EntryDefinition<ItemStack>, EntrySer
private EntryRenderer<ItemStack> renderer;
public ItemEntryDefinition() {
- EnvExecutor.runInEnv(Env.CLIENT, () -> () -> renderer = new ItemEntryRenderer());
+ EnvExecutor.runInEnv(Env.CLIENT, () -> () -> Client.init(this));
+ }
+
+ @Environment(EnvType.CLIENT)
+ private static class Client {
+ private static void init(ItemEntryDefinition definition) {
+ definition.renderer = definition.new ItemEntryRenderer();
+ }
}
@Override
@@ -188,6 +195,7 @@ public class ItemEntryDefinition implements EntryDefinition<ItemStack>, EntrySer
return collection == null ? Collections.emptyList() : collection.getMatchingTags(value.getItem());
}
+ @Environment(EnvType.CLIENT)
private List<Component> tryGetItemStackToolTip(EntryStack<ItemStack> entry, ItemStack value, boolean careAboutAdvanced) {
if (!SEARCH_BLACKLISTED.contains(value.getItem()))
try {
@@ -335,7 +343,11 @@ public class ItemEntryDefinition implements EntryDefinition<ItemStack>, EntrySer
if (!components.isEmpty()) {
tooltip.add(components.get(0));
}
- component.ifPresent(tooltipComponent -> tooltip.add(ClientTooltipComponent.create(tooltipComponent)));
+ try {
+ component.ifPresent(tooltipComponent -> tooltip.add(ClientTooltipComponent.create(tooltipComponent)));
+ } catch (IllegalArgumentException exception) {
+ throw new IllegalArgumentException("Failed to add tooltip component! " + component.orElse(null), exception);
+ }
for (int i = 1; i < components.size(); i++) {
tooltip.add(components.get(i));
}