类org.bukkit.inventory.InventoryView源码实例Demo

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

源代码1 项目: Kettle   文件: InventoryDragEvent.java
public InventoryDragEvent(InventoryView what, ItemStack newCursor, ItemStack oldCursor, boolean right, Map<Integer, ItemStack> slots) {
    super(what);

    Validate.notNull(oldCursor);
    Validate.notNull(slots);

    type = right ? DragType.SINGLE : DragType.EVEN;
    this.newCursor = newCursor;
    this.oldCursor = oldCursor;
    this.addedItems = slots;
    ImmutableSet.Builder<Integer> b = ImmutableSet.builder();
    for (Integer slot : slots.keySet()) {
        b.add(what.convertSlot(slot));
    }
    this.containerSlots = b.build();
}
 
源代码2 项目: Kettle   文件: CraftContainer.java
public CraftContainer(final Inventory inventory, final EntityPlayer player, int id) {
    this(new InventoryView() {
        @Override
        public Inventory getTopInventory() {
            return inventory;
        }

        @Override
        public Inventory getBottomInventory() {
            return getPlayer().getInventory();
        }

        @Override
        public HumanEntity getPlayer() {
            return player.getBukkitEntity();
        }

        @Override
        public InventoryType getType() {
            return inventory.getType();
        }
    }, player, id);
}
 
源代码3 项目: ProjectAres   文件: WindowManager.java
/**
 * Register the given {@link WindowListener} to receive notifications about the given {@link InventoryView}.
 */
public InventoryView registerWindow(WindowListener listener, InventoryView window) {
    final Player player = (Player) window.getPlayer();

    final View old = views.get(player);
    if(old == null || !old.window.equals(window)) {
        if(old != null) {
            old.notifyClose();
        }

        final View view = new View(player, window, listener);
        views.put(player, view);
        view.notifyOpen();
    }

    return window;
}
 
源代码4 项目: Crazy-Crates   文件: War.java
public static void openWarCrate(Player player, Crate crate, KeyType keyType, boolean checkHand) {
    String crateName = Methods.sanitizeColor(crate.getFile().getString(crateNameString));
    Inventory inv = Bukkit.createInventory(null, 9, crateName);
    setRandomPrizes(player, inv, crate, crateName);
    InventoryView inventoryView = player.openInventory(inv);
    canPick.put(player, false);
    canClose.put(player, false);
    if (!cc.takeKeys(1, player, crate, keyType, checkHand)) {
        Methods.failedToTakeKey(player, crate);
        cc.removePlayerFromOpeningList(player);
        canClose.remove(player);
        canPick.remove(player);
        return;
    }
    startWar(player, inv, crate, inventoryView.getTitle());
}
 
源代码5 项目: AuthMeReloaded   文件: PlayerListenerTest.java
@Test
public void shouldAllowInventoryOpen() {
    // given
    HumanEntity player = mock(Player.class);
    InventoryView transaction = mock(InventoryView.class);
    InventoryOpenEvent event = new InventoryOpenEvent(transaction);
    given(event.getPlayer()).willReturn(player);
    given(listenerService.shouldCancelEvent(player)).willReturn(false);

    // when
    listener.onPlayerInventoryOpen(event);

    // then
    assertThat(event.isCancelled(), equalTo(false));
    verifyNoInteractions(bukkitService);
}
 
源代码6 项目: CombatLogX   文件: ListenerInventories.java
@EventHandler(priority=EventPriority.HIGH, ignoreCancelled=true)
public void onTag(PlayerTagEvent e) {
    Player player = e.getPlayer();
    InventoryView openView = player.getOpenInventory();
    if(openView == null) return;

    Inventory topInv = openView.getTopInventory();
    if(topInv == null) return;

    InventoryType type = openView.getType();
    if(type == InventoryType.CRAFTING) return;

    player.closeInventory();
    String message = this.plugin.getLanguageMessageColoredWithPrefix("cheat-prevention.inventory.force-closed");
    this.plugin.sendMessage(player, message);
}
 
