Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,12 @@ allprojects {
version = "${rootProject.libs.versions.minecraft.get()}+01"

repositories {
mavenCentral {
name = "MavenCentralLWJGL"
mavenContent {
includeGroup("org.lwjgl")
}
}
// mirrors:
// - https://maven.minecraftforge.net/
// - https://maven.neoforged.net/
Expand Down
16 changes: 8 additions & 8 deletions gradle/libs.versions.toml
Original file line number Diff line number Diff line change
Expand Up @@ -3,10 +3,10 @@ format = { version = "1.1" }

[versions]
indra = "3.1.3"
minecraft = "26.1.1"
fabricLoader = "0.18.6"
fabricApi = "0.145.4+26.1.1"
modmenu = "18.0.0-alpha.8"
minecraft = "26.2"
fabricLoader = "0.19.3"
fabricApi = "0.152.1+26.2"
modmenu = "20.0.0-beta.2"
viafabricplus = "4.5.1"
vineflower = "1.11.2"
cuiProtocol = "4.0.3"
Expand All @@ -30,21 +30,21 @@ 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-no-remap", version = "1.14.471" }
loom = { id = "dev.architectury.loom-no-remap", version = "1.14.476" }
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" }
spotless = { id = "com.diffplug.spotless", version = "6.25.0" }
versions = { id = "com.github.ben-manes.versions", version = "0.51.0" }

[libraries.cuiProtocol-common]
module = "org.enginehub.worldeditcui-protocol:worldeditcui-protocol-common-mc26.1"
module = "org.enginehub.worldeditcui-protocol:worldeditcui-protocol-common-mc26.2"
version.ref = "cuiProtocol"

[libraries.cuiProtocol-fabric]
module = "org.enginehub.worldeditcui-protocol:worldeditcui-protocol-fabric-mc26.1"
module = "org.enginehub.worldeditcui-protocol:worldeditcui-protocol-fabric-mc26.2"
version.ref = "cuiProtocol"

[libraries.cuiProtocol-neoforge]
module = "org.enginehub.worldeditcui-protocol:worldeditcui-protocol-neoforge-mc26.1"
module = "org.enginehub.worldeditcui-protocol:worldeditcui-protocol-neoforge-mc26.2"
version.ref = "cuiProtocol"
Binary file modified gradle/wrapper/gradle-wrapper.jar
Binary file not shown.
4 changes: 3 additions & 1 deletion gradle/wrapper/gradle-wrapper.properties
Original file line number Diff line number Diff line change
@@ -1,7 +1,9 @@
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-9.4.1-bin.zip
distributionUrl=https\://services.gradle.org/distributions/gradle-9.5.1-bin.zip
networkTimeout=10000
retries=0
retryBackOffMs=500
validateDistributionUrl=true
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
2 changes: 1 addition & 1 deletion gradlew

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

31 changes: 10 additions & 21 deletions gradlew.bat

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Original file line number Diff line number Diff line change
Expand Up @@ -80,7 +80,6 @@ public void write(

private boolean debugMode = false;
private boolean promiscuous = false;
private boolean compatibilityRenderer = false;
private boolean clearAllOnKey = false;

private Colour cuboidGridColor = ConfiguredColour.CUBOIDGRID.getDefault();
Expand Down Expand Up @@ -136,10 +135,6 @@ public void setPromiscuous(boolean promiscuous) {
this.promiscuous = promiscuous;
}

public boolean isExperimentalRenderer() {
return this.compatibilityRenderer;
}

public boolean isClearAllOnKey() {
return this.clearAllOnKey;
}
Expand Down Expand Up @@ -172,7 +167,6 @@ public static CUIConfiguration create() {

configArray.put("debugMode", config.debugMode);
configArray.put("promiscuous", config.promiscuous);
configArray.put("compatibilityRenderer", config.compatibilityRenderer);
configArray.put("clearAllOnKey", config.clearAllOnKey);

configArray.put("cuboidGridColor", config.cuboidGridColor);
Expand Down Expand Up @@ -208,7 +202,6 @@ public Map<String, Object> getConfigArray() {
public void configChanged() {
debugMode = (Boolean) configArray.get("debugMode");
promiscuous = (Boolean) configArray.get("promiscuous");
compatibilityRenderer = (Boolean) configArray.get("compatibilityRenderer");
clearAllOnKey = (Boolean) configArray.get("clearAllOnKey");

cuboidGridColor = (Colour) configArray.get("cuboidGridColor");
Expand All @@ -230,7 +223,7 @@ public void configChanged() {

public Object getDefaultValue(String text) {
return switch (text) {
case "debugMode", "promiscuous", "compatibilityRenderer", "clearAllOnKey" -> false;
case "debugMode", "promiscuous", "clearAllOnKey" -> false;
case "cuboidGridColor" -> ConfiguredColour.CUBOIDGRID.getDefault();
case "cuboidEdgeColor" -> ConfiguredColour.CUBOIDBOX.getDefault();
case "cuboidFirstPointColor" -> ConfiguredColour.CUBOIDPOINT1.getDefault();
Expand Down Expand Up @@ -272,7 +265,6 @@ public Object getDefaultValue(String text) {
return switch (text) {
case "debugMode" -> "worldeditcui.options.debugMode";
case "promiscuous" -> "worldeditcui.options.compat.spammy";
case "compatibilityRenderer" -> "worldeditcui.options.compat.renderer";
case "clearAllOnKey" -> "worldeditcui.options.extra.clearall";
case "cuboidGridColor" -> "worldeditcui.color.cuboidgrid";
case "cuboidEdgeColor" -> "worldeditcui.color.cuboidedge";
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,21 +10,16 @@
package org.enginehub.worldeditcui.event.listeners;

import com.mojang.blaze3d.buffers.GpuBufferSlice;
import com.mojang.blaze3d.opengl.GlStateManager;
import com.mojang.blaze3d.systems.RenderSystem;
import net.minecraft.client.Minecraft;
import net.minecraft.client.renderer.fog.FogRenderer;
import net.minecraft.util.profiling.Profiler;
import net.minecraft.util.profiling.ProfilerFiller;
import org.enginehub.worldeditcui.WorldEditCUI;
import org.enginehub.worldeditcui.config.CUIConfiguration;
import org.enginehub.worldeditcui.render.BufferBuilderRenderSink;
import org.enginehub.worldeditcui.render.LineStyle;
import org.enginehub.worldeditcui.render.PipelineProvider;
import org.enginehub.worldeditcui.render.RenderSink;
import org.enginehub.worldeditcui.util.Vector3;
import org.joml.Matrix4fStack;
import org.lwjgl.opengl.GL32;

import java.util.HashSet;
import java.util.List;
Expand All @@ -42,41 +37,31 @@ public class CUIListenerWorldRender
private final WorldEditCUI controller;

private final Minecraft minecraft;
private final CUIConfiguration configuration;
private final CUIRenderContext ctx = new CUIRenderContext();
private final List<PipelineProvider> pipelines;
private final Set<String> disabledPipelines = new HashSet<>();
private boolean experimentalRendererSelected;
private PipelineProvider activePipeline;
private RenderSink sink;

public CUIListenerWorldRender(final WorldEditCUI controller, final Minecraft minecraft, final CUIConfiguration configuration, final List<PipelineProvider> pipelines)
public CUIListenerWorldRender(final WorldEditCUI controller, final Minecraft minecraft, final List<PipelineProvider> pipelines)
{
this.controller = controller;
this.minecraft = minecraft;
this.configuration = configuration;
this.pipelines = List.copyOf(pipelines);
this.experimentalRendererSelected = configuration.isExperimentalRenderer();
}

private RenderSink providePipeline()
{
final boolean useExperimentalRenderer = this.configuration.isExperimentalRenderer();
final PipelineProvider preferred = preferredPipeline();
if (useExperimentalRenderer != this.experimentalRendererSelected) {
this.experimentalRendererSelected = useExperimentalRenderer;
this.disabledPipelines.clear();
this.activePipeline = null;
this.sink = null;
} else if (this.sink != null && this.activePipeline != null
final PipelineProvider preferred = this.pipelines.getFirst();
if (this.sink != null && this.activePipeline != null
&& (this.activePipeline == preferred || !preferred.available() || this.disabledPipelines.contains(preferred.id()))) {
return this.sink;
} else if (this.sink != null && this.activePipeline != null && this.disabledPipelines.contains(this.activePipeline.id())) {
this.activePipeline = null;
this.sink = null;
}

for (final PipelineProvider pipeline : orderedPipelines())
for (final PipelineProvider pipeline : this.pipelines)
{
if (this.disabledPipelines.contains(pipeline.id())) {
continue;
Expand Down Expand Up @@ -108,34 +93,6 @@ private void invalidatePipeline() {
this.sink = null;
}

private PipelineProvider preferredPipeline() {
return pipelineById(this.configuration.isExperimentalRenderer() ? "vanilla" : "legacy-vanilla");
}

private List<PipelineProvider> orderedPipelines() {
if (this.configuration.isExperimentalRenderer()) {
return List.of(
pipelineById("vanilla"),
pipelineById("legacy-vanilla"),
pipelineById("optifine")
);
}
return List.of(
pipelineById("legacy-vanilla"),
pipelineById("optifine"),
pipelineById("vanilla")
);
}

private PipelineProvider pipelineById(final String id) {
for (final PipelineProvider pipeline : this.pipelines) {
if (pipeline.id().equals(id)) {
return pipeline;
}
}
throw new IllegalStateException("Missing pipeline provider " + id);
}

public void onRender(final float partialTicks) {
try {
final RenderSink sink = this.providePipeline();
Expand All @@ -146,19 +103,11 @@ public void onRender(final float partialTicks) {
}
final ProfilerFiller profiler = Profiler.get();
profiler.push("worldeditcui");
this.ctx.init(new Vector3(this.minecraft.gameRenderer.getMainCamera().position()), partialTicks, sink);
this.ctx.init(new Vector3(this.minecraft.gameRenderer.mainCamera().position()), partialTicks, sink);
final GpuBufferSlice fogStart = RenderSystem.getShaderFog();
RenderSystem.setShaderFog(this.minecraft.gameRenderer.fogRenderer.getBuffer(FogRenderer.FogMode.NONE));
final Matrix4fStack poseStack = RenderSystem.getModelViewStack();
final boolean legacySink = sink instanceof BufferBuilderRenderSink;
poseStack.pushMatrix();
if (legacySink) {
GlStateManager._enableBlend();
// RenderSystem.disableTexture();
GlStateManager._enableDepthTest();
GlStateManager._depthMask(true);
BufferBuilderRenderSink.LineWidth.set(LineStyle.DEFAULT_WIDTH);
}

try {
this.controller.renderSelections(this.ctx);
Expand All @@ -168,11 +117,6 @@ public void onRender(final float partialTicks) {
this.invalidatePipeline();
}

if (legacySink) {
GlStateManager._depthFunc(GL32.GL_LEQUAL);
// RenderSystem.enableTexture();
GlStateManager._disableBlend();
}
poseStack.popMatrix();
RenderSystem.setShaderFog(fogStart);
profiler.pop();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -29,10 +29,8 @@
import org.enginehub.worldeditcui.config.CUIConfiguration;
import org.enginehub.worldeditcui.event.listeners.CUIListenerChannel;
import org.enginehub.worldeditcui.event.listeners.CUIListenerWorldRender;
import org.enginehub.worldeditcui.render.LegacyVanillaPipelineProvider;
import org.enginehub.worldeditcui.protocol.CUIPacket;
import org.enginehub.worldeditcui.protocol.CUIPacketHandler;
import org.enginehub.worldeditcui.render.OptifinePipelineProvider;
import org.enginehub.worldeditcui.render.PipelineProvider;
import org.enginehub.worldeditcui.render.VanillaPipelineProvider;
import org.lwjgl.glfw.GLFW;
Expand All @@ -59,8 +57,6 @@ public final class FabricModWorldEditCUI implements ModInitializer {
private final KeyMapping keyBindChunkBorder = key("chunk", GLFW.GLFW_KEY_UNKNOWN);

private static final List<PipelineProvider> RENDER_PIPELINES = List.of(
new OptifinePipelineProvider(),
new LegacyVanillaPipelineProvider(),
new VanillaPipelineProvider()
);

Expand Down Expand Up @@ -124,7 +120,7 @@ private void onTick(final Minecraft mc) {
final boolean inGame = mc.player != null;
final boolean clock = mc.getDeltaTracker().getGameTimeDeltaPartialTick(false) > 0;

if (inGame && mc.screen == null) {
if (inGame && mc.gui.screen() == null) {
while (this.keyBindToggleUI.consumeClick()) {
this.visible = !this.visible;
}
Expand Down Expand Up @@ -178,7 +174,7 @@ private void onPluginMessage(final CUIPacket payload, final CUIPacketHandler.Pac
public void onGameInitDone(final Minecraft client) {
this.controller = new WorldEditCUI();
this.controller.initialise(client);
this.worldRenderListener = new CUIListenerWorldRender(this.controller, client, this.controller.getConfiguration(), RENDER_PIPELINES);
this.worldRenderListener = new CUIListenerWorldRender(this.controller, client, RENDER_PIPELINES);
this.channelListener = new CUIListenerChannel(this.controller);
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@ protected void init() {
this.addRenderableWidget(Button.builder(CommonComponents.GUI_DONE, (button) -> {
configuration.configChanged();
assert minecraft != null;
this.minecraft.setScreen(parent);
this.minecraft.gui.setScreen(parent);
}).bounds((this.width - BUTTON_DONE_WIDTH) / 2, this.height - (BUTTON_HEIGHT + 7), BUTTON_DONE_WIDTH, BUTTON_HEIGHT).build());

this.configList = CUIConfigList.create(this, this.minecraft);
Expand Down
Loading
Loading