/** * Gets the primary Inventory involved in this transaction * * @return The upper inventory. */ public Inventory getInventory() { return transaction.getTopInventory(); }
/** * Gets the list of players viewing the primary (upper) inventory involved * in this event * * @return A list of people viewing. */ public List<HumanEntity> getViewers() { return transaction.getTopInventory().getViewers(); }
/** * Get the title of this inventory window. * * @return The title. */ public final String getTitle() { return getTopInventory().getTitle(); } }
private GlowInventory getTopInventory() { return (GlowInventory) getOpenInventory().getTopInventory(); }
/** * Check the total number of slots in this view, combining the upper and * lower inventories. * <p> * Note though that it's possible for this to be greater than the sum of * the two inventories if for example some slots are not being used. * * @return The total size */ public final int countSlots() { return getTopInventory().getSize() + getBottomInventory().getSize(); }
/** * Check if an inventory view is the player's default inventory view. * * @param view The view to check. * @return Whether it is a player's default inventory view. */ public static boolean isDefault(InventoryView view) { return view.getBottomInventory() instanceof GlowPlayerInventory && view.getTopInventory() == ((GlowPlayerInventory) view.getBottomInventory()) .getCraftingInventory(); }
/** * Gets one item in this inventory view by its raw slot ID. * * @param slot The ID as returned by InventoryClickEvent.getRawSlot() * @return The item currently in the slot. */ public ItemStack getItem(int slot) { if (slot == OUTSIDE) { return null; } if (slot < getTopInventory().getSize()) { return getTopInventory().getItem(convertSlot(slot)); } else { return getBottomInventory().getItem(convertSlot(slot)); } }
@Override public void openInventory(InventoryView inventory) { checkNotNull(inventory); this.inventory.getDragTracker().reset(); // stop viewing the old inventory and start viewing the new one removeViewer(openInventory.getTopInventory()); removeViewer(openInventory.getBottomInventory()); openInventory = inventory; addViewer(openInventory.getTopInventory()); addViewer(openInventory.getBottomInventory()); }
/** * Creates a human within the specified world and with the specified name. * * @param location The location. * @param profile The human's profile with name and UUID information. */ public GlowHumanEntity(Location location, GlowPlayerProfile profile) { super(location); this.profile = profile; xpSeed = new Random().nextInt(); //TODO: use entity's random instance permissions = new PermissibleBase(this); gameMode = server.getDefaultGameMode(); openInventory = new GlowInventoryView(this); addViewer(openInventory.getTopInventory()); addViewer(openInventory.getBottomInventory()); }
/** * Sets one item in this inventory view by its raw slot ID. * <p> * Note: If slot ID -999 is chosen, it may be expected that the item is * dropped on the ground. This is not required behaviour, however. * * @param slot The ID as returned by InventoryClickEvent.getRawSlot() * @param item The new item to put in the slot, or null to clear it. */ public void setItem(int slot, ItemStack item) { if (slot != OUTSIDE) { if (slot < getTopInventory().getSize()) { getTopInventory().setItem(convertSlot(slot),item); } else { getBottomInventory().setItem(convertSlot(slot),item); } } else { getPlayer().getWorld().dropItemNaturally(getPlayer().getLocation(), item); } }
/** * Converts a raw slot ID into its local slot ID into whichever of the two * inventories the slot points to. * <p> * If the raw slot refers to the upper inventory, it will be returned * unchanged and thus be suitable for getTopInventory().getItem(); if it * refers to the lower inventory, the output will differ from the input * and be suitable for getBottomInventory().getItem(). * * @param rawSlot The raw slot ID. * @return The converted slot ID. */ public final int convertSlot(int rawSlot) { int numInTop = getTopInventory().getSize(); if (rawSlot < numInTop) { return rawSlot; } int slot = rawSlot - numInTop; if (getPlayer().getGameMode() == GameMode.CREATIVE && getType() == InventoryType.PLAYER) { return slot; } if (getType() == InventoryType.CRAFTING) { if(slot < 4) return 39 - slot; else slot -= 4; } if (slot >= 27) slot -= 27; else slot += 9; return slot; }
@Override public void handle(GlowSession session, EnchantItemMessage message) { Inventory view = session.getPlayer().getOpenInventory().getTopInventory(); if (view instanceof GlowEnchantingInventory) { ((GlowEnchantingInventory) view).onPlayerEnchant(message.getEnchantment()); } else { ConsoleMessages.Info.Enchant.NOT_OPEN.log(session.getPlayer().getName()); } } }
private void handleUnusedInputs() { for (int i = 0; i < getTopInventory().getSlots().size(); i++) { ItemStack itemStack = getOpenInventory().getItem(i); if (InventoryUtil.isEmpty(itemStack)) { continue; } if (isDroppableCraftingSlot(i)) { getOpenInventory().getBottomInventory().addItem(itemStack); getOpenInventory().getTopInventory().setItem(i, InventoryUtil.createEmptyStack()); } } }
@Override public void openInventory(InventoryView view) { session.send(new CloseWindowMessage(invMonitor.getId())); super.openInventory(view); invMonitor = new InventoryMonitor(getOpenInventory()); int viewId = invMonitor.getId(); if (viewId != 0) { InventoryOpenEvent event = EventFactory.getInstance().callEvent( new InventoryOpenEvent(view)); if (event.isCancelled()) { // close the inventory but don't fire the InventoryCloseEvent resetInventoryView(); return; } String title = view.getTitle(); boolean defaultTitle = Objects.equals(view.getType().getDefaultTitle(), title); if (view.getTopInventory() instanceof PlayerInventory && defaultTitle) { title = ((PlayerInventory) view.getTopInventory()).getHolder().getName(); } Message open = new OpenWindowMessage(viewId, invMonitor .getType(), title, ((GlowInventory) view.getTopInventory()).getRawSlots()); session.send(open); } updateInventory(); }
/** * Create a new monitor for the given inventory view. * * @param view The view to monitor. */ public InventoryMonitor(InventoryView view) { this.view = view; if (view.getTopInventory().getType() != InventoryType.CRAFTING && view.getBottomInventory().getType() == InventoryType.PLAYER) { // Don't send armor/shield slots when looking in an inventory size = view.countSlots() - 5; } else { size = view.countSlots(); } slots = new ItemStack[size]; // determine id and type id if (GlowInventoryView.isDefault(view)) { id = 0; } else { id = nextId; nextId = nextId % 100 + 1; } type = getTypeId(view.getType()); // set initial contents for (int i = 0; i < size; ++i) { updateItem(i); } }
break; ((GlowAnvilInventory) session.getPlayer().getOpenInventory().getTopInventory()) .setRenameText(name); break;
@Override public void handleShiftClick(GlowPlayer player, InventoryView view, int clickedSlot, ItemStack clickedItem) { GlowInventory top = (GlowInventory) view.getTopInventory();
private boolean process(GlowPlayer player, WindowClickMessage message) { int viewSlot = message.getSlot(); InventoryView view = player.getOpenInventory(); GlowInventory top = (GlowInventory) view.getTopInventory(); GlowInventory bottom = (GlowInventory) view.getBottomInventory(); ItemStack slotItem = InventoryUtil.itemOrEmpty(view.getItem(viewSlot)); if (view.getTopInventory().getType() != InventoryType.CRAFTING || viewSlot >= view .getTopInventory().getSize() || ((GlowInventory) view.getTopInventory()).getSlot(viewSlot).getType() != SlotType.RESULT) { player.sendItemChange(viewSlot, slotItem);
@EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true) public void onTeleport(PlayerTeleportEvent event) { if (event.getCause() == PlayerTeleportEvent.TeleportCause.UNKNOWN) { return; } Player p = event.getPlayer(); // The player will either quit, die, or close the inventory at some point if (plugin.getInVault().containsKey(p.getUniqueId().toString())) { return; } saveVault(p, p.getOpenInventory().getTopInventory()); }
public static void closeAllMenus() { for (Player player : VersionUtils.getOnlinePlayers()) { if (player.getOpenInventory() != null) { if (player.getOpenInventory().getTopInventory().getHolder() instanceof MenuInventoryHolder || player.getOpenInventory().getBottomInventory().getHolder() instanceof MenuInventoryHolder) { player.closeInventory(); } } } }