commit 7b5b8f4d1c132b4086c60e97fddd692f1df23b8a Author: jakub Date: Tue Mar 12 09:51:35 2024 +0100 first code diff --git a/.idea/.gitignore b/.idea/.gitignore new file mode 100644 index 0000000..26d3352 --- /dev/null +++ b/.idea/.gitignore @@ -0,0 +1,3 @@ +# Default ignored files +/shelf/ +/workspace.xml diff --git a/.idea/artifacts/MenuMaker_jar.xml b/.idea/artifacts/MenuMaker_jar.xml new file mode 100644 index 0000000..3015c7d --- /dev/null +++ b/.idea/artifacts/MenuMaker_jar.xml @@ -0,0 +1,19 @@ + + + $USER_HOME$/Plocha/betaserver/plugins + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/compiler.xml b/.idea/compiler.xml new file mode 100644 index 0000000..83f9044 --- /dev/null +++ b/.idea/compiler.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/encodings.xml b/.idea/encodings.xml new file mode 100644 index 0000000..aa00ffa --- /dev/null +++ b/.idea/encodings.xml @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/.idea/jarRepositories.xml b/.idea/jarRepositories.xml new file mode 100644 index 0000000..861936a --- /dev/null +++ b/.idea/jarRepositories.xml @@ -0,0 +1,30 @@ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml new file mode 100644 index 0000000..82dbec8 --- /dev/null +++ b/.idea/misc.xml @@ -0,0 +1,14 @@ + + + + + + + + + + \ No newline at end of file diff --git a/.idea/modules.xml b/.idea/modules.xml new file mode 100644 index 0000000..3f3edd2 --- /dev/null +++ b/.idea/modules.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/.idea/uiDesigner.xml b/.idea/uiDesigner.xml new file mode 100644 index 0000000..2b63946 --- /dev/null +++ b/.idea/uiDesigner.xml @@ -0,0 +1,124 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/vcs.xml b/.idea/vcs.xml new file mode 100644 index 0000000..94a25f7 --- /dev/null +++ b/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/MenuMaker.iml b/MenuMaker.iml new file mode 100644 index 0000000..a589521 --- /dev/null +++ b/MenuMaker.iml @@ -0,0 +1,13 @@ + + + + + + + SPIGOT + + 1 + + + + \ No newline at end of file diff --git a/pom.xml b/pom.xml new file mode 100644 index 0000000..5a98064 --- /dev/null +++ b/pom.xml @@ -0,0 +1,86 @@ + + + 4.0.0 + + xyz.soukup + MenuMaker + 1.0-SNAPSHOT + jar + + MenuMaker + + + 1.8 + UTF-8 + + + + + + org.apache.maven.plugins + maven-compiler-plugin + 3.8.1 + + ${java.version} + ${java.version} + + + + org.apache.maven.plugins + maven-shade-plugin + 3.2.4 + + + package + + shade + + + + + + + + src/main/resources + true + + + + + + + spigotmc-repo + https://hub.spigotmc.org/nexus/content/repositories/snapshots/ + + + sonatype + https://oss.sonatype.org/content/groups/public/ + + + + + + org.spigotmc + spigot-api + 1.20.1-R0.1-SNAPSHOT + provided + + + net.kyori + adventure-text-minimessage + 4.16.0 + + + com.fasterxml.jackson.dataformat + jackson-dataformat-yaml + 2.13.1 + + + com.fasterxml.jackson.core + jackson-core + 2.13.1 + + + diff --git a/src/main/java/xyz/soukup/menumaker/MenuMaker.java b/src/main/java/xyz/soukup/menumaker/MenuMaker.java new file mode 100644 index 0000000..6a7ce7d --- /dev/null +++ b/src/main/java/xyz/soukup/menumaker/MenuMaker.java @@ -0,0 +1,56 @@ +package xyz.soukup.menumaker; + +import org.bukkit.Bukkit; +import org.bukkit.NamespacedKey; +import org.bukkit.entity.Player; +import org.bukkit.persistence.PersistentDataType; +import org.bukkit.plugin.java.JavaPlugin; +import xyz.soukup.menumaker.commands.*; +import xyz.soukup.menumaker.events.saveInventory; + +import java.util.ArrayList; +import java.util.List; +import java.util.Objects; +import java.util.logging.Logger; +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +public final class MenuMaker extends JavaPlugin { + public static Logger logger = Bukkit.getLogger(); + + @Override + public void onEnable() { + Objects.requireNonNull(getCommand("menumaker")).setExecutor(new menumaker()); + Objects.requireNonNull(getCommand("menumaker")).setTabCompleter(new menumaker()); + Objects.requireNonNull(getCommand("createitem")).setTabCompleter(new createItem()); + Objects.requireNonNull(getCommand("enchantitem")).setExecutor(new enchantitem()); + Objects.requireNonNull(getCommand("enchantitem")).setTabCompleter(new enchantitem()); + Objects.requireNonNull(getCommand("createitem")).setExecutor(new createItem()); + Objects.requireNonNull(getCommand("hideenchant")).setExecutor(new hideEnchant()); + Objects.requireNonNull(getCommand("setsize")).setExecutor(new setsize()); + getServer().getPluginManager().registerEvents(new saveInventory(), this); + logger.info("plugin enabled"); + + + } + + @Override + public void onDisable() { + // Plugin shutdown logic + } + + public static List getArgs(String input) { + List result = new ArrayList<>(); + Pattern pattern = Pattern.compile("\"([^\"]*)\"|([^\\s]+)"); + Matcher matcher = pattern.matcher(input); + while (matcher.find()) { + String match = matcher.group(1); // Check if the first group (quoted string) matched + if (match == null) { + match = matcher.group(2); // If not, use the second group (unquoted string) + } + result.add(match); + } + return result; + } + +} diff --git a/src/main/java/xyz/soukup/menumaker/PDC.java b/src/main/java/xyz/soukup/menumaker/PDC.java new file mode 100644 index 0000000..1773015 --- /dev/null +++ b/src/main/java/xyz/soukup/menumaker/PDC.java @@ -0,0 +1,39 @@ +package xyz.soukup.menumaker; + +import org.bukkit.NamespacedKey; +import org.bukkit.entity.Player; +import org.bukkit.inventory.meta.ItemMeta; +import org.bukkit.persistence.PersistentDataContainer; +import org.bukkit.persistence.PersistentDataType; + +public class PDC { + public static void WritePlayerPDC(Player player, String key, PersistentDataType type, Object value){ + NamespacedKey nKey = new NamespacedKey(MenuMaker.getPlugin(MenuMaker.class), key); + PersistentDataContainer pdc = player.getPersistentDataContainer(); + pdc.set(nKey, type, value); + + } + public static Object GetPlayerPDC(Player player, String key, PersistentDataType type){ + NamespacedKey nKey = new NamespacedKey(MenuMaker.getPlugin(MenuMaker.class), key); + PersistentDataContainer pdc = player.getPersistentDataContainer(); + return pdc.get(nKey, type); + } + public static void DeletePlayerPDC(Player player, String key){ + NamespacedKey nKey = new NamespacedKey(MenuMaker.getPlugin(MenuMaker.class), key); + PersistentDataContainer pdc = player.getPersistentDataContainer(); + pdc.remove(nKey); + + } + public static ItemMeta WriteItemMetaPDC(ItemMeta itemMeta, String key, PersistentDataType type, Object value){ + NamespacedKey nKey = new NamespacedKey(MenuMaker.getPlugin(MenuMaker.class), key); + PersistentDataContainer pdc = itemMeta.getPersistentDataContainer(); + pdc.set(nKey, type, value); + return itemMeta; + + } + public static Object GetItemMetaPDC(ItemMeta itemMeta, String key, PersistentDataType type){ + NamespacedKey nKey = new NamespacedKey(MenuMaker.getPlugin(MenuMaker.class), key); + PersistentDataContainer pdc = itemMeta.getPersistentDataContainer(); + return pdc.get(nKey, type); + } +} diff --git a/src/main/java/xyz/soukup/menumaker/commands/createItem.java b/src/main/java/xyz/soukup/menumaker/commands/createItem.java new file mode 100644 index 0000000..30e5f19 --- /dev/null +++ b/src/main/java/xyz/soukup/menumaker/commands/createItem.java @@ -0,0 +1,78 @@ +package xyz.soukup.menumaker.commands; + +import org.bukkit.ChatColor; +import org.bukkit.Material; +import org.bukkit.command.Command; +import org.bukkit.command.CommandSender; +import org.bukkit.command.TabExecutor; +import org.bukkit.entity.Player; +import org.bukkit.inventory.ItemStack; +import org.bukkit.inventory.meta.ItemMeta; +import xyz.soukup.menumaker.MenuMaker; + +import javax.annotation.Nonnull; +import java.awt.*; +import java.util.ArrayList; +import java.util.List; +import java.util.Objects; + +public class createItem implements TabExecutor { + @Override + public boolean onCommand(@Nonnull CommandSender commandSender,@Nonnull Command command,@Nonnull String s,@Nonnull String[] args) { + StringBuilder argsString = new StringBuilder(); + for (String ss : args){ + argsString.append(ss).append(" "); + } + List processedArgs = MenuMaker.getArgs(argsString.toString()); + if (!processedArgs.isEmpty() && Material.getMaterial(processedArgs.get(0).toUpperCase()) != null){ + ItemStack item = new ItemStack(Objects.requireNonNull(Material.getMaterial(processedArgs.get(0).toUpperCase()))); + if (processedArgs.size() > 1){ + ItemMeta itemMeta = item.getItemMeta(); + assert itemMeta != null; + itemMeta.setDisplayName(ChatColor.translateAlternateColorCodes('&', processedArgs.get(1))); + if (processedArgs.size() > 2){ + processedArgs.remove(0); + processedArgs.remove(0); + int i = 0; + while (i< processedArgs.size()){ + processedArgs.set(i, ChatColor.translateAlternateColorCodes('&', processedArgs.get(i))); + i++; + } + itemMeta.setLore(processedArgs); + } + item.setItemMeta(itemMeta); + } + ((Player) commandSender).getInventory().addItem(item); + return true; + }else{ + commandSender.sendMessage(ChatColor.RED + "chybí argument"); + return false; + } + } + + @Override + public List onTabComplete(@Nonnull CommandSender commandSender,@Nonnull Command command,@Nonnull String s,@Nonnull String[] args) { + List completetion = new ArrayList<>(); + StringBuilder argsString = new StringBuilder(); + for (String ss : args){ + argsString.append(ss).append(" "); + } + List processedArgs = MenuMaker.getArgs(argsString.toString()); + if (args.length == 1){ + for (Material m: Material.values()){ + String mname = m.name().toLowerCase(); + if (mname.contains(args[0])){ + completetion.add(mname); + } + + } + }else if (processedArgs.size() > 2){ + + completetion.add("\"lore linka\""); + }else{ + completetion.add("\"název itemu\""); + } + + return completetion; + } +} diff --git a/src/main/java/xyz/soukup/menumaker/commands/enchantitem.java b/src/main/java/xyz/soukup/menumaker/commands/enchantitem.java new file mode 100644 index 0000000..4ccd579 --- /dev/null +++ b/src/main/java/xyz/soukup/menumaker/commands/enchantitem.java @@ -0,0 +1,60 @@ +package xyz.soukup.menumaker.commands; + +import org.bukkit.Bukkit; +import org.bukkit.ChatColor; +import org.bukkit.NamespacedKey; +import org.bukkit.command.Command; +import org.bukkit.command.CommandSender; +import org.bukkit.command.TabExecutor; +import org.bukkit.enchantments.Enchantment; +import org.bukkit.entity.Player; +import org.bukkit.inventory.ItemStack; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; +import xyz.soukup.menumaker.PDC; + +import java.util.ArrayList; +import java.util.List; + +public class enchantitem implements TabExecutor { + @Override + public boolean onCommand(@NotNull CommandSender commandSender, @NotNull Command command, @NotNull String s, @NotNull String[] args) { + Player player = (Player) commandSender; + ItemStack item = player.getInventory().getItemInMainHand(); + if (item == null) { + commandSender.sendMessage("No item"); + return false; + } + + for (Enchantment enchantment : Enchantment.values()) { + if (enchantment.getKey().toString().equals(args[0])){ + int level = 1; + if (Integer.getInteger(args[1]) != null){ + level = Integer.parseInt(args[1]); + } + item.addUnsafeEnchantment(enchantment, level); + return true; + } + } + commandSender.sendMessage(ChatColor.RED + "Wrong enchant"); + return false; + } + @Nullable + @Override + public List onTabComplete(@NotNull CommandSender commandSender, @NotNull Command command, @NotNull String s, @NotNull String[] args) { + List completetions = new ArrayList<>(); + + if (args.length <= 1){ + for (Enchantment enchantment: Enchantment.values()){ + completetions.add(enchantment.getKey().toString()); + } + }else{ + completetions.add("1"); + completetions.add("2"); + completetions.add("3"); + completetions.add("4"); + completetions.add("5"); + } + return completetions; + } +} diff --git a/src/main/java/xyz/soukup/menumaker/commands/hideEnchant.java b/src/main/java/xyz/soukup/menumaker/commands/hideEnchant.java new file mode 100644 index 0000000..9a1da11 --- /dev/null +++ b/src/main/java/xyz/soukup/menumaker/commands/hideEnchant.java @@ -0,0 +1,29 @@ +package xyz.soukup.menumaker.commands; + +import org.bukkit.ChatColor; +import org.bukkit.command.Command; +import org.bukkit.command.CommandExecutor; +import org.bukkit.command.CommandSender; +import org.bukkit.entity.Player; +import org.bukkit.inventory.ItemFlag; +import org.bukkit.inventory.ItemStack; +import org.bukkit.inventory.meta.ItemMeta; +import org.jetbrains.annotations.NotNull; + +public class hideEnchant implements CommandExecutor { + @Override + public boolean onCommand(@NotNull CommandSender commandSender, @NotNull Command command, @NotNull String s, @NotNull String[] strings) { + ItemStack item = ((Player) commandSender).getInventory().getItemInMainHand(); + ItemMeta meta = item.getItemMeta(); + assert meta != null; + if (meta.hasItemFlag(ItemFlag.HIDE_ENCHANTS)){ + meta.removeItemFlags(ItemFlag.HIDE_ENCHANTS); + commandSender.sendMessage(ChatColor.AQUA + "Enchants will be shown"); + }else { + meta.addItemFlags(ItemFlag.HIDE_ENCHANTS); + commandSender.sendMessage(ChatColor.AQUA + "Enchants won' be shown"); + + } + return true; + } +} diff --git a/src/main/java/xyz/soukup/menumaker/commands/menumaker.java b/src/main/java/xyz/soukup/menumaker/commands/menumaker.java new file mode 100644 index 0000000..fff6f03 --- /dev/null +++ b/src/main/java/xyz/soukup/menumaker/commands/menumaker.java @@ -0,0 +1,124 @@ +package xyz.soukup.menumaker.commands; + +import org.bukkit.Bukkit; +import org.bukkit.ChatColor; +import org.bukkit.command.Command; + +import org.bukkit.command.CommandSender; +import org.bukkit.command.TabExecutor; +import org.bukkit.configuration.ConfigurationSection; +import org.bukkit.configuration.file.YamlConfiguration; +import org.bukkit.entity.Player; +import org.bukkit.inventory.Inventory; +import org.bukkit.inventory.ItemStack; +import org.bukkit.persistence.PersistentDataType; +import xyz.soukup.menumaker.MenuMaker; +import xyz.soukup.menumaker.PDC; + + +import javax.annotation.Nonnull; +import java.io.File; +import java.util.ArrayList; +import java.util.List; + +public class menumaker implements TabExecutor { + MenuMaker plugin = MenuMaker.getPlugin(MenuMaker.class); + @Override + public boolean onCommand(@Nonnull CommandSender commandSender,@Nonnull Command command,@Nonnull String s,@Nonnull String[] args) { + Player player = (Player) commandSender; + StringBuilder nameBuilder; + int i; + switch (args[0]){ + case "create": + File menuFile = new File(plugin.getDataFolder() + "/menus/", args[2] + ".yml"); + if (menuFile.exists()){ + commandSender.sendMessage(ChatColor.RED + "Menu already exists. Use /mm edit " + args[2]); + return false; + } + nameBuilder = new StringBuilder(); + i = 3; + while (i < args.length){ + nameBuilder.append(args[i]).append(" "); + i++; + } + Inventory inventory = Bukkit.createInventory(null, Integer.parseInt(args[1]), ChatColor.translateAlternateColorCodes('&', nameBuilder.toString())); + PDC.WritePlayerPDC(player, "opened-inv", PersistentDataType.STRING, args[2]); + player.openInventory(inventory); + return true; + case "edit": + File mFile = new File(plugin.getDataFolder() + "/menus/", args[1] + ".yml"); + if (!mFile.exists()){ + commandSender.sendMessage(ChatColor.RED + "Menu does not exists. Use /mm create "); + return false; + } + YamlConfiguration menuConfig = YamlConfiguration.loadConfiguration(mFile); + String name = menuConfig.getString("data.name"); + int size = menuConfig.getInt("data.size"); + if (args.length > 2){ + nameBuilder = new StringBuilder(); + i = 2; + while (i < args.length){ + nameBuilder.append(args[i]).append(" "); + i++; + } + name = ChatColor.translateAlternateColorCodes('&', nameBuilder.toString()); + + } + assert name != null; + Inventory menu = Bukkit.createInventory(null, size, name); + for (int ii = 0; ii < size; ii++) { + if (menuConfig.getObject("data.items." + ii + ".itemstack", ItemStack.class) != null){ + menu.setItem(ii, menuConfig.getObject("data.items." + ii + ".itemstack", ItemStack.class)); + } + } + PDC.WritePlayerPDC(player, "opened-inv", PersistentDataType.STRING, args[1]); + + player.openInventory(menu); + + } + return false; + } + + @Override + public List onTabComplete(@Nonnull CommandSender commandSender, @Nonnull Command command,@Nonnull String s,@Nonnull String[] args) { + List completetions = new ArrayList<>(); + switch (args.length){ + case 1: + completetions.add("create"); + completetions.add("edit"); + completetions.add("delete"); + case 2: + if (args[0].equals("create")) { + completetions.add("9"); + completetions.add("18"); + completetions.add("27"); + completetions.add("36"); + completetions.add("45"); + completetions.add("54"); + } + } + return completetions; + } + + public static Inventory loadInventoryFromFile(File file) { + YamlConfiguration config = YamlConfiguration.loadConfiguration(file); + + // Check if the "data" key exists + if (!config.contains("data")) { + return null; // If "data" key doesn't exist, return null + } + + ConfigurationSection dataSection = config.getConfigurationSection("data"); + Inventory inventory = Bukkit.createInventory(null, dataSection.getInt("size"), dataSection.getString("title")); + + // Deserialize ItemStacks from the YAML configuration + for (String key : dataSection.getKeys(false)) { + if (!key.equals("size") && !key.equals("title")) { + ItemStack item = dataSection.getItemStack(key); + inventory.addItem(item); + } + } + + return inventory; + } +} diff --git a/src/main/java/xyz/soukup/menumaker/commands/setsize.java b/src/main/java/xyz/soukup/menumaker/commands/setsize.java new file mode 100644 index 0000000..6351616 --- /dev/null +++ b/src/main/java/xyz/soukup/menumaker/commands/setsize.java @@ -0,0 +1,15 @@ +package xyz.soukup.menumaker.commands; + +import org.bukkit.command.Command; +import org.bukkit.command.CommandExecutor; +import org.bukkit.command.CommandSender; +import org.bukkit.entity.Player; +import org.jetbrains.annotations.NotNull; + +public class setsize implements CommandExecutor { + @Override + public boolean onCommand(@NotNull CommandSender commandSender, @NotNull Command command, @NotNull String s, @NotNull String[] args) { + ((Player) commandSender).getInventory().getItemInMainHand().setAmount(Integer.getInteger(args[0])); + return true; + } +} diff --git a/src/main/java/xyz/soukup/menumaker/events/saveInventory.java b/src/main/java/xyz/soukup/menumaker/events/saveInventory.java new file mode 100644 index 0000000..059a0cf --- /dev/null +++ b/src/main/java/xyz/soukup/menumaker/events/saveInventory.java @@ -0,0 +1,60 @@ +package xyz.soukup.menumaker.events; + +import com.fasterxml.jackson.databind.ObjectMapper; +import com.fasterxml.jackson.dataformat.yaml.YAMLFactory; +import org.bukkit.ChatColor; +import org.bukkit.Material; +import org.bukkit.configuration.file.YamlConfiguration; +import org.bukkit.entity.Player; +import org.bukkit.event.EventHandler; +import org.bukkit.event.Listener; +import org.bukkit.event.inventory.InventoryCloseEvent; +import org.bukkit.inventory.Inventory; +import org.bukkit.inventory.InventoryView; +import org.bukkit.inventory.ItemStack; +import org.bukkit.persistence.PersistentDataType; +import xyz.soukup.menumaker.MenuMaker; +import xyz.soukup.menumaker.PDC; + +import java.io.File; +import java.io.IOException; +import java.nio.file.Files; +import java.nio.file.Paths; + +public class saveInventory implements Listener { + + @EventHandler + public void onPlayerCloseMenuEditor(InventoryCloseEvent event) throws IOException { + Player player = (Player) event.getPlayer(); + String inventoryName = (String) PDC.GetPlayerPDC(player, "opened-inv", PersistentDataType.STRING); + if (inventoryName != null){ + PDC.DeletePlayerPDC(player, "opened-inv"); + + MenuMaker plugin = MenuMaker.getPlugin(MenuMaker.class); + Files.createDirectories(Paths.get(plugin.getDataFolder() + "/menus")); + File menuFile = new File(plugin.getDataFolder() + "/menus/", inventoryName + ".yml"); + + YamlConfiguration menuConfig = YamlConfiguration.loadConfiguration(menuFile); + Inventory menu = event.getInventory(); + InventoryView view = event.getView(); + menuConfig.set("data.name", view.getTitle()); + menuConfig.set("data.size", menu.getSize()); + int i = 0; + for (ItemStack item: menu.getContents()){ + if(item != null){ + menuConfig.set("data.items." + i + ".itemstack", item); + menuConfig.set("data.items." + i + ".identifier", null); + }else{ + menuConfig.set("data.items." + i + ".itemstack", null); + menuConfig.set("data.items." + i + ".identifier", null); + } + i++; + } + menuConfig.save(menuFile); + player.sendMessage(ChatColor.AQUA + "menu saved as plugins/menumaker/menus/"+ inventoryName + ".yml"); + + + + } + } +} diff --git a/src/main/resources/plugin.yml b/src/main/resources/plugin.yml new file mode 100644 index 0000000..901c53d --- /dev/null +++ b/src/main/resources/plugin.yml @@ -0,0 +1,21 @@ +name: MenuMaker +version: '${project.version}' +main: xyz.soukup.menumaker.MenuMaker +api-version: '1.20' +commands: + menumaker: + permission: menumaker.commands.menumaker + aliases: + - "mm" + createitem: + permission: menumaker.commands.createitem + aliases: + - "ci" + enchantitem: + permission: menumaker.commands.enchantitem + aliases: + - "ei" + hideenchant: + permission: menumaker.commands.hideenchand + aliases: + - "he" \ No newline at end of file diff --git a/target/classes/plugin.yml b/target/classes/plugin.yml new file mode 100644 index 0000000..7670b78 --- /dev/null +++ b/target/classes/plugin.yml @@ -0,0 +1,21 @@ +name: MenuMaker +version: '1.0-SNAPSHOT' +main: xyz.soukup.menumaker.MenuMaker +api-version: '1.20' +commands: + menumaker: + permission: menumaker.commands.menumaker + aliases: + - "mm" + createitem: + permission: menumaker.commands.createitem + aliases: + - "ci" + enchantitem: + permission: menumaker.commands.enchantitem + aliases: + - "ei" + hideenchant: + permission: menumaker.commands.hideenchand + aliases: + - "he" \ No newline at end of file diff --git a/target/classes/xyz/soukup/menumaker/MenuMaker.class b/target/classes/xyz/soukup/menumaker/MenuMaker.class new file mode 100644 index 0000000..ef05a34 Binary files /dev/null and b/target/classes/xyz/soukup/menumaker/MenuMaker.class differ diff --git a/target/classes/xyz/soukup/menumaker/PDC.class b/target/classes/xyz/soukup/menumaker/PDC.class new file mode 100644 index 0000000..1ddc92e Binary files /dev/null and b/target/classes/xyz/soukup/menumaker/PDC.class differ diff --git a/target/classes/xyz/soukup/menumaker/commands/createItem.class b/target/classes/xyz/soukup/menumaker/commands/createItem.class new file mode 100644 index 0000000..61bfa6a Binary files /dev/null and b/target/classes/xyz/soukup/menumaker/commands/createItem.class differ diff --git a/target/classes/xyz/soukup/menumaker/commands/enchantitem.class b/target/classes/xyz/soukup/menumaker/commands/enchantitem.class new file mode 100644 index 0000000..b9f1c35 Binary files /dev/null and b/target/classes/xyz/soukup/menumaker/commands/enchantitem.class differ diff --git a/target/classes/xyz/soukup/menumaker/commands/hideEnchant.class b/target/classes/xyz/soukup/menumaker/commands/hideEnchant.class new file mode 100644 index 0000000..e0602f5 Binary files /dev/null and b/target/classes/xyz/soukup/menumaker/commands/hideEnchant.class differ diff --git a/target/classes/xyz/soukup/menumaker/commands/menumaker.class b/target/classes/xyz/soukup/menumaker/commands/menumaker.class new file mode 100644 index 0000000..aaebc46 Binary files /dev/null and b/target/classes/xyz/soukup/menumaker/commands/menumaker.class differ diff --git a/target/classes/xyz/soukup/menumaker/commands/setsize.class b/target/classes/xyz/soukup/menumaker/commands/setsize.class new file mode 100644 index 0000000..8134026 Binary files /dev/null and b/target/classes/xyz/soukup/menumaker/commands/setsize.class differ diff --git a/target/classes/xyz/soukup/menumaker/events/saveInventory.class b/target/classes/xyz/soukup/menumaker/events/saveInventory.class new file mode 100644 index 0000000..1530016 Binary files /dev/null and b/target/classes/xyz/soukup/menumaker/events/saveInventory.class differ