add /csay

make /say and /csay not parse minimessage messages
add a strip color function to strip a message of minimessage strings
This commit is contained in:
Taah 2022-04-10 15:27:25 -07:00
parent b449d732b0
commit dc65187381
7 changed files with 62 additions and 12 deletions

View File

@ -0,0 +1,31 @@
package dev.plex.command.impl;
import dev.plex.command.PlexCommand;
import dev.plex.command.annotation.CommandParameters;
import dev.plex.command.annotation.CommandPermissions;
import dev.plex.command.source.RequiredCommandSource;
import dev.plex.rank.enums.Rank;
import dev.plex.util.PlexUtils;
import net.kyori.adventure.text.Component;
import org.apache.commons.lang.StringUtils;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
@CommandPermissions(level = Rank.ADMIN, permission = "plex.consolesay", source = RequiredCommandSource.CONSOLE)
@CommandParameters(name = "consolesay", usage = "/<command> <message>", description = "Displays a message to everyone", aliases = "csay")
public class ConsoleSayCommand extends PlexCommand
{
@Override
protected Component execute(@NotNull CommandSender sender, @Nullable Player playerSender, String[] args)
{
if (args.length == 0)
{
return usage();
}
PlexUtils.broadcast(PlexUtils.messageComponent("consoleSayCommand", sender.getName(), PlexUtils.mmStripColor(StringUtils.join(args, " "))));
return null;
}
}

View File

@ -173,8 +173,8 @@ public class NotesCMD extends PlexCommand
AtomicReference<Component> noteList = new AtomicReference<>(Component.text("Player notes for: " + plexPlayer.getName()).color(NamedTextColor.GREEN)); AtomicReference<Component> noteList = new AtomicReference<>(Component.text("Player notes for: " + plexPlayer.getName()).color(NamedTextColor.GREEN));
for (Note note : notes) for (Note note : notes)
{ {
Component noteLine = Component.text(note.getId() + " - Written by: " + DataUtils.getPlayer(note.getWrittenBy()).getName() + " on " + DATE_FORMAT.format(note.getTimestamp())).color(NamedTextColor.YELLOW).decoration(TextDecoration.ITALIC, false); Component noteLine = mmString("<gold><!italic>" + note.getId() + " - Written by: " + DataUtils.getPlayer(note.getWrittenBy()).getName() + " on " + DATE_FORMAT.format(note.getTimestamp()));
noteLine = noteLine.append(Component.space()).append(Component.text(note.getNote())).color(NamedTextColor.YELLOW).decoration(TextDecoration.ITALIC, true); noteLine = noteLine.append(mmString("<newline><yellow># " + note.getNote()));
noteList.set(noteList.get().append(Component.newline())); noteList.set(noteList.get().append(Component.newline()));
noteList.set(noteList.get().append(noteLine)); noteList.set(noteList.get().append(noteLine));
} }

View File

@ -7,6 +7,7 @@ import dev.plex.command.source.RequiredCommandSource;
import dev.plex.rank.enums.Rank; import dev.plex.rank.enums.Rank;
import dev.plex.util.PlexUtils; import dev.plex.util.PlexUtils;
import net.kyori.adventure.text.Component; import net.kyori.adventure.text.Component;
import net.kyori.adventure.text.serializer.plain.PlainTextComponentSerializer;
import org.apache.commons.lang.StringUtils; import org.apache.commons.lang.StringUtils;
import org.bukkit.command.CommandSender; import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
@ -25,7 +26,7 @@ public class SayCMD extends PlexCommand
return usage(); return usage();
} }
PlexUtils.broadcast(PlexUtils.messageComponent("sayCommand", sender.getName(), StringUtils.join(args, " "))); PlexUtils.broadcast(PlexUtils.messageComponent("sayCommand", sender.getName(), PlexUtils.mmStripColor(StringUtils.join(args, " "))));
return null; return null;
} }
} }

View File

