diff --git a/src/main/java/dev/lugami/otaku/Language.java b/src/main/java/dev/lugami/otaku/Language.java index aa15b2f..e403c15 100644 --- a/src/main/java/dev/lugami/otaku/Language.java +++ b/src/main/java/dev/lugami/otaku/Language.java @@ -11,7 +11,10 @@ import java.util.List; public enum Language { PEARL_COOLDOWN("COOLDOWN.PEARL"), - REKIT_COOLDOWN("COOLDOWN.REKIT"); + REKIT_COOLDOWN("COOLDOWN.REKIT"), + COMBAT_COOLDOWN("COOLDOWN.COMBAT"), + NO_PEARL_COOLDOWN("NO-COOLDOWN.PEARL"), + NO_COMBAT_COOLDOWN("NO-COOLDOWN.COMBAT"); private String path; diff --git a/src/main/java/dev/lugami/otaku/Main.java b/src/main/java/dev/lugami/otaku/Main.java index 8439cac..ac65f61 100644 --- a/src/main/java/dev/lugami/otaku/Main.java +++ b/src/main/java/dev/lugami/otaku/Main.java @@ -58,9 +58,9 @@ public class Main extends JavaPlugin { saveMethodType = SaveMethodType.defaultTo(); } combatManager = new CombatManager(); - combatManager.runTaskTimer(this, 0, 2); + combatManager.getTask().runTaskTimer(this, 0, 2); enderpearlManager = new EnderpearlManager(); - enderpearlManager.runTaskTimer(this, 0, 2); + enderpearlManager.getTask().runTaskTimer(this, 0, 2); if (saveMethodType == SaveMethodType.MONGO) { loadMongo(); } diff --git a/src/main/java/dev/lugami/otaku/commands/LeaderboardsCommand.java b/src/main/java/dev/lugami/otaku/commands/LeaderboardsCommand.java index ab576f5..63c7e76 100644 --- a/src/main/java/dev/lugami/otaku/commands/LeaderboardsCommand.java +++ b/src/main/java/dev/lugami/otaku/commands/LeaderboardsCommand.java @@ -7,7 +7,7 @@ import org.bukkit.entity.Player; @CommandMeta(label = "leaderboards") public class LeaderboardsCommand { - public void exec(Player player) { + public void execute(Player player) { new LeaderboardsMenu().openMenu(player); } diff --git a/src/main/java/dev/lugami/otaku/listener/FFAListener.java b/src/main/java/dev/lugami/otaku/listener/FFAListener.java index 6e66e7c..4251013 100644 --- a/src/main/java/dev/lugami/otaku/listener/FFAListener.java +++ b/src/main/java/dev/lugami/otaku/listener/FFAListener.java @@ -81,7 +81,8 @@ public class FFAListener implements Listener { public void quitFFA(FFAQuitEvent event) { Profile profile = Profile.getOrCreate(event.getPlayer()); if (Main.getInstance().getCombatManager().isInCombat(event.getPlayer())) { - event.getPlayer().sendMessage(CC.RED + "You're still in combat!" + CC.GRAY + " (Remaining: " + Main.getInstance().getCombatManager().getCombatTime(event.getPlayer()) + "s)"); + event.getPlayer().sendMessage(CC.translate(Language.COMBAT_COOLDOWN.format(Main.getInstance().getCombatManager().getCombatTime(event.getPlayer())))); + //event.getPlayer().sendMessage(CC.RED + "You're still in combat!" + CC.GRAY + " (Remaining: " + Main.getInstance().getCombatManager().getCombatTime(event.getPlayer()) + "s)"); } else { FFACache.getFFAList().get(profile.getFFA()).remove(event.getPlayer()); if (Hotbar.setup(event.getPlayer()) && Main.getInstance().getEssentials().getSpawn() != null) { diff --git a/src/main/java/dev/lugami/otaku/profile/Profile.java b/src/main/java/dev/lugami/otaku/profile/Profile.java index 8ea278d..23403fe 100644 --- a/src/main/java/dev/lugami/otaku/profile/Profile.java +++ b/src/main/java/dev/lugami/otaku/profile/Profile.java @@ -41,20 +41,14 @@ public class Profile { collection = Main.getInstance().getMongoDatabase().getCollection("profiles"); } - // Players might have joined before the plugin finished loading for (Player player : Bukkit.getOnlinePlayers()) { - Profile profile = new Profile(player.getUniqueId()); - try { - profile.load(); + new Profile(player.getUniqueId()); } catch (Exception e) { player.kickPlayer(CC.RED + "The server is loading..."); - continue; } - new Profile(player.getUniqueId()); } - // Save every 5 minutes to prevent data loss new BukkitRunnable() { @Override public void run() { @@ -117,7 +111,7 @@ public class Profile { return null; } - void load() { + public void load() { if (Main.getInstance().getSaveMethodType() == SaveMethodType.MONGO && collection != null) { Document document = collection.find(Filters.eq("uuid", player.getUniqueId().toString())).first(); diff --git a/src/main/java/dev/lugami/otaku/tasks/CombatTask.java b/src/main/java/dev/lugami/otaku/tasks/CombatTask.java new file mode 100644 index 0000000..f5ce459 --- /dev/null +++ b/src/main/java/dev/lugami/otaku/tasks/CombatTask.java @@ -0,0 +1,33 @@ +package dev.lugami.otaku.tasks; + +import dev.lugami.otaku.Language; +import dev.lugami.otaku.Main; +import dev.lugami.otaku.utils.CC; +import org.bukkit.Bukkit; +import org.bukkit.entity.Player; +import org.bukkit.scheduler.BukkitRunnable; + +public class CombatTask extends BukkitRunnable { + + @Override + public void run() { + Main.getInstance().getCombatManager().count++; + + for (Player player : Bukkit.getOnlinePlayers()) { + if (Main.getInstance().getCombatManager().isInCombat(player)) { + double remainingTime = Main.getInstance().getCombatManager().getCombatTime(player) - 0.1; // Adjust the decrement value as needed + Main.getInstance().getCombatManager().setCombatTime(player, remainingTime); + + if (remainingTime <= 0) { + player.sendMessage(CC.translate(Language.NO_COMBAT_COOLDOWN.format())); + Main.getInstance().getCombatManager().setInCombat(player, false); + } + } + } + + if (Main.getInstance().getCombatManager().count == 160) { + Main.getInstance().getCombatManager().count = 0; + } + } + +} diff --git a/src/main/java/dev/lugami/otaku/tasks/EnderpearlTask.java b/src/main/java/dev/lugami/otaku/tasks/EnderpearlTask.java new file mode 100644 index 0000000..3ad1b49 --- /dev/null +++ b/src/main/java/dev/lugami/otaku/tasks/EnderpearlTask.java @@ -0,0 +1,32 @@ +package dev.lugami.otaku.tasks; + +import dev.lugami.otaku.Language; +import dev.lugami.otaku.Main; +import org.bukkit.Bukkit; +import org.bukkit.entity.Player; +import org.bukkit.scheduler.BukkitRunnable; + +public class EnderpearlTask extends BukkitRunnable { + + @Override + public void run() { + Main.getInstance().getEnderpearlManager().count++; + + for (Player player : Bukkit.getOnlinePlayers()) { + if (Main.getInstance().getEnderpearlManager().isPearlCooldown(player)) { + double remainingTime = Main.getInstance().getEnderpearlManager().getPearlCooldown(player) - 0.1; // Adjust the decrement value as needed + Main.getInstance().getEnderpearlManager().setCooldownTime(player, remainingTime); + + if (remainingTime <= 0) { + player.sendMessage(Language.NO_PEARL_COOLDOWN.format()); + Main.getInstance().getEnderpearlManager().setPearlCooldown(player, false); + } + } + } + + if (Main.getInstance().getEnderpearlManager().count == 160) { + Main.getInstance().getEnderpearlManager().count = 0; + } + } + +} diff --git a/src/main/java/dev/lugami/otaku/utils/CombatManager.java b/src/main/java/dev/lugami/otaku/utils/CombatManager.java index a4ab111..21e2527 100644 --- a/src/main/java/dev/lugami/otaku/utils/CombatManager.java +++ b/src/main/java/dev/lugami/otaku/utils/CombatManager.java @@ -1,19 +1,20 @@ package dev.lugami.otaku.utils; -import org.bukkit.Bukkit; +import dev.lugami.otaku.tasks.CombatTask; import org.bukkit.entity.Player; -import org.bukkit.scheduler.BukkitRunnable; import java.util.HashMap; import java.util.HashSet; import java.util.Map; import java.util.Set; -public class CombatManager extends BukkitRunnable { +public class CombatManager { + + private CombatTask task = new CombatTask(); private final Set combatSet = new HashSet<>(); private final Map timeMap = new HashMap<>(); - private int count = 0; + public int count = 0; public void setInCombat(Player player, boolean inCombat) { if (inCombat) { @@ -37,24 +38,10 @@ public class CombatManager extends BukkitRunnable { return Math.round(timeMap.getOrDefault(player, 0.0) * 10.0) / 10.0; } - @Override - public void run() { - count++; - - for (Player player : Bukkit.getOnlinePlayers()) { - if (isInCombat(player)) { - double remainingTime = getCombatTime(player) - 0.1; // Adjust the decrement value as needed - setCombatTime(player, remainingTime); - - if (remainingTime <= 0) { - player.sendMessage(CC.translate("&aYou are no longer in combat!")); - setInCombat(player, false); - } - } - } - - if (count == 160) { - count = 0; + public CombatTask getTask() { + if (task == null) { + task = new CombatTask(); } + return task; } } \ No newline at end of file diff --git a/src/main/java/dev/lugami/otaku/utils/EnderpearlManager.java b/src/main/java/dev/lugami/otaku/utils/EnderpearlManager.java index ace0681..d36744e 100644 --- a/src/main/java/dev/lugami/otaku/utils/EnderpearlManager.java +++ b/src/main/java/dev/lugami/otaku/utils/EnderpearlManager.java @@ -1,8 +1,7 @@ package dev.lugami.otaku.utils; -import org.bukkit.Bukkit; +import dev.lugami.otaku.tasks.EnderpearlTask; import org.bukkit.entity.Player; -import org.bukkit.scheduler.BukkitRunnable; import java.util.HashMap; import java.util.HashSet; @@ -12,11 +11,13 @@ import java.util.Set; /** * same thing as dev.lugami.otaku.utils.CombatManager but for pearls */ -public class EnderpearlManager extends BukkitRunnable { +public class EnderpearlManager { + + private EnderpearlTask task = new EnderpearlTask(); private final Set pearl = new HashSet<>(); private final Map timeMap = new HashMap<>(); - private int count = 0; + public int count = 0; public void setPearlCooldown(Player player, boolean pearlCooldown) { if (pearlCooldown) { @@ -40,25 +41,11 @@ public class EnderpearlManager extends BukkitRunnable { return Math.round(timeMap.getOrDefault(player, 0.0) * 10.0) / 10.0; } - @Override - public void run() { - count++; - - for (Player player : Bukkit.getOnlinePlayers()) { - if (isPearlCooldown(player)) { - double remainingTime = getPearlCooldown(player) - 0.1; // Adjust the decrement value as needed - setCooldownTime(player, remainingTime); - - if (remainingTime <= 0) { - player.sendMessage(CC.translate("&aYour enderpearl cooldown ended!")); - setPearlCooldown(player, false); - } - } - } - - if (count == 160) { - count = 0; + public EnderpearlTask getTask() { + if (task == null) { + task = new EnderpearlTask(); } + return task; } } diff --git a/src/main/java/dev/lugami/otaku/utils/PlayerCache.java b/src/main/java/dev/lugami/otaku/utils/PlayerCache.java index 6ddf40e..4090450 100644 --- a/src/main/java/dev/lugami/otaku/utils/PlayerCache.java +++ b/src/main/java/dev/lugami/otaku/utils/PlayerCache.java @@ -3,6 +3,7 @@ package dev.lugami.otaku.utils; import dev.lugami.otaku.profile.Profile; import dev.lugami.otaku.profile.data.ProfileState; import lombok.Getter; +import lombok.NonNull; import org.bukkit.Bukkit; import java.util.HashMap; @@ -14,12 +15,8 @@ public class PlayerCache { @Getter private static final Map playerCache = new HashMap<>(); - public static UUID getUUID(String name) { - UUID uuid = null; - if (getPlayerCache().containsKey(name)) { - uuid = getPlayerCache().get(name); - } - return uuid; + public static UUID getUUID(@NonNull String name) { + return playerCache.get(name); } public static int getInFFA() { @@ -28,28 +25,21 @@ public class PlayerCache { return i; } - public static String getName(UUID uuid) { - for (UUID cachedUUID : playerCache.values()) { - if (cachedUUID.equals(uuid)) { - String name = playerCache.entrySet() - .stream() - .filter(entry -> entry.getValue().equals(uuid)) - .map(Map.Entry::getKey) - .findFirst() - .orElse(null); + public static String getName(@NonNull UUID uuid) { + String name = playerCache.entrySet().stream() + .filter(entry -> entry.getValue().equals(uuid)) + .map(Map.Entry::getKey) + .findFirst() + .orElse(null); - if (name == null) { - try { - name = Bukkit.getOfflinePlayer(uuid).getName(); - } catch (IllegalArgumentException ignored) { - } - } - - return name; + if (name == null) { + try { + name = Bukkit.getOfflinePlayer(uuid).getName(); + } catch (IllegalArgumentException ignored) { } } - return null; + return name; } } diff --git a/src/main/resources/lang.yml b/src/main/resources/lang.yml index 6749e51..a7986fe 100644 --- a/src/main/resources/lang.yml +++ b/src/main/resources/lang.yml @@ -1,3 +1,8 @@ COOLDOWN: - REKIT: "You're still on re-kit cooldown. &7[{0}s]" - PEARL: "You're still on pearl cooldown. &7[{0}s]" \ No newline at end of file + REKIT: "&cYou''re still on re-kit cooldown. &7[{0}s]" + PEARL: "&cYou''re still on pearl cooldown. &7[{0}s]" + COMBAT: "&cYou're still on combat! &7[{0}s]" + +NO-COOLDOWN: + PEARL: "&aYour pearl cooldown expired!" + COMBAT: "&aYou're no longer in combat!" \ No newline at end of file