类org.bukkit.event.inventory.ClickType源码实例Demo

下面列出了怎么用org.bukkit.event.inventory.ClickType的API类实例代码及写法,或者点击链接到github查看源代码。

源代码1 项目: PGM   文件: EventFilterMatchModule.java
@EventHandler(priority = EventPriority.HIGHEST)
public void onInteract(final PlayerInteractEvent event) {
  if (cancelUnlessInteracting(event, event.getPlayer())) {
    // Allow the how-to book to be read
    if (event.getMaterial() == Material.WRITTEN_BOOK) {
      event.setUseItemInHand(Event.Result.ALLOW);
    }

    MatchPlayer player = match.getPlayer(event.getPlayer());
    if (player == null) return;

    ClickType clickType = convertClick(event.getAction(), event.getPlayer());
    if (clickType == null) return;

    match.callEvent(
        new ObserverInteractEvent(
            player, clickType, event.getClickedBlock(), null, event.getItem()));
  }
}
 
源代码2 项目: PGM   文件: EventFilterMatchModule.java
@EventHandler(priority = EventPriority.LOWEST, ignoreCancelled = true)
public void onDamage(final EntityDamageEvent event) {
  cancelUnlessInteracting(event, event.getEntity());
  if (event instanceof EntityDamageByEntityEvent) {
    EntityDamageByEntityEvent entityEvent = (EntityDamageByEntityEvent) event;
    if (cancelUnlessInteracting(event, entityEvent.getDamager())) {
      MatchPlayer player = match.getPlayer(entityEvent.getDamager());
      if (player == null) return;

      match.callEvent(
          new ObserverInteractEvent(
              player,
              ClickType.LEFT,
              null,
              event.getEntity(),
              player.getInventory().getItemInHand()));
    }
  }
}
 
/**
 * Prevents enhanced item from storing.
 *
 * @param e
 */
@EventHandler(ignoreCancelled = true, priority = EventPriority.HIGH)
public void onInventoryClick(InventoryClickEvent e) {
    if ((e.getInventory().getType() != InventoryType.CRAFTING) && (e.getInventory().getType() != InventoryType.PLAYER)) {
        if ((e.getClick().equals(ClickType.NUMBER_KEY)) && (e.getWhoClicked().getInventory().getItem(e.getHotbarButton()) != null)) {
            ItemStack itemMoved = e.getWhoClicked().getInventory().getItem(e.getHotbarButton());
            if ((itemMoved.hasItemMeta()) && (itemMoved.getItemMeta().hasLore())) {
                if (itemMoved.getItemMeta().getLore().contains(Util.UNIQUEID + Util.toColor(SettingsManager.lang.getString("lore.untradeableLore")))) {
                    e.setCancelled(true);
                    Util.sendMessage(SettingsManager.lang.getString("messages.noStorage"), e.getWhoClicked());
                }
            }
        }
        if (e.getCurrentItem() != null) {
            if ((e.getCurrentItem().hasItemMeta()) && (e.getCurrentItem().getItemMeta().hasLore())) {
                if (e.getCurrentItem().getItemMeta().getLore().contains(Util.UNIQUEID + Util.toColor(SettingsManager.lang.getString("lore.untradeableLore")))) {
                    e.setCancelled(true);
                    Util.sendMessage(SettingsManager.lang.getString("messages.noStorage"), e.getWhoClicked());
                }
            }
        }
    }
}
 
源代码4 项目: TrMenu   文件: Icon.java
public void onClick(Player player, Button button, ClickType clickType, InventoryClickEvent event) {
    List<AbstractAction> actions = getActions().getOrDefault(clickType, new ArrayList<>());
    Notifys.debug(player, "ClickType: {0}, Actions: {1}. &8{2}", clickType.name(), actions.size(), actions);

    ArgsCache.getEvent().put(player.getUniqueId(), event);
    ArgsCache.getClickedItem().put(player.getUniqueId(), item);
    ArgsCache.getClickedButtons().put(player.getUniqueId(), button);

    TrAction.runActions(actions, player);
    if (getActions().get(null) != null) {
        TrAction.runActions(getActions().get(null), player);
    }

    ArgsCache.clear(player);
    button.refreshConditionalIcon(player, event);
}
 