@ -5,6 +5,7 @@ import dev.plex.cache.DataUtils;
import dev.plex.cache.player.PlayerCache; import dev.plex.cache.player.PlayerCache;
import dev.plex.player.PlexPlayer; import dev.plex.player.PlexPlayer;
import dev.plex.punishment.Punishment; import dev.plex.punishment.Punishment;
import dev.plex.util.PlexUtils;
import dev.plex.util.menu.AbstractMenu; import dev.plex.util.menu.AbstractMenu;
import java.util.Collections; import java.util.Collections;
import java.util.List; import java.util.List;
@ -34,7 +35,7 @@ public class PunishedPlayerMenu extends AbstractMenu
this.punishedPlayer = player; this.punishedPlayer = player;
for (int i = 0; i <= punishedPlayer.getPunishments().size() / 53; i++) for (int i = 0; i <= punishedPlayer.getPunishments().size() / 53; i++)
{ {
Inventory inventory = Bukkit.createInventory(null, 54, "Punishments Page " + (i + 1)); Inventory inventory = Bukkit.createInventory(null, 54, PlexUtils.mmDeserialize("Punishments Page " + (i + 1)));
ItemStack nextPage = new ItemStack(Material.FEATHER); ItemStack nextPage = new ItemStack(Material.FEATHER);
ItemMeta meta = nextPage.getItemMeta(); ItemMeta meta = nextPage.getItemMeta();
meta.displayName(Component.text("Next Page").color(NamedTextColor.LIGHT_PURPLE)); meta.displayName(Component.text("Next Page").color(NamedTextColor.LIGHT_PURPLE));

View File

@ -3,6 +3,7 @@ package dev.plex.menu;
import com.google.common.collect.Lists; import com.google.common.collect.Lists;
import dev.plex.cache.DataUtils; import dev.plex.cache.DataUtils;
import dev.plex.player.PlexPlayer; import dev.plex.player.PlexPlayer;
import dev.plex.util.PlexUtils;
import dev.plex.util.menu.AbstractMenu; import dev.plex.util.menu.AbstractMenu;
import java.util.List; import java.util.List;
import org.bukkit.Bukkit; import org.bukkit.Bukkit;
@ -27,15 +28,15 @@ public class PunishmentMenu extends AbstractMenu
super("§c§lPunishments"); super("§c§lPunishments");
for (int i = 0; i <= Bukkit.getOnlinePlayers().size() / 53; i++) for (int i = 0; i <= Bukkit.getOnlinePlayers().size() / 53; i++)
{ {
Inventory inventory = Bukkit.createInventory(null, 54, "Punishments Page " + (i + 1)); Inventory inventory = Bukkit.createInventory(null, 54, PlexUtils.mmDeserialize("Punishments Page " + (i + 1)));
ItemStack nextPage = new ItemStack(Material.FEATHER); ItemStack nextPage = new ItemStack(Material.FEATHER);
ItemMeta meta = nextPage.getItemMeta(); ItemMeta meta = nextPage.getItemMeta();
meta.setDisplayName(ChatColor.LIGHT_PURPLE + "Next Page"); meta.displayName(PlexUtils.mmDeserialize("<light_purple>Next Page"));
nextPage.setItemMeta(meta); nextPage.setItemMeta(meta);
ItemStack previousPage = new ItemStack(Material.FEATHER); ItemStack previousPage = new ItemStack(Material.FEATHER);
ItemMeta meta2 = previousPage.getItemMeta(); ItemMeta meta2 = previousPage.getItemMeta();
meta2.setDisplayName(ChatColor.LIGHT_PURPLE + "Previous Page"); meta2.displayName(PlexUtils.mmDeserialize("<light_purple>Previous Page"));
previousPage.setItemMeta(meta2); previousPage.setItemMeta(meta2);
inventory.setItem(50, nextPage); inventory.setItem(50, nextPage);
@ -72,7 +73,7 @@ public class PunishmentMenu extends AbstractMenu
ItemStack item = new ItemStack(Material.PLAYER_HEAD); ItemStack item = new ItemStack(Material.PLAYER_HEAD);
SkullMeta meta = (SkullMeta)item.getItemMeta(); SkullMeta meta = (SkullMeta)item.getItemMeta();
meta.setOwningPlayer(players); meta.setOwningPlayer(players);
meta.setDisplayName(ChatColor.YELLOW + players.getName()); meta.displayName(PlexUtils.mmDeserialize("<!italic><yellow>" + players.getName()));
item.setItemMeta(meta); item.setItemMeta(meta);
inv.setItem(currentItemIndex, item); inv.setItem(currentItemIndex, item);
@ -98,11 +99,19 @@ public class PunishmentMenu extends AbstractMenu
{ {
return; return;
} }
if (!event.getCurrentItem().hasItemMeta())
{
return;
}
if (!event.getCurrentItem().getItemMeta().hasDisplayName())
{
return;
}
ItemStack item = event.getCurrentItem(); ItemStack item = event.getCurrentItem();
event.setCancelled(true); event.setCancelled(true);
if (item.getType() == Material.FEATHER) if (item.getType() == Material.FEATHER)
{ {
if (item.getItemMeta().getDisplayName().equalsIgnoreCase(ChatColor.LIGHT_PURPLE + "Next Page")) if (item.getItemMeta().displayName().equals(PlexUtils.mmDeserialize("<light_purple>Next Page")))
{ {
if (getCurrentInventoryIndex(inv) + 1 > inventories.size() - 1) if (getCurrentInventoryIndex(inv) + 1 > inventories.size() - 1)
{ {
@ -114,7 +123,7 @@ public class PunishmentMenu extends AbstractMenu
} }
openInv((Player)event.getWhoClicked(), getCurrentInventoryIndex(inv) + 1); openInv((Player)event.getWhoClicked(), getCurrentInventoryIndex(inv) + 1);
} }
else if (item.getItemMeta().getDisplayName().equalsIgnoreCase(ChatColor.LIGHT_PURPLE + "Previous Page")) else if (item.getItemMeta().displayName().equals(PlexUtils.mmDeserialize("<light_purple>Previous Page")))
{ {
if (getCurrentInventoryIndex(inv) - 1 < 0) if (getCurrentInventoryIndex(inv) - 1 < 0)
{ {

View File

@ -157,6 +157,11 @@ public class PlexUtils extends PlexBase
StandardTags.reset() StandardTags.reset()
).build()).build(); ).build()).build();
public static String mmStripColor(String input)
{
return PlainTextComponentSerializer.plainText().serialize(mmDeserialize(input));
}
public static Component mmDeserialize(String input) public static Component mmDeserialize(String input)
{ {
boolean aprilFools = true; // true by default boolean aprilFools = true; // true by default
@ -336,7 +341,7 @@ public class PlexUtils extends PlexBase
public static void broadcast(String s) public static void broadcast(String s)
{ {
Bukkit.broadcast(LegacyComponentSerializer.legacyAmpersand().deserialize(s)); Bukkit.broadcast(MiniMessage.miniMessage().deserialize(s));
} }
public static void broadcast(Component component) public static void broadcast(Component component)

View File

@ -170,4 +170,7 @@ allowDropsEnabled: "<gray>Now allowing drops from players."
commandBlocked: "<gray>That command is blocked." commandBlocked: "<gray>That command is blocked."
# 0 - The command sender # 0 - The command sender
# 1 - The message being said # 1 - The message being said
sayCommand: "[Server: {0}] {1}" sayCommand: "<blue>[Server: {0}] {1}"
# 0 - The command sender
# 1 - The message being said
consoleSayCommand: "<gray>[Console: {0}] <white>{1}"