zxcemelya
Пользователь
- Сообщения
- 12
Как можно запретить ложить мой кастомный предмет (условно проверяется item#isCustom(itemstack). Нужно чтоб его нельзя было положить в любой инвентарь, не с помощью шифта, не с помощью кнопочек (когда наводишься на слот и нажимаешь цифру от 1-9), не обычным перетаскиванием, я пробовал, но как-то костыльно выглядит.
I tried:
I tried:
Java:
@EventHandler
public void onInventoryClick(InventoryClickEvent event) {
Inventory clickedInventory = event.getClickedInventory();
if (clickedInventory != null && clickedInventory.getType() == InventoryType.PLAYER) {
ItemStack itemStack = event.getHotbarButton() == -1 ? event.getCursor() : clickedInventory.getItem(event.getHotbarButton());
if ((customItemService.isCustomItem(itemStack) || customItemService.isCustomItem(event.getCurrentItem())) && event.getSlotType() == InventoryType.SlotType.ARMOR) {
event.setCancelled(true);
}
if (customItemService.isCustomItem(event.getCurrentItem()) && event.isShiftClick()) {
event.setCancelled(true);
}
return;
}
Inventory inventory = event.getView().getTopInventory();
if (inventory.getType() == InventoryType.WORKBENCH || inventory.getType() == InventoryType.CRAFTING) {
return;
}
boolean found = inventory.getType() == InventoryType.CHEST;
Location location = inventory.getLocation();
if (location == null) {
return;
}
boolean cancelled = false;
Inventory playerInventory = event.getWhoClicked().getInventory();
if (event.getHotbarButton() != -1 && customItemService.isCustomItem(playerInventory.getItem(event.getHotbarButton()))) {
if (location.getBlockY() < 5 && found) {
cancelled = true;
}
if (!found) {
cancelled = true;
}
}
if (customItemService.isCustomItem(event.getCurrentItem()) || customItemService.isCustomItem(event.getCursor())) {
if (location.getBlockY() < 5) {
cancelled = true;
}
if (!found) {
cancelled = true;
}
}
if (cancelled) {
event.setCancelled(true);
event.getWhoClicked().sendMessage(locale.get("not-allow"));
}
}
@EventHandler
public void onInventoryDrag(InventoryDragEvent event) {
if (event.getInventory().getType() == InventoryType.PLAYER || event.getInventory().getType() == InventoryType.CRAFTING) {
if (customItemService.isCustomItem(event.getCursor()) || customItemService.isCustomItem(event.getOldCursor())) {
event.setCancelled(true);
}
return;
}
Inventory inventory = event.getView().getTopInventory();
if (inventory.getType() == InventoryType.WORKBENCH) {
return;
}
boolean found = inventory.getType() == InventoryType.CHEST;
Location location = event.getView().getTopInventory().getLocation();
if (location == null) {
return;
}
boolean cancelled = false;
if (customItemService.isCustomItem(event.getOldCursor()) || customItemService.isCustomItem(event.getCursor())) {
if (location.getBlockY() < 5) {
cancelled = true;
}
if (!found) {
cancelled = true;
}
}
if (cancelled) {
event.setCancelled(true);
event.getWhoClicked().sendMessage(locale.get("not-allow"));
}
}