From 8b0251258ca37d59cbf62915c0a874b8d1a8ac24 Mon Sep 17 00:00:00 2001 From: Euphyllia Bierque Date: Wed, 3 Apr 2024 20:02:52 +0200 Subject: [PATCH 1/3] First support Folia --- build.gradle | 10 ++++--- gradle/wrapper/gradle-wrapper.properties | 2 +- .../holograms/api/DecentHolograms.java | 8 +++--- .../holograms/api/actions/ActionType.java | 15 ++++++----- .../holograms/api/holograms/Hologram.java | 6 ++++- .../holograms/api/utils/UpdateChecker.java | 4 +-- .../holograms/api/utils/config/Phrase.java | 11 ++++++-- .../holograms/api/utils/scheduler/S.java | 27 +++++++------------ .../plugin/DecentHologramsPlugin.java | 7 +++++ .../plugin/commands/HologramSubCommand.java | 3 ++- src/main/resources/plugin.yml | 1 + 11 files changed, 54 insertions(+), 40 deletions(-) diff --git a/build.gradle b/build.gradle index 0adad2e8f..40adb30f3 100644 --- a/build.gradle +++ b/build.gradle @@ -1,13 +1,13 @@ plugins { id 'java' id 'maven-publish' - id "com.github.johnrengelman.shadow" version "4.0.4" + id "com.github.johnrengelman.shadow" version "8.1.1" } defaultTasks 'build' group 'eu.decentsoftware.holograms' -version '2.8.6' +version '2.8.6' + "-folia" description 'A lightweight yet very powerful hologram plugin with many features and configuration options.' repositories { @@ -16,6 +16,7 @@ repositories { maven { url = 'https://repo.codemc.io/repository/nms/' } maven { url = 'https://repo.codemc.io/repository/maven-public/' } maven { url = 'https://repo.extendedclip.com/content/repositories/placeholderapi/' } + maven { url = 'https://jitpack.io/' } } dependencies { @@ -24,6 +25,7 @@ dependencies { compileOnly 'com.arcaniax:HeadDatabase-API:1.3.1' implementation 'org.bstats:bstats-bukkit:3.0.0' implementation 'de.tr7zw:item-nbt-api:2.12.2' + implementation 'com.github.Euphillya:Energie:1.2.0' // Annotations compileOnly 'org.projectlombok:lombok:1.18.30' @@ -32,8 +34,8 @@ dependencies { annotationProcessor 'org.jetbrains:annotations:24.1.0' } -sourceCompatibility = 1.8 -targetCompatibility = 1.8 +sourceCompatibility = 17 +targetCompatibility = 17 compileJava { options.encoding = 'UTF-8' diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 157702fe8..e846b64f4 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,5 +1,5 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-7.1.1-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-8.6-bin.zip zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists \ No newline at end of file diff --git a/src/main/java/eu/decentsoftware/holograms/api/DecentHolograms.java b/src/main/java/eu/decentsoftware/holograms/api/DecentHolograms.java index 96b64521e..fe5432c4c 100644 --- a/src/main/java/eu/decentsoftware/holograms/api/DecentHolograms.java +++ b/src/main/java/eu/decentsoftware/holograms/api/DecentHolograms.java @@ -90,18 +90,18 @@ void enable() { pm.registerEvents(new WorldListener(this), this.plugin); // Setup metrics - Metrics metrics = new Metrics(this.plugin, 12797); - metrics.addCustomChart(new SingleLineChart("holograms", () -> Hologram.getCachedHolograms().size())); + //Metrics metrics = new Metrics(this.plugin, 12797); + //metrics.addCustomChart(new SingleLineChart("holograms", () -> Hologram.getCachedHolograms().size())); // Setup update checker if (Settings.CHECK_FOR_UPDATES) { - UpdateChecker updateChecker = new UpdateChecker(getPlugin(), 96927); + /*UpdateChecker updateChecker = new UpdateChecker(getPlugin(), 96927); updateChecker.getVersion(ver -> { if (Common.isVersionHigher(ver)) { Lang.sendUpdateMessage(Bukkit.getConsoleSender()); this.updateAvailable = true; } - }); + });*/ } BungeeUtils.init(); diff --git a/src/main/java/eu/decentsoftware/holograms/api/actions/ActionType.java b/src/main/java/eu/decentsoftware/holograms/api/actions/ActionType.java index cddad99a2..8db1aa442 100644 --- a/src/main/java/eu/decentsoftware/holograms/api/actions/ActionType.java +++ b/src/main/java/eu/decentsoftware/holograms/api/actions/ActionType.java @@ -9,6 +9,9 @@ import eu.decentsoftware.holograms.api.utils.Common; import eu.decentsoftware.holograms.api.utils.PAPI; import eu.decentsoftware.holograms.api.utils.location.LocationUtils; +import eu.decentsoftware.holograms.plugin.DecentHologramsPlugin; +import fr.euphyllia.energie.model.SchedulerType; +import fr.euphyllia.energie.utils.EntityUtils; import lombok.Getter; import lombok.NonNull; import org.apache.commons.lang.Validate; @@ -66,10 +69,9 @@ public boolean execute(Player player, String... args) { Validate.notNull(player); String string = String.join(" ", args); - Bukkit.getScheduler().runTask(DECENT_HOLOGRAMS.getPlugin(), () -> { - // + DecentHologramsPlugin.getScheduler().runTask(SchedulerType.SYNC, player, schedulerTaskInter -> { player.chat(PAPI.setPlaceholders(player, string.replace("{player}", player.getName()))); - }); + }, null); return true; } }; @@ -80,10 +82,9 @@ public boolean execute(Player player, String... args) { Validate.notNull(player); String string = String.join(" ", args); - Bukkit.getScheduler().runTask(DECENT_HOLOGRAMS.getPlugin(), () -> { - // + DecentHologramsPlugin.getScheduler().runTask(SchedulerType.SYNC, player, schedulerTaskInter -> { Bukkit.dispatchCommand(Bukkit.getConsoleSender(), PAPI.setPlaceholders(player, string.replace("{player}", player.getName()))); - }); + }, null); return true; } }; @@ -113,7 +114,7 @@ public boolean execute(Player player, String... args) { if (location == null) { return false; } - Bukkit.getScheduler().runTask(DECENT_HOLOGRAMS.getPlugin(), () -> player.teleport(location)); + EntityUtils.teleportAsync(player, location); return true; } }; diff --git a/src/main/java/eu/decentsoftware/holograms/api/holograms/Hologram.java b/src/main/java/eu/decentsoftware/holograms/api/holograms/Hologram.java index 0a4dae7f3..990ebc6a0 100644 --- a/src/main/java/eu/decentsoftware/holograms/api/holograms/Hologram.java +++ b/src/main/java/eu/decentsoftware/holograms/api/holograms/Hologram.java @@ -18,6 +18,8 @@ import eu.decentsoftware.holograms.api.utils.scheduler.S; import eu.decentsoftware.holograms.api.utils.tick.ITicked; import eu.decentsoftware.holograms.event.HologramClickEvent; +import eu.decentsoftware.holograms.plugin.DecentHologramsPlugin; +import fr.euphyllia.energie.model.SchedulerType; import lombok.Getter; import lombok.NonNull; import lombok.Setter; @@ -639,7 +641,9 @@ public boolean show(@NonNull Player player, int pageIndex) { } else { // We need to run the task later on older versions as, if we don't, it causes issues with some holograms *randomly* becoming invisible. // I *think* this is from despawning and spawning the entities (with the same ID) in the same tick. - S.sync(() -> showPageTo(player, page, pageIndex), 0L); + DecentHologramsPlugin.getScheduler().runTask(SchedulerType.SYNC, player, schedulerTaskInter -> { + showPageTo(player, page, pageIndex); + }, null); } return true; } diff --git a/src/main/java/eu/decentsoftware/holograms/api/utils/UpdateChecker.java b/src/main/java/eu/decentsoftware/holograms/api/utils/UpdateChecker.java index de0276cab..298eb31db 100644 --- a/src/main/java/eu/decentsoftware/holograms/api/utils/UpdateChecker.java +++ b/src/main/java/eu/decentsoftware/holograms/api/utils/UpdateChecker.java @@ -23,7 +23,7 @@ public UpdateChecker(JavaPlugin plugin, int resourceId) { } public void getVersion(Consumer consumer) { - Bukkit.getScheduler().runTaskAsynchronously(plugin, () -> { + /*Bukkit.getScheduler().runTaskAsynchronously(plugin, () -> { try (InputStream inputStream = new URL("https://api.spigotmc.org/legacy/update.php?resource=" + resourceId).openStream(); Scanner scanner = new Scanner(inputStream)) { if (scanner.hasNext() && consumer != null) { @@ -32,6 +32,6 @@ public void getVersion(Consumer consumer) { } catch (IOException exception) { plugin.getLogger().info("Unable to check for updates: " + exception.getMessage()); } - }); + });*/ } } \ No newline at end of file diff --git a/src/main/java/eu/decentsoftware/holograms/api/utils/config/Phrase.java b/src/main/java/eu/decentsoftware/holograms/api/utils/config/Phrase.java index bd0fbcba2..8d144ea3d 100644 --- a/src/main/java/eu/decentsoftware/holograms/api/utils/config/Phrase.java +++ b/src/main/java/eu/decentsoftware/holograms/api/utils/config/Phrase.java @@ -1,6 +1,8 @@ package eu.decentsoftware.holograms.api.utils.config; import eu.decentsoftware.holograms.api.utils.Common; +import eu.decentsoftware.holograms.plugin.DecentHologramsPlugin; +import fr.euphyllia.energie.model.SchedulerType; import org.bukkit.command.CommandSender; public class Phrase extends ConfigValue { @@ -10,11 +12,16 @@ public Phrase(FileConfig config, String path, String defaultValue) { } public void send(CommandSender sender) { - Common.tell(sender, getValue().replace("{prefix}", Common.PREFIX)); + DecentHologramsPlugin.getScheduler().runTask(SchedulerType.SYNC, schedulerTaskInter -> { + Common.tell(sender, getValue().replace("{prefix}", Common.PREFIX)); + }); } public void send(CommandSender sender, Object... args) { - Common.tell(sender, getValue().replace("{prefix}", Common.PREFIX), args); + DecentHologramsPlugin.getScheduler().runTask(SchedulerType.SYNC, schedulerTaskInter -> { + Common.tell(sender, getValue().replace("{prefix}", Common.PREFIX), args); + }); + } @Override diff --git a/src/main/java/eu/decentsoftware/holograms/api/utils/scheduler/S.java b/src/main/java/eu/decentsoftware/holograms/api/utils/scheduler/S.java index a67df2873..7a8ed4a91 100644 --- a/src/main/java/eu/decentsoftware/holograms/api/utils/scheduler/S.java +++ b/src/main/java/eu/decentsoftware/holograms/api/utils/scheduler/S.java @@ -3,6 +3,9 @@ import eu.decentsoftware.holograms.api.DecentHolograms; import eu.decentsoftware.holograms.api.DecentHologramsAPI; import eu.decentsoftware.holograms.api.utils.DExecutor; +import eu.decentsoftware.holograms.plugin.DecentHologramsPlugin; +import fr.euphyllia.energie.model.SchedulerTaskInter; +import fr.euphyllia.energie.model.SchedulerType; import org.bukkit.Bukkit; import org.bukkit.plugin.IllegalPluginAccessException; import org.bukkit.scheduler.BukkitTask; @@ -15,21 +18,9 @@ public static void stopTask(int id) { Bukkit.getScheduler().cancelTask(id); } - public static void sync(Runnable runnable) { - Bukkit.getScheduler().runTask(DECENT_HOLOGRAMS.getPlugin(), runnable); - } - - public static BukkitTask sync(Runnable runnable, long delay) { - return Bukkit.getScheduler().runTaskLater(DECENT_HOLOGRAMS.getPlugin(), runnable, delay); - } - - public static BukkitTask syncTask(Runnable runnable, long interval) { - return Bukkit.getScheduler().runTaskTimer(DECENT_HOLOGRAMS.getPlugin(), runnable, 0, interval); - } - public static void async(Runnable runnable) { try { - Bukkit.getScheduler().runTaskAsynchronously(DECENT_HOLOGRAMS.getPlugin(), runnable); + DecentHologramsPlugin.getScheduler().runTask(SchedulerType.ASYNC, schedulerTaskInter -> runnable.run()); } catch (IllegalPluginAccessException e) { DExecutor.execute(runnable); } @@ -37,18 +28,18 @@ public static void async(Runnable runnable) { public static void async(Runnable runnable, long delay) { try { - Bukkit.getScheduler().runTaskLaterAsynchronously(DECENT_HOLOGRAMS.getPlugin(), runnable, delay); + DecentHologramsPlugin.getScheduler().runDelayed(SchedulerType.ASYNC, schedulerTaskInter -> runnable.run(), delay); } catch (IllegalPluginAccessException e) { DExecutor.execute(runnable); } } - public static BukkitTask asyncTask(Runnable runnable, long interval) { - return Bukkit.getScheduler().runTaskTimerAsynchronously(DECENT_HOLOGRAMS.getPlugin(), runnable, 0, interval); + public static SchedulerTaskInter asyncTask(Runnable runnable, long interval) { + return DecentHologramsPlugin.getScheduler().runAtFixedRate(SchedulerType.ASYNC, schedulerTaskInter -> runnable.run(), 0, interval); } - public static BukkitTask asyncTask(Runnable runnable, long interval, long delay) { - return Bukkit.getScheduler().runTaskTimerAsynchronously(DECENT_HOLOGRAMS.getPlugin(), runnable, delay, interval); + public static SchedulerTaskInter asyncTask(Runnable runnable, long interval, long delay) { + return DecentHologramsPlugin.getScheduler().runAtFixedRate(SchedulerType.ASYNC, schedulerTaskInter -> runnable.run(), delay, interval); } } diff --git a/src/main/java/eu/decentsoftware/holograms/plugin/DecentHologramsPlugin.java b/src/main/java/eu/decentsoftware/holograms/plugin/DecentHologramsPlugin.java index a53b073bd..2e4b74d20 100644 --- a/src/main/java/eu/decentsoftware/holograms/plugin/DecentHologramsPlugin.java +++ b/src/main/java/eu/decentsoftware/holograms/plugin/DecentHologramsPlugin.java @@ -7,12 +7,15 @@ import eu.decentsoftware.holograms.plugin.commands.HologramsCommand; import eu.decentsoftware.holograms.plugin.features.DamageDisplayFeature; import eu.decentsoftware.holograms.plugin.features.HealingDisplayFeature; +import fr.euphyllia.energie.Energie; +import fr.euphyllia.energie.model.Scheduler; import lombok.Getter; import org.bukkit.plugin.java.JavaPlugin; @Getter public class DecentHologramsPlugin extends JavaPlugin { + private static Scheduler scheduler; @Override public void onLoad() { DecentHologramsAPI.onLoad(this); @@ -20,6 +23,7 @@ public void onLoad() { @Override public void onEnable() { + scheduler = new Energie(this).getMinecraftScheduler(); DecentHologramsAPI.onEnable(); DecentHolograms decentHolograms = DecentHologramsAPI.get(); @@ -37,4 +41,7 @@ public void onDisable() { DecentHologramsAPI.onDisable(); } + public static Scheduler getScheduler() { + return scheduler; + } } diff --git a/src/main/java/eu/decentsoftware/holograms/plugin/commands/HologramSubCommand.java b/src/main/java/eu/decentsoftware/holograms/plugin/commands/HologramSubCommand.java index 2c3628458..a56005378 100644 --- a/src/main/java/eu/decentsoftware/holograms/plugin/commands/HologramSubCommand.java +++ b/src/main/java/eu/decentsoftware/holograms/plugin/commands/HologramSubCommand.java @@ -14,6 +14,7 @@ import eu.decentsoftware.holograms.api.utils.location.LocationUtils; import eu.decentsoftware.holograms.api.utils.message.Message; import eu.decentsoftware.holograms.plugin.Validator; +import fr.euphyllia.energie.utils.EntityUtils; import org.bukkit.Location; import org.bukkit.Material; import org.bukkit.entity.Player; @@ -1079,7 +1080,7 @@ public CommandHandler getCommandHandler() { return (sender, args) -> { Hologram hologram = Validator.getHologram(args[0], Lang.HOLOGRAM_DOES_NOT_EXIST.getValue()); Player player = Validator.getPlayer(sender); - player.teleport(hologram.getLocation()); + EntityUtils.teleportAsync(player, hologram.getLocation()); Lang.HOLOGRAM_TELEPORTED.send(sender); return true; diff --git a/src/main/resources/plugin.yml b/src/main/resources/plugin.yml index a08c22696..313ec1d27 100644 --- a/src/main/resources/plugin.yml +++ b/src/main/resources/plugin.yml @@ -8,6 +8,7 @@ name: "DecentHolograms" description: ${description} version: ${version} author: d0by +folia-supported: true commands: decentholograms: From 758dac02948937dc3992c128e83621054a954739 Mon Sep 17 00:00:00 2001 From: Euphyllia Bierque Date: Wed, 3 Apr 2024 20:04:19 +0200 Subject: [PATCH 2/3] Fix --- build.gradle | 1 + .../java/eu/decentsoftware/holograms/api/utils/scheduler/S.java | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/build.gradle b/build.gradle index 40adb30f3..8360a0106 100644 --- a/build.gradle +++ b/build.gradle @@ -62,4 +62,5 @@ processResources { shadowJar { relocate "org.bstats", "eu.decentsoftware.holograms.metrics" relocate "de.tr7zw.changeme.nbtapi", "eu.decentsoftware.holograms.libs.nbtapi" + relocate "fr.euphyllia.energie", "eu.decentsoftware.holograms.libs.energie" } \ No newline at end of file diff --git a/src/main/java/eu/decentsoftware/holograms/api/utils/scheduler/S.java b/src/main/java/eu/decentsoftware/holograms/api/utils/scheduler/S.java index 7a8ed4a91..f3a5ea60e 100644 --- a/src/main/java/eu/decentsoftware/holograms/api/utils/scheduler/S.java +++ b/src/main/java/eu/decentsoftware/holograms/api/utils/scheduler/S.java @@ -15,7 +15,7 @@ public class S { private static final DecentHolograms DECENT_HOLOGRAMS = DecentHologramsAPI.get(); public static void stopTask(int id) { - Bukkit.getScheduler().cancelTask(id); + DecentHologramsPlugin.getScheduler().cancelTask(id); } public static void async(Runnable runnable) { From 5b24192549e5a59e117a599756d4ae7355f99185 Mon Sep 17 00:00:00 2001 From: Euphyllia Bierque Date: Wed, 3 Apr 2024 23:06:23 +0200 Subject: [PATCH 3/3] Fix async cmd --- .../eu/decentsoftware/holograms/api/actions/ActionType.java | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/main/java/eu/decentsoftware/holograms/api/actions/ActionType.java b/src/main/java/eu/decentsoftware/holograms/api/actions/ActionType.java index 8db1aa442..c38d2dea4 100644 --- a/src/main/java/eu/decentsoftware/holograms/api/actions/ActionType.java +++ b/src/main/java/eu/decentsoftware/holograms/api/actions/ActionType.java @@ -83,7 +83,10 @@ public boolean execute(Player player, String... args) { String string = String.join(" ", args); DecentHologramsPlugin.getScheduler().runTask(SchedulerType.SYNC, player, schedulerTaskInter -> { - Bukkit.dispatchCommand(Bukkit.getConsoleSender(), PAPI.setPlaceholders(player, string.replace("{player}", player.getName()))); + String papi = PAPI.setPlaceholders(player, string.replace("{player}", player.getName())); + DecentHologramsPlugin.getScheduler().runTask(SchedulerType.SYNC, globalTask -> { + Bukkit.dispatchCommand(Bukkit.getConsoleSender(), papi); + }); }, null); return true; }