Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package org.brokenarrow.storage.menus.redone;
- import org.bukkit.Bukkit;
- import org.bukkit.Location;
- import org.bukkit.Material;
- import org.bukkit.World;
- import org.bukkit.entity.Player;
- import org.bukkit.event.inventory.InventoryClickEvent;
- import org.bukkit.inventory.ItemStack;
- import org.bukkit.inventory.meta.SkullMeta;
- import java.util.ListIterator;
- import java.util.Set;
- import java.util.UUID;
- public class MenuUtiliListener {
- private final MenuCache menuCache = MenuCache.getInstance();
- private static final MenuUtiliListener instance = new MenuUtiliListener();
- private String playermetadata;
- public void onMenuClicking(InventoryClickEvent event) {
- Player player = (Player) event.getWhoClicked();
- Location location = null;
- Object object = null;
- if (player.hasMetadata(playermetadata)) {
- object = player.getMetadata(playermetadata);
- if (object instanceof Location)
- location = (Location) object;
- }
- System.out.println("loc " + location);
- MenuHolderTest menu = menuCache.getMenuInCache(checkMap(player, location, object));
- System.out.println("menu " + menu.getMenu() + " " + event.getView().getTopInventory() + " " + event.getClickedInventory());
- if (!event.getView().getTopInventory().equals(menu.getMenu())) return;
- if (menu != null && !menu.getButtons().isEmpty()) {
- ItemStack clickedItem = event.getCurrentItem();
- int clickedSlot = event.getSlot();
- int clickedPos = menu.getPageNumber() * menu.getMenu().getSize() + clickedSlot;
- if (clickedItem == null || clickedItem.getType() == Material.AIR) return;
- System.out.println("is not Material.PLAYER_HEAD " + clickedItem.getType());
- if (menu.isSlotsYouCanAddItems()) {
- if (menu.getFillSpace().contains(clickedPos))
- return;
- else
- event.setCancelled(true);
- }
- if (menu.isStartLoadMenuButtons()) {
- event.setCancelled(true);
- return;
- }
- for (ListIterator<MenuButton> menuButtons = menu.getButtons().listIterator(); menuButtons.hasNext(); ) {
- MenuButton menuButton = menuButtons.next();
- if (!(clickedItem.getType() == Material.PLAYER_HEAD) && menuButton.getItem() != null && menuButton.getItem().isSimilar(clickedItem)) {
- if (menu.getAddedButtons().containsKey(clickedPos) && menu.getAddedButtons().get(clickedPos).isSimilar(clickedItem)) {
- menuButton.onClickInsideMenu(player, menu.getMenu(), event.getClick());
- event.setCancelled(true);
- break;
- }
- }
- if (menu.getListOfFillItems() != null && clickedItem.getType() == Material.PLAYER_HEAD) {
- for (Object itemstack : menu.getListOfFillItems()) {
- if (itemstack instanceof UUID) {
- SkullMeta meta = (SkullMeta) clickedItem.getItemMeta();
- if (Bukkit.getOfflinePlayer((UUID) itemstack).equals(meta.getOwningPlayer()) && menu.getAddedButtons().containsKey(clickedPos) && menu.getAddedButtons().get(clickedPos).isSimilar(clickedItem)) {
- menuButton.onClickInsideMenu(player, menu.getMenu(), event.getClick());
- event.setCancelled(true);
- break;
- }
- }
- }
- }
- }
- if (!menu.isSlotsYouCanAddItems()) {
- event.setCancelled(true);
- }
- }
- }
- private Object checkMap(Player player, Location location, Object unknownObject) {
- Set<Object> obj = menuCache.getMenusCached().keySet();
- Object object = null;
- for (Object objectType : obj) {
- if (objectType != null) {
- Object[] splitObjekt = objectType.toString().split("\\*__\\*");
- String firstObject = splitObjekt[0].toString();
- int lastIndexOf = firstObject.lastIndexOf("}");
- Player player1 = Bukkit.getPlayer(splitObjekt[0].toString().substring(17, lastIndexOf));
- if (splitObjekt.length > 1 && player1 != null) {
- if (player1 == player)
- object = splitObjekt[0] + "*__*" + splitObjekt[1];
- } else if (splitObjekt.length > 1 && isLocation(splitObjekt[0]) != null && location != null) {
- if (!isLocation(splitObjekt[0]).equals(location)) continue;
- object = splitObjekt[0] + "*__*" + splitObjekt[1];
- }
- if (splitObjekt.length > 1 && splitObjekt[0].equals(unknownObject))
- object = splitObjekt[0] + "*__*" + splitObjekt[1];
- }
- }
- return object;
- }
- public void setPlayermetadata(String playermetadata) {
- this.playermetadata = playermetadata;
- }
- public static MenuUtiliListener getInstance() {
- return instance;
- }
- public static Location isLocation(Object raw) {
- String[] parts = new String[0];
- if (!raw.toString().contains(" ")) {
- String rawText = raw.toString();
- String[] rawTextSplit = rawText.split(",");
- int lastIndexOf = rawTextSplit[0].lastIndexOf("}");
- int firstIndexOf = rawTextSplit[0].lastIndexOf("{");
- parts = new String[]{rawTextSplit[0].substring(firstIndexOf + 6, lastIndexOf) + "", rawTextSplit[1].replace("x=", "").split("\\.")[0] + "", rawTextSplit[2].replace("y=", "").split("\\.")[0] + "", rawTextSplit[3].replace("z=", "").split("\\.")[0]};
- }
- int length;
- if (raw.toString().contains(" "))
- length = (parts = raw.toString().split(" ")).length;
- else
- length = parts.length;
- if (length == 4) {
- final String world = parts[0];
- final World bukkitWorld = Bukkit.getWorld(world);
- if (bukkitWorld == null)
- return null;
- if (!parts[1].matches("[-+]?\\d+") && !parts[2].matches("[-+]?\\d+") && !parts[3].matches("[-+]?\\d+"))
- return null;
- else {
- int x = Integer.parseInt(parts[1]), y = Integer.parseInt(parts[2]), z = Integer.parseInt(parts[3]);
- return new Location(bukkitWorld, x, y, z);
- }
- }
- return null;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement