diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index ee32acca..08206ce2 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -3,23 +3,23 @@ format = { version = "1.1" } [versions] indra = "3.1.3" -minecraft = "1.21.4" -fabricLoader = "0.16.9" -fabricApi = "0.112.2+1.21.4" -modmenu = "13.0.0-beta.1" +minecraft = "1.21.5" +fabricLoader = "0.16.14" +fabricApi = "0.124.0+1.21.5" +modmenu = "14.0.0-rc.2" viafabricplus = "3.3.0" vineflower = "1.10.1" cuiProtocol = "4.0.0" [libraries] minecraft = { module = "com.mojang:minecraft", version.ref = "minecraft" } -parchment = { module = "org.parchmentmc.data:parchment-1.21.4", version = "2024.12.07" } +parchment = { module = "org.parchmentmc.data:parchment-1.21.5", version = "2025.04.19" } fabric-loader = { module = "net.fabricmc:fabric-loader", version.ref = "fabricLoader" } fabric-api = { module = "net.fabricmc.fabric-api:fabric-api", version.ref = "fabricApi" } fabric-api-bom = { module = "net.fabricmc.fabric-api:fabric-api-bom", version.ref = "fabricApi" } fabric-api-networking = { module = "net.fabricmc.fabric-api:fabric-networking-api-v1" } modmenu = { module = "com.terraformersmc:modmenu", version.ref = "modmenu" } -neoforge = { module = "net.neoforged:neoforge", version = "21.4.38-beta"} +neoforge = { module = "net.neoforged:neoforge", version = "21.5.63-beta"} viafabricplus-api = { module = "de.florianmichael:ViaFabricPlus", version.ref = "viafabricplus" } viaversion = { module = "com.viaversion:viaversion-common", version = "5.0.5" } vineflower = { module = "org.vineflower:vineflower", version.ref = "vineflower" } @@ -31,7 +31,7 @@ curseForgeGradle = { id = "net.darkhax.curseforgegradle", version = "1.1.26" } indra-git = { id = "net.kyori.indra.git", version.ref = "indra" } indra-spotlessLicenser = { id = "net.kyori.indra.licenser.spotless", version.ref = "indra" } jvmConflictResolution = { id = "org.gradlex.jvm-dependency-conflict-resolution", version = "2.1.2" } -loom = { id = "dev.architectury.loom", version = "1.9.420" } +loom = { id = "dev.architectury.loom", version = "1.10.430" } minotaur = { id = "com.modrinth.minotaur", version = "2.8.7" } publishGithubRelease = { id = "ca.stellardrift.publish-github-release", version = "0.1.0" } shadow = { id = "com.gradleup.shadow", version = "8.3.5" } @@ -39,9 +39,9 @@ spotless = { id = "com.diffplug.spotless", version = "6.25.0" } versions = { id = "com.github.ben-manes.versions", version = "0.51.0" } [libraries.cuiProtocol-fabric] -module = "org.enginehub.worldeditcui-protocol:worldeditcui-protocol-fabric-mc1.21.4" +module = "org.enginehub.worldeditcui-protocol:worldeditcui-protocol-fabric-mc1.21.5" version.ref = "cuiProtocol" [libraries.cuiProtocol-neoforge] -module = "org.enginehub.worldeditcui-protocol:worldeditcui-protocol-neoforge-mc1.21.4" +module = "org.enginehub.worldeditcui-protocol:worldeditcui-protocol-neoforge-mc1.21.5" version.ref = "cuiProtocol" diff --git a/worldeditcui-fabric/src/main/java/org/enginehub/worldeditcui/event/listeners/CUIListenerWorldRender.java b/worldeditcui-fabric/src/main/java/org/enginehub/worldeditcui/event/listeners/CUIListenerWorldRender.java index 1fc48eaa..dda7a554 100644 --- a/worldeditcui-fabric/src/main/java/org/enginehub/worldeditcui/event/listeners/CUIListenerWorldRender.java +++ b/worldeditcui-fabric/src/main/java/org/enginehub/worldeditcui/event/listeners/CUIListenerWorldRender.java @@ -9,10 +9,12 @@ */ package org.enginehub.worldeditcui.event.listeners; -import com.mojang.blaze3d.platform.GlStateManager; +import com.mojang.blaze3d.opengl.GlConst; +import com.mojang.blaze3d.opengl.GlStateManager; +import com.mojang.blaze3d.platform.DestFactor; +import com.mojang.blaze3d.platform.SourceFactor; import com.mojang.blaze3d.systems.RenderSystem; import net.minecraft.client.Minecraft; -import net.minecraft.client.renderer.CompiledShaderProgram; import net.minecraft.client.renderer.FogParameters; import net.minecraft.util.profiling.Profiler; import net.minecraft.util.profiling.ProfilerFiller; @@ -100,15 +102,18 @@ public void onRender(final float partialTicks) { RenderSystem.setShaderFog(FogParameters.NO_FOG); final Matrix4fStack poseStack = RenderSystem.getModelViewStack(); poseStack.pushMatrix(); - RenderSystem.disableCull(); - RenderSystem.enableBlend(); + GlStateManager._disableCull(); + GlStateManager._enableBlend(); // RenderSystem.disableTexture(); - RenderSystem.enableDepthTest(); - RenderSystem.blendFunc(GlStateManager.SourceFactor.SRC_ALPHA, GlStateManager.DestFactor.ONE_MINUS_SRC_ALPHA); - RenderSystem.depthMask(true); + GlStateManager._enableDepthTest(); + GlStateManager._blendFuncSeparate( + GlConst.toGl(SourceFactor.SRC_ALPHA), + GlConst.toGl(DestFactor.ONE_MINUS_SRC_ALPHA), + GlConst.toGl(SourceFactor.SRC_ALPHA), + GlConst.toGl(DestFactor.ONE_MINUS_SRC_ALPHA)); + GlStateManager._depthMask(true); RenderSystem.lineWidth(LineStyle.DEFAULT_WIDTH); - final CompiledShaderProgram oldShader = RenderSystem.getShader(); try { this.controller.renderSelections(this.ctx); this.sink.flush(); @@ -117,11 +122,10 @@ public void onRender(final float partialTicks) { this.invalidatePipeline(); } - RenderSystem.depthFunc(GL32.GL_LEQUAL); - RenderSystem.setShader(oldShader); + GlStateManager._depthFunc(GL32.GL_LEQUAL); // RenderSystem.enableTexture(); - RenderSystem.disableBlend(); - RenderSystem.enableCull(); + GlStateManager._disableBlend(); + GlStateManager._enableCull(); poseStack.popMatrix(); RenderSystem.setShaderFog(fogStart); profiler.pop(); diff --git a/worldeditcui-fabric/src/main/java/org/enginehub/worldeditcui/fabric/FabricModWorldEditCUI.java b/worldeditcui-fabric/src/main/java/org/enginehub/worldeditcui/fabric/FabricModWorldEditCUI.java index c6661558..d61656e8 100644 --- a/worldeditcui-fabric/src/main/java/org/enginehub/worldeditcui/fabric/FabricModWorldEditCUI.java +++ b/worldeditcui-fabric/src/main/java/org/enginehub/worldeditcui/fabric/FabricModWorldEditCUI.java @@ -100,10 +100,10 @@ public void onInitialize() { RenderSystem.getModelViewStack().pushMatrix(); RenderSystem.getModelViewStack().mul(ctx.matrixStack().last().pose()); // RenderSystem.applyModelViewMatrix(); - ctx.worldRenderer().getTranslucentTarget().bindWrite(false); + //ctx.worldRenderer().getTranslucentTarget().bindWrite(false); this.onPostRenderEntities(ctx); } finally { - Minecraft.getInstance().getMainRenderTarget().bindWrite(false); + //Minecraft.getInstance().getMainRenderTarget().bindWrite(false); RenderSystem.getModelViewStack().popMatrix(); } } diff --git a/worldeditcui-fabric/src/main/java/org/enginehub/worldeditcui/render/BufferBuilderRenderSink.java b/worldeditcui-fabric/src/main/java/org/enginehub/worldeditcui/render/BufferBuilderRenderSink.java index 60a9d70f..8b9c6dda 100644 --- a/worldeditcui-fabric/src/main/java/org/enginehub/worldeditcui/render/BufferBuilderRenderSink.java +++ b/worldeditcui-fabric/src/main/java/org/enginehub/worldeditcui/render/BufferBuilderRenderSink.java @@ -9,12 +9,12 @@ */ package org.enginehub.worldeditcui.render; +import com.mojang.blaze3d.opengl.GlStateManager; +import com.mojang.blaze3d.pipeline.RenderPipeline; import com.mojang.blaze3d.systems.RenderSystem; import com.mojang.blaze3d.vertex.BufferBuilder; -import com.mojang.blaze3d.vertex.BufferUploader; import com.mojang.blaze3d.vertex.Tesselator; import com.mojang.blaze3d.vertex.VertexFormat; -import net.minecraft.client.renderer.ShaderProgram; import org.jetbrains.annotations.Nullable; import org.joml.Vector3f; import org.lwjgl.opengl.GL11; @@ -91,7 +91,7 @@ public boolean apply(final LineStyle line, final RenderStyle.RenderType type) { this.builder = Tesselator.getInstance().begin(this.activeRenderType.mode, this.activeRenderType.format); } LineWidth.set(this.lastLineWidth = line.lineWidth); - RenderSystem.depthFunc(this.lastDepthFunc = line.renderType.depthFunc()); + GlStateManager._depthFunc(this.lastDepthFunc = line.renderType.depthFunc()); } return true; } @@ -227,10 +227,10 @@ public void flush() { this.canFlush = false; this.preFlush.run(); try { - if (this.activeRenderType != null) { - RenderSystem.setShader(this.activeRenderType.shader); + if (this.activeRenderType == null) { + throw new IllegalStateException("Active type cannot be null"); } - BufferUploader.drawWithShader(this.builder.buildOrThrow()); + this.activeRenderType.type.draw(this.builder.buildOrThrow()); } finally { this.postFlush.run(); this.builder = null; @@ -269,13 +269,13 @@ public static class RenderType { private final VertexFormat.Mode mode; private final VertexFormat format; private final boolean hasNormals; - private final ShaderProgram shader; + private final net.minecraft.client.renderer.RenderType type; - public RenderType(final VertexFormat.Mode mode, final VertexFormat format, final ShaderProgram shader) { + public RenderType(final VertexFormat.Mode mode, final VertexFormat format, @Nullable final net.minecraft.client.renderer.RenderType renderPipeline) { this.mode = mode; this.format = format; this.hasNormals = format.getElementAttributeNames().contains("Normal"); - this.shader = shader; + this.type = renderPipeline; } VertexFormat.Mode mode() { @@ -290,10 +290,6 @@ boolean hasNormals() { return this.hasNormals; } - ShaderProgram shader() { - return this.shader; - } - boolean mustFlushAfter(final RenderType previous) { return previous.mode != this.mode || !Objects.equals(previous.format, this.format); } diff --git a/worldeditcui-fabric/src/main/java/org/enginehub/worldeditcui/render/OptifinePipelineProvider.java b/worldeditcui-fabric/src/main/java/org/enginehub/worldeditcui/render/OptifinePipelineProvider.java index 32324b84..e191ae24 100644 --- a/worldeditcui-fabric/src/main/java/org/enginehub/worldeditcui/render/OptifinePipelineProvider.java +++ b/worldeditcui-fabric/src/main/java/org/enginehub/worldeditcui/render/OptifinePipelineProvider.java @@ -12,8 +12,6 @@ import com.mojang.blaze3d.vertex.DefaultVertexFormat; import com.mojang.blaze3d.vertex.VertexFormat; import com.mojang.logging.LogUtils; -import net.minecraft.client.renderer.CoreShaders; -import net.minecraft.client.renderer.GameRenderer; import org.slf4j.Logger; import java.lang.invoke.MethodHandle; @@ -87,9 +85,9 @@ static String activeProgram() { public static class OptifineTypeFactory implements BufferBuilderRenderSink.TypeFactory { public static final OptifineTypeFactory INSTANCE = new OptifineTypeFactory(); - private static final BufferBuilderRenderSink.RenderType QUADS = new BufferBuilderRenderSink.RenderType(VertexFormat.Mode.QUADS, DefaultVertexFormat.POSITION_COLOR, CoreShaders.POSITION_COLOR); - private static final BufferBuilderRenderSink.RenderType LINES = new BufferBuilderRenderSink.RenderType(VertexFormat.Mode.DEBUG_LINES, DefaultVertexFormat.POSITION_COLOR, CoreShaders.POSITION_COLOR); - private static final BufferBuilderRenderSink.RenderType LINES_LOOP = new BufferBuilderRenderSink.RenderType(VertexFormat.Mode.DEBUG_LINES, DefaultVertexFormat.POSITION_COLOR, CoreShaders.POSITION_COLOR); + private static final BufferBuilderRenderSink.RenderType QUADS = new BufferBuilderRenderSink.RenderType(VertexFormat.Mode.QUADS, DefaultVertexFormat.POSITION_COLOR, null); + private static final BufferBuilderRenderSink.RenderType LINES = new BufferBuilderRenderSink.RenderType(VertexFormat.Mode.DEBUG_LINES, DefaultVertexFormat.POSITION_COLOR, null); + private static final BufferBuilderRenderSink.RenderType LINES_LOOP = new BufferBuilderRenderSink.RenderType(VertexFormat.Mode.DEBUG_LINES, DefaultVertexFormat.POSITION_COLOR, null); private OptifineTypeFactory() {} diff --git a/worldeditcui-fabric/src/main/java/org/enginehub/worldeditcui/render/VanillaPipelineProvider.java b/worldeditcui-fabric/src/main/java/org/enginehub/worldeditcui/render/VanillaPipelineProvider.java index 25fd4e63..104fba78 100644 --- a/worldeditcui-fabric/src/main/java/org/enginehub/worldeditcui/render/VanillaPipelineProvider.java +++ b/worldeditcui-fabric/src/main/java/org/enginehub/worldeditcui/render/VanillaPipelineProvider.java @@ -9,19 +9,30 @@ */ package org.enginehub.worldeditcui.render; +import com.mojang.blaze3d.pipeline.BlendFunction; +import com.mojang.blaze3d.pipeline.RenderPipeline; import com.mojang.blaze3d.vertex.DefaultVertexFormat; import com.mojang.blaze3d.vertex.VertexFormat; -import net.minecraft.client.renderer.CoreShaders; -import net.minecraft.client.renderer.GameRenderer; +import net.minecraft.client.renderer.RenderPipelines; +import net.minecraft.client.renderer.RenderType; public final class VanillaPipelineProvider implements PipelineProvider { public static class DefaultTypeFactory implements BufferBuilderRenderSink.TypeFactory { public static final DefaultTypeFactory INSTANCE = new DefaultTypeFactory(); - - private static final BufferBuilderRenderSink.RenderType QUADS = new BufferBuilderRenderSink.RenderType(VertexFormat.Mode.QUADS, DefaultVertexFormat.POSITION_COLOR, CoreShaders.POSITION_COLOR); - private static final BufferBuilderRenderSink.RenderType LINES = new BufferBuilderRenderSink.RenderType(VertexFormat.Mode.LINES, DefaultVertexFormat.POSITION_COLOR_NORMAL, CoreShaders.RENDERTYPE_LINES); - private static final BufferBuilderRenderSink.RenderType LINES_LOOP = new BufferBuilderRenderSink.RenderType(VertexFormat.Mode.LINES, DefaultVertexFormat.POSITION_COLOR_NORMAL, CoreShaders.RENDERTYPE_LINES); + private static final BufferBuilderRenderSink.RenderType QUADS = new BufferBuilderRenderSink.RenderType(VertexFormat.Mode.QUADS, DefaultVertexFormat.POSITION_COLOR, + RenderType.create("quads", 1536, false, true, + RenderPipeline.builder(RenderPipeline.builder(RenderPipelines.MATRICES_COLOR_SNIPPET) + .withVertexShader("core/position_color") + .withFragmentShader("core/position_color") + .withBlend(BlendFunction.TRANSLUCENT) + .withVertexFormat(DefaultVertexFormat.POSITION_COLOR, VertexFormat.Mode.QUADS) + .buildSnippet()) + .withLocation("pipeline/wecui_quads").withCull(false).build(), + RenderType.CompositeState.builder().createCompositeState(false) + )); + private static final BufferBuilderRenderSink.RenderType LINES = new BufferBuilderRenderSink.RenderType(VertexFormat.Mode.LINES, DefaultVertexFormat.POSITION_COLOR_NORMAL, RenderType.LINES); + private static final BufferBuilderRenderSink.RenderType LINES_LOOP = new BufferBuilderRenderSink.RenderType(VertexFormat.Mode.LINES, DefaultVertexFormat.POSITION_COLOR_NORMAL, RenderType.LINES); private DefaultTypeFactory() {} diff --git a/worldeditcui-fabric/src/main/java/org/enginehub/worldeditcui/render/shapes/Render3DGrid.java b/worldeditcui-fabric/src/main/java/org/enginehub/worldeditcui/render/shapes/Render3DGrid.java index 6410bca0..81b7e0c9 100644 --- a/worldeditcui-fabric/src/main/java/org/enginehub/worldeditcui/render/shapes/Render3DGrid.java +++ b/worldeditcui-fabric/src/main/java/org/enginehub/worldeditcui/render/shapes/Render3DGrid.java @@ -9,6 +9,7 @@ */ package org.enginehub.worldeditcui.render.shapes; +import com.mojang.blaze3d.opengl.GlStateManager; import com.mojang.blaze3d.systems.RenderSystem; import net.minecraft.util.Mth; import org.enginehub.worldeditcui.event.listeners.CUIRenderContext; @@ -87,7 +88,7 @@ public void render(CUIRenderContext ctx) if (this.spacing != 1.0) { - RenderSystem.disableCull(); + GlStateManager._disableCull(); double[] vertices = { x1, y1, z1, x2, y1, z1, x2, y1, z2, x1, y1, z2, // bottom @@ -113,7 +114,7 @@ public void render(CUIRenderContext ctx) } ctx.flush(); // todo: only needed because of disable/enable cull - RenderSystem.enableCull(); + GlStateManager._enableCull(); } if (this.spacing < Render3DGrid.MIN_SPACING) diff --git a/worldeditcui-fabric/src/main/resources/fabric.mod.json b/worldeditcui-fabric/src/main/resources/fabric.mod.json index b93c1ca1..f2f0dde4 100644 --- a/worldeditcui-fabric/src/main/resources/fabric.mod.json +++ b/worldeditcui-fabric/src/main/resources/fabric.mod.json @@ -42,7 +42,7 @@ "fabric-lifecycle-events-v1": "^2.0.0", "fabric-screen-api-v1": ">=1.0.9", "fabric-resource-loader-v0": ">=0.4.17", - "minecraft": ">=1.21.2" + "minecraft": ">=1.21.5" }, "suggests": { "worldedit": ">=7.2.0"