diff --git a/build.gradle b/build.gradle index cf679cfa..4d377970 100644 --- a/build.gradle +++ b/build.gradle @@ -160,8 +160,7 @@ dependencies { implementation fg.deobf("curse.maven:spark-361579:4057111") implementation fg.deobf("curse.maven:artifacts-forge-312353:${artifacts_version}") implementation fg.deobf("curse.maven:expandability-forge-465066:${expandability_version}") - //implementation fg.deobf("curse.maven:ctov_forge-623908:4601067") - //implementation fg.deobf("curse.maven:alt_current-548115:4406066") + implementation fg.deobf("curse.maven:radon-forge-596879:3822783") implementation fg.deobf("mezz.jei:jei-${minecraft_version}-common-api:${jei_version}") implementation fg.deobf("mezz.jei:jei-${minecraft_version}-forge:${jei_version}") diff --git a/src/main/java/com/mystic/atlantis/Atlantis.java b/src/main/java/com/mystic/atlantis/Atlantis.java index d117b321..f4d6f451 100644 --- a/src/main/java/com/mystic/atlantis/Atlantis.java +++ b/src/main/java/com/mystic/atlantis/Atlantis.java @@ -1,6 +1,7 @@ package com.mystic.atlantis; import com.mystic.atlantis.entities.blockbenchentities.*; +import net.minecraftforge.fml.ModLoader; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; @@ -96,6 +97,10 @@ public static ResourceKey getOverworldKey() { return ResourceKey.create(Registry.DIMENSION_REGISTRY, OVERWORLD_ID); } + public static boolean ifRadon() { + return ModList.get().isLoaded("phospher"); + } + public void onInitialize(IEventBus bus) { GeckoLib.initialize(); GeckoLibMod.DISABLE_IN_DEV = true; diff --git a/src/main/java/com/mystic/atlantis/config/AtlantisConfig.java b/src/main/java/com/mystic/atlantis/config/AtlantisConfig.java index 45d73b33..a22c3625 100644 --- a/src/main/java/com/mystic/atlantis/config/AtlantisConfig.java +++ b/src/main/java/com/mystic/atlantis/config/AtlantisConfig.java @@ -29,6 +29,7 @@ public class AtlantisConfig implements ConfigData { public ForgeConfigSpec.BooleanValue turnOnDimensionalHaste; public ForgeConfigSpec.DoubleValue waterVisibility; public ForgeConfigSpec.BooleanValue shouldCitiesGenerate; + public ForgeConfigSpec.BooleanValue shouldHavePerBiomeLighting; @@ -47,5 +48,6 @@ private AtlantisConfig(ForgeConfigSpec.Builder builder) { this.turnOnDimensionalHaste = builder.comment("Should Dimension Wide Haste Be On?").define("turnOnDimensionalHaste", true); this.waterVisibility = builder.comment("How far is visibility in Water?").defineInRange("waterVisibility", 120.0d, 1.0d, 200.0d); this.shouldCitiesGenerate = builder.comment("Can Atlantean Cities generate? (Warning may cause slight lag when generating!)").define("shouldCitiesGenerate", false); + this.shouldHavePerBiomeLighting = builder.comment("Should Per Biome Lighting for Atlantis be on? (Warning Radon will cause it to be always 0 in every biome)").define("shouldHavePerBiomeLighting", false); } } \ No newline at end of file diff --git a/src/main/java/com/mystic/atlantis/lighting/AtlantisChunkSkylightProvider.java b/src/main/java/com/mystic/atlantis/lighting/AtlantisChunkSkylightProvider.java index 08f2c757..462d7ce4 100644 --- a/src/main/java/com/mystic/atlantis/lighting/AtlantisChunkSkylightProvider.java +++ b/src/main/java/com/mystic/atlantis/lighting/AtlantisChunkSkylightProvider.java @@ -1,5 +1,6 @@ package com.mystic.atlantis.lighting; +import com.mystic.atlantis.config.AtlantisConfig; import com.mystic.atlantis.event.ACommonFEvents; import net.minecraft.core.BlockPos; @@ -22,20 +23,22 @@ public AtlantisChunkSkylightProvider(LightChunkGetter chunkProvider) { protected int computeLevelFromNeighbor(long sourceId, long targetId, int level) { int propagatedLevel = super.computeLevelFromNeighbor(sourceId, targetId, level); - BlockPos blockPos = BlockPos.of(targetId); - ChunkPos chunkPos = new ChunkPos(blockPos); + if (AtlantisConfig.INSTANCE.shouldHavePerBiomeLighting.get()) { + BlockPos blockPos = BlockPos.of(targetId); + ChunkPos chunkPos = new ChunkPos(blockPos); - BlockGetter blockGetter = chunkSource.getChunkForLighting(chunkPos.x, chunkPos.z); - if (blockGetter instanceof ChunkAccess chunkAccess) { - Holder biome = chunkAccess.getNoiseBiome( - QuartPos.fromBlock(blockPos.getX()), - QuartPos.fromBlock(blockPos.getY()), - QuartPos.fromBlock(blockPos.getZ()) - ); - if(biome.unwrapKey().isPresent()) { - if (ACommonFEvents.map != null) { - if (ACommonFEvents.map.containsKey(biome.unwrapKey().get().location())) { - return Math.min(ACommonFEvents.map.get(biome.unwrapKey().get().location()), propagatedLevel); + BlockGetter blockGetter = chunkSource.getChunkForLighting(chunkPos.x, chunkPos.z); + if (blockGetter instanceof ChunkAccess chunkAccess) { + Holder biome = chunkAccess.getNoiseBiome( + QuartPos.fromBlock(blockPos.getX()), + QuartPos.fromBlock(blockPos.getY()), + QuartPos.fromBlock(blockPos.getZ()) + ); + if (biome.unwrapKey().isPresent()) { + if (ACommonFEvents.map != null) { + if (ACommonFEvents.map.containsKey(biome.unwrapKey().get().location())) { + return Math.min(ACommonFEvents.map.get(biome.unwrapKey().get().location()), propagatedLevel); + } } } } diff --git a/src/main/java/com/mystic/atlantis/mixin/SkyLightEngineRadonFix.java b/src/main/java/com/mystic/atlantis/mixin/SkyLightEngineRadonFix.java new file mode 100644 index 00000000..4485ecda --- /dev/null +++ b/src/main/java/com/mystic/atlantis/mixin/SkyLightEngineRadonFix.java @@ -0,0 +1,53 @@ +package com.mystic.atlantis.mixin; + +import com.mystic.atlantis.dimension.DimensionAtlantis; +import com.mystic.atlantis.event.ACommonFEvents; +import net.caffeinemc.phosphor.mixin.chunk.light.MixinChunkSkyLightProvider; +import net.minecraft.core.BlockPos; +import net.minecraft.core.Holder; +import net.minecraft.core.QuartPos; +import net.minecraft.world.level.BlockGetter; +import net.minecraft.world.level.ChunkPos; +import net.minecraft.world.level.Level; +import net.minecraft.world.level.biome.Biome; +import net.minecraft.world.level.chunk.ChunkAccess; +import net.minecraft.world.level.lighting.SkyLightEngine; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Overwrite; + +@Mixin(value = {SkyLightEngine.class}, priority = 2000) +public abstract class SkyLightEngineRadonFix { + + /** + * @author Mysticpasta1 + * @reason fix radon messing with my per biome lighting code! + */ + @Overwrite + public int computeLevelFromNeighbor(long fromId, long toId, int currentLevel) { + if(chunkSource.getLevel() instanceof Level level) { + if (DimensionAtlantis.isAtlantisDimension(level)) { + int propagatedLevel = getPropagatedLevel(fromId, null, toId, currentLevel); + + BlockPos blockPos = BlockPos.of(toId); + ChunkPos chunkPos = new ChunkPos(blockPos); + + BlockGetter blockGetter = chunkSource.getChunkForLighting(chunkPos.x, chunkPos.z); + if (blockGetter instanceof ChunkAccess chunkAccess) { + Holder biome = chunkAccess.getNoiseBiome( + QuartPos.fromBlock(blockPos.getX()), + QuartPos.fromBlock(blockPos.getY()), + QuartPos.fromBlock(blockPos.getZ()) + ); + if (biome.unwrapKey().isPresent()) { + if (ACommonFEvents.map != null) { + if (ACommonFEvents.map.containsKey(biome.unwrapKey().get().location())) { + return Math.min(ACommonFEvents.map.get(biome.unwrapKey().get().location()), propagatedLevel); + } + } + } + } + } + } + return this.getPropagatedLevel(fromId, null, toId, currentLevel); + } +} diff --git a/src/main/resources/atlantis.mixins.json b/src/main/resources/atlantis.mixins.json index 8148cf0d..a67fd83d 100644 --- a/src/main/resources/atlantis.mixins.json +++ b/src/main/resources/atlantis.mixins.json @@ -19,6 +19,7 @@ "RedstoneAccessor", "RedstoneWireBlockMixin", "RenderBubblesMixin", + "SkyLightEngineRadonFix", "WorldLightManagerMixin" ], "client": [