feat: add actions to menu
This commit is contained in:
parent
a76a22a662
commit
5da010de52
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
@ -1,6 +1,5 @@
|
||||||
package me.theclashfruit.hubbit.commands;
|
package me.theclashfruit.hubbit.commands;
|
||||||
|
|
||||||
import me.theclashfruit.hubbit.Hubbit;
|
|
||||||
import me.theclashfruit.hubbit.utils.ConfigLoaderSingleton;
|
import me.theclashfruit.hubbit.utils.ConfigLoaderSingleton;
|
||||||
import org.bukkit.Bukkit;
|
import org.bukkit.Bukkit;
|
||||||
import org.bukkit.ChatColor;
|
import org.bukkit.ChatColor;
|
||||||
|
@ -9,19 +8,17 @@ 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.configuration.file.FileConfiguration;
|
import org.bukkit.configuration.file.FileConfiguration;
|
||||||
import org.bukkit.configuration.file.YamlConfiguration;
|
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
import org.bukkit.inventory.Inventory;
|
import org.bukkit.inventory.Inventory;
|
||||||
import org.bukkit.inventory.ItemStack;
|
import org.bukkit.inventory.ItemStack;
|
||||||
import org.bukkit.inventory.meta.ItemMeta;
|
import org.bukkit.inventory.meta.ItemMeta;
|
||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
|
|
||||||
import java.io.File;
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
import java.util.concurrent.atomic.AtomicInteger;
|
||||||
|
|
||||||
import static org.bukkit.Bukkit.getLogger;
|
import static org.bukkit.Bukkit.getLogger;
|
||||||
import static org.bukkit.plugin.java.JavaPlugin.getPlugin;
|
|
||||||
|
|
||||||
public class MenuCommand implements CommandExecutor {
|
public class MenuCommand implements CommandExecutor {
|
||||||
@Override
|
@Override
|
||||||
|
@ -53,7 +50,13 @@ public class MenuCommand implements CommandExecutor {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
AtomicInteger currentPage = new AtomicInteger();
|
||||||
|
|
||||||
menuConfig.getMapList("pages").forEach(page -> {
|
menuConfig.getMapList("pages").forEach(page -> {
|
||||||
|
if(currentPage.get() > 0 && !menuConfig.getBoolean("navigation")) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
List<Map<?, ?>> items = (List<Map<?, ?>>) page.get("items");
|
List<Map<?, ?>> items = (List<Map<?, ?>>) page.get("items");
|
||||||
|
|
||||||
items.forEach(item -> {
|
items.forEach(item -> {
|
||||||
|
@ -75,6 +78,8 @@ public class MenuCommand implements CommandExecutor {
|
||||||
|
|
||||||
menu.setItem((int) item.get("slot"), itemStack);
|
menu.setItem((int) item.get("slot"), itemStack);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
currentPage.getAndIncrement();
|
||||||
});
|
});
|
||||||
|
|
||||||
player.openInventory(menu);
|
player.openInventory(menu);
|
||||||
|
|
|
@ -3,16 +3,63 @@ package me.theclashfruit.hubbit.events;
|
||||||
import me.theclashfruit.hubbit.utils.ConfigLoaderSingleton;
|
import me.theclashfruit.hubbit.utils.ConfigLoaderSingleton;
|
||||||
import org.bukkit.ChatColor;
|
import org.bukkit.ChatColor;
|
||||||
import org.bukkit.configuration.file.FileConfiguration;
|
import org.bukkit.configuration.file.FileConfiguration;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
import org.bukkit.event.EventHandler;
|
import org.bukkit.event.EventHandler;
|
||||||
import org.bukkit.event.Listener;
|
import org.bukkit.event.Listener;
|
||||||
import org.bukkit.event.inventory.InventoryClickEvent;
|
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 {
|
public class MenuListener implements Listener {
|
||||||
@EventHandler
|
@EventHandler
|
||||||
public void onClick(InventoryClickEvent event) {
|
public void onClick(InventoryClickEvent event) {
|
||||||
FileConfiguration menuConfig = ConfigLoaderSingleton.getInstance().getMenuFileConfig();
|
FileConfiguration menuConfig = ConfigLoaderSingleton.getInstance().getMenuFileConfig();
|
||||||
|
|
||||||
|
Player player = (Player) event.getWhoClicked();
|
||||||
|
|
||||||
if(event.getView().getTitle().equalsIgnoreCase(ChatColor.translateAlternateColorCodes('&', menuConfig.getString("title")))) {
|
if(event.getView().getTitle().equalsIgnoreCase(ChatColor.translateAlternateColorCodes('&', menuConfig.getString("title")))) {
|
||||||
|
int eventSlot = event.getSlot();
|
||||||
|
|
||||||
|
menuConfig.getMapList("pages").forEach(page -> {
|
||||||
|
List<Map<?, ?>> items = (List<Map<?, ?>>) page.get("items");
|
||||||
|
|
||||||
|
items.forEach(item -> {
|
||||||
|
if(item.get("slot").equals(eventSlot)) {
|
||||||
|
List<Map<?, ?>> events = (List<Map<?, ?>>) 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);
|
event.setCancelled(true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1 +1 @@
|
||||||
yes: 'yes'
|
message_prefix: '[Hubbit]'
|
Loading…
Reference in a new issue