Как запретить игроку класть предметы в ender chest через клавишу F

Версия Minecraft
1.20.X

rtopik

Пользователь
Сообщения
2
Разрешается выкладывание кода, файлов конфигураций, логов и т.д. только под BB-код CODE
Другие ядра
  1. PufferFish
Пытаюсь пофиксить баг в плагине который позволяет игроку обойти ограничение на запрет класть определенные предметы в ender chest. Недоработка в следующем: игрок берёт в левую руку предмет, открывает ender chest, наводится курсором на свободный слот сундука и нажимает клавишу F и предмет туда перемещается - кто-нибудь знает каз запретить данное действие? Вот часть кода
@EventHandler
public void onMove(InventoryClickEvent e) {
e.getView();

Inventory destInv = e.getView().getTopInventory();
if(destInv.getType() != InventoryType.ENDER_CHEST) return;

e.getWhoClicked();
if(!(e.getWhoClicked() instanceof Player)) return;
Player player = (Player) e.getWhoClicked();

ItemStack item;
if((InventoryAction.HOTBAR_SWAP.equals(e.getAction()) ||
InventoryAction.HOTBAR_MOVE_AND_READD.equals(e.getAction())) &&
(e.getHotbarButton() >= 0 && e.getHotbarButton() <= 8)) {
item = player.getInventory().getItem(e.getHotbarButton());
} else {
item = e.getCurrentItem();
}

if(!isShulker(item)) return;
if(destInv.contains(item) && Objects.requireNonNull(e.getClickedInventory()).getType() == InventoryType.ENDER_CHEST) return;

int numShulkers = 0;
for(ItemStack destItem : destInv.getStorageContents())
if(isShulker(destItem)) numShulkers++;
 
Можно после клика запускать BukkitScheduler#callSyncMethod и там обрабатывать верхний инвентарь
 
Назад
Сверху Снизу