diff --git a/server/src/main/java/dev/plex/command/impl/BanCMD.java b/server/src/main/java/dev/plex/command/impl/BanCMD.java index 5ef9aa3..5a965a8 100644 --- a/server/src/main/java/dev/plex/command/impl/BanCMD.java +++ b/server/src/main/java/dev/plex/command/impl/BanCMD.java @@ -63,12 +63,12 @@ public class BanCMD extends PlexCommand { reason = StringUtils.join(args, " ", 1, args.length); String newReason = StringUtils.normalizeSpace(reason.replace("-nrb", "")); - punishment.setReason(newReason.trim().isEmpty() ? "No reason provided." : newReason); + punishment.setReason(newReason.trim().isEmpty() ? messageString("noReasonProvided") : newReason); rollBack = reason.startsWith("-rb") || reason.endsWith("-rb"); } else { - punishment.setReason("No reason provided."); + punishment.setReason(messageString("noReasonProvided")); } punishment.setPunishedUsername(plexPlayer.getName()); ZonedDateTime date = ZonedDateTime.now(ZoneId.of(TimeUtils.TIMEZONE)); diff --git a/server/src/main/java/dev/plex/command/impl/BcastLoginMessageCMD.java b/server/src/main/java/dev/plex/command/impl/BcastLoginMessageCMD.java index bfc69d8..2eac9e4 100644 --- a/server/src/main/java/dev/plex/command/impl/BcastLoginMessageCMD.java +++ b/server/src/main/java/dev/plex/command/impl/BcastLoginMessageCMD.java @@ -41,7 +41,7 @@ public class BcastLoginMessageCMD extends PlexCommand if (!loginMessage.isEmpty()) { PlexUtils.broadcast(PlexUtils.stringToComponent(loginMessage)); - PlexUtils.broadcast(mmString("" + plexPlayer.getName() + " joined the game")); + PlexUtils.broadcast(messageComponent("loginMessage", plexPlayer.getName())); } else { @@ -56,4 +56,4 @@ public class BcastLoginMessageCMD extends PlexCommand { return args.length == 1 && silentCheckPermission(sender, this.getPermission()) ? PlexUtils.getPlayerNameList() : ImmutableList.of(); } -} \ No newline at end of file +} diff --git a/server/src/main/java/dev/plex/command/impl/DebugCMD.java b/server/src/main/java/dev/plex/command/impl/DebugCMD.java index a1635f2..02f6a2c 100644 --- a/server/src/main/java/dev/plex/command/impl/DebugCMD.java +++ b/server/src/main/java/dev/plex/command/impl/DebugCMD.java @@ -41,9 +41,9 @@ public class DebugCMD extends PlexCommand if (plugin.getRedisConnection().getJedis().exists(player.getUniqueId().toString())) { plugin.getRedisConnection().getJedis().del(player.getUniqueId().toString()); - return componentFromString("Successfully reset " + player.getName() + "'s Redis punishments!").color(NamedTextColor.YELLOW); + return messageComponent("redisResetSuccessful", player.getName()); } - return componentFromString("Couldn't find player in Redis punishments."); + return messageComponent("redisResetPlayerNotFound"); } } if (args[0].equalsIgnoreCase("gamerules")) @@ -62,7 +62,7 @@ public class DebugCMD extends PlexCommand PlexLog.log("Set specific gamerules for world: " + world.toLowerCase(Locale.ROOT)); } } - return mmString("Re-applied game all the game rules!"); + return messageComponent("reappliedGamerules"); } if (args[0].equalsIgnoreCase("aliases")) { @@ -72,9 +72,9 @@ public class DebugCMD extends PlexCommand Command command = plugin.getServer().getCommandMap().getCommand(commandName); if (command == null) { - return mmString("That command could not be found!"); + return messageComponent("commandNotFound"); } - return mmString("Aliases for " + commandName + " are: " + Arrays.toString(command.getAliases().toArray(new String[0]))); + return messageComponent("commandAliases", commandName, Arrays.toString(command.getAliases().toArray(new String[0]))); } } if (args[0].equalsIgnoreCase("pagination")) @@ -94,4 +94,4 @@ public class DebugCMD extends PlexCommand { return args.length == 1 && silentCheckPermission(sender, this.getPermission()) ? PlexUtils.getPlayerNameList() : ImmutableList.of(); } -} \ No newline at end of file +} diff --git a/server/src/main/java/dev/plex/command/impl/EntityWipeCMD.java b/server/src/main/java/dev/plex/command/impl/EntityWipeCMD.java index 2904815..936ee32 100644 --- a/server/src/main/java/dev/plex/command/impl/EntityWipeCMD.java +++ b/server/src/main/java/dev/plex/command/impl/EntityWipeCMD.java @@ -134,7 +134,7 @@ public class EntityWipeCMD extends PlexCommand } catch (NumberFormatException ex) { - sender.sendMessage(mmString("" + string + " is not a valid number!")); + sender.sendMessage(messageComponent("notANumber", string)); } return null; } @@ -155,4 +155,4 @@ public class EntityWipeCMD extends PlexCommand } return true; } -} \ No newline at end of file +} diff --git a/server/src/main/java/dev/plex/command/impl/KickCMD.java b/server/src/main/java/dev/plex/command/impl/KickCMD.java index ffe5078..af15a5c 100644 --- a/server/src/main/java/dev/plex/command/impl/KickCMD.java +++ b/server/src/main/java/dev/plex/command/impl/KickCMD.java @@ -38,7 +38,7 @@ public class KickCMD extends PlexCommand } PlexPlayer plexPlayer = DataUtils.getPlayer(args[0]); - String reason = "No reason provided"; + String reason = messageString("noReasonProvided"); if (plexPlayer == null) { @@ -74,4 +74,4 @@ public class KickCMD extends PlexCommand { return args.length == 1 && silentCheckPermission(sender, this.getPermission()) ? PlexUtils.getPlayerNameList() : ImmutableList.of(); } -} \ No newline at end of file +} diff --git a/server/src/main/java/dev/plex/command/impl/ListCMD.java b/server/src/main/java/dev/plex/command/impl/ListCMD.java index 809d857..b57a6c5 100644 --- a/server/src/main/java/dev/plex/command/impl/ListCMD.java +++ b/server/src/main/java/dev/plex/command/impl/ListCMD.java @@ -2,6 +2,7 @@ package dev.plex.command.impl; import com.google.common.collect.Lists; import dev.plex.command.PlexCommand; +import dev.plex.util.PlexUtils; import dev.plex.command.annotation.CommandParameters; import dev.plex.command.annotation.CommandPermissions; import dev.plex.hook.VaultHook; @@ -27,17 +28,7 @@ public class ListCMD extends PlexCommand List players = Lists.newArrayList(Bukkit.getOnlinePlayers()); players.removeIf(PlayerMeta::isVanished); Component list = Component.empty(); - Component header = Component.text("There " + (players.size() == 1 ? "is" : "are") + " currently").color(NamedTextColor.GRAY) - .append(Component.space()) - .append(Component.text(players.size()).color(NamedTextColor.YELLOW)) - .append(Component.space()) - .append(Component.text(players.size() == 1 ? "player" : "players").color(NamedTextColor.GRAY)) - .append(Component.space()) - .append(Component.text("online out of").color(NamedTextColor.GRAY)) - .append(Component.space()) - .append(Component.text(Bukkit.getMaxPlayers()).color(NamedTextColor.YELLOW)) - .append(Component.space()) - .append(Component.text(Bukkit.getMaxPlayers() == 1 ? "player." : "players.").color(NamedTextColor.GRAY)); + Component header = PlexUtils.messageComponent(players.size() == 1 ? "listHeader" : "listHeaderPlural", players.size(), Bukkit.getMaxPlayers()); send(sender, header); if (players.isEmpty()) { diff --git a/server/src/main/java/dev/plex/command/impl/NotesCMD.java b/server/src/main/java/dev/plex/command/impl/NotesCMD.java index ca0eb88..ab36610 100644 --- a/server/src/main/java/dev/plex/command/impl/NotesCMD.java +++ b/server/src/main/java/dev/plex/command/impl/NotesCMD.java @@ -124,11 +124,11 @@ public class NotesCMD extends PlexCommand private void readNotes(@NotNull CommandSender sender, PlexPlayer plexPlayer, List notes) { - AtomicReference noteList = new AtomicReference<>(Component.text("Player notes for: " + plexPlayer.getName()).color(NamedTextColor.GREEN)); + AtomicReference noteList = new AtomicReference<>(messageComponent("notesHeader", plexPlayer.getName())); for (Note note : notes) { - Component noteLine = mmString("" + note.getId() + " - Written by: " + DataUtils.getPlayer(note.getWrittenBy()).getName() + " on " + TimeUtils.useTimezone(note.getTimestamp())); - noteLine = noteLine.append(mmString("# " + note.getNote())); + Component noteLine = messageComponent("notePrefix", note.getId(), DataUtils.getPlayer(note.getWrittenBy()).getName(), TimeUtils.useTimezone(note.getTimestamp())); + noteLine = noteLine.append(messageComponent("noteLine", note.getNote())); noteList.set(noteList.get().append(Component.newline())); noteList.set(noteList.get().append(noteLine)); } @@ -152,4 +152,4 @@ public class NotesCMD extends PlexCommand } return Collections.emptyList(); } -} \ No newline at end of file +} diff --git a/server/src/main/java/dev/plex/command/impl/SmiteCMD.java b/server/src/main/java/dev/plex/command/impl/SmiteCMD.java index 197208e..58fa334 100644 --- a/server/src/main/java/dev/plex/command/impl/SmiteCMD.java +++ b/server/src/main/java/dev/plex/command/impl/SmiteCMD.java @@ -78,21 +78,16 @@ public class SmiteCMD extends PlexCommand final Player player = getNonNullPlayer(args[0]); final PlexPlayer plexPlayer = getPlexPlayer(player); - Title title = Title.title(Component.text("You've been smitten.").color(NamedTextColor.RED), Component.text("Be sure to follow the rules!").color(NamedTextColor.YELLOW)); + Title title = Title.title(messageComponent("smiteTitleHeader"), messageComponent("smiteTitleMessage", reason, sender.getName())); player.showTitle(title); if (!silent) { - PlexUtils.broadcast(mmString("" + player.getName() + " has been a naughty, naughty boy.")); - if (reason != null) - { - PlexUtils.broadcast(mmString(" Reason: " + "" + reason)); - } - PlexUtils.broadcast(mmString(" Smitten by: " + "" + sender.getName())); + PlexUtils.broadcast(messageComponent("smiteBroadcast", player.getName(), reason != null ? reason : messageString("noReasonProvided"), sender.getName())); } else { - send(sender, "Smitten " + player.getName() + " quietly."); + send(sender, messageComponent("smittenQuietly", player.getName())); } // Set gamemode to survival @@ -129,8 +124,8 @@ public class SmiteCMD extends PlexCommand if (reason != null) { punishment.setReason(reason); - send(player, mmString("You've been smitten. Reason: " + reason)); } + send(player, messageComponent("smitten", reason != null ? reason : messageString("noReasonProvided"))); return null; } @@ -143,4 +138,4 @@ public class SmiteCMD extends PlexCommand } return Collections.emptyList(); } -} \ No newline at end of file +} diff --git a/server/src/main/java/dev/plex/command/impl/TempbanCMD.java b/server/src/main/java/dev/plex/command/impl/TempbanCMD.java index fa24afc..285781a 100644 --- a/server/src/main/java/dev/plex/command/impl/TempbanCMD.java +++ b/server/src/main/java/dev/plex/command/impl/TempbanCMD.java @@ -58,12 +58,12 @@ public class TempbanCMD extends PlexCommand { reason = StringUtils.join(args, " ", 2, args.length); String newReason = StringUtils.normalizeSpace(reason.replace("-nrb", "")); - punishment.setReason(newReason.trim().isEmpty() ? "No reason provided." : newReason); + punishment.setReason(newReason.trim().isEmpty() ? messageString("noReasonProvided") : newReason); rollBack = reason.startsWith("-rb") || reason.endsWith("-rb"); } else { - punishment.setReason("No reason provided."); + punishment.setReason(messageString("noReasonProvided")); } punishment.setPunishedUsername(target.getName()); punishment.setEndDate(TimeUtils.createDate(args[1])); diff --git a/server/src/main/java/dev/plex/listener/impl/AntiNukerListener.java b/server/src/main/java/dev/plex/listener/impl/AntiNukerListener.java index 447c003..9c4f8c6 100644 --- a/server/src/main/java/dev/plex/listener/impl/AntiNukerListener.java +++ b/server/src/main/java/dev/plex/listener/impl/AntiNukerListener.java @@ -1,6 +1,7 @@ package dev.plex.listener.impl; import dev.plex.listener.PlexListener; +import dev.plex.util.PlexUtils; import dev.plex.services.impl.TimingService; import net.kyori.adventure.text.Component; import org.bukkit.event.EventHandler; @@ -19,7 +20,7 @@ public class AntiNukerListener extends PlexListener if (getCount(event.getPlayer().getUniqueId()) > 200L) { TimingService.strikes.merge(event.getPlayer().getUniqueId(), 1L, Long::sum); - event.getPlayer().kick(Component.text("Please turn off your nuker!")); + event.getPlayer().kick(PlexUtils.messageComponent("nukerKickMessage")); event.setCancelled(true); } } @@ -31,7 +32,7 @@ public class AntiNukerListener extends PlexListener if (getCount(event.getPlayer().getUniqueId()) > 200L) { TimingService.strikes.merge(event.getPlayer().getUniqueId(), 1L, Long::sum); - event.getPlayer().kick(Component.text("Please turn off your nuker!")); + event.getPlayer().kick(PlexUtils.messageComponent("nukerKickMessage")); event.setCancelled(true); } } diff --git a/server/src/main/java/dev/plex/listener/impl/AntiSpamListener.java b/server/src/main/java/dev/plex/listener/impl/AntiSpamListener.java index 1de01e0..4b87aac 100644 --- a/server/src/main/java/dev/plex/listener/impl/AntiSpamListener.java +++ b/server/src/main/java/dev/plex/listener/impl/AntiSpamListener.java @@ -1,6 +1,7 @@ package dev.plex.listener.impl; import dev.plex.listener.PlexListener; +import dev.plex.util.PlexUtils; import dev.plex.services.impl.TimingService; import io.papermc.paper.event.player.AsyncChatEvent; import net.kyori.adventure.text.Component; @@ -19,7 +20,7 @@ public class AntiSpamListener extends PlexListener TimingService.spamCooldown.merge(event.getPlayer().getUniqueId(), 1L, Long::sum); if (getCount(event.getPlayer().getUniqueId()) > 8L) { - event.getPlayer().sendMessage(Component.text("Please refrain from spamming messages.").color(NamedTextColor.GRAY)); + event.getPlayer().sendMessage(PlexUtils.messageComponent("antiSpamMessage")); event.setCancelled(true); } } @@ -30,7 +31,7 @@ public class AntiSpamListener extends PlexListener TimingService.spamCooldown.merge(event.getPlayer().getUniqueId(), 1L, Long::sum); if (getCount(event.getPlayer().getUniqueId()) > 8L) { - event.getPlayer().sendMessage(Component.text("Please refrain from spamming commands.").color(NamedTextColor.GRAY)); + event.getPlayer().sendMessage(PlexUtils.messageComponent("antiSpamMessage")); event.setCancelled(true); } } diff --git a/server/src/main/java/dev/plex/listener/impl/PlayerListener.java b/server/src/main/java/dev/plex/listener/impl/PlayerListener.java index ebe8a51..9878f6b 100644 --- a/server/src/main/java/dev/plex/listener/impl/PlayerListener.java +++ b/server/src/main/java/dev/plex/listener/impl/PlayerListener.java @@ -71,11 +71,9 @@ public class PlayerListener extends PlexListener plugin.getSqlNotes().getNotes(plexPlayer.getUuid()).whenComplete((notes, ex) -> { - String plural = notes.size() == 1 ? "note." : "notes."; if (!notes.isEmpty()) { - PlexUtils.broadcastToAdmins(Component.text(plexPlayer.getName() + " has " + notes.size() + " " + plural).color(NamedTextColor.GOLD), "plex.notes.notify"); - PlexUtils.broadcastToAdmins(Component.text("Click to view their " + plural).clickEvent(ClickEvent.runCommand("/notes " + plexPlayer.getName() + " list")).color(NamedTextColor.GOLD), "plex.notes.notify"); + PlexUtils.broadcastToAdmins(PlexUtils.messageComponent(notes.size() == 1 ? "playerNoteAlert" : "playerNoteAlertPlural", plexPlayer.getName(), notes.size()), "plex.notes.notify"); } }); } diff --git a/server/src/main/java/dev/plex/listener/impl/WorldListener.java b/server/src/main/java/dev/plex/listener/impl/WorldListener.java index e789568..49982df 100644 --- a/server/src/main/java/dev/plex/listener/impl/WorldListener.java +++ b/server/src/main/java/dev/plex/listener/impl/WorldListener.java @@ -112,7 +112,8 @@ public class WorldListener extends PlexListener boolean isFaweCommand = command instanceof PluginIdentifiableCommand && ((PluginIdentifiableCommand) command).getPlugin().equals(Bukkit.getPluginManager().getPlugin("FastAsyncWorldEdit")); if (isWeCommand || isFaweCommand || EDIT_COMMANDS.contains(message.toLowerCase())) { - event.getPlayer().sendMessage(Component.text("You do not have permission to use that command in this world.").color(NamedTextColor.RED)); + String noEdit = plugin.config.getString("worlds." + event.getPlayer().getWorld().getName().toLowerCase() + ".modification.message"); + event.getPlayer().sendMessage(MiniMessage.miniMessage().deserialize(noEdit)); event.setCancelled(true); } } @@ -183,4 +184,4 @@ public class WorldListener extends PlexListener } return false; } -} \ No newline at end of file +} diff --git a/server/src/main/java/dev/plex/services/impl/BanService.java b/server/src/main/java/dev/plex/services/impl/BanService.java index d76f8b3..2d587f6 100644 --- a/server/src/main/java/dev/plex/services/impl/BanService.java +++ b/server/src/main/java/dev/plex/services/impl/BanService.java @@ -3,6 +3,7 @@ package dev.plex.services.impl; import dev.plex.Plex; import dev.plex.services.AbstractService; import dev.plex.util.TimeUtils; +import dev.plex.util.PlexUtils; import io.papermc.paper.threadedregions.scheduler.ScheduledTask; import net.kyori.adventure.text.Component; import org.bukkit.Bukkit; @@ -27,7 +28,7 @@ public class BanService extends AbstractService if (ZonedDateTime.now(ZoneId.of(TimeUtils.TIMEZONE)).isAfter(punishment.getEndDate())) { Plex.get().getPunishmentManager().unban(punishment); - Bukkit.broadcast(Component.text("Plex - Unbanned " + Bukkit.getOfflinePlayer(punishment.getPunished()).getName())); + Bukkit.broadcast(PlexUtils.messageComponent("banExpiredBroadcast", Bukkit.getOfflinePlayer(punishment.getPunished()).getName())); } }); }); diff --git a/server/src/main/resources/messages.yml b/server/src/main/resources/messages.yml index 9b97556..96576a9 100644 --- a/server/src/main/resources/messages.yml +++ b/server/src/main/resources/messages.yml @@ -27,6 +27,8 @@ indefBanMessageReason: "Your {0} is indefinitely banned! You may appeal at playerNotFound: "Player not found!" specifyPlayer: "You must specify a player!" worldNotFound: "World not found!" +# This will always be used for punishments where the sanctioning administrator has not provided a reason. Will ignore MiniMessage tags. +noReasonProvided: "No reason provided." # 0 - The world you have been teleported to playerWorldTeleport: "You have been teleported to {0}." # 0 - The person who is freezing @@ -210,3 +212,51 @@ playersMaterialCleared: "{0} has been removed from the following players: nobodyHasThatMaterial: "No one online has that in their inventory." # 0 - The attempted material name materialNotFound: "{0} is not a valid item/block name." +# 0 - The players name +loginMessage: "{0} joined the game" +# 0 - The string that wasn't a valid integer +notANumber: "{0} is not a valid number!" +# 0 - Players currently online +# 1 - Max players +listHeader: "There is currently {0} player online out of {1} players." +# 0 - Players currently online +# 1 - Max players +listHeaderPlural: "There are currently {0} players online out of {1} players." +# 0 - Player who is having their notes fetched +notesHeader: "Player notes for: {0}" +# 0 - Note ID +# 1 - Author of the note +# 2 - Timestamp +notePrefix: "{0} - Written by: {1} on {2}" +# 0 - The content of the note +noteLine: "# {0}" +# 0 - The player +# 1 - The number of notes logged for said player +playerNoteAlert: "{0} has {1} note. Click here to view their note." +# 0 - The player +# 1 - The number of notes logged for said player +playerNoteAlertPlural: "{0} has {1} notes. Click here to view their notes." +smiteTitleHeader: "You've been smitten." +# 0 - The reason for the smite. Will default to noReasonProvided if no reason is specified. +# 1 - The admin / staff member +smiteTitleMessage: "Be sure to follow the rules!" +# 0 - The player +# 1 - The reason for the smite. Will default to noReasonProvided if no reason is specified. +# 2 - The admin / staff member +smiteBroadcast: "{0} has been a naughty, naughty boy. - Reason: {1} - Smitten by: {2}" +# 0 - The player +smittenQuietly: "Smitten {0} quietly." +# 0 - The reason for being smitten +smitten: "You've been smitten. Reason: {0}" +nukerKickMessage: "Please turn off your nuker!" +antiSpamMessage: "Please refrain from spamming messages." +# 0 - The player +banExpiredBroadcast: "Plex - Automatically unbanning {0}" +# 0 - The player +redisResetSuccessful: "Successfuly reset {0}'s Redis punishments!" +redisResetPlayerNotFound: "Couldn't find player in Redis punishments." +reappliedGamerules: "All game rules have been re-applied!" +commandNotFound: "That command could not be found!" +# 0 - The command +# 1 - A list of aliases found +commandAliases: "Aliases for {0} are: {1}"