mirror of https://github.com/lugamii/OtakuFFA.git
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:
parent
6e4f5dbd0f
commit
3e10a8cac9
|
@ -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;
|
||||
|
||||
|
|
|
@ -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();
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
||||
|
|
|
@ -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) {
|
||||
|
|
|
@ -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();
|
||||
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
|
@ -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;
|
||||
}
|
||||
}
|
|
@ -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;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -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!"
|
Loading…
Reference in New Issue