/* * Menu.java * * Copyright (c) 2015 ITSTAKE * * This program is free software: you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation, either version 3 of the License, or * * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * * but WITHOUT ANY WARRANTY; without even the implied warranty of * * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * * along with this program. If not, see <http://www.gnu.org/licenses/>. * */ package tk.itstake.steakgui.gui; import ninja.amp.ampmenus.menus.ItemMenu; import org.bukkit.Bukkit; import org.bukkit.ChatColor; import org.bukkit.entity.Player; import org.bukkit.plugin.java.JavaPlugin; import org.bukkit.scheduler.BukkitScheduler; import org.bukkit.scheduler.BukkitTask; import tk.itstake.steakgui.SteakGUI; import tk.itstake.util.MessageHandler; import java.util.HashMap; /** * Created by bexco on 2015-07-26. */ public class Menu { String TITLE = ""; String NAME = ""; int SIZE = 9; HashMap<Integer, GUIItem> ITEM_ARRAY = null; JavaPlugin PLUGIN = null; public Menu(String name, String title, int size, HashMap<Integer, GUIItem> itemarray) { PLUGIN = (JavaPlugin)SteakGUI.p; TITLE = title; SIZE = size; ITEM_ARRAY = itemarray; NAME = name; } public Menu(String name, String title, HashMap<Integer, GUIItem> itemarray) { PLUGIN = (JavaPlugin)SteakGUI.p; TITLE = title; SIZE = itemarray.size(); ITEM_ARRAY = itemarray; NAME = name; } public void setTitle(String title) { TITLE = title; } public void setSize(int size) { SIZE = size; } public void setItem(int slot, GUIItem item) { if(ITEM_ARRAY != null) { ITEM_ARRAY.put(slot, item); } } public boolean hasItem(int slot) { if(ITEM_ARRAY != null && ITEM_ARRAY.containsKey(slot) && ITEM_ARRAY.get(slot) != null) { return true; } else { return false; } } public void removeItem(int slot) { if(ITEM_ARRAY != null && ITEM_ARRAY.containsKey(slot)) { ITEM_ARRAY.remove(slot); } } public void setItemArray(HashMap<Integer, GUIItem> itemarray) { ITEM_ARRAY = itemarray; } public void open(final Player player) { final ItemMenu menu; menu = new ItemMenu(SteakGUI.convertMessage(TITLE, this, player), ItemMenu.Size.fit(Integer.parseInt(SteakGUI.convertMessage(SIZE + "", this, player))), PLUGIN); for(Integer key:ITEM_ARRAY.keySet()) { if(canInclude(player, ITEM_ARRAY.get(key))) { if(key < ItemMenu.Size.fit(Integer.parseInt(SteakGUI.convertMessage(SIZE + "", this, player))).getSize()) { menu.setItem(key, ITEM_ARRAY.get(key).getMenuItem(this, player)); } } } menu.open(player); } public void update(final Player player) { final ItemMenu menu = new ItemMenu(SteakGUI.convertMessage(TITLE, this, player), ItemMenu.Size.fit(SIZE), PLUGIN); for(Integer key:ITEM_ARRAY.keySet()) { if(canInclude(player, ITEM_ARRAY.get(key))) { menu.setItem(key, ITEM_ARRAY.get(key).getMenuItem(this, player)); } } BukkitScheduler scheduler = Bukkit.getServer().getScheduler(); scheduler.scheduleSyncDelayedTask(SteakGUI.p, new Runnable() { @Override public void run() { menu.update(player); } }, 2); } public boolean canInclude(Player player, GUIItem item) { if(item.getPermission().equals("") || player.hasPermission(item.getPermission())) { return true; } else { return false; } } public String getTitle() { return TITLE; } public int getSize() { return SIZE; } public HashMap<Integer, GUIItem> getItemArray() { return ITEM_ARRAY; } public String getName() { return NAME; } }