From 2bd74d379c4d0f0071d8fc69685748a26237a793 Mon Sep 17 00:00:00 2001 From: coolGi2007 Date: Wed, 12 Jan 2022 16:31:36 +1030 Subject: [PATCH] Fixed immersive portals with cloud rendering --- core | 2 +- .../src/main/java/com/seibel/lod/fabric/Main.java | 6 +++++- .../lod/fabric/mixins/MixinWorldRenderer.java | 7 ++++++- .../seibel/lod/fabric/modAccessor/ModChecker.java | 14 ++++++++++++++ .../main/java/com/seibel/lod/forge/ForgeMain.java | 4 ++++ .../lod/forge/mixins/MixinWorldRenderer.java | 7 ++++++- .../lod/forge/wrappers/modAccessor/ModChecker.java | 13 +++++++++++++ 7 files changed, 49 insertions(+), 4 deletions(-) create mode 100644 fabric/src/main/java/com/seibel/lod/fabric/modAccessor/ModChecker.java create mode 100644 forge/src/main/java/com/seibel/lod/forge/wrappers/modAccessor/ModChecker.java diff --git a/core b/core index efd1d67f3..02143d095 160000 --- a/core +++ b/core @@ -1 +1 @@ -Subproject commit efd1d67f3f8c8799983c5f5a6e473f84d07ae352 +Subproject commit 02143d095169d8007ec881bd5d0d3c1ea9801719 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 906701bec..8f73e7bb0 100644 --- a/fabric/src/main/java/com/seibel/lod/fabric/Main.java +++ b/fabric/src/main/java/com/seibel/lod/fabric/Main.java @@ -23,7 +23,10 @@ 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; @@ -59,12 +62,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..de9a07146 --- /dev/null +++ b/fabric/src/main/java/com/seibel/lod/fabric/modAccessor/ModChecker.java @@ -0,0 +1,14 @@ + +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 cb15338f0..3b5a26f45 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..5e9f1c2fe --- /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); + } +} \ No newline at end of file