271 lines
13 KiB
Java
271 lines
13 KiB
Java
/*
|
|
* 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<String, String> 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<ItemStack> 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)));
|
|
});
|
|
}
|
|
}
|
|
}
|
|
} |