From 9a599f319ea6b66dad840466035b0dc589a2ea51 Mon Sep 17 00:00:00 2001 From: Liam Date: Thu, 28 Mar 2024 19:01:11 +0000 Subject: [PATCH] more mini message stuff --- .../java/cc/fascinated/chat/ChatManager.java | 49 +++++++++++++++---- .../command/impl/TotalJoinsCommand.java | 2 +- .../fascinated/command/impl/VoteCommand.java | 8 ++- src/main/java/cc/fascinated/config/Lang.java | 14 ++++-- .../worldsize/impl/WorldSizeCommand.java | 27 +++++++--- src/main/resources/lang.yml | 13 ++++- 6 files changed, 84 insertions(+), 29 deletions(-) diff --git a/src/main/java/cc/fascinated/chat/ChatManager.java b/src/main/java/cc/fascinated/chat/ChatManager.java index 725cc79..2288424 100644 --- a/src/main/java/cc/fascinated/chat/ChatManager.java +++ b/src/main/java/cc/fascinated/chat/ChatManager.java @@ -2,32 +2,63 @@ package cc.fascinated.chat; import cc.fascinated.account.Account; import cc.fascinated.account.AccountManager; +import cc.fascinated.config.Lang; import cc.fascinated.utils.Manager; +import cc.fascinated.utils.Style; import io.papermc.paper.event.player.AsyncChatEvent; import net.kyori.adventure.text.Component; +import net.kyori.adventure.text.TextComponent; import net.kyori.adventure.text.event.ClickEvent; import net.kyori.adventure.text.format.NamedTextColor; +import net.kyori.adventure.text.minimessage.MiniMessage; import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.regex.Pattern; + public class ChatManager extends Manager { + private final HashMap lastMessage = new HashMap<>(); + private final Pattern domainPattern = Pattern.compile("^((?!-)[A-Za-z0-9-]{1,63}(? { - return Component.text() - .append(Component.text("<")) - .append(player.displayName().color(color)) - .append(Component.text(">")) - .append(Component.space()) - .append(message) - .hoverEvent(Component.text("Click to message " + player.getName() + ".").hoverEvent()) - .clickEvent(ClickEvent.clickEvent(ClickEvent.Action.SUGGEST_COMMAND, "/msg " + player.getName() + " ")) - .asComponent(); + MiniMessage miniMessage = Style.getMiniMessage(); + return miniMessage.deserialize(Lang.CHAT_FORMAT.getAsString() + .replace("%chatcolor%", color.toString()) + .replace("%name%", account.getName()) + .replace("%message%", miniMessage.stripTags(messageContent)) + ); }); + lastMessage.put(account, messageContent); } } diff --git a/src/main/java/cc/fascinated/command/impl/TotalJoinsCommand.java b/src/main/java/cc/fascinated/command/impl/TotalJoinsCommand.java index 9d47fa7..f5ea852 100644 --- a/src/main/java/cc/fascinated/command/impl/TotalJoinsCommand.java +++ b/src/main/java/cc/fascinated/command/impl/TotalJoinsCommand.java @@ -13,6 +13,6 @@ public class TotalJoinsCommand extends Command { @Override public void execute(Account account, String[] args) { - account.sendMessage(Lang.PREFIX.getAsString() + "§fTotal joins: §e" + Bukkit.getOfflinePlayers().length + "§f."); + account.sendMessage(Lang.TOTAL_JOINS_COMMAND.getAsString()); } } diff --git a/src/main/java/cc/fascinated/command/impl/VoteCommand.java b/src/main/java/cc/fascinated/command/impl/VoteCommand.java index ee98c44..b5c8283 100644 --- a/src/main/java/cc/fascinated/command/impl/VoteCommand.java +++ b/src/main/java/cc/fascinated/command/impl/VoteCommand.java @@ -5,8 +5,6 @@ import cc.fascinated.command.Command; import cc.fascinated.config.Lang; import cc.fascinated.utils.ChatUtils; import cc.fascinated.utils.Style; -import net.kyori.adventure.text.Component; -import net.kyori.adventure.text.event.ClickEvent; import java.util.List; @@ -18,10 +16,10 @@ public class VoteCommand extends Command { @Override public void execute(Account account, String[] args) { - account.sendMessage(ChatUtils.color(Lang.VOTE_HEADER.getAsString())); - List voteLinks = Lang.VOTE_LINKS.getAsStringList(); + account.sendMessage(ChatUtils.color(Lang.VOTE_COMMAND_HEADER.getAsString())); + List voteLinks = Lang.VOTE_COMMAND_LINKS.getAsStringList(); for (String link : voteLinks) { - account.sendMessage(Style.getMiniMessage().deserialize(Lang.VOTE_FORMAT.getAsString() + account.sendMessage(Style.getMiniMessage().deserialize(Lang.VOTE_COMMAND_FORMAT.getAsString() .replace("%link%", link) .replace("%number%", String.valueOf(voteLinks.indexOf(link) + 1)) )); diff --git a/src/main/java/cc/fascinated/config/Lang.java b/src/main/java/cc/fascinated/config/Lang.java index 097b49f..e95ff21 100644 --- a/src/main/java/cc/fascinated/config/Lang.java +++ b/src/main/java/cc/fascinated/config/Lang.java @@ -13,11 +13,17 @@ public enum Lang { PREFIX("prefix"), HELP_COMMAND("help-command"), - VOTE_HEADER("vote.header"), - VOTE_FORMAT("vote.format"), - VOTE_LINKS("vote.links"), GIT_COMMAND("git-command"), - SEED_COMMAND("seed-command"); + SEED_COMMAND("seed-command"), + TOTAL_JOINS_COMMAND("total-joins-command"), + WORLD_SIZE_COMMAND_HEADER("world-size-command.header"), + WORLD_SIZE_COMMAND_FORMAT("world-size-command.format"), + WORLD_SIZE_COMMAND_FOOTER("world-size-command.footer"), + VOTE_COMMAND_HEADER("vote-command.header"), + VOTE_COMMAND_FORMAT("vote-command.format"), + VOTE_COMMAND_LINKS("vote-command.links"), + BLOCKED_MESSAGE("blocked-message"), + CHAT_FORMAT("chat-format"); /** * The path of the lang in the lang.yml file. diff --git a/src/main/java/cc/fascinated/worldsize/impl/WorldSizeCommand.java b/src/main/java/cc/fascinated/worldsize/impl/WorldSizeCommand.java index 112002a..cfa47c1 100644 --- a/src/main/java/cc/fascinated/worldsize/impl/WorldSizeCommand.java +++ b/src/main/java/cc/fascinated/worldsize/impl/WorldSizeCommand.java @@ -9,6 +9,8 @@ import cc.fascinated.worldsize.WorldSizeManager; import org.bukkit.World; import java.util.Map; +import java.util.concurrent.atomic.AtomicLong; +import java.util.stream.Stream; public class WorldSizeCommand extends Command { @@ -18,14 +20,23 @@ public class WorldSizeCommand extends Command { @Override public void execute(Account account, String[] args) { - account.sendMessage(Lang.PREFIX + "§fWorld information:"); - long totalSize = 0; - for (Map.Entry entry : WorldSizeManager.getWorldSizes().entrySet()) { - long size = entry.getValue(); - account.sendMessage(" §7- §f" + entry.getKey().getName() + ": §e" + FormatterUtils.formatBytes(size) + "§f."); - totalSize += size; + account.sendMessage(Lang.WORLD_SIZE_COMMAND_HEADER.getAsString()); + AtomicLong totalSize = new AtomicLong(); + Stream> sorted = WorldSizeManager.getWorldSizes().entrySet().stream() + .sorted((o1, o2) -> Long.compare(o2.getValue(), o1.getValue())); + sorted.forEach((entry) -> { + account.sendMessage(Lang.WORLD_SIZE_COMMAND_FORMAT.getAsString() + .replace("%world%", entry.getKey().getName()) + .replace("%size%", FormatterUtils.formatBytes(entry.getValue())) + ); + totalSize.addAndGet(entry.getValue()); + }); + + for (String line : Lang.WORLD_SIZE_COMMAND_FOOTER.getAsStringList()) { + account.sendMessage(line + .replace("%total%", FormatterUtils.formatBytes(totalSize.get())) + .replace("%time%", TimeUtils.format(System.currentTimeMillis() - WorldSizeManager.getLastUpdated())) + ); } - account.sendMessage(" §fTotal size: §e" + FormatterUtils.formatBytes(totalSize) + "§f."); - account.sendMessage(" §fLast updated: §e" + TimeUtils.format(System.currentTimeMillis() - WorldSizeManager.getLastUpdated()) + " ago§f."); } } diff --git a/src/main/resources/lang.yml b/src/main/resources/lang.yml index 23da61d..b167148 100644 --- a/src/main/resources/lang.yml +++ b/src/main/resources/lang.yml @@ -1,5 +1,8 @@ prefix: "AETHERIA » " +chat-format: "<<%chatcolor%>%name%> %message%" +blocked-message: "Your message has been blocked." + help-command: - "Commands:" - "/kill - Kills you" @@ -12,8 +15,14 @@ git-command: - " Build: %build%" - " Build date: %date%" seed-command: "The seed is: %seed%" - -vote: +total-joins-command: "Total joins: %joins%" +world-size-command: + header: "World information:" + format: " %world%: %size%" + footer: + - "Total size: %total%" + - "Last updated: %time% ago" +vote-command: header: "Vote for us on the following websites:" format: "%number%. %link%" links: