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

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

源代码1 项目: PGM   文件: WoolMatchModule.java
@EventHandler
public void handleWoolCrafting(PrepareItemCraftEvent event) {
  ItemStack result = event.getRecipe().getResult();
  InventoryHolder holder = event.getInventory().getHolder();

  if (holder instanceof Player) {
    MatchPlayer playerHolder = this.match.getPlayer((Player) holder);

    if (playerHolder != null && result != null && result.getType() == Material.WOOL) {
      for (MonumentWool wool : this.wools.values()) {
        if (wool.getDefinition().isObjectiveWool(result)) {
          if (!wool.getDefinition().isCraftable()) {
            playerHolder.sendWarning(
                TranslatableComponent.of("wool.craftingDisabled", wool.getComponentName()));
            event.getInventory().setResult(null);
          }
        }
      }
    }
  }
}
 
源代码2 项目: PGM   文件: 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());
  }
}
 
@EventHandler(ignoreCancelled = true, priority = EventPriority.HIGHEST)
public void inventory(InventoryPickupItemEvent event) {
    ItemStack itemStack = event.getItem().getItemStack();
    if (DisplayItem.getNowUsing() != DisplayType.REALITEM) {
        return;
    }
    if (!DisplayItem.checkIsGuardItemStack(itemStack)) {
        return; // We didn't care that
    }
    @Nullable Location loc = event.getInventory().getLocation();
    @Nullable InventoryHolder holder = event.getInventory().getHolder();
    event.setCancelled(true);
    sendAlert(
            "[DisplayGuard] Something  "
                    + holder
                    + " at "
                    + loc
                    + " trying pickup the DisplayItem,  you should teleport to that location and to check detail..");
    Util.inventoryCheck(event.getInventory());
}
 
源代码4 项目: QuickShop-Reremake   文件: Util.java
/**
 * Returns the chest attached to the given chest. The given block must be a chest.
 *
 * @param b The chest to check.
 * @return the block which is also a chest and connected to b.
 */
@Nullable
public static Block getSecondHalf(@NotNull Block b) {
    BlockState state = b.getState();
    if (!(state instanceof Chest)) {
        return null;
    }
    Chest oneSideOfChest = (Chest) state;
    InventoryHolder chestHolder = oneSideOfChest.getInventory().getHolder();
    if (chestHolder instanceof DoubleChest) {
        DoubleChest doubleChest = (DoubleChest) chestHolder;
        InventoryHolder left = doubleChest.getLeftSide();
        InventoryHolder right = doubleChest.getRightSide();
        Chest leftC = (Chest) left;
        Chest rightC = (Chest) right;
        if (equalsBlockStateLocation(oneSideOfChest.getLocation(), Objects.requireNonNull(rightC).getLocation())) {
            return Objects.requireNonNull(leftC).getBlock();
        }
        if (equalsBlockStateLocation(oneSideOfChest.getLocation(), Objects.requireNonNull(leftC).getLocation())) {
            return rightC.getBlock();
        }
    }
    return null;
}
 
源代码5 项目: Modern-LWC   文件: LWC.java
/**
 * Merge inventories into one
 *
 * @param blocks
 * @return
 */
public ItemStack[] mergeInventories(List<Block> blocks) {
    ItemStack[] stacks = new ItemStack[54];
    int index = 0;

    try {
        for (Block block : blocks) {
            if (!(block.getState() instanceof InventoryHolder)) {
                continue;
            }

            InventoryHolder holder = (InventoryHolder) block.getState();
            Inventory inventory = holder.getInventory();

            // Add all the items from this inventory
            for (ItemStack stack : inventory.getContents()) {
                stacks[index] = stack;
                index++;
            }
        }
    } catch (Exception e) {
        return mergeInventories(blocks);
    }

    return stacks;
}
 
源代码6 项目: ProjectAres   文件: WoolMatchModule.java
@EventHandler
public void handleWoolCrafting(PrepareItemCraftEvent event) {
    ItemStack result = event.getRecipe().getResult();
    InventoryHolder holder = event.getInventory().getHolder();

    if (holder instanceof Player) {
        MatchPlayer playerHolder = this.match.getPlayer((Player) holder);

        if (playerHolder != null && result != null && result.getType() == Material.WOOL) {
            for(MonumentWool wool : this.wools) {
                if(wool.getDefinition().isObjectiveWool(result)) {
                    if(!wool.getDefinition().isCraftable()) {
                        playerHolder.sendMessage(ChatColor.RED + PGMTranslations.t("match.wool.craftDisabled", playerHolder, BukkitUtils.woolMessage(wool.getDyeColor())));
                        event.getInventory().setResult(null);
                    }
                }
            }
        }
    }
}
 
