diff --git a/src/main/kotlin/mods/octarinecore/client/render/ModelRenderer.kt b/src/main/kotlin/mods/octarinecore/client/render/ModelRenderer.kt index ec30e54..97d785c 100644 --- a/src/main/kotlin/mods/octarinecore/client/render/ModelRenderer.kt +++ b/src/main/kotlin/mods/octarinecore/client/render/ModelRenderer.kt @@ -1,12 +1,12 @@ package mods.octarinecore.client.render -import mods.octarinecore.client.resource.resourceManager import mods.octarinecore.common.* import net.minecraft.client.Minecraft import net.minecraft.client.renderer.WorldRenderer import net.minecraft.client.renderer.texture.TextureAtlasSprite import net.minecraft.util.EnumFacing import net.minecraft.util.EnumFacing.* +import java.lang.Math.max class ModelRenderer() : ShadingContext() { @@ -39,6 +39,9 @@ class ModelRenderer() : ShadingContext() { rotation = rot aoEnabled = Minecraft.isAmbientOcclusionEnabled() + // make sure we have space in the buffer for our quads plus one + worldRenderer.ensureSpaceForQuads(model.quads.size + 1) + model.quads.forEachIndexed { quadIdx, quad -> val drawIcon = icon(this, quadIdx, quad) if (drawIcon != null) { @@ -142,6 +145,13 @@ class RenderVertex() { } } +fun WorldRenderer.ensureSpaceForQuads(num: Int) { + rawIntBuffer.position(rawBufferIndex) + (num * vertexFormat.nextOffset).let { + if (it > rawIntBuffer.remaining()) growBuffer(max(it, 524288)) + } +} + val allFaces: (EnumFacing) -> Boolean = { true } val topOnly: (EnumFacing) -> Boolean = { it == UP } diff --git a/src/main/resources/META-INF/BetterFoliage_at.cfg b/src/main/resources/META-INF/BetterFoliage_at.cfg index 521cdff..d65bfa2 100644 --- a/src/main/resources/META-INF/BetterFoliage_at.cfg +++ b/src/main/resources/META-INF/BetterFoliage_at.cfg @@ -5,3 +5,7 @@ public net.minecraft.client.renderer.BlockModelRenderer$AmbientOcclusionFace fie public net.minecraft.client.resources.model.ModelBakery field_177610_k # blockModelShapes public net.minecraft.client.renderer.block.statemap.BlockStateMapper field_178450_a # blockStateMap + +public net.minecraft.client.renderer.WorldRenderer field_178999_b # rawIntBuffer +public net.minecraft.client.renderer.WorldRenderer func_178983_e(I)V # growBuffer +public net.minecraft.client.renderer.WorldRenderer field_179008_i # rawBufferIndex \ No newline at end of file