Moved the enderpearl cooldown and combat tag tasks to 2 new classes, fixes fo FFAListener, changes to lang.yml and Language.java, and some minimal stuff that is not worth talking about

This commit is contained in:
Matheus 2024-03-19 08:50:22 -04:00
parent 6e4f5dbd0f
commit 3e10a8cac9
11 changed files with 115 additions and 83 deletions

View File

@ -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;

View File

@ -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();
}

View File

@ -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);
}

View File

@ -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) {

View File

@ -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();

View File

@ -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;
}
}
}

View File

@ -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;
}
}
}

View File

@ -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<Player> combatSet = new HashSet<>();
private final Map<Player, Double> 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;
}
}

View File

@ -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<Player> pearl = new HashSet<>();
private final Map<Player, Double> 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;
}
}

View File

@ -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<String, UUID> 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;
}
}

View File

@ -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]"
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!"