From efe60c7976f42f98e8377feadeba0429288aca7b Mon Sep 17 00:00:00 2001 From: Taah Date: Sun, 24 Apr 2022 07:23:59 -0700 Subject: [PATCH] modify the API a bit so an API user can access and set fields in the object holder --- api/build.gradle.kts | 21 +++++++++---- .../java/dev/plex/plugin/SunburstPlugin.java | 30 +++++++++++++++++++ .../main/java/dev/plex/util/ObjectHolder.java | 7 +---- build.gradle.kts | 8 ++++- server/src/main/java/dev/plex/Sunburst.java | 24 +++++++-------- .../dev/plex/command/SunburstCommand.java | 2 +- .../dev/plex/command/impl/NicknameCMD.java | 8 ++--- .../listener/impl/player/ChatListener.java | 5 ++-- .../listener/impl/player/JoinListener.java | 6 ++-- 9 files changed, 77 insertions(+), 34 deletions(-) create mode 100644 api/src/main/java/dev/plex/plugin/SunburstPlugin.java rename {server => api}/src/main/java/dev/plex/util/ObjectHolder.java (76%) diff --git a/api/build.gradle.kts b/api/build.gradle.kts index bbe6db3..d662f09 100644 --- a/api/build.gradle.kts +++ b/api/build.gradle.kts @@ -1,6 +1,6 @@ plugins { java - id("com.github.johnrengelman.shadow") version "7.1.2" + `maven-publish` } dependencies { @@ -9,16 +9,27 @@ dependencies { tasks { build { - dependsOn(shadowJar) + dependsOn(publishToMavenLocal) } } -tasks.getByName("shadowJar") { +tasks.getByName("jar") { archiveBaseName.set("Sunburst") - archiveClassifier.set("API") + archiveClassifier.set("") } tasks.register("wrapper") { gradleVersion = "7.4.2" } -tasks.register("prepareKotlinBuildScriptModel"){} \ No newline at end of file +tasks.register("prepareKotlinBuildScriptModel"){} + +publishing { + publications { + create("maven") { + groupId = project.group as String + version = project.version as String + artifactId = "sunburst-api" + from(components["java"]) + } + } +} \ No newline at end of file diff --git a/api/src/main/java/dev/plex/plugin/SunburstPlugin.java b/api/src/main/java/dev/plex/plugin/SunburstPlugin.java new file mode 100644 index 0000000..febcf2c --- /dev/null +++ b/api/src/main/java/dev/plex/plugin/SunburstPlugin.java @@ -0,0 +1,30 @@ +package dev.plex.plugin; + +import dev.plex.util.ObjectHolder; +import org.bukkit.plugin.java.JavaPlugin; + +public abstract class SunburstPlugin extends JavaPlugin +{ + private static SunburstPlugin plugin; + private ObjectHolder holder; + + @Override + public void onLoad() + { + plugin = this; + this.holder = new ObjectHolder(); + load(); + } + + public abstract void load(); + + public ObjectHolder getObjectHolder() + { + return this.holder; + } + + public static SunburstPlugin getPlugin() + { + return plugin; + } +} diff --git a/server/src/main/java/dev/plex/util/ObjectHolder.java b/api/src/main/java/dev/plex/util/ObjectHolder.java similarity index 76% rename from server/src/main/java/dev/plex/util/ObjectHolder.java rename to api/src/main/java/dev/plex/util/ObjectHolder.java index 19f3e8c..d7dee73 100644 --- a/server/src/main/java/dev/plex/util/ObjectHolder.java +++ b/api/src/main/java/dev/plex/util/ObjectHolder.java @@ -11,7 +11,7 @@ import net.kyori.adventure.text.serializer.plain.PlainTextComponentSerializer; import org.bukkit.entity.Player; import org.jetbrains.annotations.NotNull; -public class ObjectHolder implements PluginBase, ChatRenderer +public class ObjectHolder implements PluginBase { private IPermissionHandler permissionHandler; private IStorage storageSystem; @@ -53,9 +53,4 @@ public class ObjectHolder implements PluginBase, ChatRenderer this.chatRenderer = renderer; } - @Override - public @NotNull Component render(@NotNull Player source, @NotNull Component sourceDisplayName, @NotNull Component message, @NotNull Audience viewer) - { - return ComponentUtil.configComponent("chatFormat", MiniMessage.miniMessage().serialize(source.displayName()), PlainTextComponentSerializer.plainText().serialize(message)); - } } diff --git a/build.gradle.kts b/build.gradle.kts index 1b18d7a..18430a4 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -1,5 +1,6 @@ plugins { java + `maven-publish` } allprojects { @@ -8,6 +9,7 @@ allprojects { } subprojects { apply(plugin = "java") + apply(plugin = "maven-publish") repositories { mavenCentral() maven { @@ -36,7 +38,11 @@ subprojects { } var copyJars = tasks.register("copyJars") { - from(subprojects.map { it.tasks.getByName("shadowJar") }) + from(subprojects.filter { + it.tasks.findByName("shadowJar") != null + }.map { + it.tasks.getByName("shadowJar") + }) into(file("build/libs")) } diff --git a/server/src/main/java/dev/plex/Sunburst.java b/server/src/main/java/dev/plex/Sunburst.java index 9621b32..bc64dfa 100644 --- a/server/src/main/java/dev/plex/Sunburst.java +++ b/server/src/main/java/dev/plex/Sunburst.java @@ -8,17 +8,19 @@ import dev.plex.permission.PermissionHandlerImpl; import dev.plex.player.ISunburstPlayer; import dev.plex.player.PlayerCache; import dev.plex.player.SunburstPlayer; +import dev.plex.plugin.SunburstPlugin; import dev.plex.storage.FileStorage; +import dev.plex.util.ComponentUtil; import dev.plex.util.Configuration; -import dev.plex.util.ObjectHolder; import lombok.Getter; import lombok.Setter; +import net.kyori.adventure.text.minimessage.MiniMessage; +import net.kyori.adventure.text.serializer.plain.PlainTextComponentSerializer; import org.bukkit.Bukkit; -import org.bukkit.plugin.java.JavaPlugin; @Getter @Setter -public final class Sunburst extends JavaPlugin +public final class Sunburst extends SunburstPlugin { private static Sunburst plugin; @@ -27,10 +29,9 @@ public final class Sunburst extends JavaPlugin private Configuration configuration; private Configuration messages; - private ObjectHolder holder; @Override - public void onLoad() + public void load() { plugin = this; this.configuration = new Configuration(this, "config.yml"); @@ -39,15 +40,14 @@ public final class Sunburst extends JavaPlugin this.configuration.load(); this.messages.load(); - this.holder = new ObjectHolder(); - this.holder.setPermissionHandler(new PermissionHandlerImpl()); - this.holder.setChatRenderer(holder); + this.getObjectHolder().setPermissionHandler(new PermissionHandlerImpl()); + this.getObjectHolder().setChatRenderer((source, sourceDisplayName, message, viewer) -> ComponentUtil.configComponent("chatFormat", MiniMessage.miniMessage().serialize(source.displayName()), PlainTextComponentSerializer.plainText().serialize(message))); } @Override public void onEnable() { - this.holder.setStorageSystem(new FileStorage()); + this.getObjectHolder().setStorageSystem(new FileStorage()); new JoinListener(); new ChatListener(); @@ -56,11 +56,11 @@ public final class Sunburst extends JavaPlugin Bukkit.getOnlinePlayers().forEach(player -> { - ISunburstPlayer sunburstPlayer = plugin.getHolder().getStorageSystem().getPlayer(player.getUniqueId()); + ISunburstPlayer sunburstPlayer = plugin.getObjectHolder().getStorageSystem().getPlayer(player.getUniqueId()); if (sunburstPlayer == null) { sunburstPlayer = new SunburstPlayer(player.getUniqueId(), player.getName(), player.getAddress().getAddress().getHostAddress()); - plugin.getHolder().getStorageSystem().createPlayer(sunburstPlayer); + plugin.getObjectHolder().getStorageSystem().createPlayer(sunburstPlayer); } plugin.getPlayerCache().addPlayer(sunburstPlayer); if (sunburstPlayer.displayName() != null) @@ -74,7 +74,7 @@ public final class Sunburst extends JavaPlugin public void onDisable() { plugin.getPlayerCache().getPlayers().forEach(sunburstPlayer -> { - plugin.getHolder().getStorageSystem().updatePlayer(sunburstPlayer); + plugin.getObjectHolder().getStorageSystem().updatePlayer(sunburstPlayer); }); } diff --git a/server/src/main/java/dev/plex/command/SunburstCommand.java b/server/src/main/java/dev/plex/command/SunburstCommand.java index a7a65e3..06bd776 100644 --- a/server/src/main/java/dev/plex/command/SunburstCommand.java +++ b/server/src/main/java/dev/plex/command/SunburstCommand.java @@ -59,7 +59,7 @@ public abstract class SunburstCommand extends Command implements PluginIdentifia @Override public boolean execute(@NotNull CommandSender sender, @NotNull String commandLabel, @NotNull String[] args) { - if (this.getPermission() != null && !plugin.getHolder().getPermissionHandler().hasPermission(sender, this.getPermission())) + if (this.getPermission() != null && !plugin.getObjectHolder().getPermissionHandler().hasPermission(sender, this.getPermission())) { sender.sendMessage(confMsg("noPermission", this.getPermission())); return true; diff --git a/server/src/main/java/dev/plex/command/impl/NicknameCMD.java b/server/src/main/java/dev/plex/command/impl/NicknameCMD.java index 8b17334..77ea000 100644 --- a/server/src/main/java/dev/plex/command/impl/NicknameCMD.java +++ b/server/src/main/java/dev/plex/command/impl/NicknameCMD.java @@ -27,7 +27,7 @@ public class NicknameCMD extends SunburstCommand { return confMsg("commandCheckConsole", this.getUsage()); } - ISunburstPlayer sunburstPlayer = plugin.getHolder().getStorageSystem().getPlayer(player.getUniqueId()); + ISunburstPlayer sunburstPlayer = plugin.getObjectHolder().getStorageSystem().getPlayer(player.getUniqueId()); if (sunburstPlayer.displayName() == null) { return confMsg("nicknameNotFound"); @@ -37,7 +37,7 @@ public class NicknameCMD extends SunburstCommand if (Bukkit.getOnlinePlayers().stream().anyMatch(p -> p.getName().equalsIgnoreCase(args[0]))) { Player target = getNonNullPlayer(args[0]); - ISunburstPlayer sunburstPlayer = plugin.getHolder().getStorageSystem().getPlayer(target.getUniqueId()); + ISunburstPlayer sunburstPlayer = plugin.getObjectHolder().getStorageSystem().getPlayer(target.getUniqueId()); if (args.length < 2) { return usage(); @@ -62,7 +62,7 @@ public class NicknameCMD extends SunburstCommand { return confMsg("commandCheckConsole", this.getUsage()); } - ISunburstPlayer sunburstPlayer = plugin.getHolder().getStorageSystem().getPlayer(player.getUniqueId()); + ISunburstPlayer sunburstPlayer = plugin.getObjectHolder().getStorageSystem().getPlayer(player.getUniqueId()); sunburstPlayer.displayName(null); return confMsg("nicknameRemoved"); } @@ -70,7 +70,7 @@ public class NicknameCMD extends SunburstCommand { return confMsg("commandCheckConsole", this.getUsage()); } - ISunburstPlayer sunburstPlayer = plugin.getHolder().getStorageSystem().getPlayer(player.getUniqueId()); + ISunburstPlayer sunburstPlayer = plugin.getObjectHolder().getStorageSystem().getPlayer(player.getUniqueId()); String nickname = args[0]; nickname = nickname.replace("", "").replace("
", ""); Component newNickname = MiniMessage.miniMessage().deserialize(nickname, ComponentUtil.REGULAR_TAGS); diff --git a/server/src/main/java/dev/plex/listener/impl/player/ChatListener.java b/server/src/main/java/dev/plex/listener/impl/player/ChatListener.java index c050e27..b2c1e2f 100644 --- a/server/src/main/java/dev/plex/listener/impl/player/ChatListener.java +++ b/server/src/main/java/dev/plex/listener/impl/player/ChatListener.java @@ -3,16 +3,17 @@ package dev.plex.listener.impl.player; import dev.plex.listener.SunburstListener; import io.papermc.paper.event.player.AsyncChatEvent; import org.bukkit.event.EventHandler; +import org.bukkit.event.EventPriority; public class ChatListener extends SunburstListener { - @EventHandler + @EventHandler(priority = EventPriority.HIGHEST) public void onChat(AsyncChatEvent event) { if (!plugin.getConfiguration().getBoolean("options.chat")) { return; } - event.renderer(plugin.getHolder().getChatRenderer()); + event.renderer(plugin.getObjectHolder().getChatRenderer()); } } diff --git a/server/src/main/java/dev/plex/listener/impl/player/JoinListener.java b/server/src/main/java/dev/plex/listener/impl/player/JoinListener.java index 5cb30eb..1dd8445 100644 --- a/server/src/main/java/dev/plex/listener/impl/player/JoinListener.java +++ b/server/src/main/java/dev/plex/listener/impl/player/JoinListener.java @@ -18,11 +18,11 @@ public class JoinListener extends SunburstListener public void createPlayer(PlayerJoinEvent event) { final Player player = event.getPlayer(); - ISunburstPlayer sunburstPlayer = plugin.getHolder().getStorageSystem().getPlayer(player.getUniqueId()); + ISunburstPlayer sunburstPlayer = plugin.getObjectHolder().getStorageSystem().getPlayer(player.getUniqueId()); if (sunburstPlayer == null) { sunburstPlayer = new SunburstPlayer(player.getUniqueId(), player.getName(), player.getAddress().getAddress().getHostAddress()); - plugin.getHolder().getStorageSystem().createPlayer(sunburstPlayer); + plugin.getObjectHolder().getStorageSystem().createPlayer(sunburstPlayer); } plugin.getPlayerCache().addPlayer(sunburstPlayer); if (sunburstPlayer.displayName() != null) @@ -36,7 +36,7 @@ public class JoinListener extends SunburstListener { final Player player = event.getPlayer(); plugin.getPlayerCache().getPlayer(player.getUniqueId()).ifPresent(sunburstPlayer -> { - plugin.getHolder().getStorageSystem().updatePlayer(sunburstPlayer); + plugin.getObjectHolder().getStorageSystem().updatePlayer(sunburstPlayer); plugin.getPlayerCache().removePlayer(sunburstPlayer); }); }