源代码7 项目: ProjectAres   文件: FillListener.java
/**
 * Return a predicate that applies a Filter to the given InventoryHolder,
 * or null if the InventoryHolder is not something that we should be filling.
 */
private static @Nullable Predicate<Filter> passesFilter(InventoryHolder holder) {
    if(holder instanceof DoubleChest) {
        final DoubleChest doubleChest = (DoubleChest) holder;
        return filter -> !filter.denies((Chest) doubleChest.getLeftSide()) ||
                         !filter.denies((Chest) doubleChest.getRightSide());
    } else if(holder instanceof BlockState) {
        return filter -> !filter.denies((BlockState) holder);
    } else if(holder instanceof Player) {
        // This happens with crafting inventories, and possibly other transient inventory types
        // Pretty sure we never want to fill an inventory held by the player
        return null;
    } else if(holder instanceof Entity) {
        return filter -> !filter.denies(new EntityQuery((Entity) holder));
    } else {
        // If we're not sure what it is, don't fill it
        return null;
    }
}
 
源代码8 项目: 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());
    }
}
 
源代码9 项目: SkyWarsReloaded   文件: GameMap.java
public void addChest(Chest chest, ChestPlacementType cpt) {
	ArrayList<CoordLoc> list;
	if (cpt == ChestPlacementType.NORMAL) {
		list = chests;
	} else {
		list = centerChests;
	}
	InventoryHolder ih = chest.getInventory().getHolder();
       if (ih instanceof DoubleChest) {
       	DoubleChest dc = (DoubleChest) ih;
		Chest left = (Chest) dc.getLeftSide();
		Chest right = (Chest) dc.getRightSide();
		CoordLoc locLeft = new CoordLoc(left.getX(), left.getY(), left.getZ());
		CoordLoc locRight = new CoordLoc(right.getX(), right.getY(), right.getZ());
		if (!(list.contains(locLeft) || list.contains(locRight))) {
			addChest(locLeft, cpt, true);
		}
       } else {
       	CoordLoc loc = new CoordLoc(chest.getX(), chest.getY(), chest.getZ());
           if (!list.contains(loc)){
			addChest(loc, cpt, true);
           }
       }
}
 
源代码10 项目: Skript   文件: ExprInventoryInfo.java
@Override
protected Object[] get(Event e, Inventory[] source) {

	switch (type) {
		case HOLDER:
			return get(source, inv -> {
				InventoryHolder holder = inv.getHolder();
				if (holder instanceof BlockState) {
					return new BlockInventoryHolder((BlockState) holder);
				}
				return holder;
			});
		case ROWS:
			return get(source, inv -> inv.getSize() / 9);
		case VIEWERS:
			List<HumanEntity> viewers = new ArrayList<>();
			for (Inventory inventory : source) {
				viewers.addAll(inventory.getViewers());
			}
			return viewers.toArray(new HumanEntity[0]);
		default:
			return new Object[0];
	}

}
 
源代码11 项目: AnnihilationPro   文件: Furnace_V1_8_R1.java
@Override
    public InventoryHolder getOwner()
    {
//		int x = 0;
//		org.bukkit.block.Block b = this.world.getWorld().getBlockAt(x, 0, 0);
//		while(b != null && b.getType() != Material.AIR)
//			b = this.world.getWorld().getBlockAt(++x,0,0);
//		Furnace furnace = new CraftFurnace(b);
        org.bukkit.block.Furnace furnace = new CraftFurnace(this.world.getWorld().getBlockAt(0, 0, 0));
        try
        {
            ReflectionUtil.setValue(furnace, "furnace", this);
        }
        catch (Exception e)
        {
            e.printStackTrace();
        }
        return furnace;
    }
 
源代码12 项目: AnnihilationPro   文件: Furnace_V1_7_R3.java
@Override
	public InventoryHolder getOwner()
	{
		//Bukkit.getLogger().info("getOwner");
//		int x = 0;
//		org.bukkit.block.Block b = this.world.getWorld().getBlockAt(x, 0, 0);
//		while(b != null && b.getType() != Material.AIR)
//			b = this.world.getWorld().getBlockAt(++x,0,0);
//		Furnace furnace = new CraftFurnace(b);
		furnace = new CraftFurnace(this.world.getWorld().getBlockAt(0, 0, 0));
		try
		{
			ReflectionUtil.setValue(furnace, "furnace", this);
		}
		catch (Exception e)
		{
			e.printStackTrace();
		}
		return furnace;
	}
 
