From fee8dc9b138fc62c417e3e0013edee34117820b2 Mon Sep 17 00:00:00 2001 From: coolGi Date: Sun, 1 Oct 2023 22:32:19 +1030 Subject: [PATCH 01/27] 1.20.2 now builds (config looks odd, and updater disabled) --- .gitlab-ci.yml | 2 +- Readme.md | 7 ++ .../common/wrappers/gui/ClassicConfigGUI.java | 4 + .../common/wrappers/gui/MinecraftScreen.java | 4 + .../wrappers/gui/TexturedButtonWidget.java | 30 ++++-- .../wrappers/gui/updater/ChangelogScreen.java | 4 + .../wrappers/gui/updater/UpdateModScreen.java | 6 +- .../minecraft/MinecraftRenderWrapper.java | 14 +++ .../1_20_2.distanthorizons.accesswidener | 36 +++++++ .../mixins/client/MixinLevelRenderer.java | 7 +- .../fabric/mixins/client/MixinMinecraft.java | 15 ++- .../mixins/client/MixinLevelRenderer.java | 96 +++++-------------- .../forge/mixins/client/MixinMinecraft.java | 22 +++-- versionProperties/1.20.2.properties | 51 ++++++++++ 14 files changed, 204 insertions(+), 94 deletions(-) create mode 100644 common/src/main/resources/1_20_2.distanthorizons.accesswidener create mode 100644 versionProperties/1.20.2.properties diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 357292dae..e4b9db183 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -30,7 +30,7 @@ build: stage: build parallel: matrix: - - MC_VER: ["1.16.5", "1.17.1", "1.18.2", "1.19.2", "1.19.4", "1.20.1"] + - MC_VER: ["1.16.5", "1.17.1", "1.18.2", "1.19.2", "1.19.4", "1.20.1", "1.20.2"] script: # this both runs the unit tests and assembles the code - ./gradlew clean -PmcVer="${MC_VER}" -PgitMainBranch="${CI_COMMIT_BRANCH}" -PgitMainCommit="${CI_COMMIT_SHA}" -PgitCoreCommit="Unavailable (built by Gitlab CI)" --gradle-user-home cache/; diff --git a/Readme.md b/Readme.md index 48e52f592..7aaf778fc 100644 --- a/Readme.md +++ b/Readme.md @@ -20,6 +20,13 @@ If you want to see a quick demo, check out a video covering the mod here: ### This branch supports the following versions of Minecraft: +#### 1.20.2 +Fabric: 0.14.22\ +Fabric API: 0.89.2+1.20.2\ +Forge: 48.0.13\ +Parchment: 1.19.3:2023.03.25\ +Modmenu: 8.0.0 + #### 1.20.1, 1.20 (Default) Fabric: 0.14.21\ Fabric API: 0.85.0+1.20.1\ diff --git a/common/src/main/java/com/seibel/distanthorizons/common/wrappers/gui/ClassicConfigGUI.java b/common/src/main/java/com/seibel/distanthorizons/common/wrappers/gui/ClassicConfigGUI.java index cfb82ae09..c6b016b59 100644 --- a/common/src/main/java/com/seibel/distanthorizons/common/wrappers/gui/ClassicConfigGUI.java +++ b/common/src/main/java/com/seibel/distanthorizons/common/wrappers/gui/ClassicConfigGUI.java @@ -387,7 +387,11 @@ public class ClassicConfigGUI public void render(GuiGraphics matrices, int mouseX, int mouseY, float delta) #endif { + #if MC_1_20_2 + this.renderBackground(matrices, mouseX, mouseY, delta); // Renders background + #else this.renderBackground(matrices); // Renders background + #endif this.list.render(matrices, mouseX, mouseY, delta); // Render buttons DhDrawCenteredString(matrices, font, title, width / 2, 15, 0xFFFFFF); // Render title diff --git a/common/src/main/java/com/seibel/distanthorizons/common/wrappers/gui/MinecraftScreen.java b/common/src/main/java/com/seibel/distanthorizons/common/wrappers/gui/MinecraftScreen.java index cf42dd9db..716c98775 100644 --- a/common/src/main/java/com/seibel/distanthorizons/common/wrappers/gui/MinecraftScreen.java +++ b/common/src/main/java/com/seibel/distanthorizons/common/wrappers/gui/MinecraftScreen.java @@ -72,7 +72,11 @@ public class MinecraftScreen public void render(GuiGraphics matrices, int mouseX, int mouseY, float delta) #endif { + #if MC_1_20_2 + this.renderBackground(matrices, mouseX, mouseY, delta); // Render background + #else this.renderBackground(matrices); // Render background + #endif this.list.render(matrices, mouseX, mouseY, delta); // Renders the items in the render list (currently only used to tint background darker) screen.mouseX = mouseX; diff --git a/common/src/main/java/com/seibel/distanthorizons/common/wrappers/gui/TexturedButtonWidget.java b/common/src/main/java/com/seibel/distanthorizons/common/wrappers/gui/TexturedButtonWidget.java index 950a68e50..52585e7d7 100644 --- a/common/src/main/java/com/seibel/distanthorizons/common/wrappers/gui/TexturedButtonWidget.java +++ b/common/src/main/java/com/seibel/distanthorizons/common/wrappers/gui/TexturedButtonWidget.java @@ -31,28 +31,40 @@ import net.minecraft.client.Minecraft; import net.minecraft.client.renderer.GameRenderer; #endif +#if MC_1_20_2 +import net.minecraft.client.gui.components.WidgetSprites; +#endif + /** * Creates a button with a texture on it */ // TODO: Is this still needed? Can we switch to vanilla's ImageButton? +// +// Note after 1.20.2: They changed how buttons work, and are asking for a WidgetSprites. +// This should probably still exist so that code only needs to be changed here to work on all mc versions public class TexturedButtonWidget extends ImageButton { - #if POST_MC_1_17_1 - public TexturedButtonWidget(int x, int y, int width, int height, int u, int v, ResourceLocation texture, OnPress pressAction) + #if MC_1_20_2 + public static WidgetSprites locationToSprite(int width, int height, int u, int v, int hoveredVOffset, ResourceLocation resourceLocation) { - super(x, y, width, height, u, v, texture, pressAction); - } - #endif - - public TexturedButtonWidget(int x, int y, int width, int height, int u, int v, int hoveredVOffset, ResourceLocation texture, int textureWidth, int textureHeight, OnPress pressAction) - { - super(x, y, width, height, u, v, hoveredVOffset, texture, textureWidth, textureHeight, pressAction); + // FIXME[1.20.2]: Fix this + //Registries. + // + //ResourceLocation unfocused = new ResourceLocation(); + //ResourceLocation focused = new ResourceLocation(resourceLocation.getNamespace(), resourceLocation.getPath()); + + return new WidgetSprites(resourceLocation, resourceLocation); } + #endif public TexturedButtonWidget(int x, int y, int width, int height, int u, int v, int hoveredVOffset, ResourceLocation texture, int textureWidth, int textureHeight, OnPress pressAction, Component text) { + #if MC_1_20_2 + super(x, y, width, height, locationToSprite(textureWidth, textureHeight, u, v, hoveredVOffset, texture), pressAction, text); + #else super(x, y, width, height, u, v, hoveredVOffset, texture, textureWidth, textureHeight, pressAction, text); + #endif } #if PRE_MC_1_19_2 diff --git a/common/src/main/java/com/seibel/distanthorizons/common/wrappers/gui/updater/ChangelogScreen.java b/common/src/main/java/com/seibel/distanthorizons/common/wrappers/gui/updater/ChangelogScreen.java index 6d9c37cdb..5b1f6ba39 100644 --- a/common/src/main/java/com/seibel/distanthorizons/common/wrappers/gui/updater/ChangelogScreen.java +++ b/common/src/main/java/com/seibel/distanthorizons/common/wrappers/gui/updater/ChangelogScreen.java @@ -150,7 +150,11 @@ public class ChangelogScreen extends DhScreen public void render(GuiGraphics matrices, int mouseX, int mouseY, float delta) #endif { + #if MC_1_20_2 + this.renderBackground(matrices, mouseX, mouseY, delta); // Render background + #else this.renderBackground(matrices); // Render background + #endif if (!usable) return; diff --git a/common/src/main/java/com/seibel/distanthorizons/common/wrappers/gui/updater/UpdateModScreen.java b/common/src/main/java/com/seibel/distanthorizons/common/wrappers/gui/updater/UpdateModScreen.java index 8c126027d..0484da1aa 100644 --- a/common/src/main/java/com/seibel/distanthorizons/common/wrappers/gui/updater/UpdateModScreen.java +++ b/common/src/main/java/com/seibel/distanthorizons/common/wrappers/gui/updater/UpdateModScreen.java @@ -77,7 +77,7 @@ public class UpdateModScreen extends DhScreen // Logo image - this.addBtn(new ImageButton( + this.addBtn(new TexturedButtonWidget( // Where the button is on the screen this.width / 2 - 65, this.height / 2 - 110, // Width and height of the button @@ -151,7 +151,11 @@ public class UpdateModScreen extends DhScreen public void render(GuiGraphics matrices, int mouseX, int mouseY, float delta) #endif { + #if MC_1_20_2 + this.renderBackground(matrices, mouseX, mouseY, delta); // Render background + #else this.renderBackground(matrices); // Render background + #endif // Render the text's diff --git a/common/src/main/java/com/seibel/distanthorizons/common/wrappers/minecraft/MinecraftRenderWrapper.java b/common/src/main/java/com/seibel/distanthorizons/common/wrappers/minecraft/MinecraftRenderWrapper.java index 6d433402f..bc8020c4c 100644 --- a/common/src/main/java/com/seibel/distanthorizons/common/wrappers/minecraft/MinecraftRenderWrapper.java +++ b/common/src/main/java/com/seibel/distanthorizons/common/wrappers/minecraft/MinecraftRenderWrapper.java @@ -42,6 +42,9 @@ import com.mojang.math.Vector3f; #else import org.joml.Vector3f; #endif +#if MC_1_20_2 +import net.minecraft.client.renderer.chunk.SectionRenderDispatcher; +#endif import com.seibel.distanthorizons.coreapi.util.math.Mat4f; import com.seibel.distanthorizons.coreapi.util.math.Vec3d; @@ -294,6 +297,16 @@ public class MinecraftRenderWrapper implements IMinecraftRenderWrapper { try { + #if MC_1_20_2 + LevelRenderer levelRenderer = MC.levelRenderer; + Collection chunks = levelRenderer.visibleSections; + + return (chunks.stream().map((chunk) -> { + AABB chunkBoundingBox = chunk.getBoundingBox(); + return new DhChunkPos(Math.floorDiv((int) chunkBoundingBox.minX, 16), + Math.floorDiv((int) chunkBoundingBox.minZ, 16)); + }).collect(Collectors.toCollection(HashSet::new))); + #else LevelRenderer levelRenderer = MC.levelRenderer; Collection chunks = #if PRE_MC_1_18_2 levelRenderer.renderChunks; @@ -306,6 +319,7 @@ public class MinecraftRenderWrapper implements IMinecraftRenderWrapper return new DhChunkPos(Math.floorDiv((int) chunkBoundingBox.minX, 16), Math.floorDiv((int) chunkBoundingBox.minZ, 16)); }).collect(Collectors.toCollection(HashSet::new))); + #endif } catch (LinkageError e) { diff --git a/common/src/main/resources/1_20_2.distanthorizons.accesswidener b/common/src/main/resources/1_20_2.distanthorizons.accesswidener new file mode 100644 index 000000000..0626f04a2 --- /dev/null +++ b/common/src/main/resources/1_20_2.distanthorizons.accesswidener @@ -0,0 +1,36 @@ +accessWidener v1 named + +# used when determining where to save files to +accessible field net/minecraft/world/level/storage/DimensionDataStorage dataFolder Ljava/io/File; + +# used when rendering +accessible method net/minecraft/client/renderer/GameRenderer getFov (Lnet/minecraft/client/Camera;FZ)D + +# used for grabbing vanilla rendered chunks +accessible field net/minecraft/client/renderer/LevelRenderer visibleSections Lit/unimi/dsi/fastutil/objects/ObjectArrayList; + +#accessible field net/minecraft/client/renderer/LevelRenderer$RenderChunkInfo chunk Lnet/minecraft/client/renderer/chunk/ChunkRenderDispatcher$RenderChunk; + +# world generation +# accessible method net/minecraft/world/level/lighting/LayerLightEngine queueSectionData (JLnet/minecraft/world/level/chunk/DataLayer;Z)V +accessible field net/minecraft/world/level/chunk/LevelChunk loaded Z +accessible field net/minecraft/world/level/lighting/LightEngine storage Lnet/minecraft/world/level/lighting/LayerLightSectionStorage; +accessible method net/minecraft/world/level/lighting/LayerLightSectionStorage lightOnInSection (J)Z + +# lod generation from save file +accessible field net/minecraft/world/level/chunk/storage/ChunkStorage worker Lnet/minecraft/world/level/chunk/storage/IOWorker; +accessible field net/minecraft/world/level/chunk/storage/IOWorker storage Lnet/minecraft/world/level/chunk/storage/RegionFileStorage; +accessible field net/minecraft/world/level/chunk/storage/RegionFileStorage regionCache Lit/unimi/dsi/fastutil/longs/Long2ObjectLinkedOpenHashMap; +accessible field net/minecraft/world/level/chunk/storage/RegionFileStorage folder Ljava/nio/file/Path; + +# grabbing textures +accessible class net/minecraft/client/renderer/texture/SpriteContents$AnimatedTexture +accessible method net/minecraft/client/renderer/texture/SpriteContents$AnimatedTexture getFrameX (I)I +accessible method net/minecraft/client/renderer/texture/SpriteContents$AnimatedTexture getFrameY (I)I +accessible field net/minecraft/client/renderer/texture/SpriteContents animatedTexture Lnet/minecraft/client/renderer/texture/SpriteContents$AnimatedTexture; +accessible field net/minecraft/client/renderer/texture/SpriteContents originalImage Lcom/mojang/blaze3d/platform/NativeImage; + +# hacky stuff +accessible field net/minecraft/util/ThreadingDetector lock Ljava/util/concurrent/Semaphore; +mutable field net/minecraft/util/ThreadingDetector lock Ljava/util/concurrent/Semaphore; +accessible field net/minecraft/client/gui/components/AbstractSelectionList scrollAmount D # Hack to bypass vanilla's setScrollAmount's clamp diff --git a/fabric/src/main/java/com/seibel/distanthorizons/fabric/mixins/client/MixinLevelRenderer.java b/fabric/src/main/java/com/seibel/distanthorizons/fabric/mixins/client/MixinLevelRenderer.java index 12bc8d7b6..f5ec81b36 100644 --- a/fabric/src/main/java/com/seibel/distanthorizons/fabric/mixins/client/MixinLevelRenderer.java +++ b/fabric/src/main/java/com/seibel/distanthorizons/fabric/mixins/client/MixinLevelRenderer.java @@ -94,11 +94,16 @@ public class MixinLevelRenderer method = "renderChunkLayer(Lnet/minecraft/client/renderer/RenderType;Lcom/mojang/blaze3d/vertex/PoseStack;DDDLcom/mojang/math/Matrix4f;)V", cancellable = true) private void renderChunkLayer(RenderType renderType, PoseStack modelViewMatrixStack, double cameraXBlockPos, double cameraYBlockPos, double cameraZBlockPos, Matrix4f projectionMatrix, CallbackInfo callback) - #else + #elif PRE_MC_1_20_2 @Inject(at = @At("HEAD"), method = "renderChunkLayer(Lnet/minecraft/client/renderer/RenderType;Lcom/mojang/blaze3d/vertex/PoseStack;DDDLorg/joml/Matrix4f;)V", cancellable = true) private void renderChunkLayer(RenderType renderType, PoseStack modelViewMatrixStack, double cameraXBlockPos, double cameraYBlockPos, double cameraZBlockPos, Matrix4f projectionMatrix, CallbackInfo callback) + #else + @Inject(at = @At("HEAD"), + method = "Lnet/minecraft/client/renderer/LevelRenderer;renderLevel(Lcom/mojang/blaze3d/vertex/PoseStack;FJZLnet/minecraft/client/Camera;Lnet/minecraft/client/renderer/GameRenderer;Lnet/minecraft/client/renderer/LightTexture;Lorg/joml/Matrix4f;)V", + cancellable = true) + private void renderChunkLayer(PoseStack poseStack, float partialTick, long finishNanoTime, boolean renderBlockOutline, Camera camera, GameRenderer gameRenderer, LightTexture lightTexture, Matrix4f projectionMatrix, CallbackInfo callback) #endif { // FIXME completely disables rendering when sodium is installed diff --git a/fabric/src/main/java/com/seibel/distanthorizons/fabric/mixins/client/MixinMinecraft.java b/fabric/src/main/java/com/seibel/distanthorizons/fabric/mixins/client/MixinMinecraft.java index 72e46737d..cbd004b1b 100644 --- a/fabric/src/main/java/com/seibel/distanthorizons/fabric/mixins/client/MixinMinecraft.java +++ b/fabric/src/main/java/com/seibel/distanthorizons/fabric/mixins/client/MixinMinecraft.java @@ -25,16 +25,25 @@ import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; @Mixin(Minecraft.class) public class MixinMinecraft { - #if PRE_MC_1_20_1 + #if MC_1_20_2 + // FIXME + //@Redirect( + // method = "Lnet/minecraft/client/Minecraft;buildInitialScreens(Lnet/minecraft/client/Minecraft$GameLoadCookie;)Ljava/lang/Runnable;", + // at = @At(value = "INVOKE", target = "Lnet/minecraft/client/Minecraft;setScreen(Lnet/minecraft/client/gui/screens/Screen;)V") + //) + public void onOpenScreen(Screen guiScreen) + { + Minecraft instance = Minecraft.getInstance(); + #elif MC_1_20_1 @Redirect( - method = "(Lnet/minecraft/client/main/GameConfig;)V", + method = "Lnet/minecraft/client/Minecraft;setInitialScreen(Lcom/mojang/realmsclient/client/RealmsClient;Lnet/minecraft/server/packs/resources/ReloadInstance;Lnet/minecraft/client/main/GameConfig$QuickPlayData;)V", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/Minecraft;setScreen(Lnet/minecraft/client/gui/screens/Screen;)V") ) public void onOpenScreen(Minecraft instance, Screen guiScreen) { #else @Redirect( - method = "Lnet/minecraft/client/Minecraft;setInitialScreen(Lcom/mojang/realmsclient/client/RealmsClient;Lnet/minecraft/server/packs/resources/ReloadInstance;Lnet/minecraft/client/main/GameConfig$QuickPlayData;)V", + method = "(Lnet/minecraft/client/main/GameConfig;)V", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/Minecraft;setScreen(Lnet/minecraft/client/gui/screens/Screen;)V") ) public void onOpenScreen(Minecraft instance, Screen guiScreen) diff --git a/forge/src/main/java/com/seibel/distanthorizons/forge/mixins/client/MixinLevelRenderer.java b/forge/src/main/java/com/seibel/distanthorizons/forge/mixins/client/MixinLevelRenderer.java index 41b02909c..90f61dd3f 100644 --- a/forge/src/main/java/com/seibel/distanthorizons/forge/mixins/client/MixinLevelRenderer.java +++ b/forge/src/main/java/com/seibel/distanthorizons/forge/mixins/client/MixinLevelRenderer.java @@ -28,13 +28,8 @@ import net.minecraft.client.renderer.GameRenderer; import net.minecraft.client.renderer.LightTexture; import org.joml.Matrix4f; #endif -import com.seibel.distanthorizons.common.rendering.SeamlessOverdraw; -import com.seibel.distanthorizons.common.wrappers.McObjectConverter; import com.seibel.distanthorizons.common.wrappers.chunk.ChunkWrapper; -import com.seibel.distanthorizons.common.wrappers.world.ClientLevelWrapper; import com.seibel.distanthorizons.core.config.Config; -import com.seibel.distanthorizons.core.api.internal.ClientApi; -import com.seibel.distanthorizons.coreapi.util.math.Mat4f; import net.minecraft.client.Camera; import net.minecraft.client.multiplayer.ClientLevel; import net.minecraft.client.renderer.GameRenderer; @@ -47,22 +42,14 @@ import org.spongepowered.asm.mixin.Shadow; import org.spongepowered.asm.mixin.Unique; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; -import org.spongepowered.asm.mixin.injection.Redirect; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; -import java.nio.FloatBuffer; - -#if PRE_MC_1_17_1 -import org.lwjgl.opengl.GL15; -#endif - - /** * This class is used to mix in my rendering code * before Minecraft starts rendering blocks. * If this wasn't done, and we used Forge's * render last event, the LODs would render on top - * of the normal terrain.

