2018-01-15 12:27:22 +01:00
/ *
* Copyright ( c ) 2018 univento . eu - All rights reserved
* You are not allowed to use , distribute or modify this code
* /
2016-07-09 13:19:56 +02:00
package eu.univento.teamvento.listener ;
2017-06-04 13:47:12 +02:00
import eu.univento.commons.player.rank.Rank ;
import eu.univento.commons.player.uuid.UUIDFetcher ;
2016-09-17 12:10:01 +02:00
import eu.univento.core.Core ;
2016-07-09 13:19:56 +02:00
import eu.univento.core.api.gui.AnvilGUI ;
2018-01-15 12:27:22 +01:00
import eu.univento.core.api.gui.inventory.InventoryGUI ;
import eu.univento.core.api.gui.inventory.PagedInventoryGUI ;
2016-07-09 13:19:56 +02:00
import eu.univento.core.api.items.ItemBuilder ;
import eu.univento.core.api.player.CustomPlayer ;
import eu.univento.teamvento.TeamVento ;
2017-06-04 13:47:12 +02:00
import eu.univento.teamvento.plot.* ;
2016-07-09 13:19:56 +02:00
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 ;
2018-01-15 12:27:22 +01:00
import java.util.Map ;
2016-09-17 12:10:01 +02:00
2017-06-04 13:47:12 +02:00
/ * *
* @author joethei
* @version 1 . 0
* /
2016-07-09 13:19:56 +02:00
public class MenuEvents implements Listener {
@EventHandler
public void onInteract ( PlayerInteractEvent e ) {
CustomPlayer p = CustomPlayer . getPlayer ( e . getPlayer ( ) ) ;
2016-11-24 20:00:03 +01:00
InventoryManager inventoryManager = new InventoryManager ( p ) ;
2016-07-09 13:19:56 +02:00
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 " ) ) {
2018-01-15 12:27:22 +01:00
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 ( ) ;
}
2016-07-09 13:19:56 +02:00
}
}
}
@EventHandler
public void onInventoryClick ( InventoryClickEvent e ) {
CustomPlayer p = CustomPlayer . getPlayer ( ( Player ) e . getWhoClicked ( ) ) ;
2016-11-24 20:00:03 +01:00
InventoryManager inventoryManager = new InventoryManager ( p ) ;
2016-07-09 13:19:56 +02:00
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 ) ;
2016-09-17 12:10:01 +02:00
assert plot ! = null ;
2018-01-15 12:27:22 +01:00
if ( e . getInventory ( ) . getName ( ) . equals ( inventoryManager . getPlayerInventory ( ) . getName ( ) ) ) {
2016-07-09 13:19:56 +02:00
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 ) ) ;
}
2018-01-15 12:27:22 +01:00
if ( e . getCurrentItem ( ) . getItemMeta ( ) . getDisplayName ( ) . equals ( " §eGrundstück zurücksetzen " ) ) {
p . setFlying ( true ) ;
2016-10-10 13:14:01 +02:00
PlotManager . resetPlot ( plot ) ;
2016-07-09 13:19:56 +02:00
p . closeInventory ( ) ;
}
2016-09-17 12:10:01 +02:00
if ( e . getCurrentItem ( ) . getItemMeta ( ) . getDisplayName ( ) . equalsIgnoreCase ( " §eFertig " ) ) {
p . closeInventory ( ) ;
2018-01-15 12:27:22 +01:00
p . openInventory ( inventoryManager . getReadyInventory ( ) ) ;
2016-09-17 12:10:01 +02:00
}
2016-07-09 13:19:56 +02:00
if ( e . getCurrentItem ( ) . getItemMeta ( ) . getDisplayName ( ) . equals ( " §eBiom ändern " ) ) {
p . closeInventory ( ) ;
2016-11-24 20:00:03 +01:00
p . openInventory ( inventoryManager . getBiomeInventory ( ) ) ;
2016-07-09 13:19:56 +02:00
}
if ( e . getCurrentItem ( ) . getItemMeta ( ) . getDisplayName ( ) . equals ( " §eWetter ändern " ) ) {
p . closeInventory ( ) ;
2016-11-24 20:00:03 +01:00
p . openInventory ( inventoryManager . getWeatherInventory ( ) ) ;
2016-07-09 13:19:56 +02:00
}
if ( e . getCurrentItem ( ) . getType ( ) = = Material . WATCH ) {
p . closeInventory ( ) ;
2016-11-24 20:00:03 +01:00
p . openInventory ( inventoryManager . getTimeInventory ( ) ) ;
2016-07-09 13:19:56 +02:00
}
if ( e . getCurrentItem ( ) . getType ( ) = = Material . LADDER ) {
p . closeInventory ( ) ;
2016-11-24 20:00:03 +01:00
p . openInventory ( inventoryManager . getSettingsInventory ( ) ) ;
2016-07-09 13:19:56 +02:00
}
if ( e . getCurrentItem ( ) . getType ( ) = = Material . MINECART ) {
p . closeInventory ( ) ;
Bukkit . getScheduler ( ) . runTaskAsynchronously ( TeamVento . getInstance ( ) , ( ) - > {
2018-01-15 12:27:22 +01:00
/ *
2016-09-17 12:10:01 +02:00
PageInventory inventory = new PageInventory ( " §eTeleport " , p , true ) ;
ArrayList < ItemStack > items = new ArrayList < > ( ) ;
2016-07-09 13:19:56 +02:00
for ( Plot plots : PlotManager . getPlots ( ) ) {
2017-06-04 13:47:12 +02:00
String name = NameFetcher . getRequest ( plot . getOwner ( ) ) ;
2018-01-15 12:27:22 +01:00
items . add ( new ItemBuilder ( p , Material . SKULL_ITEM ) . durability ( ( short ) 3 ) . skullOwner ( name ) . name ( " §e " + plots . getName ( ) ) . lore ( " §evon " + name ) . build ( ) ) ;
2016-07-09 13:19:56 +02:00
}
2016-09-17 12:10:01 +02:00
inventory . setPages ( items ) ;
2016-07-09 13:19:56 +02:00
inventory . openInventory ( ) ;
2018-01-15 12:27:22 +01:00
* /
2016-07-09 13:19:56 +02:00
} ) ;
}
}
2016-11-24 20:00:03 +01:00
if ( e . getInventory ( ) . getName ( ) . equals ( inventoryManager . getReadyInventory ( ) . getName ( ) ) ) {
2016-09-17 12:10:01 +02:00
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 ( ) ;
}
2016-11-24 20:00:03 +01:00
if ( e . getInventory ( ) . getName ( ) . equals ( inventoryManager . getBiomeInventory ( ) . getName ( ) ) ) {
2016-07-09 13:19:56 +02:00
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 ) ;
}
}
2016-11-24 20:00:03 +01:00
if ( e . getInventory ( ) . getName ( ) . equals ( inventoryManager . getTimeInventory ( ) . getName ( ) ) ) {
2016-07-09 13:19:56 +02:00
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 ) ;
}
}
2016-11-24 20:00:03 +01:00
if ( e . getInventory ( ) . getName ( ) . equals ( inventoryManager . getWeatherInventory ( ) . getName ( ) ) ) {
2016-07-09 13:19:56 +02:00
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 ) ;
}
}
2016-11-24 20:00:03 +01:00
if ( e . getInventory ( ) . getName ( ) . equals ( inventoryManager . getSettingsInventory ( ) . getName ( ) ) ) {
2016-07-09 13:19:56 +02:00
e . setCancelled ( true ) ;
if ( e . getCurrentItem ( ) . getType ( ) = = Material . SIGN ) {
AnvilGUI gui = new AnvilGUI ( p , event - > {
if ( event . getSlot ( ) = = AnvilGUI . AnvilSlot . OUTPUT ) {
2016-11-24 20:00:03 +01:00
event . setWillClose ( true ) ;
event . setWillDestroy ( true ) ;
2016-07-09 13:19:56 +02:00
plot . setName ( event . getName ( ) ) ;
} else {
2016-11-24 20:00:03 +01:00
event . setWillDestroy ( true ) ;
event . setWillClose ( true ) ;
2016-07-09 13:19:56 +02:00
}
} ) ;
ItemStack name = new ItemStack ( Material . SIGN ) ;
ItemMeta nameMeta = name . getItemMeta ( ) ;
nameMeta . setDisplayName ( plot . getName ( ) = = null ? " §cunbennantes Plot " : plot . getName ( ) ) ;
name . setItemMeta ( nameMeta ) ;
2016-11-24 20:00:03 +01:00
gui . setSlot ( AnvilGUI . AnvilSlot . INPUT_RIGHT , name ) ;
2016-07-09 13:19:56 +02:00
gui . open ( ) ;
}
if ( e . getCurrentItem ( ) . getType ( ) = = Material . NAME_TAG ) {
AnvilGUI gui = new AnvilGUI ( p , event - > {
if ( event . getSlot ( ) = = AnvilGUI . AnvilSlot . OUTPUT ) {
2016-11-24 20:00:03 +01:00
event . setWillClose ( true ) ;
event . setWillDestroy ( true ) ;
2016-07-09 13:19:56 +02:00
plot . setContact ( event . getName ( ) ) ;
} else {
2016-11-24 20:00:03 +01:00
event . setWillDestroy ( true ) ;
event . setWillClose ( true ) ;
2016-07-09 13:19:56 +02:00
}
} ) ;
ItemStack name = new ItemStack ( Material . NAME_TAG ) ;
ItemMeta nameMeta = name . getItemMeta ( ) ;
2016-09-17 12:10:01 +02:00
nameMeta . setDisplayName ( plot . getContact ( ) = = null ? " §cKontaktdaten " : plot . getContact ( ) ) ;
2016-07-09 13:19:56 +02:00
name . setItemMeta ( nameMeta ) ;
2016-11-24 20:00:03 +01:00
gui . setSlot ( AnvilGUI . AnvilSlot . INPUT_RIGHT , name ) ;
2016-07-09 13:19:56 +02:00
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 ( ) , ( ) - > {
2017-06-04 13:47:12 +02:00
Plot tpPlot = PlotManager . getPlotByOwner ( UUIDFetcher . getRequest ( skull . getOwner ( ) ) . toString ( ) ) ;
2016-09-17 12:10:01 +02:00
assert tpPlot ! = null ;
2016-07-09 13:19:56 +02:00
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 ) ) ) ;
} ) ;
}
}
}
}