diff --git a/gradle.properties b/gradle.properties index 1d8f96f..b1bab0b 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,2 +1,3 @@ pluginName=FancyTags -version=unspecified \ No newline at end of file +version=0.1.0-SNAPSHOT +org.gradle.java.home=C:/Program Files/Eclipse Adoptium/jdk-21.0.2.13-hotspot diff --git a/paper/build.gradle b/paper/build.gradle index cc03bd3..3623085 100644 --- a/paper/build.gradle +++ b/paper/build.gradle @@ -9,10 +9,15 @@ repositories { name = "papermc-repo" url = "https://repo.papermc.io/repository/maven-public/" } + maven { + name = "arim-mvn-lgpl3" + url = "https://mvn-repo.arim.space/lesser-gpl3/" + } } dependencies { compileOnly("io.papermc.paper:paper-api:1.21.11-R0.1-SNAPSHOT") + implementation("space.arim.morepaperlib:morepaperlib:0.4.3") implementation("org.bstats:bstats-bukkit:3.0.2") implementation(project(":common")) implementation(project(":plugin")) diff --git a/paper/src/main/java/dev/vatten/baserad/BukkitScheduledTask.java b/paper/src/main/java/dev/vatten/baserad/BukkitScheduledTask.java index 0f3f7a7..677e713 100644 --- a/paper/src/main/java/dev/vatten/baserad/BukkitScheduledTask.java +++ b/paper/src/main/java/dev/vatten/baserad/BukkitScheduledTask.java @@ -16,10 +16,8 @@ package dev.vatten.baserad; -import org.bukkit.scheduler.BukkitTask; - -public class BukkitScheduledTask extends ScheduledTask { - public BukkitScheduledTask(BukkitTask task) { +public class BukkitScheduledTask extends ScheduledTask { + public BukkitScheduledTask(space.arim.morepaperlib.scheduling.ScheduledTask task) { super(task); } diff --git a/paper/src/main/java/dev/vatten/baserad/PaperFancyTagsExpansion.java b/paper/src/main/java/dev/vatten/baserad/PaperFancyTagsExpansion.java index 61af074..9fdab60 100644 --- a/paper/src/main/java/dev/vatten/baserad/PaperFancyTagsExpansion.java +++ b/paper/src/main/java/dev/vatten/baserad/PaperFancyTagsExpansion.java @@ -58,7 +58,7 @@ public boolean persist() { @Override public @Nullable String onPlaceholderRequest(Player player, @NotNull String params) { if(plugin.getTagStore().getTagNames().contains(params)) { - return plugin.getMiniMessage().serialize(plugin.getTagStore().getTag(params).asComponent()); + return plugin.getTagStore().getTag(params).asMiniMessage(); } return null; } diff --git a/paper/src/main/java/dev/vatten/baserad/PaperVattenPlatform.java b/paper/src/main/java/dev/vatten/baserad/PaperVattenPlatform.java index 3db0669..78469a5 100644 --- a/paper/src/main/java/dev/vatten/baserad/PaperVattenPlatform.java +++ b/paper/src/main/java/dev/vatten/baserad/PaperVattenPlatform.java @@ -30,16 +30,18 @@ import org.bukkit.event.player.PlayerJoinEvent; import org.bukkit.event.player.PlayerQuitEvent; import org.bukkit.plugin.java.JavaPlugin; -import org.bukkit.scheduler.BukkitTask; import org.jspecify.annotations.Nullable; +import space.arim.morepaperlib.MorePaperLib; import java.util.Collection; -public class PaperVattenPlatform extends JavaPlugin implements VattenPlatform, Listener { +public class PaperVattenPlatform extends JavaPlugin implements VattenPlatform, Listener { private VattenPlugin plugin; + private MorePaperLib morePaperLib; @Override public void onEnable() { + this.morePaperLib = new MorePaperLib(this); this.plugin = new Plugin( this, VattenPlugin.Type.SERVER, @@ -62,12 +64,14 @@ public void onEnable() { @Override public BukkitScheduledTask scheduleTask(Runnable runnable, int delay) { - return new BukkitScheduledTask(getServer().getScheduler().runTaskLater(this, runnable, delay/50)); + long initialDelayTicks = Math.max(1L, delay / 50L); + return new BukkitScheduledTask(morePaperLib.scheduling().globalRegionalScheduler().runDelayed(runnable, initialDelayTicks)); } @Override public BukkitScheduledTask scheduleRepeatingTask(Runnable runnable, int delay, int period) { - return new BukkitScheduledTask(getServer().getScheduler().runTaskTimer(this, runnable, delay/50, period/50)); + long initialDelayTicks = Math.max(1L, delay / 50L); + return new BukkitScheduledTask(morePaperLib.scheduling().globalRegionalScheduler().runAtFixedRate(runnable, initialDelayTicks, period / 50L)); } @Override @@ -111,4 +115,8 @@ public void onPlayerLeave(PlayerQuitEvent event) { public void onPlayerLoadedIn(PlayerClientLoadedWorldEvent event) { plugin.getEventHandler().dispatchEvent(new PlayerLoadInEvent(wrapPlayer(event.getPlayer()))); } + + public VattenPlugin getPlugin() { + return this.plugin; + } } diff --git a/paper/src/main/resources/paper-plugin.yml b/paper/src/main/resources/paper-plugin.yml index cc4db2a..e6cc75c 100644 --- a/paper/src/main/resources/paper-plugin.yml +++ b/paper/src/main/resources/paper-plugin.yml @@ -18,6 +18,7 @@ name: "${pluginName}" version: "${version}" main: "dev.vatten.baserad.PaperVattenPlatform" api-version: '1.21.11' +folia-supported: true dependencies: server: diff --git a/plugin/src/main/java/dev/vatten/baserad/Plugin.java b/plugin/src/main/java/dev/vatten/baserad/Plugin.java index 041e62a..4bfaedb 100644 --- a/plugin/src/main/java/dev/vatten/baserad/Plugin.java +++ b/plugin/src/main/java/dev/vatten/baserad/Plugin.java @@ -37,7 +37,7 @@ import java.util.function.Consumer; public class Plugin extends VattenPlugin { - private MiniMessage MINIMESSAGE = null; + private MiniMessage MINIMESSAGE; private ConfigInstance PLUGIN_CONFIG; private ConfigInstance TAGS_CONFIG; @Getter @@ -75,7 +75,7 @@ protected void onEnable() { getEventHandler().registerEventHandler(PlayerLoadInEvent.class, this::onPlayerLoadIn); - MINIMESSAGE = MiniMessage.builder().tags(TagResolver.builder().resolver(StandardTags.defaults()).resolver(TagResolver.resolver("fancytags", (ArgumentQueue queue, Context ctx) -> Tag.selfClosingInserting(getTagStore().getTag(queue.pop().value()).asComponent()))).resolver(TagResolver.resolver("fancytags_internal", (ArgumentQueue queue, Context ctx) -> Tag.selfClosingInserting(getInternalTagStore().getTag(queue.pop().value()).asComponent()))).build()).build(); + getMiniMessage(); } @Override @@ -128,6 +128,15 @@ TagsConfig getTagsConfig() { } public MiniMessage getMiniMessage() { + if(MINIMESSAGE == null) { + MINIMESSAGE = MiniMessage.builder() + .tags(TagResolver.builder() + .resolver(StandardTags.defaults()) + .resolver(TagResolver.resolver("fancytags", (ArgumentQueue queue, Context ctx) -> Tag.selfClosingInserting(getTagStore().getTag(queue.pop().value()).asComponent()))) + .resolver(TagResolver.resolver("fancytags_internal", (ArgumentQueue queue, Context ctx) -> Tag.selfClosingInserting(getInternalTagStore().getTag(queue.pop().value()).asComponent()))) + .build() + ).build(); + } return MINIMESSAGE; } diff --git a/plugin/src/main/java/dev/vatten/baserad/Tag.java b/plugin/src/main/java/dev/vatten/baserad/Tag.java index 303f347..0f5ceef 100644 --- a/plugin/src/main/java/dev/vatten/baserad/Tag.java +++ b/plugin/src/main/java/dev/vatten/baserad/Tag.java @@ -38,11 +38,13 @@ public Tag(List symbols) { Component serialize(MiniMessage miniMessage) { TextComponent.Builder componentBuilder = Component.text(); + StringBuilder minimessageBuilder = new StringBuilder(); for(Symbol symbol : symbols) { componentBuilder.append(symbol.serialize()); + minimessageBuilder.append(symbol.serializeMiniMessage()); } this.component = componentBuilder.build(); - this.miniMessage = miniMessage.serialize(this.component); + this.miniMessage = minimessageBuilder.toString(); return this.component; } diff --git a/plugin/src/main/java/dev/vatten/baserad/symbols/AtlasSymbol.java b/plugin/src/main/java/dev/vatten/baserad/symbols/AtlasSymbol.java index f9afa8c..ff4822c 100644 --- a/plugin/src/main/java/dev/vatten/baserad/symbols/AtlasSymbol.java +++ b/plugin/src/main/java/dev/vatten/baserad/symbols/AtlasSymbol.java @@ -37,4 +37,9 @@ public AtlasSymbol(String atlas, String sprite) { public Component serialize() { return Component.object(ObjectContents.sprite(Key.key(this.atlas), Key.key(this.sprite))); } + + @Override + public String serializeMiniMessage() { + return ""; + } } diff --git a/plugin/src/main/java/dev/vatten/baserad/symbols/PlayerSymbol.java b/plugin/src/main/java/dev/vatten/baserad/symbols/PlayerSymbol.java index 1431596..404f9c4 100644 --- a/plugin/src/main/java/dev/vatten/baserad/symbols/PlayerSymbol.java +++ b/plugin/src/main/java/dev/vatten/baserad/symbols/PlayerSymbol.java @@ -37,4 +37,9 @@ public PlayerSymbol(String value, String signature) { public Component serialize() { return Component.object(ObjectContents.playerHead().profileProperty(PlayerHeadObjectContents.property("textures", this.value, this.signature)).build()); } + + @Override + public String serializeMiniMessage() { + return ""; + } } diff --git a/plugin/src/main/java/dev/vatten/baserad/symbols/Symbol.java b/plugin/src/main/java/dev/vatten/baserad/symbols/Symbol.java index f207cb4..b35532b 100644 --- a/plugin/src/main/java/dev/vatten/baserad/symbols/Symbol.java +++ b/plugin/src/main/java/dev/vatten/baserad/symbols/Symbol.java @@ -24,4 +24,5 @@ @Configuration public abstract class Symbol { public abstract Component serialize(); + public abstract String serializeMiniMessage(); }