源代码7 项目: Thermos   文件: CraftHumanEntity.java
public InventoryView openWorkbench(Location location, boolean force) {
    if (!force) {
        Block block = location.getBlock();
        if (block.getType() != Material.WORKBENCH) {
            return null;
        }
    }
    if (location == null) {
        location = getLocation();
    }
    getHandle().displayGUIWorkbench(location.getBlockX(), location.getBlockY(), location.getBlockZ());
    if (force) {
        getHandle().openContainer.checkReachable = false;
    }
    return getHandle().openContainer.getBukkitView();
}
 
源代码8 项目: Thermos   文件: CraftHumanEntity.java
public InventoryView openEnchanting(Location location, boolean force) {
    if (!force) {
        Block block = location.getBlock();
        if (block.getType() != Material.ENCHANTMENT_TABLE) {
            return null;
        }
    }
    if (location == null) {
        location = getLocation();
    }
    getHandle().displayGUIEnchantment(location.getBlockX(), location.getBlockY(), location.getBlockZ(), null);
    if (force) {
        getHandle().openContainer.checkReachable = false;
    }
    return getHandle().openContainer.getBukkitView();
}
 
源代码9 项目: Thermos   文件: CraftContainer.java
public CraftContainer(final Inventory inventory, final HumanEntity player, int id) {
    this(new InventoryView() {
        @Override
        public Inventory getTopInventory() {
            return inventory;
        }

        @Override
        public Inventory getBottomInventory() {
            return player.getInventory();
        }

        @Override
        public HumanEntity getPlayer() {
            return player;
        }

        @Override
        public InventoryType getType() {
            return inventory.getType();
        }
    }, id);
}
 
源代码10 项目: AuthMeReloaded   文件: PlayerListenerTest.java
@Test
public void shouldCancelInventoryOpen() {
    // given
    HumanEntity player = mock(Player.class);
    InventoryView transaction = mock(InventoryView.class);
    given(transaction.getTitle()).willReturn("Spawn");
    given(settings.getProperty(RestrictionSettings.UNRESTRICTED_INVENTORIES)).willReturn(Collections.emptySet());
    InventoryOpenEvent event = new InventoryOpenEvent(transaction);
    given(event.getPlayer()).willReturn(player);
    given(listenerService.shouldCancelEvent(player)).willReturn(true);
    setBukkitServiceToScheduleSyncDelayedTaskWithDelay(bukkitService);

    // when
    listener.onPlayerInventoryOpen(event);

    // then
    assertThat(event.isCancelled(), equalTo(true));
    verify(player).closeInventory();
}
 
源代码11 项目: SkyWarsReloaded   文件: PlayerInteractListener.java
@EventHandler 
  public void onInventoryClose(InventoryCloseEvent e) {
  	Inventory inv = e.getInventory();
InventoryView inView = e.getPlayer().getOpenInventory();
  	if (inView.getTitle().equals(new Messaging.MessageFormatter().format("event.crateInv"))) {
  		for (GameMap gMap: GameMap.getPlayableArenas(GameType.ALL)) {
  			for (Crate crate: gMap.getCrates()) {
  				if(crate.getInventory().equals(inv) && inv.getViewers().size() <= 1) {
				if (SkyWarsReloaded.getNMS().getVersion() < 9) {
					e.getPlayer().getWorld().playSound(e.getPlayer().getLocation(), Sound.valueOf("CHEST_CLOSE"), 1, 1);
				} else {
					e.getPlayer().getWorld().playSound(e.getPlayer().getLocation(), Sound.BLOCK_CHEST_CLOSE, 1, 1);
				}
  					SkyWarsReloaded.getNMS().playEnderChestAction(e.getPlayer().getWorld().getBlockAt(crate.getLocation()), false);
  					return;
  				}
  			}
  		}
  	} else if (inView.getTitle().contains("chest.yml")) {
  		SkyWarsReloaded.getCM().save(inView.getTitle());
}
  	
  }
 
