aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/me/shedaniel/rei/gui/renderers/FluidRenderer.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/me/shedaniel/rei/gui/renderers/FluidRenderer.java')
-rw-r--r--src/main/java/me/shedaniel/rei/gui/renderers/FluidRenderer.java29
1 files changed, 20 insertions, 9 deletions
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 1e6f6663f..db34ce0ac 100644
--- a/src/main/java/me/shedaniel/rei/gui/renderers/FluidRenderer.java
+++ b/src/main/java/me/shedaniel/rei/gui/renderers/FluidRenderer.java
@@ -23,6 +23,8 @@ import net.minecraft.client.texture.Sprite;
import net.minecraft.client.texture.SpriteAtlasTexture;
import net.minecraft.fluid.Fluid;
import net.minecraft.util.Lazy;
+import net.minecraft.util.Pair;
+import net.minecraft.util.math.BlockPos;
import net.minecraft.util.registry.Registry;
import java.util.Collections;
@@ -30,13 +32,16 @@ import java.util.List;
public abstract class FluidRenderer extends Renderer {
public boolean drawTooltip = false;
- public Lazy<Sprite> sprite = new Lazy<>(() -> {
+ public Lazy<Pair<Sprite, Integer>> sprite = new Lazy<>(() -> {
try {
FluidRenderHandler fluidRenderHandler = FluidRenderHandlerRegistry.INSTANCE.get(getFluid());
if (fluidRenderHandler == null)
return null;
- Sprite[] sprites = fluidRenderHandler.getFluidSprites(null, null, getFluid().getDefaultState());
- return sprites[0];
+ Sprite[] sprites = fluidRenderHandler.getFluidSprites(MinecraftClient.getInstance().world, MinecraftClient.getInstance().world == null ? null : BlockPos.ORIGIN, getFluid().getDefaultState());
+ int color = -1;
+ if (MinecraftClient.getInstance().world != null)
+ color = fluidRenderHandler.getFluidColor(MinecraftClient.getInstance().world, BlockPos.ORIGIN, getFluid().getDefaultState());
+ return new Pair<>(sprites[0], color);
} catch (Exception e) {
e.printStackTrace();
return null;
@@ -47,17 +52,23 @@ public abstract class FluidRenderer extends Renderer {
public void render(int x, int y, double mouseX, double mouseY, float delta) {
x = x - 8;
y = y - 6;
- Sprite f = this.sprite.get();
- if (f != null) {
+ Pair<Sprite, Integer> pair = this.sprite.get();
+ if (pair != null) {
+ Sprite sprite = pair.getLeft();
+ Integer int_5 = pair.getRight();
+ int a = 255;
+ int r = (int_5 >> 16 & 255);
+ int g = (int_5 >> 8 & 255);
+ int b = (int_5 & 255);
MinecraftClient.getInstance().getTextureManager().bindTexture(SpriteAtlasTexture.BLOCK_ATLAS_TEX);
GuiLighting.disable();
Tessellator tess = Tessellator.getInstance();
BufferBuilder bb = tess.getBufferBuilder();
bb.begin(7, VertexFormats.POSITION_UV_COLOR);
- bb.vertex(x + 16, y, blitOffset).texture(f.getMaxU(), f.getMinV()).color(255, 255, 255, 255).next();
- bb.vertex(x, y, blitOffset).texture(f.getMinU(), f.getMinV()).color(255, 255, 255, 255).next();
- bb.vertex(x, y + 16, blitOffset).texture(f.getMinU(), f.getMaxV()).color(255, 255, 255, 255).next();
- bb.vertex(x + 16, y + 16, blitOffset).texture(f.getMaxU(), f.getMaxV()).color(255, 255, 255, 255).next();
+ bb.vertex(x + 16, y, blitOffset).texture(sprite.getMaxU(), sprite.getMinV()).color(r, g, b, a).next();
+ bb.vertex(x, y, blitOffset).texture(sprite.getMinU(), sprite.getMinV()).color(r, g, b, a).next();
+ bb.vertex(x, y + 16, blitOffset).texture(sprite.getMinU(), sprite.getMaxV()).color(r, g, b, a).next();
+ bb.vertex(x + 16, y + 16, blitOffset).texture(sprite.getMaxU(), sprite.getMaxV()).color(r, g, b, a).next();
tess.draw();
}
this.blitOffset = 0;