From b8efae3d7fcb710522c3d2030215244127f0442e Mon Sep 17 00:00:00 2001 From: MrGeneralQ Date: Tue, 30 Aug 2022 19:46:54 +0200 Subject: [PATCH] added message when sleeping during freeze --- .../sleepmost/commands/SleepCommand.java | 22 ++++++++++++++----- .../commands/subcommands/SleepSubCommand.java | 13 +++++++++++ .../sleepmost/enums/MessageKey.java | 4 +++- .../PlayerBedEnterEventListener.java | 15 ++++++++++++- .../hooks/GSitEventListener.java | 18 ++++++++++++--- .../sleepmost/mappers/MessageMapper.java | 2 +- 6 files changed, 63 insertions(+), 11 deletions(-) diff --git a/src/main/java/me/mrgeneralq/sleepmost/commands/SleepCommand.java b/src/main/java/me/mrgeneralq/sleepmost/commands/SleepCommand.java index 8f68418..bccca93 100644 --- a/src/main/java/me/mrgeneralq/sleepmost/commands/SleepCommand.java +++ b/src/main/java/me/mrgeneralq/sleepmost/commands/SleepCommand.java @@ -1,10 +1,8 @@ package me.mrgeneralq.sleepmost.commands; import me.mrgeneralq.sleepmost.enums.MessageKey; -import me.mrgeneralq.sleepmost.interfaces.ICooldownService; -import me.mrgeneralq.sleepmost.interfaces.IFlagsRepository; -import me.mrgeneralq.sleepmost.interfaces.IMessageService; -import me.mrgeneralq.sleepmost.interfaces.ISleepService; +import me.mrgeneralq.sleepmost.interfaces.*; +import me.mrgeneralq.sleepmost.models.SleepMostWorld; import org.bukkit.World; import org.bukkit.command.Command; import org.bukkit.command.CommandExecutor; @@ -16,12 +14,14 @@ public class SleepCommand implements CommandExecutor { private final IMessageService messageService; private final ICooldownService cooldownService; private final IFlagsRepository flagsRepository; + private final ISleepMostWorldService sleepMostWorldService; - public SleepCommand(ISleepService sleepService, IMessageService messageService, ICooldownService cooldownService, IFlagsRepository flagsRepository) { + public SleepCommand(ISleepService sleepService, IMessageService messageService, ICooldownService cooldownService, IFlagsRepository flagsRepository, ISleepMostWorldService sleepMostWorldService) { this.sleepService = sleepService; this.messageService = messageService; this.cooldownService = cooldownService; this.flagsRepository = flagsRepository; + this.sleepMostWorldService = sleepMostWorldService; } @Override @@ -73,6 +73,18 @@ public boolean onCommand(CommandSender sender, Command command, String s, String .build()); return true; } + + SleepMostWorld sleepMostWorld = this.sleepMostWorldService.getWorld(world); + + if(sleepMostWorld.isFrozen()){ + this.messageService.getMessagePrefixed(MessageKey.SLEEP_PREVENTED_LONGER_NIGHT) + .setWorld(world) + .setPlayer(player) + .build(); + return true; + } + + boolean updatedSleepStatus = !this.sleepService.isPlayerAsleep(player); //update the sleeping status diff --git a/src/main/java/me/mrgeneralq/sleepmost/commands/subcommands/SleepSubCommand.java b/src/main/java/me/mrgeneralq/sleepmost/commands/subcommands/SleepSubCommand.java index e3f48bb..24027b7 100644 --- a/src/main/java/me/mrgeneralq/sleepmost/commands/subcommands/SleepSubCommand.java +++ b/src/main/java/me/mrgeneralq/sleepmost/commands/subcommands/SleepSubCommand.java @@ -2,6 +2,7 @@ import me.mrgeneralq.sleepmost.enums.MessageKey; import me.mrgeneralq.sleepmost.interfaces.*; +import me.mrgeneralq.sleepmost.models.SleepMostWorld; import me.mrgeneralq.sleepmost.templates.MessageTemplate; import org.bukkit.World; import org.bukkit.command.Command; @@ -62,6 +63,18 @@ public boolean executeCommand(CommandSender sender, Command cmd, String commandL } + SleepMostWorld sleepMostWorld = this.sleepMostWorldService.getWorld(world); + + if(sleepMostWorld.isFrozen()){ + + String longerNightsSleepPreventedMsg = this.messageService.getMessagePrefixed(MessageKey.SLEEP_PREVENTED_LONGER_NIGHT) + .setWorld(world) + .setPlayer(player) + .build(); + this.messageService.sendMessage(player, longerNightsSleepPreventedMsg); + return true; + } + boolean updatedSleepStatus = !this.sleepService.isPlayerAsleep(player); //TODO check this what the original getStatusTemplate is diff --git a/src/main/java/me/mrgeneralq/sleepmost/enums/MessageKey.java b/src/main/java/me/mrgeneralq/sleepmost/enums/MessageKey.java index 3d0507c..bbca005 100644 --- a/src/main/java/me/mrgeneralq/sleepmost/enums/MessageKey.java +++ b/src/main/java/me/mrgeneralq/sleepmost/enums/MessageKey.java @@ -48,5 +48,7 @@ public enum MessageKey { NIGHT_SKIPPED_TITLE, STORM_SKIPPED_TITLE, NIGHT_SKIPPED_SUBTITLE, - STORM_SKIPPED_SUBTITLE + STORM_SKIPPED_SUBTITLE, + + SLEEP_PREVENTED_LONGER_NIGHT } diff --git a/src/main/java/me/mrgeneralq/sleepmost/eventlisteners/PlayerBedEnterEventListener.java b/src/main/java/me/mrgeneralq/sleepmost/eventlisteners/PlayerBedEnterEventListener.java index b557f66..f8f1b4b 100644 --- a/src/main/java/me/mrgeneralq/sleepmost/eventlisteners/PlayerBedEnterEventListener.java +++ b/src/main/java/me/mrgeneralq/sleepmost/eventlisteners/PlayerBedEnterEventListener.java @@ -2,6 +2,7 @@ import me.mrgeneralq.sleepmost.enums.MessageKey; import me.mrgeneralq.sleepmost.interfaces.*; +import me.mrgeneralq.sleepmost.models.SleepMostWorld; import me.mrgeneralq.sleepmost.services.InsomniaService; import me.mrgeneralq.sleepmost.statics.DataContainer; import org.bukkit.World; @@ -88,8 +89,20 @@ public void onPlayerBedEnter(PlayerBedEnterEvent e) { return; } + SleepMostWorld sleepMostWorld = this.sleepMostWorldService.getWorld(world); + + if(sleepMostWorld.isFrozen()){ + + String longerNightsSleepPreventedMsg = this.messageService.getMessagePrefixed(MessageKey.SLEEP_PREVENTED_LONGER_NIGHT) + .setWorld(world) + .setPlayer(player) + .build(); + this.messageService.sendMessage(player, longerNightsSleepPreventedMsg); + e.setCancelled(true); + return; + } + if(!this.sleepService.isPlayerAsleep(player)) this.sleepService.setSleeping(player , true); - } } diff --git a/src/main/java/me/mrgeneralq/sleepmost/eventlisteners/hooks/GSitEventListener.java b/src/main/java/me/mrgeneralq/sleepmost/eventlisteners/hooks/GSitEventListener.java index d432688..d5c0506 100644 --- a/src/main/java/me/mrgeneralq/sleepmost/eventlisteners/hooks/GSitEventListener.java +++ b/src/main/java/me/mrgeneralq/sleepmost/eventlisteners/hooks/GSitEventListener.java @@ -4,6 +4,7 @@ import dev.geco.gsit.api.event.PlayerPoseEvent; import me.mrgeneralq.sleepmost.enums.MessageKey; import me.mrgeneralq.sleepmost.interfaces.*; +import me.mrgeneralq.sleepmost.models.SleepMostWorld; import me.mrgeneralq.sleepmost.statics.DataContainer; import org.bukkit.World; import org.bukkit.entity.Player; @@ -47,6 +48,8 @@ public void onPlayerPose(PlayerPoseEvent e){ World world = player.getWorld(); Pose pose = e.getPoseSeat().getPose(); + if(!this.flagsRepository.getGSitHookFlag().getValueAt(world)) + return; if(!this.sleepService.isEnabledAt(world)) return; @@ -54,9 +57,6 @@ public void onPlayerPose(PlayerPoseEvent e){ if(!this.sleepService.isSleepingPossible(world)) return; - if(!this.flagsRepository.getGSitHookFlag().getValueAt(world)) - return; - if(!this.flagsRepository.getGSitSleepFlag().getValueAt(world)) return; @@ -68,6 +68,7 @@ public void onPlayerPose(PlayerPoseEvent e){ return; + //check if sleeping during storms is allowed if (world.isThundering() && !this.flagsRepository.getStormSleepFlag().getValueAt(world)) { @@ -104,6 +105,17 @@ public void onPlayerPose(PlayerPoseEvent e){ return; } + SleepMostWorld sleepMostWorld = this.sleepMostWorldService.getWorld(world); + if(sleepMostWorld.isFrozen()){ + + String longerNightsSleepPreventedMsg = this.messageService.getMessagePrefixed(MessageKey.SLEEP_PREVENTED_LONGER_NIGHT) + .setWorld(world) + .setPlayer(player) + .build(); + this.messageService.sendMessage(player, longerNightsSleepPreventedMsg); + return; + } + if(!this.sleepService.isPlayerAsleep(player)) this.sleepService.setSleeping(player , true); } diff --git a/src/main/java/me/mrgeneralq/sleepmost/mappers/MessageMapper.java b/src/main/java/me/mrgeneralq/sleepmost/mappers/MessageMapper.java index 542ebf5..5c027aa 100644 --- a/src/main/java/me/mrgeneralq/sleepmost/mappers/MessageMapper.java +++ b/src/main/java/me/mrgeneralq/sleepmost/mappers/MessageMapper.java @@ -71,7 +71,7 @@ public void loadMessages(){ this.messages.put(MessageKey.STORM_SKIPPED_TITLE, new ConfigMessage("user.storm-skipped-title", "&eStorm skipped")); this.messages.put(MessageKey.STORM_SKIPPED_SUBTITLE, new ConfigMessage("user.storm-skipped-subtitle", "&bWhat a weather...")); - + this.messages.put(MessageKey.SLEEP_PREVENTED_LONGER_NIGHT, new ConfigMessage("user.longer-night.sleep-prevented", "&cThe night is longer than usual, you don't feel sleepy yet")); } public ConfigMessage getMessage(MessageKey message){