From 6d5c03ba6a648f4a76e1eff19db632a73b3b7090 Mon Sep 17 00:00:00 2001 From: octarine-noise Date: Sat, 26 Mar 2016 09:28:54 +0100 Subject: [PATCH] fix crash with OptiFine 1.9 (pre A series) bump to 2.0.5 --- build.gradle | 6 +++--- .../mods/betterfoliage/loader/BetterFoliageCore.kt | 11 ++++++----- .../kotlin/mods/octarinecore/client/render/Shading.kt | 8 +++++++- 3 files changed, 16 insertions(+), 9 deletions(-) diff --git a/build.gradle b/build.gradle index ce57008..403a4ad 100644 --- a/build.gradle +++ b/build.gradle @@ -2,7 +2,7 @@ apply plugin: "net.minecraftforge.gradle.forge" apply plugin: 'kotlin' group = 'com.github.octarine-noise' -version = "2.0.4" +version = "2.0.5" archivesBaseName = rootProject.name + '-MC1.9' buildscript { @@ -32,8 +32,8 @@ dependencies { } minecraft { - version = '1.9-12.16.0.1776-1.9' - mappings = 'snapshot_20160320' + version = '1.9-12.16.0.1810-1.9' + mappings = 'snapshot_20160326' runDir = 'run' } diff --git a/src/main/kotlin/mods/betterfoliage/loader/BetterFoliageCore.kt b/src/main/kotlin/mods/betterfoliage/loader/BetterFoliageCore.kt index 21d7778..664a5df 100644 --- a/src/main/kotlin/mods/betterfoliage/loader/BetterFoliageCore.kt +++ b/src/main/kotlin/mods/betterfoliage/loader/BetterFoliageCore.kt @@ -5,6 +5,7 @@ import mods.octarinecore.metaprog.Transformer import mods.octarinecore.metaprog.allAvailable import net.minecraftforge.fml.relauncher.FMLLaunchHandler import net.minecraftforge.fml.relauncher.IFMLLoadingPlugin +import org.objectweb.asm.Opcodes import org.objectweb.asm.Opcodes.* @IFMLLoadingPlugin.TransformerExclusions( @@ -93,16 +94,16 @@ class BetterFoliageTransformer : Transformer() { transformMethod(Refs.rebuildChunk) { find(invokeRef(Refs.renderBlock))?.replace { log.info("Applying RenderChunk block render override") - varinsn(ALOAD, if (isOptifinePresent) 24 else 21) + varinsn(ALOAD, if (isOptifinePresent) 22 else 21) invokeStatic(Refs.renderWorldBlock) } if (isOptifinePresent) { - find(varinsn(ISTORE, 25))?.insertAfter { + find(varinsn(ISTORE, 23))?.insertAfter { log.info("Applying RenderChunk block layer override") - varinsn(ALOAD, 20) - varinsn(ALOAD, 24) + varinsn(ALOAD, 19) + varinsn(ALOAD, 22) invokeStatic(Refs.canRenderBlockInLayer) - varinsn(ISTORE, 25) + varinsn(ISTORE, 23) } } else { find(invokeRef(Refs.canRenderInLayer))?.replace { diff --git a/src/main/kotlin/mods/octarinecore/client/render/Shading.kt b/src/main/kotlin/mods/octarinecore/client/render/Shading.kt index daa84c6..a04d59f 100644 --- a/src/main/kotlin/mods/octarinecore/client/render/Shading.kt +++ b/src/main/kotlin/mods/octarinecore/client/render/Shading.kt @@ -1,6 +1,8 @@ package mods.octarinecore.client.render +import mods.betterfoliage.loader.Refs import mods.octarinecore.common.* +import mods.octarinecore.metaprog.allAvailable import net.minecraft.client.Minecraft import net.minecraft.client.renderer.BlockModelRenderer import net.minecraft.util.EnumFacing @@ -41,7 +43,11 @@ class AoData() { } class AoFaceData(val face: EnumFacing) { - val ao = BlockModelRenderer(Minecraft.getMinecraft().blockColors).AmbientOcclusionFace() + val ao = Refs.AmbientOcclusionFace.element!!.let { + if (allAvailable(Refs.OptifineClassTransformer)) it.getDeclaredConstructor().newInstance() + else it.getDeclaredConstructor(Refs.BlockModelRenderer.element!!) + .newInstance(BlockModelRenderer(Minecraft.getMinecraft().blockColors)) + } as BlockModelRenderer.AmbientOcclusionFace val top = faceCorners[face.ordinal].topLeft.first val left = faceCorners[face.ordinal].topLeft.second