Finish converting command to MiniMessage

This commit is contained in:
Telesphoreo 2023-07-20 20:25:16 -05:00
parent ee441ae4b6
commit c77026bfda
No known key found for this signature in database
GPG Key ID: 9D1991811E093C02
2 changed files with 105 additions and 88 deletions

View File

@ -4,12 +4,8 @@ import java.util.ArrayList;
import java.util.Arrays; import java.util.Arrays;
import java.util.List; import java.util.List;
import java.util.Objects; import java.util.Objects;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import net.kyori.adventure.text.Component; import net.kyori.adventure.text.Component;
import net.kyori.adventure.text.format.NamedTextColor;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.bukkit.ChatColor;
import org.bukkit.Color; import org.bukkit.Color;
import org.bukkit.Material; import org.bukkit.Material;
import org.bukkit.NamespacedKey; import org.bukkit.NamespacedKey;
@ -685,12 +681,12 @@ public class ItemizerXCommand implements CommandExecutor, ItemizerXBase
} }
if (args.length == 1) if (args.length == 1)
{ {
sender.sendMessage(colorize(""" sender.sendMessage(mm.deserialize("""
&3===============&f[&dEnchant Commands&f]&3=============== <dark_aqua>===============<white>[<light_purple>Enchant Commands<white>]<dark_aqua>===============
&b/itemizer enchant add <&fname&b> <&flevel&b> &c- &6Add an enchant <aqua>/itemizer enchant add <<white>name<aqua>> <<white>level<aqua>> <red>- <gold>Add an enchant
&b/itemizer enchant remove <&fname&b> &c- &6Remove an enchant <aqua>/itemizer enchant remove <<white>name<aqua>> <red>- <gold>Remove an enchant
&b/itemizer enchant list &c- &6List all item's enchants <aqua>/itemizer enchant list <red>- <gold>List all item's enchants
&b/itemizer enchant listall &c- &6List all available enchants""")); <aqua>/itemizer enchant listall <red>- <gold>List all available enchants"""));
return true; return true;
} }
if (!hasItem) if (!hasItem)
@ -709,13 +705,14 @@ public class ItemizerXCommand implements CommandExecutor, ItemizerXBase
} }
if (args.length < 4) if (args.length < 4)
{ {
sender.sendMessage(colorize("&3===============&f[&dEnchant Commands&f]&3===============\n" + "&b/itemizer enchant add <&fname&b> <&flevel&b> &c- &6Add an enchant")); sender.sendMessage(mm.deserialize("<dark_aqua>===============<white>[<light_purple>Enchant Commands<white>]<dark_aqua>==============="));
sender.sendMessage(mm.deserialize("<aqua>/itemizer enchant add <<white>name<aqua>> <<white>level<aqua>> <red>- <gold>Add an enchant"));
return true; return true;
} }
final Enchantment ench = EnchantmentWrapper.getByKey(NamespacedKey.minecraft(args[2].toLowerCase())); final Enchantment ench = EnchantmentWrapper.getByKey(NamespacedKey.minecraft(args[2].toLowerCase()));
if (ench == null) if (ench == null)
{ {
sender.sendMessage(colorize("&4The enchantment &f'" + args[2] + "&f' &4does not exist!")); sender.sendMessage(mm.deserialize("<dark_red>The enchantment <white>'" + args[2] + "<white>' <dark_red>does not exist!"));
return true; return true;
} }
Integer level = parseInt(sender, args[3]); Integer level = parseInt(sender, args[3]);
@ -724,7 +721,7 @@ public class ItemizerXCommand implements CommandExecutor, ItemizerXBase
return true; return true;
} }
item.addUnsafeEnchantment(ench, level); item.addUnsafeEnchantment(ench, level);
sender.sendMessage(colorize("&2The enchant &f'" + ench.getKey().getKey() + "' &2has been added to your item")); sender.sendMessage(mm.deserialize("<dark_green>The enchant <white>'" + ench.getKey().getKey() + "' <dark_green>has been added to your item"));
return true; return true;
} }
case "remove" -> case "remove" ->
@ -736,28 +733,29 @@ public class ItemizerXCommand implements CommandExecutor, ItemizerXBase
} }
if (args.length == 2) if (args.length == 2)
{ {
sender.sendMessage(colorize("&3===============&f[&dEnchant Commands&f]&3===============\n" + "&b/itemizer enchant remove <&fname&b> &c- &6Remove an enchant")); sender.sendMessage(mm.deserialize("<dark_aqua>===============<white>[<light_purple>Enchant Commands<white>]<dark_aqua>==============="));
sender.sendMessage(mm.deserialize("<aqua>/itemizer enchant remove <<white>name<aqua>> <red>- <gold>Remove an enchant"));
return true; return true;
} }
final Enchantment ench = EnchantmentWrapper.getByKey(NamespacedKey.minecraft(args[2].toLowerCase())); final Enchantment ench = EnchantmentWrapper.getByKey(NamespacedKey.minecraft(args[2].toLowerCase()));
if (ench == null) if (ench == null)
{ {
sender.sendMessage(colorize("&4The enchantment &f'" + args[2] + "&f' &4does not exist!")); sender.sendMessage(mm.deserialize("<dark_red>The enchantment <white>'" + args[2] + "<white>' <dark_red>does not exist!"));
return true; return true;
} }
assert meta != null; assert meta != null;
if (Objects.requireNonNull(meta.getEnchants()).isEmpty()) if (Objects.requireNonNull(meta.getEnchants()).isEmpty())
{ {
sender.sendMessage(colorize("&4This item doesn't hold any enchants")); sender.sendMessage(mm.deserialize("<dark_red>This item doesn't hold any enchants"));
return true; return true;
} }
if (!meta.getEnchants().containsKey(ench)) if (!meta.getEnchants().containsKey(ench))
{ {
sender.sendMessage(colorize("&4This item doesn't have &f'" + ench.getKey().getKey() + "' &4enchant!")); sender.sendMessage(mm.deserialize("<dark_red>This item doesn't have <white<'" + ench.getKey().getKey() + "' <dark_red>enchant!"));
return true; return true;
} }
item.removeEnchantment(ench); item.removeEnchantment(ench);
sender.sendMessage(colorize("&2The enchant &f'" + ench.getKey().getKey() + "' &2has been removed from your item")); sender.sendMessage(mm.deserialize("<dark_green>The enchant <white>'" + ench.getKey().getKey() + "' <dark_green>has been removed from your item"));
return true; return true;
} }
case "list" -> case "list" ->
@ -770,10 +768,10 @@ public class ItemizerXCommand implements CommandExecutor, ItemizerXBase
assert meta != null; assert meta != null;
if (Objects.requireNonNull(meta.getEnchants()).isEmpty()) if (Objects.requireNonNull(meta.getEnchants()).isEmpty())
{ {
sender.sendMessage(colorize("&4This item doesn't hold any enchants")); sender.sendMessage(mm.deserialize("<dark_red>This item doesn't hold any enchants"));
return true; return true;
} }
sender.sendMessage(colorize("&2Item enchants: &e" + StringUtils.join(meta.getEnchants().keySet(), ", "))); sender.sendMessage(mm.deserialize("<dark_green>Item enchants: <yellow>" + StringUtils.join(meta.getEnchants().keySet(), ", ")));
return true; return true;
} }
case "listall" -> case "listall" ->
@ -789,12 +787,12 @@ public class ItemizerXCommand implements CommandExecutor, ItemizerXBase
{ {
sb.append(", ").append(enchantments[i].getKey().getKey()); sb.append(", ").append(enchantments[i].getKey().getKey());
} }
sender.sendMessage(colorize("&2Available item enchants: &e" + sb.toString().replaceFirst(", ", ""))); sender.sendMessage(mm.deserialize("<dark_green>Available item enchants: <yellow>" + sb.toString().replaceFirst(", ", "")));
return true; return true;
} }
default -> default ->
{ {
sender.sendMessage(colorize("&bUnknown sub-command. Type &6/itemizer enchant &bfor help.")); sender.sendMessage(mm.deserialize("<aqua>Unknown sub-command. Type <gold><click:run_command:/itemizer enchant>/itemizer enchant</click> <aqua>for help."));
return true; return true;
} }
} }
@ -808,7 +806,8 @@ public class ItemizerXCommand implements CommandExecutor, ItemizerXBase
} }
if (args.length == 1) if (args.length == 1)
{ {
sender.sendMessage(colorize("&3===============&f[&dTitle Command&f]&3===============\n" + "&b/itemizer title <&fname&b> &c- &6Set the book's title")); sender.sendMessage(mm.deserialize("<dark_aqua>===============<white>[<light_purple>Title Command<white>]<dark_aqua>==============="));
sender.sendMessage(mm.deserialize("<aqua>/itemizer title <<white>name<aqua>> <red>- <gold>Set the book's title"));
return true; return true;
} }
if (!hasBook) if (!hasBook)
@ -816,12 +815,12 @@ public class ItemizerXCommand implements CommandExecutor, ItemizerXBase
sender.sendMessage(mm.deserialize("<red>You do not have a Written Book in your hand.")); sender.sendMessage(mm.deserialize("<red>You do not have a Written Book in your hand."));
return true; return true;
} }
String name = colorize(StringUtils.join(args, " ", 1, args.length)); Component name = mm.deserialize(StringUtils.join(args, " ", 1, args.length));
final BookMeta bookMeta = (BookMeta)meta; final BookMeta bookMeta = (BookMeta)meta;
assert bookMeta != null; assert bookMeta != null;
bookMeta.setTitle(name); bookMeta.title(name);
item.setItemMeta(bookMeta); item.setItemMeta(bookMeta);
sender.sendMessage(colorize("&2The title of the book has been set to &f'" + name + "&f'")); sender.sendMessage(mm.deserialize("<dark_green>The title of the book has been set to <white'" + name + "<white>'"));
return true; return true;
} }
case "author" -> case "author" ->
@ -833,7 +832,8 @@ public class ItemizerXCommand implements CommandExecutor, ItemizerXBase
} }
if (args.length == 1) if (args.length == 1)
{ {
sender.sendMessage(colorize("&3===============&f[&dAuthor Command&f]&3===============\n" + "&b/itemizer author <&fname&b> &c- &6Set the book's title")); sender.sendMessage(mm.deserialize("<dark_aqua>===============<white>[<light_purple>Author Command<white>]<dark_aqua>==============="));
sender.sendMessage(mm.deserialize("<aqua>/itemizer author <<white>name<aqua>> <red>- <gold>Set the book's author"));
return true; return true;
} }
if (!hasBook) if (!hasBook)
@ -841,12 +841,12 @@ public class ItemizerXCommand implements CommandExecutor, ItemizerXBase
sender.sendMessage(mm.deserialize("<red>You do not have a Written Book in your hand.")); sender.sendMessage(mm.deserialize("<red>You do not have a Written Book in your hand."));
return true; return true;
} }
String name = colorize(args[1]); Component name = mm.deserialize(args[1]);
final BookMeta bookMeta = (BookMeta)meta; final BookMeta bookMeta = (BookMeta)meta;
assert bookMeta != null; assert bookMeta != null;
bookMeta.setAuthor(name); bookMeta.author(name);
item.setItemMeta(bookMeta); item.setItemMeta(bookMeta);
sender.sendMessage(colorize("&2The author of the book has been set to &f'" + name + "&f'")); sender.sendMessage(mm.deserialize("<dark_green>The author of the book has been set to <white>'" + name + "<white>'"));
return true; return true;
} }
case "head" -> case "head" ->
@ -858,7 +858,8 @@ public class ItemizerXCommand implements CommandExecutor, ItemizerXBase
} }
if (args.length == 1) if (args.length == 1)
{ {
sender.sendMessage(colorize("&3===============&f[&dHead Command&f]&3===============\n" + "&b/itemizer head <&fname&b> &c- &6Set the player of the head")); sender.sendMessage(mm.deserialize("<dark_aqua>===============<white>[<light_purple>Head Command<white>]<dark_aqua>==============="));
sender.sendMessage(mm.deserialize("<aqua>/itemizer head <<white>name<aqua>> <red>- <gold>Set the player of the head"));
return true; return true;
} }
if (item.getType() != Material.PLAYER_HEAD) if (item.getType() != Material.PLAYER_HEAD)
@ -875,7 +876,7 @@ public class ItemizerXCommand implements CommandExecutor, ItemizerXBase
assert skullMeta != null; assert skullMeta != null;
skullMeta.setOwner(name); skullMeta.setOwner(name);
item.setItemMeta(skullMeta); item.setItemMeta(skullMeta);
sender.sendMessage(colorize("&2The player of the head has been set to &f'" + name + "&f'")); sender.sendMessage(mm.deserialize("<dark_green>The player of the head has been set to <white>'" + name + "<white>'"));
return true; return true;
} }
case "sign" -> case "sign" ->
@ -887,13 +888,14 @@ public class ItemizerXCommand implements CommandExecutor, ItemizerXBase
} }
if (args.length < 3) if (args.length < 3)
{ {
sender.sendMessage(colorize("&3===============&f[&dSign Command&f]&3===============\n" + "&b/itemizer sign <&fline&b> <&ftext&b> &c- &6Change the line on the sign")); sender.sendMessage(mm.deserialize("<dark_aqua>===============<white>[<light_purple>Sign Commands<white>]<dark_aqua>==============="));
sender.sendMessage(mm.deserialize("<aqua>/itemizer sign <<white>line<aqua>> <<white>text<aqua>> <red>- <gold>Change the line on the sign"));
return true; return true;
} }
final Block block = player.getTargetBlockExact(20); final Block block = player.getTargetBlockExact(20);
if (block == null || block.getType() == Material.AIR || !block.getType().toString().contains("SIGN")) if (block == null || block.getType() == Material.AIR || !block.getType().toString().contains("SIGN"))
{ {
sender.sendMessage(colorize("&4Please look at a sign!")); sender.sendMessage(mm.deserialize("<red>Please look at a sign!"));
return true; return true;
} }
Integer line = parseInt(sender, args[1]); Integer line = parseInt(sender, args[1]);
@ -903,22 +905,22 @@ public class ItemizerXCommand implements CommandExecutor, ItemizerXBase
} }
else if (line > 4) else if (line > 4)
{ {
sender.sendMessage(colorize("&4There's maximum of 4 lines on a sign")); sender.sendMessage(mm.deserialize("<dark_red>There's a maximum of 4 lines on a sign"));
return true; return true;
} }
String text = colorize(StringUtils.join(args, " ", 2, args.length)); Component text = mm.deserialize(StringUtils.join(args, " ", 2, args.length));
if (cpb.getAPI() != null) if (cpb.getAPI() != null)
{ {
cpb.getAPI().logRemoval(player.getName(), block.getLocation(), block.getType(), block.getBlockData()); cpb.getAPI().logRemoval(player.getName(), block.getLocation(), block.getType(), block.getBlockData());
} }
Sign sign = (Sign)block.getState(); Sign sign = (Sign)block.getState();
sign.setLine(line - 1, text); sign.line(line - 1, text);
sign.update(); sign.update();
if (cpb.getAPI() != null) if (cpb.getAPI() != null)
{ {
cpb.getAPI().logPlacement(player.getName(), sign.getLocation(), sign.getType(), sign.getBlockData()); cpb.getAPI().logPlacement(player.getName(), sign.getLocation(), sign.getType(), sign.getBlockData());
} }
sender.sendMessage(colorize("&2Line &f'" + line + "'&2 has successfully changed to &f'" + text + "&f'")); sender.sendMessage(mm.deserialize("<dark_green>Line <white>'" + line + "<white>'<dark_green> has successfully changed to <white>'" + text + "<white>'"));
return true; return true;
} }
case "clearall" -> case "clearall" ->
@ -934,29 +936,17 @@ public class ItemizerXCommand implements CommandExecutor, ItemizerXBase
return true; return true;
} }
item.setItemMeta(null); item.setItemMeta(null);
sender.sendMessage(colorize("&2All data cleared from your item")); sender.sendMessage(mm.deserialize("<dark_green>All data cleared from your item"));
return true; return true;
} }
default -> default ->
{ {
sender.sendMessage(colorize("&bUnknown sub-command. Type &6/itemizer help &bfor help.")); sender.sendMessage(mm.deserialize("<aqua>Unknown sub-command. Type <gold><click:run_command:/itemizer help>/itemizer help</click> <aqua>for help."));
return true; return true;
} }
} }
} }
private String colorize(String string)
{
Matcher matcher = Pattern.compile("&#[a-fA-F0-9]{6}").matcher(string);
while (matcher.find())
{
String code = matcher.group().replace("&", "");
string = string.replace("&" + code, net.md_5.bungee.api.ChatColor.of(code) + "");
}
string = ChatColor.translateAlternateColorCodes('&', string);
return string;
}
private Integer parseInt(CommandSender sender, String string) private Integer parseInt(CommandSender sender, String string)
{ {
try try
@ -965,7 +955,7 @@ public class ItemizerXCommand implements CommandExecutor, ItemizerXBase
} }
catch (NumberFormatException ex) catch (NumberFormatException ex)
{ {
sender.sendMessage(colorize("&f\"" + string + "&f\"&4 is not a valid number!")); sender.sendMessage(mm.deserialize("<white>\"" + string + "<white>\"<dark_red> is not a valid number!"));
} }
return null; return null;
} }

