diff --git a/.gradle/7.6.1/executionHistory/executionHistory.bin b/.gradle/7.6.1/executionHistory/executionHistory.bin index 66c8abc..085c36b 100644 Binary files a/.gradle/7.6.1/executionHistory/executionHistory.bin and b/.gradle/7.6.1/executionHistory/executionHistory.bin differ diff --git a/.gradle/7.6.1/executionHistory/executionHistory.lock b/.gradle/7.6.1/executionHistory/executionHistory.lock index dfce61e..381c7ef 100644 Binary files a/.gradle/7.6.1/executionHistory/executionHistory.lock and b/.gradle/7.6.1/executionHistory/executionHistory.lock differ diff --git a/.gradle/7.6.1/fileHashes/fileHashes.bin b/.gradle/7.6.1/fileHashes/fileHashes.bin index 6d5dfad..4a3e3f9 100644 Binary files a/.gradle/7.6.1/fileHashes/fileHashes.bin and b/.gradle/7.6.1/fileHashes/fileHashes.bin differ diff --git a/.gradle/7.6.1/fileHashes/fileHashes.lock b/.gradle/7.6.1/fileHashes/fileHashes.lock index e4328cb..e7d2aa5 100644 Binary files a/.gradle/7.6.1/fileHashes/fileHashes.lock and b/.gradle/7.6.1/fileHashes/fileHashes.lock differ diff --git a/.gradle/7.6.1/fileHashes/resourceHashesCache.bin b/.gradle/7.6.1/fileHashes/resourceHashesCache.bin index d6b1f3c..1113cb1 100644 Binary files a/.gradle/7.6.1/fileHashes/resourceHashesCache.bin and b/.gradle/7.6.1/fileHashes/resourceHashesCache.bin differ diff --git a/.gradle/buildOutputCleanup/buildOutputCleanup.lock b/.gradle/buildOutputCleanup/buildOutputCleanup.lock index c5972a4..8eb02f4 100644 Binary files a/.gradle/buildOutputCleanup/buildOutputCleanup.lock and b/.gradle/buildOutputCleanup/buildOutputCleanup.lock differ diff --git a/src/main/java/me/theclashfruit/hubbit/commands/MenuCommand.java b/src/main/java/me/theclashfruit/hubbit/commands/MenuCommand.java index e484f59..9c51cfb 100644 --- a/src/main/java/me/theclashfruit/hubbit/commands/MenuCommand.java +++ b/src/main/java/me/theclashfruit/hubbit/commands/MenuCommand.java @@ -1,6 +1,5 @@ package me.theclashfruit.hubbit.commands; -import me.theclashfruit.hubbit.Hubbit; import me.theclashfruit.hubbit.utils.ConfigLoaderSingleton; import org.bukkit.Bukkit; import org.bukkit.ChatColor; @@ -9,19 +8,17 @@ import org.bukkit.command.Command; import org.bukkit.command.CommandExecutor; import org.bukkit.command.CommandSender; import org.bukkit.configuration.file.FileConfiguration; -import org.bukkit.configuration.file.YamlConfiguration; import org.bukkit.entity.Player; import org.bukkit.inventory.Inventory; import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.meta.ItemMeta; import org.jetbrains.annotations.NotNull; -import java.io.File; import java.util.List; import java.util.Map; +import java.util.concurrent.atomic.AtomicInteger; import static org.bukkit.Bukkit.getLogger; -import static org.bukkit.plugin.java.JavaPlugin.getPlugin; public class MenuCommand implements CommandExecutor { @Override @@ -53,7 +50,13 @@ public class MenuCommand implements CommandExecutor { } } + AtomicInteger currentPage = new AtomicInteger(); + menuConfig.getMapList("pages").forEach(page -> { + if(currentPage.get() > 0 && !menuConfig.getBoolean("navigation")) { + return; + } + List> items = (List>) page.get("items"); items.forEach(item -> { @@ -75,6 +78,8 @@ public class MenuCommand implements CommandExecutor { menu.setItem((int) item.get("slot"), itemStack); }); + + currentPage.getAndIncrement(); }); player.openInventory(menu); diff --git a/src/main/java/me/theclashfruit/hubbit/events/MenuListener.java b/src/main/java/me/theclashfruit/hubbit/events/MenuListener.java index 56bb0b7..6bcc35a 100644 --- a/src/main/java/me/theclashfruit/hubbit/events/MenuListener.java +++ b/src/main/java/me/theclashfruit/hubbit/events/MenuListener.java @@ -3,16 +3,63 @@ package me.theclashfruit.hubbit.events; import me.theclashfruit.hubbit.utils.ConfigLoaderSingleton; import org.bukkit.ChatColor; import org.bukkit.configuration.file.FileConfiguration; +import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; import org.bukkit.event.Listener; import org.bukkit.event.inventory.InventoryClickEvent; +import java.util.List; +import java.util.Map; + +import static org.bukkit.Bukkit.getLogger; + public class MenuListener implements Listener { @EventHandler public void onClick(InventoryClickEvent event) { FileConfiguration menuConfig = ConfigLoaderSingleton.getInstance().getMenuFileConfig(); + Player player = (Player) event.getWhoClicked(); + if(event.getView().getTitle().equalsIgnoreCase(ChatColor.translateAlternateColorCodes('&', menuConfig.getString("title")))) { + int eventSlot = event.getSlot(); + + menuConfig.getMapList("pages").forEach(page -> { + List> items = (List>) page.get("items"); + + items.forEach(item -> { + if(item.get("slot").equals(eventSlot)) { + List> events = (List>) item.get("events"); + + events.forEach(menuEvent -> { + switch (menuEvent.get("action").toString().toLowerCase()) { + case "send_message" -> { + player.closeInventory(); + + player.sendMessage(ChatColor.translateAlternateColorCodes('&', menuEvent.get("data").toString())); + } + case "join_server" -> { + player.closeInventory(); + + player.performCommand("/server " + menuEvent.get("data").toString()); + } + case "execute_command" -> { + player.closeInventory(); + + player.performCommand(menuEvent.get("data").toString()); + } + case "do_nothing" -> {} + default -> { + player.closeInventory(); + + player.sendMessage(ChatColor.RED + "An error occurred while executing the action of the item."); + player.sendMessage(ChatColor.RED + "Please contact an administrator."); + } + } + }); + } + }); + }); + event.setCancelled(true); } } diff --git a/src/main/resources/config.yml b/src/main/resources/config.yml index 4af592a..46c7913 100644 --- a/src/main/resources/config.yml +++ b/src/main/resources/config.yml @@ -1 +1 @@ -yes: 'yes' \ No newline at end of file +message_prefix: '[Hubbit]' \ No newline at end of file