Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package me.lixko.plugins.remoteorderer;
- import java.util.Arrays;
- import org.bukkit.Bukkit;
- import org.bukkit.entity.Player;
- import org.bukkit.event.EventHandler;
- import org.bukkit.event.EventPriority;
- import org.bukkit.event.HandlerList;
- import org.bukkit.event.Listener;
- import org.bukkit.event.inventory.InventoryClickEvent;
- import org.bukkit.inventory.Inventory;
- import org.bukkit.inventory.ItemStack;
- import org.bukkit.inventory.meta.ItemMeta;
- import org.bukkit.plugin.Plugin;
- public class IconMenu implements Listener {
- private String name;
- private int size;
- private OptionClickEventHandler handler;
- private Plugin plugin;
- private String[] optionNames;
- private ItemStack[] optionIcons;
- public IconMenu(String name, int size, OptionClickEventHandler handler, Plugin plugin) {
- this.name = name;
- this.size = size;
- this.handler = handler;
- this.plugin = plugin;
- this.optionNames = new String[size];
- this.optionIcons = new ItemStack[size];
- plugin.getServer().getPluginManager().registerEvents(this, plugin);
- }
- public IconMenu setOption(int position, ItemStack icon, String name, String... info) {
- optionNames[position] = name;
- optionIcons[position] = setItemNameAndLore(icon, name, info);
- return this;
- }
- public void open(Player player) {
- Inventory inventory = Bukkit.createInventory(player, size, name);
- for (int i = 0; i < optionIcons.length; i++) {
- if (optionIcons[i] != null) {
- inventory.setItem(i, optionIcons[i]);
- }
- }
- player.openInventory(inventory);
- }
- public void destroy() {
- HandlerList.unregisterAll(this);
- handler = null;
- plugin = null;
- optionNames = null;
- optionIcons = null;
- }
- @EventHandler(priority=EventPriority.MONITOR)
- void onInventoryClick(InventoryClickEvent event) {
- if (event.getInventory().getTitle().equals(name)) {
- event.setCancelled(true);
- int slot = event.getRawSlot();
- if (slot >= 0 && slot < size && optionNames[slot] != null) {
- Plugin plugin = this.plugin;
- OptionClickEvent e = new OptionClickEvent((Player)event.getWhoClicked(), slot, optionNames[slot]);
- handler.onOptionClick(e);
- if (e.willClose()) {
- final Player p = (Player)event.getWhoClicked();
- Bukkit.getScheduler().scheduleSyncDelayedTask(plugin, new Runnable() {
- public void run() {
- p.closeInventory();
- }
- }, 1);
- }
- if (e.willDestroy()) {
- destroy();
- }
- }
- }
- }
- public interface OptionClickEventHandler {
- public void onOptionClick(OptionClickEvent event);
- }
- public class OptionClickEvent {
- private Player player;
- private int position;
- private String name;
- private boolean close;
- private boolean destroy;
- public OptionClickEvent(Player player, int position, String name) {
- this.player = player;
- this.position = position;
- this.name = name;
- this.close = true;
- this.destroy = false;
- }
- public Player getPlayer() {
- return player;
- }
- public int getPosition() {
- return position;
- }
- public String getName() {
- return name;
- }
- public boolean willClose() {
- return close;
- }
- public boolean willDestroy() {
- return destroy;
- }
- public void setWillClose(boolean close) {
- this.close = close;
- }
- public void setWillDestroy(boolean destroy) {
- this.destroy = destroy;
- }
- }
- private ItemStack setItemNameAndLore(ItemStack item, String name, String[] lore) {
- ItemMeta im = item.getItemMeta();
- im.setDisplayName(name);
- im.setLore(Arrays.asList(lore));
- item.setItemMeta(im);
- return item;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment