Войти или зарегистрироваться
  • Вы находитесь в сообществе Rubukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на различные языки плагины наших коллег из других стран.

Помогите Что нужно сделать чтобы отключить игрокам возможность выбрасывать предметы на Q из менюшки?

Slaventusik

Активный участник
Пользователь
Баллы
61
Имя в Minecraft
Slaventusik
Пробывал setCancel(true) давать разным ивентам:
PlayerDropItemEvent
InventoryMoveItemEvent
InventoryDragEvent

Раньше (Когда я ещё ничего не пытался сделать что то для того чтобы запретить игрокам выкидывать на Q вещи из инвентаря) можно было просто навестись на предмет и нажать Q и он выбросится и всё, предмет ваш.
Теперь когда я сделал следующее:

@EventHandler
public void onDropInventoryEvent(PlayerDropItemEvent e) {
if(MainCountries.InventoryIsOpening()==true) {
e.setCancelled(true);
}
}

При выбрасывании предмета из меню на Q он перемещается вам в инвентарь
Пробывал сделать ещё вот так:


@EventHandler
public void onMoveItemsEvent(InventoryMoveItemEvent e) {
if(MainCountries.InventoryIsOpening()==true) {
e.setCancelled(true);
}
}

Результат такой же
 
А в чем вопрос? Путаница какая-то.
Если предмет выбрасывается, то есть несколько вариантов:
1. Не зарегистрирован листенер.
2. Не срабатывает проверка
Код:
MainCountries.InventoryIsOpening()==true
Зачем "== true"?
 
Да в чём прикол. Ивенты работают, всё класс. Я всё описал выше. Проверка if (MainCountries.InventoryIsOpen==true проверяет если открыто меню. Даже если без этой проверки, когда наводишься на предмет в менюшке и нажимаешь Q - перемещается в инвентарь. Может кто то правда знает как сделать так чтобы при нажатии на Q предмет не выкидывался, и не переходил к вам в инвентарь
 
Так если тебе нужно позволить, то скорее всего какой-то плагин запрещает выбрасывать.
Либо твой? У тебя ведь setCancelled(true).

Можешь попробовать слушать ивент с приоритетом MONITOR и ставить false
 
Так если тебе нужно позволить, то скорее всего какой-то плагин запрещает выбрасывать.
Либо твой? У тебя ведь setCancelled(true).

Можешь попробовать слушать ивент с приоритетом MONITOR и ставить false

Не совсем понимаю про ивенты которые ты сказал
 
Последнее редактирование:
Так если тебе нужно позволить, то скорее всего какой-то плагин запрещает выбрасывать.
Либо твой? У тебя ведь setCancelled(true).

Можешь попробовать слушать ивент с приоритетом MONITOR и ставить false

Нет у меня таких плагинов, все обычные. Когда в Ивенте Player PlayerDropItemEvent - я ставлю e.setCancelled(true)
У меня он перестаёт выбрасыватся, однако начинает перемещатся в инвентарь. Можешь если не сложно, показать как бы ты написал код который бы решил мою проблему?
 
Нет у меня таких плагинов, все обычные. Когда в Ивенте Player PlayerDropItemEvent - я ставлю e.setCancelled(true)
У меня он перестаёт выбрасыватся, однако начинает перемещатся в инвентарь. Можешь если не сложно, показать как бы ты написал код который бы решил мою проблему?
Тестировал на сервере без плагинов, тоже самое
 
Смог решить.

@EventHandler
public void onDropItem(PlayerDropItemEvent e) {
if(CountriesInventory.InventoryIsOpening()==true) {
Player p = e.getPlayer();
Item item = (Item) e.getItemDrop();
item.remove();
p.closeInventory();
CountriesInventory.open=false;
CountriesInventory.init();
CountriesInventory.open=true;
p.openInventory(inv);
}
}
 

Поделиться этой страницей

Назад
Верх