From 2706c8e23a4663995d13215a20130731561c02b5 Mon Sep 17 00:00:00 2001 From: ScriptCat Date: Wed, 23 Jul 2025 01:56:57 +0300 Subject: [PATCH] =?UTF-8?q?update...=20big=20update=20/gift=20=D0=BF=D0=B5?= =?UTF-8?q?=D1=80=D0=B5=D0=B4=D0=B5=D0=BB=D0=B0=D0=BB=20=D0=BA=D0=BE=D0=BD?= =?UTF-8?q?=D1=84=D0=B8=D0=B3=20=D0=B8=20=D1=87=D1=83=D1=82=D0=BA=D0=B0=20?= =?UTF-8?q?=D0=BC=D0=B5=D0=BD=D1=8E=D1=88=D0=BA=D1=83=20=D0=B7=D0=B0=D0=B2?= =?UTF-8?q?=D1=82=D1=80=D0=B0=20=D0=BF=D1=80=D0=BE=D0=B4=D0=BE=D0=BB=D0=B6?= =?UTF-8?q?=D1=83?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .idea/uiDesigner.xml | 124 ++++++++++++++++++ .../java/tokarotik/giftapi/APIManager.java | 44 +++++++ .../java/tokarotik/giftapi/ConfigPaths.java | 7 + src/main/java/tokarotik/giftapi/Main.java | 21 +-- .../java/tokarotik/giftapi/ManagerAPI.java | 16 --- .../tokarotik/giftapi/dev/GiftCommand.java | 31 +++++ .../giftapi/inventory/InventoryManager.java | 85 ++++++++++++ src/main/resources/config.yml | 10 ++ src/main/resources/plugin.yml | 7 +- 9 files changed, 319 insertions(+), 26 deletions(-) create mode 100644 .idea/uiDesigner.xml create mode 100644 src/main/java/tokarotik/giftapi/APIManager.java create mode 100644 src/main/java/tokarotik/giftapi/ConfigPaths.java delete mode 100644 src/main/java/tokarotik/giftapi/ManagerAPI.java create mode 100644 src/main/java/tokarotik/giftapi/dev/GiftCommand.java create mode 100644 src/main/java/tokarotik/giftapi/inventory/InventoryManager.java 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/src/main/java/tokarotik/giftapi/APIManager.java b/src/main/java/tokarotik/giftapi/APIManager.java new file mode 100644 index 0000000..00b96cb --- /dev/null +++ b/src/main/java/tokarotik/giftapi/APIManager.java @@ -0,0 +1,44 @@ +package tokarotik.giftapi; + +import org.bukkit.Bukkit; +import org.bukkit.configuration.file.FileConfiguration; +import org.bukkit.entity.Player; +import org.bukkit.inventory.ItemStack; + +import tokarotik.giftapi.inventory.InventoryManager; + +public class APIManager { + + private Main plugin; + private FileConfiguration config; + private InventoryManager inventoryManager; + + public APIManager(Main plugin, FileConfiguration config) + { + this.plugin = plugin; + this.config = config; + + this.inventoryManager = new InventoryManager( + this.config.getString(ConfigPaths.GUINAME, "GiftAPI Menu"), + this.config.getString(ConfigPaths.GUIRIGHT, "<>") + ); + + Bukkit.getPluginManager().registerEvents(this.inventoryManager, this.plugin); + } + + public boolean add(Player player, ItemStack item) + { + return false; + } + + public boolean remove(Player player, ItemStack item) + { + return false; + } + + public void openInventory(Player player) + { + this.inventoryManager.openCustomInventory(player); + } +} diff --git a/src/main/java/tokarotik/giftapi/ConfigPaths.java b/src/main/java/tokarotik/giftapi/ConfigPaths.java new file mode 100644 index 0000000..c351fba --- /dev/null +++ b/src/main/java/tokarotik/giftapi/ConfigPaths.java @@ -0,0 +1,7 @@ +package tokarotik.giftapi; + +public class ConfigPaths { + public static final String GUINAME = "gui.title-menu"; + public static final String GUIRIGHT = "gui.arrow.right-name"; + public static final String GUILEFT = "gui.arrow.left-name"; +} diff --git a/src/main/java/tokarotik/giftapi/Main.java b/src/main/java/tokarotik/giftapi/Main.java index 691d85f..cb044c9 100644 --- a/src/main/java/tokarotik/giftapi/Main.java +++ b/src/main/java/tokarotik/giftapi/Main.java @@ -5,16 +5,23 @@ import org.bukkit.entity.Player; import org.bukkit.event.Listener; import org.bukkit.inventory.ItemStack; import org.bukkit.plugin.java.JavaPlugin; +import tokarotik.giftapi.dev.GiftCommand; public class Main extends JavaPlugin implements Listener { - private ManagerAPI managerApi; + private APIManager apiManager; @Override - public void onEnable() { + public void onEnable() + { + saveDefaultConfig(); + getLogger().info("GiftAPI enabled!"); - managerApi = new ManagerAPI(); + saveDefaultConfig(); + apiManager = new APIManager(this, getConfig()); + + this.getCommand("gift").setExecutor(new GiftCommand(apiManager)); } @Override @@ -22,21 +29,17 @@ public class Main extends JavaPlugin implements Listener getLogger().info("GiftAPI disabled!"); } - public Main getAPI() { - return this; - } - // if failed to add, return false // if successfully added, return true public boolean add(Player player, ItemStack item) { - return managerApi.add(player, item); + return apiManager.add(player, item); } // if failed to remove item, return false // if successfully removed item, return true public boolean remove(Player player, ItemStack item) { - return managerApi.remove(player, item); + return apiManager.remove(player, item); } } \ No newline at end of file diff --git a/src/main/java/tokarotik/giftapi/ManagerAPI.java b/src/main/java/tokarotik/giftapi/ManagerAPI.java deleted file mode 100644 index a335011..0000000 --- a/src/main/java/tokarotik/giftapi/ManagerAPI.java +++ /dev/null @@ -1,16 +0,0 @@ -package tokarotik.giftapi; - -import org.bukkit.entity.Player; -import org.bukkit.inventory.ItemStack; - -public class ManagerAPI { - public boolean add(Player player, ItemStack item) - { - return false; - } - - public boolean remove(Player player, ItemStack item) - { - return false; - } -} diff --git a/src/main/java/tokarotik/giftapi/dev/GiftCommand.java b/src/main/java/tokarotik/giftapi/dev/GiftCommand.java new file mode 100644 index 0000000..c9dcd99 --- /dev/null +++ b/src/main/java/tokarotik/giftapi/dev/GiftCommand.java @@ -0,0 +1,31 @@ +package tokarotik.giftapi.dev; + +import org.bukkit.command.Command; +import org.bukkit.command.CommandExecutor; +import org.bukkit.command.CommandSender; +import org.bukkit.entity.Player; +import tokarotik.giftapi.APIManager; + +public class GiftCommand implements CommandExecutor { + + private APIManager APIManager; + + public GiftCommand(APIManager APIManager) + { + this.APIManager = APIManager; + } + + @Override + public boolean onCommand(CommandSender sender, Command command, String s, String[] strings) { + if (!(sender instanceof Player)) + { + sender.sendMessage("This command can use only player!"); + return true; + } + + this.APIManager.openInventory((Player) sender); + + return true; + } +} + diff --git a/src/main/java/tokarotik/giftapi/inventory/InventoryManager.java b/src/main/java/tokarotik/giftapi/inventory/InventoryManager.java new file mode 100644 index 0000000..9b61062 --- /dev/null +++ b/src/main/java/tokarotik/giftapi/inventory/InventoryManager.java @@ -0,0 +1,85 @@ +package tokarotik.giftapi.inventory; + +import org.bukkit.Bukkit; +import org.bukkit.ChatColor; +import org.bukkit.Material; +import org.bukkit.entity.Player; +import org.bukkit.event.Listener; +import org.bukkit.event.inventory.InventoryClickEvent; +import org.bukkit.event.EventHandler; +import org.bukkit.inventory.Inventory; +import org.bukkit.inventory.ItemStack; +import org.bukkit.inventory.meta.ItemMeta; +import tokarotik.giftapi.ConfigPaths; + +public class InventoryManager implements Listener { + + private String nameGUI; + private String nameArrowRight; + private String nameArrowLeft; + + public InventoryManager(String nameGUI, String nameArrowRight, String nameArrowLeft) + { + this.nameGUI = nameGUI; + this.nameArrowRight = nameArrowRight; + this.nameArrowLeft = nameArrowLeft; + } + public void openCustomInventory(Player player) + { + Inventory inventory = Bukkit.createInventory(null, 54, this.nameGUI); + + updateInventory(inventory); + + player.openInventory(inventory); + } + @EventHandler + public void onInventoryClick(InventoryClickEvent event) { + if (event.getInventory().getTitle().equals(this.nameGUI)) { + event.setCancelled(true); + + if (event.getCurrentItem() == null) return; + /*if (event.getCurrentItem().getItemMeta().getDisplayName() == Material.DIAMOND) { + Player player = (Player) event.getWhoClicked(); + player.sendMessage(ChatColor.GREEN + "Ты кликнул по алмазу!"); + player.closeInventory(); + }*/ + } + } + + private void updateInventory(Inventory inventory) + { + setUI(inventory); + } + + private void setUI(Inventory inventory) + { + // arrow right + setSkull(inventory, "right", this.nameArrowRight, 0, 6); + // arrow left + setSkull(inventory, "left", this.nameArrowLeft, 8, 6); + // exit + //setSkull(inventory, "exit", ChatColor.ITALIC + "" + ChatColor.DARK_RED + "Выйти", 4, 6); + + + } + + private void setSkull(Inventory inventory, String direction, String name, int x, int y) + { + ItemStack arrow = new ItemStack(Material.ARROW, 1); + ItemMeta meta_arrow = arrow.getItemMeta(); + + meta_arrow.setDisplayName(name); + arrow.setItemMeta(meta_arrow); + + inventory.setItem( + getCordinates(x, y), + arrow + ); + } + + public int getCordinates(int x, int y) + { + if (y == 0) {y++;} + return ((y - 1) * 9 + x) % 64; + } +} diff --git a/src/main/resources/config.yml b/src/main/resources/config.yml index e69de29..4035cac 100644 --- a/src/main/resources/config.yml +++ b/src/main/resources/config.yml @@ -0,0 +1,10 @@ +# Colors you can see here https://htmlcolorcodes.com/minecraft-color-codes/ +# Set Names Only In English + +gui: + # Max title length is 32 letters + title-menu: "Set Your Title In Config" + + arrow: + right-name: "<" + left-name: ">" \ No newline at end of file diff --git a/src/main/resources/plugin.yml b/src/main/resources/plugin.yml index 8252817..1f0385d 100644 --- a/src/main/resources/plugin.yml +++ b/src/main/resources/plugin.yml @@ -1,3 +1,8 @@ name: GiftAPI version: 1.0 -main: tokarotik.giftapi.Main \ No newline at end of file +main: tokarotik.giftapi.Main + +commands: + gift: + description: for test + usage: / \ No newline at end of file