源代码13 项目: civcraft   文件: InventoryHolderStorage.java
public void setHolder(InventoryHolder holder) throws CivException {
	if (holder instanceof Player) {
		Player player = (Player)holder;
		playerName = player.getName();
		blockLocation = null;
		return;
	} 
	
	if (holder instanceof Chest) {
		Chest chest = (Chest)holder;
		playerName = null;
		blockLocation = chest.getLocation();
		return;
	} 
	
	if (holder instanceof DoubleChest) {
		DoubleChest dchest = (DoubleChest)holder;
		playerName = null;
		blockLocation = dchest.getLocation();
		return;
	}
	
	throw new CivException("Invalid holder passed to set holder:"+holder.toString());
}
 
源代码14 项目: civcraft   文件: BonusGoodie.java
public void setHolder(InventoryHolder holder) throws CivException {
	if (holder == null) {
		return;
	}
	
	if (holderStore == null) {
		if (holder instanceof Chest) {
			holderStore = new InventoryHolderStorage(((Chest)holder).getLocation());
		} else if (holder instanceof Player){
			holderStore = new InventoryHolderStorage((Player)holder);
		} else {
			throw new CivException("Invalid holder.");
		}
	} else {
		holderStore.setHolder(holder);
	}
	
	// If we have a holder, we cannot be on the ground or in a item frame.
	this.frameStore = null;
	this.item = null;
	
}
 
源代码15 项目: IridiumSkyblock   文件: v1_13_R2.java
@Override
public void setBlockFast(Block block, int blockId, byte data) {
    BlockState state = block.getState();
    if (state.getType().name().endsWith("AIR") && blockId == 0) return;
    if (state instanceof InventoryHolder) {
        ((InventoryHolder) state).getInventory().clear();
    }
    XMaterial material = XMaterial.requestOldXMaterial(blockId, (byte) 0);
    if (material != null && material.parseMaterial() != null) {
        block.setBlockData(IridiumSkyblock.getInstance().fromLegacy(material.parseMaterial(), data), false);
    }
}
 
源代码16 项目: IridiumSkyblock   文件: v1_14_R1.java
@Override
public void setBlockFast(Block block, int blockId, byte data) {
    BlockState state = block.getState();
    if (state.getType().name().endsWith("AIR") && blockId == 0) return;
    if (state instanceof InventoryHolder) {
        ((InventoryHolder) state).getInventory().clear();
    }
    XMaterial material = XMaterial.requestOldXMaterial(blockId, (byte) 0);
    if (material != null && material.parseMaterial() != null) {
        block.setBlockData(IridiumSkyblock.getInstance().fromLegacy(material.parseMaterial(), data), false);
    }
}
 
源代码17 项目: IridiumSkyblock   文件: v1_16_R1.java
@Override
public void setBlockFast(Block block, int blockId, byte data) {
    BlockState state = block.getState();
    if (state.getType().name().endsWith("AIR") && blockId == 0) return;
    if (state instanceof InventoryHolder) {
        ((InventoryHolder) state).getInventory().clear();
    }
    XMaterial material = XMaterial.requestOldXMaterial(blockId, (byte) 0);
    if (material != null && material.parseMaterial() != null) {
        block.setBlockData(IridiumSkyblock.getInstance().fromLegacy(material.parseMaterial(), data), false);
    }
}
 
源代码18 项目: IridiumSkyblock   文件: v1_15_R1.java
@Override
public void setBlockFast(Block block, int blockId, byte data) {
    BlockState state = block.getState();
    if (state.getType().name().endsWith("AIR") && blockId == 0) return;
    if (state instanceof InventoryHolder) {
        ((InventoryHolder) state).getInventory().clear();
    }
    XMaterial material = XMaterial.requestOldXMaterial(blockId, (byte) 0);
    if (material != null && material.parseMaterial() != null) {
        block.setBlockData(IridiumSkyblock.getInstance().fromLegacy(material.parseMaterial(), data), false);
    }
}
 
源代码19 项目: PGM   文件: WoolMatchModule.java
@EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true)
public void onContainerPlace(BlockPlaceEvent event) {
  // Blacklist any placed container blocks
  if (event.getBlock().getState() instanceof InventoryHolder) {
    this.chests.put(((InventoryHolder) event.getBlock().getState()).getInventory(), false);
  }
}
 
源代码20 项目: PlayerVaults   文件: VaultManager.java
/**
 * Get an inventory from file. Returns null if the inventory doesn't exist. SHOULD ONLY BE USED INTERNALLY
 *
 * @param playerFile the YamlConfiguration file.
 * @param size the size of the vault.
 * @param number the vault number.
 * @return inventory if exists, otherwise null.
 */