源代码12 项目: Slimefun4   文件: TestVanillaMachinesListener.java
private PrepareItemCraftEvent mockPreCraftingEvent(ItemStack item) {
    Player player = server.addPlayer();

    CraftingInventory inv = Mockito.mock(CraftingInventory.class);
    MutableObject result = new MutableObject(new ItemStack(Material.EMERALD));

    Mockito.doAnswer(invocation -> {
        ItemStack argument = invocation.getArgument(0);
        result.setValue(argument);
        return null;
    }).when(inv).setResult(Mockito.any());

    Mockito.when(inv.getResult()).thenAnswer(invocation -> result.getValue());
    Mockito.when(inv.getContents()).thenReturn(new ItemStack[] { null, null, item, null, null, null, null, null, null });

    InventoryView view = player.openInventory(inv);
    PrepareItemCraftEvent event = new PrepareItemCraftEvent(inv, view, false);

    listener.onPrepareCraft(event);
    return event;
}
 
源代码13 项目: PlayerVaults   文件: VaultOperations.java
/**
 * Sets whether or not player vaults are locked. If set to true, this will kick anyone who is currently using their
 * vaults out.
 *
 * @param locked true for locked, false otherwise
 */
public static void setLocked(boolean locked) {
    LOCKED.set(locked);

    if (locked) {
        for (Player player : PlayerVaults.getInstance().getServer().getOnlinePlayers()) {
            if (player.getOpenInventory() != null) {
                InventoryView view = player.getOpenInventory();
                if (view.getTopInventory().getHolder() instanceof VaultHolder) {
                    player.closeInventory();
                    player.sendMessage(Lang.TITLE + Lang.LOCKED.toString());
                }
            }
        }
    }
}
 
源代码14 项目: Kettle   文件: InventoryClickEvent.java
public InventoryClickEvent(InventoryView view, SlotType type, int slot, ClickType click, InventoryAction action) {
    super(view);
    this.slot_type = type;
    this.rawSlot = slot;
    if (slot < 0) {
        this.clickedInventory = null;
    } else if (view.getTopInventory() != null && slot < view.getTopInventory().getSize()) {
        this.clickedInventory = view.getTopInventory();
    } else {
        this.clickedInventory = view.getBottomInventory();
    }
    this.whichSlot = view.convertSlot(slot);
    this.click = click;
    this.action = action;
}
 
源代码15 项目: Kettle   文件: PrepareItemEnchantEvent.java
public PrepareItemEnchantEvent(final Player enchanter, InventoryView view, final Block table, final ItemStack item, final EnchantmentOffer[] offers, final int bonus) {
    super(view);
    this.enchanter = enchanter;
    this.table = table;
    this.item = item;
    this.offers = offers;
    this.bonus = bonus;
}
 
源代码16 项目: Kettle   文件: EnchantItemEvent.java
public EnchantItemEvent(final Player enchanter, final InventoryView view, final Block table, final ItemStack item, final int level, final Map<Enchantment, Integer> enchants, final int i) {
    super(view);
    this.enchanter = enchanter;
    this.table = table;
    this.item = item;
    this.level = level;
    this.enchants = new HashMap<Enchantment, Integer>(enchants);
    this.cancelled = false;
    this.button = i;
}
 
源代码17 项目: Kettle   文件: CraftContainer.java
public CraftContainer(InventoryView view, EntityPlayer player, int id) {
    this.view = view;
    this.windowId = id;
    // TODO: Do we need to check that it really is a CraftInventory?
    IInventory top = ((CraftInventory) view.getTopInventory()).getInventory();
    InventoryPlayer bottom = (InventoryPlayer) ((CraftInventory) view.getBottomInventory()).getInventory();
    cachedType = view.getType();
    cachedTitle = view.getTitle();
    cachedSize = getSize();
    setupSlots(top, bottom, player);
}
 
