Bug Description
While viewing a sign with coloured text, you are unable to see the text colour from the front of the sign on macOS / OS X. This effects every Minecraft version to date (with coloured sign text of course), regardless of macOS version, Java version, or graphics driver version. This bug seems to only effect older mac processors. This bug does not effect Minecraft running on Windows or any version of Linux (that I know of).
Bug Example
Simply spawn in a sign with coloured text on macOS / OS X and observe the colour of the text while viewing the front of the sign straight-on and from a sharp angle.
Bug Cause
This bug is caused by incorrectly defining the surface normal vector of the front of the sign while rendering the text on a sign. This causes the surface "face" to be defined as the back of the sign, rather than the front (where the text is visible). The OpenGL implementation on Windows and Linux appears to have a relaxed policy for applying colour to the surface, while the OpenGL implemenation on macOS has a stricter policy for applying the colour. It appears that OpenGL on macOS does not apply the colour if the surface is not "visible", which is why the colour is only applied on sharp angles to the sign, where part of the surface would be visible.
Bug Fix
This bug can easily be fixed by properly defining the surface normal while rendering the text on the sign. This change does not break rendering behaviour on Windows and Linux (tested on Windows 10 and Arch Linux), while fixing the text rendering on macOS (tested on OS X Mountain Lion, OS X Mavericks, OS X Yosemite, OS X El Capitan, macOS Sierra, macOS High Sierra, and a beta of macOS Mojave).
How to Fix - MCP Mappings
Minecraft 1.12.2
Navigate to:
net.minecraft.client.renderer.tileentity.TileEntitySignRendererFind line 76:
GlStateManager.glNormal3f(0.0F, 0.0F, -0.010416667F);Change line 76 to:
GlStateManager.glNormal3f(0.0F, 0.0F, 0.010416667F);
How to Fix - Obfuscated Game
Minecraft 1.13.1 (Same obfuscation as Minecraft 1.13.1-pre2)
Navigate to:
cwgFind line 43:
ctz.a(0.0F, 0.0F, -0.010416667F);Change line 43 to:
ctz.a(0.0F, 0.0F, -0.010416667F);
Minecraft 1.13.1-pre2 (Same obfuscation as Minecraft 1.13.1-pre1)
Navigate to:
cwgFind line 43:
ctz.a(0.0F, 0.0F, -0.010416667F);Change line 43 to:
ctz.a(0.0F, 0.0F, 0.010416667F);
Minecraft 1.13.1-pre1
Navigate to:
cwgFind line 67:
ctz.a((float)0.0f, (float)0.0f, (float)-0.010416667f);Change line 67 to:
ctz.a((float)0.0f, (float)0.0f, (float)0.010416667f);
Minecraft 18w33a
Navigate to:
cwfFind line 67:
cty.a((float)0.0f, (float)0.0f, (float)-0.010416667f);Change line 67 to:
cty.a((float)0.0f, (float)0.0f, (float)0.010416667f);
Minecraft 18w32a (Same obfuscation as Minecraft 18w31a)
Navigate to:
cweFind line 67:
ctx.a(0.0F, 0.0F, -0.010416667F);Change line 67 to:
ctx.a(0.0F, 0.0F, 0.010416667F);
Minecraft 18w31a
Navigate to:
cweFind line 64:
ctx.a(0.0F, 0.0F, -0.010416667F);Change line 64 to:
ctx.a(0.0F, 0.0F, 0.010416667F);
Minecraft 18w30b
Navigate to:
cvzFind line 64:
cts.a(0.0F, 0.0F, -0.010416667F);Change line 64 to:
cts.a(0.0F, 0.0F, 0.010416667F);
Minecraft 18w30a
Navigate to:
cvyFind line 64:
ctr.a(0.0F, 0.0F, -0.010416667F);Change line 64 to:
ctr.a(0.0F, 0.0F, 0.010416667F);
Minecraft 1.13
Navigate to:
cvwFind line 64:
ctp.a(0.0F, 0.0F, -0.010416667F);Change line 64 to:
ctp.a(0.0F, 0.0F, 0.010416667F);
Minecraft 1.13-pre10
Navigate to:
cvuFind line 64:
ctn.a(0.0F, 0.0F, -0.010416667F);Change line 64 to:
ctn.a(0.0F, 0.0F, 0.010416667F);
Minecraft 1.13-pre10
Navigate to:
cvuFind line 64:
ctn.a(0.0F, 0.0F, -0.010416667F);Change line 64 to:
ctn.a(0.0F, 0.0F, 0.010416667F);
Minecraft 1.13-pre9 (Same obfuscation as Minecraft 1.13-pre8)
Navigate to:
cvsFind line 64:
ctl.a(0.0F, 0.0F, -0.010416667F);Change line 64 to:
ctl.a(0.0F, 0.0F, 0.010416667F);
Minecraft 1.13-pre8
Navigate to:
cvsFind line 64:
ctl.a(0.0F, 0.0F, -0.010416667F);Change line 64 to:
ctl.a(0.0F, 0.0F, 0.010416667F);
Minecraft 1.13-pre7
Navigate to:
cviFind line 64:
ctb.a(0.0F, 0.0F, -0.010416667F);Change line 64 to:
ctb.a(0.0F, 0.0F, 0.010416667F);
Minecraft 1.13-pre6
Navigate to:
cvaFind line 64:
cst.a(0.0F, 0.0F, -0.010416667F);Change line 64 to:
cst.a(0.0F, 0.0F, 0.010416667F);
Minecraft 1.12.2 (Same obfuscation as Minecraft 1.12.1)
Navigate to:
bxfFind line 75:
bus.a(0.0F, 0.0F, -0.010416667F);Change line 75 to:
bus.a(0.0F, 0.0F, 0.010416667F);
Minecraft 1.12.1
Navigate to:
bxfFind line 75:
bus.a(0.0F, 0.0F, -0.010416667F);Change line 75 to:
bus.a(0.0F, 0.0F, 0.010416667F);
Minecraft 1.12
Navigate to:
bxdFind line 75:
buq.a(0.0F, 0.0F, -0.010416667F);Change line 75 to:
buq.a(0.0F, 0.0F, 0.010416667F);
Minecraft 1.11.2 (Same obfuscation as Minecraft 1.11.1)
Navigate to:
bssFind line 75:
bqg.a(0.0F, 0.0F, -0.010416667F);Change line 75 to:
bqg.a(0.0F, 0.0F, 0.010416667F);
Minecraft 1.11.1
Navigate to:
bssFind line 75:
bqg.a(0.0F, 0.0F, -0.010416667F);Change line 75 to:
bqg.a(0.0F, 0.0F, 0.010416667F);
Minecraft 1.11
Navigate to:
bsqFind line 75:
bqe.a(0.0F, 0.0F, -0.010416667F);Change line 75 to:
bqe.a(0.0F, 0.0F, 0.010416667F);
Minecraft 1.10.2 (Same obfuscation as Minecraft 1.10.1)
Navigate to:
bqmFind line 75:
bob.a(0.0F, 0.0F, -0.010416667F);Change line 75 to:
bob.a(0.0F, 0.0F, 0.010416667F);
Minecraft 1.10.1 (Same obfuscation as Minecraft 1.10)
Navigate to:
bqmFind line 75:
bob.a(0.0F, 0.0F, -0.010416667F);Change line 75 to:
bob.a(0.0F, 0.0F, 0.010416667F);
Minecraft 1.10
Navigate to:
bqmFind line 75:
bob.a(0.0F, 0.0F, -0.010416667F);Change line 75 to:
bob.a(0.0F, 0.0F, 0.010416667F);
Minecraft 1.9.4 (Same obfuscation as Minecraft 1.9.3)
Navigate to:
bpqFind line 75:
bnf.a(0.0F, 0.0F, -1.0F * ☃);Change line 75 to:
bnf.a(0.0F, 0.0F, ☃);
Minecraft 1.9.3 (Same obfuscation as Minecraft 1.9.2)
Navigate to:
bpqFind line 75:
bnf.a(0.0F, 0.0F, -1.0F * ☃);Change line 75 to:
bnf.a(0.0F, 0.0F, ☃);
Minecraft 1.9.2 (Same obfuscation as Minecraft 1.9.1)
Navigate to:
bpqFind line 75:
bnf.a(0.0F, 0.0F, -1.0F * ☃);Change line 75 to:
bnf.a(0.0F, 0.0F, ☃);
Minecraft 1.9.1
Navigate to:
bpqFind line 75:
bnf.a(0.0F, 0.0F, -1.0F * ☃);Change line 75 to:
bnf.a(0.0F, 0.0F, ☃);
Minecraft 1.9
Navigate to:
bptFind line 75:
bni.a(0.0F, 0.0F, -1.0F * ☃);Change line 75 to:
bni.a(0.0F, 0.0F, ☃);
Minecraft 1.8.9
Navigate to:
bhjFind line 77:
GL11.glNormal3f(0.0F, 0.0F, -1.0F * ☃);Change line 77 to:
GL11.glNormal3f(0.0F, 0.0F, ☃);
Minecraft 1.8
Navigate to:
cnvFind line 77:
GL11.glNormal3f(0.0F, 0.0F, -1.0F * f3);Change line 77 to:
GL11.glNormal3f(0.0F, 0.0F, f3);
Minecraft 1.7.10
Navigate to:
bmrFind line 54:
GL11.glNormal3f(0.0F, 0.0F, -1.0F * f3);Change line 54 to:
GL11.glNormal3f(0.0F, 0.0F, f3);
Minecraft 1.6.4
Navigate to:
bjaFind line 53:
GL11.glNormal3f(0.0F, 0.0F, -1.0F * f3);Change line 53 to:
GL11.glNormal3f(0.0F, 0.0F, f3);
Minecraft 1.5.2
Navigate to:
bjaFind line 50:
GL11.glNormal3f(0.0F, 0.0F, -1.0F * f3);Change line 50 to:
GL11.glNormal3f(0.0F, 0.0F, f3);
Minecraft 1.4.7
Navigate to:
bdtFind line 50:
GL11.glNormal3f(0.0F, 0.0F, -1.0F * f3);Change line 50 to:
GL11.glNormal3f(0.0F, 0.0F, f3);
Minecraft 1.3.2
Navigate to:
axqFind line 50:
GL11.glNormal3f(0.0F, 0.0F, -1.0F * f3);Change line 50 to:
GL11.glNormal3f(0.0F, 0.0F, f3);
Minecraft 1.2.5
Navigate to:
llFind line 51:
GL11.glNormal3f(0.0F, 0.0F, -1.0F * f3);Change line 51 to:
GL11.glNormal3f(0.0F, 0.0F, f3);
Minecraft 1.1
Navigate to:
kuFind line 51:
GL11.glNormal3f(0.0F, 0.0F, -1.0F * f3);Change line 51 to:
GL11.glNormal3f(0.0F, 0.0F, f3);
Minecraft 1.0
Navigate to:
aeuFind line 51:
GL11.glNormal3f(0.0F, 0.0F, -1.0F * f3);Change line 51 to:
GL11.glNormal3f(0.0F, 0.0F, f3);
Notice the sign of the z-coordinate of the normal vector. This change will correctly define the surface normal to be the front of the sign, fixing coloured signs on macOS.
Linked issues
is duplicated by 15
relates to 2
Attachments
Comments 56
Not true actually. Coloured signs are vanilla, they just cannot be placed without an external editor (like MCEdit). You do not have to mod your game for this to happen. Oh, and confirmed on a MacBook Air running Mountain Lion and Minecraft 1.5.1
This happens to me in both singleplayer and multiplayer in 1.6.2 It only happens on my MacBook Air, not on my brothers PC
PLEASE FIX THIS, THIS IS THE MOST ANNOYING AND INCONVENIENT BUG IVE EVER EXPERIENCED WITH MINECRAFT!!!
This is NOT a problem in Vanilla Minecraft and cannot be reproduced without any external editors. Therefor it's not a valid report for this tracker.
This bug appears to have been fixed in 19w39a. I tested it on my old macbook and the sign rendering was broken in 19w38b but worked fine in 19w39a and 19w40a. Looking at the source, it looks like they removed the offending normal3f() in 19w39a.
Although, with all the changes to the rendering and new issues with signs, I wouldn't be surprised if they reverted this change back, reintroducing the bug. But for now, it appears to be fixed.
Any reason you added 19w39a and 19w40a yesterday? Were you able to temporarily reproduce it or something else odd like that? Or was it just by reflex?
I tried to test it yesterday but I was still running an older snapshot for some reason. I attempted to remove those versions when I realized but I guess it didn't work. The only version I am able to change is 1.14.4 (where the bug still occurs), all the others versions are archived and I cannot change them.
I was not able to reproduce this bug in 19w39a or 19w40a.
This venue is for vanilla bugs only. Color text on signs is not in the current release of Minecraft. It has been noted but I will close this as invalid.