diff --git a/pom.xml b/pom.xml
index 6984501..7fb8ba2 100644
--- a/pom.xml
+++ b/pom.xml
@@ -6,7 +6,7 @@
me.loving11ish
EpicHomes
- 1.1.3
+ 1.1.4-BETA-01
jar
EpicHomes
@@ -129,6 +129,10 @@
papermc
https://papermc.io/repo/repository/maven-public/
+
+ paper-mc
+ https://repo.papermc.io/repository/maven-public/
+
spigotmc-repo
https://hub.spigotmc.org/nexus/content/repositories/snapshots/
diff --git a/src/main/java/me/loving11ish/epichomes/EpicHomes.java b/src/main/java/me/loving11ish/epichomes/EpicHomes.java
index 62bef6e..daf06dc 100644
--- a/src/main/java/me/loving11ish/epichomes/EpicHomes.java
+++ b/src/main/java/me/loving11ish/epichomes/EpicHomes.java
@@ -15,10 +15,7 @@
import me.loving11ish.epichomes.menusystem.PlayerMenuUtility;
import me.loving11ish.epichomes.updatesystem.JoinEvent;
import me.loving11ish.epichomes.updatesystem.UpdateChecker;
-import me.loving11ish.epichomes.utils.AutoSaveTaskUtils;
-import me.loving11ish.epichomes.utils.MessageUtils;
-import me.loving11ish.epichomes.utils.UsermapStorageUtil;
-import me.loving11ish.epichomes.utils.VersionCheckerUtils;
+import me.loving11ish.epichomes.utils.*;
import me.loving11ish.epichomes.versionsystems.ServerVersion;
import net.kyori.adventure.platform.bukkit.BukkitAudiences;
import org.bukkit.Bukkit;
@@ -58,7 +55,7 @@ public final class EpicHomes extends JavaPlugin {
private TeleportationManager teleportationManager;
private final List pluginCommands = new ArrayList<>();
- private static final HashMap playerMenuUtilityMap = new HashMap<>();
+ private final HashMap playerMenuUtilityMap = new HashMap<>();
@Override
public void onLoad() {
@@ -279,6 +276,12 @@ public void onEnable() {
AutoSaveTaskUtils.runAutoSaveTask();
MessageUtils.sendConsole(getMessagesManager().getAutoSaveStart());
}, 5L, TimeUnit.SECONDS);
+
+ // Start auto cleanup task
+ getFoliaLib().getScheduler().runLaterAsync(() -> {
+ AutoCleanupTaskUtils.runAutoCleanupTask();
+ MessageUtils.sendDebugConsole("Auto cleanup task started successfully");
+ }, 6L, TimeUnit.SECONDS);
}
@Override
@@ -369,7 +372,7 @@ public void onDisable() {
plugin = null;
}
- public static PlayerMenuUtility getPlayerMenuUtility(Player player) {
+ public PlayerMenuUtility getPlayerMenuUtility(Player player) {
PlayerMenuUtility playerMenuUtility;
if (!(playerMenuUtilityMap.containsKey(player))) {
playerMenuUtility = new PlayerMenuUtility(player);
@@ -483,4 +486,8 @@ public TeleportationManager getTeleportationManager() {
public void setTeleportationManager(TeleportationManager teleportationManager) {
this.teleportationManager = teleportationManager;
}
+
+ public HashMap getRawPlayerMenuUtilityMap() {
+ return playerMenuUtilityMap;
+ }
}
diff --git a/src/main/java/me/loving11ish/epichomes/api/EpicHomesAPI.java b/src/main/java/me/loving11ish/epichomes/api/EpicHomesAPI.java
index 7780d92..ff94fc7 100644
--- a/src/main/java/me/loving11ish/epichomes/api/EpicHomesAPI.java
+++ b/src/main/java/me/loving11ish/epichomes/api/EpicHomesAPI.java
@@ -13,9 +13,7 @@
import org.bukkit.entity.Player;
import java.io.IOException;
-import java.util.HashMap;
-import java.util.List;
-import java.util.UUID;
+import java.util.*;
/**
* EpicHomesAPI is a class that provides a set of methods for developers to use when interacting with EpicHomes.
@@ -141,6 +139,22 @@ public static Location getPlayerHomeLocationByHomeName(User user, String homeNam
return EpicHomes.getPlugin().getUsermapStorageUtil().getHomeLocationByHomeName(user, homeName);
}
+ /**
+ * @param player The Bukkit Player object to get the home locations from.
+ * @return Returns a Set of Map Entries containing the home name and location for the provided player.
+ */
+ public static Set> getHomeLocationsListByPlayer(Player player) {
+ return EpicHomes.getPlugin().getUsermapStorageUtil().getHomeLocationsListByPlayer(player);
+ }
+
+ /**
+ * @param offlinePlayer The Bukkit OfflinePlayer object to get the home locations from.
+ * @return Returns a Set of Map Entries containing the home name and location for the provided offline player.
+ */
+ public static Set> getHomeLocationsListByOfflinePlayer(OfflinePlayer offlinePlayer) {
+ return EpicHomes.getPlugin().getUsermapStorageUtil().getHomeLocationsListByOfflinePlayer(offlinePlayer);
+ }
+
/**
* @param uuid The UUID object of the player to get.
* @return Returns a WrappedTask object of the players pending teleport, or null if none found.
diff --git a/src/main/java/me/loving11ish/epichomes/commands/DeleteHomeCommand.java b/src/main/java/me/loving11ish/epichomes/commands/DeleteHomeCommand.java
index 9df947a..71f3f57 100644
--- a/src/main/java/me/loving11ish/epichomes/commands/DeleteHomeCommand.java
+++ b/src/main/java/me/loving11ish/epichomes/commands/DeleteHomeCommand.java
@@ -34,7 +34,7 @@ public boolean onCommand(@NotNull CommandSender sender, @NotNull Command command
if (args.length < 1) {
if (EpicHomes.getPlugin().isGUIEnabled()) {
- new DeleteHomesListGUI(EpicHomes.getPlayerMenuUtility(player)).open();
+ new DeleteHomesListGUI(EpicHomes.getPlugin().getPlayerMenuUtility(player)).open();
}
else {
@@ -47,7 +47,7 @@ public boolean onCommand(@NotNull CommandSender sender, @NotNull Command command
if (args[0] != null) {
if (EpicHomes.getPlugin().isGUIEnabled()) {
- PlayerMenuUtility playerMenuUtility = EpicHomes.getPlayerMenuUtility(player);
+ PlayerMenuUtility playerMenuUtility = EpicHomes.getPlugin().getPlayerMenuUtility(player);
playerMenuUtility.setUser(user);
playerMenuUtility.setHomeName(args[0]);
Location location = usermapStorageUtil.getHomeLocationByHomeName(user, args[0]);
diff --git a/src/main/java/me/loving11ish/epichomes/commands/HomeCommand.java b/src/main/java/me/loving11ish/epichomes/commands/HomeCommand.java
index ddd4226..a95c672 100644
--- a/src/main/java/me/loving11ish/epichomes/commands/HomeCommand.java
+++ b/src/main/java/me/loving11ish/epichomes/commands/HomeCommand.java
@@ -45,7 +45,7 @@ public boolean onCommand(@NotNull CommandSender sender, @NotNull Command command
if (args.length < 1) {
if (EpicHomes.getPlugin().isGUIEnabled()) {
- new HomeListGUI(EpicHomes.getPlayerMenuUtility(player)).open();
+ new HomeListGUI(EpicHomes.getPlugin().getPlayerMenuUtility(player)).open();
}
else {
@@ -83,7 +83,7 @@ else if (args[0].equalsIgnoreCase("set")
if (args[1] != null) {
if (EpicHomes.getPlugin().isGUIEnabled()) {
- PlayerMenuUtility playerMenuUtility = EpicHomes.getPlayerMenuUtility(player);
+ PlayerMenuUtility playerMenuUtility = EpicHomes.getPlugin().getPlayerMenuUtility(player);
playerMenuUtility.setUser(user);
playerMenuUtility.setHomeName(args[1]);
playerMenuUtility.setHomeLocation(usermapStorageUtil.getHomeLocationByHomeName(user, args[1]));
diff --git a/src/main/java/me/loving11ish/epichomes/commands/subcommands/ReloadSubCommand.java b/src/main/java/me/loving11ish/epichomes/commands/subcommands/ReloadSubCommand.java
index d6d8494..ebe6bef 100644
--- a/src/main/java/me/loving11ish/epichomes/commands/subcommands/ReloadSubCommand.java
+++ b/src/main/java/me/loving11ish/epichomes/commands/subcommands/ReloadSubCommand.java
@@ -9,6 +9,7 @@
import me.loving11ish.epichomes.managers.filemanagers.ConfigManager;
import me.loving11ish.epichomes.managers.filemanagers.MessagesManager;
import me.loving11ish.epichomes.updatesystem.UpdateChecker;
+import me.loving11ish.epichomes.utils.AutoCleanupTaskUtils;
import me.loving11ish.epichomes.utils.AutoSaveTaskUtils;
import me.loving11ish.epichomes.utils.MessageUtils;
import org.bukkit.Bukkit;
@@ -87,6 +88,11 @@ private void handleReload() {
MessageUtils.sendDebugConsole( "&aAuto save timed task canceled successfully");
AutoSaveTaskUtils.getAutoSaveTask().cancel();
}
+ if (!AutoCleanupTaskUtils.getAutoCleanupTask().isCancelled()) {
+ MessageUtils.sendDebugConsole( "&aWrapped task: " + AutoCleanupTaskUtils.getAutoCleanupTask().toString());
+ MessageUtils.sendDebugConsole( "&aAuto cleanup timed task canceled successfully");
+ AutoCleanupTaskUtils.getAutoCleanupTask().cancel();
+ }
foliaLib.getScheduler().cancelAllTasks();
if (foliaLib.isUnsupported()) {
Bukkit.getScheduler().cancelTasks(EpicHomes.getPlugin());
@@ -147,6 +153,12 @@ private void handleReload() {
AutoSaveTaskUtils.runAutoSaveTask();
MessageUtils.sendConsole(EpicHomes.getPlugin().getMessagesManager().getAutoSaveStart());
}, 5L, TimeUnit.SECONDS);
+
+ // Restart auto cleanup task
+ foliaLib.getScheduler().runLaterAsync(() -> {
+ AutoCleanupTaskUtils.runAutoCleanupTask();
+ MessageUtils.sendDebugConsole("Auto cleanup task started successfully");
+ }, 6L, TimeUnit.SECONDS);
}, 6L, TimeUnit.SECONDS);
}
}
diff --git a/src/main/java/me/loving11ish/epichomes/utils/AutoCleanupTaskUtils.java b/src/main/java/me/loving11ish/epichomes/utils/AutoCleanupTaskUtils.java
new file mode 100644
index 0000000..083c72b
--- /dev/null
+++ b/src/main/java/me/loving11ish/epichomes/utils/AutoCleanupTaskUtils.java
@@ -0,0 +1,25 @@
+package me.loving11ish.epichomes.utils;
+
+import com.tcoded.folialib.FoliaLib;
+import com.tcoded.folialib.wrapper.task.WrappedTask;
+import me.loving11ish.epichomes.EpicHomes;
+
+import java.util.concurrent.TimeUnit;
+
+public class AutoCleanupTaskUtils {
+
+ private static final FoliaLib foliaLib = EpicHomes.getFoliaLib();
+
+ public static WrappedTask autoCleanupTask;
+
+ public static void runAutoCleanupTask() {
+ autoCleanupTask = foliaLib.getScheduler().runTimerAsync(() -> {
+ EpicHomes.getPlugin().getRawPlayerMenuUtilityMap().clear();
+ MessageUtils.sendDebugConsole("Player menu utility map cleared by auto-cleanup task.");
+ }, 1L, 3600L, TimeUnit.SECONDS); // Runs every hour
+ }
+
+ public static WrappedTask getAutoCleanupTask() {
+ return autoCleanupTask;
+ }
+}