From 6551ccc2470390b13c1efcecd42dcac6b4e92e42 Mon Sep 17 00:00:00 2001 From: David Quintana Date: Mon, 4 May 2020 01:13:43 +0200 Subject: [PATCH] Avoid discarding the bottom 4 bits of the lightmap coords. It turns out vanilla relies on those bits. Fixes some blocks being darker than they should be in certain circumstances. --- .../client/extensions/IForgeVertexBuilder.java | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/main/java/net/minecraftforge/client/extensions/IForgeVertexBuilder.java b/src/main/java/net/minecraftforge/client/extensions/IForgeVertexBuilder.java index 94afa201d3..164db6e3a1 100644 --- a/src/main/java/net/minecraftforge/client/extensions/IForgeVertexBuilder.java +++ b/src/main/java/net/minecraftforge/client/extensions/IForgeVertexBuilder.java @@ -109,14 +109,14 @@ public interface IForgeVertexBuilder } default int applyBakedLighting(int lightmapCoord, ByteBuffer data) { - int bl = LightTexture.getLightBlock(lightmapCoord); - int sl = LightTexture.getLightSky(lightmapCoord); + int bl = lightmapCoord&0xFFFF; + int sl = (lightmapCoord>>16)&0xFFFF; int offset = LightUtil.getLightOffset(0) * 4; // int offset for vertex 0 * 4 bytes per int - int blBaked = Short.toUnsignedInt(data.getShort(offset)) >> 4; - int slBaked = Short.toUnsignedInt(data.getShort(offset + 2)) >> 4; + int blBaked = Short.toUnsignedInt(data.getShort(offset)); + int slBaked = Short.toUnsignedInt(data.getShort(offset + 2)); bl = Math.max(bl, blBaked); sl = Math.max(sl, slBaked); - return LightTexture.packLight(bl, sl); + return bl | (sl<<16); } default void applyBakedNormals(Vector3f generated, ByteBuffer data, Matrix3f normalTransform) {