aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/me/shedaniel/rei/impl/FluidEntryStack.java
diff options
context:
space:
mode:
authorshedaniel <daniel@shedaniel.me>2020-06-06 16:29:32 +0800
committershedaniel <daniel@shedaniel.me>2020-06-06 16:29:32 +0800
commit3802055673e7877d66614791eba6ea0599488c7a (patch)
tree8a26efa9c9cea0c0ee1d00234c04eace52771dae /src/main/java/me/shedaniel/rei/impl/FluidEntryStack.java
parentf7be9668e3b9508497e21ff74cc0f2f2e1b5d931 (diff)
downloadRoughlyEnoughItems-3802055673e7877d66614791eba6ea0599488c7a.tar.gz
RoughlyEnoughItems-3802055673e7877d66614791eba6ea0599488c7a.tar.bz2
RoughlyEnoughItems-3802055673e7877d66614791eba6ea0599488c7a.zip
Improved Search
Signed-off-by: shedaniel <daniel@shedaniel.me>
Diffstat (limited to 'src/main/java/me/shedaniel/rei/impl/FluidEntryStack.java')
-rw-r--r--src/main/java/me/shedaniel/rei/impl/FluidEntryStack.java42
1 files changed, 19 insertions, 23 deletions
diff --git a/src/main/java/me/shedaniel/rei/impl/FluidEntryStack.java b/src/main/java/me/shedaniel/rei/impl/FluidEntryStack.java
index f417e0d5f..b038fe07b 100644
--- a/src/main/java/me/shedaniel/rei/impl/FluidEntryStack.java
+++ b/src/main/java/me/shedaniel/rei/impl/FluidEntryStack.java
@@ -30,12 +30,14 @@ import me.shedaniel.rei.api.ClientHelper;
import me.shedaniel.rei.api.ConfigObject;
import me.shedaniel.rei.api.EntryStack;
import me.shedaniel.rei.api.widgets.Tooltip;
+import me.shedaniel.rei.utils.CollectionUtils;
import net.fabricmc.fabric.api.client.render.fluid.v1.FluidRenderHandler;
import net.fabricmc.fabric.api.client.render.fluid.v1.FluidRenderHandlerRegistry;
import net.minecraft.client.MinecraftClient;
import net.minecraft.client.render.BufferBuilder;
import net.minecraft.client.render.Tessellator;
import net.minecraft.client.render.VertexFormats;
+import net.minecraft.client.resource.language.I18n;
import net.minecraft.client.texture.Sprite;
import net.minecraft.client.texture.SpriteAtlasTexture;
import net.minecraft.client.util.math.MatrixStack;
@@ -43,12 +45,15 @@ import net.minecraft.fluid.Fluid;
import net.minecraft.fluid.Fluids;
import net.minecraft.text.LiteralText;
import net.minecraft.text.Text;
+import net.minecraft.text.TranslatableText;
import net.minecraft.util.Identifier;
import net.minecraft.util.Pair;
import net.minecraft.util.math.BlockPos;
import net.minecraft.util.math.Matrix4f;
import net.minecraft.util.registry.Registry;
+import org.apache.commons.lang3.StringUtils;
import org.jetbrains.annotations.ApiStatus;
+import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import java.util.HashMap;
@@ -60,7 +65,6 @@ import java.util.stream.Stream;
@ApiStatus.Internal
public class FluidEntryStack extends AbstractEntryStack {
- private static final Map<Fluid, Pair<Sprite, Integer>> FLUID_SPRITE_CACHE = new HashMap<>();
private static final double IGNORE_AMOUNT = -1319182373;
private Fluid fluid;
private double amount;
@@ -78,23 +82,6 @@ public class FluidEntryStack extends AbstractEntryStack {
this.amount = amount;
}
- protected static Pair<Sprite, Integer> getOrLoadSprite(Fluid fluid) {
- Pair<Sprite, Integer> possibleCached = FLUID_SPRITE_CACHE.get(fluid);
- if (possibleCached != null)
- return possibleCached;
-
- FluidRenderHandler fluidRenderHandler = FluidRenderHandlerRegistry.INSTANCE.get(fluid);
- if (fluidRenderHandler == null)
- return null;
- Sprite[] sprites = fluidRenderHandler.getFluidSprites(MinecraftClient.getInstance().world, MinecraftClient.getInstance().world == null ? null : BlockPos.ORIGIN, fluid.getDefaultState());
- int color = -1;
- if (MinecraftClient.getInstance().world != null)
- color = fluidRenderHandler.getFluidColor(MinecraftClient.getInstance().world, BlockPos.ORIGIN, fluid.getDefaultState());
- Pair<Sprite, Integer> pair = new Pair<>(sprites[0], color);
- FLUID_SPRITE_CACHE.put(fluid, pair);
- return pair;
- }
-
@Override
public Optional<Identifier> getIdentifier() {
return Optional.ofNullable(Registry.FLUID.getId(getFluid()));
@@ -201,7 +188,7 @@ public class FluidEntryStack extends AbstractEntryStack {
public Tooltip getTooltip(Point point) {
if (!get(Settings.TOOLTIP_ENABLED).get() || isEmpty())
return null;
- List<Text> toolTip = Lists.newArrayList(new LiteralText(SearchArgument.tryGetEntryStackName(this)));
+ List<Text> toolTip = Lists.newArrayList(asFormattedText());
if (amount >= 0) {
String amountTooltip = get(Settings.Fluid.AMOUNT_TOOLTIP).apply(this);
if (amountTooltip != null)
@@ -228,10 +215,10 @@ public class FluidEntryStack extends AbstractEntryStack {
@Override
public void render(MatrixStack matrices, Rectangle bounds, int mouseX, int mouseY, float delta) {
if (get(Settings.RENDER).get()) {
- Pair<Sprite, Integer> pair = getOrLoadSprite(getFluid());
- if (pair != null) {
- Sprite sprite = pair.getLeft();
- int color = pair.getRight();
+ SimpleFluidRenderer.FluidRenderingData renderingData = SimpleFluidRenderer.fromFluid(fluid);
+ if (renderingData != null) {
+ Sprite sprite = renderingData.getSprite();
+ int color = renderingData.getColor();
int a = 255;
int r = (color >> 16 & 255);
int g = (color >> 8 & 255);
@@ -249,4 +236,13 @@ public class FluidEntryStack extends AbstractEntryStack {
}
}
}
+
+ @NotNull
+ @Override
+ public Text asFormattedText() {
+ Identifier id = Registry.FLUID.getId(fluid);
+ if (I18n.hasTranslation("block." + id.toString().replaceFirst(":", ".")))
+ return new TranslatableText("block." + id.toString().replaceFirst(":", "."));
+ return new LiteralText(CollectionUtils.mapAndJoinToString(id.getPath().split("_"), StringUtils::capitalize, " "));
+ }
}