From f4e71f701278d87d70cdb51e5fcc326050ded204 Mon Sep 17 00:00:00 2001 From: James Seibel Date: Fri, 14 Jun 2024 19:05:45 -0500 Subject: [PATCH] Add NeoForge 1.21 --- .../minecraft/MinecraftRenderWrapper.java | 15 +++++++++--- gradle.properties | 2 +- .../mixins/client/MixinLevelRenderer.java | 12 +++++++--- .../mixins/client/MixinOptionsScreen.java | 24 +++++++++++++------ versionProperties/1.21.properties | 5 ++-- 5 files changed, 41 insertions(+), 17 deletions(-) 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 eba3ef2e9..e0ffe856e 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 @@ -212,15 +212,24 @@ public class MinecraftRenderWrapper implements IMinecraftRenderWrapper { if (MC.level.dimensionType().hasSkyLight()) { - #if MC_VER < MC_1_17_1 - Vec3 colorValues = MC.level.getSkyColor(MC.gameRenderer.getMainCamera().getBlockPosition(), MC.getFrameTime()); + float frameTime; + #if MC_VER < MC_1_21 + frameTime = MC.getFrameTime(); #else - Vec3 colorValues = MC.level.getSkyColor(MC.gameRenderer.getMainCamera().getPosition(), MC.getTimer().getRealtimeDeltaTicks()); + frameTime = MC.getTimer().getRealtimeDeltaTicks(); + #endif + + #if MC_VER < MC_1_17_1 + Vec3 colorValues = MC.level.getSkyColor(MC.gameRenderer.getMainCamera().getBlockPosition(), frameTime); + #else + Vec3 colorValues = MC.level.getSkyColor(MC.gameRenderer.getMainCamera().getPosition(), frameTime); #endif return new Color((float) colorValues.x, (float) colorValues.y, (float) colorValues.z); } else + { return new Color(0, 0, 0); + } } @Override diff --git a/gradle.properties b/gradle.properties index 6da075fb9..b8928e5de 100644 --- a/gradle.properties +++ b/gradle.properties @@ -49,7 +49,7 @@ versionStr= # This defines what MC version Intellij will use for the preprocessor # and what version is used automatically by build and run commands -mcVer=1.21 +mcVer=1.20.6 # Defines the maximum amount of memory Minecraft is allowed when run in a development environment #minecraftMemoryJavaArg="-Xmx4G" diff --git a/neoforge/src/main/java/com/seibel/distanthorizons/neoforge/mixins/client/MixinLevelRenderer.java b/neoforge/src/main/java/com/seibel/distanthorizons/neoforge/mixins/client/MixinLevelRenderer.java index 95e5e9bff..8c3c0506c 100644 --- a/neoforge/src/main/java/com/seibel/distanthorizons/neoforge/mixins/client/MixinLevelRenderer.java +++ b/neoforge/src/main/java/com/seibel/distanthorizons/neoforge/mixins/client/MixinLevelRenderer.java @@ -98,7 +98,6 @@ public class MixinLevelRenderer private void renderChunkLayer(RenderType renderType, double x, double y, double z, Matrix4f projectionMatrix, Matrix4f frustumMatrix, CallbackInfo callback) #endif { - // get MC's model view and projection matrices #if MC_VER == MC_1_16_5 // get the matrices from the OpenGL fixed pipeline float[] mcProjMatrixRaw = new float[16]; @@ -120,15 +119,21 @@ public class MixinLevelRenderer #endif + float frameTime; + #if MC_VER < MC_1_21 + frameTime = Minecraft.getInstance().getFrameTime(); + #else + frameTime = Minecraft.getInstance().getTimer().getRealtimeDeltaTicks(); + #endif // only render before solid blocks if (renderType.equals(RenderType.solid())) { - ClientApi.INSTANCE.renderLods(ClientLevelWrapper.getWrapper(this.level), mcModelViewMatrix, mcProjectionMatrix, Minecraft.getInstance().getFrameTime()); + ClientApi.INSTANCE.renderLods(ClientLevelWrapper.getWrapper(this.level), mcModelViewMatrix, mcProjectionMatrix, frameTime); } else if (renderType.equals(RenderType.translucent())) { - ClientApi.INSTANCE.renderDeferredLods(ClientLevelWrapper.getWrapper(this.level), mcModelViewMatrix, mcProjectionMatrix, Minecraft.getInstance().getFrameTime()); + ClientApi.INSTANCE.renderDeferredLods(ClientLevelWrapper.getWrapper(this.level), mcModelViewMatrix, mcProjectionMatrix, frameTime); } if (Config.Client.Advanced.Debugging.lodOnlyMode.get()) @@ -154,4 +159,5 @@ public class MixinLevelRenderer ChunkWrapper.syncedUpdateClientLightStatus(); } + } diff --git a/neoforge/src/main/java/com/seibel/distanthorizons/neoforge/mixins/client/MixinOptionsScreen.java b/neoforge/src/main/java/com/seibel/distanthorizons/neoforge/mixins/client/MixinOptionsScreen.java index 983b446dd..b1a661e78 100644 --- a/neoforge/src/main/java/com/seibel/distanthorizons/neoforge/mixins/client/MixinOptionsScreen.java +++ b/neoforge/src/main/java/com/seibel/distanthorizons/neoforge/mixins/client/MixinOptionsScreen.java @@ -23,16 +23,13 @@ import com.seibel.distanthorizons.common.wrappers.gui.GetConfigScreen; import com.seibel.distanthorizons.common.wrappers.gui.TexturedButtonWidget; import com.seibel.distanthorizons.coreapi.ModInfo; import com.seibel.distanthorizons.core.config.Config; -import net.minecraft.client.gui.screens.OptionsScreen; import net.minecraft.client.gui.screens.Screen; import net.minecraft.network.chat.Component; #if MC_VER < MC_1_19_2 import net.minecraft.network.chat.TranslatableComponent; #endif import net.minecraft.resources.ResourceLocation; -import org.spongepowered.asm.mixin.Final; import org.spongepowered.asm.mixin.Mixin; -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; @@ -41,11 +38,20 @@ import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; import java.util.Objects; import java.util.concurrent.atomic.AtomicInteger; -#if MC_VER == MC_1_20_6 +#if MC_VER >= MC_1_20_6 import net.minecraft.client.gui.layouts.LinearLayout; import net.minecraft.client.gui.layouts.HeaderAndFooterLayout; +import org.spongepowered.asm.mixin.Final; +import org.spongepowered.asm.mixin.Shadow; #endif +#if MC_VER < MC_1_21 +import net.minecraft.client.gui.screens.OptionsScreen; +#else +import net.minecraft.client.gui.screens.options.OptionsScreen; +#endif + + /** * Adds a button to the menu to goto the config * @@ -57,13 +63,18 @@ public class MixinOptionsScreen extends Screen { /** Texture used for the config opening button */ @Unique - private static final ResourceLocation ICON_TEXTURE = new ResourceLocation(ModInfo.ID, "textures/gui/button.png"); + private static final ResourceLocation ICON_TEXTURE = + #if MC_VER < MC_1_21 + new ResourceLocation(ModInfo.ID, "textures/gui/button.png"); + #else + ResourceLocation.fromNamespaceAndPath(ModInfo.ID, "textures/gui/button.png"); + #endif @Unique private TexturedButtonWidget optionsButton = null; - #if MC_VER == MC_1_20_6 + #if MC_VER >= MC_1_20_6 @Shadow @Final protected HeaderAndFooterLayout layout; @@ -93,7 +104,6 @@ public class MixinOptionsScreen extends Screen // add the button to the correct location in the UI // TODO is there a better way to do this instead of using access transformers to inject into the exact UI elements? - // TODO is there a way we can put the button on the left side of the FOV bar like before? LinearLayout layout = (LinearLayout) this.layout.headerFrame.children.get(0).child; // determine how wide the other option buttons are so we can put our botton to the left of them all diff --git a/versionProperties/1.21.properties b/versionProperties/1.21.properties index e16886c23..4e9ded570 100644 --- a/versionProperties/1.21.properties +++ b/versionProperties/1.21.properties @@ -4,8 +4,7 @@ minecraft_version=1.21 parchment_version=1.20.6:2024.05.01 compatible_minecraft_versions=["1.21.0"] accessWidenerVersion=1_20_6 -builds_for=fabric -# neoforge +builds_for=fabric,neoforge # forge is broken due to gradle/build script issues # Fabric loader @@ -40,7 +39,7 @@ fabric_api_version=0.100.1+1.21 # (Neo)Forge loader forge_version=50.0.19 -neoforge_version=20.6.70-beta +neoforge_version=21.0.4-beta # (Neo)Forge mod versions starlight_version_forge= terraforged_version=