From b630205cef224f201ae9619247d41b16b0d3889f Mon Sep 17 00:00:00 2001 From: Indyuce Date: Fri, 1 May 2020 19:28:47 +0200 Subject: [PATCH] Added /mmocore admin reset waypoints --- .../mmocore/api/player/PlayerData.java | 9 ++++++- .../command/rpg/admin/ResetCommandMap.java | 27 +++++++++++++++++++ .../Indyuce/mmocore/gui/WaypointViewer.java | 5 +--- 3 files changed, 36 insertions(+), 5 deletions(-) diff --git a/src/main/java/net/Indyuce/mmocore/api/player/PlayerData.java b/src/main/java/net/Indyuce/mmocore/api/player/PlayerData.java index a064eae5..26ae975e 100644 --- a/src/main/java/net/Indyuce/mmocore/api/player/PlayerData.java +++ b/src/main/java/net/Indyuce/mmocore/api/player/PlayerData.java @@ -320,7 +320,7 @@ public class PlayerData extends OfflinePlayerData { waypoints.add(waypoint.getId()); } - public long getNextWaypointMillis() { + public long getWaypointCooldown() { return Math.max(0, lastWaypoint + 5000 - System.currentTimeMillis()); } @@ -377,7 +377,14 @@ public class PlayerData extends OfflinePlayerData { } public void warp(Waypoint waypoint) { + + /* + * this cooldown is only used internally to make sure the player is not + * spamming waypoints. there is no need to reset it when resetting the + * player waypoints data + */ lastWaypoint = System.currentTimeMillis(); + giveStellium(-waypoint.getStelliumCost()); new BukkitRunnable() { diff --git a/src/main/java/net/Indyuce/mmocore/command/rpg/admin/ResetCommandMap.java b/src/main/java/net/Indyuce/mmocore/command/rpg/admin/ResetCommandMap.java index 0a832d66..e70ad392 100644 --- a/src/main/java/net/Indyuce/mmocore/command/rpg/admin/ResetCommandMap.java +++ b/src/main/java/net/Indyuce/mmocore/command/rpg/admin/ResetCommandMap.java @@ -22,6 +22,7 @@ public class ResetCommandMap extends CommandMap { addFloor(new ResetSkillsCommandMap(this)); addFloor(new ResetAllCommandMap(this)); addFloor(new ResetAttributesCommandMap(this)); + addFloor(new ResetWaypointsCommandMap(this)); } @Override @@ -73,6 +74,32 @@ public class ResetCommandMap extends CommandMap { } } + public class ResetWaypointsCommandMap extends CommandEnd { + public ResetWaypointsCommandMap(CommandMap parent) { + super(parent, "waypoints"); + + addParameter(Parameter.PLAYER); + } + + @Override + public CommandResult execute(CommandSender sender, String[] args) { + if (args.length < 4) + return CommandResult.THROW_USAGE; + + Player player = Bukkit.getPlayer(args[3]); + if (player == null) { + sender.sendMessage(ChatColor.RED + "Could not find the player called " + args[3] + "."); + return CommandResult.FAILURE; + } + + PlayerData data = PlayerData.get(player); + data.getWaypoints().clear(); + MMOCore.plugin.waypointManager.getAll().stream().filter(waypoint -> waypoint.isDefault()) + .forEach(waypoint -> data.unlockWaypoint(waypoint)); + return CommandResult.SUCCESS; + } + } + public class ResetQuestsCommandMap extends CommandEnd { public ResetQuestsCommandMap(CommandMap parent) { super(parent, "quests"); diff --git a/src/main/java/net/Indyuce/mmocore/gui/WaypointViewer.java b/src/main/java/net/Indyuce/mmocore/gui/WaypointViewer.java index 22ea814f..1f6547e3 100644 --- a/src/main/java/net/Indyuce/mmocore/gui/WaypointViewer.java +++ b/src/main/java/net/Indyuce/mmocore/gui/WaypointViewer.java @@ -199,11 +199,8 @@ public class WaypointViewer extends EditableInventory { return; } - double next = (double) playerData.getNextWaypointMillis() / 1000; - if (next < 0) { - MMOCore.plugin.configManager.getSimpleMessage("not-enough-stellium", "cooldown", decimal.format(next)).send(player); + if (playerData.getWaypointCooldown() > 0) return; - } player.closeInventory(); playerData.warp(waypoint);