Помогите Поймать предмет перемещаемый с инвентаря в наковальню

Korvinius

Активный участник
Пользователь
Баллы
88
Здравствуйте, в версии 1.8.8, не знаю как в остальных, можно переместить предмет в наковальню таким способом:
допустим у нас в инвентаре, в 1 слоте лежит какой то предмет, открываем наковальню, наводим курсор на слот в наковальне и нажимаем на клавиатуре, клавишу [1], и этот предмет благополучно перекочевывает в наковальню, само событие это ловится без проблем, проблема заключается в том, что я не могу поймать сам перемещаемый предмет, кто знает, подскажите, как мне определить перемещаемый таким способом предмет?
 
методы getCursor() и getCurrentItem() не видят его, других подходящих методов я не смог найти .
 
Лучше отловить ивент получения предмета в наковальне, итоговый.
 
Берёте тип действия, берёте номер кнопки и ручками вытаскиваете.
 
Чтобы не париться, вообще запретил таким способом перемещать что либо в наковальню.
 
Ну вообще я когда писал свое сообщение имел ввиду, что можно отловить ивент когда именнно он кликал по результату, а не просто появление.
Нашел статью на Bukkit.org : https://bukkit.org/threads/inventory-anvil-events.142990/

Код на переименование (Взят с ссылки выше.):
Код:
@EventHandler(priority = EventPriority.MONITOR)
public void onInventoryClick(InventoryClickEvent e){
// check if the event has been cancelled by another plugin
if(!e.isCancelled()){
HumanEntity ent = e.getWhoClicked();
// not really necessary
if(ent instanceof Player){
Player player = (Player)ent;
Inventory inv = e.getInventory();
// see if the event is about an anvil
if(inv instanceof AnvilInventory){
InventoryView view = e.getView();
int rawSlot = e.getRawSlot();
// compare the raw slot with the inventory view to make sure we are talking about the upper inventory
if(rawSlot == view.convertSlot(rawSlot)){
/*
slot 0 = left item slot
slot 1 = right item slot
slot 2 = result item slot
see if the player clicked in the result item slot of the anvil inventory
*/
if(rawSlot == 2){
/*
get the current item in the result slot
I think inv.getItem(rawSlot) would be possible too
*/
ItemStack item = e.getCurrentItem();
// check if there is an item in the result slot
if(item != null){
ItemMeta meta = item.getItemMeta();
// it is possible that the item does not have meta data
if(meta != null){
// see whether the item is beeing renamed
if(meta.hasDisplayName()){
String displayName = meta.getDisplayName();
// do something
}
}
}
}
}
}
}
}
}
 
Назад
Верх