View File

@ -1,5 +1,9 @@
package dev.plex.itemizerx; package dev.plex.itemizerx;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import org.bukkit.Material; import org.bukkit.Material;
import org.bukkit.command.Command; import org.bukkit.command.Command;
import org.bukkit.command.CommandSender; import org.bukkit.command.CommandSender;
@ -8,93 +12,116 @@ import org.bukkit.enchantments.Enchantment;
import org.bukkit.inventory.ItemFlag; import org.bukkit.inventory.ItemFlag;
import org.bukkit.potion.PotionEffectType; import org.bukkit.potion.PotionEffectType;
import java.util.ArrayList; public class ItemizerXTab implements TabCompleter
import java.util.Arrays; {
import java.util.Collections;
import java.util.List;
public class ItemizerXTab implements TabCompleter {
@Override @Override
public List<String> onTabComplete(CommandSender sender, Command cmd, String string, String[] args) { public List<String> onTabComplete(CommandSender sender, Command cmd, String string, String[] args)
if (args.length == 1) { {
if (args.length == 1)
{
return Arrays.asList("help", "id", "lore", "potion", "attr", "flag", "enchant", "title", "author", return Arrays.asList("help", "id", "lore", "potion", "attr", "flag", "enchant", "title", "author",
"head", "sign", "clearall"); "head", "sign", "clearall");
} }
if (args.length == 2) { if (args.length == 2)
switch (args[0]) { {
case "id": { switch (args[0])
{
case "id":
{
List<String> materials = new ArrayList<>(); List<String> materials = new ArrayList<>();
for (Material material : Material.values()) { for (Material material : Material.values())
{
materials.add(material.name()); materials.add(material.name());
} }
return materials; return materials;
} }
case "lore": { case "lore":
{
return Arrays.asList("add", "remove", "change", "clear"); return Arrays.asList("add", "remove", "change", "clear");
} }
case "potion": { case "potion":
{
return Arrays.asList("add", "remove", "change", "color", "list"); return Arrays.asList("add", "remove", "change", "color", "list");
} }
case "attr": case "attr":
case "flag": case "flag":
case "enchant": { case "enchant":
{
return Arrays.asList("add", "remove", "list", "listall"); return Arrays.asList("add", "remove", "list", "listall");
} }
default: { default:
{
return Collections.emptyList(); return Collections.emptyList();
} }
} }
} }
if (args.length == 3) { if (args.length == 3)
switch (args[0]) { {
case "potion": { switch (args[0])
switch (args[1]) { {
case "potion":
{
switch (args[1])
{
case "add": case "add":
case "remove": { case "remove":
{
List<String> potions = new ArrayList<>(); List<String> potions = new ArrayList<>();
for (PotionEffectType effect : PotionEffectType.values()) { for (PotionEffectType effect : PotionEffectType.values())
{
potions.add(effect.getName()); potions.add(effect.getName());
} }
return potions; return potions;
} }
} }
} }
case "attr": { case "attr":
switch (args[1]) { {
switch (args[1])
{
case "add": case "add":
case "remove": { case "remove":
{
return Attributes.getAttributeList(); return Attributes.getAttributeList();
} }
} }
} }
case "flag": { case "flag":
switch (args[1]) { {
switch (args[1])
{
case "add": case "add":
case "remove": { case "remove":
{
List<String> flags = new ArrayList<>(); List<String> flags = new ArrayList<>();
for (ItemFlag flag : ItemFlag.values()) { for (ItemFlag flag : ItemFlag.values())
{
flags.add(flag.name()); flags.add(flag.name());
} }
return flags; return flags;
} }
} }
} }
case "enchant": { case "enchant":
switch (args[1]) { {
switch (args[1])
{
case "add": case "add":
case "remove": { case "remove":
{
List<String> enchantments = new ArrayList<>(); List<String> enchantments = new ArrayList<>();
for (Enchantment enchantment : Enchantment.values()) { for (Enchantment enchantment : Enchantment.values())
{
enchantments.add(enchantment.getKey().getKey()); enchantments.add(enchantment.getKey().getKey());
} }
return enchantments; return enchantments;
} }
} }
} }
default: { default:
{
return Collections.emptyList(); return Collections.emptyList();
} }
} }