Skip to content

Commit

Permalink
implement Folia support
Browse files Browse the repository at this point in the history
  • Loading branch information
HSGamer committed Jun 24, 2024
1 parent 151e35c commit 9396ab0
Show file tree
Hide file tree
Showing 14 changed files with 64 additions and 43 deletions.
5 changes: 5 additions & 0 deletions build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,10 @@ dependencies {
implementation(libs.nashorn)
implementation(libs.adventure.platform)
implementation(libs.adventure.minimessage)
implementation(libs.minelib.scheduler.global)
implementation(libs.minelib.scheduler.async)
implementation(libs.minelib.scheduler.entity)
implementation(libs.minelib.scheduler.canceller)

compileOnly("org.jetbrains:annotations:23.0.0")
}
Expand All @@ -47,6 +51,7 @@ tasks {
relocate("org.objectweb.asm", "com.extendedclip.deluxemenus.libs.asm")
relocate("org.openjdk.nashorn", "com.extendedclip.deluxemenus.libs.nashorn")
relocate("net.kyori", "com.extendedclip.deluxemenus.libs.adventure")
relocate("io.github.projectunified.minelib", "com.extendedclip.deluxemenus.libs.minelib")
archiveFileName.set("DeluxeMenus-${rootProject.version}.jar")
}
java {
Expand Down
5 changes: 5 additions & 0 deletions gradle/libs.versions.toml
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ score = "4.23.10.8"
nashorn = "15.4"
adventure-platform = "4.3.3"
adventure-minimessage = "4.17.0"
minelib = "1.2.1"

[libraries]
# Compile only
Expand All @@ -31,3 +32,7 @@ score = { module = "com.github.Ssomar-Developement:SCore", version.ref = "score"
nashorn = { module = "org.openjdk.nashorn:nashorn-core", version.ref = "nashorn" }
adventure-platform = { module = "net.kyori:adventure-platform-bukkit", version.ref = "adventure-platform" }
adventure-minimessage = { module = "net.kyori:adventure-text-minimessage", version.ref = "adventure-minimessage" }
minelib-scheduler-global = { module = "io.github.projectunified:minelib-scheduler-global", version.ref = "minelib" }
minelib-scheduler-async = { module = "io.github.projectunified:minelib-scheduler-async", version.ref = "minelib" }
minelib-scheduler-entity = { module = "io.github.projectunified:minelib-scheduler-entity", version.ref = "minelib" }
minelib-scheduler-canceller = { module = "io.github.projectunified:minelib-scheduler-canceller", version.ref = "minelib" }
3 changes: 2 additions & 1 deletion src/main/java/com/extendedclip/deluxemenus/DeluxeMenus.java
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@
import com.extendedclip.deluxemenus.utils.VersionHelper;
import com.google.common.io.ByteArrayDataOutput;
import com.google.common.io.ByteStreams;
import io.github.projectunified.minelib.scheduler.canceller.TaskCanceller;
import me.clip.placeholderapi.PlaceholderAPIPlugin;
import net.kyori.adventure.platform.bukkit.BukkitAudiences;
import net.kyori.adventure.text.Component;
Expand Down Expand Up @@ -171,7 +172,7 @@ public void onEnable() {
public void onDisable() {
Bukkit.getMessenger().unregisterOutgoingPluginChannel(this, "BungeeCord");

Bukkit.getScheduler().cancelTasks(this);
TaskCanceller.get(this).cancelAll();

if (this.adventure != null) {
this.adventure.close();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,6 @@
import org.bukkit.Sound;
import org.bukkit.entity.Player;
import org.bukkit.event.player.PlayerCommandPreprocessEvent;
import org.bukkit.scheduler.BukkitRunnable;
import org.jetbrains.annotations.NotNull;

import java.util.Arrays;
Expand All @@ -24,7 +23,7 @@
import java.util.UUID;
import java.util.logging.Level;

public class ClickActionTask extends BukkitRunnable {
public class ClickActionTask implements Runnable {

private final DeluxeMenus plugin;
private final UUID uuid;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,8 @@
import java.util.regex.Matcher;
import java.util.regex.Pattern;

import io.github.projectunified.minelib.scheduler.entity.EntityScheduler;
import io.github.projectunified.minelib.scheduler.global.GlobalScheduler;
import net.kyori.adventure.text.Component;
import net.kyori.adventure.text.TextComponent;
import net.kyori.adventure.text.TextReplacementConfig;
Expand Down Expand Up @@ -186,8 +188,10 @@ public boolean onCommand(
true
);

EntityScheduler scheduler = EntityScheduler.get(plugin, holder.getViewer());

if (action.hasDelay()) {
actionTask.runTaskLater(plugin, action.getDelay(holder));
scheduler.runLater(actionTask, action.getDelay(holder));

plugin.sms(
sender,
Expand All @@ -197,7 +201,7 @@ public boolean onCommand(
return true;
}

actionTask.runTask(plugin);
scheduler.run(actionTask);

plugin.sms(
sender,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,8 @@
import java.util.regex.Pattern;
import java.util.stream.Collectors;

import io.github.projectunified.minelib.scheduler.entity.EntityScheduler;
import io.github.projectunified.minelib.scheduler.global.GlobalScheduler;
import org.bukkit.DyeColor;
import org.bukkit.Location;
import org.bukkit.Material;
Expand Down Expand Up @@ -1488,12 +1490,14 @@ public void onClick(@NotNull final MenuHolder holder) {
holder.parsePlaceholdersAfterArguments()
);

EntityScheduler scheduler = EntityScheduler.get(plugin, holder.getViewer());

if (action.hasDelay()) {
actionTask.runTaskLater(plugin, action.getDelay(holder));
scheduler.runLater(actionTask, action.getDelay(holder));
continue;
}

actionTask.runTask(plugin);
scheduler.run(actionTask);
}
}
};
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@

import com.extendedclip.deluxemenus.DeluxeMenus;
import com.extendedclip.deluxemenus.utils.DebugLevel;
import io.github.projectunified.minelib.scheduler.global.GlobalScheduler;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.entity.EntityPickupItemEvent;
Expand Down Expand Up @@ -53,8 +54,7 @@ private void onDrop(@NotNull final PlayerDropItemEvent event) {

@EventHandler
private void onLogin(@NotNull final PlayerLoginEvent event) {
plugin.getServer().getScheduler().runTaskLater(
plugin,
GlobalScheduler.get(plugin).runLater(
() -> {
for (final ItemStack itemStack : event.getPlayer().getInventory().getContents()) {
if (itemStack == null) continue;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,13 +4,14 @@
import com.extendedclip.deluxemenus.cache.SimpleCache;
import com.extendedclip.deluxemenus.utils.DebugLevel;
import java.util.Map;
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.ExecutionException;
import java.util.logging.Level;

import io.github.projectunified.minelib.scheduler.global.GlobalScheduler;
import net.Indyuce.mmoitems.MMOItems;
import net.Indyuce.mmoitems.api.Type;
import org.bukkit.Bukkit;
import org.bukkit.Material;
import org.bukkit.inventory.ItemStack;
import org.jetbrains.annotations.NotNull;
Expand Down Expand Up @@ -42,17 +43,19 @@ public ItemStack getItem(@NotNull final String... arguments) {

ItemStack mmoItem = null;
try {
mmoItem = Bukkit.getScheduler().callSyncMethod(DeluxeMenus.getInstance(), () -> {
CompletableFuture<ItemStack> future = new CompletableFuture<>();
GlobalScheduler.get(DeluxeMenus.getInstance()).run(() -> {
ItemStack item = MMOItems.plugin.getItem(itemType, splitArgs[1]);

if (item == null) {
return new ItemStack(Material.STONE, 1);
future.complete(new ItemStack(Material.STONE, 1));
return;
}

cache.put(arguments[0], item);

return item;
}).get();
future.complete(item);
});
mmoItem = future.get();
} catch (InterruptedException | ExecutionException e) {
DeluxeMenus.debug(DebugLevel.HIGHEST, Level.SEVERE, "Error getting MMOItem synchronously.");
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,8 @@
import java.util.Optional;
import java.util.UUID;
import java.util.concurrent.TimeUnit;

import io.github.projectunified.minelib.scheduler.global.GlobalScheduler;
import org.bukkit.Bukkit;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
Expand Down Expand Up @@ -98,7 +100,7 @@ public void onClose(InventoryCloseEvent event) {

if (Menu.isInMenu(player)) {
Menu.closeMenu(player, false);
Bukkit.getScheduler().runTaskLater(plugin, () -> {
GlobalScheduler.get(plugin).runLater(() -> {
Menu.cleanInventory(player, plugin.getMenuItemMarker());
player.updateInventory();
}, 3L);
Expand Down
8 changes: 5 additions & 3 deletions src/main/java/com/extendedclip/deluxemenus/menu/Menu.java
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,8 @@
import java.util.Map.Entry;
import java.util.logging.Level;

import io.github.projectunified.minelib.scheduler.async.AsyncScheduler;
import io.github.projectunified.minelib.scheduler.global.GlobalScheduler;
import me.clip.placeholderapi.util.Msg;
import org.bukkit.Bukkit;
import org.bukkit.command.Command;
Expand Down Expand Up @@ -160,7 +162,7 @@ public static void closeMenu(final @NotNull Player player, final boolean close,
}

if (close) {
Bukkit.getScheduler().runTask(DeluxeMenus.getInstance(), () -> {
GlobalScheduler.get(DeluxeMenus.getInstance()).run(() -> {
player.closeInventory();
cleanInventory(player, DeluxeMenus.getInstance().getMenuItemMarker());
});
Expand Down Expand Up @@ -347,7 +349,7 @@ public void openMenu(final @NotNull Player viewer, final @Nullable Map<String, S
return;
}

Bukkit.getScheduler().runTaskAsynchronously(DeluxeMenus.getInstance(), () -> {
AsyncScheduler.get(DeluxeMenus.getInstance()).run(() -> {

Set<MenuItem> activeItems = new HashSet<>();

Expand Down Expand Up @@ -436,7 +438,7 @@ public void openMenu(final @NotNull Player viewer, final @Nullable Map<String, S

final boolean updatePlaceholders = update;

Bukkit.getScheduler().runTask(DeluxeMenus.getInstance(), () -> {
GlobalScheduler.get(DeluxeMenus.getInstance()).run(() -> {
if (isInMenu(holder.getViewer())) {
closeMenu(holder.getViewer(), false);
}
Expand Down
17 changes: 9 additions & 8 deletions src/main/java/com/extendedclip/deluxemenus/menu/MenuHolder.java
Original file line number Diff line number Diff line change
Expand Up @@ -3,13 +3,14 @@
import com.extendedclip.deluxemenus.DeluxeMenus;
import com.extendedclip.deluxemenus.menu.options.MenuOptions;
import com.extendedclip.deluxemenus.utils.StringUtils;
import org.bukkit.Bukkit;
import io.github.projectunified.minelib.scheduler.async.AsyncScheduler;
import io.github.projectunified.minelib.scheduler.common.task.Task;
import io.github.projectunified.minelib.scheduler.global.GlobalScheduler;
import org.bukkit.entity.Player;
import org.bukkit.inventory.Inventory;
import org.bukkit.inventory.InventoryHolder;
import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.meta.ItemMeta;
import org.bukkit.scheduler.BukkitRunnable;
import org.bukkit.scheduler.BukkitTask;
import org.jetbrains.annotations.NotNull;

Expand All @@ -27,7 +28,7 @@ public class MenuHolder implements InventoryHolder {
private Player placeholderPlayer;
private String menuName;
private Set<MenuItem> activeItems;
private BukkitTask updateTask = null;
private Task updateTask = null;
private Inventory inventory;
private boolean updating;
private boolean parsePlaceholdersInArguments;
Expand All @@ -50,7 +51,7 @@ public String getViewerName() {
return viewer.getName();
}

public BukkitTask getUpdateTask() {
public Task getUpdateTask() {
return updateTask;
}

Expand Down Expand Up @@ -135,7 +136,7 @@ public void refreshMenu() {

stopPlaceholderUpdate();

Bukkit.getScheduler().runTaskAsynchronously(DeluxeMenus.getInstance(), () -> {
AsyncScheduler.get(DeluxeMenus.getInstance()).run(() -> {

final Set<MenuItem> active = new HashSet<>();

Expand Down Expand Up @@ -173,7 +174,7 @@ public void refreshMenu() {
Menu.closeMenu(getViewer(), true);
}

Bukkit.getScheduler().runTask(DeluxeMenus.getInstance(), () -> {
GlobalScheduler.get(DeluxeMenus.getInstance()).run(() -> {

boolean update = false;

Expand Down Expand Up @@ -221,7 +222,7 @@ public void startUpdatePlaceholdersTask() {
stopPlaceholderUpdate();
}

updateTask = new BukkitRunnable() {
updateTask = AsyncScheduler.get(DeluxeMenus.getInstance()).runTimer(new Runnable() {

@Override
public void run() {
Expand Down Expand Up @@ -286,7 +287,7 @@ public void run() {
}
}

}.runTaskTimerAsynchronously(DeluxeMenus.getInstance(), 20L,
}, 20L,
20L * Menu.getMenuByName(menuName)
.map(Menu::options)
.map(MenuOptions::updateInterval)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,8 @@
import java.util.stream.Collectors;
import java.util.zip.GZIPOutputStream;
import javax.net.ssl.HttpsURLConnection;

import io.github.projectunified.minelib.scheduler.global.GlobalScheduler;
import org.bukkit.Bukkit;
import org.bukkit.configuration.file.YamlConfiguration;
import org.bukkit.entity.Player;
Expand Down Expand Up @@ -87,7 +89,7 @@ public Metrics(JavaPlugin plugin, int serviceId) {
enabled,
this::appendPlatformData,
this::appendServiceData,
submitDataTask -> Bukkit.getScheduler().runTask(plugin, submitDataTask),
submitDataTask -> GlobalScheduler.get(plugin).run(submitDataTask),
plugin::isEnabled,
(message, error) -> this.plugin.getLogger().log(Level.WARNING, message, error),
(message) -> this.plugin.getLogger().log(Level.INFO, message),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,14 +9,16 @@
import java.net.URL;
import java.util.logging.Level;
import java.util.regex.Pattern;

import io.github.projectunified.minelib.scheduler.async.AsyncScheduler;
import io.github.projectunified.minelib.scheduler.global.GlobalScheduler;
import net.kyori.adventure.text.TextReplacementConfig;
import org.bukkit.Bukkit;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.EventPriority;
import org.bukkit.event.Listener;
import org.bukkit.event.player.PlayerJoinEvent;
import org.bukkit.scheduler.BukkitRunnable;
import org.jetbrains.annotations.NotNull;

public class UpdateChecker implements Listener {
Expand All @@ -34,21 +36,11 @@ public class UpdateChecker implements Listener {
public UpdateChecker(final @NotNull DeluxeMenus instance) {
plugin = instance;

new BukkitRunnable() {
@Override
public void run() {
if (check()) {
new BukkitRunnable() {

@Override
public void run() {
register();
}
}.runTask(plugin);
}
AsyncScheduler.get(plugin).run(() -> {
if (check()) {
GlobalScheduler.get(plugin).run(this::register);
}

}.runTaskAsynchronously(plugin);
});
}

private void register() {
Expand Down
1 change: 1 addition & 0 deletions src/main/resources/plugin.yml
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ version: ${version}
authors: [ HelpChat ]
softdepend: [ PlaceholderAPI, Vault, HeadDatabase, ItemsAdder, Oraxen, ExecutableItems, ExecutableBlocks, Score ]
description: All in one inventory menu system
folia-supported: true
commands:
deluxemenus:
description: DeluxeMenus main commands
Expand Down

0 comments on commit 9396ab0

Please sign in to comment.