package de.fanta.challenges.guis;
import de.fanta.challenges.Challenges;
import de.fanta.challenges.utils.ChatUtil;
import de.fanta.challenges.utils.guiutils.AbstractWindow;
import de.fanta.challenges.utils.guiutils.GUIUtils;
import de.iani.cubesideutils.bukkit.items.CustomHeads;
import org.bukkit.Bukkit;
import org.bukkit.Material;
import org.bukkit.entity.Player;
import org.bukkit.event.inventory.InventoryClickEvent;
import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.meta.SkullMeta;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;
public class TeleportGUI extends AbstractWindow {
private static final Challenges plugin = Challenges.getPlugin();
private static final Map<Integer, Player> playerPerSlot = new HashMap<>();
private static final int INVENTORY_SIZE = 9 * (plugin.getVanish().getPlayerListWithoutVanishPlayers().size() / 7 + ((plugin.getVanish().getPlayerListWithoutVanishPlayers().size() % 7 > 0) ? 1 : 0)) + 18;
private static final int CLOSE_IDEX = INVENTORY_SIZE - 9;
public TeleportGUI(Player player) {
super(player, Bukkit.createInventory(player, INVENTORY_SIZE, plugin.getGUIPREFIX() + " >> Event Settings"));
}
@Override
protected void rebuildInventory() {
int row = 0;
int cat = 0;
if (plugin.getVanish().getPlayerListWithoutVanishPlayers().isEmpty()) {
ChatUtil.sendErrorMessage(getPlayer(), "Keine Spieler Online");
return;
}
for (Player pp : plugin.getVanish().getPlayerListWithoutVanishPlayers()) {
int slot = row * 9 + cat + 10;
ArrayList<String> metalore = new ArrayList<>();
ItemStack stack = new ItemStack(Material.PLAYER_HEAD);
SkullMeta skullMeta = (SkullMeta) stack.getItemMeta();
skullMeta.setPlayerProfile(pp.getPlayerProfile());
skullMeta.setDisplayName(ChatUtil.BLUE + pp.getName());
metalore.add(ChatUtil.GREEN + "Linksklick: " + getPlayer().getName() + " -> " + pp.getName());
metalore.add(ChatUtil.GREEN + "Rechtsklick: " + pp.getName() + " -> " + getPlayer().getName());
skullMeta.setLore(metalore);
stack.setItemMeta(skullMeta);
getInventory().setItem(slot, stack);
playerPerSlot.put(slot, pp);
if (cat < 6) {
cat++;
continue;
}
row++;
cat = 0;
}
getInventory().setItem(CLOSE_IDEX, CustomHeads.RAINBOW_X.getHead(ChatUtil.RED + "MenĂ¼ verlassen"));
for (int i = 0; i < getInventory().getSize(); i++) {
if (getInventory().getItem(i) == null || getInventory().getItem(i).getType() == Material.AIR) {
getInventory().setItem(i, GUIUtils.EMPTY_ICON);
}
}
}
@Override
public void onItemClicked(InventoryClickEvent event) {
Player player = getPlayer();
if (!mayAffectThisInventory(event)) {
return;
}
event.setCancelled(true);
if (!getInventory().equals(event.getClickedInventory())) {
return;
}
int slot = event.getSlot();
Player pp = playerPerSlot.get(slot);
if (pp != null && pp.isOnline()) {
if (event.isLeftClick()) {
player.teleportAsync(pp.getLocation());
ChatUtil.sendNormalMessage(player, "Du wurdest zu " + pp.getName() + " teleportiert!");
} else if (event.isRightClick()) {
pp.teleportAsync(player.getLocation());
ChatUtil.sendNormalMessage(player, pp.getName() + " wurde zu dir teleportiert!");
}
player.closeInventory();
}
if (slot == CLOSE_IDEX) {
getPlayer().closeInventory();
}
}
}