From 6e3f2af4101ff453719cb096b13da7bcb199ac8f Mon Sep 17 00:00:00 2001 From: oko Date: Thu, 21 Apr 2022 17:56:50 -0700 Subject: [PATCH] Add chat and nations --- pom.xml | 7 +--- src/main/java/moe/oko/opennaw/OpenNAW.java | 4 ++- .../oko/opennaw/command/NationCommand.java | 14 ++++---- src/main/java/moe/oko/opennaw/model/City.java | 19 ++++++++++ .../moe/oko/opennaw/util/ChatHandler.java | 36 +++++++++++++++++++ .../moe/oko/opennaw/util/GroupHandler.java | 13 ++++--- 6 files changed, 74 insertions(+), 19 deletions(-) create mode 100644 src/main/java/moe/oko/opennaw/model/City.java create mode 100644 src/main/java/moe/oko/opennaw/util/ChatHandler.java diff --git a/pom.xml b/pom.xml index 5b2e735..333639d 100644 --- a/pom.xml +++ b/pom.xml @@ -69,14 +69,9 @@ io.papermc.paper paper-api - 1.18.1-R0.1-SNAPSHOT + 1.18.2-R0.1-SNAPSHOT provided - - org.slf4j - slf4j-simple - 1.7.36 - net.luckperms api diff --git a/src/main/java/moe/oko/opennaw/OpenNAW.java b/src/main/java/moe/oko/opennaw/OpenNAW.java index b9ee3dd..347229e 100644 --- a/src/main/java/moe/oko/opennaw/OpenNAW.java +++ b/src/main/java/moe/oko/opennaw/OpenNAW.java @@ -1,6 +1,7 @@ package moe.oko.opennaw; import moe.oko.opennaw.command.NationCommand; +import moe.oko.opennaw.util.ChatHandler; import moe.oko.opennaw.util.GroupHandler; import moe.oko.opennaw.util.NationHandler; import net.luckperms.api.LuckPerms; @@ -34,8 +35,9 @@ public final class OpenNAW extends JavaPlugin { info("OpenNAW is enabled!"); - // Register Commands + // Register Commands & Events this.getCommand("nation").setExecutor(new NationCommand()); + getServer().getPluginManager().registerEvents(new ChatHandler(), this); } @Override diff --git a/src/main/java/moe/oko/opennaw/command/NationCommand.java b/src/main/java/moe/oko/opennaw/command/NationCommand.java index 51fa68d..088a1c6 100644 --- a/src/main/java/moe/oko/opennaw/command/NationCommand.java +++ b/src/main/java/moe/oko/opennaw/command/NationCommand.java @@ -2,8 +2,6 @@ package moe.oko.opennaw.command; import moe.oko.opennaw.OpenNAW; import moe.oko.opennaw.util.CommandHelper; -import net.luckperms.api.model.group.Group; -import org.bukkit.OfflinePlayer; import org.bukkit.command.Command; import org.bukkit.command.CommandSender; import org.bukkit.command.TabExecutor; @@ -22,7 +20,7 @@ public class NationCommand implements TabExecutor { if (args.length < 1) { return false; } - List nationList = OpenNAW.getInstance().getNationHandler().getNationList(); + var nationList = OpenNAW.getInstance().getNationHandler().getNationList(); switch (args[0]) { case "add" -> { @@ -31,7 +29,7 @@ public class NationCommand implements TabExecutor { return true; } - Group group = OpenNAW.getInstance().getGroupHandler().getGroupFromString(args[2]); + var group = OpenNAW.getInstance().getGroupHandler().getGroupFromString(args[2]); if (group == null) { sender.sendMessage("Group " + args[2] + " does not exist"); @@ -42,7 +40,7 @@ public class NationCommand implements TabExecutor { sender.sendMessage("Created nation " + args[1]); } case "list" -> { - final String msg = nationList.size() == 0 + final var msg = nationList.size() == 0 ? "There are no nations" : "There are " + nationList.size() + " nations: " + nationList; sender.sendMessage(msg); @@ -52,7 +50,7 @@ public class NationCommand implements TabExecutor { sender.sendMessage("Removed nation " + args[1]); } case "join" -> { - OfflinePlayer player = args.length < 3 + var player = args.length < 3 ? ((Player) sender).getPlayer() : OpenNAW.getInstance().getServer().getOfflinePlayer(args[2]); @@ -61,13 +59,13 @@ public class NationCommand implements TabExecutor { return true; } - Group group = OpenNAW.getInstance().getNationHandler().getNationGroup(args[1]); + var group = OpenNAW.getInstance().getNationHandler().getNationGroup(args[1]); OpenNAW.getInstance().getGroupHandler().addPlayerToGroup(player, group); sender.sendMessage("Added " + player.getName() + " to nation " + args[1]); } case "leave" -> { - OfflinePlayer player = args.length < 3 + var player = args.length < 3 ? ((Player) sender).getPlayer() : OpenNAW.getInstance().getServer().getOfflinePlayer(args[2]); OpenNAW.getInstance().getGroupHandler().removePlayerFromGroup(player); diff --git a/src/main/java/moe/oko/opennaw/model/City.java b/src/main/java/moe/oko/opennaw/model/City.java new file mode 100644 index 0000000..6a6a4dd --- /dev/null +++ b/src/main/java/moe/oko/opennaw/model/City.java @@ -0,0 +1,19 @@ +package moe.oko.opennaw.model; + +import org.bukkit.Location; + +public class City { + private String name; + private String resource; + private Nation owner; + private Location point; + private short health; + + public City(String name, String resource, Location location) { + this.name = name; + this.resource = resource; + this.owner = null; + this.point = location; + this.health = 500; + } +} \ No newline at end of file diff --git a/src/main/java/moe/oko/opennaw/util/ChatHandler.java b/src/main/java/moe/oko/opennaw/util/ChatHandler.java new file mode 100644 index 0000000..59991be --- /dev/null +++ b/src/main/java/moe/oko/opennaw/util/ChatHandler.java @@ -0,0 +1,36 @@ +package moe.oko.opennaw.util; + +import io.papermc.paper.event.player.AsyncChatEvent; +import moe.oko.opennaw.OpenNAW; +import net.kyori.adventure.audience.Audience; +import net.kyori.adventure.text.Component; +import net.kyori.adventure.text.format.TextColor; +import net.kyori.adventure.text.serializer.legacy.LegacyComponentSerializer; +import org.bukkit.Bukkit; +import org.bukkit.event.EventHandler; +import org.bukkit.event.EventPriority; +import org.bukkit.event.Listener; + +public class ChatHandler implements Listener { + + @EventHandler(priority = EventPriority.HIGHEST) + public void onChat(AsyncChatEvent e) { + var legacyComponentSerializer = LegacyComponentSerializer.builder().character('&').hexColors().build(); + var player = e.getPlayer(); + Audience audience; + + var nationString = "[" + OpenNAW.getInstance().getGroupHandler().getPrefixFromPlayer(player) + "&r] "; + var prefix = legacyComponentSerializer.deserialize(nationString); + var message = e.message(); + + e.setCancelled(true); + + audience = Audience.audience(Bukkit.getOnlinePlayers()); + + audience.sendMessage(prefix + .append(player.displayName().color(TextColor.fromHexString("#939597"))) + .append(Component.text(": ")) + .append(message)); + } + +} diff --git a/src/main/java/moe/oko/opennaw/util/GroupHandler.java b/src/main/java/moe/oko/opennaw/util/GroupHandler.java index 96b6e4d..6a963a3 100644 --- a/src/main/java/moe/oko/opennaw/util/GroupHandler.java +++ b/src/main/java/moe/oko/opennaw/util/GroupHandler.java @@ -7,13 +7,10 @@ import net.luckperms.api.node.Node; import net.luckperms.api.node.NodeType; import net.luckperms.api.node.types.InheritanceNode; import org.bukkit.OfflinePlayer; +import org.bukkit.entity.Player; public record GroupHandler(LuckPerms luckPerms) { - public Group getGroupFromString(String s) { - return this.luckPerms.getGroupManager().getGroup(s); - } - public void addPlayerToGroup(OfflinePlayer player, Group group) { this.luckPerms.getUserManager().modifyUser(player.getUniqueId(), (User user) -> { @@ -34,4 +31,12 @@ public record GroupHandler(LuckPerms luckPerms) { user.data().clear(NodeType.INHERITANCE::matches); }); } + + public Group getGroupFromString(String s) { + return this.luckPerms.getGroupManager().getGroup(s); + } + public String getPrefixFromPlayer(Player player) { + var user = this.luckPerms.getUserManager().getUser(player.getUniqueId()); + return user.getCachedData().getMetaData().getPrefix(); + } }