package mods.octarinecore import mods.betterfoliage.util.ClassRef import mods.betterfoliage.util.ClassRef.Companion.float import mods.betterfoliage.util.ClassRef.Companion.void import mods.betterfoliage.util.FieldRef import mods.betterfoliage.util.MethodRef import net.minecraft.block.Block import net.minecraft.block.BlockState import net.minecraft.client.renderer.BlockModelRenderer import net.minecraft.client.renderer.BlockRendererDispatcher import net.minecraft.client.renderer.BufferBuilder import net.minecraft.client.renderer.chunk.ChunkRenderCache import net.minecraft.client.renderer.model.BakedQuad import net.minecraft.client.renderer.model.IUnbakedModel import net.minecraft.client.renderer.model.ModelBakery import net.minecraft.client.renderer.texture.TextureAtlasSprite import net.minecraft.util.ResourceLocation import net.minecraft.util.math.BlockPos import net.minecraft.world.IBlockReader import net.minecraft.world.ILightReader import net.minecraftforge.client.model.pipeline.BlockInfo import net.minecraftforge.client.model.pipeline.VertexLighterFlat import java.util.* // Java val String = ClassRef("java.lang.String") val List = ClassRef>("java.util.List") val Random = ClassRef("java.util.Random") fun mapRef() = ClassRef>("java.util.Map") fun mapRefMutable() = ClassRef>("java.util.Map") // Minecraft val IBlockReader = ClassRef("net.minecraft.world.IBlockReader") val ILightReader = ClassRef("net.minecraft.world.ILightReader") val BlockState = ClassRef("net.minecraft.block.BlockState") val BlockPos = ClassRef("net.minecraft.util.math.BlockPos") val Block = ClassRef("net.minecraft.block.Block") val TextureAtlasSprite = ClassRef("net.minecraft.client.renderer.texture.TextureAtlasSprite") val BufferBuilder = ClassRef("net.minecraft.client.renderer.BufferBuilder") val BufferBuilder_setSprite = MethodRef(BufferBuilder, "setSprite", void, TextureAtlasSprite) val BufferBuilder_sVertexBuilder = FieldRef(BufferBuilder, "sVertexBuilder", SVertexBuilder) val BlockRendererDispatcher = ClassRef("net.minecraft.client.renderer.BlockRendererDispatcher") val ChunkRenderCache = ClassRef("net.minecraft.client.renderer.chunk.ChunkRenderCache") val ResourceLocation = ClassRef("net.minecraft.util.ResourceLocation") val BakedQuad = ClassRef("net.minecraft.client.renderer.model.BakedQuad") val BlockModelRenderer = ClassRef("net.minecraft.client.renderer.BlockModelRenderer") val VertexLighterFlat = ClassRef("net.minecraftforge.client.model.pipeline.VertexLighterFlat") val BlockInfo = ClassRef("net.minecraftforge.client.model.pipeline.BlockInfo") val VertexLighterFlat_blockInfo = FieldRef(VertexLighterFlat, "blockInfo", BlockInfo) val BlockInfo_shx = FieldRef(BlockInfo, "shx", float) val BlockInfo_shy = FieldRef(BlockInfo, "shy", float) val BlockInfo_shz = FieldRef(BlockInfo, "shz", float) object ModelBakery : ClassRef("net.minecraft.client.renderer.model.ModelBakery") { val unbakedModels = FieldRef(this, "unbakedModels", mapRefMutable()) val topUnbakedModels = FieldRef(this, "topUnbakedModels", mapRefMutable()) } // Optifine val OptifineClassTransformer = ClassRef("optifine.OptiFineClassTransformer") val BlockPosM = ClassRef("net.optifine.BlockPosM") object ChunkCacheOF : ClassRef("net.optifine.override.ChunkCacheOF") { val chunkCache = FieldRef(this, "chunkCache", ChunkRenderCache) } object RenderEnv : ClassRef("net.optifine.render.RenderEnv") { val reset = MethodRef(this, "reset", void, BlockState, BlockPos) } // Optifine custom colors val IColorizer = ClassRef("net.optifine.CustomColors\$IColorizer") object CustomColors : ClassRef("net.optifine.CustomColors") { val getColorMultiplier = MethodRef(this, "getColorMultiplier", int, BakedQuad, BlockState, ILightReader, BlockPos, RenderEnv) } // Optifine shaders object SVertexBuilder : ClassRef("net.optifine.shaders.SVertexBuilder") { val pushState = MethodRef(this, "pushEntity", void, long) val popState = MethodRef(this, "popEntity", void) } object BlockAliases : ClassRef("net.optifine.shaders.BlockAliases") { val getAliasBlockId = MethodRef(this, "getAliasBlockId", int, BlockState) }