From 74c22139d15bca2cfa2d30e67cfe96011b1454db Mon Sep 17 00:00:00 2001 From: Fourmisain <8464472+Fourmisain@users.noreply.github.com> Date: Wed, 27 Nov 2024 20:29:53 +0100 Subject: [PATCH] add compatibility for serene seasons --- build.gradle | 1 + gradle.properties | 1 + .../mixin/ParticleManagerMixin.java | 4 ++- .../seasons/FabricSeasonsCompat.java | 12 ++++++++ .../fallingleaves/seasons/Season.java | 9 ++++++ .../fallingleaves/seasons/Seasons.java | 29 +++++++++++++++++++ .../seasons/SereneSeasonsCompat.java | 12 ++++++++ .../fallingleaves/util/LeafUtil.java | 21 ++++++-------- 8 files changed, 76 insertions(+), 13 deletions(-) create mode 100644 src/main/java/randommcsomethin/fallingleaves/seasons/FabricSeasonsCompat.java create mode 100644 src/main/java/randommcsomethin/fallingleaves/seasons/Season.java create mode 100644 src/main/java/randommcsomethin/fallingleaves/seasons/Seasons.java create mode 100644 src/main/java/randommcsomethin/fallingleaves/seasons/SereneSeasonsCompat.java diff --git a/build.gradle b/build.gradle index 17674fc..c4f6e45 100644 --- a/build.gradle +++ b/build.gradle @@ -49,6 +49,7 @@ dependencies { } modCompileOnly "maven.modrinth:fabric-seasons:${project.fabric_seasons_version}" + modCompileOnly "maven.modrinth:serene-seasons:${project.serene_seasons_version}" } processResources { diff --git a/gradle.properties b/gradle.properties index 86ab908..0098f69 100644 --- a/gradle.properties +++ b/gradle.properties @@ -20,6 +20,7 @@ fabric_api_version=0.106.1+1.21.2 cloth_config_version=16.0.141 modmenu_version=12.0.0-beta.1 fabric_seasons_version=2.4.2-BETA+1.21 +serene_seasons_version=S5y2NO2L # Publishing modrinth_id=WhbRG4iK diff --git a/src/main/java/randommcsomethin/fallingleaves/mixin/ParticleManagerMixin.java b/src/main/java/randommcsomethin/fallingleaves/mixin/ParticleManagerMixin.java index 796a7f8..0256b31 100644 --- a/src/main/java/randommcsomethin/fallingleaves/mixin/ParticleManagerMixin.java +++ b/src/main/java/randommcsomethin/fallingleaves/mixin/ParticleManagerMixin.java @@ -17,6 +17,7 @@ import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; import randommcsomethin.fallingleaves.init.Leaves; import randommcsomethin.fallingleaves.particle.FallingLeafParticle; +import randommcsomethin.fallingleaves.seasons.Seasons; import randommcsomethin.fallingleaves.util.Wind; import java.util.Map; @@ -57,10 +58,11 @@ public void registerLeafFactories(CallbackInfo ci) { } @Inject(method = "tick", at = @At("HEAD")) - public void tickWind(CallbackInfo ci) { + public void tick(CallbackInfo ci) { if (!CONFIG.enabled) return; + Seasons.tick(world); Wind.tick(world); } diff --git a/src/main/java/randommcsomethin/fallingleaves/seasons/FabricSeasonsCompat.java b/src/main/java/randommcsomethin/fallingleaves/seasons/FabricSeasonsCompat.java new file mode 100644 index 0000000..26872ab --- /dev/null +++ b/src/main/java/randommcsomethin/fallingleaves/seasons/FabricSeasonsCompat.java @@ -0,0 +1,12 @@ +package randommcsomethin.fallingleaves.seasons; + +public class FabricSeasonsCompat { + public static Season convertSeason(io.github.lucaargolo.seasons.utils.Season season) { + return switch (season) { + case SPRING -> Season.SPRING; + case SUMMER -> Season.SUMMER; + case FALL -> Season.FALL; + case WINTER -> Season.WINTER; + }; + } +} diff --git a/src/main/java/randommcsomethin/fallingleaves/seasons/Season.java b/src/main/java/randommcsomethin/fallingleaves/seasons/Season.java new file mode 100644 index 0000000..64412bd --- /dev/null +++ b/src/main/java/randommcsomethin/fallingleaves/seasons/Season.java @@ -0,0 +1,9 @@ +package randommcsomethin.fallingleaves.seasons; + +// abstract over Fabric Seasons and Serene Seasons +public enum Season { + SPRING, + SUMMER, + FALL, + WINTER +} diff --git a/src/main/java/randommcsomethin/fallingleaves/seasons/Seasons.java b/src/main/java/randommcsomethin/fallingleaves/seasons/Seasons.java new file mode 100644 index 0000000..f81cb95 --- /dev/null +++ b/src/main/java/randommcsomethin/fallingleaves/seasons/Seasons.java @@ -0,0 +1,29 @@ +package randommcsomethin.fallingleaves.seasons; + +import io.github.lucaargolo.seasons.FabricSeasons; +import net.fabricmc.loader.api.FabricLoader; +import net.minecraft.client.world.ClientWorld; +import org.jetbrains.annotations.Nullable; +import randommcsomethin.fallingleaves.FallingLeavesClient; +import sereneseasons.api.season.SeasonHelper; + +public class Seasons { + @Nullable + public static Season currentSeason = null; + + public static void tick(ClientWorld world) { + Season newSeason = null; + + if (FabricLoader.getInstance().isModLoaded("seasons")) { + newSeason = FabricSeasonsCompat.convertSeason(FabricSeasons.getCurrentSeason()); + } else if (FabricLoader.getInstance().isModLoaded("sereneseasons")) { + newSeason = SereneSeasonsCompat.convertSeason(SeasonHelper.getSeasonState(world).getSeason()); + } + + if (currentSeason != newSeason) { + FallingLeavesClient.LOGGER.debug("changed season {} -> {}", currentSeason, newSeason); + } + + currentSeason = newSeason; + } +} diff --git a/src/main/java/randommcsomethin/fallingleaves/seasons/SereneSeasonsCompat.java b/src/main/java/randommcsomethin/fallingleaves/seasons/SereneSeasonsCompat.java new file mode 100644 index 0000000..47656fd --- /dev/null +++ b/src/main/java/randommcsomethin/fallingleaves/seasons/SereneSeasonsCompat.java @@ -0,0 +1,12 @@ +package randommcsomethin.fallingleaves.seasons; + +public class SereneSeasonsCompat { + public static Season convertSeason(sereneseasons.api.season.Season season) { + return switch (season) { + case SPRING -> Season.SPRING; + case SUMMER -> Season.SUMMER; + case AUTUMN -> Season.FALL; + case WINTER -> Season.WINTER; + }; + } +} diff --git a/src/main/java/randommcsomethin/fallingleaves/util/LeafUtil.java b/src/main/java/randommcsomethin/fallingleaves/util/LeafUtil.java index d96be94..0c42b75 100644 --- a/src/main/java/randommcsomethin/fallingleaves/util/LeafUtil.java +++ b/src/main/java/randommcsomethin/fallingleaves/util/LeafUtil.java @@ -1,8 +1,5 @@ package randommcsomethin.fallingleaves.util; -import io.github.lucaargolo.seasons.FabricSeasons; -import io.github.lucaargolo.seasons.utils.Season; -import net.fabricmc.loader.api.FabricLoader; import net.minecraft.block.*; import net.minecraft.client.MinecraftClient; import net.minecraft.client.particle.Particle; @@ -29,6 +26,8 @@ import randommcsomethin.fallingleaves.init.Leaves; import randommcsomethin.fallingleaves.mixin.NativeImageAccessor; import randommcsomethin.fallingleaves.mixin.SpriteContentsAccessor; +import randommcsomethin.fallingleaves.seasons.Season; +import randommcsomethin.fallingleaves.seasons.Seasons; import java.util.List; import java.util.Map; @@ -46,14 +45,12 @@ public class LeafUtil { public static double getModifiedSpawnChance(BlockState state, LeafSettingsEntry leafSettings) { double spawnChance = leafSettings.getSpawnChance(); - if (FabricLoader.getInstance().isModLoaded("seasons")) { - if (FabricSeasons.getCurrentSeason() == Season.FALL) { - // TODO this is a bit weird because some trees like Traverse's autumnal leaves already have boosted values - // double autumn, what does it mean? - spawnChance *= CONFIG.fallSpawnRateFactor; - } else if (FabricSeasons.getCurrentSeason() == Season.WINTER) { - spawnChance *= CONFIG.winterSpawnRateFactor; - } + if (Seasons.currentSeason == Season.FALL) { + // TODO this is a bit weird because some trees like Traverse's autumnal leaves already have boosted values + // double autumn, what does it mean? + spawnChance *= CONFIG.fallSpawnRateFactor; + } else if (Seasons.currentSeason == Season.WINTER) { + spawnChance *= CONFIG.winterSpawnRateFactor; } if (CONFIG.decaySpawnRateFactor != 1.0f) { @@ -103,7 +100,7 @@ public static void spawnSnowParticles(int count, boolean spawnInsideBlock, Block boolean snowy = false; boolean snowyVillagers = VillagerType.forBiome(world.getBiome(pos)) == VillagerType.SNOW; - boolean isSummer = FabricLoader.getInstance().isModLoaded("seasons") && FabricSeasons.getCurrentSeason() == Season.SUMMER; + boolean isSummer = Seasons.currentSeason == Season.SUMMER; // matches all snowy vanilla biomes if (!isSummer && snowyVillagers) {