Add command to list available enchantments

This commit is contained in:
Pim van der Loos 2020-12-16 13:16:30 +01:00
parent 03d0f9492e
commit abc8d7475e
No known key found for this signature in database
GPG Key ID: C16F020ADAE6D5A8

View File

@ -6,17 +6,22 @@ import nl.pim16aap2.armoredElytra.util.messages.Message;
import org.bukkit.Bukkit; import org.bukkit.Bukkit;
import org.bukkit.ChatColor; import org.bukkit.ChatColor;
import org.bukkit.Material; import org.bukkit.Material;
import org.bukkit.NamespacedKey;
import org.bukkit.command.Command; import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor; import org.bukkit.command.CommandExecutor;
import org.bukkit.command.CommandSender; import org.bukkit.command.CommandSender;
import org.bukkit.enchantments.Enchantment;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.ItemStack;
import java.lang.reflect.Field;
import java.util.Map;
import java.util.logging.Level; import java.util.logging.Level;
public class CommandHandler implements CommandExecutor public class CommandHandler implements CommandExecutor
{ {
private final ArmoredElytra plugin; private final ArmoredElytra plugin;
private static Field BY_KEY_FIELD;
public CommandHandler(ArmoredElytra plugin) public CommandHandler(ArmoredElytra plugin)
{ {
@ -93,6 +98,12 @@ public class CommandHandler implements CommandExecutor
return true; return true;
} }
if (args.length == 1 && args[0].equalsIgnoreCase("listAvailable"))
{
listAvailableEnchantments();
return true;
}
if (args.length == 2) if (args.length == 2)
{ {
ItemStack newElytra; ItemStack newElytra;
@ -119,4 +130,27 @@ public class CommandHandler implements CommandExecutor
} }
return false; return false;
} }
private void listAvailableEnchantments()
{
try
{
if (BY_KEY_FIELD == null)
{
BY_KEY_FIELD = Enchantment.class.getDeclaredField("byKey");
BY_KEY_FIELD.setAccessible(true);
}
final Map<NamespacedKey, Enchantment> byKey = (Map<NamespacedKey, Enchantment>) BY_KEY_FIELD.get(null);
StringBuilder sb = new StringBuilder("\nAvailable enchantments: \n");
for (NamespacedKey key : byKey.keySet())
sb.append(" - ").append(key.toString()).append("\n");
Bukkit.getLogger().info(sb.toString());
}
catch (NoSuchFieldException | IllegalAccessException e)
{
throw new RuntimeException("Failed to get registered enchantments!", e);
}
}
} }