源代码5 项目: MineTinker   文件: GUIs.java
public static void addNavigationButtons(GUI.Window currentPage) {
	ItemMeta forwardMeta = forwardStack.getItemMeta();
	if (forwardMeta != null) {
		forwardMeta.setDisplayName(ChatColor.GREEN + LanguageManager.getString("GUIs.Forward"));
		forwardStack.setItemMeta(forwardMeta);
	}

	ItemMeta backMeta = backStack.getItemMeta();
	if (backMeta != null) {
		backMeta.setDisplayName(ChatColor.RED + LanguageManager.getString("GUIs.Back"));
		backStack.setItemMeta(backMeta);
	}

	GUI.Window.Button back = currentPage.addButton(0, 5, backStack);
	back.addAction(ClickType.LEFT, new ButtonAction.PAGE_DOWN(back));

	GUI.Window.Button forward = currentPage.addButton(8, 5, forwardStack);
	forward.addAction(ClickType.LEFT, new ButtonAction.PAGE_UP(forward));
}
 
源代码6 项目: ProjectAres   文件: PickerMatchModule.java
@EventHandler
public void rightClickIcon(final ObserverInteractEvent event) {
    if(event.getClickType() != ClickType.RIGHT) return;

    MatchPlayer player = event.getPlayer();
    if(!canUse(player)) return;

    ItemStack hand = event.getClickedItem();
    if(ItemUtils.isNothing(hand)) return;

    String displayName = hand.getItemMeta().getDisplayName();
    if(displayName == null) return;

    if(hand.getType() == Button.JOIN.material) {
        event.setCancelled(true);
        if(canOpenWindow(player)) {
            showWindow(player);
        } else {
            // If there is nothing to pick, just join immediately
            jmm.requestJoin(player, JoinRequest.user());
        }
    } else if(hand.getType() == Button.LEAVE.material) {
        event.setCancelled(true);
        jmm.requestObserve(player);
    }
}
 
源代码7 项目: ProjectAres   文件: ViewInventoryMatchModule.java
@EventHandler(ignoreCancelled = true)
public void showInventories(final ObserverInteractEvent event) {
    if(event.getClickType() != ClickType.RIGHT) return;
    if(event.getPlayer().isDead()) return;

    if(event.getClickedParticipant() != null) {
        event.setCancelled(true);
        if(canPreviewInventory(event.getPlayer(), event.getClickedParticipant())) {
            this.previewPlayerInventory(event.getPlayer().getBukkit(), event.getClickedParticipant().getInventory());
        }
    } else if(event.getClickedEntity() instanceof InventoryHolder && !(event.getClickedEntity() instanceof Player)) {
        event.setCancelled(true);
        this.previewInventory(event.getPlayer().getBukkit(), ((InventoryHolder) event.getClickedEntity()).getInventory());
    } else if(event.getClickedBlockState() instanceof InventoryHolder) {
        event.setCancelled(true);
        this.previewInventory(event.getPlayer().getBukkit(), ((InventoryHolder) event.getClickedBlockState()).getInventory());
    }
}
 
源代码8 项目: IridiumSkyblock   文件: VisitGUI.java
@EventHandler
@Override
public void onInventoryClick(InventoryClickEvent e) {
    if (e.getInventory().equals(getInventory())) {
        e.setCancelled(true);
        if (e.getClickedInventory() == null || !e.getClickedInventory().equals(getInventory())) return;
        if (islands.containsKey(e.getSlot())) {
            Island island = IridiumSkyblock.getIslandManager().getIslandViaId(islands.get(e.getSlot()));
            User u = User.getUser((OfflinePlayer) e.getWhoClicked());
            if (island.isVisit() || u.bypassing) {
                if (e.getClick() == ClickType.RIGHT) {
                    if (island.hasVoted(u)) {
                        island.removeVote(u);
                    } else {
                        island.addVote(u);
                    }
                } else {
                    e.getWhoClicked().closeInventory();
                    island.teleportHome((Player) e.getWhoClicked());
                }
            } else {
                e.getWhoClicked().sendMessage(Utils.color(IridiumSkyblock.getMessages().playersIslandIsPrivate.replace("%prefix%", IridiumSkyblock.getConfiguration().prefix)));
            }
        } else if (e.getSlot() == getInventory().getSize() - 7) {
            if (IridiumSkyblock.visitGUI.containsKey(page - 1))
                e.getWhoClicked().openInventory(IridiumSkyblock.visitGUI.get(page - 1).getInventory());
        } else if (e.getSlot() == getInventory().getSize() - 3) {
            if (IridiumSkyblock.visitGUI.containsKey(page + 1))
                e.getWhoClicked().openInventory(IridiumSkyblock.visitGUI.get(page + 1).getInventory());
        }
    }
}
 
