package eu.univento.teamvento.listener; import eu.univento.commons.player.Rank; import eu.univento.core.Core; import eu.univento.core.api.gui.AnvilGUI; import eu.univento.core.api.items.ItemBuilder; import eu.univento.core.api.items.PageInventory; import eu.univento.core.api.player.CustomPlayer; import eu.univento.core.api.utils.UUIDFetcher; import eu.univento.teamvento.TeamVento; import eu.univento.teamvento.utils.*; import net.gpedro.integrations.slack.SlackMessage; 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.ArrayList; 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")) { p.openInventory(inventoryManager.getMainInventory()); } } } @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.getMainInventory().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("§ePlot zurücksetzen")) { PlotManager.resetPlot(plot); p.closeInventory(); } if(e.getCurrentItem().getItemMeta().getDisplayName().equalsIgnoreCase("§eFertig")) { p.closeInventory(); if(plot.hasName() && plot.hasContact()) p.openInventory(inventoryManager.getReadyInventory()); else p.sendMessage("§cName und Kontaktinformationen müssen angegeben werden"); } 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 = UUIDFetcher.getName(plots.getOwner()); items.add(new ItemBuilder(Material.SKULL_ITEM).durability((short) 3).skullOwner(name).name("§e" + plots.getName()).lore("§evon " + name).make()); } 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")); SlackMessage message = new SlackMessage("#bauevent", p.getName(), " ist nun fertig mit bauen"); message.setIcon("http://cravatar.eu/head/" + p.getUniqueId().toString()); Core.getCommons().getSlackHandler().getSlackAPI().call(message); } 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()); p.refreshExperience(); }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()); p.refreshExperience(); }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.getUUID(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))); }); } } } }