From 3aa1c94c6a0cdc98eaf854ac1c58903edb9081d2 Mon Sep 17 00:00:00 2001 From: mcrcortex <18544518+MCRcortex@users.noreply.github.com> Date: Fri, 13 Jun 2025 14:49:03 +1000 Subject: [PATCH] inital 1.21.6 --- gradle.properties | 8 ++--- .../voxy/client/core/VoxyRenderSystem.java | 18 +---------- .../voxy/client/core/model/ModelFactory.java | 23 +++++++------- .../model/bakery/BakedBlockEntityModel.java | 17 ++++++++++- .../core/model/bakery/ModelTextureBakery.java | 30 +++++++++---------- .../core/rendering/util/LightMapHelper.java | 2 +- src/main/resources/voxy.accesswidener | 7 ++--- 7 files changed, 51 insertions(+), 54 deletions(-) diff --git a/gradle.properties b/gradle.properties index 61544893..cb3667bc 100644 --- a/gradle.properties +++ b/gradle.properties @@ -6,12 +6,12 @@ org.gradle.parallel=true # Fabric Properties # check these on https://modmuss50.me/fabric.html -minecraft_version=1.21.5 -yarn_mappings=1.21.5+build.1 -loader_version=0.16.10 +minecraft_version=1.21.6-rc1 +yarn_mappings=1.21.6-rc1+build.1 +loader_version=0.16.14 # Fabric API -fabric_version=0.119.5+1.21.5 +fabric_version=0.126.1+1.21.6 # Mod Properties mod_version = 0.2.0-alpha diff --git a/src/main/java/me/cortex/voxy/client/core/VoxyRenderSystem.java b/src/main/java/me/cortex/voxy/client/core/VoxyRenderSystem.java index 68be89ed..60d935dd 100644 --- a/src/main/java/me/cortex/voxy/client/core/VoxyRenderSystem.java +++ b/src/main/java/me/cortex/voxy/client/core/VoxyRenderSystem.java @@ -2,19 +2,15 @@ package me.cortex.voxy.client.core; import com.mojang.blaze3d.opengl.GlConst; import com.mojang.blaze3d.opengl.GlStateManager; -import com.mojang.blaze3d.systems.RenderSystem; import me.cortex.voxy.client.TimingStatistics; import me.cortex.voxy.client.VoxyClient; import me.cortex.voxy.client.config.VoxyConfig; import me.cortex.voxy.client.core.gl.Capabilities; import me.cortex.voxy.client.core.gl.GlBuffer; import me.cortex.voxy.client.core.gl.GlTexture; -import me.cortex.voxy.client.core.model.ModelBakerySubsystem; import me.cortex.voxy.client.core.rendering.ChunkBoundRenderer; import me.cortex.voxy.client.core.rendering.RenderDistanceTracker; import me.cortex.voxy.client.core.rendering.RenderService; -import me.cortex.voxy.client.core.rendering.building.RenderDataFactory; -import me.cortex.voxy.client.core.rendering.building.RenderGenerationService; import me.cortex.voxy.client.core.rendering.post.PostProcessing; import me.cortex.voxy.client.core.rendering.util.DownloadStream; import me.cortex.voxy.client.core.rendering.util.PrintfDebugUtil; @@ -24,31 +20,19 @@ import me.cortex.voxy.client.core.util.IrisUtil; import me.cortex.voxy.common.Logger; import me.cortex.voxy.common.thread.ServiceThreadPool; import me.cortex.voxy.common.world.WorldEngine; -import me.cortex.voxy.common.world.WorldSection; -import me.cortex.voxy.common.world.other.Mapper; -import me.cortex.voxy.commonImpl.VoxyCommon; import net.caffeinemc.mods.sodium.client.render.chunk.ChunkRenderMatrices; -import net.caffeinemc.mods.sodium.client.render.chunk.terrain.DefaultTerrainRenderPasses; import net.minecraft.client.MinecraftClient; -import net.minecraft.client.gl.GlBackend; import net.minecraft.client.render.Camera; import net.minecraft.client.render.Frustum; import org.joml.Matrix4f; import org.joml.Matrix4fc; import org.lwjgl.opengl.GL11; -import java.util.ArrayList; import java.util.List; -import java.util.Random; -import java.util.concurrent.atomic.AtomicInteger; -import static org.lwjgl.opengl.GL11.GL_ONE; -import static org.lwjgl.opengl.GL11.GL_ONE_MINUS_SRC_ALPHA; -import static org.lwjgl.opengl.GL11.GL_SRC_ALPHA; import static org.lwjgl.opengl.GL11.GL_VIEWPORT; import static org.lwjgl.opengl.GL11.glGetIntegerv; -import static org.lwjgl.opengl.GL11C.*; -import static org.lwjgl.opengl.GL14.glBlendFuncSeparate; +import static org.lwjgl.opengl.GL11C.glFinish; import static org.lwjgl.opengl.GL30C.GL_DRAW_FRAMEBUFFER_BINDING; import static org.lwjgl.opengl.GL30C.glBindFramebuffer; import static org.lwjgl.opengl.GL33.glBindSampler; diff --git a/src/main/java/me/cortex/voxy/client/core/model/ModelFactory.java b/src/main/java/me/cortex/voxy/client/core/model/ModelFactory.java index 5e9bbb55..c0731334 100644 --- a/src/main/java/me/cortex/voxy/client/core/model/ModelFactory.java +++ b/src/main/java/me/cortex/voxy/client/core/model/ModelFactory.java @@ -18,6 +18,7 @@ import net.minecraft.block.LeavesBlock; import net.minecraft.block.entity.BlockEntity; import net.minecraft.client.MinecraftClient; import net.minecraft.client.color.block.BlockColorProvider; +import net.minecraft.client.render.BlockRenderLayer; import net.minecraft.client.render.RenderLayer; import net.minecraft.client.render.RenderLayers; import net.minecraft.fluid.FluidState; @@ -256,19 +257,19 @@ public class ModelFactory { this.fluidStateLUT[modelId] = clientFluidStateId; } - RenderLayer blockRenderLayer = null; + BlockRenderLayer blockRenderLayer = null; if (blockState.getBlock() instanceof FluidBlock) { blockRenderLayer = RenderLayers.getFluidLayer(blockState.getFluidState()); } else { if (blockState.getBlock() instanceof LeavesBlock) { - blockRenderLayer = RenderLayer.getSolid(); + blockRenderLayer = BlockRenderLayer.SOLID; } else { blockRenderLayer = RenderLayers.getBlockLayer(blockState); } } - int checkMode = blockRenderLayer==RenderLayer.getSolid()?TextureUtils.WRITE_CHECK_STENCIL:TextureUtils.WRITE_CHECK_ALPHA; + int checkMode = blockRenderLayer==BlockRenderLayer.SOLID?TextureUtils.WRITE_CHECK_STENCIL:TextureUtils.WRITE_CHECK_ALPHA; if (Capabilities.INSTANCE.isMesa) { //Mesa does not work with GL_DEPTH_STENCIL_TEXTURE_MODE GL_STENCIL_INDEX @@ -339,7 +340,7 @@ public class ModelFactory { //Each face gets 1 byte, with the top 2 bytes being for whatever long metadata = 0; metadata |= isBiomeColourDependent?1:0; - metadata |= blockRenderLayer == RenderLayer.getTranslucent()?2:0; + metadata |= blockRenderLayer == BlockRenderLayer.TRANSLUCENT?2:0; metadata |= needsDoubleSidedQuads?4:0; metadata |= ((!isFluid) && !blockState.getFluidState().isEmpty())?8:0;//Has a fluid state accosiacted with it and is not itself a fluid metadata |= isFluid?16:0;//Is a fluid @@ -373,7 +374,7 @@ public class ModelFactory { //TODO: add alot of config options for the following boolean occludesFace = true; - occludesFace &= blockRenderLayer != RenderLayer.getTranslucent();//If its translucent, it doesnt occlude + occludesFace &= blockRenderLayer != BlockRenderLayer.TRANSLUCENT;//If its translucent, it doesnt occlude //TODO: make this an option, basicly if the face is really close, it occludes otherwise it doesnt occludesFace &= offset < 0.1;//If the face is rendered far away from the other face, then it doesnt occlude @@ -393,7 +394,7 @@ public class ModelFactory { metadata |= canBeOccluded?4:0; //Face uses its own lighting if its not flat against the adjacent block & isnt traslucent - metadata |= (offset > 0.01 || blockRenderLayer == RenderLayer.getTranslucent())?0b1000:0; + metadata |= (offset > 0.01 || blockRenderLayer == BlockRenderLayer.TRANSLUCENT)?0b1000:0; @@ -411,11 +412,11 @@ public class ModelFactory { int area = (faceSize[1]-faceSize[0]+1) * (faceSize[3]-faceSize[2]+1); boolean needsAlphaDiscard = ((float)writeCount)/area<0.9;//If the amount of area covered by written pixels is less than a threashold, disable discard as its not needed - needsAlphaDiscard |= blockRenderLayer != RenderLayer.getSolid(); - needsAlphaDiscard &= blockRenderLayer != RenderLayer.getTranslucent();//Translucent doesnt have alpha discard + needsAlphaDiscard |= blockRenderLayer != BlockRenderLayer.SOLID; + needsAlphaDiscard &= blockRenderLayer != BlockRenderLayer.TRANSLUCENT;//Translucent doesnt have alpha discard faceModelData |= needsAlphaDiscard?1<<22:0; - faceModelData |= ((!faceCoversFullBlock)&&blockRenderLayer != RenderLayer.getTranslucent())?1<<23:0;//Alpha discard override, translucency doesnt have alpha discard + faceModelData |= ((!faceCoversFullBlock)&&blockRenderLayer != BlockRenderLayer.TRANSLUCENT)?1<<23:0;//Alpha discard override, translucency doesnt have alpha discard @@ -435,8 +436,8 @@ public class ModelFactory { int modelFlags = 0; modelFlags |= colourProvider != null?1:0; modelFlags |= isBiomeColourDependent?2:0;//Basicly whether to use the next int as a colour or as a base index/id into a colour buffer for biome dependent colours - modelFlags |= blockRenderLayer == RenderLayer.getTranslucent()?4:0;//Is translucent - modelFlags |= blockRenderLayer == RenderLayer.getCutout()?0:8;//Dont use mipmaps (AND ALSO FKING SPECIFIES IF IT HAS AO, WHY??? GREAT QUESTION, TODO FIXE THIS) + modelFlags |= blockRenderLayer == BlockRenderLayer.TRANSLUCENT?4:0;//Is translucent + modelFlags |= blockRenderLayer == BlockRenderLayer.CUTOUT?0:8;//Dont use mipmaps (AND ALSO FKING SPECIFIES IF IT HAS AO, WHY??? GREAT QUESTION, TODO FIXE THIS) //modelFlags |= blockRenderLayer == RenderLayer.getSolid()?0:1;// should discard alpha MemoryUtil.memPutInt(uploadPtr, modelFlags); diff --git a/src/main/java/me/cortex/voxy/client/core/model/bakery/BakedBlockEntityModel.java b/src/main/java/me/cortex/voxy/client/core/model/bakery/BakedBlockEntityModel.java index ab622bcc..a0658b51 100644 --- a/src/main/java/me/cortex/voxy/client/core/model/bakery/BakedBlockEntityModel.java +++ b/src/main/java/me/cortex/voxy/client/core/model/bakery/BakedBlockEntityModel.java @@ -46,6 +46,21 @@ public class BakedBlockEntityModel { this.layers.forEach(layer->layer.consumer.free()); } + private static int getMetaFromLayer(RenderLayer layer) { + boolean hasDiscard = layer == RenderLayer.getCutout() || + layer == RenderLayer.getCutoutMipped() || + layer == RenderLayer.getTripwire(); + + boolean isMipped = layer == RenderLayer.getCutoutMipped() || + layer == RenderLayer.getSolid() || + layer.isTranslucent() || + layer == RenderLayer.getTripwire(); + + int meta = hasDiscard?1:0; + meta |= isMipped?2:0; + return meta; + } + public static BakedBlockEntityModel bake(BlockState state) { Map map = new HashMap<>(); var entity = ((BlockEntityProvider)state.getBlock()).createBlockEntity(BlockPos.ORIGIN, state); @@ -56,7 +71,7 @@ public class BakedBlockEntityModel { entity.setWorld(MinecraftClient.getInstance().world); if (renderer != null) { try { - renderer.render(entity, 0.0f, new MatrixStack(), layer->map.computeIfAbsent(layer, rl -> new LayerConsumer(rl, new ReuseVertexConsumer().setDefaultMeta(ModelTextureBakery.getMetaFromLayer(rl)))).consumer, 0, 0, new Vec3d(0,0,0)); + renderer.render(entity, 0.0f, new MatrixStack(), layer->map.computeIfAbsent(layer, rl -> new LayerConsumer(rl, new ReuseVertexConsumer().setDefaultMeta(getMetaFromLayer(rl)))).consumer, 0, 0, new Vec3d(0,0,0)); } catch (Exception e) { Logger.error("Unable to bake block entity: " + entity, e); } diff --git a/src/main/java/me/cortex/voxy/client/core/model/bakery/ModelTextureBakery.java b/src/main/java/me/cortex/voxy/client/core/model/bakery/ModelTextureBakery.java index 989aa1cc..905e9305 100644 --- a/src/main/java/me/cortex/voxy/client/core/model/bakery/ModelTextureBakery.java +++ b/src/main/java/me/cortex/voxy/client/core/model/bakery/ModelTextureBakery.java @@ -6,7 +6,7 @@ import net.minecraft.block.FluidBlock; import net.minecraft.block.LeavesBlock; import net.minecraft.block.entity.BlockEntity; import net.minecraft.client.MinecraftClient; -import net.minecraft.client.render.RenderLayer; +import net.minecraft.client.render.BlockRenderLayer; import net.minecraft.client.render.RenderLayers; import net.minecraft.client.util.math.MatrixStack; import net.minecraft.fluid.FluidState; @@ -43,22 +43,22 @@ public class ModelTextureBakery { this.height = height; } - public static int getMetaFromLayer(RenderLayer layer) { - boolean hasDiscard = layer == RenderLayer.getCutout() || - layer == RenderLayer.getCutoutMipped() || - layer == RenderLayer.getTripwire(); + public static int getMetaFromLayer(BlockRenderLayer layer) { + boolean hasDiscard = layer == BlockRenderLayer.CUTOUT || + layer == BlockRenderLayer.CUTOUT_MIPPED || + layer == BlockRenderLayer.TRIPWIRE; - boolean isMipped = layer == RenderLayer.getCutoutMipped() || - layer == RenderLayer.getSolid() || - layer == RenderLayer.getTranslucent() || - layer == RenderLayer.getTripwire(); + boolean isMipped = layer == BlockRenderLayer.CUTOUT_MIPPED || + layer == BlockRenderLayer.SOLID || + layer == BlockRenderLayer.TRANSLUCENT || + layer == BlockRenderLayer.TRIPWIRE; int meta = hasDiscard?1:0; meta |= isMipped?2:0; return meta; } - private void bakeBlockModel(BlockState state, RenderLayer layer) { + private void bakeBlockModel(BlockState state, BlockRenderLayer layer) { var model = MinecraftClient.getInstance() .getBakedModelManager() .getBlockModels() @@ -79,7 +79,7 @@ public class ModelTextureBakery { } - private void bakeFluidState(BlockState state, RenderLayer layer, int face) { + private void bakeFluidState(BlockState state, BlockRenderLayer layer, int face) { this.vc.setDefaultMeta(getMetaFromLayer(layer));//Set the meta while baking MinecraftClient.getInstance().getBlockRenderManager().renderFluid(BlockPos.ORIGIN, new BlockRenderView() { @Override @@ -163,13 +163,13 @@ public class ModelTextureBakery { public void renderToStream(BlockState state, int streamBuffer, int streamOffset) { this.capture.clear(); boolean isBlock = true; - RenderLayer layer; + BlockRenderLayer layer; if (state.getBlock() instanceof FluidBlock) { layer = RenderLayers.getFluidLayer(state.getFluidState()); isBlock = false; } else { if (state.getBlock() instanceof LeavesBlock) { - layer = RenderLayer.getSolid(); + layer = BlockRenderLayer.SOLID; } else { layer = RenderLayers.getBlockLayer(state); } @@ -189,7 +189,7 @@ public class ModelTextureBakery { glEnable(GL_STENCIL_TEST); glEnable(GL_DEPTH_TEST); glEnable(GL_CULL_FACE); - if (layer == RenderLayer.getTranslucent()) { + if (layer == BlockRenderLayer.TRANSLUCENT) { glEnable(GL_BLEND); glBlendFuncSeparate(GL_ONE_MINUS_DST_ALPHA, GL_DST_ALPHA, GL_ONE, GL_ONE_MINUS_SRC_ALPHA); } else { @@ -311,7 +311,7 @@ public class ModelTextureBakery { glBindFramebuffer(GL_FRAMEBUFFER, this.capture.framebuffer.id); glClearDepth(1); glClear(GL_DEPTH_BUFFER_BIT); - if (layer == RenderLayer.getTranslucent()) { + if (layer == BlockRenderLayer.TRANSLUCENT) { //reset the blend func GL14.glBlendFuncSeparate(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA, GL_ONE, GL_ONE_MINUS_SRC_ALPHA); } diff --git a/src/main/java/me/cortex/voxy/client/core/rendering/util/LightMapHelper.java b/src/main/java/me/cortex/voxy/client/core/rendering/util/LightMapHelper.java index 40f0df4d..fe05e7ab 100644 --- a/src/main/java/me/cortex/voxy/client/core/rendering/util/LightMapHelper.java +++ b/src/main/java/me/cortex/voxy/client/core/rendering/util/LightMapHelper.java @@ -15,6 +15,6 @@ import static org.lwjgl.opengl.GL45.glBindTextureUnit; public class LightMapHelper { public static void bind(int lightingIndex) { glBindSampler(lightingIndex, 0); - glBindTextureUnit(lightingIndex, ((net.minecraft.client.texture.GlTexture)(MinecraftClient.getInstance().gameRenderer.getLightmapTextureManager().getGlTexture())).getGlId()); + glBindTextureUnit(lightingIndex, ((net.minecraft.client.texture.GlTexture)(MinecraftClient.getInstance().gameRenderer.getLightmapTextureManager().getGlTextureView().texture())).getGlId()); } } \ No newline at end of file diff --git a/src/main/resources/voxy.accesswidener b/src/main/resources/voxy.accesswidener index ed15ee31..dd90cf30 100644 --- a/src/main/resources/voxy.accesswidener +++ b/src/main/resources/voxy.accesswidener @@ -6,9 +6,6 @@ accessible class net/minecraft/client/render/RenderLayer$MultiPhaseParameters accessible field net/minecraft/client/texture/SpriteContents image Lnet/minecraft/client/texture/NativeImage; accessible field net/minecraft/client/render/Frustum frustumIntersection Lorg/joml/FrustumIntersection; accessible field net/minecraft/client/color/block/BlockColors providers Lnet/minecraft/util/collection/IdList; -accessible field net/minecraft/client/render/GameRenderer zoomX F -accessible field net/minecraft/client/render/GameRenderer zoomY F -accessible field net/minecraft/client/render/GameRenderer zoom F accessible field net/minecraft/client/world/ClientWorld worldRenderer Lnet/minecraft/client/render/WorldRenderer; accessible field net/minecraft/world/biome/source/BiomeAccess seed J @@ -27,7 +24,7 @@ accessible field net/minecraft/world/chunk/PalettedContainer$Data palette Lnet/m accessible field net/minecraft/client/gl/GlGpuBuffer id I -accessible field net/minecraft/client/gl/GlResourceManager currentProgram Lnet/minecraft/client/gl/ShaderProgram; -accessible field net/minecraft/client/gl/GlResourceManager currentPipeline Lcom/mojang/blaze3d/pipeline/RenderPipeline; +accessible field net/minecraft/client/gl/GlCommandEncoder currentProgram Lnet/minecraft/client/gl/ShaderProgram; +accessible field net/minecraft/client/gl/GlCommandEncoder currentPipeline Lcom/mojang/blaze3d/pipeline/RenderPipeline; accessible class net/minecraft/client/gl/GlDebug$DebugMessage \ No newline at end of file