Amafauz
Новичок
- Баллы
- 6
Здравствуйте, появилась проблема. Есть InventoryClickEvent, в нём есть currentItem. Этот currentItem == голова с owner`ом. Мне нужно достать из него этого самого овнера.. Но проблема в том, что в нём нет этого овнера! Тупо приходит ItemStack без SkullMeta но с ItemMeta
P.S -
#1 =
# 2 =
#3 =
В итоге isHead возращает false...
P.S -
#1 =
Код:
ItemStack testStack = new ItemStack(Material.SKULL_ITEM, 1, (short) 3);
SkullMeta meta = (SkullMeta) testStack.getItemMeta();
meta.setOwningPlayer(Bukkit.getOfflinePlayer(clan.getOwner()));
testStack.setItemMeta(meta);
inv.setItem(10, testStack);
# 2 =
Код:
@EventHandler
public void onClick(InventoryClickEvent e) {
if (e.getWhoClicked() instanceof Player) {
Player p = (Player) e.getWhoClicked();
ItemStack curr = e.getCurrentItem();
Inventory inv = e.getClickedInventory();
if (curr == null || inv == null)
return;
if (curr.getType() == Material.AIR || inv.getHolder() == null)
return;
if (inv.getHolder() instanceof ClanInventoryHolder) {
e.setCancelled(true);
if (isHead(curr)) {
String name = getHeadName(curr);
System.out.println(name);
}
}
}
}
#3 =
Код:
private boolean isHead(ItemStack stack) {
if (stack != null && stack.getType() != Material.AIR) {
if (stack.getType() == Material.SKULL_ITEM
&& stack.getDurability() == 3) {
SkullMeta meta = (SkullMeta) stack.getItemMeta();
if (meta == null)
return false;
if (!meta.hasOwner())
return false;
if (meta.getOwningPlayer() == null)
return false;
if (meta.getOwningPlayer().getName() == null)
return false;
if (meta.getOwningPlayer().getName().isEmpty())
return false;
return true;
}
}
return false;
}
private String getHeadName(ItemStack stack) {
if (!isHead(stack))
return "";
SkullMeta meta = (SkullMeta) stack.getItemMeta();
return meta.getOwningPlayer().getName();
}
В итоге isHead возращает false...