源代码18 项目: Kettle   文件: CraftEventFactory.java
public static ItemStack callPreCraftEvent(InventoryCrafting matrix, ItemStack result, InventoryView lastCraftView, boolean isRepair) {
    CraftInventoryCrafting inventory = new CraftInventoryCrafting(matrix, matrix.resultInventory);
    inventory.setResult(CraftItemStack.asCraftMirror(result));

    PrepareItemCraftEvent event = new PrepareItemCraftEvent(inventory, lastCraftView, isRepair);
    Bukkit.getPluginManager().callEvent(event);

    org.bukkit.inventory.ItemStack bitem = event.getInventory().getResult();

    return CraftItemStack.asNMSCopy(bitem);
}
 
源代码19 项目: IF   文件: GuiListener.java
/**
 * Handles clicks in inventories
 *
 * @param event the event fired
 * @since 0.5.4
 */
@EventHandler(ignoreCancelled = true)
public void onInventoryClick(@NotNull InventoryClickEvent event) {
    if (!(event.getInventory().getHolder() instanceof Gui)) {
        return;
    }

    Gui gui = (Gui) event.getInventory().getHolder();
    InventoryView view = event.getView();
    Inventory inventory = view.getInventory(event.getRawSlot());

    if (inventory == null) {
        gui.callOnOutsideClick(event);
        return;
    }

    gui.callOnGlobalClick(event);
    if (inventory.equals(view.getTopInventory())) {
        gui.callOnTopClick(event);
    } else {
        gui.callOnBottomClick(event);
    }

    if ((inventory.equals(view.getBottomInventory()) && gui.getState() == Gui.State.TOP) ||
        event.getCurrentItem() == null) {
        return;
    }

    List<Pane> panes = gui.getPanes();

    //loop through the panes reverse, because the pane with the highest priority (last in list) is most likely to have the correct item
    for (int i = panes.size() - 1; i >= 0; i--) {
        if (panes.get(i).click(gui, event, 0, 0, 9, gui.getRows() + 4))
            break;
    }
}
 
源代码20 项目: IF   文件: GuiListener.java
/**
 * Handles small drag events which are likely clicks instead. These small drags will be interpreted as clicks and
 * will fire a click event.
 *
 * @param event the event fired
 * @since 0.6.1
 */
@EventHandler
public void onInventoryDrag(@NotNull InventoryDragEvent event) {
    if (!(event.getInventory().getHolder() instanceof Gui)) {
        return;
    }

    Set<Integer> inventorySlots = event.getInventorySlots();

    if (inventorySlots.size() > 1) {
        return;
    }

    InventoryView view = event.getView();
    int index = inventorySlots.toArray(new Integer[0])[0];
    InventoryType.SlotType slotType = view.getSlotType(index);

    boolean even = event.getType() == DragType.EVEN;

    ClickType clickType = even ? ClickType.LEFT : ClickType.RIGHT;
    InventoryAction inventoryAction = even ? InventoryAction.PLACE_SOME : InventoryAction.PLACE_ONE;

    //this is a fake click event, firing this may cause other plugins to function incorrectly, so keep it local
    InventoryClickEvent inventoryClickEvent = new InventoryClickEvent(view, slotType, index, clickType,
        inventoryAction);

    onInventoryClick(inventoryClickEvent);

    event.setCancelled(inventoryClickEvent.isCancelled());
}
 