+ * of the normal terrain. * * This is also the mixin for rendering the clouds * @@ -78,82 +65,48 @@ public class MixinLevelRenderer @Unique private static float previousPartialTicks = 0; - // TODO: Is there any reason why this is here? Can it be deleted? - public MixinLevelRenderer() - { - throw new NullPointerException("Null cannot be cast to non-null type."); - } - + // Inject rendering at first call to renderChunkLayer + // HEAD or RETURN #if PRE_MC_1_17_1 @Inject(at = @At("RETURN"), method = "renderSky(Lcom/mojang/blaze3d/vertex/PoseStack;F)V") private void renderSky(PoseStack matrixStackIn, float partialTicks, CallbackInfo callback) - #else - @Inject(method = "renderClouds", at = @At("HEAD"), cancellable = true) - public void renderClouds(PoseStack poseStack, Matrix4f projectionMatrix, float partialTicks, double cameraX, double cameraY, double cameraZ, CallbackInfo ci) - #endif { // get the partial ticks since renderBlockLayer doesn't // have access to them previousPartialTicks = partialTicks; } + #else + @Inject(method = "renderClouds", at = @At("HEAD"), cancellable = true) + public void renderClouds(PoseStack poseStack, Matrix4f projectionMatrix, float tickDelta, double cameraX, double cameraY, double cameraZ, CallbackInfo ci) { + // get the partial ticks since renderChunkLayer doesn't + // have access to them + previousPartialTicks = tickDelta; + } + #endif - - // TODO: Can we move this to forge's client proxy similarly to how fabric does it #if PRE_MC_1_17_1 @Inject(at = @At("HEAD"), method = "renderChunkLayer(Lnet/minecraft/client/renderer/RenderType;Lcom/mojang/blaze3d/vertex/PoseStack;DDD)V", cancellable = true) private void renderChunkLayer(RenderType renderType, PoseStack matrixStackIn, double xIn, double yIn, double zIn, CallbackInfo callback) #elif PRE_MC_1_19_4 + @Inject(at = @At("HEAD"), + method = "renderChunkLayer(Lnet/minecraft/client/renderer/RenderType;Lcom/mojang/blaze3d/vertex/PoseStack;DDDLcom/mojang/math/Matrix4f;)V", + cancellable = true) + private void renderChunkLayer(RenderType renderType, PoseStack modelViewMatrixStack, double cameraXBlockPos, double cameraYBlockPos, double cameraZBlockPos, Matrix4f projectionMatrix, CallbackInfo callback) + #elif PRE_MC_1_20_2 + @Inject(at = @At("HEAD"), + method = "renderChunkLayer(Lnet/minecraft/client/renderer/RenderType;Lcom/mojang/blaze3d/vertex/PoseStack;DDDLorg/joml/Matrix4f;)V", + cancellable = true) + private void renderChunkLayer(RenderType renderType, PoseStack modelViewMatrixStack, double cameraXBlockPos, double cameraYBlockPos, double cameraZBlockPos, Matrix4f projectionMatrix, CallbackInfo callback) + #else @Inject(at = @At("HEAD"), - method = "renderChunkLayer(Lnet/minecraft/client/renderer/RenderType;Lcom/mojang/blaze3d/vertex/PoseStack;DDDLcom/mojang/math/Matrix4f;)V", + method = "Lnet/minecraft/client/renderer/LevelRenderer;renderLevel(Lcom/mojang/blaze3d/vertex/PoseStack;FJZLnet/minecraft/client/Camera;Lnet/minecraft/client/renderer/GameRenderer;Lnet/minecraft/client/renderer/LightTexture;Lorg/joml/Matrix4f;)V", cancellable = true) - private void renderChunkLayer(RenderType renderType, PoseStack modelViewMatrixStack, double cameraXBlockPos, double cameraYBlockPos, double cameraZBlockPos, Matrix4f projectionMatrix, CallbackInfo callback) - #else - @Inject(at = @At("HEAD"), - method = "renderChunkLayer(Lnet/minecraft/client/renderer/RenderType;Lcom/mojang/blaze3d/vertex/PoseStack;DDDLorg/joml/Matrix4f;)V", - cancellable = true) - private void renderChunkLayer(RenderType renderType, PoseStack modelViewMatrixStack, double cameraXBlockPos, double cameraYBlockPos, double cameraZBlockPos, Matrix4f projectionMatrix, CallbackInfo callback) + private void renderChunkLayer(PoseStack poseStack, float partialTick, long finishNanoTime, boolean renderBlockOutline, Camera camera, GameRenderer gameRenderer, LightTexture lightTexture, Matrix4f projectionMatrix, CallbackInfo callback) #endif { - // get MC's model view and projection matrices - #if MC_1_16_5 - // get the matrices from the OpenGL fixed pipeline - float[] mcProjMatrixRaw = new float[16]; - GL15.glGetFloatv(GL15.GL_PROJECTION_MATRIX, mcProjMatrixRaw); - Mat4f mcProjectionMatrix = new Mat4f(mcProjMatrixRaw); - mcProjectionMatrix.transpose(); - - Mat4f mcModelViewMatrix = McObjectConverter.Convert(matrixStackIn.last().pose()); - - #else - // get the matrices directly from MC - Mat4f mcModelViewMatrix = McObjectConverter.Convert(modelViewMatrixStack.last().pose()); - Mat4f mcProjectionMatrix = McObjectConverter.Convert(projectionMatrix); - #endif - - - - // only render before solid blocks - if (renderType.equals(RenderType.solid())) - { - ClientApi.INSTANCE.renderLods(ClientLevelWrapper.getWrapper(level), mcModelViewMatrix, mcProjectionMatrix, previousPartialTicks); - - // experimental proof-of-concept option - if (Config.Client.Advanced.Graphics.AdvancedGraphics.seamlessOverdraw.get()) - { - float[] matrixFloatArray = SeamlessOverdraw.overwriteMinecraftNearFarClipPlanes(mcProjectionMatrix, previousPartialTicks); - - #if MC_1_16_5 - SeamlessOverdraw.applyLegacyProjectionMatrix(matrixFloatArray); - #elif PRE_MC_1_19_4 - projectionMatrix.load(FloatBuffer.wrap(matrixFloatArray)); - #else - projectionMatrix.set(matrixFloatArray); - #endif - } - } - + // FIXME completely disables rendering when sodium is installed if (Config.Client.Advanced.Debugging.lodOnlyMode.get()) { callback.cancel(); @@ -174,4 +127,5 @@ public class MixinLevelRenderer ChunkWrapper.syncedUpdateClientLightStatus(); } + } diff --git a/forge/src/main/java/com/seibel/distanthorizons/forge/mixins/client/MixinMinecraft.java b/forge/src/main/java/com/seibel/distanthorizons/forge/mixins/client/MixinMinecraft.java index 40c17ce04..236d06e81 100644 --- a/forge/src/main/java/com/seibel/distanthorizons/forge/mixins/client/MixinMinecraft.java +++ b/forge/src/main/java/com/seibel/distanthorizons/forge/mixins/client/MixinMinecraft.java @@ -25,16 +25,25 @@ import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; @Mixin(Minecraft.class) public class MixinMinecraft { - #if PRE_MC_1_20 + #if MC_1_20_2 + // FIXME + //@Redirect( + // method = "Lnet/minecraft/client/Minecraft;buildInitialScreens(Lnet/minecraft/client/Minecraft$GameLoadCookie;)Ljava/lang/Runnable;", + // at = @At(value = "INVOKE", target = "Lnet/minecraft/client/Minecraft;setScreen(Lnet/minecraft/client/gui/screens/Screen;)V") + //) + public void onOpenScreen(Screen guiScreen) + { + Minecraft instance = Minecraft.getInstance(); + #elif MC_1_20_1 @Redirect( - method = "(Lnet/minecraft/client/main/GameConfig;)V", + method = "Lnet/minecraft/client/Minecraft;setInitialScreen(Lcom/mojang/realmsclient/client/RealmsClient;Lnet/minecraft/server/packs/resources/ReloadInstance;Lnet/minecraft/client/main/GameConfig$QuickPlayData;)V", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/Minecraft;setScreen(Lnet/minecraft/client/gui/screens/Screen;)V") ) public void onOpenScreen(Minecraft instance, Screen guiScreen) { #else @Redirect( - method = "Lnet/minecraft/client/Minecraft;setInitialScreen(Lcom/mojang/realmsclient/client/RealmsClient;Lnet/minecraft/server/packs/resources/ReloadInstance;Lnet/minecraft/client/main/GameConfig$QuickPlayData;)V", + method = "(Lnet/minecraft/client/main/GameConfig;)V", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/Minecraft;setScreen(Lnet/minecraft/client/gui/screens/Screen;)V") ) public void onOpenScreen(Minecraft instance, Screen guiScreen) @@ -59,10 +68,7 @@ public class MixinMinecraft } } - @Inject(at = @At("HEAD"), method = "close()V", remap = false) - public void close(CallbackInfo ci) - { - SelfUpdater.onClose(); - } + @Inject(at = @At("HEAD"), method = "close()V") + public void close(CallbackInfo ci) { SelfUpdater.onClose(); } } diff --git a/versionProperties/1.20.2.properties b/versionProperties/1.20.2.properties new file mode 100644 index 000000000..553df7436 --- /dev/null +++ b/versionProperties/1.20.2.properties @@ -0,0 +1,51 @@ +# 1.20.2 version +java_version=17 +minecraft_version=1.20.2 +parchment_version=1.19.3:2023.06.25 +compatible_minecraft_versions=["1.20.2"] +accessWidenerVersion=1_20_2 +builds_for=fabric,forge + +# Fabric loader +fabric_loader_version=0.14.22 +fabric_api_version=0.89.2+1.20.2 + # Fabric mod versions + modmenu_version=8.0.0 + starlight_version_fabric= + phosphor_version_fabric= + lithium_version= + sodium_version=mc1.20.2-0.5.3 + iris_version=1.6.9+1.20.2 + bclib_version=3.0.13 + immersive_portals_version= + canvas_version= + + fabric_incompatibility_list={ } + fabric_recommend_list={ "indium": "*" } + + # Fabric mod run + # 0 = Don't enable and don't run + # 1 = Can be referenced in code but doesn't run + # 2 = Can be referenced in code and runs in client + enable_starlight=0 + enable_phosphor=0 + enable_sodium=1 + enable_lithium=0 + enable_iris=1 + enable_bclib=1 + enable_immersive_portals=0 + enable_canvas=0 + +# Forge loader +forge_version=48.0.13 + # Forge mod versions + starlight_version_forge= + terraforged_version= + + # Forge mod run + # 0 = Don't enable and don't run + # 1 = Can be referenced in code but doesn't run + # 2 = Can be referenced in code and runs in client + enable_starlight_forge=0 + enable_terraforged=0 + enable_terrafirmacraft=0 From 115c531be2f4eb4e4f552446c93c9ba3af7b0512 Mon Sep 17 00:00:00 2001 From: coolGi Date: Mon, 2 Oct 2023 10:58:36 +1030 Subject: [PATCH 02/27] Fixed building on forge --- .../mixins/client/MixinLevelRenderer.java | 101 +++++++++++++----- .../forge/mixins/client/MixinMinecraft.java | 7 +- 2 files changed, 81 insertions(+), 27 deletions(-) diff --git a/forge/src/main/java/com/seibel/distanthorizons/forge/mixins/client/MixinLevelRenderer.java b/forge/src/main/java/com/seibel/distanthorizons/forge/mixins/client/MixinLevelRenderer.java index 90f61dd3f..9dbc03388 100644 --- a/forge/src/main/java/com/seibel/distanthorizons/forge/mixins/client/MixinLevelRenderer.java +++ b/forge/src/main/java/com/seibel/distanthorizons/forge/mixins/client/MixinLevelRenderer.java @@ -28,8 +28,13 @@ import net.minecraft.client.renderer.GameRenderer; import net.minecraft.client.renderer.LightTexture; import org.joml.Matrix4f; #endif +import com.seibel.distanthorizons.common.rendering.SeamlessOverdraw; +import com.seibel.distanthorizons.common.wrappers.McObjectConverter; import com.seibel.distanthorizons.common.wrappers.chunk.ChunkWrapper; +import com.seibel.distanthorizons.common.wrappers.world.ClientLevelWrapper; import com.seibel.distanthorizons.core.config.Config; +import com.seibel.distanthorizons.core.api.internal.ClientApi; +import com.seibel.distanthorizons.coreapi.util.math.Mat4f; import net.minecraft.client.Camera; import net.minecraft.client.multiplayer.ClientLevel; import net.minecraft.client.renderer.GameRenderer; @@ -42,14 +47,22 @@ import org.spongepowered.asm.mixin.Shadow; import org.spongepowered.asm.mixin.Unique; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.Redirect; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; +import java.nio.FloatBuffer; + +#if PRE_MC_1_17_1 +import org.lwjgl.opengl.GL15; +#endif + + /** * This class is used to mix in my rendering code * before Minecraft starts rendering blocks. * If this wasn't done, and we used Forge's * render last event, the LODs would render on top - * of the normal terrain. + * of the normal terrain.