源代码9 项目: AACAdditionPro   文件: InventoryClick.java
/**
 * Creates a dummy {@link InventoryClick} to use as a starting data point.
 */
public static InventoryClick dummyClick()
{
    return new InventoryClick(Bukkit.createInventory(null, InventoryType.CHEST), new double[]{
            0,
            0
    }, ClickType.CREATIVE);
}
 
源代码10 项目: IridiumSkyblock   文件: WarpGUI.java
@EventHandler
@Override
public void onInventoryClick(InventoryClickEvent e) {
    if (e.getInventory().equals(getInventory())) {
        Player p = (Player) e.getWhoClicked();
        User u = User.getUser(p);
        e.setCancelled(true);
        if (e.getClickedInventory() == null || !e.getClickedInventory().equals(getInventory())) return;
        if (warps.containsKey(e.getSlot())) {
            Island.Warp warp = warps.get(e.getSlot());
            if (e.getClick().equals(ClickType.RIGHT)) {
                u.getIsland().removeWarp(warps.get(e.getSlot()));
                getInventory().clear();
                addContent();
            } else {
                if (warp.getPassword().isEmpty()) {
                    p.teleport(warp.getLocation());
                    p.sendMessage(Utils.color(IridiumSkyblock.getMessages().teleporting.replace("%prefix%", IridiumSkyblock.getConfiguration().prefix)));
                } else {
                    p.sendMessage(Utils.color(IridiumSkyblock.getMessages().enterPassword.replace("%prefix%", IridiumSkyblock.getConfiguration().prefix)));
                    u.warp = warp;
                }
            }
            p.closeInventory();
        }
    }
}
 
源代码11 项目: PGM   文件: EventFilterMatchModule.java
ClickType convertClick(ClickType clickType, Player player) {
  if (clickType == ClickType.RIGHT && player.isSneaking()) {
    return ClickType.SHIFT_RIGHT;
  } else {
    return clickType;
  }
}
 
源代码12 项目: Slimefun4   文件: TestVanillaMachinesListener.java
private CraftItemEvent mockCraftingEvent(ItemStack item) {
    Recipe recipe = new ShapedRecipe(new NamespacedKey(plugin, "test_recipe"), new ItemStack(Material.EMERALD));
    Player player = server.addPlayer();

    CraftingInventory inv = Mockito.mock(CraftingInventory.class);
    Mockito.when(inv.getContents()).thenReturn(new ItemStack[] { item, null, null, null, null, null, null, null, null });

    InventoryView view = player.openInventory(inv);
    CraftItemEvent event = new CraftItemEvent(recipe, view, SlotType.RESULT, 9, ClickType.LEFT, InventoryAction.PICKUP_ALL);

    listener.onCraft(event);
    return event;
}
 
源代码13 项目: PGM   文件: EventFilterMatchModule.java
void callObserverInteractEvent(PlayerInteractEntityEvent event) {
  MatchPlayer player = match.getPlayer(event.getPlayer());
  if (player == null) return;

  match.callEvent(
      new ObserverInteractEvent(
          player,
          convertClick(ClickType.RIGHT, event.getPlayer()),
          null,
          event.getRightClicked(),
          event.getPlayer().getItemInHand()));
}
 
@Override
protected boolean click(Player p, int rawSlot, ClickType ct) {
    updateResultWithDelay();

    CraftingPipe pipe = (CraftingPipe) duct;

    // clicked change output direction
    if (rawSlot == 8) {
        save(p);
        pipe.updateOutputDirection(true);
        return true;
    }

    // retrieve cached items
    if (rawSlot == 4 * 9 + 8) {
        List<ItemStack> cachedItems = new ArrayList<>(pipe.getCachedItems());
        pipe.getCachedItems().clear();
        transportPipes.runTaskSync(() -> {
            Map<Integer, ItemStack> overflow = p.getInventory().addItem(cachedItems.toArray(new ItemStack[0]));
            for (ItemStack overflowItem : overflow.values()) {
                p.getWorld().dropItem(p.getLocation(), overflowItem);
            }
        });

        save(p);
        populate();

        return true;
    }

    // clicked on recipe items
    if (slotInRecipeGrid(rawSlot)) {
        return false;
    }

    return rawSlot < inv.getSize();
}
 
源代码15 项目: PGM   文件: PickerMatchModule.java
@EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true)
public void cancelArmorEquip(ObserverInteractEvent event) {
  if (event.getClickType() == ClickType.RIGHT
      && event.getClickedItem() != null
      && event.getClickedItem().getType() == Button.TEAM_JOIN.material) {
    event.setCancelled(true);
    event.getPlayer().getBukkit().updateInventory();
  }
}
 