private Inventory getInventory(InventoryHolder owner, String ownerName, YamlConfiguration playerFile, int size, int number, String title) {
    Inventory inventory = Bukkit.createInventory(owner, size, title);

    String data = playerFile.getString(String.format(VAULTKEY, number));
    Inventory deserialized = Base64Serialization.fromBase64(data, ownerName);
    if (deserialized == null) {
        PlayerVaults.debug("Loaded vault as null");
        return inventory;
    }

    // Check if deserialized has more used slots than the limit here.
    // Happens on change of permission or if people used the broken version.
    // In this case, players will lose items.
    if (deserialized.getContents().length > size) {
        for (ItemStack stack : deserialized.getContents()) {
            if (stack != null) {
                inventory.addItem(stack);
            }
        }
    } else {
        inventory.setContents(deserialized.getContents());
    }

    PlayerVaults.debug("Loaded vault");
    return inventory;
}
 
源代码21 项目: Thermos   文件: CauldronUtils.java
public static InventoryHolder getOwner(TileEntity tileentity)
{
    org.bukkit.block.BlockState state = tileentity.worldObj.getWorld().getBlockAt(tileentity.xCoord, tileentity.yCoord, tileentity.zCoord).getState();

    if (state instanceof InventoryHolder)
    {
        return (InventoryHolder) state;
    }

    return null;
}
 
源代码22 项目: Kettle   文件: CraftInventoryCustom.java
public MinecraftInventory(InventoryHolder owner, int size, String title) {
    Validate.notNull(title, "Title cannot be null");
    this.items = NonNullList.withSize(size, ItemStack.EMPTY);
    this.title = title;
    this.viewers = new ArrayList<HumanEntity>();
    this.owner = owner;
    this.type = InventoryType.CHEST;
}
 
源代码23 项目: civcraft   文件: InventoryHolderStorage.java
public InventoryHolderStorage(InventoryHolder holder, Location holderLocation) {
	if (holder instanceof Player) {
		Player player = (Player)holder;
		playerName = player.getName();
		blockLocation = null;
	} else {
		blockLocation = holderLocation;
	}
}
 
源代码24 项目: RedProtect   文件: MobFlagGui.java
@EventHandler(priority = EventPriority.LOWEST, ignoreCancelled = true)
void onInventoryClick(InventoryClickEvent event) {
    InventoryHolder holder = event.getInventory().getHolder();
    if (holder instanceof Player && holder.equals(this.player)) {

        if (event.getInventory().equals(this.player.getOpenInventory().getTopInventory())) {
            event.setCancelled(true);

            if (event.getRawSlot() == 0) {
                setFlagValue(true);
                close(true);
                return;
            }

            if (event.getRawSlot() == 1) {
                setFlagValue(false);
                close(true);
                return;
            }

            ItemStack item = event.getCurrentItem();
            if (item != null && !item.equals(RedProtect.get().config.getGuiSeparator()) && !item.getType().equals(Material.AIR) && event.getRawSlot() >= 0 && event.getRawSlot() <= this.size - 1) {
                ItemMeta itemMeta = item.getItemMeta();
                List<String> lore = itemMeta.getLore();
                if (lore.get(0).equalsIgnoreCase(translateAlternateColorCodes('&', RedProtect.get().guiLang.getFlagString("value") + " " + RedProtect.get().guiLang.getFlagString("true")))) {
                    lore.set(0, translateAlternateColorCodes('&', RedProtect.get().guiLang.getFlagString("value") + " " + RedProtect.get().guiLang.getFlagString("false")));
                    item.setAmount(1);
                } else {
                    lore.set(0, translateAlternateColorCodes('&', RedProtect.get().guiLang.getFlagString("value") + " " + RedProtect.get().guiLang.getFlagString("true")));
                    item.setAmount(2);
                }
                itemMeta.setLore(lore);
                item.setItemMeta(itemMeta);
            }
        }
    }
}
 
源代码25 项目: Modern-LWC   文件: LWC.java
/**
 * Remove the inventory from a block
 *
 * @param block
 */
private void removeInventory(Block block) {
    if (block == null) {
        return;
    }

    if (!(block.getState() instanceof InventoryHolder)) {
        return;
    }

    InventoryHolder holder = (InventoryHolder) block.getState();
    holder.getInventory().clear();
}
 
源代码26 项目: Modern-LWC   文件: RestorableBlock.java
/**
 * Wrap a block in a restorableblock object
 *
 * @param block
 * @return
 */