* * This is also the mixin for rendering the clouds * @@ -65,48 +78,87 @@ public class MixinLevelRenderer @Unique private static float previousPartialTicks = 0; - // Inject rendering at first call to renderChunkLayer - // HEAD or RETURN + // TODO: Is there any reason why this is here? Can it be deleted? + public MixinLevelRenderer() + { + throw new NullPointerException("Null cannot be cast to non-null type."); + } + #if PRE_MC_1_17_1 @Inject(at = @At("RETURN"), method = "renderSky(Lcom/mojang/blaze3d/vertex/PoseStack;F)V") private void renderSky(PoseStack matrixStackIn, float partialTicks, CallbackInfo callback) + #else + @Inject(method = "renderClouds", at = @At("HEAD"), cancellable = true) + public void renderClouds(PoseStack poseStack, Matrix4f projectionMatrix, float partialTicks, double cameraX, double cameraY, double cameraZ, CallbackInfo ci) + #endif { // get the partial ticks since renderBlockLayer doesn't // have access to them previousPartialTicks = partialTicks; } - #else - @Inject(method = "renderClouds", at = @At("HEAD"), cancellable = true) - public void renderClouds(PoseStack poseStack, Matrix4f projectionMatrix, float tickDelta, double cameraX, double cameraY, double cameraZ, CallbackInfo ci) { - // get the partial ticks since renderChunkLayer doesn't - // have access to them - previousPartialTicks = tickDelta; - } - #endif + + // TODO: Can we move this to forge's client proxy similarly to how fabric does it #if PRE_MC_1_17_1 @Inject(at = @At("HEAD"), method = "renderChunkLayer(Lnet/minecraft/client/renderer/RenderType;Lcom/mojang/blaze3d/vertex/PoseStack;DDD)V", cancellable = true) private void renderChunkLayer(RenderType renderType, PoseStack matrixStackIn, double xIn, double yIn, double zIn, CallbackInfo callback) #elif PRE_MC_1_19_4 - @Inject(at = @At("HEAD"), - method = "renderChunkLayer(Lnet/minecraft/client/renderer/RenderType;Lcom/mojang/blaze3d/vertex/PoseStack;DDDLcom/mojang/math/Matrix4f;)V", - cancellable = true) - private void renderChunkLayer(RenderType renderType, PoseStack modelViewMatrixStack, double cameraXBlockPos, double cameraYBlockPos, double cameraZBlockPos, Matrix4f projectionMatrix, CallbackInfo callback) - #elif PRE_MC_1_20_2 - @Inject(at = @At("HEAD"), - method = "renderChunkLayer(Lnet/minecraft/client/renderer/RenderType;Lcom/mojang/blaze3d/vertex/PoseStack;DDDLorg/joml/Matrix4f;)V", - cancellable = true) - private void renderChunkLayer(RenderType renderType, PoseStack modelViewMatrixStack, double cameraXBlockPos, double cameraYBlockPos, double cameraZBlockPos, Matrix4f projectionMatrix, CallbackInfo callback) - #else @Inject(at = @At("HEAD"), - method = "Lnet/minecraft/client/renderer/LevelRenderer;renderLevel(Lcom/mojang/blaze3d/vertex/PoseStack;FJZLnet/minecraft/client/Camera;Lnet/minecraft/client/renderer/GameRenderer;Lnet/minecraft/client/renderer/LightTexture;Lorg/joml/Matrix4f;)V", + method = "renderChunkLayer(Lnet/minecraft/client/renderer/RenderType;Lcom/mojang/blaze3d/vertex/PoseStack;DDDLcom/mojang/math/Matrix4f;)V", cancellable = true) - private void renderChunkLayer(PoseStack poseStack, float partialTick, long finishNanoTime, boolean renderBlockOutline, Camera camera, GameRenderer gameRenderer, LightTexture lightTexture, Matrix4f projectionMatrix, CallbackInfo callback) + private void renderChunkLayer(RenderType renderType, PoseStack modelViewMatrixStack, double cameraXBlockPos, double cameraYBlockPos, double cameraZBlockPos, Matrix4f projectionMatrix, CallbackInfo callback) + #elif PRE_MC_1_20_2 + @Inject(at = @At("HEAD"), + method = "renderChunkLayer(Lnet/minecraft/client/renderer/RenderType;Lcom/mojang/blaze3d/vertex/PoseStack;DDDLorg/joml/Matrix4f;)V", + cancellable = true) + private void renderChunkLayer(RenderType renderType, PoseStack modelViewMatrixStack, double cameraXBlockPos, double cameraYBlockPos, double cameraZBlockPos, Matrix4f projectionMatrix, CallbackInfo callback) + #else + @Inject(at = @At("HEAD"), + method = "Lnet/minecraft/client/renderer/LevelRenderer;renderLevel(Lcom/mojang/blaze3d/vertex/PoseStack;FJZLnet/minecraft/client/Camera;Lnet/minecraft/client/renderer/GameRenderer;Lnet/minecraft/client/renderer/LightTexture;Lorg/joml/Matrix4f;)V", + cancellable = true) + private void renderChunkLayer(PoseStack poseStack, float partialTick, long finishNanoTime, boolean renderBlockOutline, Camera camera, GameRenderer gameRenderer, LightTexture lightTexture, Matrix4f projectionMatrix, CallbackInfo callback) #endif { - // FIXME completely disables rendering when sodium is installed + // get MC's model view and projection matrices + #if MC_1_16_5 + // get the matrices from the OpenGL fixed pipeline + float[] mcProjMatrixRaw = new float[16]; + GL15.glGetFloatv(GL15.GL_PROJECTION_MATRIX, mcProjMatrixRaw); + Mat4f mcProjectionMatrix = new Mat4f(mcProjMatrixRaw); + mcProjectionMatrix.transpose(); + + Mat4f mcModelViewMatrix = McObjectConverter.Convert(matrixStackIn.last().pose()); + + #else + // get the matrices directly from MC + Mat4f mcModelViewMatrix = McObjectConverter.Convert(modelViewMatrixStack.last().pose()); + Mat4f mcProjectionMatrix = McObjectConverter.Convert(projectionMatrix); + #endif + + + + // only render before solid blocks + if (renderType.equals(RenderType.solid())) + { + ClientApi.INSTANCE.renderLods(ClientLevelWrapper.getWrapper(level), mcModelViewMatrix, mcProjectionMatrix, previousPartialTicks); + + // experimental proof-of-concept option + if (Config.Client.Advanced.Graphics.AdvancedGraphics.seamlessOverdraw.get()) + { + float[] matrixFloatArray = SeamlessOverdraw.overwriteMinecraftNearFarClipPlanes(mcProjectionMatrix, previousPartialTicks); + + #if MC_1_16_5 + SeamlessOverdraw.applyLegacyProjectionMatrix(matrixFloatArray); + #elif PRE_MC_1_19_4 + projectionMatrix.load(FloatBuffer.wrap(matrixFloatArray)); + #else + projectionMatrix.set(matrixFloatArray); + #endif + } + } + if (Config.Client.Advanced.Debugging.lodOnlyMode.get()) { callback.cancel(); @@ -127,5 +179,4 @@ public class MixinLevelRenderer ChunkWrapper.syncedUpdateClientLightStatus(); } - } diff --git a/forge/src/main/java/com/seibel/distanthorizons/forge/mixins/client/MixinMinecraft.java b/forge/src/main/java/com/seibel/distanthorizons/forge/mixins/client/MixinMinecraft.java index 236d06e81..0b6b3e490 100644 --- a/forge/src/main/java/com/seibel/distanthorizons/forge/mixins/client/MixinMinecraft.java +++ b/forge/src/main/java/com/seibel/distanthorizons/forge/mixins/client/MixinMinecraft.java @@ -68,7 +68,10 @@ public class MixinMinecraft } } - @Inject(at = @At("HEAD"), method = "close()V") - public void close(CallbackInfo ci) { SelfUpdater.onClose(); } + @Inject(at = @At("HEAD"), method = "close()V", remap = false) + public void close(CallbackInfo ci) + { + SelfUpdater.onClose(); + } } From 7d13cb49051a29631babb0c8cbb380886b4c97f7 Mon Sep 17 00:00:00 2001 From: coolGi Date: Mon, 2 Oct 2023 11:20:40 +1030 Subject: [PATCH 03/27] bumped manifold version --- gradle.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle.properties b/gradle.properties index 26d5f0d2e..09b788814 100644 --- a/gradle.properties +++ b/gradle.properties @@ -18,7 +18,7 @@ mod_issues=https://gitlab.com/jeseibel/minecraft-lod-mod/-/issues mod_discord=https://discord.gg/xAB8G4cENx # Global Plugin Versions -manifold_version=2023.1.26 +manifold_version=2023.1.28 toml_version=3.6.4 lz4_version=1.8.0 nightconfig_version=3.6.6 From 867152fdf29d7f724a13e6ff2255d167b66851c5 Mon Sep 17 00:00:00 2001 From: coolGi Date: Mon, 2 Oct 2023 11:40:33 +1030 Subject: [PATCH 04/27] Fixed renderChunkLayer injection point (1.20.2) --- .../fabric/mixins/client/MixinLevelRenderer.java | 8 ++++---- .../forge/mixins/client/MixinLevelRenderer.java | 4 ++-- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/fabric/src/main/java/com/seibel/distanthorizons/fabric/mixins/client/MixinLevelRenderer.java b/fabric/src/main/java/com/seibel/distanthorizons/fabric/mixins/client/MixinLevelRenderer.java index f5ec81b36..b35fd5aa4 100644 --- a/fabric/src/main/java/com/seibel/distanthorizons/fabric/mixins/client/MixinLevelRenderer.java +++ b/fabric/src/main/java/com/seibel/distanthorizons/fabric/mixins/client/MixinLevelRenderer.java @@ -100,10 +100,10 @@ public class MixinLevelRenderer cancellable = true) private void renderChunkLayer(RenderType renderType, PoseStack modelViewMatrixStack, double cameraXBlockPos, double cameraYBlockPos, double cameraZBlockPos, Matrix4f projectionMatrix, CallbackInfo callback) #else - @Inject(at = @At("HEAD"), - method = "Lnet/minecraft/client/renderer/LevelRenderer;renderLevel(Lcom/mojang/blaze3d/vertex/PoseStack;FJZLnet/minecraft/client/Camera;Lnet/minecraft/client/renderer/GameRenderer;Lnet/minecraft/client/renderer/LightTexture;Lorg/joml/Matrix4f;)V", - cancellable = true) - private void renderChunkLayer(PoseStack poseStack, float partialTick, long finishNanoTime, boolean renderBlockOutline, Camera camera, GameRenderer gameRenderer, LightTexture lightTexture, Matrix4f projectionMatrix, CallbackInfo callback) + @Inject(at = @At("HEAD"), + method = "Lnet/minecraft/client/renderer/LevelRenderer;renderChunkLayer(Lnet/minecraft/client/renderer/RenderType;Lcom/mojang/blaze3d/vertex/PoseStack;DDDLorg/joml/Matrix4f;)V", + cancellable = true) + private void renderChunkLayer(RenderType renderType, PoseStack modelViewMatrixStack, double camX, double camY, double camZ, Matrix4f projectionMatrix, CallbackInfo callback) #endif { // FIXME completely disables rendering when sodium is installed diff --git a/forge/src/main/java/com/seibel/distanthorizons/forge/mixins/client/MixinLevelRenderer.java b/forge/src/main/java/com/seibel/distanthorizons/forge/mixins/client/MixinLevelRenderer.java index 9dbc03388..76fcefedc 100644 --- a/forge/src/main/java/com/seibel/distanthorizons/forge/mixins/client/MixinLevelRenderer.java +++ b/forge/src/main/java/com/seibel/distanthorizons/forge/mixins/client/MixinLevelRenderer.java @@ -116,9 +116,9 @@ public class MixinLevelRenderer private void renderChunkLayer(RenderType renderType, PoseStack modelViewMatrixStack, double cameraXBlockPos, double cameraYBlockPos, double cameraZBlockPos, Matrix4f projectionMatrix, CallbackInfo callback) #else @Inject(at = @At("HEAD"), - method = "Lnet/minecraft/client/renderer/LevelRenderer;renderLevel(Lcom/mojang/blaze3d/vertex/PoseStack;FJZLnet/minecraft/client/Camera;Lnet/minecraft/client/renderer/GameRenderer;Lnet/minecraft/client/renderer/LightTexture;Lorg/joml/Matrix4f;)V", + method = "Lnet/minecraft/client/renderer/LevelRenderer;renderChunkLayer(Lnet/minecraft/client/renderer/RenderType;Lcom/mojang/blaze3d/vertex/PoseStack;DDDLorg/joml/Matrix4f;)V", cancellable = true) - private void renderChunkLayer(PoseStack poseStack, float partialTick, long finishNanoTime, boolean renderBlockOutline, Camera camera, GameRenderer gameRenderer, LightTexture lightTexture, Matrix4f projectionMatrix, CallbackInfo callback) + private void renderChunkLayer(RenderType renderType, PoseStack modelViewMatrixStack, double camX, double camY, double camZ, Matrix4f projectionMatrix, CallbackInfo callback) #endif { // get MC's model view and projection matrices From 48fc9d13ad6ea6d0826a2ad1aa62a54cf450de04 Mon Sep 17 00:00:00 2001 From: coolGi Date: Mon, 2 Oct 2023 11:40:46 +1030 Subject: [PATCH 05/27] Updated core sub-project --- coreSubProjects | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/coreSubProjects b/coreSubProjects index d15eba118..d9e3293cf 160000 --- a/coreSubProjects +++ b/coreSubProjects @@ -1 +1 @@ -Subproject commit d15eba1185a6227a0b22c33fde37924555db03d3 +Subproject commit d9e3293cf3192cc1032e4480b652264f59fe37a3 From 71493e79d5f62fb2dc1920b2b693ba83533ef477 Mon Sep 17 00:00:00 2001 From: coolGi Date: Mon, 2 Oct 2023 12:33:44 +1030 Subject: [PATCH 06/27] Hopefully fixed 1.20.2 building --- common/src/main/resources/1_20_2.distanthorizons.accesswidener | 2 +- .../fabric/mixins/client/MixinLevelRenderer.java | 2 +- .../distanthorizons/forge/mixins/client/MixinLevelRenderer.java | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/common/src/main/resources/1_20_2.distanthorizons.accesswidener b/common/src/main/resources/1_20_2.distanthorizons.accesswidener index 0626f04a2..349bf84d9 100644 --- a/common/src/main/resources/1_20_2.distanthorizons.accesswidener +++ b/common/src/main/resources/1_20_2.distanthorizons.accesswidener @@ -9,7 +9,7 @@ accessible method net/minecraft/client/renderer/GameRenderer getFov (Lnet/minecr # used for grabbing vanilla rendered chunks accessible field net/minecraft/client/renderer/LevelRenderer visibleSections Lit/unimi/dsi/fastutil/objects/ObjectArrayList; -#accessible field net/minecraft/client/renderer/LevelRenderer$RenderChunkInfo chunk Lnet/minecraft/client/renderer/chunk/ChunkRenderDispatcher$RenderChunk; +#accessible method net/minecraft/client/renderer/LevelRenderer renderSectionLayer (Lnet/minecraft/client/renderer/RenderType;Lcom/mojang/blaze3d/vertex/PoseStack;DDDLorg/joml/Matrix4f;)V # world generation # accessible method net/minecraft/world/level/lighting/LayerLightEngine queueSectionData (JLnet/minecraft/world/level/chunk/DataLayer;Z)V diff --git a/fabric/src/main/java/com/seibel/distanthorizons/fabric/mixins/client/MixinLevelRenderer.java b/fabric/src/main/java/com/seibel/distanthorizons/fabric/mixins/client/MixinLevelRenderer.java index b35fd5aa4..5c687cd4e 100644 --- a/fabric/src/main/java/com/seibel/distanthorizons/fabric/mixins/client/MixinLevelRenderer.java +++ b/fabric/src/main/java/com/seibel/distanthorizons/fabric/mixins/client/MixinLevelRenderer.java @@ -101,7 +101,7 @@ public class MixinLevelRenderer private void renderChunkLayer(RenderType renderType, PoseStack modelViewMatrixStack, double cameraXBlockPos, double cameraYBlockPos, double cameraZBlockPos, Matrix4f projectionMatrix, CallbackInfo callback) #else @Inject(at = @At("HEAD"), - method = "Lnet/minecraft/client/renderer/LevelRenderer;renderChunkLayer(Lnet/minecraft/client/renderer/RenderType;Lcom/mojang/blaze3d/vertex/PoseStack;DDDLorg/joml/Matrix4f;)V", + method = "Lnet/minecraft/client/renderer/LevelRenderer;renderSectionLayer(Lnet/minecraft/client/renderer/RenderType;Lcom/mojang/blaze3d/vertex/PoseStack;DDDLorg/joml/Matrix4f;)V", cancellable = true) private void renderChunkLayer(RenderType renderType, PoseStack modelViewMatrixStack, double camX, double camY, double camZ, Matrix4f projectionMatrix, CallbackInfo callback) #endif diff --git a/forge/src/main/java/com/seibel/distanthorizons/forge/mixins/client/MixinLevelRenderer.java b/forge/src/main/java/com/seibel/distanthorizons/forge/mixins/client/MixinLevelRenderer.java index 76fcefedc..2239adb4f 100644 --- a/forge/src/main/java/com/seibel/distanthorizons/forge/mixins/client/MixinLevelRenderer.java +++ b/forge/src/main/java/com/seibel/distanthorizons/forge/mixins/client/MixinLevelRenderer.java @@ -116,7 +116,7 @@ public class MixinLevelRenderer private void renderChunkLayer(RenderType renderType, PoseStack modelViewMatrixStack, double cameraXBlockPos, double cameraYBlockPos, double cameraZBlockPos, Matrix4f projectionMatrix, CallbackInfo callback) #else @Inject(at = @At("HEAD"), - method = "Lnet/minecraft/client/renderer/LevelRenderer;renderChunkLayer(Lnet/minecraft/client/renderer/RenderType;Lcom/mojang/blaze3d/vertex/PoseStack;DDDLorg/joml/Matrix4f;)V", + method = "Lnet/minecraft/client/renderer/LevelRenderer;renderSectionLayer(Lnet/minecraft/client/renderer/RenderType;Lcom/mojang/blaze3d/vertex/PoseStack;DDDLorg/joml/Matrix4f;)V", cancellable = true) private void renderChunkLayer(RenderType renderType, PoseStack modelViewMatrixStack, double camX, double camY, double camZ, Matrix4f projectionMatrix, CallbackInfo callback) #endif From 94978fe10a9d8d81a2a9d4746f4e490932fed3d6 Mon Sep 17 00:00:00 2001 From: coolGi Date: Mon, 2 Oct 2023 14:16:08 +1030 Subject: [PATCH 07/27] Fixed updater on 1.20.2 --- .../fabric/mixins/client/MixinMinecraft.java | 39 +++++++++++++------ 1 file changed, 28 insertions(+), 11 deletions(-) diff --git a/fabric/src/main/java/com/seibel/distanthorizons/fabric/mixins/client/MixinMinecraft.java b/fabric/src/main/java/com/seibel/distanthorizons/fabric/mixins/client/MixinMinecraft.java index cbd004b1b..ebf99e891 100644 --- a/fabric/src/main/java/com/seibel/distanthorizons/fabric/mixins/client/MixinMinecraft.java +++ b/fabric/src/main/java/com/seibel/distanthorizons/fabric/mixins/client/MixinMinecraft.java @@ -9,7 +9,6 @@ import com.seibel.distanthorizons.core.jar.installer.ModrinthGetter; import com.seibel.distanthorizons.core.jar.updater.SelfUpdater; import com.seibel.distanthorizons.core.wrapperInterfaces.IVersionConstants; import net.minecraft.client.Minecraft; -import net.minecraft.client.gui.screens.Screen; import net.minecraft.client.gui.screens.TitleScreen; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; @@ -25,16 +24,8 @@ import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; @Mixin(Minecraft.class) public class MixinMinecraft { - #if MC_1_20_2 - // FIXME - //@Redirect( - // method = "Lnet/minecraft/client/Minecraft;buildInitialScreens(Lnet/minecraft/client/Minecraft$GameLoadCookie;)Ljava/lang/Runnable;", - // at = @At(value = "INVOKE", target = "Lnet/minecraft/client/Minecraft;setScreen(Lnet/minecraft/client/gui/screens/Screen;)V") - //) - public void onOpenScreen(Screen guiScreen) - { - Minecraft instance = Minecraft.getInstance(); - #elif MC_1_20_1 + #if PRE_MC_1_20_2 + #if MC_1_20_1 @Redirect( method = "Lnet/minecraft/client/Minecraft;setInitialScreen(Lcom/mojang/realmsclient/client/RealmsClient;Lnet/minecraft/server/packs/resources/ReloadInstance;Lnet/minecraft/client/main/GameConfig$QuickPlayData;)V", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/Minecraft;setScreen(Lnet/minecraft/client/gui/screens/Screen;)V") @@ -67,6 +58,32 @@ public class MixinMinecraft instance.setScreen(guiScreen); // Sets the screen back to the vanilla screen as if nothing ever happened } } + #endif + + #if POST_MC_1_20_2 + @Redirect( + method = "Lnet/minecraft/client/Minecraft;onGameLoadFinished(Lnet/minecraft/client/Minecraft$GameLoadCookie;)V", + at = @At(value = "INVOKE", target = "Ljava/lang/Runnable;run()V") + ) + private void buildInitialScreens(Runnable runnable) + { + if ( + Config.Client.Advanced.AutoUpdater.enableAutoUpdater.get() // Don't do anything if the user doesn't want it + && SelfUpdater.onStart() + ) + { + runnable = () -> { + Minecraft.getInstance().setScreen(new UpdateModScreen( + // TODO: Change to runnable, instead of tittle screen + new TitleScreen(false), // We don't want to use the vanilla title screen as it would fade the buttons + (Config.Client.Advanced.AutoUpdater.updateBranch.get() == EUpdateBranch.STABLE ? ModrinthGetter.getLatestIDForVersion(SingletonInjector.INSTANCE.get(IVersionConstants.class).getMinecraftVersion()) : GitlabGetter.INSTANCE.projectPipelines.get(0).get("sha")) + )); + }; + } + + runnable.run(); + } + #endif @Inject(at = @At("HEAD"), method = "close()V") public void close(CallbackInfo ci) { SelfUpdater.onClose(); } From 75419ed5aea1aca1579358d593c86b5dbf16c55c Mon Sep 17 00:00:00 2001 From: coolGi Date: Mon, 2 Oct 2023 14:16:50 +1030 Subject: [PATCH 08/27] Updated core submodule --- coreSubProjects | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/coreSubProjects b/coreSubProjects index d9e3293cf..b18fcb581 160000 --- a/coreSubProjects +++ b/coreSubProjects @@ -1 +1 @@ -Subproject commit d9e3293cf3192cc1032e4480b652264f59fe37a3 +Subproject commit b18fcb5815ce172ea61a3a11c87da0c38cc174e2 From eb4e3bc793667df39f93336480514d360f4aa8c3 Mon Sep 17 00:00:00 2001 From: coolGi Date: Tue, 3 Oct 2023 02:18:59 +0000 Subject: [PATCH 09/27] Fixes to screen class not being imported --- .../fabric/mixins/client/MixinMinecraft.java | 1 + .../forge/mixins/client/MixinMinecraft.java | 38 ++++++++++++++----- 2 files changed, 29 insertions(+), 10 deletions(-) diff --git a/fabric/src/main/java/com/seibel/distanthorizons/fabric/mixins/client/MixinMinecraft.java b/fabric/src/main/java/com/seibel/distanthorizons/fabric/mixins/client/MixinMinecraft.java index ebf99e891..92d79850a 100644 --- a/fabric/src/main/java/com/seibel/distanthorizons/fabric/mixins/client/MixinMinecraft.java +++ b/fabric/src/main/java/com/seibel/distanthorizons/fabric/mixins/client/MixinMinecraft.java @@ -9,6 +9,7 @@ import com.seibel.distanthorizons.core.jar.installer.ModrinthGetter; import com.seibel.distanthorizons.core.jar.updater.SelfUpdater; import com.seibel.distanthorizons.core.wrapperInterfaces.IVersionConstants; import net.minecraft.client.Minecraft; +import net.minecraft.client.gui.screens.Screen; import net.minecraft.client.gui.screens.TitleScreen; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; diff --git a/forge/src/main/java/com/seibel/distanthorizons/forge/mixins/client/MixinMinecraft.java b/forge/src/main/java/com/seibel/distanthorizons/forge/mixins/client/MixinMinecraft.java index 0b6b3e490..1aaa81bf7 100644 --- a/forge/src/main/java/com/seibel/distanthorizons/forge/mixins/client/MixinMinecraft.java +++ b/forge/src/main/java/com/seibel/distanthorizons/forge/mixins/client/MixinMinecraft.java @@ -25,16 +25,8 @@ import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; @Mixin(Minecraft.class) public class MixinMinecraft { - #if MC_1_20_2 - // FIXME - //@Redirect( - // method = "Lnet/minecraft/client/Minecraft;buildInitialScreens(Lnet/minecraft/client/Minecraft$GameLoadCookie;)Ljava/lang/Runnable;", - // at = @At(value = "INVOKE", target = "Lnet/minecraft/client/Minecraft;setScreen(Lnet/minecraft/client/gui/screens/Screen;)V") - //) - public void onOpenScreen(Screen guiScreen) - { - Minecraft instance = Minecraft.getInstance(); - #elif MC_1_20_1 + #if PRE_MC_1_20_2 + #if MC_1_20_1 @Redirect( method = "Lnet/minecraft/client/Minecraft;setInitialScreen(Lcom/mojang/realmsclient/client/RealmsClient;Lnet/minecraft/server/packs/resources/ReloadInstance;Lnet/minecraft/client/main/GameConfig$QuickPlayData;)V", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/Minecraft;setScreen(Lnet/minecraft/client/gui/screens/Screen;)V") @@ -67,6 +59,32 @@ public class MixinMinecraft instance.setScreen(guiScreen); // Sets the screen back to the vanilla screen as if nothing ever happened } } + #endif + + #if POST_MC_1_20_2 + @Redirect( + method = "Lnet/minecraft/client/Minecraft;onGameLoadFinished(Lnet/minecraft/client/Minecraft$GameLoadCookie;)V", + at = @At(value = "INVOKE", target = "Ljava/lang/Runnable;run()V") + ) + private void buildInitialScreens(Runnable runnable) + { + if ( + Config.Client.Advanced.AutoUpdater.enableAutoUpdater.get() // Don't do anything if the user doesn't want it + && SelfUpdater.onStart() + ) + { + runnable = () -> { + Minecraft.getInstance().setScreen(new UpdateModScreen( + // TODO: Change to runnable, instead of tittle screen + new TitleScreen(false), // We don't want to use the vanilla title screen as it would fade the buttons + (Config.Client.Advanced.AutoUpdater.updateBranch.get() == EUpdateBranch.STABLE ? ModrinthGetter.getLatestIDForVersion(SingletonInjector.INSTANCE.get(IVersionConstants.class).getMinecraftVersion()) : GitlabGetter.INSTANCE.projectPipelines.get(0).get("sha")) + )); + }; + } + + runnable.run(); + } + #endif @Inject(at = @At("HEAD"), method = "close()V", remap = false) public void close(CallbackInfo ci) From 90c53d8116853a9a4d6d49fb9fda10be00719b64 Mon Sep 17 00:00:00 2001 From: coolGi Date: Tue, 3 Oct 2023 14:26:24 +1030 Subject: [PATCH 10/27] Fixed button textured stuff 1.20.1 and prior --- .../wrappers/gui/TexturedButtonWidget.java | 130 +++++++++++++----- coreSubProjects | 2 +- 2 files changed, 96 insertions(+), 36 deletions(-) diff --git a/common/src/main/java/com/seibel/distanthorizons/common/wrappers/gui/TexturedButtonWidget.java b/common/src/main/java/com/seibel/distanthorizons/common/wrappers/gui/TexturedButtonWidget.java index 52585e7d7..1e5658acf 100644 --- a/common/src/main/java/com/seibel/distanthorizons/common/wrappers/gui/TexturedButtonWidget.java +++ b/common/src/main/java/com/seibel/distanthorizons/common/wrappers/gui/TexturedButtonWidget.java @@ -19,79 +19,139 @@ package com.seibel.distanthorizons.common.wrappers.gui; -import com.mojang.blaze3d.systems.RenderSystem; -import com.mojang.blaze3d.vertex.PoseStack; import net.minecraft.client.gui.components.ImageButton; import net.minecraft.network.chat.Component; import net.minecraft.resources.ResourceLocation; - -#if PRE_MC_1_17_1 +#if PRE_MC_1_20_1 +import com.mojang.blaze3d.vertex.PoseStack; import net.minecraft.client.Minecraft; #else -import net.minecraft.client.renderer.GameRenderer; +import net.minecraft.client.gui.GuiGraphics; #endif - -#if MC_1_20_2 +#if POST_MC_1_20_2 import net.minecraft.client.gui.components.WidgetSprites; #endif - /** * Creates a button with a texture on it */ -// TODO: Is this still needed? Can we switch to vanilla's ImageButton? -// -// Note after 1.20.2: They changed how buttons work, and are asking for a WidgetSprites. -// This should probably still exist so that code only needs to be changed here to work on all mc versions public class TexturedButtonWidget extends ImageButton { - #if MC_1_20_2 - public static WidgetSprites locationToSprite(int width, int height, int u, int v, int hoveredVOffset, ResourceLocation resourceLocation) + #if POST_MC_1_20_2 + public static WidgetSprites locationToSprite(ResourceLocation resourceLocation, int u, int v) { - // FIXME[1.20.2]: Fix this - //Registries. - // - //ResourceLocation unfocused = new ResourceLocation(); - //ResourceLocation focused = new ResourceLocation(resourceLocation.getNamespace(), resourceLocation.getPath()); - + // FIXME[1.20.2]: Change the `-1`'s to use resourceLocation's texture values + return locationToSprite(resourceLocation, u, v, -1, -1, -1); + } + public static WidgetSprites locationToSprite(ResourceLocation resourceLocation, int u, int v, int textureWidth, int textureHeight, int hoveredVOffset) + { + // FIXME[1.20.2]: No idea how widget sprite works, and not documented anywhere + /* + Several things need to be done to fix this + - First of all, what do each of the paramiters mean + We know that they may relate to the normal, deactivated, hovered, and pressed textures, but which is which. And are these guesses correct? + - How do we move the texture + As Minecraft is now asking for several textures, instead of one big texture, what is the plan on getting this to work? + - One strategy is to split the textures in our assets, then combine them for older versions + - Another is to split it for newer versions + Either of those requires the texture files to be changed, and new resources to be mapped + */ return new WidgetSprites(resourceLocation, resourceLocation); } #endif - public TexturedButtonWidget(int x, int y, int width, int height, int u, int v, int hoveredVOffset, ResourceLocation texture, int textureWidth, int textureHeight, OnPress pressAction, Component text) + + + + #if POST_MC_1_17_1 + public TexturedButtonWidget(int x, int y, int width, int height, int u, int v, ResourceLocation texture, OnPress pressAction) { - #if MC_1_20_2 - super(x, y, width, height, locationToSprite(textureWidth, textureHeight, u, v, hoveredVOffset, texture), pressAction, text); + #if PRE_MC_1_20_2 + super(x, y, width, height, u, v, texture, pressAction); #else - super(x, y, width, height, u, v, hoveredVOffset, texture, textureWidth, textureHeight, pressAction, text); + super(x, y, width, height, locationToSprite(texture, u, v), pressAction); + #endif + } + #endif + + public TexturedButtonWidget(int x, int y, int width, int height, int u, int v, int hoveredVOffset, ResourceLocation texture, int textureWidth, int textureHeight, OnPress pressAction) + { + #if PRE_MC_1_20_2 + super(x, y, width, height, u, v, hoveredVOffset, texture, textureWidth, textureHeight, pressAction); + #else + super(x, y, width, height, locationToSprite(texture, u, v, textureWidth, textureHeight, hoveredVOffset), pressAction); #endif } - #if PRE_MC_1_19_2 - public TexturedButtonWidget(int x, int y, int width, int height, int u, int v, int hoveredVOffset, ResourceLocation texture, int textureWidth, int textureHeight, OnPress pressAction, OnTooltip tooltipSupplier, Component text) + public TexturedButtonWidget(int x, int y, int width, int height, int u, int v, int hoveredVOffset, ResourceLocation texture, int textureWidth, int textureHeight, OnPress pressAction, Component text) { - super(x, y, width, height, u, v, hoveredVOffset, texture, textureWidth, textureHeight, pressAction, tooltipSupplier, text); + #if PRE_MC_1_20_2 + super(x, y, width, height, u, v, hoveredVOffset, texture, textureWidth, textureHeight, pressAction, text); + #else + super(x, y, locationToSprite(texture, u, v, textureWidth, textureHeight, hoveredVOffset), pressAction, text); + #endif } + + #if PRE_MC_1_19_4 @Override - public void renderButton(PoseStack matrices, int mouseX, int mouseY, float delta) - { - #if PRE_MC_1_17_1 - Minecraft.getInstance().getTextureManager().bind(WIDGETS_LOCATION); - RenderSystem.color4f(1.0F, 1.0F, 1.0F, this.alpha); - #else + public void renderButton(PoseStack matrices, int mouseX, int mouseY, float delta) { + #if PRE_MC_1_17_1 + Minecraft.getInstance().getTextureManager().bind(WIDGETS_LOCATION); + RenderSystem.color4f(1.0F, 1.0F, 1.0F, this.alpha); + #else RenderSystem.setShader(GameRenderer::getPositionTexShader); RenderSystem.setShaderTexture(0, WIDGETS_LOCATION); RenderSystem.setShaderColor(1.0F, 1.0F, 1.0F, this.alpha); - #endif + #endif + int i = this.getYImage(this.isHovered); RenderSystem.enableBlend(); RenderSystem.defaultBlendFunc(); RenderSystem.enableDepthTest(); + #if PRE_MC_1_19_4 this.blit(matrices, this.x, this.y, 0, 46 + i * 20, this.width / 2, this.height); this.blit(matrices, this.x + this.width / 2, this.y, 200 - this.width / 2, 46 + i * 20, this.width / 2, this.height); - + #else + this.blit(matrices, this.getX(), this.getY(), 0, 46 + i * 20, this.getWidth() / 2, this.getHeight()); + this.blit(matrices, this.getX() + this.getWidth() / 2, this.getY(), 200 - this.width / 2, 46 + i * 20, this.getWidth() / 2, this.getHeight()); + #endif + super.renderButton(matrices, mouseX, mouseY, delta); } + #else + @Override + #if PRE_MC_1_20_1 + public void renderWidget(PoseStack matrices, int mouseX, int mouseY, float delta) + { + RenderSystem.setShader(GameRenderer::getPositionTexShader); + RenderSystem.setShaderTexture(0, WIDGETS_LOCATION); + RenderSystem.setShaderColor(1.0F, 1.0F, 1.0F, this.alpha); + #else + public void renderWidget(GuiGraphics matrices, int mouseX, int mouseY, float delta) + { + #endif + int i = 1; + if (!this.active) i = 0; + else if (this.isHovered) i = 2; + + #if PRE_MC_1_20_1 + RenderSystem.enableBlend(); + RenderSystem.defaultBlendFunc(); + RenderSystem.enableDepthTest(); + + this.blit(matrices, this.getX(), this.getY(), 0, 46 + i * 20, this.getWidth() / 2, this.getHeight()); + this.blit(matrices, this.getX() + this.getWidth() / 2, this.getY(), 200 - this.width / 2, 46 + i * 20, this.getWidth() / 2, this.getHeight()); + #elif MC_1_20_1 + matrices.blit(WIDGETS_LOCATION, this.getX(), this.getY(), 0, 46 + i * 20, this.getWidth() / 2, this.getHeight()); + matrices.blit(WIDGETS_LOCATION, this.getX() + this.getWidth() / 2, this.getY(), 200 - this.width / 2, 46 + i * 20, this.getWidth() / 2, this.getHeight()); + #else + // FIXME[1.20.2]: Later changed `.enabled()` to a proper thing taking the hovered and active into account + matrices.blit(sprites.enabled(), this.getX(), this.getY(), 0, 46 + i * 20, this.getWidth() / 2, this.getHeight()); + matrices.blit(sprites.enabled(), this.getX() + this.getWidth() / 2, this.getY(), 200 - this.width / 2, 46 + i * 20, this.getWidth() / 2, this.getHeight()); + #endif + + super.renderWidget(matrices, mouseX, mouseY, delta); + } #endif } diff --git a/coreSubProjects b/coreSubProjects index b18fcb581..877b0dae2 160000 --- a/coreSubProjects +++ b/coreSubProjects @@ -1 +1 @@ -Subproject commit b18fcb5815ce172ea61a3a11c87da0c38cc174e2 +Subproject commit 877b0dae25a59b4e553e7045328938ff7ed24d85 From 2463d8c02436775ce137ce037a872650aed1f46f Mon Sep 17 00:00:00 2001 From: coolGi Date: Tue, 3 Oct 2023 14:38:52 +1030 Subject: [PATCH 11/27] Added option to allow button background to not appear --- .../wrappers/gui/TexturedButtonWidget.java | 104 +++++++++++------- .../wrappers/gui/updater/UpdateModScreen.java | 4 +- 2 files changed, 66 insertions(+), 42 deletions(-) diff --git a/common/src/main/java/com/seibel/distanthorizons/common/wrappers/gui/TexturedButtonWidget.java b/common/src/main/java/com/seibel/distanthorizons/common/wrappers/gui/TexturedButtonWidget.java index 1e5658acf..d3f0b8db4 100644 --- a/common/src/main/java/com/seibel/distanthorizons/common/wrappers/gui/TexturedButtonWidget.java +++ b/common/src/main/java/com/seibel/distanthorizons/common/wrappers/gui/TexturedButtonWidget.java @@ -33,10 +33,14 @@ import net.minecraft.client.gui.components.WidgetSprites; #endif /** - * Creates a button with a texture on it + * Creates a button with a texture on it (and a background) that works with all mc versions + * + * @author coolGi + * @version 2023-10-03 */ public class TexturedButtonWidget extends ImageButton { + public final boolean renderBackground; #if POST_MC_1_20_2 public static WidgetSprites locationToSprite(ResourceLocation resourceLocation, int u, int v) { @@ -64,58 +68,73 @@ public class TexturedButtonWidget extends ImageButton #if POST_MC_1_17_1 - public TexturedButtonWidget(int x, int y, int width, int height, int u, int v, ResourceLocation texture, OnPress pressAction) + public TexturedButtonWidget(int x, int y, int width, int height, int u, int v, ResourceLocation texture, OnPress pressAction) { + this(x, y, width, height, u, v, texture, pressAction, true); + } + public TexturedButtonWidget(int x, int y, int width, int height, int u, int v, ResourceLocation texture, OnPress pressAction, boolean renderBackground) { #if PRE_MC_1_20_2 super(x, y, width, height, u, v, texture, pressAction); #else super(x, y, width, height, locationToSprite(texture, u, v), pressAction); #endif + this.renderBackground = renderBackground; } #endif - public TexturedButtonWidget(int x, int y, int width, int height, int u, int v, int hoveredVOffset, ResourceLocation texture, int textureWidth, int textureHeight, OnPress pressAction) + public TexturedButtonWidget(int x, int y, int width, int height, int u, int v, int hoveredVOffset, ResourceLocation texture, int textureWidth, int textureHeight, OnPress pressAction) { + this(x, y, width, height, u, v, hoveredVOffset, texture, textureWidth, textureHeight, pressAction, true); + } + public TexturedButtonWidget(int x, int y, int width, int height, int u, int v, int hoveredVOffset, ResourceLocation texture, int textureWidth, int textureHeight, OnPress pressAction, boolean renderBackground) { #if PRE_MC_1_20_2 super(x, y, width, height, u, v, hoveredVOffset, texture, textureWidth, textureHeight, pressAction); #else super(x, y, width, height, locationToSprite(texture, u, v, textureWidth, textureHeight, hoveredVOffset), pressAction); #endif + this.renderBackground = renderBackground; } - public TexturedButtonWidget(int x, int y, int width, int height, int u, int v, int hoveredVOffset, ResourceLocation texture, int textureWidth, int textureHeight, OnPress pressAction, Component text) + public TexturedButtonWidget(int x, int y, int width, int height, int u, int v, int hoveredVOffset, ResourceLocation texture, int textureWidth, int textureHeight, OnPress pressAction, Component text) { + this(x, y, width, height, u, v, hoveredVOffset, texture, textureWidth, textureHeight, pressAction, text, true); + } + public TexturedButtonWidget(int x, int y, int width, int height, int u, int v, int hoveredVOffset, ResourceLocation texture, int textureWidth, int textureHeight, OnPress pressAction, Component text, boolean renderBackground) { #if PRE_MC_1_20_2 super(x, y, width, height, u, v, hoveredVOffset, texture, textureWidth, textureHeight, pressAction, text); #else super(x, y, locationToSprite(texture, u, v, textureWidth, textureHeight, hoveredVOffset), pressAction, text); #endif + this.renderBackground = renderBackground; } #if PRE_MC_1_19_4 @Override public void renderButton(PoseStack matrices, int mouseX, int mouseY, float delta) { - #if PRE_MC_1_17_1 - Minecraft.getInstance().getTextureManager().bind(WIDGETS_LOCATION); - RenderSystem.color4f(1.0F, 1.0F, 1.0F, this.alpha); - #else - RenderSystem.setShader(GameRenderer::getPositionTexShader); - RenderSystem.setShaderTexture(0, WIDGETS_LOCATION); - RenderSystem.setShaderColor(1.0F, 1.0F, 1.0F, this.alpha); - #endif + if (this.renderBackground) // Renders the background of the button + { + #if PRE_MC_1_17_1 + Minecraft.getInstance().getTextureManager().bind(WIDGETS_LOCATION); + RenderSystem.color4f(1.0F, 1.0F, 1.0F, this.alpha); + #else + RenderSystem.setShader(GameRenderer::getPositionTexShader); + RenderSystem.setShaderTexture(0, WIDGETS_LOCATION); + RenderSystem.setShaderColor(1.0F, 1.0F, 1.0F, this.alpha); + #endif - int i = this.getYImage(this.isHovered); - RenderSystem.enableBlend(); - RenderSystem.defaultBlendFunc(); - RenderSystem.enableDepthTest(); - #if PRE_MC_1_19_4 - this.blit(matrices, this.x, this.y, 0, 46 + i * 20, this.width / 2, this.height); - this.blit(matrices, this.x + this.width / 2, this.y, 200 - this.width / 2, 46 + i * 20, this.width / 2, this.height); - #else - this.blit(matrices, this.getX(), this.getY(), 0, 46 + i * 20, this.getWidth() / 2, this.getHeight()); - this.blit(matrices, this.getX() + this.getWidth() / 2, this.getY(), 200 - this.width / 2, 46 + i * 20, this.getWidth() / 2, this.getHeight()); - #endif + int i = this.getYImage(this.isHovered); + RenderSystem.enableBlend(); + RenderSystem.defaultBlendFunc(); + RenderSystem.enableDepthTest(); + #if PRE_MC_1_19_4 + this.blit(matrices, this.x, this.y, 0, 46 + i * 20, this.width / 2, this.height); + this.blit(matrices, this.x + this.width / 2, this.y, 200 - this.width / 2, 46 + i * 20, this.width / 2, this.height); + #else + this.blit(matrices, this.getX(), this.getY(), 0, 46 + i * 20, this.getWidth() / 2, this.getHeight()); + this.blit(matrices, this.getX() + this.getWidth() / 2, this.getY(), 200 - this.width / 2, 46 + i * 20, this.getWidth() / 2, this.getHeight()); + #endif + } super.renderButton(matrices, mouseX, mouseY, delta); } @@ -131,25 +150,28 @@ public class TexturedButtonWidget extends ImageButton public void renderWidget(GuiGraphics matrices, int mouseX, int mouseY, float delta) { #endif - int i = 1; - if (!this.active) i = 0; - else if (this.isHovered) i = 2; + if (this.renderBackground) // Renders the background of the button + { + int i = 1; + if (!this.active) i = 0; + else if (this.isHovered) i = 2; - #if PRE_MC_1_20_1 - RenderSystem.enableBlend(); - RenderSystem.defaultBlendFunc(); - RenderSystem.enableDepthTest(); - - this.blit(matrices, this.getX(), this.getY(), 0, 46 + i * 20, this.getWidth() / 2, this.getHeight()); - this.blit(matrices, this.getX() + this.getWidth() / 2, this.getY(), 200 - this.width / 2, 46 + i * 20, this.getWidth() / 2, this.getHeight()); - #elif MC_1_20_1 - matrices.blit(WIDGETS_LOCATION, this.getX(), this.getY(), 0, 46 + i * 20, this.getWidth() / 2, this.getHeight()); - matrices.blit(WIDGETS_LOCATION, this.getX() + this.getWidth() / 2, this.getY(), 200 - this.width / 2, 46 + i * 20, this.getWidth() / 2, this.getHeight()); - #else - // FIXME[1.20.2]: Later changed `.enabled()` to a proper thing taking the hovered and active into account - matrices.blit(sprites.enabled(), this.getX(), this.getY(), 0, 46 + i * 20, this.getWidth() / 2, this.getHeight()); - matrices.blit(sprites.enabled(), this.getX() + this.getWidth() / 2, this.getY(), 200 - this.width / 2, 46 + i * 20, this.getWidth() / 2, this.getHeight()); - #endif + #if PRE_MC_1_20_1 + RenderSystem.enableBlend(); + RenderSystem.defaultBlendFunc(); + RenderSystem.enableDepthTest(); + + this.blit(matrices, this.getX(), this.getY(), 0, 46 + i * 20, this.getWidth() / 2, this.getHeight()); + this.blit(matrices, this.getX() + this.getWidth() / 2, this.getY(), 200 - this.width / 2, 46 + i * 20, this.getWidth() / 2, this.getHeight()); + #elif MC_1_20_1 + matrices.blit(WIDGETS_LOCATION, this.getX(), this.getY(), 0, 46 + i * 20, this.getWidth() / 2, this.getHeight()); + matrices.blit(WIDGETS_LOCATION, this.getX() + this.getWidth() / 2, this.getY(), 200 - this.width / 2, 46 + i * 20, this.getWidth() / 2, this.getHeight()); + #else + // FIXME[1.20.2]: Later changed `.enabled()` to a proper thing taking the hovered and active into account + matrices.blit(sprites.enabled(), this.getX(), this.getY(), 0, 46 + i * 20, this.getWidth() / 2, this.getHeight()); + matrices.blit(sprites.enabled(), this.getX() + this.getWidth() / 2, this.getY(), 200 - this.width / 2, 46 + i * 20, this.getWidth() / 2, this.getHeight()); + #endif + } super.renderWidget(matrices, mouseX, mouseY, delta); } diff --git a/common/src/main/java/com/seibel/distanthorizons/common/wrappers/gui/updater/UpdateModScreen.java b/common/src/main/java/com/seibel/distanthorizons/common/wrappers/gui/updater/UpdateModScreen.java index 0484da1aa..608592901 100644 --- a/common/src/main/java/com/seibel/distanthorizons/common/wrappers/gui/updater/UpdateModScreen.java +++ b/common/src/main/java/com/seibel/distanthorizons/common/wrappers/gui/updater/UpdateModScreen.java @@ -90,7 +90,9 @@ public class UpdateModScreen extends DhScreen // For now it goes to the client option by default (buttonWidget) -> System.out.println("Nice, you found an easter egg :)"), // TODO: Add a proper easter egg to pressing the logo (maybe with confetti) // Add a title to the button - Translatable(ModInfo.ID + ".updater.title") + Translatable(ModInfo.ID + ".updater.title"), + // Dont render the background of the button + false )); } catch (Exception e) From 40618bc35a2d2e1d961d369f9cfcfb61f8764948 Mon Sep 17 00:00:00 2001 From: coolGi Date: Tue, 3 Oct 2023 16:01:30 +1030 Subject: [PATCH 12/27] Fixed up button for 1.20.2 --- .../wrappers/gui/TexturedButtonWidget.java | 130 +++++++++--------- .../1_20_2.distanthorizons.accesswidener | 3 + 2 files changed, 65 insertions(+), 68 deletions(-) diff --git a/common/src/main/java/com/seibel/distanthorizons/common/wrappers/gui/TexturedButtonWidget.java b/common/src/main/java/com/seibel/distanthorizons/common/wrappers/gui/TexturedButtonWidget.java index d3f0b8db4..febec6549 100644 --- a/common/src/main/java/com/seibel/distanthorizons/common/wrappers/gui/TexturedButtonWidget.java +++ b/common/src/main/java/com/seibel/distanthorizons/common/wrappers/gui/TexturedButtonWidget.java @@ -19,6 +19,17 @@ package com.seibel.distanthorizons.common.wrappers.gui; +/** + * Creates a button with a texture on it (and a background) that works with all mc versions + * + * @author coolGi + * @version 2023-10-03 + */ + + +import com.mojang.blaze3d.systems.RenderSystem; +import net.minecraft.client.gui.components.AbstractButton; +import net.minecraft.client.gui.components.Button; import net.minecraft.client.gui.components.ImageButton; import net.minecraft.network.chat.Component; import net.minecraft.resources.ResourceLocation; @@ -28,73 +39,27 @@ import net.minecraft.client.Minecraft; #else import net.minecraft.client.gui.GuiGraphics; #endif -#if POST_MC_1_20_2 -import net.minecraft.client.gui.components.WidgetSprites; -#endif -/** - * Creates a button with a texture on it (and a background) that works with all mc versions - * - * @author coolGi - * @version 2023-10-03 - */ +#if PRE_MC_1_20_2 public class TexturedButtonWidget extends ImageButton +#else +public class TexturedButtonWidget extends Button +#endif { public final boolean renderBackground; + #if POST_MC_1_20_2 - public static WidgetSprites locationToSprite(ResourceLocation resourceLocation, int u, int v) - { - // FIXME[1.20.2]: Change the `-1`'s to use resourceLocation's texture values - return locationToSprite(resourceLocation, u, v, -1, -1, -1); - } - public static WidgetSprites locationToSprite(ResourceLocation resourceLocation, int u, int v, int textureWidth, int textureHeight, int hoveredVOffset) - { - // FIXME[1.20.2]: No idea how widget sprite works, and not documented anywhere - /* - Several things need to be done to fix this - - First of all, what do each of the paramiters mean - We know that they may relate to the normal, deactivated, hovered, and pressed textures, but which is which. And are these guesses correct? - - How do we move the texture - As Minecraft is now asking for several textures, instead of one big texture, what is the plan on getting this to work? - - One strategy is to split the textures in our assets, then combine them for older versions - - Another is to split it for newer versions - Either of those requires the texture files to be changed, and new resources to be mapped - */ - return new WidgetSprites(resourceLocation, resourceLocation); - } + private final int u; + private final int v; + private final int hoveredVOffset; + + private final ResourceLocation texture; + + private final int textureWidth; + private final int textureHeight; #endif - - - #if POST_MC_1_17_1 - public TexturedButtonWidget(int x, int y, int width, int height, int u, int v, ResourceLocation texture, OnPress pressAction) { - this(x, y, width, height, u, v, texture, pressAction, true); - } - public TexturedButtonWidget(int x, int y, int width, int height, int u, int v, ResourceLocation texture, OnPress pressAction, boolean renderBackground) - { - #if PRE_MC_1_20_2 - super(x, y, width, height, u, v, texture, pressAction); - #else - super(x, y, width, height, locationToSprite(texture, u, v), pressAction); - #endif - this.renderBackground = renderBackground; - } - #endif - - public TexturedButtonWidget(int x, int y, int width, int height, int u, int v, int hoveredVOffset, ResourceLocation texture, int textureWidth, int textureHeight, OnPress pressAction) { - this(x, y, width, height, u, v, hoveredVOffset, texture, textureWidth, textureHeight, pressAction, true); - } - public TexturedButtonWidget(int x, int y, int width, int height, int u, int v, int hoveredVOffset, ResourceLocation texture, int textureWidth, int textureHeight, OnPress pressAction, boolean renderBackground) - { - #if PRE_MC_1_20_2 - super(x, y, width, height, u, v, hoveredVOffset, texture, textureWidth, textureHeight, pressAction); - #else - super(x, y, width, height, locationToSprite(texture, u, v, textureWidth, textureHeight, hoveredVOffset), pressAction); - #endif - this.renderBackground = renderBackground; - } - public TexturedButtonWidget(int x, int y, int width, int height, int u, int v, int hoveredVOffset, ResourceLocation texture, int textureWidth, int textureHeight, OnPress pressAction, Component text) { this(x, y, width, height, u, v, hoveredVOffset, texture, textureWidth, textureHeight, pressAction, text, true); } @@ -103,12 +68,24 @@ public class TexturedButtonWidget extends ImageButton #if PRE_MC_1_20_2 super(x, y, width, height, u, v, hoveredVOffset, texture, textureWidth, textureHeight, pressAction, text); #else - super(x, y, locationToSprite(texture, u, v, textureWidth, textureHeight, hoveredVOffset), pressAction, text); + // We don't pass on the text option as otherwise it will render (we normally pass it for narration) + // TODO: Find a fix for it + super(x, y, width, height, Component.empty(), pressAction, DEFAULT_NARRATION); + + this.u = u; + this.v = v; + this.hoveredVOffset = hoveredVOffset; + + this.texture = texture; + + this.textureWidth = textureWidth; + this.textureHeight = textureHeight; #endif + this.renderBackground = renderBackground; } - + #if PRE_MC_1_20_2 #if PRE_MC_1_19_4 @Override public void renderButton(PoseStack matrices, int mouseX, int mouseY, float delta) { @@ -139,14 +116,15 @@ public class TexturedButtonWidget extends ImageButton super.renderButton(matrices, mouseX, mouseY, delta); } #else - @Override #if PRE_MC_1_20_1 + @Override public void renderWidget(PoseStack matrices, int mouseX, int mouseY, float delta) { RenderSystem.setShader(GameRenderer::getPositionTexShader); RenderSystem.setShaderTexture(0, WIDGETS_LOCATION); RenderSystem.setShaderColor(1.0F, 1.0F, 1.0F, this.alpha); #else + @Override public void renderWidget(GuiGraphics matrices, int mouseX, int mouseY, float delta) { #endif @@ -163,17 +141,33 @@ public class TexturedButtonWidget extends ImageButton this.blit(matrices, this.getX(), this.getY(), 0, 46 + i * 20, this.getWidth() / 2, this.getHeight()); this.blit(matrices, this.getX() + this.getWidth() / 2, this.getY(), 200 - this.width / 2, 46 + i * 20, this.getWidth() / 2, this.getHeight()); - #elif MC_1_20_1 + #else matrices.blit(WIDGETS_LOCATION, this.getX(), this.getY(), 0, 46 + i * 20, this.getWidth() / 2, this.getHeight()); matrices.blit(WIDGETS_LOCATION, this.getX() + this.getWidth() / 2, this.getY(), 200 - this.width / 2, 46 + i * 20, this.getWidth() / 2, this.getHeight()); - #else - // FIXME[1.20.2]: Later changed `.enabled()` to a proper thing taking the hovered and active into account - matrices.blit(sprites.enabled(), this.getX(), this.getY(), 0, 46 + i * 20, this.getWidth() / 2, this.getHeight()); - matrices.blit(sprites.enabled(), this.getX() + this.getWidth() / 2, this.getY(), 200 - this.width / 2, 46 + i * 20, this.getWidth() / 2, this.getHeight()); #endif } super.renderWidget(matrices, mouseX, mouseY, delta); } - #endif + #endif + #else + @Override + public void renderWidget(GuiGraphics matrices, int mouseX, int mouseY, float delta) + { + if (this.renderBackground) + { + //RenderSystem.enableBlend(); + //RenderSystem.enableDepthTest(); + matrices.blitSprite(SPRITES.get(this.active, this.isHoveredOrFocused()), this.getX(), this.getY(), this.getWidth(), this.getHeight()); + } + + + // Renders the sprite + int i = 0; + if (!this.active) i = 2; + else if (this.isHovered) i = 1; + + matrices.blit(this.texture, this.getX(), this.getY(), this.u, this.v + (this.hoveredVOffset * i), this.width, this.height, this.textureWidth, this.textureHeight); + } + #endif } diff --git a/common/src/main/resources/1_20_2.distanthorizons.accesswidener b/common/src/main/resources/1_20_2.distanthorizons.accesswidener index 349bf84d9..c793fab68 100644 --- a/common/src/main/resources/1_20_2.distanthorizons.accesswidener +++ b/common/src/main/resources/1_20_2.distanthorizons.accesswidener @@ -30,6 +30,9 @@ accessible method net/minecraft/client/renderer/texture/SpriteContents$AnimatedT accessible field net/minecraft/client/renderer/texture/SpriteContents animatedTexture Lnet/minecraft/client/renderer/texture/SpriteContents$AnimatedTexture; accessible field net/minecraft/client/renderer/texture/SpriteContents originalImage Lcom/mojang/blaze3d/platform/NativeImage; +# UI stuff +accessible field net/minecraft/client/gui/components/AbstractButton SPRITES Lnet/minecraft/client/gui/components/WidgetSprites; + # hacky stuff accessible field net/minecraft/util/ThreadingDetector lock Ljava/util/concurrent/Semaphore; mutable field net/minecraft/util/ThreadingDetector lock Ljava/util/concurrent/Semaphore; From 727d7ee3466038592df1ad4c36a947bd752d5472 Mon Sep 17 00:00:00 2001 From: coolGi Date: Tue, 3 Oct 2023 16:21:42 +1030 Subject: [PATCH 13/27] used .equals for string --- .../common/wrappers/gui/ClassicConfigGUI.java | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/common/src/main/java/com/seibel/distanthorizons/common/wrappers/gui/ClassicConfigGUI.java b/common/src/main/java/com/seibel/distanthorizons/common/wrappers/gui/ClassicConfigGUI.java index c6b016b59..b3411c7e4 100644 --- a/common/src/main/java/com/seibel/distanthorizons/common/wrappers/gui/ClassicConfigGUI.java +++ b/common/src/main/java/com/seibel/distanthorizons/common/wrappers/gui/ClassicConfigGUI.java @@ -387,16 +387,16 @@ public class ClassicConfigGUI public void render(GuiGraphics matrices, int mouseX, int mouseY, float delta) #endif { - #if MC_1_20_2 - this.renderBackground(matrices, mouseX, mouseY, delta); // Renders background - #else + #if PRE_MC_1_20_2 // 1.20.2 now enables this by default in the `this.list.render` function this.renderBackground(matrices); // Renders background + #else + super.render(matrices, mouseX, mouseY, delta); #endif this.list.render(matrices, mouseX, mouseY, delta); // Render buttons DhDrawCenteredString(matrices, font, title, width / 2, 15, 0xFFFFFF); // Render title - if (this.configBase.modID == "distanthorizons") + if (this.configBase.modID.equals("distanthorizons")) { // Display version DhDrawString(matrices, font, TextOrLiteral(ModInfo.VERSION), 2, height - 10, 0xAAAAAA); @@ -443,7 +443,9 @@ public class ClassicConfigGUI } } } + #if PRE_MC_1_20_2 super.render(matrices, mouseX, mouseY, delta); + #endif } } From 76f7371057e1f6664697e21f6fdbcb69bfbe1fe7 Mon Sep 17 00:00:00 2001 From: coolGi Date: Tue, 3 Oct 2023 16:44:18 +1030 Subject: [PATCH 14/27] Fixed building for all mc versions --- .../common/wrappers/gui/TexturedButtonWidget.java | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/common/src/main/java/com/seibel/distanthorizons/common/wrappers/gui/TexturedButtonWidget.java b/common/src/main/java/com/seibel/distanthorizons/common/wrappers/gui/TexturedButtonWidget.java index febec6549..866ef61c7 100644 --- a/common/src/main/java/com/seibel/distanthorizons/common/wrappers/gui/TexturedButtonWidget.java +++ b/common/src/main/java/com/seibel/distanthorizons/common/wrappers/gui/TexturedButtonWidget.java @@ -33,6 +33,10 @@ import net.minecraft.client.gui.components.Button; import net.minecraft.client.gui.components.ImageButton; import net.minecraft.network.chat.Component; import net.minecraft.resources.ResourceLocation; + +#if POST_MC_1_17_1 +import net.minecraft.client.renderer.GameRenderer; +#endif #if PRE_MC_1_20_1 import com.mojang.blaze3d.vertex.PoseStack; import net.minecraft.client.Minecraft; From 1775a58938d861cca7b877f170098f696516ddd3 Mon Sep 17 00:00:00 2001 From: coolGi Date: Tue, 3 Oct 2023 22:48:13 +1030 Subject: [PATCH 15/27] Updated core submodule --- coreSubProjects | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/coreSubProjects b/coreSubProjects index 877b0dae2..e966d40ae 160000 --- a/coreSubProjects +++ b/coreSubProjects @@ -1 +1 @@ -Subproject commit 877b0dae25a59b4e553e7045328938ff7ed24d85 +Subproject commit e966d40ae24ee91df72697b22cb3ddb43f5128d2 From b5267a06586d292e36a042e3257db49c665773ac Mon Sep 17 00:00:00 2001 From: coolGi Date: Tue, 3 Oct 2023 23:09:08 +1030 Subject: [PATCH 16/27] Added "provides" for our old modid --- fabric/src/main/resources/fabric.mod.json | 3 +++ 1 file changed, 3 insertions(+) diff --git a/fabric/src/main/resources/fabric.mod.json b/fabric/src/main/resources/fabric.mod.json index 7110f74ca..dda42ec55 100644 --- a/fabric/src/main/resources/fabric.mod.json +++ b/fabric/src/main/resources/fabric.mod.json @@ -3,6 +3,9 @@ "id": "distanthorizons", "version": "${version}", + "provides": "lod", + + "name": "${mod_name}", "description": "${description}", "authors": $authors, From 7fb021010c4ea0d8c81a7df583d7c9655a23f1f5 Mon Sep 17 00:00:00 2001 From: coolGi Date: Tue, 3 Oct 2023 23:25:10 +1030 Subject: [PATCH 17/27] Renamed cursedforge reference in gradle --- build.gradle | 4 +++- fabric/build.gradle | 4 ++-- fabric/src/main/resources/fabric.mod.json | 5 +++-- forge/build.gradle | 6 +++--- 4 files changed, 11 insertions(+), 8 deletions(-) diff --git a/build.gradle b/build.gradle index 5d07bb5a6..b97ee24af 100644 --- a/build.gradle +++ b/build.gradle @@ -521,10 +521,12 @@ allprojects { p -> } // Required for importing CursedForge mods + // DONT USE CURSEDFORGE UNLESS NEEDED. Modrinth, and anywhere else is more reliable than cursedforge maven { + name = "CursedForge" url "https://www.cursemaven.com" content { - includeGroup "curse.maven" + includeGroup "maven.curse" } } diff --git a/fabric/build.gradle b/fabric/build.gradle index c2895fc2a..d211a3db8 100644 --- a/fabric/build.gradle +++ b/fabric/build.gradle @@ -67,10 +67,10 @@ dependencies { // Starlight - addMod("curse.maven:starlight-521783:${rootProject.starlight_version_fabric}", rootProject.enable_starlight) + addMod("maven.curse:starlight-521783:${rootProject.starlight_version_fabric}", rootProject.enable_starlight) // Phosphor - addMod("curse.maven:phosphor-372124:${rootProject.phosphor_version_fabric}", rootProject.enable_phosphor) + addMod("maven.curse:phosphor-372124:${rootProject.phosphor_version_fabric}", rootProject.enable_phosphor) // Sodium addMod("maven.modrinth:sodium:${rootProject.sodium_version}", rootProject.enable_sodium) diff --git a/fabric/src/main/resources/fabric.mod.json b/fabric/src/main/resources/fabric.mod.json index dda42ec55..966bc9c82 100644 --- a/fabric/src/main/resources/fabric.mod.json +++ b/fabric/src/main/resources/fabric.mod.json @@ -3,7 +3,7 @@ "id": "distanthorizons", "version": "${version}", - "provides": "lod", + "provides": [ "lod" ], "name": "${mod_name}", @@ -51,7 +51,8 @@ "modmenu": { "links": { "modmenu.discord": "${discord}" - } + }, + "update_checker": false } }, diff --git a/forge/build.gradle b/forge/build.gradle index bc3dc25c3..66372931e 100644 --- a/forge/build.gradle +++ b/forge/build.gradle @@ -80,12 +80,12 @@ dependencies { // } // Starlight - addMod("curse.maven:starlight-forge-526854:${rootProject.starlight_version_forge}", rootProject.enable_starlight_forge) + addMod("maven.curse:starlight-forge-526854:${rootProject.starlight_version_forge}", rootProject.enable_starlight_forge) // annotationProcessor "org.spongepowered:mixin:0.8.4:processor" - addMod("curse.maven:TerraForged-363820:${rootProject.terraforged_version}", rootProject.enable_terraforged) + addMod("maven.curse:TerraForged-363820:${rootProject.terraforged_version}", rootProject.enable_terraforged) - addMod("curse.maven:TerraFirmaCraft-302973:4616004", rootProject.enable_terrafirmacraft) + addMod("maven.curse:TerraFirmaCraft-302973:4616004", rootProject.enable_terrafirmacraft) // if (System.getProperty("idea.sync.active") != "true") { // annotationProcessor "org.spongepowered:mixin:0.8.4:processor" From c3103810dbe791c5899441fac5b2f919f262c621 Mon Sep 17 00:00:00 2001 From: coolGi Date: Tue, 3 Oct 2023 23:41:23 +1030 Subject: [PATCH 18/27] Moved run directory to root of the project --- fabric/build.gradle | 4 ++-- forge/build.gradle | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/fabric/build.gradle b/fabric/build.gradle index d211a3db8..3bd1cad7a 100644 --- a/fabric/build.gradle +++ b/fabric/build.gradle @@ -11,13 +11,13 @@ loom { client() setConfigName("Fabric Client") ideConfigGenerated(true) - runDir("run") + runDir("../run") } server { server() setConfigName("Fabric Server") ideConfigGenerated(true) - runDir("run") + runDir("../run") } } } diff --git a/forge/build.gradle b/forge/build.gradle index 66372931e..c4de0dd72 100644 --- a/forge/build.gradle +++ b/forge/build.gradle @@ -35,14 +35,14 @@ loom { client() setConfigName("Forge Client") ideConfigGenerated(true) - runDir("run") + runDir("../run") vmArgs("-XX:-OmitStackTraceInFastThrow", minecraftMemoryJavaArg) } server { server() setConfigName("Forge Server") ideConfigGenerated(true) - runDir("run") + runDir("../run") } } } From aa0f274b87aa45352a3aab271dc8085a6609783e Mon Sep 17 00:00:00 2001 From: coolGi Date: Tue, 3 Oct 2023 23:43:07 +1030 Subject: [PATCH 19/27] Updated root subproject --- coreSubProjects | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/coreSubProjects b/coreSubProjects index e966d40ae..f81b453c3 160000 --- a/coreSubProjects +++ b/coreSubProjects @@ -1 +1 @@ -Subproject commit e966d40ae24ee91df72697b22cb3ddb43f5128d2 +Subproject commit f81b453c39bca440be626023651c96a721ec0418 From 796f45009176e75fbb089ae4969a6955aad94b8e Mon Sep 17 00:00:00 2001 From: coolGi Date: Wed, 4 Oct 2023 13:02:01 +1030 Subject: [PATCH 20/27] Revert "Renamed cursedforge reference in gradle" This reverts commit 7fb021010c4ea0d8c81a7df583d7c9655a23f1f5. --- build.gradle | 4 +--- fabric/build.gradle | 4 ++-- fabric/src/main/resources/fabric.mod.json | 5 ++--- forge/build.gradle | 6 +++--- 4 files changed, 8 insertions(+), 11 deletions(-) diff --git a/build.gradle b/build.gradle index b97ee24af..5d07bb5a6 100644 --- a/build.gradle +++ b/build.gradle @@ -521,12 +521,10 @@ allprojects { p -> } // Required for importing CursedForge mods - // DONT USE CURSEDFORGE UNLESS NEEDED. Modrinth, and anywhere else is more reliable than cursedforge maven { - name = "CursedForge" url "https://www.cursemaven.com" content { - includeGroup "maven.curse" + includeGroup "curse.maven" } } diff --git a/fabric/build.gradle b/fabric/build.gradle index 3bd1cad7a..84c5e42ac 100644 --- a/fabric/build.gradle +++ b/fabric/build.gradle @@ -67,10 +67,10 @@ dependencies { // Starlight - addMod("maven.curse:starlight-521783:${rootProject.starlight_version_fabric}", rootProject.enable_starlight) + addMod("curse.maven:starlight-521783:${rootProject.starlight_version_fabric}", rootProject.enable_starlight) // Phosphor - addMod("maven.curse:phosphor-372124:${rootProject.phosphor_version_fabric}", rootProject.enable_phosphor) + addMod("curse.maven:phosphor-372124:${rootProject.phosphor_version_fabric}", rootProject.enable_phosphor) // Sodium addMod("maven.modrinth:sodium:${rootProject.sodium_version}", rootProject.enable_sodium) diff --git a/fabric/src/main/resources/fabric.mod.json b/fabric/src/main/resources/fabric.mod.json index 966bc9c82..dda42ec55 100644 --- a/fabric/src/main/resources/fabric.mod.json +++ b/fabric/src/main/resources/fabric.mod.json @@ -3,7 +3,7 @@ "id": "distanthorizons", "version": "${version}", - "provides": [ "lod" ], + "provides": "lod", "name": "${mod_name}", @@ -51,8 +51,7 @@ "modmenu": { "links": { "modmenu.discord": "${discord}" - }, - "update_checker": false + } } }, diff --git a/forge/build.gradle b/forge/build.gradle index c4de0dd72..2a2753f91 100644 --- a/forge/build.gradle +++ b/forge/build.gradle @@ -80,12 +80,12 @@ dependencies { // } // Starlight - addMod("maven.curse:starlight-forge-526854:${rootProject.starlight_version_forge}", rootProject.enable_starlight_forge) + addMod("curse.maven:starlight-forge-526854:${rootProject.starlight_version_forge}", rootProject.enable_starlight_forge) // annotationProcessor "org.spongepowered:mixin:0.8.4:processor" - addMod("maven.curse:TerraForged-363820:${rootProject.terraforged_version}", rootProject.enable_terraforged) + addMod("curse.maven:TerraForged-363820:${rootProject.terraforged_version}", rootProject.enable_terraforged) - addMod("maven.curse:TerraFirmaCraft-302973:4616004", rootProject.enable_terrafirmacraft) + addMod("curse.maven:TerraFirmaCraft-302973:4616004", rootProject.enable_terrafirmacraft) // if (System.getProperty("idea.sync.active") != "true") { // annotationProcessor "org.spongepowered:mixin:0.8.4:processor" From 64d2363050e5a8ecf46f524681b24c6c1487e008 Mon Sep 17 00:00:00 2001 From: coolGi Date: Wed, 4 Oct 2023 13:02:24 +1030 Subject: [PATCH 21/27] Fixed fabric mod json --- fabric/src/main/resources/fabric.mod.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/fabric/src/main/resources/fabric.mod.json b/fabric/src/main/resources/fabric.mod.json index dda42ec55..2ffe2d3cc 100644 --- a/fabric/src/main/resources/fabric.mod.json +++ b/fabric/src/main/resources/fabric.mod.json @@ -2,8 +2,8 @@ "schemaVersion": 1, "id": "distanthorizons", "version": "${version}", - - "provides": "lod", + + "provides": [ "lod" ], "name": "${mod_name}", From 69c5f49c727103b5d7e26f698f97f2686aea9359 Mon Sep 17 00:00:00 2001 From: coolGi Date: Thu, 5 Oct 2023 13:09:45 +1030 Subject: [PATCH 22/27] Seeing if this will fix DH auto-updates on windows --- coreSubProjects | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/coreSubProjects b/coreSubProjects index f81b453c3..f45a4b8d6 160000 --- a/coreSubProjects +++ b/coreSubProjects @@ -1 +1 @@ -Subproject commit f81b453c39bca440be626023651c96a721ec0418 +Subproject commit f45a4b8d621d3981946a14b3389059a1a7b20abe From ec63a025fda087202e302a6a111bc967b6a63886 Mon Sep 17 00:00:00 2001 From: coolGi Date: Thu, 5 Oct 2023 13:12:39 +1030 Subject: [PATCH 23/27] Disabled updating to the same commit --- coreSubProjects | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/coreSubProjects b/coreSubProjects index f45a4b8d6..18ed2e7ee 160000 --- a/coreSubProjects +++ b/coreSubProjects @@ -1 +1 @@ -Subproject commit f45a4b8d621d3981946a14b3389059a1a7b20abe +Subproject commit 18ed2e7eeec8975c66e0a82e5be12870da1d51ea From bee9cce88105670d7abeaf4d0294bb88481ee702 Mon Sep 17 00:00:00 2001 From: coolGi Date: Fri, 6 Oct 2023 16:26:44 +1030 Subject: [PATCH 24/27] Temporary fix for windows file locking --- coreSubProjects | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/coreSubProjects b/coreSubProjects index 18ed2e7ee..1bea96b05 160000 --- a/coreSubProjects +++ b/coreSubProjects @@ -1 +1 @@ -Subproject commit 18ed2e7eeec8975c66e0a82e5be12870da1d51ea +Subproject commit 1bea96b050f275626dffc84c8366a83591de7de7 From 264a9b66fa67f752c1e74921305de73ad81a3748 Mon Sep 17 00:00:00 2001 From: coolGi Date: Fri, 6 Oct 2023 17:23:17 +1030 Subject: [PATCH 25/27] Fixed (hopefully) updater on Windows --- coreSubProjects | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/coreSubProjects b/coreSubProjects index 1bea96b05..ffb1ce435 160000 --- a/coreSubProjects +++ b/coreSubProjects @@ -1 +1 @@ -Subproject commit 1bea96b050f275626dffc84c8366a83591de7de7 +Subproject commit ffb1ce43552b4b39a68c520317e550140ab73e88 From f39d2d92f7251a6555ba94400af17b6d49c8526a Mon Sep 17 00:00:00 2001 From: coolGi Date: Fri, 6 Oct 2023 17:24:37 +1030 Subject: [PATCH 26/27] Updated core submodule --- coreSubProjects | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/coreSubProjects b/coreSubProjects index ffb1ce435..820683783 160000 --- a/coreSubProjects +++ b/coreSubProjects @@ -1 +1 @@ -Subproject commit ffb1ce43552b4b39a68c520317e550140ab73e88 +Subproject commit 820683783b3de42eba0cb97d7857cc3fcd970bf4 From 608e2d572303bb2b4ac0e27327e803c6a5346df9 Mon Sep 17 00:00:00 2001 From: coolGi Date: Fri, 6 Oct 2023 18:02:30 +1030 Subject: [PATCH 27/27] Used .renameTo instead of .canWrite to check if file is unlocked --- coreSubProjects | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/coreSubProjects b/coreSubProjects index 820683783..417cf0a89 160000 --- a/coreSubProjects +++ b/coreSubProjects @@ -1 +1 @@ -Subproject commit 820683783b3de42eba0cb97d7857cc3fcd970bf4 +Subproject commit 417cf0a8917db0865f4d75d0e4b860a76138c1a7