@EventHandler(priority=EventPriority.NORMAL, ignoreCancelled = true)
private void onInventoryClick(InventoryClickEvent event) {
HumanEntity entity = event.getWhoClicked();
if (!(entity instanceof Player))
return;
final Player p = (Player)entity;
Inventory inventory = event.getInventory();
if (!(inventory instanceof AnvilInventory))
return;
final AnvilInventory anvilInventory = (AnvilInventory)inventory;
InventoryView view = event.getView();
int rawSlot = event.getRawSlot();
if (rawSlot != view.convertSlot(rawSlot) || rawSlot != 2)
return;
ItemStack resultItem = anvilInventory.getItem(2);
if (resultItem == null)
return;
ItemStack slot1 = anvilInventory.getItem(0);
ItemStack slot2 = anvilInventory.getItem(1);
ItemStack slot1Clone = slot1 == null ? null : slot1.clone();
ItemStack slot2Clone = slot2 == null ? null : slot2.clone();
// check for rename
String originalName = slot1 != null
? ItemStackUtils.getDisplayName(slot1, DisplayNameOption.OPTIONAL)
: null;
String newName = ItemStackUtils.getDisplayName(resultItem, DisplayNameOption.OPTIONAL);
if (newName != null && !newName.equals(originalName)) {
AnvilRenameItemEvent renameEvent = new AnvilRenameItemEvent(
p, anvilInventory, resultItem, newName, originalName);
Nucleus.getEventManager().callBukkit(this, renameEvent);
if (renameEvent.isCancelled()) {
cancelAnvilEvent(p, anvilInventory, slot1Clone, slot2Clone);
return;
}
ItemStackUtils.setDisplayName(resultItem, renameEvent.getNewName());
}
if (slot2 == null || slot2.getType() == Material.AIR)
return;
if (slot2.getType() == Material.ENCHANTED_BOOK) {
AnvilEnchantItemEvent enchantEvent = new AnvilEnchantItemEvent(p, anvilInventory);
Nucleus.getEventManager().callBukkit(this, enchantEvent);
if (enchantEvent.isCancelled()) {
cancelAnvilEvent(p, anvilInventory, slot1Clone, slot2Clone);
}
}
else {
AnvilRepairItemEvent repairEvent = new AnvilRepairItemEvent(p, anvilInventory, resultItem);
Nucleus.getEventManager().callBukkit(this, repairEvent);
if (repairEvent.isCancelled()) {
cancelAnvilEvent(p, anvilInventory, slot1Clone, slot2Clone);
}
}
}
JCGEventListener.java 文件源码
java
阅读 25
收藏 0
点赞 0
评论 0
项目:NucleusFramework
作者:
评论列表
文章目录