modify the API a bit so an API user can access and set fields in the object holder

This commit is contained in:
Taah 2022-04-24 07:23:59 -07:00
parent 15bad44300
commit efe60c7976
9 changed files with 77 additions and 34 deletions

View File

@ -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<Jar>("shadowJar") {
tasks.getByName<Jar>("jar") {
archiveBaseName.set("Sunburst")
archiveClassifier.set("API")
archiveClassifier.set("")
}
tasks.register<Wrapper>("wrapper")
{
gradleVersion = "7.4.2"
}
tasks.register("prepareKotlinBuildScriptModel"){}
tasks.register("prepareKotlinBuildScriptModel"){}
publishing {
publications {
create<MavenPublication>("maven") {
groupId = project.group as String
version = project.version as String
artifactId = "sunburst-api"
from(components["java"])
}
}
}

View File

@ -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;
}
}

View File

@ -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));
}
}

View File

@ -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<Copy>("copyJars") {
from(subprojects.map { it.tasks.getByName<Jar>("shadowJar") })
from(subprojects.filter {
it.tasks.findByName("shadowJar") != null
}.map {
it.tasks.getByName<Jar>("shadowJar")
})
into(file("build/libs"))
}

View File

@ -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);
});
}

View File

@ -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;

View File

@ -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("<newline>", "").replace("<br>", "");
Component newNickname = MiniMessage.miniMessage().deserialize(nickname, ComponentUtil.REGULAR_TAGS);

View File

@ -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());
}
}

View File

@ -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);
});
}