From 0351c37bbefcf860100b58363f286302c4406116 Mon Sep 17 00:00:00 2001 From: adabugra <57899270+adabugra@users.noreply.github.com> Date: Mon, 23 Dec 2024 00:07:56 +0300 Subject: [PATCH 1/3] Folia Support --- Minepacks/pom.xml | 12 +++ Minepacks/resources/plugin.yml | 1 + .../Minepacks/Bukkit/Backpack.java | 10 ++- .../Minepacks/Bukkit/CancellableRunnable.java | 21 ++++++ .../Minepacks/Bukkit/CooldownManager.java | 10 ++- .../Database/Migration/MigrationManager.java | 4 +- .../Minepacks/Bukkit/Database/SQL.java | 16 ++-- .../Minepacks/Bukkit/Database/SQLite.java | 3 +- .../Database/UnCacheStrategies/Interval.java | 8 +- .../UnCacheStrategies/IntervalChecked.java | 8 +- .../OnDisconnectDelayed.java | 24 +++--- .../Minepacks/Bukkit/ItemsCollector.java | 75 ++++++++++--------- .../Bukkit/Listener/ItemShortcut.java | 12 +-- .../Minepacks/Bukkit/Minepacks.java | 7 ++ .../SpecialInfoWorker/SpecialInfoBase.java | 4 +- pom.xml | 4 + 16 files changed, 133 insertions(+), 86 deletions(-) create mode 100644 Minepacks/src/at/pcgamingfreaks/Minepacks/Bukkit/CancellableRunnable.java diff --git a/Minepacks/pom.xml b/Minepacks/pom.xml index 32fc28c6..4e9c3aa7 100644 --- a/Minepacks/pom.xml +++ b/Minepacks/pom.xml @@ -48,6 +48,13 @@ PluginLib ${pcgfPluginLibVersion} + + + com.github.technicallycoded + FoliaLib + 0.4.3 + compile + org.junit.jupiter @@ -143,6 +150,7 @@ at.pcgamingfreaks:Minepacks-API at.pcgamingfreaks:Minepacks-MagicValues at.pcgamingfreaks:PluginLib + com.github.technicallycoded:FoliaLib @@ -150,6 +158,10 @@ at.pcgf.libs at.pcgamingfreaks.MinepacksStandalone.libs + + com.tcoded.folialib + at.pcgamingfreaks.MinepacksStandalone.libs.folialib + at.pcgamingfreaks.Minepacks at.pcgamingfreaks.MinepacksStandalone diff --git a/Minepacks/resources/plugin.yml b/Minepacks/resources/plugin.yml index e99d469e..dccf2543 100644 --- a/Minepacks/resources/plugin.yml +++ b/Minepacks/resources/plugin.yml @@ -7,6 +7,7 @@ version: "${pluginVersion}" api-version: "1.13" depend: [${dependencies}] softdepend: [MVdWPlaceholderAPI, PlaceholderAPI ${soft-dependencies}] +folia-supported: true permissions: backpack.*: diff --git a/Minepacks/src/at/pcgamingfreaks/Minepacks/Bukkit/Backpack.java b/Minepacks/src/at/pcgamingfreaks/Minepacks/Bukkit/Backpack.java index b8428364..f610eb35 100644 --- a/Minepacks/src/at/pcgamingfreaks/Minepacks/Bukkit/Backpack.java +++ b/Minepacks/src/at/pcgamingfreaks/Minepacks/Bukkit/Backpack.java @@ -104,14 +104,16 @@ public Backpack(final OfflinePlayer owner, ItemStack[] backpack, final int ID) Minepacks.getInstance().getLogger().warning(owner.getName() + "'s backpack has to many items."); if(owner.isOnline()) { - Bukkit.getScheduler().runTask(Minepacks.getInstance(), () -> { + Minepacks.getScheduler().runNextTick(task -> { if(owner.isOnline()) { Player player = owner.getPlayer(); assert player != null; - Map left = player.getInventory().addItem(toMuch.toArray(new ItemStack[0])); - left.forEach((id, stack) -> player.getWorld().dropItemNaturally(player.getLocation(), stack)); - this.setChanged(); + Minepacks.getScheduler().runAtEntity(player, task1 -> { + Map left = player.getInventory().addItem(toMuch.toArray(new ItemStack[0])); + left.forEach((id, stack) -> player.getWorld().dropItemNaturally(player.getLocation(), stack)); + this.setChanged(); + }); } }); } diff --git a/Minepacks/src/at/pcgamingfreaks/Minepacks/Bukkit/CancellableRunnable.java b/Minepacks/src/at/pcgamingfreaks/Minepacks/Bukkit/CancellableRunnable.java new file mode 100644 index 00000000..96571f5b --- /dev/null +++ b/Minepacks/src/at/pcgamingfreaks/Minepacks/Bukkit/CancellableRunnable.java @@ -0,0 +1,21 @@ +package at.pcgamingfreaks.Minepacks.Bukkit; + +import com.tcoded.folialib.impl.PlatformScheduler; +import com.tcoded.folialib.wrapper.task.WrappedTask; + +public abstract class CancellableRunnable { + protected WrappedTask task = null; + + public abstract void run(); + public abstract void schedule(); + + public void cancel() { + if (task != null) { + task.cancel(); + } + } + + protected PlatformScheduler getScheduler() { + return Minepacks.getScheduler(); + } +} \ No newline at end of file diff --git a/Minepacks/src/at/pcgamingfreaks/Minepacks/Bukkit/CooldownManager.java b/Minepacks/src/at/pcgamingfreaks/Minepacks/Bukkit/CooldownManager.java index ffd97cba..315cf933 100644 --- a/Minepacks/src/at/pcgamingfreaks/Minepacks/Bukkit/CooldownManager.java +++ b/Minepacks/src/at/pcgamingfreaks/Minepacks/Bukkit/CooldownManager.java @@ -24,14 +24,13 @@ import org.bukkit.event.Listener; import org.bukkit.event.player.PlayerJoinEvent; import org.bukkit.event.player.PlayerQuitEvent; -import org.bukkit.scheduler.BukkitRunnable; import org.jetbrains.annotations.NotNull; import java.util.HashMap; import java.util.Map; import java.util.UUID; -public class CooldownManager extends BukkitRunnable implements Listener +public class CooldownManager extends CancellableRunnable implements Listener { private final Minepacks plugin; private final Map cooldowns = new HashMap<>(); @@ -47,8 +46,6 @@ public CooldownManager(Minepacks plugin) addOnJoin = plugin.getConfiguration().isCommandCooldownAddOnJoinEnabled(); clearOnLeave = plugin.getConfiguration().isCommandCooldownClearOnLeaveEnabled(); plugin.getServer().getPluginManager().registerEvents(this, plugin); - - runTaskTimer(plugin, plugin.getConfiguration().getCommandCooldownCleanupInterval(), plugin.getConfiguration().getCommandCooldownCleanupInterval()); } public void close() @@ -109,4 +106,9 @@ public void run() { cooldowns.entrySet().removeIf(entry -> entry.getValue() < System.currentTimeMillis()); } + + @Override + public void schedule() { + task = getScheduler().runTimer(this::run, plugin.getConfiguration().getCommandCooldownCleanupInterval(), plugin.getConfiguration().getCommandCooldownCleanupInterval()); + } } \ No newline at end of file diff --git a/Minepacks/src/at/pcgamingfreaks/Minepacks/Bukkit/Database/Migration/MigrationManager.java b/Minepacks/src/at/pcgamingfreaks/Minepacks/Bukkit/Database/Migration/MigrationManager.java index 9054c911..6db83ded 100644 --- a/Minepacks/src/at/pcgamingfreaks/Minepacks/Bukkit/Database/Migration/MigrationManager.java +++ b/Minepacks/src/at/pcgamingfreaks/Minepacks/Bukkit/Database/Migration/MigrationManager.java @@ -63,7 +63,7 @@ public void migrateDB(final String targetDatabaseType, final MigrationCallback c } //endregion //region Migrate data - plugin.getServer().getScheduler().runTaskAsynchronously(plugin, () -> { + Minepacks.getScheduler().runAsync(task -> { MigrationResult migrationResult = null; try { @@ -80,7 +80,7 @@ public void migrateDB(final String targetDatabaseType, final MigrationCallback c //region Start the plugin again final MigrationResult migrationResultFinal = migrationResult; - plugin.getServer().getScheduler().runTask(plugin, () -> { + Minepacks.getScheduler().runNextTick(task1 -> { db.close(); // No need to reload the config try diff --git a/Minepacks/src/at/pcgamingfreaks/Minepacks/Bukkit/Database/SQL.java b/Minepacks/src/at/pcgamingfreaks/Minepacks/Bukkit/Database/SQL.java index 08a0e659..ede2229f 100644 --- a/Minepacks/src/at/pcgamingfreaks/Minepacks/Bukkit/Database/SQL.java +++ b/Minepacks/src/at/pcgamingfreaks/Minepacks/Bukkit/Database/SQL.java @@ -219,7 +219,7 @@ public void saveBackpack(final Backpack backpack) { final int newID = rs.getInt(fieldPlayerID); DBTools.runStatement(connection, queryInsertBp, newID, data, usedSerializer); - plugin.getServer().getScheduler().runTask(plugin, () -> backpack.setOwnerDatabaseId(newID)); + Minepacks.getScheduler().runNextTick(task -> backpack.setOwnerDatabaseId(newID)); } else { @@ -240,13 +240,13 @@ public void saveBackpack(final Backpack backpack) writeBackup(name, nameOrUUID, usedSerializer, data); } }; - if(asyncSave) Bukkit.getScheduler().runTaskAsynchronously(plugin, runnable); else runnable.run(); + if(asyncSave) Minepacks.getScheduler().runAsync(task -> runnable.run()); else runnable.run(); } @Override protected void loadBackpack(final OfflinePlayer player, final Callback callback) { - plugin.getServer().getScheduler().runTaskAsynchronously(plugin, () -> { + Minepacks.getScheduler().runAsync(task -> { try(Connection conn = getConnection(); PreparedStatement ps = conn.prepareStatement(queryGetBP)) { final String playerUUID = getPlayerFormattedUUID(player); @@ -275,7 +275,7 @@ protected void loadBackpack(final OfflinePlayer player, final Callback writeBackup(player.getName(), playerUUID, version, data); } final Backpack backpack = (its != null) ? new Backpack(player, its, bpID) : null; - plugin.getServer().getScheduler().runTask(plugin, () -> { + Minepacks.getScheduler().runNextTick(task1 -> { if(backpack != null) { callback.onResult(backpack); @@ -289,7 +289,7 @@ protected void loadBackpack(final OfflinePlayer player, final Callback catch(SQLException e) { plugin.getLogger().log(Level.SEVERE, "Failed to load backpack! Error: {0}", e.getMessage()); - plugin.getServer().getScheduler().runTask(plugin, callback::onFail); + Minepacks.getScheduler().runNextTick(task1 -> callback.onFail()); } }); } @@ -304,20 +304,20 @@ public void syncCooldown(Player player, long cooldownTime) @Override public void getCooldown(final Player player, final Callback callback) { - plugin.getServer().getScheduler().runTaskAsynchronously(plugin, () -> { + Minepacks.getScheduler().runAsync(asyncTask -> { try(Connection conn = getConnection(); PreparedStatement ps = conn.prepareStatement(queryGetCooldown)) { ps.setString(1, getPlayerFormattedUUID(player)); try(ResultSet rs = ps.executeQuery()) { final long time = (rs.next()) ? rs.getTimestamp(fieldCdTime).getTime() : 0; - plugin.getServer().getScheduler().runTask(plugin, () -> callback.onResult(time)); + Minepacks.getScheduler().runNextTick(task -> callback.onResult(time)); } } catch(SQLException e) { plugin.getLogger().log(Level.SEVERE, "Failed to load cooldown! Error: {0}", e.getMessage()); - plugin.getServer().getScheduler().runTask(plugin, () -> callback.onResult(0L)); + Minepacks.getScheduler().runNextTick(task -> callback.onResult(0L)); } }); } diff --git a/Minepacks/src/at/pcgamingfreaks/Minepacks/Bukkit/Database/SQLite.java b/Minepacks/src/at/pcgamingfreaks/Minepacks/Bukkit/Database/SQLite.java index 2c2965e1..7e64fbdd 100644 --- a/Minepacks/src/at/pcgamingfreaks/Minepacks/Bukkit/Database/SQLite.java +++ b/Minepacks/src/at/pcgamingfreaks/Minepacks/Bukkit/Database/SQLite.java @@ -22,7 +22,6 @@ import at.pcgamingfreaks.Database.DBTools; import at.pcgamingfreaks.Minepacks.Bukkit.Minepacks; import at.pcgamingfreaks.Version; -import org.bukkit.Bukkit; import org.bukkit.entity.Player; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -124,7 +123,7 @@ protected void checkDB() @Override public void updatePlayer(final Player player) { - Bukkit.getScheduler().runTaskAsynchronously(plugin, () -> { + Minepacks.getScheduler().runAsync(task -> { runStatement(queryUpdatePlayerAdd, player.getName(), getPlayerFormattedUUID(player)); runStatement("UPDATE `" + tablePlayers + "` SET `" + fieldPlayerName + "`=? WHERE `" + fieldPlayerUUID + "`=?;", player.getName(), getPlayerFormattedUUID(player)); }); diff --git a/Minepacks/src/at/pcgamingfreaks/Minepacks/Bukkit/Database/UnCacheStrategies/Interval.java b/Minepacks/src/at/pcgamingfreaks/Minepacks/Bukkit/Database/UnCacheStrategies/Interval.java index c7d9772d..e9df4ce7 100644 --- a/Minepacks/src/at/pcgamingfreaks/Minepacks/Bukkit/Database/UnCacheStrategies/Interval.java +++ b/Minepacks/src/at/pcgamingfreaks/Minepacks/Bukkit/Database/UnCacheStrategies/Interval.java @@ -20,16 +20,16 @@ import at.pcgamingfreaks.Minepacks.Bukkit.Backpack; import at.pcgamingfreaks.Minepacks.Bukkit.Database.Database; import at.pcgamingfreaks.Minepacks.Bukkit.Minepacks; -import org.bukkit.Bukkit; +import com.tcoded.folialib.wrapper.task.WrappedTask; public class Interval extends UnCacheStrategy implements Runnable { - private final int taskID; + private final WrappedTask task; public Interval(Database cache) { super(cache); - taskID = Bukkit.getScheduler().scheduleSyncRepeatingTask(Minepacks.getInstance(), this, Minepacks.getInstance().getConfiguration().getUnCacheDelay(), Minepacks.getInstance().getConfiguration().getUnCacheInterval()); + task = Minepacks.getScheduler().runTimer(this, Minepacks.getInstance().getConfiguration().getUnCacheDelay(), Minepacks.getInstance().getConfiguration().getUnCacheInterval()); } @Override @@ -47,7 +47,7 @@ public void run() @Override public void close() { - Bukkit.getScheduler().cancelTask(taskID); + Minepacks.getScheduler().cancelTask(task); super.close(); } } \ No newline at end of file diff --git a/Minepacks/src/at/pcgamingfreaks/Minepacks/Bukkit/Database/UnCacheStrategies/IntervalChecked.java b/Minepacks/src/at/pcgamingfreaks/Minepacks/Bukkit/Database/UnCacheStrategies/IntervalChecked.java index 06903b94..840be02e 100644 --- a/Minepacks/src/at/pcgamingfreaks/Minepacks/Bukkit/Database/UnCacheStrategies/IntervalChecked.java +++ b/Minepacks/src/at/pcgamingfreaks/Minepacks/Bukkit/Database/UnCacheStrategies/IntervalChecked.java @@ -21,19 +21,19 @@ import at.pcgamingfreaks.Minepacks.Bukkit.Database.Database; import at.pcgamingfreaks.Minepacks.Bukkit.Minepacks; -import org.bukkit.Bukkit; +import com.tcoded.folialib.wrapper.task.WrappedTask; import org.bukkit.OfflinePlayer; public class IntervalChecked extends UnCacheStrategy implements Runnable { private final long delay; - private final int taskID; + private final WrappedTask task; public IntervalChecked(Database cache) { super(cache); long delayTicks = Minepacks.getInstance().getConfiguration().getUnCacheDelay(); - taskID = Bukkit.getScheduler().scheduleSyncRepeatingTask(Minepacks.getInstance(), this, delayTicks, Minepacks.getInstance().getConfiguration().getUnCacheInterval()); + task = Minepacks.getScheduler().runTimer(this, delayTicks, Minepacks.getInstance().getConfiguration().getUnCacheInterval()); this.delay = delayTicks * 50L; } @@ -54,7 +54,7 @@ public void run() @Override public void close() { - Bukkit.getScheduler().cancelTask(taskID); + Minepacks.getScheduler().cancelTask(task); super.close(); } } \ No newline at end of file diff --git a/Minepacks/src/at/pcgamingfreaks/Minepacks/Bukkit/Database/UnCacheStrategies/OnDisconnectDelayed.java b/Minepacks/src/at/pcgamingfreaks/Minepacks/Bukkit/Database/UnCacheStrategies/OnDisconnectDelayed.java index 82033d6b..d3455f03 100644 --- a/Minepacks/src/at/pcgamingfreaks/Minepacks/Bukkit/Database/UnCacheStrategies/OnDisconnectDelayed.java +++ b/Minepacks/src/at/pcgamingfreaks/Minepacks/Bukkit/Database/UnCacheStrategies/OnDisconnectDelayed.java @@ -26,7 +26,6 @@ import org.bukkit.event.HandlerList; import org.bukkit.event.Listener; import org.bukkit.event.player.PlayerQuitEvent; -import org.bukkit.scheduler.BukkitRunnable; public class OnDisconnectDelayed extends UnCacheStrategy implements Listener { @@ -45,21 +44,20 @@ public void playerLeaveEvent(PlayerQuitEvent event) final Backpack backpack = cache.getBackpack(event.getPlayer()); if(backpack != null) // We only uncache unmarried player. { - new BukkitRunnable() - { - @Override - public void run() + Minepacks.getScheduler().runLater(() -> { + if (!backpack.isOpen()) { - if(!backpack.isOpen()) + cache.unloadBackpack(backpack); + } else { + Minepacks.getScheduler().runLater(() -> { - cache.unloadBackpack(backpack); - } - else - { - this.runTaskLater(Minepacks.getInstance(), delay); - } + if (!backpack.isOpen()) + { + cache.unloadBackpack(backpack); + } + }, delay); } - }.runTaskLater(Minepacks.getInstance(), delay); + }, delay); } } diff --git a/Minepacks/src/at/pcgamingfreaks/Minepacks/Bukkit/ItemsCollector.java b/Minepacks/src/at/pcgamingfreaks/Minepacks/Bukkit/ItemsCollector.java index 4ef8a317..2d63b184 100644 --- a/Minepacks/src/at/pcgamingfreaks/Minepacks/Bukkit/ItemsCollector.java +++ b/Minepacks/src/at/pcgamingfreaks/Minepacks/Bukkit/ItemsCollector.java @@ -24,16 +24,12 @@ import org.bukkit.entity.Item; import org.bukkit.entity.Player; import org.bukkit.inventory.ItemStack; -import org.bukkit.scheduler.BukkitRunnable; -import org.bukkit.scheduler.BukkitTask; import java.util.*; -public class ItemsCollector extends BukkitRunnable -{ +public class ItemsCollector extends CancellableRunnable { private final Minepacks plugin; private final double radius; - private final BukkitTask task; private final ItemFilter itemFilter; /** @@ -59,8 +55,7 @@ public ItemsCollector(Minepacks plugin) this.isToggleable = plugin.getConfiguration().isFullInvToggleAllowed(); this.enabledOnJoin = plugin.getConfiguration().isFullInvEnabledOnJoin(); this.toggleList = new HashSet<>(); - - task = runTaskTimer(plugin, plugin.getConfiguration().getFullInvCheckInterval(), plugin.getConfiguration().getFullInvCheckInterval()); + schedule(); itemFilter = plugin.getItemFilter(); } @@ -81,50 +76,56 @@ public void run() { for(Player player : Bukkit.getServer().getOnlinePlayers()) { - if (!canUseAutoPickup(player)) continue; + Minepacks.getScheduler().runAtEntity(player, entityTask -> { + if (!canUseAutoPickup(player)) return; - // Inventory is full - if (player.getInventory().firstEmpty() != -1) continue; + // Inventory is full + if (player.getInventory().firstEmpty() != -1) return; - // Only check loaded backpacks (loading them would take too much time for a repeating task, the backpack will be loaded async soon enough) - Backpack backpack = (Backpack) plugin.getBackpackCachedOnly(player); - if (backpack == null) continue; + // Only check loaded backpacks (loading them would take too much time for a repeating task, the backpack will be loaded async soon enough) + Backpack backpack = (Backpack) plugin.getBackpackCachedOnly(player); + if (backpack == null) return; - List entities = player.getNearbyEntities(radius, radius, radius); - for(Entity entity : entities) - { - if(entity instanceof Item) + List entities = player.getNearbyEntities(radius, radius, radius); + for(Entity entity : entities) { - Item item = (Item) entity; - if (!item.isDead() && item.getPickupDelay() <= 0) + if(entity instanceof Item) { - Map leftover = player.getInventory().addItem(item.getItemStack()); - if (!leftover.isEmpty()) + Item item = (Item) entity; + if (!item.isDead() && item.getPickupDelay() <= 0) { - ItemStack itemStack = leftover.get(0); - if (itemStack == null || itemStack.getAmount() == 0 || (itemFilter != null && itemFilter.isItemBlocked(itemStack))) + Map leftover = player.getInventory().addItem(item.getItemStack()); + if (!leftover.isEmpty()) { - continue; + ItemStack itemStack = leftover.get(0); + if (itemStack == null || itemStack.getAmount() == 0 || (itemFilter != null && itemFilter.isItemBlocked(itemStack))) + { + continue; + } + leftover = backpack.addItems(itemStack); + } + if (!leftover.isEmpty()) + { + item.setItemStack(leftover.get(0)); + } + else + { + item.remove(); } - leftover = backpack.addItems(itemStack); - } - if (!leftover.isEmpty()) - { - item.setItemStack(leftover.get(0)); - } - else - { - item.remove(); } } } - } + }); } } - public void close() - { - task.cancel(); + @Override + public void schedule() { + task = getScheduler().runTimer(this::run, plugin.getConfiguration().getFullInvCheckInterval(), plugin.getConfiguration().getFullInvCheckInterval()); + } + + public void close() { + cancel(); } /** diff --git a/Minepacks/src/at/pcgamingfreaks/Minepacks/Bukkit/Listener/ItemShortcut.java b/Minepacks/src/at/pcgamingfreaks/Minepacks/Bukkit/Listener/ItemShortcut.java index f44e5835..8b6e0694 100644 --- a/Minepacks/src/at/pcgamingfreaks/Minepacks/Bukkit/Listener/ItemShortcut.java +++ b/Minepacks/src/at/pcgamingfreaks/Minepacks/Bukkit/Listener/ItemShortcut.java @@ -25,7 +25,6 @@ import at.pcgamingfreaks.Minepacks.Bukkit.API.WorldBlacklistMode; import at.pcgamingfreaks.Minepacks.Bukkit.Minepacks; import at.pcgamingfreaks.Minepacks.Bukkit.Permissions; -import org.bukkit.Bukkit; import org.bukkit.ChatColor; import org.bukkit.Material; import org.bukkit.entity.Player; @@ -150,21 +149,22 @@ private void removeItem(Player player) public void onJoin(PlayerJoinEvent event) { if(plugin.isDisabled(event.getPlayer()) != WorldBlacklistMode.None) return; - Bukkit.getScheduler().runTaskLater(plugin, () -> addItem(event.getPlayer()), 2L); + Minepacks.getScheduler().runAtEntityLater(event.getPlayer(), task -> addItem(event.getPlayer()), 2L); } @EventHandler(priority = EventPriority.MONITOR) public void onSpawn(PlayerRespawnEvent event) { if(plugin.isDisabled(event.getPlayer()) != WorldBlacklistMode.None) return; - Bukkit.getScheduler().runTaskLater(plugin, () -> addItem(event.getPlayer()), 2L); + Minepacks.getScheduler().runAtEntityLater(event.getPlayer(), task -> addItem(event.getPlayer()), 2L); } @EventHandler(priority = EventPriority.MONITOR) public void onWorldChange(final PlayerChangedWorldEvent event) { - Bukkit.getScheduler().runTaskLater(plugin, () -> { - Player player = event.getPlayer(); + Player player = event.getPlayer(); + + Minepacks.getScheduler().runAtEntityLater(player, () -> { if(!player.isOnline()) return; if(player.hasPermission(Permissions.USE) && plugin.isDisabled(player) == WorldBlacklistMode.None) addItem(player); @@ -271,7 +271,7 @@ public void onItemClick(InventoryClickEvent event) } else if(event.getClick() == ClickType.RIGHT || event.getClick() == ClickType.SHIFT_RIGHT) { - plugin.getServer().getScheduler().runTask(plugin, () -> { player.performCommand(openCommand); }); + Minepacks.getScheduler().runAtEntity(player, task -> player.performCommand(openCommand)); event.setCancelled(true); } else if(event.getAction() == InventoryAction.MOVE_TO_OTHER_INVENTORY) diff --git a/Minepacks/src/at/pcgamingfreaks/Minepacks/Bukkit/Minepacks.java b/Minepacks/src/at/pcgamingfreaks/Minepacks/Bukkit/Minepacks.java index eae6c206..66d6b6cf 100644 --- a/Minepacks/src/at/pcgamingfreaks/Minepacks/Bukkit/Minepacks.java +++ b/Minepacks/src/at/pcgamingfreaks/Minepacks/Bukkit/Minepacks.java @@ -43,6 +43,8 @@ import at.pcgamingfreaks.Util.StringUtils; import at.pcgamingfreaks.Version; +import com.tcoded.folialib.FoliaLib; +import com.tcoded.folialib.impl.PlatformScheduler; import org.bukkit.Bukkit; import org.bukkit.GameMode; import org.bukkit.OfflinePlayer; @@ -65,6 +67,7 @@ public class Minepacks extends JavaPlugin implements MinepacksPlugin, IPlugin { @Getter private static Minepacks instance = null; + @Getter private static FoliaLib foliaLib = null; private ManagedUpdater updater = null; private Config config; @@ -110,6 +113,7 @@ public void onEnable() updater = new ManagedUpdater(this); instance = this; + foliaLib = new FoliaLib(this); config = new Config(this); updater.setChannel(config.getUpdateChannel()); if(config.useUpdater()) updater.update(); @@ -404,6 +408,9 @@ public ItemsCollector getItemsCollector() return collector; } + public static PlatformScheduler getScheduler() { + return foliaLib.getScheduler(); + } @Override public @NotNull Version getVersion() { diff --git a/Minepacks/src/at/pcgamingfreaks/Minepacks/Bukkit/SpecialInfoWorker/SpecialInfoBase.java b/Minepacks/src/at/pcgamingfreaks/Minepacks/Bukkit/SpecialInfoWorker/SpecialInfoBase.java index a71f7dd9..1daf2b28 100644 --- a/Minepacks/src/at/pcgamingfreaks/Minepacks/Bukkit/SpecialInfoWorker/SpecialInfoBase.java +++ b/Minepacks/src/at/pcgamingfreaks/Minepacks/Bukkit/SpecialInfoWorker/SpecialInfoBase.java @@ -17,7 +17,7 @@ package at.pcgamingfreaks.Minepacks.Bukkit.SpecialInfoWorker; -import org.bukkit.Bukkit; +import at.pcgamingfreaks.Minepacks.Bukkit.Minepacks; import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; import org.bukkit.event.Listener; @@ -40,7 +40,7 @@ public void onJoin(final PlayerJoinEvent event) { if(event.getPlayer().hasPermission(permission)) { - Bukkit.getScheduler().runTaskLater(plugin, () -> { + Minepacks.getScheduler().runAtEntityLater(event.getPlayer(), () -> { if(event.getPlayer().isOnline()) { sendMessage(event.getPlayer()); diff --git a/pom.xml b/pom.xml index cec87f92..e754a5d8 100644 --- a/pom.xml +++ b/pom.xml @@ -62,6 +62,10 @@ spigot-nexus https://hub.spigotmc.org/nexus/content/groups/public/ + + jitpack + https://jitpack.io + From 827f71f7d54424637ff61a3cdfd591ad0edf97bb Mon Sep 17 00:00:00 2001 From: adabugra <57899270+adabugra@users.noreply.github.com> Date: Mon, 23 Dec 2024 17:29:06 +0300 Subject: [PATCH 2/3] Update CooldownManager.java --- .../at/pcgamingfreaks/Minepacks/Bukkit/CooldownManager.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/Minepacks/src/at/pcgamingfreaks/Minepacks/Bukkit/CooldownManager.java b/Minepacks/src/at/pcgamingfreaks/Minepacks/Bukkit/CooldownManager.java index 315cf933..63512bfc 100644 --- a/Minepacks/src/at/pcgamingfreaks/Minepacks/Bukkit/CooldownManager.java +++ b/Minepacks/src/at/pcgamingfreaks/Minepacks/Bukkit/CooldownManager.java @@ -46,6 +46,7 @@ public CooldownManager(Minepacks plugin) addOnJoin = plugin.getConfiguration().isCommandCooldownAddOnJoinEnabled(); clearOnLeave = plugin.getConfiguration().isCommandCooldownClearOnLeaveEnabled(); plugin.getServer().getPluginManager().registerEvents(this, plugin); + schedule(); } public void close() @@ -111,4 +112,4 @@ public void run() public void schedule() { task = getScheduler().runTimer(this::run, plugin.getConfiguration().getCommandCooldownCleanupInterval(), plugin.getConfiguration().getCommandCooldownCleanupInterval()); } -} \ No newline at end of file +} From daf83be12a078e1957be8b167b988858f9a70f71 Mon Sep 17 00:00:00 2001 From: adabugra <57899270+adabugra@users.noreply.github.com> Date: Sat, 28 Dec 2024 22:32:06 +0300 Subject: [PATCH 3/3] Refactor to use FoliaLib scheduler for "Bukkit.getServer().getScheduler()" --- .../Minepacks/Bukkit/Command/DebugCommand.java | 12 ++++-------- .../Minepacks/Bukkit/Database/SQL.java | 3 +-- .../pcgamingfreaks/Minepacks/Bukkit/Minepacks.java | 2 +- 3 files changed, 6 insertions(+), 11 deletions(-) diff --git a/Minepacks/src/at/pcgamingfreaks/Minepacks/Bukkit/Command/DebugCommand.java b/Minepacks/src/at/pcgamingfreaks/Minepacks/Bukkit/Command/DebugCommand.java index f64e0947..3260b7e5 100644 --- a/Minepacks/src/at/pcgamingfreaks/Minepacks/Bukkit/Command/DebugCommand.java +++ b/Minepacks/src/at/pcgamingfreaks/Minepacks/Bukkit/Command/DebugCommand.java @@ -116,14 +116,10 @@ private void debugSystem(final @NotNull CommandSender commandSender) ItemStack slot = sender.getInventory().getItem(0); if(slot == null || slot.getAmount() == 0 || slot.getType() == Material.AIR) sender.getInventory().setItem(0, new ItemStack(Material.ACACIA_BOAT)); - Bukkit.getServer().getScheduler().runTaskLater(plugin, () -> { - sender.performCommand("backpack"); - }, 5*20L); - Bukkit.getServer().getScheduler().runTaskLater(plugin, () -> { - Bukkit.getPluginManager().callEvent(new ClickEvent(sender.getOpenInventory(), InventoryType.SlotType.QUICKBAR, InventoryUtils.getPlayerTopInventory(sender).getSize() + 27, ClickType.LEFT, InventoryAction.PICKUP_ALL)); - }, 10*20L); - Bukkit.getServer().getScheduler().runTaskLater(plugin, sender::closeInventory, 20*20L); - Bukkit.getServer().getScheduler().runTaskLater(plugin, () -> { + Minepacks.getScheduler().runAtEntityLater(sender, () -> sender.performCommand("backpack"), 5*20L); + Minepacks.getScheduler().runAtEntityLater(sender, () -> Bukkit.getPluginManager().callEvent(new ClickEvent(sender.getOpenInventory(), InventoryType.SlotType.QUICKBAR, InventoryUtils.getPlayerTopInventory(sender).getSize() + 27, ClickType.LEFT, InventoryAction.PICKUP_ALL)), 10*20L); + Minepacks.getScheduler().runAtEntityLater(sender, sender::closeInventory, 20*20L); + Minepacks.getScheduler().runLater(() -> { try { writer.flush(); diff --git a/Minepacks/src/at/pcgamingfreaks/Minepacks/Bukkit/Database/SQL.java b/Minepacks/src/at/pcgamingfreaks/Minepacks/Bukkit/Database/SQL.java index ede2229f..439b2126 100644 --- a/Minepacks/src/at/pcgamingfreaks/Minepacks/Bukkit/Database/SQL.java +++ b/Minepacks/src/at/pcgamingfreaks/Minepacks/Bukkit/Database/SQL.java @@ -24,7 +24,6 @@ import at.pcgamingfreaks.Minepacks.Bukkit.Minepacks; import at.pcgamingfreaks.Utils; -import org.bukkit.Bukkit; import org.bukkit.OfflinePlayer; import org.bukkit.entity.Player; import org.bukkit.inventory.ItemStack; @@ -172,7 +171,7 @@ protected String replacePlaceholders(@Language("SQL") String query) protected void runStatementAsync(final String query, final Object... args) { - Bukkit.getServer().getScheduler().runTaskAsynchronously(plugin, () -> runStatement(query, args)); + Minepacks.getScheduler().runAsync(task -> runStatement(query, args)); } protected void runStatement(final String query, final Object... args) diff --git a/Minepacks/src/at/pcgamingfreaks/Minepacks/Bukkit/Minepacks.java b/Minepacks/src/at/pcgamingfreaks/Minepacks/Bukkit/Minepacks.java index 66d6b6cf..8d203ade 100644 --- a/Minepacks/src/at/pcgamingfreaks/Minepacks/Bukkit/Minepacks.java +++ b/Minepacks/src/at/pcgamingfreaks/Minepacks/Bukkit/Minepacks.java @@ -262,7 +262,7 @@ private void unload() HandlerList.unregisterAll(this); // Stop the listeners if(cooldownManager != null) cooldownManager.close(); cooldownManager = null; - getServer().getScheduler().cancelTasks(this); // Kill all running task + getScheduler().cancelAllTasks(); // Kill all running task itemFilter = null; }