/* * Copyright (c) 2018 univento.eu - All rights reserved * You are not allowed to use, distribute or modify this code */ package eu.univento.teamvento.listener; import eu.univento.commons.player.rank.Rank; import eu.univento.commons.player.uuid.UUIDFetcher; import eu.univento.core.Core; import eu.univento.core.api.gui.AnvilGUI; import eu.univento.core.api.gui.inventory.InventoryGUI; import eu.univento.core.api.gui.inventory.PagedInventoryGUI; import eu.univento.core.api.items.ItemBuilder; import eu.univento.core.api.player.CustomPlayer; import eu.univento.teamvento.TeamVento; import eu.univento.teamvento.plot.*; import org.bukkit.Bukkit; import org.bukkit.Location; import org.bukkit.Material; import org.bukkit.WeatherType; import org.bukkit.block.Biome; import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; import org.bukkit.event.Listener; import org.bukkit.event.block.Action; import org.bukkit.event.inventory.InventoryClickEvent; import org.bukkit.event.player.PlayerInteractEvent; import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.meta.ItemMeta; import org.bukkit.inventory.meta.SkullMeta; import java.util.Map; /** * @author joethei * @version 1.0 */ public class MenuEvents implements Listener{ @EventHandler public void onInteract(PlayerInteractEvent e) { CustomPlayer p = CustomPlayer.getPlayer(e.getPlayer()); InventoryManager inventoryManager = new InventoryManager(p); if(e.getAction() == Action.RIGHT_CLICK_BLOCK || e.getAction() == Action.RIGHT_CLICK_AIR) { if(p.getItemInHand().getType() == Material.WATCH && p.getItemInHand().getItemMeta().getDisplayName().equals("§eErweiterungen")) { if(p.getDatabasePlayer().getRank() == Rank.Player) p.openInventory(inventoryManager.getPlayerInventory()); else { InventoryGUI gui = new InventoryGUI(p, 27, "§eErweiterungen"); gui.addItem(0, new ItemBuilder(Material.SKULL_ITEM).durability((short) 3).skullOwner("MHF_Apple").name("§eKöpfe").build(), customPlayer -> { customPlayer.closeInventory(); InventoryGUI headsMainGui = new InventoryGUI(customPlayer, 9, "§eKöpfe"); headsMainGui.addItem(0, new ItemBuilder(Material.SKULL_ITEM).durability((short) 3).skullOwner("MHF_Chest").name("§eBlöcke").build(), player -> { player.closeInventory(); PagedInventoryGUI pagedInventoryGUI = new PagedInventoryGUI(player, "§eBlöcke"); for(Map.Entry entry : Core.getHeadDB().getBlocks().entrySet()) { pagedInventoryGUI.addItem(new ItemBuilder(Material.SKULL_ITEM).durability((short) 3).skullUrl(entry.getValue()).name(entry.getKey()).build(), clickedPlayer -> { clickedPlayer.closeInventory(); clickedPlayer.getInventory().addItem(new ItemBuilder(Material.SKULL_ITEM).durability((short) 3).skullUrl(entry.getValue()).name(entry.getKey()).build()); }); } pagedInventoryGUI.open(); }); headsMainGui.open(); }); gui.open(); } } } } @EventHandler public void onInventoryClick(InventoryClickEvent e) { CustomPlayer p = CustomPlayer.getPlayer((Player) e.getWhoClicked()); InventoryManager inventoryManager = new InventoryManager(p); if(e.isShiftClick() && e.getCurrentItem().getItemMeta().getDisplayName().equalsIgnoreCase("§eErweiterungen")) e.setCancelled(true); if(!PlotManager.hasPlot(p)) return; if(e.getCurrentItem() == null) return; if(!e.getCurrentItem().hasItemMeta()) return; if(!e.getCurrentItem().getItemMeta().hasDisplayName()) return; Plot plot = PlotManager.getPlotByPlayer(p); assert plot != null; if(e.getInventory().getName().equals(inventoryManager.getPlayerInventory().getName())) { e.setCancelled(true); if(e.getCurrentItem().getType() == Material.BED) { p.closeInventory(); Location loc = plot.getSpawn(); p.teleport(new Location(Bukkit.getWorld("plots"), loc.getX(), loc.getY(), loc.getZ(), 89.0F, 6.0F)); } if(e.getCurrentItem().getItemMeta().getDisplayName().equals("§eGrundstück zurücksetzen")) { p.setFlying(true); PlotManager.resetPlot(plot); p.closeInventory(); } if(e.getCurrentItem().getItemMeta().getDisplayName().equalsIgnoreCase("§eFertig")) { p.closeInventory(); p.openInventory(inventoryManager.getReadyInventory()); } if(e.getCurrentItem().getItemMeta().getDisplayName().equals("§eBiom ändern")) { p.closeInventory(); p.openInventory(inventoryManager.getBiomeInventory()); } if(e.getCurrentItem().getItemMeta().getDisplayName().equals("§eWetter ändern")) { p.closeInventory(); p.openInventory(inventoryManager.getWeatherInventory()); } if(e.getCurrentItem().getType() == Material.WATCH) { p.closeInventory(); p.openInventory(inventoryManager.getTimeInventory()); } if(e.getCurrentItem().getType() == Material.LADDER) { p.closeInventory(); p.openInventory(inventoryManager.getSettingsInventory()); } if(e.getCurrentItem().getType() == Material.MINECART) { p.closeInventory(); Bukkit.getScheduler().runTaskAsynchronously(TeamVento.getInstance(), () -> { /* PageInventory inventory = new PageInventory("§eTeleport", p, true); ArrayList items = new ArrayList<>(); for(Plot plots : PlotManager.getPlots()) { String name = NameFetcher.getRequest(plot.getOwner()); items.add(new ItemBuilder(p, Material.SKULL_ITEM).durability((short) 3).skullOwner(name).name("§e" + plots.getName()).lore("§evon " + name).build()); } inventory.setPages(items); inventory.openInventory(); */ }); } } if(e.getInventory().getName().equals(inventoryManager.getReadyInventory().getName())) { if(e.getCurrentItem().getItemMeta().getDisplayName().equals("Ja")) { p.closeInventory(); plot.setReady(); p.getInventory().remove(p.getInventory().getItem(8)); Core.getOnlinePlayers().stream().filter(player -> player.getDatabasePlayer().isAllowed(Rank.Builder)).forEach(player -> player.sendMessage("§a[Plot]§e" + p.getName() + " ist fertig")); } if(e.getCurrentItem().getItemMeta().getDisplayName().equals("Nein")) p.closeInventory(); } if(e.getInventory().getName().equals(inventoryManager.getBiomeInventory().getName())) { e.setCancelled(true); if(e.getCurrentItem().getType() == Material.WATER_LILY) { p.closeInventory(); plot.setBiome(Biome.SWAMPLAND); } if(e.getCurrentItem().getType() == Material.DEAD_BUSH) { p.closeInventory(); plot.setBiome(Biome.DESERT); } if(e.getCurrentItem().getItemMeta().getDisplayName().equals("§eWald")) { p.closeInventory(); plot.setBiome(Biome.FOREST); } if(e.getCurrentItem().getItemMeta().getDisplayName().equals("§eFlachland")) { p.closeInventory(); plot.setBiome(Biome.PLAINS); } if(e.getCurrentItem().getItemMeta().getDisplayName().equals("§eTaiga")) { p.closeInventory(); plot.setBiome(Biome.TAIGA); } if(e.getCurrentItem().getItemMeta().getDisplayName().equals("§eTundra")) { p.closeInventory(); plot.setBiome(Biome.TAIGA_COLD); } if(e.getCurrentItem().getType() == Material.STAINED_CLAY) { p.closeInventory(); plot.setBiome(Biome.MESA); } if(e.getCurrentItem().getItemMeta().getDisplayName().equals("§eDschungel")) { p.closeInventory(); plot.setBiome(Biome.JUNGLE); } } if(e.getInventory().getName().equals(inventoryManager.getTimeInventory().getName())) { e.setCancelled(true); if(e.getCurrentItem().getType() == Material.MILK_BUCKET) { p.closeInventory(); plot.setTime(Time.MORNING); if(plot.isInPlot(p.getLocation())) p.setPlayerTime(Time.MORNING.getValue(), false); } if(e.getCurrentItem().getType() == Material.DOUBLE_PLANT) { p.closeInventory(); plot.setTime(Time.DAY); if(plot.isInPlot(p.getLocation()))p.setPlayerTime(Time.DAY.getValue(), false); } if(e.getCurrentItem().getType() == Material.BEETROOT_SOUP) { p.closeInventory(); plot.setTime(Time.EVENING); if(plot.isInPlot(p.getLocation()))p.setPlayerTime(Time.EVENING.getValue(), false); } if(e.getCurrentItem().getType() == Material.COAL) { p.closeInventory(); plot.setTime(Time.NIGHT); if(plot.isInPlot(p.getLocation()))p.setPlayerTime(Time.NIGHT.getValue(), false); } } if(e.getInventory().getName().equals(inventoryManager.getWeatherInventory().getName())) { e.setCancelled(true); if(e.getCurrentItem().getType() == Material.DOUBLE_PLANT) { p.closeInventory(); plot.setWeather(Weather.CLEAR); if(plot.isInPlot(p.getLocation()))p.setPlayerWeather(WeatherType.CLEAR); } if(e.getCurrentItem().getType() == Material.WATER_BUCKET) { p.closeInventory(); plot.setWeather(Weather.DOWNFALL); if(plot.isInPlot(p.getLocation()))p.setPlayerWeather(WeatherType.DOWNFALL); } if(e.getCurrentItem().getType() == Material.BLAZE_ROD) { p.closeInventory(); plot.setWeather(Weather.THUNDER); if(plot.isInPlot(p.getLocation()))p.setPlayerWeather(WeatherType.DOWNFALL); } } if(e.getInventory().getName().equals(inventoryManager.getSettingsInventory().getName())) { e.setCancelled(true); if(e.getCurrentItem().getType() == Material.SIGN) { AnvilGUI gui = new AnvilGUI(p, event -> { if(event.getSlot() == AnvilGUI.AnvilSlot.OUTPUT) { event.setWillClose(true); event.setWillDestroy(true); plot.setName(event.getName()); }else{ event.setWillDestroy(true); event.setWillClose(true); } }); ItemStack name = new ItemStack(Material.SIGN); ItemMeta nameMeta = name.getItemMeta(); nameMeta.setDisplayName(plot.getName() == null ? "§cunbennantes Plot" : plot.getName()); name.setItemMeta(nameMeta); gui.setSlot(AnvilGUI.AnvilSlot.INPUT_RIGHT, name); gui.open(); } if(e.getCurrentItem().getType() == Material.NAME_TAG) { AnvilGUI gui = new AnvilGUI(p, event -> { if(event.getSlot() == AnvilGUI.AnvilSlot.OUTPUT) { event.setWillClose(true); event.setWillDestroy(true); plot.setContact(event.getName()); }else{ event.setWillDestroy(true); event.setWillClose(true); } }); ItemStack name = new ItemStack(Material.NAME_TAG); ItemMeta nameMeta = name.getItemMeta(); nameMeta.setDisplayName(plot.getContact() == null ? "§cKontaktdaten" : plot.getContact()); name.setItemMeta(nameMeta); gui.setSlot(AnvilGUI.AnvilSlot.INPUT_RIGHT, name); gui.open(); } } if(e.getInventory().getName().equals("§eTeleport")) { if(e.getCurrentItem().getType() == Material.SKULL_ITEM) { SkullMeta skull = (SkullMeta) e.getCurrentItem().getItemMeta(); Bukkit.getScheduler().runTaskAsynchronously(TeamVento.getInstance(), () -> { Plot tpPlot = PlotManager.getPlotByOwner(UUIDFetcher.getRequest(skull.getOwner()).toString()); assert tpPlot != null; Location loc = tpPlot.getSpawn(); Bukkit.getScheduler().runTask(TeamVento.getInstance(), () -> p.teleport(new Location(loc.getWorld(), loc.getX(), loc.getY(), loc.getZ(), 89.0F, 6.0F))); }); } } } }