源代码21 项目: IF   文件: MasonryPane.java
@Override
public boolean click(@NotNull Gui gui, @NotNull InventoryClickEvent event, int paneOffsetX, int paneOffsetY,
                     int maxLength, int maxHeight) {
    int length = Math.min(this.length, maxLength);
    int height = Math.min(this.height, maxHeight);

    int slot = event.getSlot();
    InventoryView view = event.getView();
    Inventory inventory = view.getInventory(event.getRawSlot());

    int x, y;

    if (inventory != null && inventory.equals(view.getBottomInventory())) {
        x = (slot % 9) - getX() - paneOffsetX;
        y = ((slot / 9) + gui.getRows() - 1) - getY() - paneOffsetY;

        if (slot / 9 == 0) {
            y = (gui.getRows() + 3) - getY() - paneOffsetY;
        }
    } else {
        x = (slot % 9) - getX() - paneOffsetX;
        y = (slot / 9) - getY() - paneOffsetY;
    }

    if (x < 0 || x >= length || y < 0 || y >= height)
        return false;

    callOnClick(event);

    boolean success = false;

    for (Pane pane : panes) {
        success = success || pane.click(gui, event, paneOffsetX + getX(),
            paneOffsetY + getY(), length, height);
    }

    return success;
}
 
源代码22 项目: IF   文件: PercentageBar.java
@Override
public boolean click(@NotNull Gui gui, @NotNull InventoryClickEvent event, int paneOffsetX, int paneOffsetY,
                     int maxLength, int maxHeight) {
    int length = Math.min(this.length, maxLength);
    int height = Math.min(this.height, maxHeight);

    int slot = event.getSlot();
    InventoryView view = event.getView();
    Inventory inventory = view.getInventory(event.getRawSlot());

    int x, y;

    if (inventory != null && inventory.equals(view.getBottomInventory())) {
        x = (slot % 9) - getX() - paneOffsetX;
        y = ((slot / 9) + gui.getRows() - 1) - getY() - paneOffsetY;

        if (slot / 9 == 0) {
            y = (gui.getRows() + 3) - getY() - paneOffsetY;
        }
    } else {
        x = (slot % 9) - getX() - paneOffsetX;
        y = (slot / 9) - getY() - paneOffsetY;
    }

    if (x < 0 || x >= length || y < 0 || y >= height) {
        return false;
    }

    callOnClick(event);

    event.setCancelled(true);

    int newPaneOffsetX = paneOffsetX + getX();
    int newPaneOffsetY = paneOffsetY + getY();

    return this.fillPane.click(gui, event, newPaneOffsetX, newPaneOffsetY, length, height) ||
        this.backgroundPane.click(gui, event, newPaneOffsetX, newPaneOffsetY, length, height);
}
 
源代码23 项目: ProjectAres   文件: MapRatingsMatchModule.java
public void rate(final MatchPlayer player, final int score) {
    if(!this.checkCanRate(player)) return;

    final Integer oldScore = this.playerRatings.put(player, score);

    InventoryView inv = player.getBukkit().getOpenInventory();
    if(inv.getTopInventory().getType() == InventoryType.HOPPER) {
        this.updateScoreButtons(player, inv.getTopInventory());
    }

    if(oldScore != null && score == oldScore) {
        player.sendWarning(PGMTranslations.t("rating.sameRating", player, score));
        return;
    }

    player.facet(MatchPlayerExecutor.class).callback(mapService.rate(new MapRating(
        player.getPlayerId(),
        getMatch().getMap().getDocument(),
        score,
        null
    )), CommandFutureCallback.onSuccess(player.getBukkit(), result -> {
        if(result.first.isOnline()) {
            result.first.getBukkit().closeInventory();
        }
        notifyRating(result.first, score, oldScore);
    }));
}
 
源代码24 项目: ProjectAres   文件: InventorySlot.java
public static InventorySlot<?> fromViewIndex(InventoryView view, int rawIndex) {
    final Slot slot = Slot.forViewIndex(view, rawIndex);
    if(slot == null) {
        throw new IllegalArgumentException("Could not determine slot at index " + rawIndex + " in view " + view);
    }
    final Inventory inventory = rawIndex == view.convertSlot(rawIndex) ? view.getTopInventory()
                                                                       : view.getBottomInventory();
    return new InventorySlot<>(inventory, slot);
}
 
