diff --git a/gradle.properties b/gradle.properties index ee8546e6..3fa62f44 100644 --- a/gradle.properties +++ b/gradle.properties @@ -3,7 +3,7 @@ org.gradle.jvmargs=-Xmx1G # Fabric Properties # check https://fabricmc.net/develop/ - minecraft_version=25w37a + minecraft_version=1.21.9-pre1 loader_version=0.16.14 jsr305_version=3.0.2 fabric_version=0.119.5+1.21.5 diff --git a/src/main/java/carpet/mixins/DebugRenderer_scarpetRenderMixin.java b/src/main/java/carpet/mixins/DebugRenderer_scarpetRenderMixin.java index d7030e8c..e8a9ad06 100644 --- a/src/main/java/carpet/mixins/DebugRenderer_scarpetRenderMixin.java +++ b/src/main/java/carpet/mixins/DebugRenderer_scarpetRenderMixin.java @@ -10,7 +10,7 @@ import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; @Mixin(DebugRenderer.class) public class DebugRenderer_scarpetRenderMixin { - @Inject(method = "clear", at = @At("HEAD")) + @Inject(method = "refreshRendererList", at = @At("HEAD")) private void resetScarpetRenderes(CallbackInfo ci) { if (CarpetClient.shapes != null) diff --git a/src/main/java/carpet/mixins/LevelRenderer_scarpetRenderMixin.java b/src/main/java/carpet/mixins/LevelRenderer_scarpetRenderMixin.java index 2da7a7b8..66de25e9 100644 --- a/src/main/java/carpet/mixins/LevelRenderer_scarpetRenderMixin.java +++ b/src/main/java/carpet/mixins/LevelRenderer_scarpetRenderMixin.java @@ -8,7 +8,6 @@ import com.mojang.blaze3d.framegraph.FramePass; import net.minecraft.client.Camera; import net.minecraft.client.DeltaTracker; import net.minecraft.client.Minecraft; -import net.minecraft.client.renderer.LevelRenderState; import net.minecraft.client.renderer.LevelRenderer; import net.minecraft.client.renderer.LevelTargetBundle; import net.minecraft.client.renderer.RenderBuffers; @@ -16,6 +15,7 @@ import net.minecraft.client.renderer.blockentity.BlockEntityRenderDispatcher; import net.minecraft.client.renderer.culling.Frustum; import net.minecraft.client.renderer.entity.EntityRenderDispatcher; import net.minecraft.client.renderer.feature.FeatureRenderDispatcher; +import net.minecraft.client.renderer.state.LevelRenderState; import net.minecraft.util.profiling.ProfilerFiller; import org.joml.Matrix4f; import org.spongepowered.asm.mixin.Final; @@ -41,7 +41,7 @@ public class LevelRenderer_scarpetRenderMixin } @Inject(method = "addMainPass", at = @At("RETURN")) - private void renderScarpetThingsLate(FrameGraphBuilder frameGraphBuilder, Frustum frustum, Camera camera, Matrix4f matrix4f, GpuBufferSlice gpuBufferSlice, boolean bl, LevelRenderState levelRenderState, DeltaTracker deltaTracker, ProfilerFiller profilerFiller, CallbackInfo ci) + private void renderScarpetThingsLate(FrameGraphBuilder frameGraphBuilder, Frustum frustum, Matrix4f matrix4f, GpuBufferSlice gpuBufferSlice, boolean bl, LevelRenderState levelRenderState, DeltaTracker deltaTracker, ProfilerFiller profilerFiller, CallbackInfo ci) { // 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. @@ -51,7 +51,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(null, camera, deltaPartialTick)); + pass.executes(() -> CarpetClient.shapes.render(null, levelRenderState, deltaPartialTick)); featureRenderDispatcher.renderAllFeatures(); renderBuffers.bufferSource().endLastBatch(); } diff --git a/src/main/java/carpet/mixins/PistonHeadRenderer_movableBEMixin.java b/src/main/java/carpet/mixins/PistonHeadRenderer_movableBEMixin.java index 16a9bbd3..9c2a6c75 100644 --- a/src/main/java/carpet/mixins/PistonHeadRenderer_movableBEMixin.java +++ b/src/main/java/carpet/mixins/PistonHeadRenderer_movableBEMixin.java @@ -12,6 +12,7 @@ import net.minecraft.client.renderer.blockentity.PistonHeadRenderer; import net.minecraft.client.renderer.blockentity.state.BlockEntityRenderState; import net.minecraft.client.renderer.blockentity.state.PistonHeadRenderState; import net.minecraft.client.renderer.feature.ModelFeatureRenderer; +import net.minecraft.client.renderer.state.CameraRenderState; import net.minecraft.world.level.block.entity.BlockEntity; import net.minecraft.world.level.block.piston.PistonMovingBlockEntity; import net.minecraft.world.phys.Vec3; @@ -51,10 +52,10 @@ public abstract class PistonHeadRenderer_movableBEMixin implements BlockEntityRe } } - @Inject(method = "submit(Lnet/minecraft/client/renderer/blockentity/state/PistonHeadRenderState;Lcom/mojang/blaze3d/vertex/PoseStack;Lnet/minecraft/client/renderer/SubmitNodeCollector;)V", + @Inject(method = "submit(Lnet/minecraft/client/renderer/blockentity/state/PistonHeadRenderState;Lcom/mojang/blaze3d/vertex/PoseStack;Lnet/minecraft/client/renderer/SubmitNodeCollector;Lnet/minecraft/client/renderer/state/CameraRenderState;)V", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/renderer/SubmitNodeCollector;submitMovingBlock(Lcom/mojang/blaze3d/vertex/PoseStack;Lnet/minecraft/client/renderer/block/MovingBlockRenderState;)V", ordinal = 0)) - private void endMethod(PistonHeadRenderState pistonHeadRenderState, PoseStack poseStack, SubmitNodeCollector submitNodeCollector, CallbackInfo ci) + private void endMethod(PistonHeadRenderState pistonHeadRenderState, PoseStack poseStack, SubmitNodeCollector submitNodeCollector, CameraRenderState cameraRenderState, CallbackInfo ci) //private void endMethod(PistonMovingBlockEntity pistonBlockEntity_1, float partialTicks, PoseStack matrixStack_1, int i, int j, Vec3 vec3, ModelFeatureRenderer.CrumblingOverlay crumblingOverlay, SubmitNodeCollector submitNodeCollector, CallbackInfo ci) //private void endMethod3576(PistonMovingBlockEntity pistonBlockEntity_1, float partialTicks, PoseStack matrixStack_1, MultiBufferSource layeredVertexConsumerStorage_1, int int_1, int init_2, Vec3 cameraPos, CallbackInfo ci) { @@ -62,7 +63,7 @@ public abstract class PistonHeadRenderer_movableBEMixin implements BlockEntityRe if (mbrsi.getMovedBERenderState() != null) { BlockEntityRenderState res = mbrsi.getMovedBERenderState(); if (res != null) { - dispatcher.submit(res, poseStack, submitNodeCollector); + dispatcher.submit(res, poseStack, submitNodeCollector, cameraRenderState); } } } diff --git a/src/main/java/carpet/script/utils/ShapesRenderer.java b/src/main/java/carpet/script/utils/ShapesRenderer.java index be4be1e3..c797a228 100644 --- a/src/main/java/carpet/script/utils/ShapesRenderer.java +++ b/src/main/java/carpet/script/utils/ShapesRenderer.java @@ -4,7 +4,6 @@ import carpet.script.CarpetScriptServer; import carpet.script.external.Carpet; import carpet.script.utils.shapes.ShapeDirection; -import com.mojang.blaze3d.platform.Lighting; import com.mojang.blaze3d.systems.RenderSystem; import com.mojang.blaze3d.vertex.BufferBuilder; import com.mojang.blaze3d.vertex.ByteBufferBuilder; @@ -36,6 +35,7 @@ import net.minecraft.client.renderer.blockentity.BlockEntityRenderer; import net.minecraft.client.renderer.blockentity.state.BlockEntityRenderState; import net.minecraft.client.renderer.entity.state.EntityRenderState; import net.minecraft.client.renderer.item.ItemStackRenderState; +import net.minecraft.client.renderer.state.LevelRenderState; import net.minecraft.client.renderer.texture.OverlayTexture; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; @@ -112,13 +112,13 @@ public class ShapesRenderer labels = new HashMap<>(); } - public void render(Matrix4f modelViewMatrix, Camera camera, float partialTick) + public void render(Matrix4f modelViewMatrix, LevelRenderState cameraa, float partialTick) { Runnable token = Carpet.startProfilerSection("Scarpet client"); // posestack is not needed anymore - left as TODO to cleanup later PoseStack matrices = new PoseStack(); - //Camera camera = this.client.gameRenderer.getCamera(); + Camera camera = this.client.gameRenderer.getMainCamera(); ClientLevel iWorld = this.client.level; ResourceKey dimensionType = iWorld.dimension(); if ((shapes.get(dimensionType) == null || shapes.get(dimensionType).isEmpty()) && @@ -164,7 +164,7 @@ public class ShapesRenderer shapes.get(dimensionType).values().forEach(s -> { if ((!s.shape.debug || entityBoxes) && s.shouldRender(dimensionType)) { - s.renderLines(matrices, tesselator, cameraX, cameraY, cameraZ, partialTick); + s.renderLines(matrices, tesselator, cameraX, cameraY, cameraZ, partialTick, cameraa); } }); // faces @@ -187,7 +187,7 @@ public class ShapesRenderer labels.get(dimensionType).values().forEach(s -> { if ((!s.shape.debug || entityBoxes) && s.shouldRender(dimensionType)) { - s.renderLines(matrices, tesselator, cameraX, cameraY, cameraZ, partialTick); + s.renderLines(matrices, tesselator, cameraX, cameraY, cameraZ, partialTick, cameraa); } }); } @@ -263,7 +263,7 @@ public class ShapesRenderer long expiryTick; double renderEpsilon; - public abstract void renderLines(PoseStack matrices, Tesselator tesselator, double cx, double cy, double cz, float partialTick); + public abstract void renderLines(PoseStack matrices, Tesselator tesselator, double cx, double cy, double cz, float partialTick, LevelRenderState levelRenderState); public void renderFaces(Tesselator tesselator, double cx, double cy, double cz, float partialTick) { @@ -337,7 +337,7 @@ public class ShapesRenderer @Override public void renderLines(PoseStack matrices, Tesselator tesselator, double cx, double cy, - double cz, float partialTick) + double cz, float partialTick, LevelRenderState levelRenderState) { if (shape.a == 0.0) { @@ -447,7 +447,7 @@ public class ShapesRenderer if (blockEntityRenderer != null && state != null) { // testme partial positions - blockEntityRenderer.submit(state, matrices,client.gameRenderer.getFeatureRenderDispatcher().getSubmitNodeStorage()); + 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()); @@ -493,7 +493,7 @@ public class ShapesRenderer } @Override - public void renderLines(PoseStack matrices, Tesselator tesselator, double cx, double cy, double cz, float partialTick) + public void renderLines(PoseStack matrices, Tesselator tesselator, double cx, double cy, double cz, float partialTick, LevelRenderState levelRenderState) { if (shape.a == 0.0) { @@ -582,7 +582,7 @@ public class ShapesRenderer } @Override - public void renderLines(PoseStack matrices, Tesselator tesselator, double cx, double cy, double cz, float partialTick) + public void renderLines(PoseStack matrices, Tesselator tesselator, double cx, double cy, double cz, float partialTick, LevelRenderState levelRenderState) { if (shape.a == 0.0) { @@ -626,7 +626,7 @@ public class ShapesRenderer } @Override - public void renderLines(PoseStack matrices, Tesselator tesselator, double cx, double cy, double cz, float partialTick) + public void renderLines(PoseStack matrices, Tesselator tesselator, double cx, double cy, double cz, float partialTick, LevelRenderState levelRenderState) { Vec3 v1 = shape.relativiseRender(client.level, shape.from, partialTick); Vec3 v2 = shape.relativiseRender(client.level, shape.to, partialTick); @@ -707,7 +707,7 @@ public class ShapesRenderer @Override public void renderLines(PoseStack matrices, Tesselator tesselator, double cx, double cy, - double cz, float partialTick) + double cz, float partialTick, LevelRenderState levelRenderState) { if (shape.a == 0) { @@ -842,7 +842,7 @@ public class ShapesRenderer } @Override - public void renderLines(PoseStack matrices, Tesselator tesselator, double cx, double cy, double cz, float partialTick) + public void renderLines(PoseStack matrices, Tesselator tesselator, double cx, double cy, double cz, float partialTick, LevelRenderState levelRenderState) { if (shape.a == 0.0) { @@ -878,7 +878,7 @@ public class ShapesRenderer } @Override - public void renderLines(PoseStack matrices, Tesselator tesselator, double cx, double cy, double cz, float partialTick) + public void renderLines(PoseStack matrices, Tesselator tesselator, double cx, double cy, double cz, float partialTick, LevelRenderState levelRenderState) { if (shape.a == 0.0) { diff --git a/src/main/java/carpet/script/utils/SystemInfo.java b/src/main/java/carpet/script/utils/SystemInfo.java index 00e528c3..7ab418b5 100644 --- a/src/main/java/carpet/script/utils/SystemInfo.java +++ b/src/main/java/carpet/script/utils/SystemInfo.java @@ -59,7 +59,7 @@ public class SystemInfo return StringValue.of(tlf); }); put("world_dimensions", c -> ListValue.wrap(c.server().levelKeys().stream().map(k -> ValueConversions.of(k.location())))); - put("world_spawn_point", c -> ValueConversions.of(c.server().overworld().getLevelData().getSpawnPos())); + put("world_spawn_point", c -> ValueConversions.of(c.server().overworld().getLevelData().getRespawnData().pos())); put("world_bottom", c -> new NumericValue(c.level().getMinY())); diff --git a/src/main/java/carpet/script/value/EntityValue.java b/src/main/java/carpet/script/value/EntityValue.java index 5903c3f7..9bedb9ab 100644 --- a/src/main/java/carpet/script/value/EntityValue.java +++ b/src/main/java/carpet/script/value/EntityValue.java @@ -17,6 +17,7 @@ import net.minecraft.commands.arguments.selector.EntitySelector; import net.minecraft.commands.arguments.selector.EntitySelectorParser; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; +import net.minecraft.core.GlobalPos; import net.minecraft.core.Holder; import net.minecraft.core.HolderSet; import net.minecraft.core.Registry; @@ -69,6 +70,7 @@ import net.minecraft.world.level.GameType; import net.minecraft.world.level.Level; import net.minecraft.world.level.entity.EntityTypeTest; import net.minecraft.world.level.pathfinder.Path; +import net.minecraft.world.level.storage.LevelData; import net.minecraft.world.level.storage.TagValueInput; import net.minecraft.world.level.storage.TagValueOutput; import net.minecraft.world.phys.BlockHitResult; @@ -533,9 +535,9 @@ public class EntityValue extends Value } ServerPlayer.RespawnConfig spec = spe.getRespawnConfig(); return ListValue.of( - ValueConversions.of(spec.pos()), - ValueConversions.of(spec.dimension()), - new NumericValue(spec.angle()), + ValueConversions.of(spec.respawnData().pos()), + ValueConversions.of(spec.respawnData().dimension()), + new NumericValue(spec.respawnData().yaw()), BooleanValue.of(spec.forced()) ); } @@ -1386,7 +1388,7 @@ public class EntityValue extends Value } } } - spe.setRespawnPosition(new ServerPlayer.RespawnConfig(world, pos, angle, forced), false); + spe.setRespawnPosition(new ServerPlayer.RespawnConfig(new LevelData.RespawnData(new GlobalPos(world, pos), angle, 0), forced), false); } else if (a instanceof BlockValue bv) { @@ -1394,7 +1396,7 @@ public class EntityValue extends Value { throw new InternalExpressionException("block for spawn modification should be localised in the world"); } - spe.setRespawnPosition(new ServerPlayer.RespawnConfig(bv.getWorld().dimension(), bv.getPos(), e.getYRot(), true), false); // yaw + spe.setRespawnPosition(new ServerPlayer.RespawnConfig(new LevelData.RespawnData(new GlobalPos(bv.getWorld().dimension(), bv.getPos()), e.getYRot(), 0), true), false); // yaw } else if (a.isNull()) {