源代码16 项目: PGM   文件: PickerMatchModule.java
@EventHandler(priority = EventPriority.HIGHEST)
public void rightClickIcon(final ObserverInteractEvent event) {
  final boolean right = event.getClickType() == ClickType.RIGHT;
  final boolean left = event.getClickType() == ClickType.LEFT;
  if ((!right && !left) || InventoryUtils.isNothing(event.getClickedItem())) return;

  final ItemStack hand = event.getClickedItem();
  String displayName = hand.getItemMeta().getDisplayName();
  if (displayName == null) return;

  final MatchPlayer player = event.getPlayer();
  if (!canUse(player)) return;

  boolean handled = false;
  final JoinMatchModule jmm = match.needModule(JoinMatchModule.class);

  if (hand.getType() == Button.JOIN.material) {
    handled = true;
    if (right && canOpenWindow(player) && settingEnabled(player, true)) {
      showWindow(player);
    } else {
      // If there is nothing to pick or setting is disabled, just join immediately
      jmm.join(player, null);
    }
  } else if (hand.getType() == Button.LEAVE.material && left) {
    jmm.leave(player);
  }

  if (handled) {
    event.setCancelled(true);

    // Unfortunately, not opening the window seems to cause the player to put the helmet
    // on their head, no matter what we do server-side. So, we have to force an inventory
    // update to resync them.
    player.getBukkit().updateInventory();
  }
}
 
源代码17 项目: PGM   文件: FlySpeedTool.java
@Override
public void onInventoryClick(InventoryMenu menu, MatchPlayer player, ClickType clickType) {
  FlySpeed speed = FlySpeed.of(player.getBukkit().getFlySpeed());
  if (clickType.isRightClick()) {
    player.getBukkit().setFlySpeed(speed.getPrev().getValue());
  } else {
    player.getBukkit().setFlySpeed(speed.getNext().getValue());
  }
  menu.refreshWindow(player);
}
 
源代码18 项目: civcraft   文件: SpawnItem.java
@SuppressWarnings("deprecation")
@Override
public void performAction(InventoryClickEvent event, ItemStack stack) {
	AttributeUtil attrs = new AttributeUtil(stack);
	attrs.removeCivCraftProperty("GUI");
	attrs.removeCivCraftProperty("GUI_ACTION");

	ItemStack is = attrs.getStack();
	if (event.getClick().equals(ClickType.SHIFT_LEFT) ||
		event.getClick().equals(ClickType.SHIFT_RIGHT)) {
		is.setAmount(is.getMaxStackSize());
	}
	
	event.setCursor(is);
}
 
源代码19 项目: uSkyBlock   文件: MenuEventsTest.java
private InventoryClickEvent getEvent(InventoryHolder holder) {
    // These values are not checked anywhere.
    InventoryView inventoryView = mock(InventoryView.class);
    InventoryType.SlotType slotType = InventoryType.SlotType.QUICKBAR;
    ClickType clickType = ClickType.LEFT;
    InventoryAction inventoryAction = InventoryAction.NOTHING;

    Inventory fakeInventory = mock(Inventory.class);
    doReturn(holder).when(fakeInventory).getHolder();
    doReturn(fakeInventory).when(inventoryView).getTopInventory();

    return new InventoryClickEvent(inventoryView, slotType, 1, clickType, inventoryAction);
}
 
源代码20 项目: InventoryGui   文件: GuiElement.java
public Click(InventoryGui gui, int slot, GuiElement element, ClickType type, InventoryClickEvent event) {
    this.gui = gui;
    this.slot = slot;
    this.element = element;
    this.type = type;
    this.event = event;
}
 
源代码21 项目: VoxelGamesLibv2   文件: VoteFeature.java
@GameEvent
public void openVoteMenu(@Nonnull PlayerInteractEvent event, User user) {
    if ((event.getAction() == Action.RIGHT_CLICK_AIR || event.getAction() == Action.RIGHT_CLICK_BLOCK) && openMenuItem.equals(event.getItem())) {
        InventoryMenuBuilder builder = new InventoryMenuBuilder().withSize(9).withTitle("Vote for a map");
        for (int id : availableMaps.keySet()) {
            MapInfo info = availableMaps.get(id);
            ItemStack item = new ItemBuilder(Material.PAPER).amount(id).name(info.getDisplayName()).lore(info.getAuthor()).build();
            builder.withItem(id - 1, item, (player, clickType, itemStack) -> confirmVote(user, id), ClickType.LEFT);
        }
        builder.show(user.getPlayer());
    }
}
 
