From 83aea79da0c860f3bab5626758be7af8841d1958 Mon Sep 17 00:00:00 2001 From: gnembon Date: Sun, 10 May 2026 21:38:16 +0200 Subject: [PATCH] 26.2-snap-6 --- gradle.properties | 2 +- .../LevelRenderer_scarpetRenderMixin.java | 14 ++-- .../PistonHeadRenderer_movableBEMixin.java | 3 +- .../StructurePiece_scarpetPlopMixin.java | 4 +- .../java/carpet/script/api/Scoreboards.java | 14 +++- .../script/command/CommandArgument.java | 9 ++- .../carpet/script/utils/FeatureGenerator.java | 10 ++- .../carpet/script/utils/ShapesRenderer.java | 74 +++++++++++-------- 8 files changed, 79 insertions(+), 51 deletions(-) diff --git a/gradle.properties b/gradle.properties index 9874ae91..585f88cf 100644 --- a/gradle.properties +++ b/gradle.properties @@ -7,7 +7,7 @@ org.gradle.configuration-cache=false # Fabric Properties # check https://fabricmc.net/develop/ - minecraft_version=26.2-snapshot-4 + minecraft_version=26.2-snapshot-6 loader_version=0.19.2 loom_version=1.15-SNAPSHOT diff --git a/src/main/java/carpet/mixins/LevelRenderer_scarpetRenderMixin.java b/src/main/java/carpet/mixins/LevelRenderer_scarpetRenderMixin.java index 1a045f1d..9ce4505e 100644 --- a/src/main/java/carpet/mixins/LevelRenderer_scarpetRenderMixin.java +++ b/src/main/java/carpet/mixins/LevelRenderer_scarpetRenderMixin.java @@ -14,6 +14,8 @@ import net.minecraft.client.renderer.LevelRenderer; import net.minecraft.client.renderer.LevelTargetBundle; import net.minecraft.client.renderer.RenderBuffers; import net.minecraft.client.renderer.ShaderManager; +import net.minecraft.client.renderer.SubmitNodeCollector; +import net.minecraft.client.renderer.SubmitNodeStorage; import net.minecraft.client.renderer.blockentity.BlockEntityRenderDispatcher; import net.minecraft.client.renderer.chunk.ChunkSectionsToRender; import net.minecraft.client.renderer.entity.EntityRenderDispatcher; @@ -44,6 +46,8 @@ public class LevelRenderer_scarpetRenderMixin @Shadow @Final private LevelRenderState levelRenderState; + @Shadow @Final private SubmitNodeStorage submitNodeStorage; + @Inject(method = "", at = @At("RETURN")) private void addRenderers(EntityRenderDispatcher entityRenderDispatcher, BlockEntityRenderDispatcher blockEntityRenderDispatcher, ModelManager modelManager, TextureManager textureManager, AtlasManager atlasManager, ShaderManager shaderManager, GameRenderer gameRenderer, int width, int height, CallbackInfo ci) { @@ -52,10 +56,10 @@ public class LevelRenderer_scarpetRenderMixin @Inject(method = "render", at = @At( value = "INVOKE", - +target = "Lnet/minecraft/client/renderer/LevelRenderer;addMainPass(Lcom/mojang/blaze3d/framegraph/FrameGraphBuilder;Lnet/minecraft/client/renderer/feature/FeatureRenderDispatcher$PreparedFrame;Lcom/mojang/blaze3d/buffers/GpuBufferSlice;Lnet/minecraft/client/renderer/state/level/LevelRenderState;Lnet/minecraft/util/profiling/ProfilerFiller;Lnet/minecraft/client/renderer/chunk/ChunkSectionsToRender;)V", //target = "Lnet/minecraft/client/renderer/LevelRenderer;addAlwaysOnTopPass(Lcom/mojang/blaze3d/framegraph/FrameGraphBuilder;Lcom/mojang/blaze3d/buffers/GpuBufferSlice;)V", //target = "Lnet/minecraft/client/renderer/LevelRenderer;submitFeatures(Lnet/minecraft/client/renderer/state/level/LevelRenderState;Lnet/minecraft/client/renderer/SubmitNodeCollector;Z)V", - target = "Lnet/minecraft/client/renderer/LevelRenderer;addMainPass(Lcom/mojang/blaze3d/framegraph/FrameGraphBuilder;Lcom/mojang/blaze3d/buffers/GpuBufferSlice;Lnet/minecraft/client/renderer/state/level/LevelRenderState;Lnet/minecraft/util/profiling/ProfilerFiller;Lnet/minecraft/client/renderer/chunk/ChunkSectionsToRender;)V", + //target = "Lnet/minecraft/client/renderer/LevelRenderer;addMainPass(Lcom/mojang/blaze3d/framegraph/FrameGraphBuilder;Lcom/mojang/blaze3d/buffers/GpuBufferSlice;Lnet/minecraft/client/renderer/state/level/LevelRenderState;Lnet/minecraft/util/profiling/ProfilerFiller;Lnet/minecraft/client/renderer/chunk/ChunkSectionsToRender;)V", //target = "Lnet/minecraft/client/renderer/LevelRenderer;addLateDebugPass(Lcom/mojang/blaze3d/framegraph/FrameGraphBuilder;Lnet/minecraft/client/renderer/state/level/CameraRenderState;Lcom/mojang/blaze3d/buffers/GpuBufferSlice;Lorg/joml/Matrix4fc;)V", shift = At.Shift.AFTER )) @@ -70,9 +74,9 @@ 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, modelViewMatrix, deltaPartialTick)); - featureRenderDispatcher.renderAllFeatures(); - renderBuffers.bufferSource().uploadAndDraw(); + pass.executes(() -> CarpetClient.shapes.render(submitNodeStorage, levelRenderState, modelViewMatrix, deltaPartialTick)); + //featureRenderDispatcher.renderAllFeatures(submitNodeStorage); + //renderBuffers.bufferSource().uploadAndDraw(); } } } diff --git a/src/main/java/carpet/mixins/PistonHeadRenderer_movableBEMixin.java b/src/main/java/carpet/mixins/PistonHeadRenderer_movableBEMixin.java index f9b52e65..08c4adf1 100644 --- a/src/main/java/carpet/mixins/PistonHeadRenderer_movableBEMixin.java +++ b/src/main/java/carpet/mixins/PistonHeadRenderer_movableBEMixin.java @@ -53,7 +53,8 @@ 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;Lnet/minecraft/client/renderer/state/level/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", + at = @At(value = "INVOKE", + target = "Lnet/minecraft/client/renderer/SubmitNodeCollector;submitMovingBlock(Lcom/mojang/blaze3d/vertex/PoseStack;Lnet/minecraft/client/renderer/block/MovingBlockRenderState;I)V", ordinal = 0)) 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) diff --git a/src/main/java/carpet/mixins/StructurePiece_scarpetPlopMixin.java b/src/main/java/carpet/mixins/StructurePiece_scarpetPlopMixin.java index 9d33016e..9d42166c 100644 --- a/src/main/java/carpet/mixins/StructurePiece_scarpetPlopMixin.java +++ b/src/main/java/carpet/mixins/StructurePiece_scarpetPlopMixin.java @@ -13,10 +13,10 @@ public class StructurePiece_scarpetPlopMixin { @Redirect(method = "placeBlock", at = @At( value = "INVOKE", - target = "Lnet/minecraft/world/level/chunk/ChunkAccess;markPosForPostprocessing(Lnet/minecraft/core/BlockPos;)V" + target = "Lnet/minecraft/world/level/chunk/ChunkAccess;markPosForPostProcessing(Lnet/minecraft/core/BlockPos;)V" )) private void markOrNot(ChunkAccess chunk, BlockPos pos) { - if (!CarpetSettings.skipGenerationChecks.get()) chunk.markPosForPostprocessing(pos); + if (!CarpetSettings.skipGenerationChecks.get()) chunk.markPosForPostProcessing(pos); } } diff --git a/src/main/java/carpet/script/api/Scoreboards.java b/src/main/java/carpet/script/api/Scoreboards.java index f0e3365c..260d3abd 100644 --- a/src/main/java/carpet/script/api/Scoreboards.java +++ b/src/main/java/carpet/script/api/Scoreboards.java @@ -18,9 +18,12 @@ import com.google.common.collect.Lists; import java.util.ArrayList; import java.util.List; +import java.util.Optional; +import com.mojang.serialization.DataResult; import net.minecraft.ChatFormatting; import net.minecraft.network.chat.Component; +import net.minecraft.network.chat.TextColor; import net.minecraft.resources.Identifier; import net.minecraft.server.MinecraftServer; import net.minecraft.server.ServerScoreboard; @@ -36,6 +39,7 @@ import net.minecraft.world.scores.ScoreAccess; import net.minecraft.world.scores.ScoreHolder; import net.minecraft.world.scores.Scoreboard; import net.minecraft.world.scores.Team; +import net.minecraft.world.scores.TeamColor; import net.minecraft.world.scores.criteria.ObjectiveCriteria; import org.jetbrains.annotations.Nullable; @@ -433,18 +437,20 @@ public class Scoreboards case "color" -> { if (!modifying) { - return new StringValue(team.getColor().getName()); + return new StringValue(team.getColor().get().getSerializedName()); } if (!(settingVal instanceof StringValue)) { throw new InternalExpressionException("'team_property' requires a string as the third argument for the property " + propertyVal.getString()); } - ChatFormatting color = ChatFormatting.getByName(settingVal.getString().toUpperCase()); - if (color == null || !color.isColor()) + TeamColor teamColor = TeamColor.byName(settingVal.getString().toLowerCase()); + //DataResult color = TextColor.parseColor(settingVal.getString().toUpperCase()); + //ChatFormatting color = ChatFormatting.valueOf(settingVal.getString().toUpperCase());; + if (teamColor == null) { throw new InternalExpressionException("Unknown value for property " + propertyVal.getString() + ": " + settingVal.getString()); } - team.setColor(color); + team.setColor(Optional.of(teamColor)); } case "deathMessageVisibility" -> { if (!modifying) diff --git a/src/main/java/carpet/script/command/CommandArgument.java b/src/main/java/carpet/script/command/CommandArgument.java index 76ae1901..48cb8886 100644 --- a/src/main/java/carpet/script/command/CommandArgument.java +++ b/src/main/java/carpet/script/command/CommandArgument.java @@ -60,7 +60,7 @@ import net.minecraft.commands.CommandBuildContext; import net.minecraft.commands.CommandSourceStack; import net.minecraft.commands.SharedSuggestionProvider; import net.minecraft.commands.arguments.AngleArgument; -import net.minecraft.commands.arguments.ColorArgument; +import net.minecraft.commands.arguments.TeamColorArgument; import net.minecraft.commands.arguments.CompoundTagArgument; import net.minecraft.commands.arguments.DimensionArgument; import net.minecraft.commands.arguments.EntityAnchorArgument; @@ -108,6 +108,7 @@ import net.minecraft.world.level.biome.Biome; import net.minecraft.world.phys.Vec2; import net.minecraft.world.scores.ScoreHolder; +import net.minecraft.world.scores.TeamColor; import org.jspecify.annotations.Nullable; import static net.minecraft.commands.Commands.argument; @@ -144,10 +145,10 @@ public abstract class CommandArgument (c, p) -> ValueConversions.ofBlockPredicate(c.getSource().getServer().registryAccess(), BlockPredicateArgument.getBlockPredicate(c, p)), param -> (ctx, builder) -> ctx.getArgument(param, BlockPredicateArgument.class).listSuggestions(ctx, builder) ), - new VanillaUnconfigurableArgument("teamcolor", ColorArgument::color, + new VanillaUnconfigurableArgument("teamcolor", TeamColorArgument::teamColor, (c, p) -> { - ChatFormatting format = ColorArgument.getColor(c, p); - return ListValue.of(StringValue.of(format.getName()), ValueConversions.ofRGB(format.getColor())); + TeamColor format = TeamColorArgument.getTeamColor(c, p); + return ListValue.of(StringValue.of(format.getSerializedName()), ValueConversions.ofRGB(format.rgb())); }, false ), diff --git a/src/main/java/carpet/script/utils/FeatureGenerator.java b/src/main/java/carpet/script/utils/FeatureGenerator.java index d5ff798c..844a843f 100644 --- a/src/main/java/carpet/script/utils/FeatureGenerator.java +++ b/src/main/java/carpet/script/utils/FeatureGenerator.java @@ -47,6 +47,7 @@ import net.minecraft.world.level.levelgen.feature.featuresize.TwoLayersFeatureSi import net.minecraft.world.level.levelgen.feature.foliageplacers.BlobFoliagePlacer; import net.minecraft.world.level.levelgen.feature.foliageplacers.FancyFoliagePlacer; import net.minecraft.world.level.levelgen.feature.stateproviders.BlockStateProvider; +import net.minecraft.world.level.levelgen.feature.stateproviders.RuleBasedStateProvider; import net.minecraft.world.level.levelgen.heightproviders.ConstantHeight; import net.minecraft.world.level.levelgen.structure.BoundingBox; import net.minecraft.world.level.levelgen.structure.Structure; @@ -65,6 +66,8 @@ import net.minecraft.world.level.levelgen.structure.templatesystem.StructureProc import org.jspecify.annotations.Nullable; +import static net.minecraft.world.level.levelgen.feature.configurations.TreeConfiguration.CAN_PLACE_BELOW_TREE_TRUNKS; + public class FeatureGenerator { @Nullable @@ -272,16 +275,19 @@ public class FeatureGenerator return null; } + private static RuleBasedStateProvider belowTrees = RuleBasedStateProvider.ifTrueThenProvide(CAN_PLACE_BELOW_TREE_TRUNKS, Blocks.DIRT); + private static TreeConfiguration.TreeConfigurationBuilder createTree(Block block, Block block2, int i, int j, int k, int l) { - return new TreeConfiguration.TreeConfigurationBuilder(BlockStateProvider.simple(block), new StraightTrunkPlacer(i, j, k), BlockStateProvider.simple(block2), new BlobFoliagePlacer(ConstantInt.of(l), ConstantInt.of(0), 3), new TwoLayersFeatureSize(1, 0, 1)); + return new TreeConfiguration.TreeConfigurationBuilder(BlockStateProvider.simple(block), new StraightTrunkPlacer(i, j, k), BlockStateProvider.simple(block2), new BlobFoliagePlacer(ConstantInt.of(l), ConstantInt.of(0), 3), new TwoLayersFeatureSize(1, 0, 1), belowTrees); } public static final Map> featureMap = new HashMap<>() {{ + // TODO remove this using what place feature is using put("oak_bees", l -> simpleTree(createTree(Blocks.OAK_LOG, Blocks.OAK_LEAVES, 4, 2, 0, 2).ignoreVines().decorators(List.of(new BeehiveDecorator(1.00F))).build())); - put("fancy_oak_bees", l -> simpleTree((new TreeConfiguration.TreeConfigurationBuilder(BlockStateProvider.simple(Blocks.OAK_LOG), new FancyTrunkPlacer(3, 11, 0), BlockStateProvider.simple(Blocks.OAK_LEAVES), new FancyFoliagePlacer(ConstantInt.of(2), ConstantInt.of(4), 4), new TwoLayersFeatureSize(0, 0, 0, OptionalInt.of(4)))).ignoreVines().decorators(List.of(new BeehiveDecorator(1.00F))).build())); + put("fancy_oak_bees", l -> simpleTree((new TreeConfiguration.TreeConfigurationBuilder(BlockStateProvider.simple(Blocks.OAK_LOG), new FancyTrunkPlacer(3, 11, 0), BlockStateProvider.simple(Blocks.OAK_LEAVES), new FancyFoliagePlacer(ConstantInt.of(2), ConstantInt.of(4), 4), new TwoLayersFeatureSize(0, 0, 0, OptionalInt.of(4)), belowTrees)).ignoreVines().decorators(List.of(new BeehiveDecorator(1.00F))).build())); put("birch_bees", l -> simpleTree(createTree(Blocks.BIRCH_LOG, Blocks.BIRCH_LEAVES, 5, 2, 0, 2).ignoreVines().decorators(List.of(new BeehiveDecorator(1.00F))).build())); put("coral_tree", l -> simplePlop(Feature.CORAL_TREE, FeatureConfiguration.NONE)); diff --git a/src/main/java/carpet/script/utils/ShapesRenderer.java b/src/main/java/carpet/script/utils/ShapesRenderer.java index a1e0aaf2..61dfc1af 100644 --- a/src/main/java/carpet/script/utils/ShapesRenderer.java +++ b/src/main/java/carpet/script/utils/ShapesRenderer.java @@ -6,11 +6,10 @@ import carpet.script.utils.shapes.ShapeDirection; import com.mojang.blaze3d.pipeline.RenderTarget; import com.mojang.blaze3d.systems.RenderSystem; -import com.mojang.blaze3d.vertex.ByteBufferBuilder; import com.mojang.blaze3d.vertex.PoseStack; import com.mojang.blaze3d.vertex.VertexConsumer; import com.mojang.blaze3d.vertex.VertexFormat; -import com.mojang.blaze3d.vertex.VertexFormat.Mode; +//import com.mojang.blaze3d.vertex.VertexFormat.Mode; import com.mojang.math.Axis; import it.unimi.dsi.fastutil.longs.Long2ObjectOpenHashMap; @@ -26,8 +25,8 @@ import net.minecraft.client.gui.Font; import net.minecraft.client.gui.components.debug.DebugScreenEntries; import net.minecraft.client.gui.font.TextRenderable; import net.minecraft.client.multiplayer.ClientLevel; -import net.minecraft.client.renderer.MultiBufferSource; -import net.minecraft.client.renderer.RenderBuffers; +//import net.minecraft.client.renderer.MultiBufferSource; +import net.minecraft.client.renderer.SubmitNodeStorage; import net.minecraft.client.renderer.block.BlockModelRenderState; import net.minecraft.client.renderer.entity.DisplayRenderer; import net.minecraft.client.renderer.rendertype.RenderType; @@ -115,7 +114,7 @@ public class ShapesRenderer labels = new HashMap<>(); } - public void render(RenderBuffers renderBuffers, LevelRenderState cameraa, Matrix4fc matrix4f, float partialTick) + public void render(SubmitNodeStorage submitNodeStorage, LevelRenderState cameraa, Matrix4fc matrix4f, float partialTick) { Runnable token = Carpet.startProfilerSection("Scarpet client"); // posestack is not needed anymore - left as TODO to cleanup later @@ -169,7 +168,7 @@ public class ShapesRenderer shapes.get(dimensionType).values().forEach(s -> { if ((!s.shape.debug || entityBoxes) && s.shouldRender(dimensionType)) { - s.renderLines(matrices, cameraX, cameraY, cameraZ, partialTick, cameraa, s.shape.seethrough ? onTop : normal); + s.renderLines(matrices, cameraX, cameraY, cameraZ, partialTick, cameraa, s.shape.seethrough ? onTop : normal, submitNodeStorage ); } }); // faces @@ -191,23 +190,23 @@ public class ShapesRenderer labels.get(dimensionType).values().forEach(s -> { if ((!s.shape.debug || entityBoxes) && s.shouldRender(dimensionType)) { - s.renderLines(matrices, cameraX, cameraY, cameraZ, partialTick, cameraa, s.shape.seethrough ? onTop : normal); + s.renderLines(matrices, cameraX, cameraY, cameraZ, partialTick, cameraa, s.shape.seethrough ? onTop : normal, submitNodeStorage ); } }); } - MultiBufferSource.BufferSource bufferSource = renderBuffers.bufferSource(); - bufferSource.uploadAndDraw(); + //MultiBufferSource.BufferSource bufferSource = renderBuffers. bufferSource(); + //bufferSource.uploadAndDraw(); - normal.submit(client.gameRenderer.featureRenderDispatcher().getSubmitNodeStorage(), cameraa.cameraRenderState, false); - bufferSource.uploadAndDraw(); + normal.submit(submitNodeStorage, cameraa.cameraRenderState, false); + //bufferSource.uploadAndDraw(); if (false) { final RenderTarget mainRenderTarget = Minecraft.getInstance().gameRenderer.mainRenderTarget(); RenderSystem.getDevice().createCommandEncoder().clearDepthTexture(mainRenderTarget.getDepthTexture(), 1.0); - onTop.submit(client.gameRenderer.featureRenderDispatcher().getSubmitNodeStorage(), cameraa.cameraRenderState, true); - bufferSource.uploadAndDraw(); + onTop.submit(submitNodeStorage, cameraa.cameraRenderState, true); + //bufferSource.uploadAndDraw(); RenderSystem.getDevice().createCommandEncoder().clearDepthTexture(Minecraft.getInstance().gameRenderer.mainRenderTarget().getDepthTexture(), 1.0); @@ -286,7 +285,7 @@ public class ShapesRenderer long expiryTick; double renderEpsilon; - public abstract void renderLines(PoseStack matrices, double cx, double cy, double cz, float partialTick, LevelRenderState levelRenderState, DrawableGizmoPrimitives primitives); + public abstract void renderLines(PoseStack matrices, double cx, double cy, double cz, float partialTick, LevelRenderState levelRenderState, DrawableGizmoPrimitives primitives, SubmitNodeStorage submitNodeStorage); public void renderFaces(double cx, double cy, double cz, float partialTick, DrawableGizmoPrimitives primitives) { @@ -360,7 +359,7 @@ public class ShapesRenderer @Override public void renderLines(PoseStack matrices, double cx, double cy, - double cz, float partialTick, LevelRenderState levelRenderState, DrawableGizmoPrimitives primitives) + double cz, float partialTick, LevelRenderState levelRenderState, DrawableGizmoPrimitives primitives, SubmitNodeStorage submitNodeStorage) { if (shape.a == 0.0) { @@ -417,7 +416,7 @@ public class ShapesRenderer blockState = shape.blockState; - MultiBufferSource.BufferSource immediate = client.gameRenderer.renderBuffers().bufferSource(); + //MultiBufferSource.BufferSource immediate = client.gameRenderer.renderBuffers().bufferSource(); if (!isitem) { // draw the block itself @@ -433,7 +432,7 @@ public class ShapesRenderer //renderState.model = state; //renderState.block = blockState.getBlock(); - renderState.submit(matrices, client.gameRenderer.featureRenderDispatcher().getSubmitNodeStorage(), light, OverlayTexture.NO_OVERLAY, EntityRenderState.NO_OUTLINE); + renderState.submit(matrices, submitNodeStorage, light, OverlayTexture.NO_OVERLAY, EntityRenderState.NO_OUTLINE); //client.getBlockRenderer().renderSingleBlock(blockState, matrices, immediate, light, OverlayTexture.NO_OVERLAY); @@ -476,7 +475,7 @@ public class ShapesRenderer //matrices.mulPose(levelRenderState.cameraRenderState.); - blockEntityRenderer.submit(state, matrices,client.gameRenderer.featureRenderDispatcher().getSubmitNodeStorage(), levelRenderState.cameraRenderState); + blockEntityRenderer.submit(state, matrices,submitNodeStorage, levelRenderState.cameraRenderState); //blockEntityRenderer.submit(BlockEntity, partialTick, // matrices, light, OverlayTexture.NO_OVERLAY, camera1.getPosition(), null, client.gameRenderer.getFeatureRenderDispatcher().getSubmitNodeStorage()); @@ -492,14 +491,14 @@ public class ShapesRenderer final ItemStackRenderState itemState = new ItemStackRenderState(); client.getItemModelResolver().updateForTopItem(itemState, shape.item, ItemDisplayContext.FIXED, client.level, null, 0); - itemState.submit(matrices, client.gameRenderer.featureRenderDispatcher().getSubmitNodeStorage(), light, OverlayTexture.NO_OVERLAY, EntityRenderState.NO_OUTLINE); + itemState.submit(matrices, submitNodeStorage, light, OverlayTexture.NO_OVERLAY, EntityRenderState.NO_OUTLINE); //client.getItemRenderer().renderStatic(shape.item, transformType, light, // OverlayTexture.NO_OVERLAY, matrices, immediate, client.level, (int) shape.key(client.level.registryAccess())); } } matrices.popPose(); - immediate.uploadAndDraw(); + //immediate.uploadAndDraw(); ////RenderSystem.disableCull(); ////RenderSystem.disableDepthTest(); ////RenderSystem.depthMask(false); @@ -523,7 +522,7 @@ public class ShapesRenderer } @Override - public void renderLines(PoseStack matrices, double cx, double cy, double cz, float partialTick, LevelRenderState levelRenderState, DrawableGizmoPrimitives primitives) + public void renderLines(PoseStack matrices, double cx, double cy, double cz, float partialTick, LevelRenderState levelRenderState, DrawableGizmoPrimitives primitives, SubmitNodeStorage submitNodeStorage) { if (shape.a == 0.0) { @@ -575,22 +574,33 @@ public class ShapesRenderer } //try (ByteBufferBuilder bbb = new ByteBufferBuilder(RenderType.TRANSIENT_BUFFER_SIZE)) //{ - MultiBufferSource.BufferSource immediate = Minecraft.getInstance().gameRenderer.renderBuffers().bufferSource(); + //MultiBufferSource.BufferSource immediate = Minecraft.getInstance().gameRenderer.renderBuffers().bufferSource(); // text doesn't appear if backgroud is set ///script run draw_shape('label', 100, 'pos', [200, 100, 200], 'text', 'Hewwo World!', 'color', 0xffffffff, 'fill', 0x33333333) //textRenderer.drawInBatch(shape.value, text_x, 0.0F, shape.textcolor, false, matrices.last().pose(), immediate, Font.DisplayMode.SEE_THROUGH, shape.textbck, 15728880); final Font.PreparedText preparedText = textRenderer.prepareText(shape.value.getVisualOrderText(), text_x, 0.0F, shape.textcolor, false, false,0); - preparedText.visit(new Font.GlyphVisitor() { + + /*preparedText.visit(new Font.GlyphVisitor() { @Override public void acceptRenderable(final TextRenderable renderable) { - final VertexConsumer buffer = immediate.getBuffer(renderable.renderType(Font.DisplayMode.NORMAL)); + final VertexConsumer buffer = getVertexBuilder(renderable.renderType(Font.DisplayMode.NORMAL)); renderable.render(matrices.last().pose(), buffer, LightCoordsUtil.FULL_BRIGHT, false); } }); - immediate.uploadAndDraw(); + preparedText.visit(new Font.GlyphVisitor() { + @Override + public void acceptRenderable(final TextRenderable renderable) { + //final VertexConsumer buffer = immediate.getBuffer(renderable.renderType(Font.DisplayMode.NORMAL)); + renderable.render(matrices.last().pose(), buffer, LightCoordsUtil.FULL_BRIGHT, false); + } + }); + + */ + + //immediate.uploadAndDraw(); //} matrices.popPose(); ////RenderSystem.enableCull(); @@ -626,7 +636,7 @@ public class ShapesRenderer } @Override - public void renderLines(PoseStack matrices, double cx, double cy, double cz, float partialTick, LevelRenderState levelRenderState, DrawableGizmoPrimitives primitives) + public void renderLines(PoseStack matrices, double cx, double cy, double cz, float partialTick, LevelRenderState levelRenderState, DrawableGizmoPrimitives primitives, SubmitNodeStorage submitNodeStorage) { if (shape.a == 0.0) { @@ -670,7 +680,7 @@ public class ShapesRenderer } @Override - public void renderLines(PoseStack matrices, double cx, double cy, double cz, float partialTick, LevelRenderState levelRenderState, DrawableGizmoPrimitives primitives) + public void renderLines(PoseStack matrices, double cx, double cy, double cz, float partialTick, LevelRenderState levelRenderState, DrawableGizmoPrimitives primitives, SubmitNodeStorage submitNodeStorage) { Vec3 v1 = shape.relativiseRender(client.level, shape.from, partialTick); Vec3 v2 = shape.relativiseRender(client.level, shape.to, partialTick); @@ -685,8 +695,8 @@ public class ShapesRenderer public static class RenderedPolyface extends RenderedShape { // mode now can only be 4, 5, or 6 - private static final VertexFormat.Mode[] faceIndices = new VertexFormat.Mode[]{ - Mode.LINES, Mode.LINES, Mode.DEBUG_LINES, Mode.DEBUG_LINE_STRIP, Mode.TRIANGLES, Mode.TRIANGLE_STRIP, Mode.TRIANGLE_FAN, Mode.QUADS}; + //private static final VertexFormat.Mode[] faceIndices = new VertexFormat.Mode[]{ + // Mode.LINES, Mode.LINES, Mode.DEBUG_LINES, Mode.DEBUG_LINE_STRIP, Mode.TRIANGLES, Mode.TRIANGLE_STRIP, Mode.TRIANGLE_FAN, Mode.QUADS}; private static final RenderType [] renderTypes = new RenderType[] { RenderTypes.lines(), @@ -742,7 +752,7 @@ public class ShapesRenderer @Override public void renderLines(PoseStack matrices, double cx, double cy, - double cz, float partialTick, LevelRenderState levelRenderState, DrawableGizmoPrimitives primitives) + double cz, float partialTick, LevelRenderState levelRenderState, DrawableGizmoPrimitives primitives, SubmitNodeStorage submitNodeStorage) { if (shape.a == 0) { @@ -877,7 +887,7 @@ public class ShapesRenderer } @Override - public void renderLines(PoseStack matrices, double cx, double cy, double cz, float partialTick, LevelRenderState levelRenderState, DrawableGizmoPrimitives primitives) + public void renderLines(PoseStack matrices, double cx, double cy, double cz, float partialTick, LevelRenderState levelRenderState, DrawableGizmoPrimitives primitives, SubmitNodeStorage submitNodeStorage) { if (shape.a == 0.0) { @@ -913,7 +923,7 @@ public class ShapesRenderer } @Override - public void renderLines(PoseStack matrices, double cx, double cy, double cz, float partialTick, LevelRenderState levelRenderState, DrawableGizmoPrimitives primitives) + public void renderLines(PoseStack matrices, double cx, double cy, double cz, float partialTick, LevelRenderState levelRenderState, DrawableGizmoPrimitives primitives, SubmitNodeStorage submitNodeStorage) { if (shape.a == 0.0) {