94 lines
3.6 KiB
Java
94 lines
3.6 KiB
Java
/*
|
|
* Copyright (c) 2017 univento.eu - All rights reserved
|
|
* You are not allowed to use, distribute or modify this code
|
|
*/
|
|
|
|
package eu.univento.core.listeners;
|
|
|
|
import eu.univento.commons.player.language.MessageConstant;
|
|
import eu.univento.commons.server.ServerType;
|
|
import eu.univento.core.api.player.CustomPlayer;
|
|
import eu.univento.core.api.player.SpectateManager;
|
|
import eu.univento.core.api.player.Spectator;
|
|
import org.bukkit.Material;
|
|
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.PlayerInteractAtEntityEvent;
|
|
import org.bukkit.event.player.PlayerInteractEvent;
|
|
import org.bukkit.event.player.PlayerQuitEvent;
|
|
import org.bukkit.inventory.meta.SkullMeta;
|
|
|
|
/**
|
|
* @author joethei
|
|
* @version 0.1
|
|
*/
|
|
public class SpectatorEvents implements Listener {
|
|
|
|
@EventHandler
|
|
public void onInteract(PlayerInteractEvent e) {
|
|
CustomPlayer p = CustomPlayer.getPlayer(e.getPlayer());
|
|
if (e.getAction() == Action.RIGHT_CLICK_BLOCK || e.getAction() == Action.RIGHT_CLICK_AIR) {
|
|
if (SpectateManager.contains(p)) {
|
|
Spectator spectator = SpectateManager.get(p);
|
|
assert spectator != null;
|
|
if (e.getItem().getType() == Material.COMPASS) {
|
|
spectator.openPlayerListInventory();
|
|
}
|
|
if (e.getItem().getType() == Material.BED) {
|
|
p.connectToServer(ServerType.LOBBY);
|
|
}
|
|
if (e.getItem().getType() == Material.PAPER) {
|
|
p.connectToServer(ServerType.getServerType());
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
@EventHandler
|
|
public void onPlayerInteractAtEntity(PlayerInteractAtEntityEvent e) {
|
|
CustomPlayer p = CustomPlayer.getPlayer(e.getPlayer());
|
|
if (SpectateManager.contains(p)) {
|
|
if (e.getRightClicked() instanceof Player) {
|
|
CustomPlayer player = CustomPlayer.getPlayer((Player) e.getRightClicked());
|
|
Spectator spectator = SpectateManager.get(p);
|
|
assert spectator != null;
|
|
spectator.spectate(player);
|
|
}
|
|
}
|
|
}
|
|
|
|
@EventHandler
|
|
public void onInventoryClick(InventoryClickEvent e) {
|
|
CustomPlayer p = CustomPlayer.getPlayer((Player) e.getWhoClicked());
|
|
if (SpectateManager.contains(p)) {
|
|
if (e.getInventory().getName().equals(p.getDatabasePlayer().getLanguage().getWord("Game.Menu.SpectateMenu"))) {
|
|
if (e.getCurrentItem().getType() == Material.SKULL_ITEM) {
|
|
SkullMeta meta = (SkullMeta) e.getCurrentItem().getItemMeta();
|
|
CustomPlayer player = CustomPlayer.getPlayer(meta.getOwner());
|
|
assert player != null;
|
|
Spectator spectator = SpectateManager.get(p);
|
|
assert spectator != null;
|
|
if (player.isOnline()) {
|
|
p.closeInventory();
|
|
spectator.spectate(player);
|
|
} else {
|
|
p.sendMessage(p.getDatabasePlayer().getLanguage().getMessage(MessageConstant.COMMAND_NOT_ONLINE));
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
@EventHandler
|
|
public void onPlayerQuit(PlayerQuitEvent e) {
|
|
CustomPlayer p = CustomPlayer.getPlayer(e.getPlayer());
|
|
if (SpectateManager.contains(p)) {
|
|
Spectator spectator = SpectateManager.get(p);
|
|
assert spectator != null;
|
|
spectator.remove();
|
|
}
|
|
}
|
|
} |