|
| 1 | +package adhdmc.sleepmessages; |
| 2 | + |
| 3 | +import io.papermc.paper.event.player.PlayerDeepSleepEvent; |
| 4 | +import net.kyori.adventure.text.minimessage.MiniMessage; |
| 5 | +import net.kyori.adventure.text.minimessage.tag.resolver.Placeholder; |
| 6 | +import org.bukkit.GameRule; |
| 7 | +import org.bukkit.World; |
| 8 | +import org.bukkit.configuration.file.FileConfiguration; |
| 9 | +import org.bukkit.entity.Player; |
| 10 | +import org.bukkit.event.EventHandler; |
| 11 | +import org.bukkit.event.Listener; |
| 12 | +import org.bukkit.event.player.PlayerBedLeaveEvent; |
| 13 | +import org.bukkit.event.world.TimeSkipEvent; |
| 14 | + |
| 15 | +import java.util.List; |
| 16 | +import java.util.Objects; |
| 17 | + |
| 18 | +public class SleepListener implements Listener { |
| 19 | + |
| 20 | + @EventHandler |
| 21 | + public void onPlayerSleep(PlayerDeepSleepEvent event){ |
| 22 | + FileConfiguration config = SleepMessages.plugin.getConfig(); |
| 23 | + if(config.getString("player-sleep-message") == null || Objects.equals(config.getString("player-sleep-message"), "")) return; |
| 24 | + String sleepMessage = config.getString("player-sleep-message"); |
| 25 | + World world = event.getPlayer().getWorld(); |
| 26 | + String playerName = event.getPlayer().getName(); |
| 27 | + String worldName = world.getName(); |
| 28 | + int currentSleepCount = 0; |
| 29 | + int worldOnlineTotal = world.getPlayerCount(); |
| 30 | + Integer worldSleepPercent = world.getGameRuleValue(GameRule.PLAYERS_SLEEPING_PERCENTAGE); |
| 31 | + Integer neededSleepers = (worldSleepPercent/100)*worldOnlineTotal; |
| 32 | + List<Player> playerList = world.getPlayers(); |
| 33 | + for (Player player : playerList){ |
| 34 | + if(player.isDeeplySleeping()) currentSleepCount += 1; |
| 35 | + } |
| 36 | + world.sendMessage(MiniMessage.miniMessage().deserialize(sleepMessage, |
| 37 | + Placeholder.unparsed("playername", playerName), |
| 38 | + Placeholder.unparsed("sleeping", String.valueOf(currentSleepCount)), |
| 39 | + Placeholder.unparsed("needed", String.valueOf(neededSleepers)), |
| 40 | + Placeholder.unparsed("worldname", worldName))); |
| 41 | + } |
| 42 | + @EventHandler |
| 43 | + public void nightSkip(TimeSkipEvent event){ |
| 44 | + FileConfiguration config = SleepMessages.plugin.getConfig(); |
| 45 | + if(!event.getSkipReason().equals(TimeSkipEvent.SkipReason.NIGHT_SKIP)) return; |
| 46 | + if(config.getString("night-skip-message") == null || config.getString("night-skip-message").equals("")) return; |
| 47 | + String skipMessage = config.getString("night-skip-message"); |
| 48 | + String worldName = event.getWorld().getName(); |
| 49 | + event.getWorld().sendMessage(MiniMessage.miniMessage().deserialize(skipMessage, Placeholder.unparsed("worldname", worldName))); |
| 50 | + } |
| 51 | + |
| 52 | +} |
0 commit comments