源代码22 项目: Slimefun4   文件: TestVanillaMachinesListener.java
private InventoryClickEvent mockGrindStoneEvent(ItemStack item) {
    Player player = server.addPlayer();
    Inventory inv = TestUtilities.mockInventory(InventoryType.GRINDSTONE, item, null);
    InventoryView view = player.openInventory(inv);
    InventoryClickEvent event = new InventoryClickEvent(view, SlotType.CONTAINER, 2, ClickType.LEFT, InventoryAction.PICKUP_ONE);

    listener.onGrindstone(event);
    return event;
}
 
源代码23 项目: helper   文件: SimpleSlot.java
/**
 * Clears all bindings on this slot for a given click type.
 *
 * @return this slot
 */
@Nonnull
@Override
public Slot clearBindings(ClickType type) {
    this.handlers.remove(type);
    return this;
}
 
源代码24 项目: helper   文件: SimpleSlot.java
@Nonnull
@Override
public Slot bind(@Nonnull ClickType type, @Nonnull Consumer<InventoryClickEvent> handler) {
    Objects.requireNonNull(type, "type");
    Objects.requireNonNull(handler, "handler");
    this.handlers.computeIfAbsent(type, t -> ConcurrentHashMap.newKeySet()).add(handler);
    return this;
}
 
源代码25 项目: helper   文件: SimpleSlot.java
@Nonnull
@Override
public Slot bind(@Nonnull ClickType type, @Nonnull Runnable handler) {
    Objects.requireNonNull(type, "type");
    Objects.requireNonNull(handler, "handler");
    this.handlers.computeIfAbsent(type, t -> ConcurrentHashMap.newKeySet()).add(Item.transformRunnable(handler));
    return this;
}
 
源代码26 项目: Slimefun4   文件: TestBackpackListener.java
private boolean isAllowed(String id, ItemStack item) throws InterruptedException {
    Player player = server.addPlayer();
    Inventory inv = openMockBackpack(player, id, 9).getInventory();

    int slot = 7;
    inv.setItem(slot, item);
    InventoryClickEvent event = new InventoryClickEvent(player.getOpenInventory(), SlotType.CONTAINER, slot, ClickType.LEFT, InventoryAction.PICKUP_ONE);
    listener.onClick(event);
    return !event.isCancelled();
}
 
源代码27 项目: helper   文件: SimpleSlot.java
@Nonnull
@Override
public <T extends Runnable> Slot bindAllRunnables(@Nonnull Iterable<Map.Entry<ClickType, T>> handlers) {
    Objects.requireNonNull(handlers, "handlers");
    for (Map.Entry<ClickType, T> handler : handlers) {
        bind(handler.getKey(), handler.getValue());
    }
    return this;
}
 
源代码28 项目: helper   文件: SimpleSlot.java
@Nonnull
@Override
public <T extends Consumer<InventoryClickEvent>> Slot bindAllConsumers(@Nonnull Iterable<Map.Entry<ClickType, T>> handlers) {
    Objects.requireNonNull(handlers, "handlers");
    for (Map.Entry<ClickType, T> handler : handlers) {
        bind(handler.getKey(), handler.getValue());
    }
    return this;
}
 
源代码29 项目: Transport-Pipes   文件: DuctSettingsInventory.java
@EventHandler
public void onInvClick(InventoryClickEvent e) {
    if (e.getInventory() != null && e.getInventory().equals(inv) && e.getWhoClicked() instanceof Player) {
        if (itemService.isItemWildcardOrBarrier(e.getCurrentItem())) {
            e.setCancelled(true);
            return;
        }
        //don't call click method when double clicked, because before a double click, left click was already registered twice
        if (e.getClick() != ClickType.DOUBLE_CLICK && click((Player) e.getWhoClicked(), e.getRawSlot(), e.getClick())) {
            e.setCancelled(true);
        } else if (e.getClick() == ClickType.DOUBLE_CLICK && e.getAction() == InventoryAction.COLLECT_TO_CURSOR && collect_to_cursor((Player) e.getWhoClicked(), e.getCursor(), e.getRawSlot())) {
            e.setCancelled(true);
        }
    }
}
 
源代码30 项目: helper   文件: Item.java
@Nonnull
public Builder bind(@Nullable Consumer<InventoryClickEvent> handler, @Nonnull ClickType... types) {
    for (ClickType type : types) {
        bind(type, handler);
    }
    return this;
}
 
 类所在包
 同包方法