From fb078ab36581e1c925434e3a64939e6d82145c41 Mon Sep 17 00:00:00 2001 From: octarine-noise Date: Wed, 5 Jul 2017 15:17:23 +0200 Subject: [PATCH] port to MC 1.12 --- build.gradle | 8 +- .../mods/betterfoliage/BetterFoliageMod.kt | 15 ++-- .../mods/betterfoliage/client/Client.kt | 73 ++++++++++--------- .../kotlin/mods/betterfoliage/client/Hooks.kt | 8 +- .../client/gui/ConfigGuiFactory.kt | 13 ++-- .../integration/ShadersModIntegration.kt | 10 +-- .../client/render/AbstractRenderColumn.kt | 5 +- .../client/render/EntityFallingLeavesFX.kt | 5 +- .../client/render/EntityRisingSoulFX.kt | 4 +- .../client/render/RenderAlgae.kt | 4 +- .../client/render/RenderCactus.kt | 4 +- .../client/render/RenderConnectedGrass.kt | 4 +- .../client/render/RenderConnectedGrassLog.kt | 4 +- .../client/render/RenderCoral.kt | 4 +- .../client/render/RenderGrass.kt | 4 +- .../client/render/RenderLeaves.kt | 4 +- .../client/render/RenderLilypad.kt | 4 +- .../client/render/RenderMycelium.kt | 4 +- .../client/render/RenderNetherrack.kt | 4 +- .../client/render/RenderReeds.kt | 4 +- .../betterfoliage/loader/BetterFoliageCore.kt | 2 +- .../kotlin/mods/betterfoliage/loader/Refs.kt | 10 +-- .../client/gui/NonVerboseArrayEntry.kt | 2 +- .../render/AbstractBlockRenderingHandler.kt | 6 +- .../client/render/AbstractEntityFX.kt | 8 +- .../client/render/ModelRenderer.kt | 6 +- .../client/resource/ResourceGeneration.kt | 2 +- .../resources/META-INF/BetterFoliage_at.cfg | 6 +- 28 files changed, 120 insertions(+), 107 deletions(-) diff --git a/build.gradle b/build.gradle index c013cc8..54c4d12 100644 --- a/build.gradle +++ b/build.gradle @@ -3,7 +3,7 @@ apply plugin: 'kotlin' group = 'com.github.octarine-noise' version = "2.1.6" -archivesBaseName = rootProject.name + '-MC1.11.2' +archivesBaseName = rootProject.name + '-MC1.12' buildscript { ext.kotlin_version = '1.1.1' @@ -19,7 +19,7 @@ buildscript { } } dependencies { - classpath "net.minecraftforge.gradle:ForgeGradle:2.2-SNAPSHOT" + classpath "net.minecraftforge.gradle:ForgeGradle:2.3-SNAPSHOT" classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" } } @@ -32,8 +32,8 @@ dependencies { shade "org.jetbrains.kotlin:kotlin-reflect:$kotlin_version" } minecraft { - version = '1.11.2-13.20.0.2232' - mappings = 'snapshot_20161210' + version = '1.12-14.21.0.2373' + mappings = 'snapshot_20170626' runDir = 'run' } processResources { diff --git a/src/main/kotlin/mods/betterfoliage/BetterFoliageMod.kt b/src/main/kotlin/mods/betterfoliage/BetterFoliageMod.kt index 1759445..e687538 100644 --- a/src/main/kotlin/mods/betterfoliage/BetterFoliageMod.kt +++ b/src/main/kotlin/mods/betterfoliage/BetterFoliageMod.kt @@ -2,6 +2,7 @@ package mods.betterfoliage import mods.betterfoliage.client.Client import mods.betterfoliage.client.config.Config +import mods.betterfoliage.client.isAfterPostInit import net.minecraftforge.common.config.Configuration import net.minecraftforge.fml.common.FMLCommonHandler import net.minecraftforge.fml.common.Mod @@ -30,19 +31,23 @@ object BetterFoliageMod { const val MOD_NAME = "Better Foliage" const val DOMAIN = "betterfoliage" const val LEGACY_DOMAIN = "bettergrassandleaves" - const val MC_VERSIONS = "[1.11.2]" + const val MC_VERSIONS = "[1.12]" const val GUI_FACTORY = "mods.betterfoliage.client.gui.ConfigGuiFactory" lateinit var log: Logger lateinit var logDetail: Logger var config: Configuration? = null - var isAfterPostInit = false @JvmStatic @Mod.InstanceFactory // the fun never stops with the fun factory! :) - fun factory() = this + fun factory(): BetterFoliageMod { + // inject pack into default list at construction time to get domains enumerated + // there's no 2nd resource reload pass anymore + Client.generatorPack.inject() + return this + } @Mod.EventHandler fun preInit(event: FMLPreInitializationEvent) { @@ -61,12 +66,10 @@ object BetterFoliageMod { PrintStream(logDetailFile) ) config = Configuration(event.suggestedConfigurationFile, null, true) - } - @Mod.EventHandler - fun postInit(event: FMLPostInitializationEvent) { if (FMLCommonHandler.instance().effectiveSide == Side.CLIENT) { Config.attach(config!!) + Client.init() Client.log(INFO, "BetterFoliage initialized") isAfterPostInit = true } diff --git a/src/main/kotlin/mods/betterfoliage/client/Client.kt b/src/main/kotlin/mods/betterfoliage/client/Client.kt index c6b8461..191c32c 100644 --- a/src/main/kotlin/mods/betterfoliage/client/Client.kt +++ b/src/main/kotlin/mods/betterfoliage/client/Client.kt @@ -7,6 +7,7 @@ import mods.betterfoliage.client.render.* import mods.betterfoliage.client.texture.* import mods.octarinecore.client.KeyHandler import mods.octarinecore.client.gui.textComponent +import mods.octarinecore.client.render.AbstractBlockRenderingHandler import mods.octarinecore.client.resource.CenteringTextureGenerator import mods.octarinecore.client.resource.GeneratorPack import net.minecraft.block.Block @@ -31,12 +32,10 @@ import org.apache.logging.log4j.Level @SideOnly(Side.CLIENT) object Client { - val configKey = KeyHandler(BetterFoliageMod.MOD_NAME, 66, "key.betterfoliage.gui") { - FMLClientHandler.instance().showGuiScreen( - ConfigGuiFactory.ConfigGuiBetterFoliage(Minecraft.getMinecraft().currentScreen) - ) - } + lateinit var renderers: List + val suppressRenderErrors = mutableSetOf() + // texture generation stuff val genGrass = GrassGenerator("bf_gen_grass") val genLeaves = LeafGenerator("bf_gen_leaves") val genReeds = CenteringTextureGenerator("bf_gen_reeds", 1, 2) @@ -48,37 +47,45 @@ object Client { genReeds ) - val logRenderer = RenderLog() + fun init() { + // init renderers + renderers = listOf( + RenderGrass(), + RenderMycelium(), + RenderLeaves(), + RenderCactus(), + RenderLilypad(), + RenderReeds(), + RenderAlgae(), + RenderCoral(), + RenderLog(), + RenderNetherrack(), + RenderConnectedGrass(), + RenderConnectedGrassLog() + ) - val renderers = listOf( - RenderGrass(), - RenderMycelium(), - RenderLeaves(), - RenderCactus(), - RenderLilypad(), - RenderReeds(), - RenderAlgae(), - RenderCoral(), - logRenderer, - RenderNetherrack(), - RenderConnectedGrass(), - RenderConnectedGrassLog() - ) + // init singletons + val singletons = listOf( + LeafRegistry, + GrassRegistry, + LeafWindTracker, + RisingSoulTextures, + ShadersModIntegration, + OptifineCTM, + ForestryIntegration, + IC2Integration, + TechRebornIntegration, + StandardLogSupport // add _after_ all other log registries + ) - val singletons = listOf( - LeafRegistry, - GrassRegistry, - LeafWindTracker, - RisingSoulTextures, - ShadersModIntegration, - OptifineCTM, - ForestryIntegration, - IC2Integration, - TechRebornIntegration, - StandardLogSupport // add _after_ all other log registries - ) + // init config hotkey + val configKey = KeyHandler(BetterFoliageMod.MOD_NAME, 66, "key.betterfoliage.gui") { + FMLClientHandler.instance().showGuiScreen( + ConfigGuiFactory.createBFConfigGui(Minecraft.getMinecraft().currentScreen) + ) + } + } - val suppressRenderErrors = mutableSetOf() fun log(level: Level, msg: String) { BetterFoliageMod.log.log(level, "[BetterFoliage] $msg") diff --git a/src/main/kotlin/mods/betterfoliage/client/Hooks.kt b/src/main/kotlin/mods/betterfoliage/client/Hooks.kt index d255e21..7e9041e 100644 --- a/src/main/kotlin/mods/betterfoliage/client/Hooks.kt +++ b/src/main/kotlin/mods/betterfoliage/client/Hooks.kt @@ -11,7 +11,7 @@ import mods.octarinecore.common.plus import net.minecraft.block.Block import net.minecraft.block.state.IBlockState import net.minecraft.client.renderer.BlockRendererDispatcher -import net.minecraft.client.renderer.VertexBuffer +import net.minecraft.client.renderer.BufferBuilder import net.minecraft.init.Blocks import net.minecraft.util.BlockRenderLayer import net.minecraft.util.BlockRenderLayer.CUTOUT @@ -25,13 +25,15 @@ import net.minecraftforge.common.MinecraftForge import net.minecraftforge.fml.relauncher.Side import net.minecraftforge.fml.relauncher.SideOnly +var isAfterPostInit = false + fun doesSideBlockRenderingOverride(original: Boolean, blockAccess: IBlockAccess, pos: BlockPos, side: EnumFacing): Boolean { return original && !(Config.enabled && Config.roundLogs.enabled && Config.blocks.logClasses.matchesClass(blockAccess.getBlockState(pos).block)); } fun isOpaqueCubeOverride(original: Boolean, state: IBlockState): Boolean { // caution: blocks are initialized and the method called during startup - if (!BetterFoliageMod.isAfterPostInit) return original + if (!isAfterPostInit) return original return original && !(Config.enabled && Config.roundLogs.enabled && Config.blocks.logClasses.matchesClass(state.block)) } @@ -70,7 +72,7 @@ fun renderWorldBlock(dispatcher: BlockRendererDispatcher, state: IBlockState, pos: BlockPos, blockAccess: IBlockAccess, - worldRenderer: VertexBuffer, + worldRenderer: BufferBuilder, layer: BlockRenderLayer ): Boolean { blockContext.let { ctx -> diff --git a/src/main/kotlin/mods/betterfoliage/client/gui/ConfigGuiFactory.kt b/src/main/kotlin/mods/betterfoliage/client/gui/ConfigGuiFactory.kt index af1501a..7775fbe 100644 --- a/src/main/kotlin/mods/betterfoliage/client/gui/ConfigGuiFactory.kt +++ b/src/main/kotlin/mods/betterfoliage/client/gui/ConfigGuiFactory.kt @@ -9,12 +9,14 @@ import net.minecraftforge.fml.client.config.GuiConfig class ConfigGuiFactory : IModGuiFactory { - override fun mainConfigGuiClass() = ConfigGuiBetterFoliage::class.java - override fun runtimeGuiCategories() = hashSetOf() - override fun getHandlerFor(element: IModGuiFactory.RuntimeOptionCategoryElement?) = null override fun initialize(minecraftInstance: Minecraft?) { } + override fun hasConfigGui() = true + override fun runtimeGuiCategories() = hashSetOf() + override fun createConfigGui(parentScreen: GuiScreen?) = createBFConfigGui(parentScreen) - class ConfigGuiBetterFoliage(parentScreen: GuiScreen?) : GuiConfig( + companion object { + @JvmStatic + fun createBFConfigGui(parentScreen: GuiScreen?) = GuiConfig( parentScreen, Config.rootGuiElements, BetterFoliageMod.MOD_ID, @@ -22,5 +24,6 @@ class ConfigGuiFactory : IModGuiFactory { false, false, BetterFoliageMod.MOD_NAME - ) + ) + } } diff --git a/src/main/kotlin/mods/betterfoliage/client/integration/ShadersModIntegration.kt b/src/main/kotlin/mods/betterfoliage/client/integration/ShadersModIntegration.kt index 7c8e3b7..cea29bc 100644 --- a/src/main/kotlin/mods/betterfoliage/client/integration/ShadersModIntegration.kt +++ b/src/main/kotlin/mods/betterfoliage/client/integration/ShadersModIntegration.kt @@ -7,7 +7,7 @@ import mods.octarinecore.metaprog.allAvailable import net.minecraft.block.Block import net.minecraft.block.BlockTallGrass import net.minecraft.block.state.IBlockState -import net.minecraft.client.renderer.VertexBuffer +import net.minecraft.client.renderer.BufferBuilder import net.minecraft.init.Blocks import net.minecraftforge.fml.relauncher.Side import net.minecraftforge.fml.relauncher.SideOnly @@ -47,7 +47,7 @@ object ShadersModIntegration { } /** Quads rendered inside this block will use the given block entity data in shader programs. */ - inline fun renderAs(blockEntityData: Long, renderer: VertexBuffer, enabled: Boolean = true, func: ()->Unit) { + inline fun renderAs(blockEntityData: Long, renderer: BufferBuilder, enabled: Boolean = true, func: ()->Unit) { if ((isPresent && enabled)) { val vertexBuilder = Refs.sVertexBuilder.get(renderer)!! Refs.pushEntity_num.invoke(vertexBuilder, blockEntityData) @@ -59,14 +59,14 @@ object ShadersModIntegration { } /** Quads rendered inside this block will use the given block entity data in shader programs. */ - inline fun renderAs(state: IBlockState, renderer: VertexBuffer, enabled: Boolean = true, func: ()->Unit) = + inline fun renderAs(state: IBlockState, renderer: BufferBuilder, enabled: Boolean = true, func: ()->Unit) = renderAs(entityDataFor(state), renderer, enabled, func) /** Quads rendered inside this block will behave as tallgrass blocks in shader programs. */ - inline fun grass(renderer: VertexBuffer, enabled: Boolean = true, func: ()->Unit) = + inline fun grass(renderer: BufferBuilder, enabled: Boolean = true, func: ()->Unit) = renderAs(tallGrassEntityData, renderer, enabled, func) /** Quads rendered inside this block will behave as leaf blocks in shader programs. */ - inline fun leaves(renderer: VertexBuffer, enabled: Boolean = true, func: ()->Unit) = + inline fun leaves(renderer: BufferBuilder, enabled: Boolean = true, func: ()->Unit) = renderAs(leavesEntityData, renderer, enabled, func) } diff --git a/src/main/kotlin/mods/betterfoliage/client/render/AbstractRenderColumn.kt b/src/main/kotlin/mods/betterfoliage/client/render/AbstractRenderColumn.kt index 0ea7e7a..9469473 100644 --- a/src/main/kotlin/mods/betterfoliage/client/render/AbstractRenderColumn.kt +++ b/src/main/kotlin/mods/betterfoliage/client/render/AbstractRenderColumn.kt @@ -10,10 +10,9 @@ import mods.octarinecore.client.render.* import mods.octarinecore.common.* import net.minecraft.block.state.IBlockState import net.minecraft.client.renderer.BlockRendererDispatcher -import net.minecraft.client.renderer.VertexBuffer +import net.minecraft.client.renderer.BufferBuilder import net.minecraft.client.renderer.texture.TextureAtlasSprite import net.minecraft.util.BlockRenderLayer -import net.minecraft.util.EnumFacing import net.minecraft.util.EnumFacing.* import net.minecraftforge.fml.relauncher.Side import net.minecraftforge.fml.relauncher.SideOnly @@ -138,7 +137,7 @@ abstract class AbstractRenderColumn(modId: String) : AbstractBlockRenderingHandl abstract val registry: IColumnRegistry @Suppress("NON_EXHAUSTIVE_WHEN") - override fun render(ctx: BlockContext, dispatcher: BlockRendererDispatcher, renderer: VertexBuffer, layer: BlockRenderLayer): Boolean { + override fun render(ctx: BlockContext, dispatcher: BlockRendererDispatcher, renderer: BufferBuilder, layer: BlockRenderLayer): Boolean { if (ctx.isSurroundedBy(surroundPredicate) ) return false val columnTextures = registry[ctx.blockState(Int3.zero)] diff --git a/src/main/kotlin/mods/betterfoliage/client/render/EntityFallingLeavesFX.kt b/src/main/kotlin/mods/betterfoliage/client/render/EntityFallingLeavesFX.kt index be6f8e1..a118ea6 100644 --- a/src/main/kotlin/mods/betterfoliage/client/render/EntityFallingLeavesFX.kt +++ b/src/main/kotlin/mods/betterfoliage/client/render/EntityFallingLeavesFX.kt @@ -2,7 +2,6 @@ package mods.betterfoliage.client.render import mods.betterfoliage.client.config.Config import mods.betterfoliage.client.texture.LeafRegistry -import mods.betterfoliage.client.texture.defaultLeafColor import mods.octarinecore.PI2 import mods.octarinecore.client.render.AbstractEntityFX import mods.octarinecore.client.render.HSB @@ -10,7 +9,7 @@ import mods.octarinecore.common.Double3 import mods.octarinecore.minmax import mods.octarinecore.random import net.minecraft.client.Minecraft -import net.minecraft.client.renderer.VertexBuffer +import net.minecraft.client.renderer.BufferBuilder import net.minecraft.util.EnumFacing.DOWN import net.minecraft.util.math.BlockPos import net.minecraft.util.math.MathHelper @@ -74,7 +73,7 @@ AbstractEntityFX(world, pos.x.toDouble() + 0.5, pos.y.toDouble(), pos.z.toDouble } } - override fun render(worldRenderer: VertexBuffer, partialTickTime: Float) { + override fun render(worldRenderer: BufferBuilder, partialTickTime: Float) { if (Config.fallingLeaves.opacityHack) GL11.glDepthMask(true) renderParticleQuad(worldRenderer, partialTickTime, rotation = particleRot, isMirrored = isMirrored) } diff --git a/src/main/kotlin/mods/betterfoliage/client/render/EntityRisingSoulFX.kt b/src/main/kotlin/mods/betterfoliage/client/render/EntityRisingSoulFX.kt index e23f39f..2e556f0 100644 --- a/src/main/kotlin/mods/betterfoliage/client/render/EntityRisingSoulFX.kt +++ b/src/main/kotlin/mods/betterfoliage/client/render/EntityRisingSoulFX.kt @@ -7,7 +7,7 @@ import mods.octarinecore.client.render.AbstractEntityFX import mods.octarinecore.client.resource.ResourceHandler import mods.octarinecore.common.Double3 import mods.octarinecore.forEachPairIndexed -import net.minecraft.client.renderer.VertexBuffer +import net.minecraft.client.renderer.BufferBuilder import net.minecraft.util.math.BlockPos import net.minecraft.util.math.MathHelper import net.minecraft.world.World @@ -42,7 +42,7 @@ AbstractEntityFX(world, pos.x.toDouble() + 0.5, pos.y.toDouble() + 1.0, pos.z.to if (!Config.enabled) setExpired() } - override fun render(worldRenderer: VertexBuffer, partialTickTime: Float) { + override fun render(worldRenderer: BufferBuilder, partialTickTime: Float) { var alpha = Config.risingSoul.opacity if (particleAge > particleMaxAge - 40) alpha *= (particleMaxAge - particleAge) / 40.0f diff --git a/src/main/kotlin/mods/betterfoliage/client/render/RenderAlgae.kt b/src/main/kotlin/mods/betterfoliage/client/render/RenderAlgae.kt index c82f47d..81a0a92 100644 --- a/src/main/kotlin/mods/betterfoliage/client/render/RenderAlgae.kt +++ b/src/main/kotlin/mods/betterfoliage/client/render/RenderAlgae.kt @@ -9,7 +9,7 @@ import mods.octarinecore.common.Int3 import mods.octarinecore.common.Rotation import net.minecraft.block.material.Material import net.minecraft.client.renderer.BlockRendererDispatcher -import net.minecraft.client.renderer.VertexBuffer +import net.minecraft.client.renderer.BufferBuilder import net.minecraft.util.BlockRenderLayer import net.minecraftforge.fml.relauncher.Side import net.minecraftforge.fml.relauncher.SideOnly @@ -36,7 +36,7 @@ class RenderAlgae : AbstractBlockRenderingHandler(BetterFoliageMod.MOD_ID) { ctx.biomeId in Config.algae.biomes && noise[ctx.pos] < Config.algae.population - override fun render(ctx: BlockContext, dispatcher: BlockRendererDispatcher, renderer: VertexBuffer, layer: BlockRenderLayer): Boolean { + override fun render(ctx: BlockContext, dispatcher: BlockRendererDispatcher, renderer: BufferBuilder, layer: BlockRenderLayer): Boolean { val baseRender = renderWorldBlockBase(ctx, dispatcher, renderer, layer) if (!layer.isCutout) return baseRender diff --git a/src/main/kotlin/mods/betterfoliage/client/render/RenderCactus.kt b/src/main/kotlin/mods/betterfoliage/client/render/RenderCactus.kt index 9e95a8a..08fb719 100644 --- a/src/main/kotlin/mods/betterfoliage/client/render/RenderCactus.kt +++ b/src/main/kotlin/mods/betterfoliage/client/render/RenderCactus.kt @@ -13,7 +13,7 @@ import mods.octarinecore.common.config.modelTextures import net.minecraft.block.BlockCactus import net.minecraft.block.state.IBlockState import net.minecraft.client.renderer.BlockRendererDispatcher -import net.minecraft.client.renderer.VertexBuffer +import net.minecraft.client.renderer.BufferBuilder import net.minecraft.client.renderer.texture.TextureMap import net.minecraft.util.BlockRenderLayer import net.minecraft.util.EnumFacing.* @@ -92,7 +92,7 @@ class RenderCactus : AbstractBlockRenderingHandler(BetterFoliageMod.MOD_ID) { ctx.cameraDistance < Config.cactus.distance && Config.blocks.cactus.matchesClass(ctx.block) - override fun render(ctx: BlockContext, dispatcher: BlockRendererDispatcher, renderer: VertexBuffer, layer: BlockRenderLayer): Boolean { + override fun render(ctx: BlockContext, dispatcher: BlockRendererDispatcher, renderer: BufferBuilder, layer: BlockRenderLayer): Boolean { // render the whole block on the cutout layer if (!layer.isCutout) return false diff --git a/src/main/kotlin/mods/betterfoliage/client/render/RenderConnectedGrass.kt b/src/main/kotlin/mods/betterfoliage/client/render/RenderConnectedGrass.kt index e65795f..5484d36 100644 --- a/src/main/kotlin/mods/betterfoliage/client/render/RenderConnectedGrass.kt +++ b/src/main/kotlin/mods/betterfoliage/client/render/RenderConnectedGrass.kt @@ -9,7 +9,7 @@ import mods.octarinecore.common.Int3 import mods.octarinecore.common.forgeDirsHorizontal import mods.octarinecore.common.offset import net.minecraft.client.renderer.BlockRendererDispatcher -import net.minecraft.client.renderer.VertexBuffer +import net.minecraft.client.renderer.BufferBuilder import net.minecraft.util.BlockRenderLayer import net.minecraftforge.fml.relauncher.Side import net.minecraftforge.fml.relauncher.SideOnly @@ -22,7 +22,7 @@ class RenderConnectedGrass : AbstractBlockRenderingHandler(BetterFoliageMod.MOD_ Config.blocks.grassClasses.matchesClass(ctx.block(up1)) && (Config.connectedGrass.snowEnabled || !ctx.blockState(up2).isSnow) - override fun render(ctx: BlockContext, dispatcher: BlockRendererDispatcher, renderer: VertexBuffer, layer: BlockRenderLayer): Boolean { + override fun render(ctx: BlockContext, dispatcher: BlockRendererDispatcher, renderer: BufferBuilder, layer: BlockRenderLayer): Boolean { // if the block sides are not visible anyway, render normally if (forgeDirsHorizontal.all { ctx.blockState(it.offset).isOpaqueCube }) return renderWorldBlockBase(ctx, dispatcher, renderer, layer) diff --git a/src/main/kotlin/mods/betterfoliage/client/render/RenderConnectedGrassLog.kt b/src/main/kotlin/mods/betterfoliage/client/render/RenderConnectedGrassLog.kt index e3a40d1..b03f7fc 100644 --- a/src/main/kotlin/mods/betterfoliage/client/render/RenderConnectedGrassLog.kt +++ b/src/main/kotlin/mods/betterfoliage/client/render/RenderConnectedGrassLog.kt @@ -8,7 +8,7 @@ import mods.octarinecore.client.render.withOffset import mods.octarinecore.common.Int3 import mods.octarinecore.common.offset import net.minecraft.client.renderer.BlockRendererDispatcher -import net.minecraft.client.renderer.VertexBuffer +import net.minecraft.client.renderer.BufferBuilder import net.minecraft.util.BlockRenderLayer import net.minecraft.util.EnumFacing.* import net.minecraftforge.fml.relauncher.Side @@ -24,7 +24,7 @@ class RenderConnectedGrassLog : AbstractBlockRenderingHandler(BetterFoliageMod.M Config.blocks.dirt.matchesClass(ctx.block) && Config.blocks.logClasses.matchesClass(ctx.block(up1)) - override fun render(ctx: BlockContext, dispatcher: BlockRendererDispatcher, renderer: VertexBuffer, layer: BlockRenderLayer): Boolean { + override fun render(ctx: BlockContext, dispatcher: BlockRendererDispatcher, renderer: BufferBuilder, layer: BlockRenderLayer): Boolean { val grassDir = grassCheckDirs.find { Config.blocks.grassClasses.matchesClass(ctx.block(it.offset)) } diff --git a/src/main/kotlin/mods/betterfoliage/client/render/RenderCoral.kt b/src/main/kotlin/mods/betterfoliage/client/render/RenderCoral.kt index 9628dba..dfe05e1 100644 --- a/src/main/kotlin/mods/betterfoliage/client/render/RenderCoral.kt +++ b/src/main/kotlin/mods/betterfoliage/client/render/RenderCoral.kt @@ -10,7 +10,7 @@ import mods.octarinecore.common.forgeDirs import mods.octarinecore.random import net.minecraft.block.material.Material import net.minecraft.client.renderer.BlockRendererDispatcher -import net.minecraft.client.renderer.VertexBuffer +import net.minecraft.client.renderer.BufferBuilder import net.minecraft.util.BlockRenderLayer import net.minecraft.util.EnumFacing.Axis import net.minecraft.util.EnumFacing.UP @@ -54,7 +54,7 @@ class RenderCoral : AbstractBlockRenderingHandler(BetterFoliageMod.MOD_ID) { ctx.biomeId in Config.coral.biomes && noise[ctx.pos] < Config.coral.population - override fun render(ctx: BlockContext, dispatcher: BlockRendererDispatcher, renderer: VertexBuffer, layer: BlockRenderLayer): Boolean { + override fun render(ctx: BlockContext, dispatcher: BlockRendererDispatcher, renderer: BufferBuilder, layer: BlockRenderLayer): Boolean { val baseRender = renderWorldBlockBase(ctx, dispatcher, renderer, layer) if (!layer.isCutout) return baseRender diff --git a/src/main/kotlin/mods/betterfoliage/client/render/RenderGrass.kt b/src/main/kotlin/mods/betterfoliage/client/render/RenderGrass.kt index 8cb87f8..40ee10c 100644 --- a/src/main/kotlin/mods/betterfoliage/client/render/RenderGrass.kt +++ b/src/main/kotlin/mods/betterfoliage/client/render/RenderGrass.kt @@ -9,7 +9,7 @@ import mods.octarinecore.client.render.* import mods.octarinecore.common.* import mods.octarinecore.random import net.minecraft.client.renderer.BlockRendererDispatcher -import net.minecraft.client.renderer.VertexBuffer +import net.minecraft.client.renderer.BufferBuilder import net.minecraft.util.BlockRenderLayer import net.minecraft.util.EnumFacing.Axis import net.minecraft.util.EnumFacing.UP @@ -51,7 +51,7 @@ class RenderGrass : AbstractBlockRenderingHandler(BetterFoliageMod.MOD_ID) { (Config.shortGrass.grassEnabled || Config.connectedGrass.enabled) && GrassRegistry[ctx, UP] != null - override fun render(ctx: BlockContext, dispatcher: BlockRendererDispatcher, renderer: VertexBuffer, layer: BlockRenderLayer): Boolean { + override fun render(ctx: BlockContext, dispatcher: BlockRendererDispatcher, renderer: BufferBuilder, layer: BlockRenderLayer): Boolean { // render the whole block on the cutout layer if (!layer.isCutout) return false diff --git a/src/main/kotlin/mods/betterfoliage/client/render/RenderLeaves.kt b/src/main/kotlin/mods/betterfoliage/client/render/RenderLeaves.kt index d2526b3..ac96c91 100644 --- a/src/main/kotlin/mods/betterfoliage/client/render/RenderLeaves.kt +++ b/src/main/kotlin/mods/betterfoliage/client/render/RenderLeaves.kt @@ -14,7 +14,7 @@ import mods.octarinecore.common.vec import mods.octarinecore.random import net.minecraft.block.material.Material import net.minecraft.client.renderer.BlockRendererDispatcher -import net.minecraft.client.renderer.VertexBuffer +import net.minecraft.client.renderer.BufferBuilder import net.minecraft.util.BlockRenderLayer import net.minecraft.util.EnumFacing.DOWN import net.minecraft.util.EnumFacing.UP @@ -47,7 +47,7 @@ class RenderLeaves : AbstractBlockRenderingHandler(BetterFoliageMod.MOD_ID) { ctx.cameraDistance < Config.leaves.distance && LeafRegistry[ctx, DOWN] != null - override fun render(ctx: BlockContext, dispatcher: BlockRendererDispatcher, renderer: VertexBuffer, layer: BlockRenderLayer): Boolean { + override fun render(ctx: BlockContext, dispatcher: BlockRendererDispatcher, renderer: BufferBuilder, layer: BlockRenderLayer): Boolean { val isSnowed = ctx.blockState(up1).material.let { it == Material.SNOW || it == Material.CRAFTED_SNOW } diff --git a/src/main/kotlin/mods/betterfoliage/client/render/RenderLilypad.kt b/src/main/kotlin/mods/betterfoliage/client/render/RenderLilypad.kt index 03ba791..e623525 100644 --- a/src/main/kotlin/mods/betterfoliage/client/render/RenderLilypad.kt +++ b/src/main/kotlin/mods/betterfoliage/client/render/RenderLilypad.kt @@ -8,7 +8,7 @@ import mods.octarinecore.client.render.* import mods.octarinecore.common.Int3 import mods.octarinecore.common.Rotation import net.minecraft.client.renderer.BlockRendererDispatcher -import net.minecraft.client.renderer.VertexBuffer +import net.minecraft.client.renderer.BufferBuilder import net.minecraft.util.BlockRenderLayer import net.minecraft.util.EnumFacing.DOWN import net.minecraft.util.EnumFacing.UP @@ -44,7 +44,7 @@ class RenderLilypad : AbstractBlockRenderingHandler(BetterFoliageMod.MOD_ID) { ctx.cameraDistance < Config.lilypad.distance && Config.blocks.lilypad.matchesClass(ctx.block) - override fun render(ctx: BlockContext, dispatcher: BlockRendererDispatcher, renderer: VertexBuffer, layer: BlockRenderLayer): Boolean { + override fun render(ctx: BlockContext, dispatcher: BlockRendererDispatcher, renderer: BufferBuilder, layer: BlockRenderLayer): Boolean { // render the whole block on the cutout layer if (!layer.isCutout) return false diff --git a/src/main/kotlin/mods/betterfoliage/client/render/RenderMycelium.kt b/src/main/kotlin/mods/betterfoliage/client/render/RenderMycelium.kt index 3608eb0..20d9be0 100644 --- a/src/main/kotlin/mods/betterfoliage/client/render/RenderMycelium.kt +++ b/src/main/kotlin/mods/betterfoliage/client/render/RenderMycelium.kt @@ -10,7 +10,7 @@ import mods.octarinecore.client.render.noPost import mods.octarinecore.common.Double3 import mods.octarinecore.common.Rotation import net.minecraft.client.renderer.BlockRendererDispatcher -import net.minecraft.client.renderer.VertexBuffer +import net.minecraft.client.renderer.BufferBuilder import net.minecraft.init.Blocks import net.minecraft.util.BlockRenderLayer import net.minecraftforge.fml.relauncher.Side @@ -33,7 +33,7 @@ class RenderMycelium : AbstractBlockRenderingHandler(BetterFoliageMod.MOD_ID) { ctx.cameraDistance < Config.shortGrass.distance } - override fun render(ctx: BlockContext, dispatcher: BlockRendererDispatcher, renderer: VertexBuffer, layer: BlockRenderLayer): Boolean { + override fun render(ctx: BlockContext, dispatcher: BlockRendererDispatcher, renderer: BufferBuilder, layer: BlockRenderLayer): Boolean { // render the whole block on the cutout layer if (!layer.isCutout) return false diff --git a/src/main/kotlin/mods/betterfoliage/client/render/RenderNetherrack.kt b/src/main/kotlin/mods/betterfoliage/client/render/RenderNetherrack.kt index 880b7d8..2959914 100644 --- a/src/main/kotlin/mods/betterfoliage/client/render/RenderNetherrack.kt +++ b/src/main/kotlin/mods/betterfoliage/client/render/RenderNetherrack.kt @@ -8,7 +8,7 @@ import mods.octarinecore.common.Int3 import mods.octarinecore.common.Rotation import mods.octarinecore.random import net.minecraft.client.renderer.BlockRendererDispatcher -import net.minecraft.client.renderer.VertexBuffer +import net.minecraft.client.renderer.BufferBuilder import net.minecraft.init.Blocks import net.minecraft.util.BlockRenderLayer import net.minecraft.util.EnumFacing.* @@ -39,7 +39,7 @@ class RenderNetherrack : AbstractBlockRenderingHandler(BetterFoliageMod.MOD_ID) ctx.cameraDistance < Config.netherrack.distance } - override fun render(ctx: BlockContext, dispatcher: BlockRendererDispatcher, renderer: VertexBuffer, layer: BlockRenderLayer): Boolean { + override fun render(ctx: BlockContext, dispatcher: BlockRendererDispatcher, renderer: BufferBuilder, layer: BlockRenderLayer): Boolean { val baseRender = renderWorldBlockBase(ctx, dispatcher, renderer, layer) if (!layer.isCutout) return baseRender diff --git a/src/main/kotlin/mods/betterfoliage/client/render/RenderReeds.kt b/src/main/kotlin/mods/betterfoliage/client/render/RenderReeds.kt index 9d26229..c421931 100644 --- a/src/main/kotlin/mods/betterfoliage/client/render/RenderReeds.kt +++ b/src/main/kotlin/mods/betterfoliage/client/render/RenderReeds.kt @@ -10,7 +10,7 @@ import mods.octarinecore.common.Rotation import mods.octarinecore.random import net.minecraft.block.material.Material import net.minecraft.client.renderer.BlockRendererDispatcher -import net.minecraft.client.renderer.VertexBuffer +import net.minecraft.client.renderer.BufferBuilder import net.minecraft.util.BlockRenderLayer import net.minecraft.util.EnumFacing.UP import net.minecraftforge.fml.relauncher.Side @@ -53,7 +53,7 @@ class RenderReeds : AbstractBlockRenderingHandler(BetterFoliageMod.MOD_ID) { ctx.biomeId in Config.reed.biomes && noise[ctx.pos] < Config.reed.population - override fun render(ctx: BlockContext, dispatcher: BlockRendererDispatcher, renderer: VertexBuffer, layer: BlockRenderLayer): Boolean { + override fun render(ctx: BlockContext, dispatcher: BlockRendererDispatcher, renderer: BufferBuilder, layer: BlockRenderLayer): Boolean { val baseRender = renderWorldBlockBase(ctx, dispatcher, renderer, layer) if (!layer.isCutout) return baseRender diff --git a/src/main/kotlin/mods/betterfoliage/loader/BetterFoliageCore.kt b/src/main/kotlin/mods/betterfoliage/loader/BetterFoliageCore.kt index 8cc8645..b1c65a0 100644 --- a/src/main/kotlin/mods/betterfoliage/loader/BetterFoliageCore.kt +++ b/src/main/kotlin/mods/betterfoliage/loader/BetterFoliageCore.kt @@ -13,7 +13,7 @@ import org.objectweb.asm.Opcodes.* "kotlin", "mods.octarinecore.kotlin" ) -@IFMLLoadingPlugin.MCVersion("1.11.2") +@IFMLLoadingPlugin.MCVersion("1.12") @IFMLLoadingPlugin.SortingIndex(1400) class BetterFoliageLoader : ASMPlugin(BetterFoliageTransformer::class.java) diff --git a/src/main/kotlin/mods/betterfoliage/loader/Refs.kt b/src/main/kotlin/mods/betterfoliage/loader/Refs.kt index a5de296..2d60147 100644 --- a/src/main/kotlin/mods/betterfoliage/loader/Refs.kt +++ b/src/main/kotlin/mods/betterfoliage/loader/Refs.kt @@ -40,14 +40,14 @@ object Refs { val BlockModelRenderer = ClassRef("net.minecraft.client.renderer.BlockModelRenderer") val AmbientOcclusionFace = ClassRef("net.minecraft.client.renderer.BlockModelRenderer\$AmbientOcclusionFace") val ChunkCompileTaskGenerator = ClassRef("net.minecraft.client.renderer.chunk.ChunkCompileTaskGenerator") - val VertexBuffer = ClassRef("net.minecraft.client.renderer.VertexBuffer") + val BufferBuilder = ClassRef("net.minecraft.client.renderer.BufferBuilder") val AOF_constructor = MethodRef(AmbientOcclusionFace, "", ClassRef.void, BlockModelRenderer) val RenderChunk = ClassRef("net.minecraft.client.renderer.chunk.RenderChunk") val rebuildChunk = MethodRef(RenderChunk, "rebuildChunk", "func_178581_b", ClassRef.void, ClassRef.float, ClassRef.float, ClassRef.float, ChunkCompileTaskGenerator) val BlockRendererDispatcher = ClassRef("net.minecraft.client.renderer.BlockRendererDispatcher") - val renderBlock = MethodRef(BlockRendererDispatcher, "renderBlock", "func_175018_a", ClassRef.boolean, IBlockState, BlockPos, IBlockAccess, VertexBuffer) + val renderBlock = MethodRef(BlockRendererDispatcher, "renderBlock", "func_175018_a", ClassRef.boolean, IBlockState, BlockPos, IBlockAccess, BufferBuilder) val TextureAtlasSprite = ClassRef("net.minecraft.client.renderer.texture.TextureAtlasSprite") @@ -81,7 +81,7 @@ object Refs { val onRandomDisplayTick = MethodRef(BetterFoliageHooks, "onRandomDisplayTick", ClassRef.void, World, IBlockState, BlockPos) val onAfterLoadModelDefinitions = MethodRef(BetterFoliageHooks, "onAfterLoadModelDefinitions", ClassRef.void, ModelLoader) val onAfterBakeModels = MethodRef(BetterFoliageHooks, "onAfterBakeModels", ClassRef.void, Map) - val renderWorldBlock = MethodRef(BetterFoliageHooks, "renderWorldBlock", ClassRef.boolean, BlockRendererDispatcher, IBlockState, BlockPos, IBlockAccess, VertexBuffer, BlockRenderLayer) + val renderWorldBlock = MethodRef(BetterFoliageHooks, "renderWorldBlock", ClassRef.boolean, BlockRendererDispatcher, IBlockState, BlockPos, IBlockAccess, BufferBuilder, BlockRenderLayer) val canRenderBlockInLayer = MethodRef(BetterFoliageHooks, "canRenderBlockInLayer", ClassRef.boolean, Block, IBlockState, BlockRenderLayer) // Optifine @@ -104,8 +104,8 @@ object Refs { // ShadersMod val SVertexBuilder = ClassRef("shadersmod.client.SVertexBuilder") - val sVertexBuilder = FieldRef(VertexBuffer, "sVertexBuilder", SVertexBuilder) - val pushEntity_state = MethodRef(SVertexBuilder, "pushEntity", ClassRef.void, IBlockState, BlockPos, IBlockAccess, VertexBuffer) + val sVertexBuilder = FieldRef(BufferBuilder, "sVertexBuilder", SVertexBuilder) + val pushEntity_state = MethodRef(SVertexBuilder, "pushEntity", ClassRef.void, IBlockState, BlockPos, IBlockAccess, BufferBuilder) val pushEntity_num = MethodRef(SVertexBuilder, "pushEntity", ClassRef.void, ClassRef.long) val popEntity = MethodRef(SVertexBuilder, "popEntity", ClassRef.void) diff --git a/src/main/kotlin/mods/octarinecore/client/gui/NonVerboseArrayEntry.kt b/src/main/kotlin/mods/octarinecore/client/gui/NonVerboseArrayEntry.kt index 0b935f2..3cddf60 100644 --- a/src/main/kotlin/mods/octarinecore/client/gui/NonVerboseArrayEntry.kt +++ b/src/main/kotlin/mods/octarinecore/client/gui/NonVerboseArrayEntry.kt @@ -15,7 +15,7 @@ class NonVerboseArrayEntry( init { stripTooltipDefaultText(toolTip as MutableList) val shortDefaults = I18n.format("${configElement.languageKey}.arrayEntry", configElement.defaults.size) - toolTip.addAll(mc.fontRendererObj.listFormattedStringToWidth("$AQUA${I18n.format("fml.configgui.tooltip.default", shortDefaults)}", 300)) + toolTip.addAll(mc.fontRenderer.listFormattedStringToWidth("$AQUA${I18n.format("fml.configgui.tooltip.default", shortDefaults)}", 300)) } override fun updateValueButtonText() { diff --git a/src/main/kotlin/mods/octarinecore/client/render/AbstractBlockRenderingHandler.kt b/src/main/kotlin/mods/octarinecore/client/render/AbstractBlockRenderingHandler.kt index 86d8210..2a3fef0 100644 --- a/src/main/kotlin/mods/octarinecore/client/render/AbstractBlockRenderingHandler.kt +++ b/src/main/kotlin/mods/octarinecore/client/render/AbstractBlockRenderingHandler.kt @@ -11,7 +11,7 @@ import net.minecraft.block.Block import net.minecraft.block.state.IBlockState import net.minecraft.client.Minecraft import net.minecraft.client.renderer.BlockRendererDispatcher -import net.minecraft.client.renderer.VertexBuffer +import net.minecraft.client.renderer.BufferBuilder import net.minecraft.client.renderer.color.BlockColors import net.minecraft.util.BlockRenderLayer import net.minecraft.util.math.BlockPos @@ -39,7 +39,7 @@ abstract class AbstractBlockRenderingHandler(modId: String) : ResourceHandler(mo // Custom rendering // ============================ abstract fun isEligible(ctx: BlockContext): Boolean - abstract fun render(ctx: BlockContext, dispatcher: BlockRendererDispatcher, renderer: VertexBuffer, layer: BlockRenderLayer): Boolean + abstract fun render(ctx: BlockContext, dispatcher: BlockRendererDispatcher, renderer: BufferBuilder, layer: BlockRenderLayer): Boolean // ============================ // Vanilla rendering wrapper @@ -47,7 +47,7 @@ abstract class AbstractBlockRenderingHandler(modId: String) : ResourceHandler(mo /** * Render the block in the current [BlockContext] */ - fun renderWorldBlockBase(ctx: BlockContext, dispatcher: BlockRendererDispatcher, renderer: VertexBuffer, layer: BlockRenderLayer?): Boolean { + fun renderWorldBlockBase(ctx: BlockContext, dispatcher: BlockRendererDispatcher, renderer: BufferBuilder, layer: BlockRenderLayer?): Boolean { ctx.blockState(Int3.zero).let { state -> if (layer == null || state.block.canRenderInLayer(state, layer)) return dispatcher.renderBlock(state, ctx.pos, ctx.world, renderer) diff --git a/src/main/kotlin/mods/octarinecore/client/render/AbstractEntityFX.kt b/src/main/kotlin/mods/octarinecore/client/render/AbstractEntityFX.kt index 45d1ba9..579deae 100644 --- a/src/main/kotlin/mods/octarinecore/client/render/AbstractEntityFX.kt +++ b/src/main/kotlin/mods/octarinecore/client/render/AbstractEntityFX.kt @@ -4,7 +4,7 @@ import mods.octarinecore.PI2 import mods.octarinecore.common.Double3 import net.minecraft.client.Minecraft import net.minecraft.client.particle.Particle -import net.minecraft.client.renderer.VertexBuffer +import net.minecraft.client.renderer.BufferBuilder import net.minecraft.client.renderer.texture.TextureAtlasSprite import net.minecraft.entity.Entity import net.minecraft.world.World @@ -32,7 +32,7 @@ abstract class AbstractEntityFX(world: World, x: Double, y: Double, z: Double) : } /** Render the particle. */ - abstract fun render(worldRenderer: VertexBuffer, partialTickTime: Float) + abstract fun render(worldRenderer: BufferBuilder, partialTickTime: Float) /** Update particle on world tick. */ abstract fun update() @@ -43,7 +43,7 @@ abstract class AbstractEntityFX(world: World, x: Double, y: Double, z: Double) : /** Add the particle to the effect renderer if it is valid. */ fun addIfValid() { if (isValid) Minecraft.getMinecraft().effectRenderer.addEffect(this) } - override fun renderParticle(worldRenderer: VertexBuffer, entity: Entity, partialTickTime: Float, rotX: Float, rotZ: Float, rotYZ: Float, rotXY: Float, rotXZ: Float) { + override fun renderParticle(worldRenderer: BufferBuilder, entity: Entity, partialTickTime: Float, rotX: Float, rotZ: Float, rotYZ: Float, rotXY: Float, rotXZ: Float) { billboardRot.first.setTo(rotX + rotXY, rotZ, rotYZ + rotXZ) billboardRot.second.setTo(rotX - rotXY, -rotZ, rotYZ - rotXZ) render(worldRenderer, partialTickTime) @@ -61,7 +61,7 @@ abstract class AbstractEntityFX(world: World, x: Double, y: Double, z: Double) : * @param[isMirrored] mirror particle texture along V-axis * @param[alpha] aplha blending */ - fun renderParticleQuad(worldRenderer: VertexBuffer, + fun renderParticleQuad(worldRenderer: BufferBuilder, partialTickTime: Float, currentPos: Double3 = this.currentPos, prevPos: Double3 = this.prevPos, diff --git a/src/main/kotlin/mods/octarinecore/client/render/ModelRenderer.kt b/src/main/kotlin/mods/octarinecore/client/render/ModelRenderer.kt index 98b31ff..6993fe7 100644 --- a/src/main/kotlin/mods/octarinecore/client/render/ModelRenderer.kt +++ b/src/main/kotlin/mods/octarinecore/client/render/ModelRenderer.kt @@ -2,7 +2,7 @@ package mods.octarinecore.client.render import mods.octarinecore.common.* import net.minecraft.client.Minecraft -import net.minecraft.client.renderer.VertexBuffer +import net.minecraft.client.renderer.BufferBuilder import net.minecraft.client.renderer.texture.TextureAtlasSprite import net.minecraft.util.EnumFacing import net.minecraft.util.EnumFacing.* @@ -29,7 +29,7 @@ class ModelRenderer : ShadingContext() { * @param[postProcess] lambda to perform arbitrary modifications on the [RenderVertex] just before it goes to the [Tessellator] */ fun render( - worldRenderer: VertexBuffer, + worldRenderer: BufferBuilder, model: Model, rot: Rotation = Rotation.identity, trans: Double3 = blockContext.blockCenter, @@ -164,7 +164,7 @@ class RenderVertex() { } -fun VertexBuffer.ensureSpaceForQuads(num: Int) { +fun BufferBuilder.ensureSpaceForQuads(num: Int) { rawIntBuffer.position(bufferSize) growBuffer(num * vertexFormat.nextOffset) } diff --git a/src/main/kotlin/mods/octarinecore/client/resource/ResourceGeneration.kt b/src/main/kotlin/mods/octarinecore/client/resource/ResourceGeneration.kt index 1f73870..02d75be 100644 --- a/src/main/kotlin/mods/octarinecore/client/resource/ResourceGeneration.kt +++ b/src/main/kotlin/mods/octarinecore/client/resource/ResourceGeneration.kt @@ -21,7 +21,7 @@ import java.util.* */ class GeneratorPack(val name: String, vararg val generators: GeneratorBase) : IResourcePack { - init { + fun inject() { FMLClientHandler.instance().reflectField>("resourcePackList")!!.add(this) } diff --git a/src/main/resources/META-INF/BetterFoliage_at.cfg b/src/main/resources/META-INF/BetterFoliage_at.cfg index a4f00d3..47787ed 100644 --- a/src/main/resources/META-INF/BetterFoliage_at.cfg +++ b/src/main/resources/META-INF/BetterFoliage_at.cfg @@ -6,8 +6,8 @@ public net.minecraft.client.renderer.block.model.ModelBakery field_177610_k # bl public net.minecraft.client.renderer.block.statemap.BlockStateMapper field_178450_a # blockStateMap -public net.minecraft.client.renderer.VertexBuffer field_178999_b # rawIntBuffer -public net.minecraft.client.renderer.VertexBuffer func_181670_b(I)V # growBuffer -public net.minecraft.client.renderer.VertexBuffer func_181664_j()I # getBufferSize +public net.minecraft.client.renderer.BufferBuilder field_178999_b # rawIntBuffer +public net.minecraft.client.renderer.BufferBuilder func_181670_b(I)V # growBuffer +public net.minecraft.client.renderer.BufferBuilder func_181664_j()I # getBufferSize public net.minecraft.client.renderer.BlockModelRenderer field_187499_a # blockColors \ No newline at end of file