From e348f8fa6d31cfdda0131e9218266a5a9da34704 Mon Sep 17 00:00:00 2001 From: gnembon Date: Thu, 12 Feb 2026 15:03:16 +0100 Subject: [PATCH] 26.1-snap-7 --- gradle.properties | 4 +-- .../LevelRenderer_creativeNoClipMixin.java | 2 +- .../mixins/LevelRenderer_fogOffMixin.java | 9 +++---- .../LevelRenderer_scarpetRenderMixin.java | 7 ++--- .../mixins/MinecraftServer_scarpetMixin.java | 5 ++-- .../MinecraftServer_tickspeedMixin.java | 9 ++++--- .../carpet/script/utils/ShapesRenderer.java | 26 ++++++++----------- 7 files changed, 29 insertions(+), 33 deletions(-) diff --git a/gradle.properties b/gradle.properties index bec1edac..f6cb7227 100644 --- a/gradle.properties +++ b/gradle.properties @@ -7,9 +7,9 @@ org.gradle.configuration-cache=false # Fabric Properties # check https://fabricmc.net/develop/ - minecraft_version=26.1-snapshot-6 + minecraft_version=26.1-snapshot-7 loader_version=0.18.4 - loom_version=1.14-SNAPSHOT + loom_version=1.15-SNAPSHOT # Mod Properties mod_version = 26.1-beta-5 diff --git a/src/main/java/carpet/mixins/LevelRenderer_creativeNoClipMixin.java b/src/main/java/carpet/mixins/LevelRenderer_creativeNoClipMixin.java index a281c7ac..30831a8b 100644 --- a/src/main/java/carpet/mixins/LevelRenderer_creativeNoClipMixin.java +++ b/src/main/java/carpet/mixins/LevelRenderer_creativeNoClipMixin.java @@ -10,7 +10,7 @@ import org.spongepowered.asm.mixin.injection.Redirect; @Mixin(LevelRenderer.class) public class LevelRenderer_creativeNoClipMixin { - @Redirect(method = "renderLevel", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/player/LocalPlayer;isSpectator()Z")) + @Redirect(method = "update", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/player/LocalPlayer;isSpectator()Z")) private boolean canSeeWorld(LocalPlayer clientPlayerEntity) { return clientPlayerEntity.isSpectator() || (CarpetSettings.creativeNoClip && clientPlayerEntity.isCreative()); diff --git a/src/main/java/carpet/mixins/LevelRenderer_fogOffMixin.java b/src/main/java/carpet/mixins/LevelRenderer_fogOffMixin.java index 8a22e8a7..88f3ea9c 100644 --- a/src/main/java/carpet/mixins/LevelRenderer_fogOffMixin.java +++ b/src/main/java/carpet/mixins/LevelRenderer_fogOffMixin.java @@ -1,24 +1,23 @@ package carpet.mixins; import carpet.CarpetSettings; -import net.minecraft.client.renderer.GameRenderer; -//import net.minecraft.world.dimension.Dimension; +import net.minecraft.client.renderer.fog.environment.AtmosphericFogEnvironment; import net.minecraft.world.attribute.EnvironmentAttribute; import net.minecraft.world.attribute.EnvironmentAttributeProbe; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Redirect; -@Mixin(value = GameRenderer.class, priority = 69420) +@Mixin(value = AtmosphericFogEnvironment.class, priority = 69420) public class LevelRenderer_fogOffMixin { - @Redirect(method = "renderLevel", require = 0, expect = 0, at = @At( + @Redirect(method = "setupFog", require = 0, expect = 0, at = @At( value = "INVOKE", target = "Lnet/minecraft/world/attribute/EnvironmentAttributeProbe;getValue(Lnet/minecraft/world/attribute/EnvironmentAttribute;F)Ljava/lang/Object;" )) private Value isReallyThick(EnvironmentAttributeProbe instance, EnvironmentAttribute environmentAttribute, float f) { - if (CarpetSettings.fogOff) return (Value) Boolean.FALSE; + if (CarpetSettings.fogOff) return environmentAttribute.defaultValue(); return instance.getValue(environmentAttribute, f); } diff --git a/src/main/java/carpet/mixins/LevelRenderer_scarpetRenderMixin.java b/src/main/java/carpet/mixins/LevelRenderer_scarpetRenderMixin.java index 6b086080..43876e78 100644 --- a/src/main/java/carpet/mixins/LevelRenderer_scarpetRenderMixin.java +++ b/src/main/java/carpet/mixins/LevelRenderer_scarpetRenderMixin.java @@ -7,15 +7,16 @@ import com.mojang.blaze3d.buffers.GpuBufferSlice; import com.mojang.blaze3d.framegraph.FrameGraphBuilder; import com.mojang.blaze3d.framegraph.FramePass; import com.mojang.blaze3d.resource.GraphicsResourceAllocator; -import net.minecraft.client.Camera; import net.minecraft.client.DeltaTracker; import net.minecraft.client.Minecraft; import net.minecraft.client.renderer.LevelRenderer; import net.minecraft.client.renderer.LevelTargetBundle; import net.minecraft.client.renderer.RenderBuffers; import net.minecraft.client.renderer.blockentity.BlockEntityRenderDispatcher; +import net.minecraft.client.renderer.chunk.ChunkSectionsToRender; import net.minecraft.client.renderer.entity.EntityRenderDispatcher; import net.minecraft.client.renderer.feature.FeatureRenderDispatcher; +import net.minecraft.client.renderer.state.CameraRenderState; import net.minecraft.client.renderer.state.LevelRenderState; import org.joml.Matrix4f; import org.joml.Vector4f; @@ -48,7 +49,7 @@ public class LevelRenderer_scarpetRenderMixin target = "Lnet/minecraft/client/renderer/LevelRenderer;addLateDebugPass(Lcom/mojang/blaze3d/framegraph/FrameGraphBuilder;Lnet/minecraft/client/renderer/state/CameraRenderState;Lcom/mojang/blaze3d/buffers/GpuBufferSlice;Lorg/joml/Matrix4f;)V", shift = At.Shift.AFTER )) - private void renderStarpetThingsLate(GraphicsResourceAllocator graphicsResourceAllocator, DeltaTracker deltaTracker, boolean bl, Camera camera, Matrix4f matrix4f, Matrix4f arg5, Matrix4f matrix4f3, GpuBufferSlice gpuBufferSlice, Vector4f vector4f, boolean bl2, CallbackInfo ci, @Local FrameGraphBuilder frameGraphBuilder) + private void renderScarpetThinsLate(GraphicsResourceAllocator resourceAllocator, DeltaTracker deltaTracker, boolean renderOutline, CameraRenderState cameraState, Matrix4f modelViewMatrix, GpuBufferSlice terrainFog, Vector4f fogColor, boolean shouldRenderSky, ChunkSectionsToRender chunkSectionsToRender, CallbackInfo ci, @Local FrameGraphBuilder frameGraphBuilder) { // in normal circumstances we want to render shapes at the very end so it appears correctly behind stuff. // we might actually not need to play with render hooks here. @@ -58,7 +59,7 @@ public class LevelRenderer_scarpetRenderMixin final float deltaPartialTick = deltaTracker.getGameTimeDeltaPartialTick(false); FramePass pass = frameGraphBuilder.addPass("scarpet_shapes"); targets.main = pass.readsAndWrites(targets.main); - pass.executes(() -> CarpetClient.shapes.render(renderBuffers, levelRenderState, matrix4f, deltaPartialTick)); + pass.executes(() -> CarpetClient.shapes.render(renderBuffers, levelRenderState, modelViewMatrix, deltaPartialTick)); featureRenderDispatcher.renderAllFeatures(); renderBuffers.bufferSource().endLastBatch(); } diff --git a/src/main/java/carpet/mixins/MinecraftServer_scarpetMixin.java b/src/main/java/carpet/mixins/MinecraftServer_scarpetMixin.java index d0d2337f..0e3aa249 100644 --- a/src/main/java/carpet/mixins/MinecraftServer_scarpetMixin.java +++ b/src/main/java/carpet/mixins/MinecraftServer_scarpetMixin.java @@ -34,9 +34,8 @@ public abstract class MinecraftServer_scarpetMixin extends ReentrantBlockableEve { private CarpetScriptServer scriptServer; - public MinecraftServer_scarpetMixin(String string_1) - { - super(string_1); + public MinecraftServer_scarpetMixin(String name, boolean propagatesCrashes) { + super(name, propagatesCrashes); } @Shadow protected abstract void tickServer(BooleanSupplier booleanSupplier_1); diff --git a/src/main/java/carpet/mixins/MinecraftServer_tickspeedMixin.java b/src/main/java/carpet/mixins/MinecraftServer_tickspeedMixin.java index aba7780b..4d52c92a 100644 --- a/src/main/java/carpet/mixins/MinecraftServer_tickspeedMixin.java +++ b/src/main/java/carpet/mixins/MinecraftServer_tickspeedMixin.java @@ -13,13 +13,14 @@ import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; @Mixin(value = MinecraftServer.class, priority = Integer.MAX_VALUE - 10) public abstract class MinecraftServer_tickspeedMixin extends ReentrantBlockableEventLoop implements MinecraftServerInterface { - public MinecraftServer_tickspeedMixin(String name) - { - super(name); - } + CarpetProfiler.ProfilerToken currentSection; + public MinecraftServer_tickspeedMixin(String name, boolean propagatesCrashes) { + super(name, propagatesCrashes); + } + // Replaced the above cancelled while statement with this one // could possibly just inject that mspt selection at the beginning of the loop, but then adding all mspt's to // replace 50L will be a hassle diff --git a/src/main/java/carpet/script/utils/ShapesRenderer.java b/src/main/java/carpet/script/utils/ShapesRenderer.java index fe50ccac..b329ee5d 100644 --- a/src/main/java/carpet/script/utils/ShapesRenderer.java +++ b/src/main/java/carpet/script/utils/ShapesRenderer.java @@ -420,21 +420,7 @@ public class ShapesRenderer // draw the block itself if (blockState.getRenderShape() == RenderShape.MODEL) { - - var bakedModel = client.getBlockRenderer().getBlockModel(blockState); - int color = client.getBlockColors().getColor(blockState, client.level, blockPos, 0); - //dont know why there is a 0. - //see https://github.com/senseiwells/EssentialClient/blob/4db1f291936f502304791ee323f369c206b3021d/src/main/java/me/senseiwells/essentialclient/utils/render/RenderHelper.java#L464 - float red = (color >> 16 & 0xFF) / 255.0F; - float green = (color >> 8 & 0xFF) / 255.0F; - float blue = (color & 0xFF) / 255.0F; - RenderType type; - if (blockState.getBlock() instanceof LeavesBlock && !Minecraft.getInstance().options.cutoutLeaves().get()) { - type = RenderTypes.solidMovingBlock(); - } else { - type = ItemBlockRenderTypes.getRenderType(blockState); - } - client.getBlockRenderer().getModelRenderer().renderModel(matrices.last(), immediate.getBuffer(type), bakedModel, red, green, blue, light, OverlayTexture.NO_OVERLAY); + client.getBlockRenderer().renderSingleBlock(blockState, matrices, immediate, light, OverlayTexture.NO_OVERLAY); } // draw the block`s entity part @@ -461,10 +447,19 @@ public class ShapesRenderer BlockEntityRenderState state = client.getBlockEntityRenderDispatcher().tryExtractRenderState(BlockEntity, partialTick, null); + // levelRenderer;;submitBlockEntities does a weird transpose if (blockEntityRenderer != null && state != null) { // testme partial positions + //final Vec3 cameraPos = levelRenderState.cameraRenderState.pos; + //final double camX = cameraPos.x(); + //final double camY = cameraPos.y(); + //final double camZ = cameraPos.z(); + //matrices.translate(blockPos.getX() - camX, blockPos.getY() - camY, blockPos.getZ() - camZ); + //matrices.mulPose(levelRenderState.cameraRenderState.); + + blockEntityRenderer.submit(state, matrices,client.gameRenderer.getFeatureRenderDispatcher().getSubmitNodeStorage(), levelRenderState.cameraRenderState); //blockEntityRenderer.submit(BlockEntity, partialTick, // matrices, light, OverlayTexture.NO_OVERLAY, camera1.getPosition(), null, client.gameRenderer.getFeatureRenderDispatcher().getSubmitNodeStorage()); @@ -477,6 +472,7 @@ public class ShapesRenderer if (shape.item != null) { // draw the item + // this seems to not work now final ItemStackRenderState itemState = new ItemStackRenderState(); client.getItemModelResolver().updateForTopItem(itemState, shape.item, ItemDisplayContext.FIXED, client.level, null, 0);