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;
|
||||
|
||||
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<Map<?, ?>> items = (List<Map<?, ?>>) 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);
|
||||
|
|
|
@ -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<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);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1 +1 @@
|
|||
yes: 'yes'
|
||||
message_prefix: '[Hubbit]'
|
Loading…
Reference in a new issue