- Баллы
- 123
.
Последнее редактирование:
Следуйте инструкциям в видео ниже, чтобы узнать, как установить наш сайт как веб-приложение на главный экран вашего устройства.
Примечание: Эта функция может быть недоступна в некоторых браузерах.
Drag event - растягивание вещей, перенос сенсорным режимом. Возможно при шифте.Ща тестану
Собсна, запретить перемещать любые предметы в определенные инвентари
Чет не пашет.. InventoryDragEvent..
Даже первого soutа нет... Когда он ваще вызывается?Код:@EventHandler public void onInventoryDrag(InventoryDragEvent event) { System.out.println("Drag event"); if (shop_inventories.containsKey(event.getInventory())) { System.out.println("Drag cancelled"); event.setCancelled(true); } }
Хотя нет, иногда вижу и первый sout и второй, но так и не понял когда он вызывается, но переносить вещи можно
В общем, вопрос точнее:
как отменить перемещение предмета из инвентаря в инвентарь, если инвентарь в который предмет перемещается содержится в коллекции shop_inventories
?
Уже интереснее, попытаюсь курнуть..
@EventHandler
public void onInventoryDrag(InventoryDragEvent e){
if (e.getInventory()==null) return;
if (e.getView().getTopInventory()==null) return;
Player p = (Player) e.getWhoClicked();
if (GUI.getInventories().containsKey(e.getView().getTopInventory())) {
for (int i: e.getRawSlots()){
if (i<e.getView().getTopInventory().getSize()) {
e.setCancelled(true);
p.updateInventory();
return;
}
}
}
}
@EventHandler
public void onInventoryClick(InventoryClickEvent e){
if (e.getInventory()==null) return;
if (getClickedInventory(e)==null) return;
if (GUI.getInventories().containsKey(e.getView().getTopInventory())) {
//weeee, it's my event!
Player p = (Player) e.getWhoClicked();
if (e.getClick().isShiftClick()){p.updateInventory(); e.setCancelled(true);}
if (getClickedInventory(e).equals(e.getView().getTopInventory())) e.setCancelled(true); else return;
}
}
/**
* Love bukkit (no)
* There is no method "getClickedInventory" in bukkit inventoryClickEvent, so I use this
* @param e
* @return
*/
public static Inventory getClickedInventory(InventoryClickEvent e){
if (e==null)return null;
if (e.getView()==null) return null;
if (e.getSlot()==e.getRawSlot()) {
return e.getView().getTopInventory();
}else{
return e.getView().getBottomInventory();
}
}