From e5b298d75949b9b62df8b06727f90eb497dfe894 Mon Sep 17 00:00:00 2001 From: Philanche <63911787+Philanche@users.noreply.github.com> Date: Sun, 23 Jun 2024 14:37:20 +0200 Subject: [PATCH 1/4] Fix tooltips being set to the wrong key in the threads tab. --- .../cortex/voxy/client/config/VoxyConfigScreenFactory.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/main/java/me/cortex/voxy/client/config/VoxyConfigScreenFactory.java b/src/main/java/me/cortex/voxy/client/config/VoxyConfigScreenFactory.java index f8b04712..02de9d75 100644 --- a/src/main/java/me/cortex/voxy/client/config/VoxyConfigScreenFactory.java +++ b/src/main/java/me/cortex/voxy/client/config/VoxyConfigScreenFactory.java @@ -115,19 +115,19 @@ public class VoxyConfigScreenFactory implements ModMenuApi { ConfigEntryBuilder entryBuilder = builder.entryBuilder(); category.addEntry(entryBuilder.startIntSlider(Text.translatable("voxy.config.threads.ingest"), config.ingestThreads, 1, Runtime.getRuntime().availableProcessors()) - .setTooltip(Text.translatable("voxy.config.ingest.tooltip")) + .setTooltip(Text.translatable("voxy.config.threads.ingest.tooltip")) .setSaveConsumer(val -> config.ingestThreads = val) .setDefaultValue(DEFAULT.ingestThreads) .build()); category.addEntry(entryBuilder.startIntSlider(Text.translatable("voxy.config.threads.saving"), config.savingThreads, 1, Runtime.getRuntime().availableProcessors()) - .setTooltip(Text.translatable("voxy.config.saving.tooltip")) + .setTooltip(Text.translatable("voxy.config.threads.saving.tooltip")) .setSaveConsumer(val -> config.savingThreads = val) .setDefaultValue(DEFAULT.savingThreads) .build()); category.addEntry(entryBuilder.startIntSlider(Text.translatable("voxy.config.threads.render"), config.renderThreads, 1, Runtime.getRuntime().availableProcessors()) - .setTooltip(Text.translatable("voxy.config.render.tooltip")) + .setTooltip(Text.translatable("voxy.config.threads.render.tooltip")) .setSaveConsumer(val -> config.renderThreads = val) .setDefaultValue(DEFAULT.renderThreads) .build()); From 086a7ee6a99edd8f2ec14f8f83e9e9a56514dcd6 Mon Sep 17 00:00:00 2001 From: MCRcortex <18544518+MCRcortex@users.noreply.github.com> Date: Wed, 17 Jul 2024 23:10:38 +1000 Subject: [PATCH 2/4] Use non-meshlet backend --- src/main/java/me/cortex/voxy/client/core/VoxelCore.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/me/cortex/voxy/client/core/VoxelCore.java b/src/main/java/me/cortex/voxy/client/core/VoxelCore.java index 1dcbe934..00a9d051 100644 --- a/src/main/java/me/cortex/voxy/client/core/VoxelCore.java +++ b/src/main/java/me/cortex/voxy/client/core/VoxelCore.java @@ -116,7 +116,7 @@ public class VoxelCore { } private AbstractFarWorldRenderer createRenderBackend() { - if (true) { + if (false) { System.out.println("Using Gl46MeshletFarWorldRendering"); return new Gl46MeshletsFarWorldRenderer(VoxyConfig.CONFIG.geometryBufferSize, VoxyConfig.CONFIG.maxSections); } else { From a9c079661d4cd2396b6a4986d6df7594a8a5d70d Mon Sep 17 00:00:00 2001 From: mcrcortex <{ID}+{username}@users.noreply.github.com> Date: Sat, 20 Jul 2024 20:27:17 +1000 Subject: [PATCH 3/4] Automaticly ingest chunks created by chunky --- build.gradle | 11 ++++- .../client/mixin/chunky/MixinFabricWorld.java | 44 +++++++++++++++++++ src/main/resources/voxy.mixins.json | 5 ++- 3 files changed, 57 insertions(+), 3 deletions(-) create mode 100644 src/main/java/me/cortex/voxy/client/mixin/chunky/MixinFabricWorld.java diff --git a/build.gradle b/build.gradle index ff07cc7b..7c67fd04 100644 --- a/build.gradle +++ b/build.gradle @@ -62,8 +62,15 @@ dependencies { modCompileOnly("maven.modrinth:starlight:1.1.3+1.20.4") //modCompileOnly("maven.modrinth:immersiveportals:v5.1.7-mc1.20.4") modCompileOnly("maven.modrinth:vivecraft:1.20.4-1.1.6-fabric") - modCompileOnly("maven.modrinth:chunky:1.3.138") - modRuntimeOnly("maven.modrinth:chunky:1.3.138") + + modCompileOnly("maven.modrinth:chunky:1.4.16-fabric") + modRuntimeOnly("maven.modrinth:chunky:1.4.16-fabric") + + modRuntimeOnly("maven.modrinth:spark:1.10.73-fabric") + modRuntimeOnly("maven.modrinth:fabric-permissions-api:0.3.1") + //modRuntimeOnly("maven.modrinth:nsight-loader:1.2.0") + + modImplementation('io.github.douira:glsl-transformer:2.0.1') } diff --git a/src/main/java/me/cortex/voxy/client/mixin/chunky/MixinFabricWorld.java b/src/main/java/me/cortex/voxy/client/mixin/chunky/MixinFabricWorld.java new file mode 100644 index 00000000..1d008b45 --- /dev/null +++ b/src/main/java/me/cortex/voxy/client/mixin/chunky/MixinFabricWorld.java @@ -0,0 +1,44 @@ +package me.cortex.voxy.client.mixin.chunky; + +import com.llamalad7.mixinextras.injector.wrapoperation.Operation; +import com.llamalad7.mixinextras.injector.wrapoperation.WrapOperation; +import me.cortex.voxy.client.Voxy; +import me.cortex.voxy.client.config.VoxyConfig; +import me.cortex.voxy.client.core.IGetVoxelCore; +import net.minecraft.client.MinecraftClient; +import net.minecraft.client.util.math.MatrixStack; +import net.minecraft.server.world.ChunkHolder; +import net.minecraft.server.world.OptionalChunk; +import net.minecraft.server.world.ServerChunkLoadingManager; +import net.minecraft.server.world.ServerWorld; +import net.minecraft.world.chunk.Chunk; +import net.minecraft.world.chunk.ChunkStatus; +import net.minecraft.world.chunk.WorldChunk; +import org.joml.Matrix4f; +import org.popcraft.chunky.platform.FabricWorld; +import org.spongepowered.asm.mixin.Final; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Shadow; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Redirect; + +import java.util.concurrent.CompletableFuture; +import java.util.concurrent.Executor; +import java.util.function.BiConsumer; + +@Mixin(FabricWorld.class) +public class MixinFabricWorld { + @WrapOperation(method = "getChunkAtAsync", at = @At(value = "INVOKE", target = "Lnet/minecraft/server/world/ChunkHolder;load(Lnet/minecraft/world/chunk/ChunkStatus;Lnet/minecraft/server/world/ServerChunkLoadingManager;)Ljava/util/concurrent/CompletableFuture;")) + private CompletableFuture> captureGeneratedChunk(ChunkHolder instance, ChunkStatus chunkStatus, ServerChunkLoadingManager serverChunkLoadingManager, Operation>> original) { + var future = original.call(instance, chunkStatus, serverChunkLoadingManager); + return future.thenApplyAsync(res->{ + res.ifPresent(chunk -> { + var core = ((IGetVoxelCore)(MinecraftClient.getInstance().worldRenderer)).getVoxelCore(); + if (core != null && VoxyConfig.CONFIG.ingestEnabled) { + core.enqueueIngest((WorldChunk) chunk); + } + }); + return res; + }); + } +} diff --git a/src/main/resources/voxy.mixins.json b/src/main/resources/voxy.mixins.json index df537eb7..efe79540 100644 --- a/src/main/resources/voxy.mixins.json +++ b/src/main/resources/voxy.mixins.json @@ -15,5 +15,8 @@ ], "injectors": { "defaultRequire": 1 - } + }, + "mixins": [ + "chunky.MixinFabricWorld" + ] } From 56ef3013e269a22c90d0ea7b517d447e8857e4c8 Mon Sep 17 00:00:00 2001 From: MCRcortex <18544518+MCRcortex@users.noreply.github.com> Date: Thu, 25 Jul 2024 02:17:10 +1000 Subject: [PATCH 4/4] Fix null default config Set default config --- src/main/java/me/cortex/voxy/client/config/VoxyConfig.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/main/java/me/cortex/voxy/client/config/VoxyConfig.java b/src/main/java/me/cortex/voxy/client/config/VoxyConfig.java index a4bba2bd..f70afefc 100644 --- a/src/main/java/me/cortex/voxy/client/config/VoxyConfig.java +++ b/src/main/java/me/cortex/voxy/client/config/VoxyConfig.java @@ -50,7 +50,9 @@ public class VoxyConfig { e.printStackTrace(); } } - return new VoxyConfig(); + var config = new VoxyConfig(); + config.defaultSaveConfig = ContextSelectionSystem.DEFAULT_STORAGE_CONFIG; + return config; } public void save() { //Unsafe, todo: fixme! needs to be atomic!