From 45d4f390a91aa29f091165200a6027f28b696eea Mon Sep 17 00:00:00 2001 From: James Seibel Date: Sat, 18 May 2024 20:31:15 -0500 Subject: [PATCH] Fix a bunch of compiler errors --- build.gradle | 4 +- .../fabric/FabricClientProxy.java | 14 ++-- forge/build.gradle | 14 +++- .../mixins/client/MixinLevelRenderer.java | 4 +- .../mixins/client/MixinLightTexture.java | 2 +- .../mixins/client/MixinMinecraft.java | 73 ++++++++++--------- .../resources/META-INF/NeoForge.mods.toml | 3 +- versionProperties/1.20.6.properties | 5 +- 8 files changed, 67 insertions(+), 52 deletions(-) diff --git a/build.gradle b/build.gradle index c3a8e8f88..f3c40c3b5 100644 --- a/build.gradle +++ b/build.gradle @@ -5,7 +5,7 @@ plugins { id "com.github.johnrengelman.shadow" version '8.1.1' apply false // Plugin to create merged jars - id "io.github.pacifistmc.forgix" version "1.2.6" + id "io.github.pacifistmc.forgix" version "1.2.9" // Manifold preprocessor id "systems.manifold.manifold-gradle-plugin" version "0.0.2-alpha" @@ -325,7 +325,7 @@ subprojects { p -> "fabric.mod.json", "quilt.mod.json", "META-INF/mods.toml", - "META-INF/NeoForge.mods.toml", + "META-INF/neoforge.mods.toml", // The mixins for each of the loaders "DistantHorizons."+ p.name +".fabricLike.mixins.json" diff --git a/fabric/src/main/java/com/seibel/distanthorizons/fabric/FabricClientProxy.java b/fabric/src/main/java/com/seibel/distanthorizons/fabric/FabricClientProxy.java index 48010d55d..cb2153586 100644 --- a/fabric/src/main/java/com/seibel/distanthorizons/fabric/FabricClientProxy.java +++ b/fabric/src/main/java/com/seibel/distanthorizons/fabric/FabricClientProxy.java @@ -196,18 +196,18 @@ public class FabricClientProxy implements AbstractModInitializer.IEventProxy WorldRenderEvents.AFTER_SETUP.register((renderContext) -> { - Matrix4f projectionMatrix = renderContext.projectionMatrix(); + Mat4f projectionMatrix = McObjectConverter.Convert(renderContext.projectionMatrix()); - Matrix4f modelViewMatrix; - #if MC_VER < MC_1_20_4 - modelViewMatrix = matrixStack.last().pose(); + Mat4f modelViewMatrix; + #if MC_VER < MC_1_20_6 + modelViewMatrix = McObjectConverter.Convert(renderContext.matrixStack().last().pose()); #else - modelViewMatrix = renderContext.positionMatrix(); + modelViewMatrix = McObjectConverter.Convert(renderContext.positionMatrix()); #endif this.clientApi.renderLods(ClientLevelWrapper.getWrapper(renderContext.world()), - McObjectConverter.Convert(modelViewMatrix), - McObjectConverter.Convert(projectionMatrix), + modelViewMatrix, + projectionMatrix, renderContext.tickDelta()); }); diff --git a/forge/build.gradle b/forge/build.gradle index ed57a1326..790890245 100644 --- a/forge/build.gradle +++ b/forge/build.gradle @@ -4,7 +4,7 @@ plugins { id "architectury-plugin" version "3.4-SNAPSHOT" } -sourceCompatibility = targetCompatibility = JavaVersion.VERSION_17 +sourceCompatibility = targetCompatibility = JavaVersion.VERSION_21 architectury { platformSetupLoomIde() @@ -78,6 +78,18 @@ dependencies { addMod("curse.maven:TerraFirmaCraft-302973:4616004", rootProject.enable_terrafirmacraft) + + if ( // Only run on MC 1.20.6 or later + // FIXME: Add an environment variable for the Major, Minor, and Patch version number of Minecraft + minecraft_version.split("\\.")[1].toInteger() >= 20 && + ( + minecraft_version.split("\\.").length > 1 && // Incase there isn't a minor version + minecraft_version.split("\\.")[2].toInteger() >= 6 + ) + ) { + // (potential) hack fix, force jopt-simple to be exactly 5.0.4 because Mojang ships that version, but some transitive dependencies request 6.0+ + implementation('net.sf.jopt-simple:jopt-simple:5.0.4') //{ version { strictly '5.0.4' } } + } } task deleteResources(type: Delete) { 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 53fd70051..9eb2d9394 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 @@ -49,6 +49,7 @@ import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; +import javax.annotation.Nullable; import java.nio.FloatBuffer; #if MC_VER < MC_1_17_1 @@ -68,7 +69,8 @@ import org.lwjgl.opengl.GL15; @Mixin(LevelRenderer.class) public class MixinLevelRenderer { - @Shadow + @Nullable + @Shadow //# if MC_VER >= MC_1_20_4 (remap = false) # endif private ClientLevel level; @Unique private static float previousPartialTicks = 0; diff --git a/forge/src/main/java/com/seibel/distanthorizons/forge/mixins/client/MixinLightTexture.java b/forge/src/main/java/com/seibel/distanthorizons/forge/mixins/client/MixinLightTexture.java index 215f7f7d3..319c449a5 100644 --- a/forge/src/main/java/com/seibel/distanthorizons/forge/mixins/client/MixinLightTexture.java +++ b/forge/src/main/java/com/seibel/distanthorizons/forge/mixins/client/MixinLightTexture.java @@ -38,7 +38,7 @@ import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; @Mixin(LightTexture.class) public class MixinLightTexture { - @Shadow + @Shadow //# if MC_VER >= MC_1_20_4 (remap = false) # endif @Final private NativeImage lightPixels; diff --git a/neoforge/src/main/java/com/seibel/distanthorizons/neoforge/mixins/client/MixinMinecraft.java b/neoforge/src/main/java/com/seibel/distanthorizons/neoforge/mixins/client/MixinMinecraft.java index b9a266764..45e166c78 100644 --- a/neoforge/src/main/java/com/seibel/distanthorizons/neoforge/mixins/client/MixinMinecraft.java +++ b/neoforge/src/main/java/com/seibel/distanthorizons/neoforge/mixins/client/MixinMinecraft.java @@ -24,41 +24,44 @@ import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; @Mixin(Minecraft.class) public class MixinMinecraft { - #if MC_VER < MC_1_20_2 - #if MC_VER == 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") - ) - public void onOpenScreen(Minecraft instance, Screen guiScreen) - { - #else - @Redirect( - 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) - { - #endif - if (!Config.Client.Advanced.AutoUpdater.enableAutoUpdater.get()) // Don't do anything if the user doesn't want it - { - instance.setScreen(guiScreen); // Sets the screen back to the vanilla screen as if nothing ever happened - return; - } - - if (SelfUpdater.onStart()) - { - instance.setScreen(new UpdateModScreen( - 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")) - )); - } - else - { - instance.setScreen(guiScreen); // Sets the screen back to the vanilla screen as if nothing ever happened - } - } - #endif + // commented out due to a bug with Manifold and having nested preprocessors + // and since neoforge doesn't work for anything before MC 1.20.6 anyway it doesn't need to be included + + //#if MC_VER < MC_1_20_2 + //#if MC_VER == 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") + //) + //public void onOpenScreen(Minecraft instance, Screen guiScreen) + //{ + //#else + //@Redirect( + // 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) + //{ + //#endif + // if (!Config.Client.Advanced.AutoUpdater.enableAutoUpdater.get()) // Don't do anything if the user doesn't want it + // { + // instance.setScreen(guiScreen); // Sets the screen back to the vanilla screen as if nothing ever happened + // return; + // } + // + // if (SelfUpdater.onStart()) + // { + // instance.setScreen(new UpdateModScreen( + // 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")) + // )); + // } + // else + // { + // instance.setScreen(guiScreen); // Sets the screen back to the vanilla screen as if nothing ever happened + // } + //} + //#endif #if MC_VER >= MC_1_20_2 @Redirect( diff --git a/neoforge/src/main/resources/META-INF/NeoForge.mods.toml b/neoforge/src/main/resources/META-INF/NeoForge.mods.toml index dff252f0a..be75d32f9 100644 --- a/neoforge/src/main/resources/META-INF/NeoForge.mods.toml +++ b/neoforge/src/main/resources/META-INF/NeoForge.mods.toml @@ -29,8 +29,7 @@ issueTrackerURL = "${issues}" [[dependencies.distanthorizons]] modId = "minecraft" - mandatory = true # Forge syntax - type = "required" # Neoforge syntax + type = "required" versionRange = "${compatible_forgemc_versions}" # Where we set what version of mc it is avalible for ordering = "NONE" side = "BOTH" \ No newline at end of file diff --git a/versionProperties/1.20.6.properties b/versionProperties/1.20.6.properties index 06d1732e8..605989044 100644 --- a/versionProperties/1.20.6.properties +++ b/versionProperties/1.20.6.properties @@ -4,8 +4,7 @@ minecraft_version=1.20.6 parchment_version=1.20.6:2024.05.01 compatible_minecraft_versions=["1.20.6"] accessWidenerVersion=1_20_2 -builds_for=fabric,neoforge -# neoforge can be added once the issue with mixins has been resolved +builds_for=fabric,neoforge,forge # Fabric loader fabric_loader_version=0.15.10 @@ -38,7 +37,7 @@ fabric_api_version=0.97.8+1.20.6 enable_canvas=0 # (Neo)Forge loader -forge_version=50.0.0 +forge_version=50.0.19 neoforge_version=20.6.70-beta # (Neo)Forge mod versions starlight_version_forge=