diff --git a/pom.xml b/pom.xml
index af6d973..abea7e3 100644
--- a/pom.xml
+++ b/pom.xml
@@ -5,7 +5,7 @@
4.0.0
me.mrgeneralq
sleep-most
- 5.1.1
+ 5.1.2
SleepMost
diff --git a/src/main/java/me/mrgeneralq/sleepmost/Sleepmost.java b/src/main/java/me/mrgeneralq/sleepmost/Sleepmost.java
index 2044e23..404b81d 100644
--- a/src/main/java/me/mrgeneralq/sleepmost/Sleepmost.java
+++ b/src/main/java/me/mrgeneralq/sleepmost/Sleepmost.java
@@ -74,7 +74,7 @@ public void onEnable() {
pm.registerEvents(new PlayerBedLeaveEventListener(bootstrapper.getSleepService()), this);
pm.registerEvents(new WorldLoadEventListener(bootstrapper.getBossBarService(), bootstrapper.getSleepMostWorldService()),this);
pm.registerEvents(new WorldUnloadEventListener(bootstrapper.getBossBarService(), bootstrapper.getSleepMostWorldService()),this);
- pm.registerEvents(new PlayerSleepStateChangeEventListener(this, bootstrapper.getSleepService(), bootstrapper.getFlagsRepository(), bootstrapper.getBossBarService(), bootstrapper.getMessageService(), bootstrapper.getCooldownService()), this);
+ pm.registerEvents(new PlayerSleepStateChangeEventListener(this, bootstrapper.getSleepService(), bootstrapper.getFlagsRepository(), bootstrapper.getBossBarService(), bootstrapper.getMessageService(), bootstrapper.getCooldownService(), bootstrapper.getSleepMostWorldService()), this);
pm.registerEvents(new TimeCycleChangeEventListener(bootstrapper.getSleepService(), bootstrapper.getSleepMostWorldService(), bootstrapper.getFlagsRepository(), bootstrapper.getInsomniaService()),this );
pm.registerEvents(new PlayerConsumeEventListener(bootstrapper.getSleepService(), bootstrapper.getInsomniaService(), bootstrapper.getMessageService(), bootstrapper.getFlagsRepository()), this);
diff --git a/src/main/java/me/mrgeneralq/sleepmost/eventlisteners/PlayerSleepStateChangeEventListener.java b/src/main/java/me/mrgeneralq/sleepmost/eventlisteners/PlayerSleepStateChangeEventListener.java
index e2e1e06..e80782f 100644
--- a/src/main/java/me/mrgeneralq/sleepmost/eventlisteners/PlayerSleepStateChangeEventListener.java
+++ b/src/main/java/me/mrgeneralq/sleepmost/eventlisteners/PlayerSleepStateChangeEventListener.java
@@ -7,6 +7,7 @@
import me.mrgeneralq.sleepmost.events.PlayerSleepStateChangeEvent;
import me.mrgeneralq.sleepmost.interfaces.*;
import me.mrgeneralq.sleepmost.builders.MessageBuilder;
+import me.mrgeneralq.sleepmost.models.SleepMostWorld;
import me.mrgeneralq.sleepmost.statics.DataContainer;
import me.mrgeneralq.sleepmost.statics.ServerVersion;
import org.bukkit.Bukkit;
@@ -28,6 +29,7 @@ public class PlayerSleepStateChangeEventListener implements Listener {
private final IBossBarService bossBarService;
private final IMessageService messageService;
private final ICooldownService cooldownService;
+ private final ISleepMostWorldService sleepMostWorldService;
public PlayerSleepStateChangeEventListener(
Sleepmost sleepmost,
@@ -35,7 +37,8 @@ public PlayerSleepStateChangeEventListener(
IFlagsRepository flagsRepository,
IBossBarService bossBarService,
IMessageService messageService,
- ICooldownService cooldownService
+ ICooldownService cooldownService,
+ ISleepMostWorldService sleepMostWorldService
) {
this.sleepmost = sleepmost;
this.sleepService = sleepService;
@@ -43,6 +46,7 @@ public PlayerSleepStateChangeEventListener(
this.bossBarService = bossBarService;
this.messageService = messageService;
this.cooldownService = cooldownService;
+ this.sleepMostWorldService = sleepMostWorldService;
}
@EventHandler
@@ -92,9 +96,18 @@ public void onPlayerSleepStateChange(PlayerSleepStateChangeEvent e){
this.cooldownService.startCooldown(player);
}
- //duration check before executing any skip methods
+ if(this.sleepService.getSleepersAmount(world) > this.sleepService.getRequiredSleepersCount(world))
+ return;
+
Bukkit.getScheduler().runTaskLater(sleepmost, () ->
{
+
+ SleepMostWorld sleepMostWorld = this.sleepMostWorldService.getWorld(world);
+
+ //if animation is already running, cancel
+ if(sleepMostWorld.isTimeCycleAnimationIsRunning())
+ return;
+
//final check before night skip is required
if(!this.sleepService.shouldSkip(world)){
return;