diff --git a/api/build.gradle.kts b/api/build.gradle.kts index e136d83..bf0426d 100644 --- a/api/build.gradle.kts +++ b/api/build.gradle.kts @@ -18,6 +18,7 @@ repositories { maven("https://repo.dmulloy2.net/repository/public/") maven("https://repo.codemc.io/repository/maven-snapshots/") maven("https://repo.codemc.io/repository/maven-public/") + maven("https://nexuslite.gcnt.net/repos/other/") } dependencies { @@ -30,6 +31,7 @@ dependencies { compileOnly(libs.bundles.adventure) compileOnly(libs.configurate) compileOnly(libs.nbtapi) + compileOnly(libs.folialib) } tasks { diff --git a/api/src/main/java/de/skyslycer/hmcwraps/HMCWraps.java b/api/src/main/java/de/skyslycer/hmcwraps/HMCWraps.java index fe753e8..2451783 100644 --- a/api/src/main/java/de/skyslycer/hmcwraps/HMCWraps.java +++ b/api/src/main/java/de/skyslycer/hmcwraps/HMCWraps.java @@ -1,5 +1,6 @@ package de.skyslycer.hmcwraps; +import com.tcoded.folialib.FoliaLib; import de.skyslycer.hmcwraps.actions.ActionHandler; import de.skyslycer.hmcwraps.itemhook.HookAccessor; import de.skyslycer.hmcwraps.messages.MessageHandler; @@ -11,13 +12,14 @@ import de.skyslycer.hmcwraps.wrap.CollectionHelper; import de.skyslycer.hmcwraps.wrap.Wrapper; import de.skyslycer.hmcwraps.wrap.WrapsLoader; -import java.nio.file.Path; -import java.util.List; -import java.util.UUID; import net.kyori.adventure.text.Component; import org.bukkit.entity.Player; import org.bukkit.plugin.Plugin; +import java.nio.file.Path; +import java.util.List; +import java.util.UUID; + public interface HMCWraps extends Plugin { Path PLUGIN_PATH = Path.of("plugins", "HMCWraps"); @@ -132,4 +134,11 @@ public interface HMCWraps extends Plugin { */ HookAccessor getHookAccessor(); + /** + * Get the FoliaLib instance. + * + * @return The FoliaLib instance + */ + FoliaLib getFoliaLib(); + } diff --git a/api/src/main/java/de/skyslycer/hmcwraps/preview/floating/FloatingPreview.java b/api/src/main/java/de/skyslycer/hmcwraps/preview/floating/FloatingPreview.java index c9b4f22..fa94ebf 100644 --- a/api/src/main/java/de/skyslycer/hmcwraps/preview/floating/FloatingPreview.java +++ b/api/src/main/java/de/skyslycer/hmcwraps/preview/floating/FloatingPreview.java @@ -8,6 +8,7 @@ import com.github.retrooper.packetevents.protocol.player.EquipmentSlot; import com.github.retrooper.packetevents.util.Vector3f; import com.github.retrooper.packetevents.wrapper.play.server.*; +import com.tcoded.folialib.wrapper.task.WrappedTask; import de.skyslycer.hmcwraps.HMCWraps; import de.skyslycer.hmcwraps.preview.Preview; import de.skyslycer.hmcwraps.util.PlayerUtil; @@ -16,13 +17,10 @@ import io.github.retrooper.packetevents.util.SpigotReflectionUtil; import net.md_5.bungee.api.ChatMessageType; import net.md_5.bungee.api.chat.TextComponent; -import org.bukkit.Bukkit; import org.bukkit.entity.Player; import org.bukkit.inventory.ItemStack; -import org.bukkit.scheduler.BukkitTask; import java.util.List; -import java.util.Objects; import java.util.Optional; import java.util.UUID; import java.util.function.Consumer; @@ -34,8 +32,8 @@ public class FloatingPreview implements Preview { private final ItemStack item; private final Consumer onClose; private final HMCWraps plugin; - private BukkitTask task; - private BukkitTask cancelTask; + private WrappedTask task; + private WrappedTask cancelTask; public FloatingPreview(Player player, ItemStack item, Consumer onClose, HMCWraps plugin) { this.player = player; @@ -52,21 +50,19 @@ public void preview() { sendTeleportPacket(); sendEquipPacket(); - task = Bukkit.getScheduler() - .runTaskTimerAsynchronously(plugin, new RotateRunnable(player, entityId, plugin), 3, 1); + task = plugin.getFoliaLib().getImpl().runTimerAsync(new RotateRunnable(player, entityId, plugin), 3, 1); - cancelTask = Bukkit.getScheduler() - .runTaskLater(plugin, () -> plugin.getPreviewManager().remove(player.getUniqueId(), true), + cancelTask = plugin.getFoliaLib().getImpl().runAtEntityLater(player, () -> plugin.getPreviewManager().remove(player.getUniqueId(), true), plugin.getConfiguration().getPreview().getDuration() * 20L); } public void cancel(boolean open) { - Optional.of(task).ifPresent(BukkitTask::cancel); - Optional.of(cancelTask).ifPresent(BukkitTask::cancel); + Optional.of(task).ifPresent(WrappedTask::cancel); + Optional.of(cancelTask).ifPresent(WrappedTask::cancel); if (open && onClose != null) { onClose.accept(player); } - Bukkit.getScheduler().runTaskLater(plugin, () -> { + plugin.getFoliaLib().getImpl().runAtEntityLater(player, () -> { PacketEvents.getAPI().getPlayerManager().sendPacket(player, new WrapperPlayServerDestroyEntities(entityId)); if (plugin.getConfiguration().getPreview().getSneakCancel().isActionBar()) { player.spigot().sendMessage(ChatMessageType.ACTION_BAR, TextComponent.fromLegacyText(" ")); diff --git a/api/src/main/java/de/skyslycer/hmcwraps/preview/hand/HandPreview.java b/api/src/main/java/de/skyslycer/hmcwraps/preview/hand/HandPreview.java index 0fafd99..ce06e7d 100644 --- a/api/src/main/java/de/skyslycer/hmcwraps/preview/hand/HandPreview.java +++ b/api/src/main/java/de/skyslycer/hmcwraps/preview/hand/HandPreview.java @@ -2,6 +2,7 @@ import com.github.retrooper.packetevents.PacketEvents; import com.github.retrooper.packetevents.wrapper.play.server.WrapperPlayServerSetSlot; +import com.tcoded.folialib.wrapper.task.WrappedTask; import de.skyslycer.hmcwraps.HMCWraps; import de.skyslycer.hmcwraps.messages.Messages; import de.skyslycer.hmcwraps.preview.Preview; @@ -9,10 +10,8 @@ import io.github.retrooper.packetevents.util.SpigotReflectionUtil; import net.md_5.bungee.api.ChatMessageType; import net.md_5.bungee.api.chat.TextComponent; -import org.bukkit.Bukkit; import org.bukkit.entity.Player; import org.bukkit.inventory.ItemStack; -import org.bukkit.scheduler.BukkitTask; import java.util.Optional; import java.util.function.Consumer; @@ -23,8 +22,8 @@ public class HandPreview implements Preview { private final ItemStack item; private final Consumer onClose; private final HMCWraps plugin; - private BukkitTask task; - private BukkitTask cancelTask; + private WrappedTask task; + private WrappedTask cancelTask; private ItemStack oldItem; private int slot = 0; @@ -42,23 +41,22 @@ public void preview() { slot = 36 + player.getInventory().getHeldItemSlot(); sendFakeItem(item); - task = Bukkit.getScheduler().runTaskTimerAsynchronously(plugin, () -> { + task = plugin.getFoliaLib().getImpl().runTimerAsync(() -> { if (plugin.getConfiguration().getPreview().getSneakCancel().isActionBar() && plugin.getConfiguration().getPreview().getSneakCancel().isEnabled()) { player.spigot().sendMessage(ChatMessageType.ACTION_BAR, StringUtil.parse(player, plugin.getMessageHandler().get(Messages.PREVIEW_BAR))); } }, 3, 1); - cancelTask = Bukkit.getScheduler() - .runTaskLater(plugin, () -> plugin.getPreviewManager().remove(player.getUniqueId(), true), + cancelTask = plugin.getFoliaLib().getImpl().runAtEntityLater(player, () -> plugin.getPreviewManager().remove(player.getUniqueId(), true), plugin.getConfiguration().getPreview().getDuration() * 20L); } public void cancel(boolean open) { - Optional.of(task).ifPresent(BukkitTask::cancel); - Optional.of(cancelTask).ifPresent(BukkitTask::cancel); + Optional.of(task).ifPresent(WrappedTask::cancel); + Optional.of(cancelTask).ifPresent(WrappedTask::cancel); if (open && onClose != null) { onClose.accept(player); } - Bukkit.getScheduler().runTaskLater(plugin, () -> { + plugin.getFoliaLib().getImpl().runAtEntityLater(player, () -> { sendFakeItem(oldItem); if (plugin.getConfiguration().getPreview().getSneakCancel().isActionBar()) { player.spigot().sendMessage(ChatMessageType.ACTION_BAR, TextComponent.fromLegacyText(" ")); diff --git a/api/src/main/java/de/skyslycer/hmcwraps/serialization/item/SerializableItem.java b/api/src/main/java/de/skyslycer/hmcwraps/serialization/item/SerializableItem.java index a1f5304..cd21cbe 100644 --- a/api/src/main/java/de/skyslycer/hmcwraps/serialization/item/SerializableItem.java +++ b/api/src/main/java/de/skyslycer/hmcwraps/serialization/item/SerializableItem.java @@ -7,14 +7,16 @@ import de.tr7zw.changeme.nbtapi.NBTItem; import de.tr7zw.changeme.nbtapi.NbtApiException; import dev.triumphteam.gui.builder.item.ItemBuilder; -import org.bukkit.*; +import org.bukkit.Bukkit; +import org.bukkit.Color; +import org.bukkit.Material; +import org.bukkit.NamespacedKey; import org.bukkit.enchantments.Enchantment; import org.bukkit.entity.Player; import org.bukkit.inventory.ItemFlag; import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.meta.Damageable; import org.bukkit.inventory.meta.SkullMeta; -import org.bukkit.profile.PlayerProfile; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import org.spongepowered.configurate.objectmapping.ConfigSerializable; diff --git a/api/src/main/java/de/skyslycer/hmcwraps/serialization/wrap/PhysicalWrap.java b/api/src/main/java/de/skyslycer/hmcwraps/serialization/wrap/PhysicalWrap.java index 84b47bb..b3ec4fa 100644 --- a/api/src/main/java/de/skyslycer/hmcwraps/serialization/wrap/PhysicalWrap.java +++ b/api/src/main/java/de/skyslycer/hmcwraps/serialization/wrap/PhysicalWrap.java @@ -5,7 +5,6 @@ import org.spongepowered.configurate.objectmapping.ConfigSerializable; import java.util.List; -import java.util.Map; @ConfigSerializable public class PhysicalWrap extends SerializableItem { diff --git a/build.gradle.kts b/build.gradle.kts index 1ad31db..4d3223c 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -8,7 +8,7 @@ plugins { } group = "de.skyslycer" -version = "1.4.4" +version = "1.4.5" val shadePattern = "$group.hmcwraps.shade" @@ -24,6 +24,7 @@ repositories { maven("https://repo.bytecode.space/repository/maven-public/") maven("https://mvn.lumine.io/repository/maven-public/") maven("https://repo.codemc.io/repository/maven-public/") + maven("https://nexuslite.gcnt.net/repos/other/") } dependencies { @@ -36,6 +37,7 @@ dependencies { implementation(libs.particles) implementation(libs.gui) implementation(libs.nbtapi) + implementation(libs.folialib) implementation(libs.configurate) { exclude("org.yaml") } @@ -70,11 +72,12 @@ tasks { relocate("org.intellij", "$shadePattern.annotations") relocate("org.jetbrains", "$shadePattern.annotations") relocate("io.leangen", "$shadePattern.leangen") + relocate("com.tcoded.folialib", "$shadePattern.folialib") exclude("com/google/**") - exclude("assets/mappings/block/**") - exclude("assets/mappings/particle/**") - exclude("assets/mappings/potion/**") + //exclude("assets/mappings/block/**") + //exclude("assets/mappings/particle/**") + //exclude("assets/mappings/potion/**") exclude("lamp_pt.properties") exclude("lamp_it.properties") exclude("lamp_fr.properties") diff --git a/settings.gradle.kts b/settings.gradle.kts index 62b73e0..7e32ae5 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -12,7 +12,7 @@ dependencyResolutionManagement { library("annotations", "org.jetbrains:annotations:24.1.0") } create("libs") { - library("packets", "com.github.retrooper.packetevents:spigot:2.2.1") + library("packets", "com.github.retrooper.packetevents:spigot:2.3.0") library("particles", "com.owen1212055:particlehelper:1.1.0-SNAPSHOT") library("configupdater", "com.github.BG-Software-LLC:CommentedConfiguration:-SNAPSHOT") library("bstats", "org.bstats:bstats-bukkit:3.0.2") @@ -20,6 +20,7 @@ dependencyResolutionManagement { library("configurate", "org.spongepowered:configurate-yaml:4.1.2") library("mclogs", "com.github.aternosorg:mclogs-java:v2.2.0") library("nbtapi", "de.tr7zw:item-nbt-api:2.12.0") + library("folialib", "com.tcoded:FoliaLib:0.3.1") library("adventure-api", "net.kyori", "adventure-api").versionRef("adventure") library("minimessage", "net.kyori", "adventure-text-minimessage").versionRef("adventure") diff --git a/src/main/java/de/skyslycer/hmcwraps/HMCWrapsPlugin.java b/src/main/java/de/skyslycer/hmcwraps/HMCWrapsPlugin.java index 0e925d8..0e73ca9 100644 --- a/src/main/java/de/skyslycer/hmcwraps/HMCWrapsPlugin.java +++ b/src/main/java/de/skyslycer/hmcwraps/HMCWrapsPlugin.java @@ -2,6 +2,8 @@ import com.bgsoftware.common.config.CommentedConfiguration; import com.github.retrooper.packetevents.PacketEvents; +import com.tcoded.folialib.FoliaLib; +import com.tcoded.folialib.wrapper.task.WrappedTask; import de.skyslycer.hmcwraps.actions.ActionHandler; import de.skyslycer.hmcwraps.actions.register.DefaultActionRegister; import de.skyslycer.hmcwraps.commands.CommandRegister; @@ -33,7 +35,6 @@ import org.bukkit.Bukkit; import org.bukkit.entity.Player; import org.bukkit.plugin.java.JavaPlugin; -import org.bukkit.scheduler.BukkitTask; import org.spongepowered.configurate.ConfigurationOptions; import org.spongepowered.configurate.yaml.YamlConfigurationLoader; @@ -64,7 +65,8 @@ public class HMCWrapsPlugin extends JavaPlugin implements HMCWraps { private HookAccessor hookAccessor; private Config config; private MessageHandler messageHandler; - private BukkitTask checkTask; + private WrappedTask checkTask; + private FoliaLib foliaLib; private final Map wrapGui = new HashMap<>(); @Override @@ -79,6 +81,7 @@ public void onLoad() { @Override public void onEnable() { + foliaLib = new FoliaLib(this); checkDependency("PlaceholderAPI", false); if (checkDependency("ItemsAdder", false)) { hooks.add(new ItemsAdderItemHook()); @@ -225,7 +228,7 @@ private void startCheckTask() { if (config.getPermissions().getInventoryCheckInterval() == -1) { return; } - checkTask = Bukkit.getScheduler().runTaskTimerAsynchronously(this, () -> Bukkit.getOnlinePlayers().forEach(player -> { + checkTask = foliaLib.getImpl().runTimerAsync(() -> Bukkit.getOnlinePlayers().forEach(player -> { for (int i = 0; i < player.getInventory().getContents().length - 1; i++) { var item = player.getInventory().getItem(i); if (item == null || item.getType().isAir()) { @@ -237,7 +240,7 @@ private void startCheckTask() { } if (!PermissionUtil.hasPermission(this, wrap, item, player)) { int finalI = i; // ;( - Bukkit.getScheduler().runTask(this, () -> { + getFoliaLib().getImpl().runAtEntity(player, (ignored) -> { var newItem = getWrapper().removeWrap(item, player, getConfiguration().getPermissions().isPermissionPhysical() && (wrap.getPhysical() != null && wrap.getPhysical().isKeepAfterUnwrap())); player.getInventory().setItem(finalI, newItem); @@ -334,4 +337,9 @@ public Map getWrapGui() { return wrapGui; } + @Override + public FoliaLib getFoliaLib() { + return foliaLib; + } + } diff --git a/src/main/java/de/skyslycer/hmcwraps/commands/CommandRegister.java b/src/main/java/de/skyslycer/hmcwraps/commands/CommandRegister.java index 845da8f..d9daefa 100644 --- a/src/main/java/de/skyslycer/hmcwraps/commands/CommandRegister.java +++ b/src/main/java/de/skyslycer/hmcwraps/commands/CommandRegister.java @@ -95,7 +95,7 @@ public static void registerCommands(HMCWrapsPlugin plugin) { .replace("", command.getUsage()).replace("", command.getDescription()) : null; }); commandHandler.register(new WrapCommand(plugin), new DebugCommand(plugin)); - commandHandler.registerBrigadier(); + //commandHandler.registerBrigadier(); } } diff --git a/src/main/java/de/skyslycer/hmcwraps/commands/DebugCommand.java b/src/main/java/de/skyslycer/hmcwraps/commands/DebugCommand.java index c955a75..f8ae633 100644 --- a/src/main/java/de/skyslycer/hmcwraps/commands/DebugCommand.java +++ b/src/main/java/de/skyslycer/hmcwraps/commands/DebugCommand.java @@ -11,7 +11,6 @@ import net.kyori.adventure.text.event.ClickEvent; import net.kyori.adventure.text.event.HoverEvent; import net.kyori.adventure.text.format.NamedTextColor; -import org.bukkit.Bukkit; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; import revxrsal.commands.annotation.*; @@ -131,10 +130,10 @@ private void uploadAndSend(CommandSender sender, Debuggable debuggable, boolean plugin.getLogger().info("Debug information (" + debuggable.getClass().getSimpleName() + "): \n" + DebugCreator.debugToJson(debuggable)); StringUtil.sendComponent(sender, Component.text("Debug information (" + debuggable.getClass().getSimpleName() + ") printed to console.").color(NamedTextColor.GREEN)); if (upload) { - Bukkit.getScheduler().runTaskLaterAsynchronously(plugin, () -> { + plugin.getFoliaLib().getImpl().runAsync((ignored) -> { var link = DebugCreator.upload(DebugCreator.debugToJson(debuggable), "json"); handleLink(sender, link.orElse(null), debuggable.getClass().getSimpleName()); - }, 0L); + }); } } diff --git a/src/main/java/de/skyslycer/hmcwraps/commands/WrapCommand.java b/src/main/java/de/skyslycer/hmcwraps/commands/WrapCommand.java index d8ea69b..38ef321 100644 --- a/src/main/java/de/skyslycer/hmcwraps/commands/WrapCommand.java +++ b/src/main/java/de/skyslycer/hmcwraps/commands/WrapCommand.java @@ -121,14 +121,14 @@ public void onReload(CommandSender sender) { player.closeInventory(); } } - Bukkit.getScheduler().runTaskLaterAsynchronously(plugin, () -> { + plugin.getFoliaLib().getImpl().runAsync((ignored) -> { plugin.unload(); plugin.load(); plugin.getMessageHandler().send(sender, Messages.COMMAND_RELOAD, Placeholder.parsed("time", String.format("%.2f", (System.nanoTime() - current) / 1_000_000.0)), Placeholder.parsed("wraps", String.valueOf(plugin.getWrapsLoader().getWraps().size())), Placeholder.parsed("collections", String.valueOf(plugin.getWrapsLoader().getCollections().size()))); - }, 0L); + }); } @Subcommand("convert") diff --git a/src/main/java/de/skyslycer/hmcwraps/listener/InventoryClickListener.java b/src/main/java/de/skyslycer/hmcwraps/listener/InventoryClickListener.java index ceadc50..61024e2 100644 --- a/src/main/java/de/skyslycer/hmcwraps/listener/InventoryClickListener.java +++ b/src/main/java/de/skyslycer/hmcwraps/listener/InventoryClickListener.java @@ -5,7 +5,6 @@ import de.skyslycer.hmcwraps.serialization.preview.PreviewType; import de.skyslycer.hmcwraps.serialization.wrap.WrappableItem; import de.skyslycer.hmcwraps.util.PermissionUtil; -import org.bukkit.Bukkit; import org.bukkit.Material; import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; @@ -53,13 +52,13 @@ public void onInventoryClick(InventoryClickEvent event) { switch (event.getAction()) { case PLACE_ALL, PLACE_SOME, PLACE_ONE, SWAP_WITH_CURSOR -> { var slot = event.getRawSlot(); - Bukkit.getScheduler().runTaskLater(plugin, () -> { + plugin.getFoliaLib().getImpl().runAtEntityLater(player, () -> { var updatedItem = PermissionUtil.check(plugin, player, event.getView().getItem(slot)); if (updatedItem == null || updatedItem.equals(event.getView().getItem(slot))) return; event.getView().setItem(slot, updatedItem); }, 1); } - case MOVE_TO_OTHER_INVENTORY -> Bukkit.getScheduler().runTaskLater(plugin, () -> { + case MOVE_TO_OTHER_INVENTORY -> plugin.getFoliaLib().getImpl().runAtEntityLater(player, () -> { if (event.getClickedInventory() == player.getInventory()) { PermissionUtil.loopThroughInventory(plugin, player, player.getOpenInventory().getTopInventory()); } else { @@ -70,7 +69,7 @@ public void onInventoryClick(InventoryClickEvent event) { if (event.getClick() == ClickType.NUMBER_KEY) { var slot = event.getHotbarButton(); - Bukkit.getScheduler().runTaskLater(plugin, () -> { + plugin.getFoliaLib().getImpl().runAtEntityLater(player, () -> { var updatedItem = PermissionUtil.check(plugin, player, player.getInventory().getItem(slot)); if (updatedItem == null || updatedItem.equals(event.getView().getItem(slot))) return; player.getInventory().setItem(slot, updatedItem); diff --git a/src/main/java/de/skyslycer/hmcwraps/listener/PlayerJoinListener.java b/src/main/java/de/skyslycer/hmcwraps/listener/PlayerJoinListener.java index d33ae31..266ccae 100644 --- a/src/main/java/de/skyslycer/hmcwraps/listener/PlayerJoinListener.java +++ b/src/main/java/de/skyslycer/hmcwraps/listener/PlayerJoinListener.java @@ -2,7 +2,6 @@ import de.skyslycer.hmcwraps.HMCWrapsPlugin; import de.skyslycer.hmcwraps.util.PermissionUtil; -import org.bukkit.Bukkit; import org.bukkit.event.EventHandler; import org.bukkit.event.Listener; import org.bukkit.event.player.PlayerJoinEvent; @@ -17,8 +16,8 @@ public PlayerJoinListener(HMCWrapsPlugin plugin) { @EventHandler public void onPlayerJoin(PlayerJoinEvent event) { - Bukkit.getScheduler().runTaskLater(plugin, () -> PermissionUtil.loopThroughInventory(plugin, event.getPlayer(), event.getPlayer().getInventory()), 1); - Bukkit.getScheduler().runTaskLaterAsynchronously(plugin, () -> plugin.getUpdateChecker().checkPlayer(event.getPlayer()), 5); + plugin.getFoliaLib().getImpl().runAtEntityLater(event.getPlayer(), () -> PermissionUtil.loopThroughInventory(plugin, event.getPlayer(), event.getPlayer().getInventory()), 1); + plugin.getFoliaLib().getImpl().runLaterAsync(() -> plugin.getUpdateChecker().checkPlayer(event.getPlayer()), 5); } } diff --git a/src/main/java/de/skyslycer/hmcwraps/listener/PlayerPickupListener.java b/src/main/java/de/skyslycer/hmcwraps/listener/PlayerPickupListener.java index 6ca39b3..114d1ca 100644 --- a/src/main/java/de/skyslycer/hmcwraps/listener/PlayerPickupListener.java +++ b/src/main/java/de/skyslycer/hmcwraps/listener/PlayerPickupListener.java @@ -2,7 +2,6 @@ import de.skyslycer.hmcwraps.HMCWrapsPlugin; import de.skyslycer.hmcwraps.util.PermissionUtil; -import org.bukkit.Bukkit; import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; import org.bukkit.event.EventPriority; @@ -22,7 +21,7 @@ public void onItemPickup(EntityPickupItemEvent event) { if (!(event.getEntity() instanceof Player player)) { return; } - Bukkit.getScheduler().runTaskLater(plugin, () -> PermissionUtil.loopThroughInventory(plugin, player, player.getInventory()), 1L); + plugin.getFoliaLib().getImpl().runAtEntityLater(player, () -> PermissionUtil.loopThroughInventory(plugin, player, player.getInventory()), 1L); } } diff --git a/src/main/java/de/skyslycer/hmcwraps/updater/ContinuousUpdateChecker.java b/src/main/java/de/skyslycer/hmcwraps/updater/ContinuousUpdateChecker.java index 5a09897..2246e4f 100644 --- a/src/main/java/de/skyslycer/hmcwraps/updater/ContinuousUpdateChecker.java +++ b/src/main/java/de/skyslycer/hmcwraps/updater/ContinuousUpdateChecker.java @@ -1,10 +1,10 @@ package de.skyslycer.hmcwraps.updater; +import com.tcoded.folialib.wrapper.task.WrappedTask; import de.skyslycer.hmcwraps.HMCWrapsPlugin; import de.skyslycer.hmcwraps.util.StringUtil; import org.bukkit.Bukkit; import org.bukkit.entity.Player; -import org.bukkit.scheduler.BukkitTask; public class ContinuousUpdateChecker { @@ -16,7 +16,7 @@ public class ContinuousUpdateChecker { private PluginUpdater updater; private long lastResultTime = 0; private CheckResult lastResult; - private BukkitTask task; + private WrappedTask task; public ContinuousUpdateChecker(HMCWrapsPlugin plugin) { this.plugin = plugin; @@ -27,7 +27,7 @@ public void check() { if (task != null) { task.cancel(); } - task = Bukkit.getScheduler().runTaskTimerAsynchronously(plugin, () -> { + task = plugin.getFoliaLib().getImpl().runTimerAsync(() -> { var result = updater.check(plugin); lastResultTime = System.currentTimeMillis(); lastResult = result; diff --git a/src/main/java/de/skyslycer/hmcwraps/wrap/WrapperImpl.java b/src/main/java/de/skyslycer/hmcwraps/wrap/WrapperImpl.java index da51031..ff3b44e 100644 --- a/src/main/java/de/skyslycer/hmcwraps/wrap/WrapperImpl.java +++ b/src/main/java/de/skyslycer/hmcwraps/wrap/WrapperImpl.java @@ -191,7 +191,7 @@ private ItemStack setWrapPrivate(@Nullable Wrap wrap, ItemStack item, boolean ph editing.setItemMeta(leatherMeta); } if (wrap.getWrapNbt() != null) { - editing = WrapNBTUtil.wrap(editing, wrap.getWrapNbt()); + editing = WrapNBTUtil.wrap(editing, StringUtil.replacePlaceholders(player, wrap.getWrapNbt())); } } else { meta.setCustomModelData(originalData.modelId());