Смотрите видео ниже, чтобы узнать, как установить наш сайт в качестве веб-приложения на домашнем экране.
Примечание: This feature may not be available in some browsers.
@EventHandler (priority = EventPriority.LOWEST, ignoreCancelled = true)
public void onClick (InventoryClickEvent e) {
if (e.getCurrentItem() == null) {
return;
}
if (e.getView().getType() == InventoryType.ANVIL
|| e.getView().getType() == InventoryType.BARREL
|| e.getView().getType() == InventoryType.BEACON
|| e.getView().getType() == InventoryType.BLAST_FURNACE
|| e.getView().getType() == InventoryType.BREWING
|| e.getView().getType() == InventoryType.CARTOGRAPHY
|| e.getView().getType() == InventoryType.CHEST
|| e.getView().getType() == InventoryType.DISPENSER
|| e.getView().getType() == InventoryType.DROPPER
|| e.getView().getType() == InventoryType.ENCHANTING
|| e.getView().getType() == InventoryType.ENDER_CHEST
|| e.getView().getType() == InventoryType.FURNACE
|| e.getView().getType() == InventoryType.GRINDSTONE
|| e.getView().getType() == InventoryType.HOPPER
|| e.getView().getType() == InventoryType.LECTERN
|| e.getView().getType() == InventoryType.LOOM
|| e.getView().getType() == InventoryType.MERCHANT
|| e.getView().getType() == InventoryType.WORKBENCH
|| e.getView().getType() == InventoryType.SHULKER_BOX
|| e.getView().getType() == InventoryType.SMITHING
|| e.getView().getType() == InventoryType.SMOKER
|| e.getView().getType() == InventoryType.STONECUTTER)
{
List<ItemStack> items = new ArrayList<>();
items.add(e.getCurrentItem());
items.add(e.getCursor());
items.add((e.getClick() == ClickType.NUMBER_KEY) ? e.getWhoClicked().getInventory().getItem(e.getHotbarButton()) : e.getCurrentItem());
for(ItemStack item : items) {
if(item != null) {
if (item.equals(your_item)) {
e.setCancelled(true);
}
}
}
if (e.getCurrentItem().equals(your_item)) {
e.setCancelled(true);
return;
}
}
тут наоборот, your_item положить нельзя, а всё что в инвентарях можно взять и положитьКод:@EventHandler (priority = EventPriority.LOWEST, ignoreCancelled = true) public void onClick (InventoryClickEvent e) { if (e.getCurrentItem() == null) { return; } if (e.getView().getType() == InventoryType.ANVIL || e.getView().getType() == InventoryType.BARREL || e.getView().getType() == InventoryType.BEACON || e.getView().getType() == InventoryType.BLAST_FURNACE || e.getView().getType() == InventoryType.BREWING || e.getView().getType() == InventoryType.CARTOGRAPHY || e.getView().getType() == InventoryType.CHEST || e.getView().getType() == InventoryType.DISPENSER || e.getView().getType() == InventoryType.DROPPER || e.getView().getType() == InventoryType.ENCHANTING || e.getView().getType() == InventoryType.ENDER_CHEST || e.getView().getType() == InventoryType.FURNACE || e.getView().getType() == InventoryType.GRINDSTONE || e.getView().getType() == InventoryType.HOPPER || e.getView().getType() == InventoryType.LECTERN || e.getView().getType() == InventoryType.LOOM || e.getView().getType() == InventoryType.MERCHANT || e.getView().getType() == InventoryType.WORKBENCH || e.getView().getType() == InventoryType.SHULKER_BOX || e.getView().getType() == InventoryType.SMITHING || e.getView().getType() == InventoryType.SMOKER || e.getView().getType() == InventoryType.STONECUTTER) { List<ItemStack> items = new ArrayList<>(); items.add(e.getCurrentItem()); items.add(e.getCursor()); items.add((e.getClick() == ClickType.NUMBER_KEY) ? e.getWhoClicked().getInventory().getItem(e.getHotbarButton()) : e.getCurrentItem()); for(ItemStack item : items) { if(item != null) { if (item.equals(your_item)) { e.setCancelled(true); } } } if (e.getCurrentItem().equals(your_item)) { e.setCancelled(true); return; } }
тут немного другой код, но на суть я тебя наввёл
а нет, не такЕсть метод e.getCursor(), выдает айтем стак который в курсоре, проверяй если e.getCursor() == null, отменяй ивент и не давай возможность забрать предметы в слоту, если курсор != нулл то вместо допустим красных стеклышек делай .setItem(index, e.getCursor());
Уверен ты там в конфиге указываешь слоты на которых будут стоять предметы, сохрани этот список слотов и если slots.contains(e.getSlot()); то отменяй ивентВам необходимо зарегистрироваться для просмотра изображений-вложений
у меня есть меню, в котором предметы настраиваются в конфиге, мне нужно чтобы любые предметы в инвентаре игрока
можно было класть в пустые слоты, а предметы из конфига нельзя трогать.
а нет, не так
Объединено
Уверен ты там в конфиге указываешь слоты на которых будут стоять предметы, сохрани этот список слотов и если slots.contains(e.getSlot()); то отменяй ивент
Вот и сохрани в список слоты от 46 до 52Вам необходимо зарегистрироваться для просмотра изображений-вложений
не работаетВот и сохрани в список слоты от 46 до 52
1. ставишь в конфиг слоты куда игрок МОЖЕТ класть предметы
2. if (e.getRawSlot() < inventory.getSize() && !userSlots.contains(e.getRawSlot()) e.setCancelled(true);
да, заработало, теперь я могу класть и брать предметы из указанных слотов, но теперь другая проблема, когда я закрываю инвентарь предметы пропадают, как это пофиксить?1. ставишь в конфиг слоты куда игрок МОЖЕТ класть предметы
2. if (e.getRawSlot() < inventory.getSize() && !userSlots.contains(e.getRawSlot()) e.setCancelled(true);
Не правильно делаешь значитне работает
1. InventoryCloseEventкогда я закрываю инвентарь предметы пропадают, как это пофиксить?
-> говорит нельзя писать1. InventoryCloseEvent
2. for (int slot : getItemSlots()) { inventory.getItem(slot) -> item != null && !item.getType().isAir() -> player.getInventory().addItem(item) }
мне надо на 8 писатьПовысь версию джавы в конфигурации градла/мавена
это и не нужно писать-> говорит нельзя писать
ой древностью запахло даж помогать перехотелось. решение думайте сами карочмне надо на 8 писать
Мы используем основные cookies для обеспечения работы этого сайта, а также дополнительные cookies для обеспечения максимального удобства пользователя.
Посмотрите дополнительную информацию и настройте свои предпочтения