From 7ac64c65309622fc80f5c803fc20c1211274bf9e Mon Sep 17 00:00:00 2001 From: MrGeneralQ Date: Tue, 30 Aug 2022 20:18:08 +0200 Subject: [PATCH] added version check for < 1.13 --- src/main/java/me/mrgeneralq/sleepmost/Sleepmost.java | 2 ++ .../sleepmost/repositories/FlagsRepository.java | 6 ++++-- .../me/mrgeneralq/sleepmost/runnables/Heartbeat.java | 4 ++++ .../sleepmost/services/SleepMostWorldService.java | 9 ++++++++- .../me/mrgeneralq/sleepmost/statics/ServerVersion.java | 7 +++++++ 5 files changed, 25 insertions(+), 3 deletions(-) diff --git a/src/main/java/me/mrgeneralq/sleepmost/Sleepmost.java b/src/main/java/me/mrgeneralq/sleepmost/Sleepmost.java index 4d59444..2044e23 100644 --- a/src/main/java/me/mrgeneralq/sleepmost/Sleepmost.java +++ b/src/main/java/me/mrgeneralq/sleepmost/Sleepmost.java @@ -97,6 +97,8 @@ public static Sleepmost getInstance() { private void runPreTimerTasks(){ for(World world: Bukkit.getWorlds()){ this.bootstrapper.getSleepMostWorldService().registerWorld(world); + + if(ServerVersion.CURRENT_VERSION.supportsGameRules()) world.setGameRule(GameRule.DO_DAYLIGHT_CYCLE, true); } } diff --git a/src/main/java/me/mrgeneralq/sleepmost/repositories/FlagsRepository.java b/src/main/java/me/mrgeneralq/sleepmost/repositories/FlagsRepository.java index 4b9e6f4..52508b8 100644 --- a/src/main/java/me/mrgeneralq/sleepmost/repositories/FlagsRepository.java +++ b/src/main/java/me/mrgeneralq/sleepmost/repositories/FlagsRepository.java @@ -7,6 +7,7 @@ import me.mrgeneralq.sleepmost.flags.types.AbstractFlag; import me.mrgeneralq.sleepmost.interfaces.*; import me.mrgeneralq.sleepmost.managers.HookManager; +import me.mrgeneralq.sleepmost.statics.ServerVersion; import java.util.*; @@ -51,7 +52,7 @@ public class FlagsRepository implements IFlagsRepository { private final AllowKickFlag allowKickFlag; private final InsomniaMilkFlag insomniaMilkFlag; private final DynamicAnimationSpeedFlag dynamicAnimationSpeedFlag; - private final LongerNightDurationFlag longerNightDurationFlag; + private LongerNightDurationFlag longerNightDurationFlag; //DEPENDING ON HOOK private GSitHookFlag gSitHookFlag; @@ -93,8 +94,9 @@ public FlagsRepository(IConfigRepository configRepository) { setupFlag(this.allowKickFlag = new AllowKickFlag(new ConfigFlagController<>(configRepository))); setupFlag(this.insomniaMilkFlag = new InsomniaMilkFlag(new ConfigFlagController<>(configRepository))); setupFlag(this.dynamicAnimationSpeedFlag = new DynamicAnimationSpeedFlag(new ConfigFlagController<>(configRepository))); - setupFlag(this.longerNightDurationFlag = new LongerNightDurationFlag(new ConfigFlagController<>(configRepository))); + if(ServerVersion.CURRENT_VERSION.supportsGameRules()) + setupFlag(this.longerNightDurationFlag = new LongerNightDurationFlag(new ConfigFlagController<>(configRepository))); if(HookManager.isGSitInstalled()){ setupFlag(this.gSitHookFlag = new GSitHookFlag(new ConfigFlagController<>(configRepository))); diff --git a/src/main/java/me/mrgeneralq/sleepmost/runnables/Heartbeat.java b/src/main/java/me/mrgeneralq/sleepmost/runnables/Heartbeat.java index bb9cc41..1880078 100644 --- a/src/main/java/me/mrgeneralq/sleepmost/runnables/Heartbeat.java +++ b/src/main/java/me/mrgeneralq/sleepmost/runnables/Heartbeat.java @@ -9,6 +9,7 @@ import me.mrgeneralq.sleepmost.interfaces.ISleepMostWorldService; import me.mrgeneralq.sleepmost.interfaces.ISleepService; import me.mrgeneralq.sleepmost.models.SleepMostWorld; +import me.mrgeneralq.sleepmost.statics.ServerVersion; import me.mrgeneralq.sleepmost.statics.Time; import org.bukkit.Bukkit; import org.bukkit.World; @@ -39,10 +40,13 @@ public void run() { for(World world: Bukkit.getWorlds().stream().filter(this.sleepService::isEnabledAt).collect(Collectors.toList())) { updateTimeCycle(world); + + if(ServerVersion.CURRENT_VERSION.supportsGameRules()){ checkPlannedFreezeRequired(world); checkInsomniaResetRequired(world); checkFreezeRequired(world); checkUnfreezeRequired(world); + } SleepSkipCause cause = this.sleepService.getCurrentSkipCause(world); if(cause == SleepSkipCause.UNKNOWN|| cause == null){ diff --git a/src/main/java/me/mrgeneralq/sleepmost/services/SleepMostWorldService.java b/src/main/java/me/mrgeneralq/sleepmost/services/SleepMostWorldService.java index bf2911f..57573dd 100644 --- a/src/main/java/me/mrgeneralq/sleepmost/services/SleepMostWorldService.java +++ b/src/main/java/me/mrgeneralq/sleepmost/services/SleepMostWorldService.java @@ -2,6 +2,7 @@ import me.mrgeneralq.sleepmost.interfaces.ISleepMostWorldService; import me.mrgeneralq.sleepmost.models.SleepMostWorld; import me.mrgeneralq.sleepmost.repositories.SleepMostWorldRepository; +import me.mrgeneralq.sleepmost.statics.ServerVersion; import org.bukkit.GameRule; import org.bukkit.World; @@ -28,7 +29,10 @@ public void unregisterWorld(World world) { @Override public void freezeTime(World world, Calendar calendar) { + + if(ServerVersion.CURRENT_VERSION.supportsGameRules()) world.setGameRule(GameRule.DO_DAYLIGHT_CYCLE, false); + SleepMostWorld sleepMostWorld = this.repository.get(world.getUID()); sleepMostWorld.setFrozen(true, calendar); this.repository.set(world.getUID(), sleepMostWorld); @@ -36,7 +40,10 @@ public void freezeTime(World world, Calendar calendar) { @Override public void unfreezeTime(World world) { - world.setGameRule(GameRule.DO_DAYLIGHT_CYCLE, true); + + if(ServerVersion.CURRENT_VERSION.supportsGameRules()) + world.setGameRule(GameRule.DO_DAYLIGHT_CYCLE, true); + SleepMostWorld sleepMostWorld = this.repository.get(world.getUID()); sleepMostWorld.setFrozen(false, null); sleepMostWorld.setPlannedFrozen(false); diff --git a/src/main/java/me/mrgeneralq/sleepmost/statics/ServerVersion.java b/src/main/java/me/mrgeneralq/sleepmost/statics/ServerVersion.java index 6eb594a..01b7eb6 100644 --- a/src/main/java/me/mrgeneralq/sleepmost/statics/ServerVersion.java +++ b/src/main/java/me/mrgeneralq/sleepmost/statics/ServerVersion.java @@ -19,6 +19,7 @@ public enum ServerVersion private boolean supportsBossBars; private boolean hasTimeSkipEvent; private boolean supportsClickableText; + private boolean supportsGameRules; public static final ServerVersion CURRENT_VERSION; @@ -36,6 +37,8 @@ public enum ServerVersion forVersionsFrom(V1_9, version -> version.maxHPHealer = MaxHPHealer.UPDATED_HEALER); forVersionsFrom(V1_15, version -> version.hasTimeSkipEvent = true); forVersionsFrom(V1_12, version -> version.supportsBossBars = true); + forVersionsFrom(V1_13, version -> version.supportsGameRules = true); + } ServerVersion() { this.name = WordUtils.capitalizeFully(name().substring(1).toLowerCase().replace('_', '.')); @@ -69,6 +72,10 @@ public boolean supportsClickableText() { return supportsClickableText; } + public boolean supportsGameRules() { + return supportsGameRules; + } + //Setup methods private static ServerVersion computeServerVersion() { return Arrays.stream(VALUES)