diff --git a/core b/core index ee2c6e2a0..3ebdfd6e8 160000 --- a/core +++ b/core @@ -1 +1 @@ -Subproject commit ee2c6e2a06d235094a45c19ff877fd794f4c95a6 +Subproject commit 3ebdfd6e8715ddf833b7bbe2cbfde893b12e4f5f diff --git a/fabric/src/main/java/com/seibel/lod/fabric/Main.java b/fabric/src/main/java/com/seibel/lod/fabric/Main.java index 882a32bf2..6eb615b3f 100644 --- a/fabric/src/main/java/com/seibel/lod/fabric/Main.java +++ b/fabric/src/main/java/com/seibel/lod/fabric/Main.java @@ -23,12 +23,14 @@ import com.seibel.lod.common.LodCommonMain; import com.seibel.lod.core.ModInfo; import com.seibel.lod.core.api.ClientApi; import com.seibel.lod.core.api.ModAccessorApi; +import com.seibel.lod.core.util.SingletonHandler; +import com.seibel.lod.core.wrapperInterfaces.modAccessor.IModChecker; import com.seibel.lod.core.wrapperInterfaces.modAccessor.ISodiumAccessor; +import com.seibel.lod.fabric.modAccessor.ModChecker; import com.seibel.lod.fabric.modAccessor.SodiumAccessor; import com.seibel.lod.fabric.wrappers.DependencySetup; import net.fabricmc.api.ClientModInitializer; -import net.fabricmc.loader.api.FabricLoader; /** * Initialize and setup the Mod.
@@ -59,12 +61,13 @@ public class Main implements ClientModInitializer LodCommonMain.initConfig(); LodCommonMain.startup(null, false); DependencySetup.createInitialBindings(); + SingletonHandler.bind(IModChecker.class, ModChecker.INSTANCE); ClientApi.LOGGER.info(ModInfo.READABLE_NAME + ", Version: " + ModInfo.VERSION); // Check if this works client_proxy = new ClientProxy(); client_proxy.registerEvents(); - if (FabricLoader.getInstance().isModLoaded("sodium")) { + if (SingletonHandler.get(IModChecker.class).isModLoaded("sodium")) { ModAccessorApi.bind(ISodiumAccessor.class, new SodiumAccessor()); } } diff --git a/fabric/src/main/java/com/seibel/lod/fabric/mixins/MixinWorldRenderer.java b/fabric/src/main/java/com/seibel/lod/fabric/mixins/MixinWorldRenderer.java index 6c5600ca0..7731b02b9 100644 --- a/fabric/src/main/java/com/seibel/lod/fabric/mixins/MixinWorldRenderer.java +++ b/fabric/src/main/java/com/seibel/lod/fabric/mixins/MixinWorldRenderer.java @@ -29,6 +29,7 @@ import com.seibel.lod.common.wrappers.config.LodConfigWrapperSingleton; import com.seibel.lod.core.util.LodUtil; import com.seibel.lod.core.util.SingletonHandler; import com.seibel.lod.core.wrapperInterfaces.config.ILodConfigWrapperSingleton; +import com.seibel.lod.core.wrapperInterfaces.modAccessor.IModChecker; import net.minecraft.client.renderer.LevelRenderer; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; @@ -221,7 +222,11 @@ public class MixinWorldRenderer this.cloudBuffer.upload(bufferBuilder); } - RenderSystem.setShaderTexture(0, resourceLocation); + if (SingletonHandler.get(IModChecker.class).isModLoaded("immersive_portals")) { + RenderSystem.setShaderTexture(0, CLOUDS_LOCATION); + } else { + RenderSystem.setShaderTexture(0, resourceLocation); + } FogRenderer.levelFogColor(); poseStack.pushPose(); poseStack.scale(scale, cloudScale, scale); diff --git a/fabric/src/main/java/com/seibel/lod/fabric/modAccessor/ModChecker.java b/fabric/src/main/java/com/seibel/lod/fabric/modAccessor/ModChecker.java new file mode 100644 index 000000000..06755172f --- /dev/null +++ b/fabric/src/main/java/com/seibel/lod/fabric/modAccessor/ModChecker.java @@ -0,0 +1,13 @@ +package com.seibel.lod.fabric.modAccessor; + +import com.seibel.lod.core.wrapperInterfaces.modAccessor.IModChecker; +import net.fabricmc.loader.api.FabricLoader; + +public class ModChecker implements IModChecker { + public static final ModChecker INSTANCE = new ModChecker(); + + @Override + public boolean isModLoaded(String modid) { + return FabricLoader.getInstance().isModLoaded(modid); + } +} diff --git a/forge/src/main/java/com/seibel/lod/forge/ForgeMain.java b/forge/src/main/java/com/seibel/lod/forge/ForgeMain.java index 548c78d86..09f5db59d 100644 --- a/forge/src/main/java/com/seibel/lod/forge/ForgeMain.java +++ b/forge/src/main/java/com/seibel/lod/forge/ForgeMain.java @@ -24,8 +24,11 @@ import com.seibel.lod.common.forge.LodForgeMethodCaller; import com.seibel.lod.common.wrappers.config.ConfigGui; import com.seibel.lod.common.wrappers.minecraft.MinecraftWrapper; import com.seibel.lod.core.ModInfo; +import com.seibel.lod.core.util.SingletonHandler; +import com.seibel.lod.core.wrapperInterfaces.modAccessor.IModChecker; import com.seibel.lod.forge.wrappers.ForgeDependencySetup; +import com.seibel.lod.forge.wrappers.modAccessor.ModChecker; import net.minecraft.client.renderer.block.model.BakedQuad; import net.minecraft.core.Direction; import net.minecraft.world.level.block.Block; @@ -62,6 +65,7 @@ public class ForgeMain implements LodForgeMethodCaller LodCommonMain.initConfig(); LodCommonMain.startup(this, !FMLLoader.getDist().isClient()); ForgeDependencySetup.createInitialBindings(); + SingletonHandler.bind(IModChecker.class, ModChecker.INSTANCE); } diff --git a/forge/src/main/java/com/seibel/lod/forge/mixins/MixinWorldRenderer.java b/forge/src/main/java/com/seibel/lod/forge/mixins/MixinWorldRenderer.java index f5c161275..55e585794 100644 --- a/forge/src/main/java/com/seibel/lod/forge/mixins/MixinWorldRenderer.java +++ b/forge/src/main/java/com/seibel/lod/forge/mixins/MixinWorldRenderer.java @@ -29,6 +29,7 @@ import com.seibel.lod.common.wrappers.config.LodConfigWrapperSingleton; import com.seibel.lod.core.util.LodUtil; import com.seibel.lod.core.util.SingletonHandler; import com.seibel.lod.core.wrapperInterfaces.config.ILodConfigWrapperSingleton; +import com.seibel.lod.core.wrapperInterfaces.modAccessor.IModChecker; import net.minecraft.client.renderer.LevelRenderer; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; @@ -221,7 +222,11 @@ public class MixinWorldRenderer this.cloudBuffer.upload(bufferBuilder); } - RenderSystem.setShaderTexture(0, resourceLocation); + if (SingletonHandler.get(IModChecker.class).isModLoaded("immersive_portals")) { + RenderSystem.setShaderTexture(0, CLOUDS_LOCATION); + } else { + RenderSystem.setShaderTexture(0, resourceLocation); + } FogRenderer.levelFogColor(); poseStack.pushPose(); poseStack.scale(scale, cloudScale, scale); diff --git a/forge/src/main/java/com/seibel/lod/forge/wrappers/modAccessor/ModChecker.java b/forge/src/main/java/com/seibel/lod/forge/wrappers/modAccessor/ModChecker.java new file mode 100644 index 000000000..a96598602 --- /dev/null +++ b/forge/src/main/java/com/seibel/lod/forge/wrappers/modAccessor/ModChecker.java @@ -0,0 +1,13 @@ +package com.seibel.lod.forge.wrappers.modAccessor; + +import com.seibel.lod.core.wrapperInterfaces.modAccessor.IModChecker; +import net.minecraftforge.fml.ModList; + +public class ModChecker implements IModChecker { + public static final ModChecker INSTANCE = new ModChecker(); + + @Override + public boolean isModLoaded(String modid) { + return ModList.get().isLoaded(modid); + } +}