so i was making a mod: https://github.com/AnAwesomGuy/IntelFix/ (fixes that bug), but i want it to be compatible with as many versions of Minecraft as i can manage. and since many older versions of Minecraft use stuff like Risugami's, i can't really use asm transformers to patch stuff. i could use Java's builtin Instrumentation api, however, idk where to get the class names for the Tessellator class and other stuff. thanks!
Mod Coder Pack includes mappings, even if you don't actually use it to decompile anything, within "conf\client.srg"; for example, from the file for 1.6.4:
bfq net/minecraft/src/Tessellator
Another way would be to download the jars for each version and search through them for a string like "tesselating", as strings aren't obfuscated:
public int draw()
{
if (!this.isDrawing)
{
throw new IllegalStateException("Not tesselating!");
}
else
The relevant contents of bfq.class in Notepad:
Already tesselating! B C Code D E GL_ARB_vertex_buffer_object I LITTLE_ENDIAN Lbfq; LineNumberTable Ljava/nio/ByteBuffer; Ljava/nio/ByteOrder; Ljava/nio/FloatBuffer; Ljava/nio/IntBuffer; Ljava/nio/ShortBuffer; Not tesselating!
Also, at least one potential issue with this is that Optifine, at least some versions, modifies the relevant method (a different patch, which patches the OpenGlHelper class, seems to work with Optifine even with a total replacement despite also being modified by it but has been reported to not always fix the issue; somebody who used my mod, which had fixed it for the past year, reported that parts of entities were invisible (random but the same per session), which was fully fixed by patching Tessellator instead).
As far as I know, the change happened in Beta 1.9, which added the OpenGlHelper class, which contains code that used to be within the classes that now call it, as mentioned in this discussion, from which I implemented my fix:
Specifically, Beta 1.8 calls "glActiveTexture" and "glClientActiveTexture" while Beta 1.9 and later only call "glActiveTexture", via OpenGlHelper.setActiveTexture, which is only used where this code used to be so I just added the client call to this method (in 1.6.4 it is called from EntityRenderer, GuiInventory, and RendererLivingEntity; OpenGlHelper.setClientActiveTexture is only used by Tessellator). Although a better fix appears to be to add a call to set the texture unit to default in Tessellator, as noted here (they just added it to the start(?) of the method, which can also be rearranged a bit):
so i was making a mod: https://github.com/AnAwesomGuy/IntelFix/ (fixes that bug), but i want it to be compatible with as many versions of Minecraft as i can manage. and since many older versions of Minecraft use stuff like Risugami's, i can't really use asm transformers to patch stuff. i could use Java's builtin Instrumentation api, however, idk where to get the class names for the Tessellator class and other stuff. thanks!
also, FML was introduced in 1.2.5, right?
Mod Coder Pack includes mappings, even if you don't actually use it to decompile anything, within "conf\client.srg"; for example, from the file for 1.6.4:
Another way would be to download the jars for each version and search through them for a string like "tesselating", as strings aren't obfuscated:
The relevant contents of bfq.class in Notepad:
Also, at least one potential issue with this is that Optifine, at least some versions, modifies the relevant method (a different patch, which patches the OpenGlHelper class, seems to work with Optifine even with a total replacement despite also being modified by it but has been reported to not always fix the issue; somebody who used my mod, which had fixed it for the past year, reported that parts of entities were invisible (random but the same per session), which was fully fixed by patching Tessellator instead).
TheMasterCaver's First World - possibly the most caved-out world in Minecraft history - includes world download.
TheMasterCaver's World - my own version of Minecraft largely based on my views of how the game should have evolved since 1.6.4.
Why do I still play in 1.6.4?
quick question: do you know which version this bug started in?
iirc it was between b1.7-b1.8 but do you have a more specific range?
As far as I know, the change happened in Beta 1.9, which added the OpenGlHelper class, which contains code that used to be within the classes that now call it, as mentioned in this discussion, from which I implemented my fix:
https://www.reddit.com/r/GoldenAgeMinecraft/comments/16uxh16/comment/k35ph9y/
Specifically, Beta 1.8 calls "glActiveTexture" and "glClientActiveTexture" while Beta 1.9 and later only call "glActiveTexture", via OpenGlHelper.setActiveTexture, which is only used where this code used to be so I just added the client call to this method (in 1.6.4 it is called from EntityRenderer, GuiInventory, and RendererLivingEntity; OpenGlHelper.setClientActiveTexture is only used by Tessellator). Although a better fix appears to be to add a call to set the texture unit to default in Tessellator, as noted here (they just added it to the start(?) of the method, which can also be rearranged a bit):
https://github.com/makamys/CoreTweaks/blob/master/src/main/java/makamys/coretweaks/mixin/bugfix/intelcolor/MixinTessellator.java
TheMasterCaver's First World - possibly the most caved-out world in Minecraft history - includes world download.
TheMasterCaver's World - my own version of Minecraft largely based on my views of how the game should have evolved since 1.6.4.
Why do I still play in 1.6.4?