fix crash with OptiFine 1.9 (pre A series)

bump to 2.0.5
This commit is contained in:
octarine-noise
2016-03-26 09:28:54 +01:00
parent f47aedf84d
commit 6d5c03ba6a
3 changed files with 16 additions and 9 deletions

View File

@@ -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'
}

View File

@@ -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 {

View File

@@ -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