diff options
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.java | 29 |
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; |
