@EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true)
public void onArmorStandClick(PlayerInteractAtEntityEvent event) {
if (event.getRightClicked() instanceof ArmorStand) {
PlayerInteractEntityEvent pie = new PlayerInteractEntityEvent(event.getPlayer(), event.getRightClicked());
plugin.getServer().getPluginManager().callEvent(pie);
if (pie.isCancelled()) {
return;
}
ArmorStand armorStand = (ArmorStand) event.getRightClicked();
if (plugin.hasWaitingAction(event.getPlayer())) {
event.setCancelled(true);
plugin.calculateAction(event.getPlayer(), armorStand, plugin.getWaitingAction(event.getPlayer()));
plugin.removeWaitingAction(event.getPlayer());
return;
}
if (plugin.getPersistentAction(event.getPlayer()) != null) {
event.setCancelled(true);
plugin.calculateAction(event.getPlayer(), armorStand, plugin.getPersistentAction(event.getPlayer()));
return;
}
if (event.getPlayer().getItemInHand().getType() == Material.NAME_TAG) {
ItemStack hi = event.getPlayer().getItemInHand();
if (hi.hasItemMeta() && hi.getItemMeta().hasDisplayName()) {
if (event.getPlayer().hasPermission("editarmorstands.nametag.name")) {
event.setCancelled(true);
String name = hi.getItemMeta().getDisplayName();
if (event.getPlayer().hasPermission("editarmorstands.nametag.name.colored")) {
name = ChatColor.translateAlternateColorCodes('&', name);
} else {
name = ChatColor.ITALIC + name;
}
armorStand.setCustomName(name + ChatColor.RESET);
armorStand.setCustomNameVisible(true);
if (event.getPlayer().getGameMode() != GameMode.CREATIVE) {
if (hi.getAmount() > 1) {
hi.setAmount(hi.getAmount() - 1);
} else {
event.getPlayer().setItemInHand(new ItemStack(Material.AIR));
}
event.getPlayer().updateInventory();
}
return;
}
} else if (event.getPlayer().hasPermission("editarmorstands.nametag.name.clear")) {
event.setCancelled(true);
armorStand.setCustomName("");
armorStand.setCustomNameVisible(false);
return;
}
} else if (!event.getPlayer().isSneaking() && event.getPlayer().hasPermission("editarmorstands.openinventory")) {
event.setCancelled(true);
ArmorStandGui gui = new ArmorStandGui(plugin, armorStand, event.getPlayer());
gui.show();
}
}
}
ArmorStandListener.java 文件源码
java
阅读 28
收藏 0
点赞 0
评论 0
项目:EditArmorStands
作者:
评论列表
文章目录