Thunderstorm looping fix

Also some small cleanup and vanish checking for bed messages.
This commit is contained in:
Mykyta 2020-04-19 06:53:23 -07:00
parent 737c9bdc40
commit 7c8819bb35
No known key found for this signature in database
GPG Key ID: C147E30C19EA3570
3 changed files with 22 additions and 20 deletions

View File

@ -20,17 +20,17 @@ public class HarborCommand implements TabExecutor {
final String prefix = Config.getString("messages.miscellaneous.chat-prefix"); final String prefix = Config.getString("messages.miscellaneous.chat-prefix");
if (args.length < 1 || !sender.hasPermission("harbor.admin")) { if (args.length < 1 || !sender.hasPermission("harbor.admin")) {
sender.sendMessage(ChatColor.translateAlternateColorCodes('&', prefix + "&7Harbor version " sender.sendMessage(ChatColor.translateAlternateColorCodes('&', String.format(
+ Harbor.version + " by TechToolbox (@nkomarn).")); "%sHarbor version %s by TechToolbox (@nkomarn).", prefix, Harbor.version)));
} else if (args[0].equalsIgnoreCase("reload")) { } else if (args[0].equalsIgnoreCase("reload")) {
Harbor.getHarbor().reloadConfig(); Harbor.getHarbor().reloadConfig();
sender.sendMessage(ChatColor.translateAlternateColorCodes('&', prefix sender.sendMessage(ChatColor.translateAlternateColorCodes('&', prefix
+ "&7Reloaded configuration.")); + "Reloaded configuration."));
} }
else if (args[0].equalsIgnoreCase("forceskip")) { else if (args[0].equalsIgnoreCase("forceskip")) {
if (!(sender instanceof Player)) { if (!(sender instanceof Player)) {
sender.sendMessage(ChatColor.translateAlternateColorCodes('&', prefix sender.sendMessage(ChatColor.translateAlternateColorCodes('&', prefix
+ "&7This command requires you to be a player.")); + "This command requires you to be a player."));
return true; return true;
} }
@ -39,14 +39,13 @@ public class HarborCommand implements TabExecutor {
if (Checker.skippingWorlds.contains(world)) { if (Checker.skippingWorlds.contains(world)) {
sender.sendMessage(ChatColor.translateAlternateColorCodes('&', prefix sender.sendMessage(ChatColor.translateAlternateColorCodes('&', prefix
+ "&7This world's time is already being accelerated.")); + "This world's time is already being accelerated."));
return true; } else {
Checker.skippingWorlds.add(world);
new AccelerateNightTask(world).runTaskTimer(Harbor.getHarbor(), 0L, 1);
sender.sendMessage(ChatColor.translateAlternateColorCodes('&', prefix
+ "Forcing night skip in your world."));
} }
Checker.skippingWorlds.add(world);
new AccelerateNightTask(world).runTaskTimer(Harbor.getHarbor(), 0L, 1);
sender.sendMessage(ChatColor.translateAlternateColorCodes('&', prefix
+ "&7Forcing night skip in your world."));
} else { } else {
sender.sendMessage(ChatColor.translateAlternateColorCodes('&', prefix sender.sendMessage(ChatColor.translateAlternateColorCodes('&', prefix
+ Config.getString("messages.miscellaneous.unrecognized-command"))); + Config.getString("messages.miscellaneous.unrecognized-command")));

View File

@ -22,6 +22,7 @@ public class BedListener implements Listener {
public void onBedEnter(final PlayerBedEnterEvent event) { public void onBedEnter(final PlayerBedEnterEvent event) {
if (event.getBedEnterResult() != PlayerBedEnterEvent.BedEnterResult.OK) return; if (event.getBedEnterResult() != PlayerBedEnterEvent.BedEnterResult.OK) return;
if (Checker.skippingWorlds.contains(event.getPlayer().getWorld())) return; if (Checker.skippingWorlds.contains(event.getPlayer().getWorld())) return;
if (Checker.isVanished(event.getPlayer())) return;
Bukkit.getScheduler().runTaskLater(Harbor.getHarbor(), () -> { Bukkit.getScheduler().runTaskLater(Harbor.getHarbor(), () -> {
final UUID playerUuid = event.getPlayer().getUniqueId(); final UUID playerUuid = event.getPlayer().getUniqueId();
@ -39,6 +40,7 @@ public class BedListener implements Listener {
@EventHandler(ignoreCancelled = true) @EventHandler(ignoreCancelled = true)
public void onBedLeave(final PlayerBedLeaveEvent event) { public void onBedLeave(final PlayerBedLeaveEvent event) {
if (Checker.skippingWorlds.contains(event.getPlayer().getWorld())) return; if (Checker.skippingWorlds.contains(event.getPlayer().getWorld())) return;
if (Checker.isVanished(event.getPlayer())) return;
Bukkit.getScheduler().runTaskLater(Harbor.getHarbor(), () -> { Bukkit.getScheduler().runTaskLater(Harbor.getHarbor(), () -> {
final UUID playerUuid = event.getPlayer().getUniqueId(); final UUID playerUuid = event.getPlayer().getUniqueId();

View File

@ -14,6 +14,14 @@ public class AccelerateNightTask extends BukkitRunnable {
public AccelerateNightTask(final World world) { public AccelerateNightTask(final World world) {
this.world = world; this.world = world;
Messages.sendRandomChatMessage(world, "messages.chat.night-skipping"); Messages.sendRandomChatMessage(world, "messages.chat.night-skipping");
if (Config.getBoolean("night-skip.clear-rain")) {
world.setStorm(false);
}
if (Config.getBoolean("night-skip.clear-thunder")) {
world.setThundering(false);
}
} }
@Override @Override
@ -29,19 +37,12 @@ public class AccelerateNightTask extends BukkitRunnable {
} }
if (time >= (dayTime - timeRate * 1.5) && time <= dayTime) { if (time >= (dayTime - timeRate * 1.5) && time <= dayTime) {
if (Config.getBoolean("night-skip.clear-rain")) {
world.setStorm(false);
}
if (Config.getBoolean("night-skip.clear-thunder")) {
world.setThundering(false);
}
if (Config.getBoolean("night-skip.reset-phantom-statistic")) { if (Config.getBoolean("night-skip.reset-phantom-statistic")) {
world.getPlayers().forEach(player -> player.setStatistic(Statistic.TIME_SINCE_REST, 0)); world.getPlayers().forEach(player -> player.setStatistic(Statistic.TIME_SINCE_REST, 0));
} }
Bukkit.getScheduler().runTaskLaterAsynchronously(Harbor.getHarbor(), () -> Checker.skippingWorlds.remove(world), 20); Bukkit.getScheduler().runTaskLaterAsynchronously(Harbor.getHarbor(),
() -> Checker.skippingWorlds.remove(world), 20);
Messages.sendRandomChatMessage(world, "messages.chat.night-skipped"); Messages.sendRandomChatMessage(world, "messages.chat.night-skipped");
this.cancel(); this.cancel();
} else { } else {