package eu.univento.teamvento.listener; import eu.univento.core.api.gui.AnvilGUI; import eu.univento.core.api.items.ItemBuilder; import eu.univento.core.api.items.ScrollingInventory; 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 org.bukkit.Bukkit; import org.bukkit.Location; import org.bukkit.Material; import org.bukkit.WeatherType; import org.bukkit.block.Biome; import org.bukkit.enchantments.Enchantment; import org.bukkit.entity.Entity; import org.bukkit.entity.EntityType; import org.bukkit.entity.Pig; 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 org.bukkit.potion.PotionEffect; import org.bukkit.potion.PotionEffectType; import java.util.ArrayList; public class MenuEvents implements Listener{ @EventHandler public void onInteract(PlayerInteractEvent e) { CustomPlayer p = CustomPlayer.getPlayer(e.getPlayer()); Inventorys invs = new Inventorys(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(invs.getMainInventory()); } } } @EventHandler public void onInventoryClick(InventoryClickEvent e) { CustomPlayer p = CustomPlayer.getPlayer((Player) e.getWhoClicked()); Inventorys invs = new Inventorys(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); if(e.getInventory().getName().equals(invs.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().getType() == Material.LEASH) { p.closeInventory(); p.openInventory(invs.getAnimalsInventory()); } if(e.getCurrentItem().getItemMeta().getDisplayName().equals("§ePlot zurücksetzen")) { PlotManager.clearPlot(plot); Bukkit.getScheduler().runTaskLaterAsynchronously(TeamVento.getInstance(), () -> PlotManager.generatePlot(plot), 13 * 20L); p.closeInventory(); } if(e.getCurrentItem().getItemMeta().getDisplayName().equals("§eBiom ändern")) { p.closeInventory(); p.openInventory(invs.getBiomeInventory()); } if(e.getCurrentItem().getItemMeta().getDisplayName().equals("§eWetter ändern")) { p.closeInventory(); p.openInventory(invs.getWeatherInventory()); } if(e.getCurrentItem().getType() == Material.WATCH) { p.closeInventory(); p.openInventory(invs.getTimeInventory()); } if(e.getCurrentItem().getType() == Material.LADDER) { p.closeInventory(); p.openInventory(invs.getSettingsInventory()); } if(e.getCurrentItem().getType() == Material.MINECART) { p.closeInventory(); Bukkit.getScheduler().runTaskAsynchronously(TeamVento.getInstance(), () -> { ScrollingInventory inventory = new ScrollingInventory(p, "§eTeleport", 27); for(Plot plots : PlotManager.getPlots()) { String name = UUIDFetcher.getName(plots.getOwner()); inventory.addItem(new ItemBuilder(Material.SKULL_ITEM) .durability(3).skullOwner(name) .name(plot.getName().equals("") ? "§cunbenanntes Plot" : "§e" + plots.getName()) .lore("§eby " + name) .make()); } inventory.openInventory(); }); } } if(e.getInventory().getName().equals(invs.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(invs.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(invs.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(invs.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_LEFT, 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 hier angeben" : plot.getContact()); name.setItemMeta(nameMeta); gui.setSlot(AnvilGUI.AnvilSlot.INPUT_LEFT, name); gui.open(); } if(e.getCurrentItem().getType() == Material.DIRT) { ScrollingInventory inventory = new ScrollingInventory(p, "§eResourcePack", 27); for(ResourcePack pack : ResourcePack.values()) { inventory.addItem(new ItemBuilder(pack.getMaterial()).name(pack.getName()) .enchantment(pack.name().equals(plot.getResourcePack().name()) ? Enchantment.ARROW_DAMAGE : null).make()); } inventory.openInventory(); } } 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()); 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))); }); } } if(e.getInventory().getName().equals("§eResourcePack")) { if(e.getCurrentItem() != null) plot.setResourcePack(ResourcePack.valueOf(e.getCurrentItem().getType())); } if(e.getInventory().getName().equals(invs.getAnimalsInventory().getName())) { if(e.getCurrentItem().getType() == Material.COOKED_BEEF) { p.closeInventory(); Entity animal = Bukkit.getWorld("plots").spawnEntity(p.getLocation(), EntityType.PIG); Pig pig = (Pig) animal; pig.setAI(false); pig.setInvulnerable(true); pig.setRemoveWhenFarAway(false); pig.setCollidable(false); pig.setGravity(false); plot.addAnimal(animal); } } } }