public static RestorableBlock wrapBlock(Block block) {
    if (block == null) {
        return null;
    }

    BlockCache blockCache = BlockCache.getInstance();
    RestorableBlock rblock = new RestorableBlock();
    rblock.id = blockCache.getBlockId(block);
    rblock.world = block.getWorld().getName();
    rblock.x = block.getX();
    rblock.y = block.getY();
    rblock.z = block.getZ();
    rblock.data = block.getData();

    BlockState state = block.getState();

    // Does it have an inventory? ^^
    if (state instanceof InventoryHolder) {
        Inventory inventory = ((InventoryHolder) state).getInventory();
        ItemStack[] stacks = inventory.getContents();

        for (int slot = 0; slot < stacks.length; slot++) {
            ItemStack stack = stacks[slot];

            if (stack == null) {
                continue; // don't waste space!
            }

            rblock.setSlot(slot, stack);
        }
    }

    return rblock;
}
 
源代码27 项目: ShopChest   文件: ShopUtils.java
/**
 * Add a shop
 * @param shop Shop to add
 * @param addToDatabase Whether the shop should also be added to the database
 * @param callback Callback that - if succeeded - returns the ID the shop had or was given (as {@code int})
 */
public void addShop(Shop shop, boolean addToDatabase, Callback<Integer> callback) {
    InventoryHolder ih = shop.getInventoryHolder();
    plugin.debug("Adding shop... (#" + shop.getID() + ")");

    if (ih instanceof DoubleChest) {
        DoubleChest dc = (DoubleChest) ih;
        Chest r = (Chest) dc.getRightSide();
        Chest l = (Chest) dc.getLeftSide();

        plugin.debug("Added shop as double chest. (#" + shop.getID() + ")");

        shopLocation.put(r.getLocation(), shop);
        shopLocation.put(l.getLocation(), shop);
    } else {
        plugin.debug("Added shop as single chest. (#" + shop.getID() + ")");

        shopLocation.put(shop.getLocation(), shop);
    }

    if (addToDatabase) {
        if (shop.getShopType() != ShopType.ADMIN) {
            playerShopAmount.compute(shop.getVendor().getUniqueId(), (uuid, amount) -> amount == null ? new Counter(1) : amount.increment());
        }
        plugin.getShopDatabase().addShop(shop, callback);
    } else {
        if (callback != null) callback.callSyncResult(shop.getID());
    }

}
 
源代码28 项目: InventoryGui   文件: InventoryGui.java
/**
 * Get the GUI registered to an InventoryHolder
 * @param holder    The InventoryHolder to get the GUI for
 * @return          The InventoryGui registered to it or <tt>null</tt> if none was registered to it
 */
public static InventoryGui get(InventoryHolder holder) {
    if (holder instanceof Entity) {
        return GUI_MAP.get(((Entity) holder).getUniqueId().toString());
    } else if (holder instanceof BlockState) {
        return GUI_MAP.get(((BlockState) holder).getLocation().toString());
    }
    return null;
}
 
源代码29 项目: IF   文件: GuiListener.java
/**
 * Handles users picking up items while their bottom inventory is in use.
 *
 * @param event the event fired when an entity picks up an item
 * @since 0.6.1
 */
@EventHandler(ignoreCancelled = true, priority = EventPriority.MONITOR)
public void onEntityPickupItem(@NotNull EntityPickupItemEvent event) {
    if (!(event.getEntity() instanceof HumanEntity)) {
        return;
    }

    InventoryHolder holder = ((HumanEntity) event.getEntity()).getOpenInventory().getTopInventory().getHolder();

    if (!(holder instanceof Gui)) {
        return;
    }

    Gui gui = (Gui) holder;

    if (gui.getState() != Gui.State.BOTTOM) {
        return;
    }

    int leftOver = gui.getHumanEntityCache().add((HumanEntity) event.getEntity(), event.getItem().getItemStack());

    if (leftOver == 0) {
        event.getItem().remove();
    } else {
        ItemStack itemStack = event.getItem().getItemStack();

        itemStack.setAmount(leftOver);

        event.getItem().setItemStack(itemStack);
    }

    event.setCancelled(true);
}
 
源代码30 项目: ProjectAres   文件: WoolMatchModule.java
@EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true)
public void onContainerPlace(BlockPlaceEvent event) {
    // Blacklist any placed container blocks
    if(event.getBlock().getState() instanceof InventoryHolder) {
        this.chests.put(((InventoryHolder) event.getBlock().getState()).getInventory(), false);
    }
}
 
 类所在包
 类方法
 同包方法