源代码25 项目: ProjectAres   文件: WindowListener.java
/**
 * Called when an open window is clicked.
 */
default boolean windowClicked(InventoryView window,
                              Inventory inventory,
                              ClickType clickType,
                              InventoryType.SlotType slotType,
                              int slotIndex,
                              @Nullable ItemStack item) {
    return false;
}
 
源代码26 项目: Civs   文件: RegionsTests.java
@Test
public void regionShouldNotBeCreatedIfNotAllReqs() {
    loadRegionTypeCobble2();

    InventoryView transaction = mock(InventoryView.class);
    when(transaction.getPlayer()).thenReturn(TestUtil.player);
    InventoryCloseEvent inventoryCloseEvent = new InventoryCloseEvent(transaction);
    BlockPlaceEvent event3 = mock(BlockPlaceEvent.class);
    when(event3.getBlockPlaced()).thenReturn(TestUtil.block4);
    ItemStack cobbleStack = TestUtil.createItemStack(Material.COBBLESTONE);
    doReturn(cobbleStack).when(event3).getItemInHand();
    BlockPlaceEvent event2 = mock(BlockPlaceEvent.class);
    when(event2.getBlockPlaced()).thenReturn(TestUtil.block2);
    doReturn(cobbleStack).when(event2).getItemInHand();
    BlockPlaceEvent event1 = mock(BlockPlaceEvent.class);
    when(event1.getPlayer()).thenReturn(TestUtil.player);
    when(event1.getBlockPlaced()).thenReturn(TestUtil.blockUnique);
    doReturn(TestUtil.createUniqueItemStack(Material.CHEST, "Civs Cobble")).when(event1).getItemInHand();


    MenuManager.getInstance().onInventoryClose(inventoryCloseEvent);
    RegionListener regionListener = new RegionListener();
    regionListener.onBlockPlace(event2);
    regionListener.onBlockPlace(event3);
    regionListener.onBlockPlace(event1);
    assertNull(RegionManager.getInstance().getRegionAt(TestUtil.blockUnique.getLocation()));
}
 
源代码27 项目: NyaaUtils   文件: ExtraBackpackGUI.java
public static void closeAll() {
        Collection<Player> openers = opened.values();
        for (Player p : openers) {
            InventoryView view = p.getOpenInventory();
            Inventory inventory = view.getTopInventory();
            if (inventory.getHolder() instanceof ExtraBackpackGUI) {
                ExtraBackpackGUI holder = (ExtraBackpackGUI) inventory.getHolder();
//                holder.saveAll(inventory);
                holder.saveAll(holder.extraBackpack);
                holder.close();
            }
        }
    }
 
源代码28 项目: Thermos   文件: CraftContainer.java
public CraftContainer(InventoryView view, int id) {
    this.view = view;
    this.windowId = id;
    // TODO: Do we need to check that it really is a CraftInventory?
    net.minecraft.inventory.IInventory top = ((CraftInventory)view.getTopInventory()).getInventory();
    net.minecraft.inventory.IInventory bottom = ((CraftInventory)view.getBottomInventory()).getInventory();
    cachedType = view.getType();
    cachedTitle = view.getTitle();
    cachedSize = getSize();
    setupSlots(top, bottom);
}
 
源代码29 项目: SuperVanish   文件: SilentOpenChest.java
private boolean isShulkerBox(InventoryView inv) {
    try {
        return inv.getType() == InventoryType.SHULKER_BOX;
    } catch (NoSuchFieldError e) {
        return false;
    }
}
 
源代码30 项目: DungeonsXL   文件: AnnouncerCache.java
/**
 * @param gui the gui
 * @return the announcer that has the GUI
 */
public Announcer getByGUI(InventoryView gui) {
    for (Announcer announcer : announcers) {
        if ((ChatColor.DARK_RED + announcer.getName()).equals(gui.getTitle())) {
            return announcer;
        }
    }

    return null;
}
 
 类所在包
 同包方法