1
0
mirror of https://github.com/nkomarn/harbor.git synced 2024-09-29 06:57:35 +02:00

Cooldowns + clean up the command

This commit is contained in:
Mykyta 2020-04-03 14:47:37 -07:00
parent b5c7f60fdd
commit 35407752c9
No known key found for this signature in database
GPG Key ID: C147E30C19EA3570
4 changed files with 36 additions and 28 deletions

View File

@ -19,23 +19,13 @@ public class HarborCommand implements TabExecutor {
public boolean onCommand(final CommandSender sender, final Command command, final String label, final String[] args) {
final String prefix = Config.getString("messages.miscellaneous.chat-prefix");
if (args.length < 1) {
if (args.length < 1 || !sender.hasPermission("harbor.admin")) {
sender.sendMessage(ChatColor.translateAlternateColorCodes('&', prefix + "&7Harbor version "
+ Harbor.version + " by TechToolbox (@nkomarn)."));
return true;
}
if (!sender.hasPermission("harbor.admin")) {
sender.sendMessage(ChatColor.translateAlternateColorCodes('&', prefix
+ Config.getString("messages.miscellaneous.permission")));
return true;
}
if (args[0].equalsIgnoreCase("reload")) {
} else if (args[0].equalsIgnoreCase("reload")) {
Harbor.getHarbor().reloadConfig();
sender.sendMessage(ChatColor.translateAlternateColorCodes('&', prefix
+ "&7Reloaded configuration."));
return true;
}
else if (args[0].equalsIgnoreCase("forceskip")) {
if (!(sender instanceof Player)) {
@ -57,12 +47,10 @@ public class HarborCommand implements TabExecutor {
new AccelerateNightTask(world).runTaskTimer(Harbor.getHarbor(), 0L, 1);
sender.sendMessage(ChatColor.translateAlternateColorCodes('&', prefix
+ "&7Forcing night skip in your world."));
return true;
}
// Otherwise, send unrecognized argument messages
sender.sendMessage(ChatColor.translateAlternateColorCodes('&', prefix
+ Config.getString("messages.miscellaneous.unrecognized")));
+ Config.getString("messages.miscellaneous.unrecognized-command")));
return true;
}
@ -70,6 +58,6 @@ public class HarborCommand implements TabExecutor {
public List<String> onTabComplete(CommandSender sender, Command command, String alias, String[] args) {
if (!sender.hasPermission("harbor.admin")) return null;
if (args.length != 1) return null;
return Arrays.asList("forceskip", "reload", "update");
return Arrays.asList("forceskip", "reload");
}
}

View File

@ -10,23 +10,43 @@ import xyz.nkomarn.Harbor.task.Checker;
import xyz.nkomarn.Harbor.util.Config;
import xyz.nkomarn.Harbor.util.Messages;
import java.util.HashMap;
import java.util.Map;
import java.util.UUID;
public class BedListener implements Listener {
private Map<UUID, Long> cooldowns = new HashMap<>(); // TODO, totally fucked right now (lol)
@EventHandler(ignoreCancelled = true)
public void onBedEnter(final PlayerBedEnterEvent event) {
if (event.getBedEnterResult() != PlayerBedEnterEvent.BedEnterResult.OK) return;
if (Checker.skippingWorlds.contains(event.getPlayer().getWorld())) return;
Bukkit.getScheduler().runTaskLater(Harbor.getHarbor(), () -> Messages.sendWorldChatMessage(event.getBed().getWorld(),
Config.getString("messages.chat.sleeping")
.replace("[player]", event.getPlayer().getName())
.replace("[displayname]", event.getPlayer().getDisplayName())), 1);
Bukkit.getScheduler().runTaskLater(Harbor.getHarbor(), () -> {
UUID playerUuid = event.getPlayer().getUniqueId();
if (cooldowns.containsKey(playerUuid) && !(cooldowns.get(playerUuid) +
(Config.getInteger("messages.chat.message-cooldown") * 1000) >= System.currentTimeMillis())) return;
Messages.sendWorldChatMessage(event.getBed().getWorld(),
Config.getString("messages.chat.player-sleeping")
.replace("[player]", event.getPlayer().getName())
.replace("[displayname]", event.getPlayer().getDisplayName()));
cooldowns.put(playerUuid, System.currentTimeMillis());
}, 1);
}
@EventHandler(ignoreCancelled = true)
public void onBedLeave(final PlayerBedLeaveEvent event) {
if (Checker.skippingWorlds.contains(event.getPlayer().getWorld())) return;
Messages.sendWorldChatMessage(event.getBed().getWorld(),
Config.getString("messages.chat.left")
.replace("[player]", event.getPlayer().getName())
.replace("[displayname]", event.getPlayer().getDisplayName()));
Bukkit.getScheduler().runTaskLater(Harbor.getHarbor(), () -> {
UUID playerUuid = event.getPlayer().getUniqueId();
if (cooldowns.containsKey(playerUuid) && !(cooldowns.get(playerUuid) +
(Config.getInteger("messages.chat.message-cooldown") * 1000) >= System.currentTimeMillis())) return;
Messages.sendWorldChatMessage(event.getBed().getWorld(),
Config.getString("messages.chat.player-left-bed")
.replace("[player]", event.getPlayer().getName())
.replace("[displayname]", event.getPlayer().getDisplayName()));
cooldowns.put(playerUuid, System.currentTimeMillis());
}, 1);
}
}

View File

@ -95,7 +95,7 @@ public class Checker implements Runnable {
private static boolean isExcluded(final Player player) {
final boolean excludedByCreative = Config.getBoolean("exclusions.exclude-creative") && player.getGameMode() == GameMode.CREATIVE;
final boolean excludedBySpectator = Config.getBoolean("exclusions.exclude-spectator") && player.getGameMode() == GameMode.SPECTATOR;
final boolean excludedByPermission = Config.getBoolean("exclusions.bypass-permission") && player.hasPermission("harbor.bypass");
final boolean excludedByPermission = Config.getBoolean("exclusions.bypass-permission") && player.hasPermission("harbor.ignored");
final boolean excludedByAfk = Afk.isAfk(player);
if (Config.getBoolean("exclusions.exclude-vanished")) {

View File

@ -8,7 +8,7 @@
night-skip:
enabled: true # Skip the night if a percentage of the players in a world are sleeping
percentage: 50 # Percentage of players required to be sleeping to skip the night (0 - 100)
time-rate: 60 # The amount of ticks added to the current time every tick when skipping the night
time-rate: 70 # The amount of ticks added to the current time every tick when skipping the night
daytime-ticks: 1200 # The time in ticks that Harbor considers day
instant-skip: false # Instantly skip the night instead of showing the full animation
variable-rate: false # Increase the night skipping speed based on the amount of sleeping players
@ -18,7 +18,7 @@ night-skip:
reset-phantom-statistic: true # Treats everyone online as if they have slept in the last 3 days after the night is skipped (check out /gamerule doInsomnia on 1.15+)
exclusions:
bypass-permission: true # Exclude players with the permission "harbor.bypass" from the sleeping count
ignored-permission: true # Exclude players with the permission "harbor.ignored" from the sleeping count
exclude-creative: true # Exclude players in creative mode from the sleeping count
exclude-spectator: true # Exclude players in spectator mode from the sleeping count
exclude-vanished: true # Exclude vanished players from the sleeping count
@ -37,6 +37,7 @@ blacklisted-worlds:
messages:
chat:
enabled: true
message-cooldown: 5 # The amount of time in seconds before a player can send another bed enter or leave message
player-sleeping: "&e[player] is now sleeping ([sleeping]/[needed], [more] more needed to skip)."
player-left-bed: "&e[player] got out of bed ([sleeping]/[needed], [more] more needed to skip)."
night-skipping:
@ -60,7 +61,6 @@ messages:
color: GREEN
miscellaneous:
chat-prefix: "&8&l(&6&lHarbor&8&l)&7 "
insufficient-permissions: "Insufficient permissions."
unrecognized-command: "Unrecognized command."
# Spooky internal controls