From c980df4f05485ef2a1adb768087bb95eeeadcfca Mon Sep 17 00:00:00 2001 From: Danielshe Date: Fri, 23 Aug 2019 03:44:09 +0800 Subject: Build 3 - Fix water color - Fix dark theme slot hover color - Fix villager recipe screen click area --- .../shedaniel/rei/gui/renderers/FluidRenderer.java | 29 +++++++++++++++------- 1 file changed, 20 insertions(+), 9 deletions(-) (limited to 'src/main/java/me/shedaniel/rei/gui/renderers/FluidRenderer.java') 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 = new Lazy<>(() -> { + public Lazy> 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 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; -- cgit