Skip to content

Instantly share code, notes, and snippets.

@MCMastery
Created July 3, 2016 14:28
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save MCMastery/136f65ea25c191507e078d66783a1a5a to your computer and use it in GitHub Desktop.
Save MCMastery/136f65ea25c191507e078d66783a1a5a to your computer and use it in GitHub Desktop.
package com.dgrissom.tpgui;
import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.Material;
import org.bukkit.SkullType;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.inventory.InventoryClickEvent;
import org.bukkit.event.inventory.InventoryCloseEvent;
import org.bukkit.event.player.PlayerKickEvent;
import org.bukkit.event.player.PlayerQuitEvent;
import org.bukkit.inventory.Inventory;
import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.meta.SkullMeta;
import org.bukkit.plugin.java.JavaPlugin;
import java.util.HashSet;
import java.util.Set;
import java.util.UUID;
public class TPGUI extends JavaPlugin implements Listener {
private static Set<UUID> guisOpened = new HashSet<>();
public static ItemStack getPlayerHead(Player player) {
ItemStack head = new ItemStack(Material.SKULL_ITEM, 1, (short) SkullType.PLAYER.ordinal());
SkullMeta meta = (SkullMeta) head.getItemMeta();
meta.setOwner(player.getName());
meta.setDisplayName(ChatColor.RESET + player.getName());
head.setItemMeta(meta);
return head;
}
public static Inventory getGUI(Player player) {
Inventory inventory = Bukkit.createInventory(player, 9 * 6, "TPGUI"); // 6 rows
for (Player p : Bukkit.getOnlinePlayers())
if (!p.getUniqueId().equals(player.getUniqueId()))
inventory.addItem(getPlayerHead(p));
return inventory;
}
@Override
public void onEnable() {
Bukkit.getPluginManager().registerEvents(this, this);
}
@Override
public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) {
if (cmd.getLabel().equalsIgnoreCase("tpgui")) {
if (!(sender instanceof Player)) {
sender.sendMessage(ChatColor.RED + "Only players can run that command!");
return true;
}
Player player = (Player) sender;
guisOpened.add(player.getUniqueId());
player.openInventory(getGUI(player));
return true;
}
return false;
}
@EventHandler
public void onInventoryClick(InventoryClickEvent evt) {
Player player = (Player) evt.getWhoClicked();
if (guisOpened.contains(player.getUniqueId())) {
if (evt.getCurrentItem().getType() == Material.SKULL_ITEM) {
SkullMeta meta = (SkullMeta) evt.getCurrentItem().getItemMeta();
String owner = meta.getOwner();
player.closeInventory();
player.performCommand("tpa " + owner);
}
}
}
@EventHandler
public void onInventoryClose(InventoryCloseEvent evt) {
guisOpened.remove(evt.getPlayer().getUniqueId());
}
@EventHandler
public void onPlayerQuit(PlayerQuitEvent evt) {
guisOpened.remove(evt.getPlayer().getUniqueId());
}
// playerquit is not called when a player is kicked
@EventHandler
public void onPlayerKick(PlayerKickEvent evt) {
guisOpened.remove(evt.getPlayer().getUniqueId());
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment