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:
parent
b5c7f60fdd
commit
35407752c9
@ -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");
|
||||
}
|
||||
}
|
||||
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
@ -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")) {
|
||||
|
@ -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
|
||||
|
Loading…
Reference in New Issue
Block a user