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

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

源代码1 项目: Skript   文件: ExprXOf.java
@Override
protected Object[] get(final Event e, final Object[] source) {
	return get(source, new Converter<Object, Object>() {
		@Override
		@Nullable
		public Object convert(final Object o) {
			final Number a = amount.getSingle(e);
			if (a == null)
				return null;
			if (o instanceof ItemStack) {
				final ItemStack is = ((ItemStack) o).clone();
				is.setAmount(a.intValue());
				return is;
			} else if (o instanceof ItemType) {
				ItemType type = ((ItemType) o).clone();
				type.setAmount(a.intValue());
				return type;
			} else {
				final EntityType t = ((EntityType) o).clone();
				t.amount = a.intValue();
				return t;
			}
		}
	});
}
 
源代码2 项目: Slimefun4   文件: MultiBlockMachine.java
protected Inventory findOutputChest(Block b, ItemStack output) {
    for (BlockFace face : outputFaces) {
        Block potentialOutput = b.getRelative(face);

        if (potentialOutput.getType() == Material.CHEST) {
            String id = BlockStorage.checkID(potentialOutput);

            if (id != null && id.equals("OUTPUT_CHEST")) {
                // Found the output chest! Now, let's check if we can fit the product in it.
                Inventory inv = ((Chest) potentialOutput.getState()).getInventory();

                if (InvUtils.fits(inv, output)) {
                    return inv;
                }
            }
        }
    }

    return null;
}
 
源代码3 项目: BedWars   文件: LuckyBlockAddonListener.java
@EventHandler
public void onLuckyBlockRegistered(BedwarsApplyPropertyToBoughtItem event) {
    if (event.getPropertyName().equalsIgnoreCase("luckyblock")) {
        ItemStack stack = event.getStack();

        LuckyBlock lucky = new LuckyBlock(event.getGame(), event.getPlayer(),
                event.getGame().getTeamOfPlayer(event.getPlayer()),
                (List<Map<String, Object>>) event.getProperty("data"));

        int id = System.identityHashCode(lucky);

        String luckyBlockString = LUCKY_BLOCK_PREFIX + id;

        APIUtils.hashIntoInvisibleString(stack, luckyBlockString);
    }
}
 
源代码4 项目: Slimefun4   文件: SlimefunItemSetup.java
private static void registerArmorSet(Category category, ItemStack baseComponent, ItemStack[] items, String idSyntax, PotionEffect[][] effects, SlimefunAddon addon) {
    String[] components = new String[] { "_HELMET", "_CHESTPLATE", "_LEGGINGS", "_BOOTS" };
    List<ItemStack[]> recipes = new ArrayList<>();

    recipes.add(new ItemStack[] { baseComponent, baseComponent, baseComponent, baseComponent, null, baseComponent, null, null, null });
    recipes.add(new ItemStack[] { baseComponent, null, baseComponent, baseComponent, baseComponent, baseComponent, baseComponent, baseComponent, baseComponent });
    recipes.add(new ItemStack[] { baseComponent, baseComponent, baseComponent, baseComponent, null, baseComponent, baseComponent, null, baseComponent });
    recipes.add(new ItemStack[] { null, null, null, baseComponent, null, baseComponent, baseComponent, null, baseComponent });

    for (int i = 0; i < 4; i++) {
        if (i < effects.length && effects[i].length > 0) {
            new SlimefunArmorPiece(category, new SlimefunItemStack(idSyntax + components[i], items[i]), RecipeType.ARMOR_FORGE, recipes.get(i), effects[i]).register(addon);
        }
        else {
            new SlimefunItem(category, new SlimefunItemStack(idSyntax + components[i], items[i]), RecipeType.ARMOR_FORGE, recipes.get(i)).register(addon);
        }
    }
}
 
源代码5 项目: MineTinker   文件: TridentListener.java
@EventHandler(ignoreCancelled = true)
public void onTridentLaunch(ProjectileLaunchEvent event) {
	if (!(event.getEntity().getShooter() instanceof Player)) {
		return;
	}

	if (!(event.getEntity() instanceof Trident)) {
		return;
	}

	Player player = (Player) event.getEntity().getShooter();
	ItemStack trident = player.getInventory().getItemInMainHand().clone();

	if (!ModManager.instance().isToolViable(trident)) {
		return;
	}

	ModManager.instance().addExp(player, trident, -20000);
	//trident is a item clone and only for triggering modifier effects
	//this makes sure that the item duplicate does not get any level ups
	TridentToItemStack.put((Trident) event.getEntity(), trident);
}
 
源代码6 项目: Holograms   文件: HologramEntityControllerImpl.java
@Override
public ItemHolder spawnItemHolder(HologramLine line, Location location, ItemStack itemstack) {
    WorldServer nmsWorld = ((CraftWorld) location.getWorld()).getHandle();
    EntityItemHolder item = new EntityItemHolder(nmsWorld, line);
    item.setPosition(location.getX(), location.getY() + line.getHeight(), location.getZ());
    item.setItem(itemstack);
    if (!addEntityToWorld(nmsWorld, item)) {
        plugin.getLogger().log(Level.WARNING, "Failed to spawn item entity in world " + location.getWorld().getName()
                + " at x:" + location.getX() + " y:" + location.getY() + " z:" + location.getZ());
    }
    EntityNameable armorStand = spawnNameable(line, location, false);
    item.setMount(armorStand);
    item.setLockTick(true);
    armorStand.setLockTick(true);
    return item;
}
 
源代码7 项目: ProjectAres   文件: WoolMatchModule.java
@Repeatable(interval = @Time(seconds = 30), scope = MatchScope.RUNNING)
public void refillOneWoolPerContainer() {
    if(!Config.Wool.autoRefillWoolChests()) return;

    for(Entry<Inventory, Map<Integer, ItemStack>> chest : this.woolChests.entrySet()) {
        Inventory inv = chest.getKey();
        for(Entry<Integer, ItemStack> slotEntry : chest.getValue().entrySet()) {
            int slot = slotEntry.getKey();
            ItemStack wool = slotEntry.getValue();
            ItemStack stack = inv.getItem(slotEntry.getKey());

            if(stack == null) {
                stack = wool.clone();
                stack.setAmount(1);
                inv.setItem(slot, stack);
                break;
            } else if(stack.isSimilar(wool) && stack.getAmount() < wool.getAmount()) {
                stack.setAmount(stack.getAmount() + 1);
                inv.setItem(slot, stack);
                break;
            }
        }
    }
}
 
源代码8 项目: TabooLib   文件: Items.java
public static ItemStack fromJson(String item) {
    JsonElement json = new JsonParser().parse(item);
    if (json instanceof JsonObject) {
        ItemBuilder itemBuilder = new ItemBuilder(Material.STONE);
        JsonElement type = ((JsonObject) json).get("type");
        if (type != null) {
            itemBuilder.material(Items.asMaterial(type.getAsString()));
        }
        JsonElement data = ((JsonObject) json).get("data");
        if (data != null) {
            itemBuilder.damage(data.getAsInt());
        }
        JsonElement amount = ((JsonObject) json).get("amount");
        if (amount != null) {
            itemBuilder.amount(amount.getAsInt());
        }
        ItemStack itemBuild = itemBuilder.build();
        JsonElement meta = ((JsonObject) json).get("meta");
        if (meta != null) {
            return NMS.handle().saveNBT(itemBuild, NBTCompound.fromJson(meta.toString()));
        }
        return itemBuild;
    }
    return null;
}
 
源代码9 项目: RedProtect   文件: Region.java
public boolean denyEnterWithItens(Player p) {
    if (!flagExists("deny-enter-items")) {
        return true;
    }
    if (checkAllowedPlayer(p, "deny-enter-items")) {
        return true;
    }

    List<String> items = Arrays.asList(getFlagString("deny-enter-items").replace(" ", "").split(","));
    for (ItemStack slot : p.getInventory().getContents()) {
        if (slot == null || slot.getType().equals(Material.AIR)) {
            continue;
        }

        if (items.stream().anyMatch(k -> k.equalsIgnoreCase(slot.getType().name()))) {
            return false;
        }
    }
    return true;
}
 
源代码10 项目: civcraft   文件: UnitMaterial.java
public static boolean validateUnitUse(Player player, ItemStack stack) {
	if (stack == null) {
		return true;
	}
	
	Resident resident = CivGlobal.getResident(player);
	Town town = getOwningTown(stack);
	
	
	if (town == null) {
		return true;
	}
	
	if (town.getCiv() != resident.getCiv()) {
		return false;
	}
	
	return true;
}
 
源代码11 项目: ProRecipes   文件: RecipeChest.java
public String getId(ItemStack[][] i){
	String k = "";
	String[][] b = new String[i.length][i[0].length];
	for(int t = 0; t < i.length; t++){
		for(int z = 0; z <i[t].length; z++){
			if(i.length < t || i[t].length < z){
				continue;
			}
			if(i[t][z] == null){
				b[t][z] = ProRecipes.airString;
				continue;
			}
			if(i[t][z].getType().equals(Material.AIR)){
				i[t][z] = new ItemStack(Material.AIR);
			}
			b[t][z] = ItemUtils.itemToStringBlob(i[t][z]);
		}
	}
	k = Arrays.deepToString(convertToMinimizedStructure(b, ProRecipes.airString));
	return k;
}
 
源代码12 项目: Thermos   文件: CraftShapedRecipe.java
public void addToCraftingManager() {
    Object[] data;
    String[] shape = this.getShape();
    Map<Character, ItemStack> ingred = this.getIngredientMap();
    int datalen = shape.length;
    datalen += ingred.size() * 2;
    int i = 0;
    data = new Object[datalen];
    for (; i < shape.length; i++) {
        data[i] = shape[i];
    }
    for (char c : ingred.keySet()) {
        ItemStack mdata = ingred.get(c);
        if (mdata == null) continue;
        data[i] = c;
        i++;
        int id = mdata.getTypeId();
        short dmg = mdata.getDurability();
        data[i] = new net.minecraft.item.ItemStack(CraftMagicNumbers.getItem(id), 1, dmg);
        i++;
    }
    net.minecraft.item.crafting.CraftingManager.getInstance().addRecipe(CraftItemStack.asNMSCopy(this.getResult()), data);
}
 
源代码13 项目: Skript   文件: AliasesProvider.java
/**
 * Applies given tags to an item stack.
 * @param stack Item stack.
 * @param tags Tags.
 * @return Additional flags for the item.
 */
public int applyTags(ItemStack stack, Map<String, Object> tags) {
	// Hack damage tag into item
	Object damage = tags.get("Damage");
	int flags = 0;
	if (damage instanceof Number) { // Use helper for version compatibility
		ItemUtils.setDamage(stack, ((Number) damage).shortValue());
		tags.remove("Damage");
		flags |= ItemFlags.CHANGED_DURABILITY;
	}
	
	if (tags.isEmpty()) // No real tags to apply
		return flags;
	
	// Apply random tags using JSON
	String json = gson.toJson(tags);
	assert json != null;
	BukkitUnsafe.modifyItemStack(stack, json);
	flags |= ItemFlags.CHANGED_TAGS;
	
	return flags;
}
 
源代码14 项目: MineTinker   文件: Soulbound.java
/**
 * Effect if a player drops an item
 *
 * @param event the event
 */
@EventHandler(ignoreCancelled = true)
public void effect(PlayerDropItemEvent event) {
	Item item = event.getItemDrop();
	ItemStack tool = item.getItemStack();

	if (!(modManager.isArmorViable(tool) || modManager.isToolViable(tool) || modManager.isWandViable(tool))) {
		return;
	}

	if (!modManager.hasMod(tool, this)) {
		return;
	}

	if (toolDroppable) {
		return;
	}

	ChatWriter.logModifier(event.getPlayer(), event, this, tool, "Tool not droppable");

	event.setCancelled(true);
}
 
源代码15 项目: uSkyBlock   文件: Challenge.java
public Challenge(String name, String displayName, String description, Type type, List<String> requiredItems,
                 List<EntityMatch> requiredEntities, List<String> requiredChallenges, double requiredLevel, Rank rank, int resetInHours,
                 ItemStack displayItem, String tool, ItemStack lockedItem, int offset, boolean takeItems,
                 int radius, Reward reward, Reward repeatReward, int repeatLimit) {
    this.name = name;
    this.displayName = displayName;
    this.type = type;
    this.requiredItems = requiredItems;
    this.requiredEntities = requiredEntities;
    this.requiredChallenges = requiredChallenges;
    this.requiredLevel = requiredLevel;
    this.rank = rank;
    this.resetInHours = resetInHours;
    this.displayItem = displayItem;
    this.tool = tool;
    this.lockedItem = lockedItem;
    this.offset = offset;
    this.takeItems = takeItems;
    this.radius = radius;
    this.reward = reward;
    this.repeatReward = repeatReward;
    this.description = description;
    this.repeatLimit = repeatLimit;
}
 
源代码16 项目: Skript   文件: ItemType.java
public boolean isContainedIn(Iterable<ItemStack> items) {
	int amount = getAmount();
	for (final ItemData d : types) {
		int found = 0;
		for (final ItemStack i : items) {
			if (d.isOfType(i)) {
				found += i == null ? 1 : i.getAmount();
				if (found >= amount) {
					if (!all)
						return true;
					break;
				}
			}
		}
		if (all && found < amount)
			return false;
	}
	return all;
}
 
源代码17 项目: UhcCore   文件: CraftsManager.java
@Nullable
public static Craft getCraft(ItemStack result) {
	if(result.hasItemMeta() && result.getItemMeta().hasDisplayName()){
		String displayName = result.getItemMeta().getDisplayName();
		for(Craft craft : getCrafts()){
			if(displayName.equals(craft.getCraft().getItemMeta().getDisplayName())){
				return craft;
			}
		}
	}
	return null;
}
 
源代码18 项目: BedWars   文件: RescuePlatformListener.java
@EventHandler
public void onRescuePlatformRegistered(BedwarsApplyPropertyToBoughtItem event) {
    if (event.getPropertyName().equalsIgnoreCase("rescueplatform")) {
        ItemStack stack = event.getStack();
        APIUtils.hashIntoInvisibleString(stack, applyProperty(event));
    }
}
 
源代码19 项目: HeavySpleef   文件: FlagShovels.java
private ItemStack createShovel() {
	ItemStack shovelStack = new ItemStack(Material.DIAMOND_SPADE);
	
	ItemMeta meta = shovelStack.getItemMeta();
	meta.setDisplayName(getI18N().getString(Messages.Player.SHOVEL));
	String lore = getI18N().getString(Messages.Player.SHOVEL_LORE);
	if (!lore.isEmpty()) {
		meta.setLore(Lists.newArrayList(lore.split("\n")));
	}
	
	shovelStack.setItemMeta(meta);
	return shovelStack;
}
 
源代码20 项目: Kettle   文件: CraftInventory.java
public void remove(int materialId) {
    ItemStack[] items = getStorageContents();
    for (int i = 0; i < items.length; i++) {
        if (items[i] != null && items[i].getTypeId() == materialId) {
            clear(i);
        }
    }
}
 
源代码21 项目: 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;
}
 
源代码22 项目: BedWars   文件: Game.java
public void addChestForFutureClear(Location loc, Inventory inventory) {
    if (!usedChests.containsKey(loc)) {
        ItemStack[] contents = inventory.getContents();
        ItemStack[] clone = new ItemStack[contents.length];
        for (int i = 0; i < contents.length; i++) {
            ItemStack stack = contents[i];
            if (stack != null)
                clone[i] = stack.clone();
        }
        usedChests.put(loc, clone);
    }
}
 
源代码23 项目: DungeonsXL   文件: RewardListener.java
@EventHandler
public void onPlayerMove(PlayerMoveEvent event) {
    Player player = event.getPlayer();
    if (DPlayerListener.isCitizensNPC(player)) {
        return;
    }
    GlobalPlayer dPlayer = plugin.getPlayerCache().get(player);
    if (plugin.getInstanceWorld(player.getWorld()) != null) {
        return;
    }
    Block block = player.getLocation().getBlock();
    if (dPlayer.hasRewardItemsLeft() && !VanillaItem.NETHER_PORTAL.is(block.getRelative(0, 1, 0)) && !VanillaItem.NETHER_PORTAL.is(block.getRelative(0, -1, 0))
            && !VanillaItem.NETHER_PORTAL.is(block.getRelative(1, 0, 0)) && !VanillaItem.NETHER_PORTAL.is(block.getRelative(-1, 0, 0))
            && !VanillaItem.NETHER_PORTAL.is(block.getRelative(0, 0, 1)) && !VanillaItem.NETHER_PORTAL.is(block.getRelative(0, 0, -1))) {
        PaginatedInventoryGUI lootInventory = new PaginatedInventoryGUI(DMessage.PLAYER_TREASURES.getMessage());
        PaginatedFlowInventoryLayout layout = new PaginatedFlowInventoryLayout(lootInventory, 54, PaginationButtonPosition.BOTTOM);
        layout.setSwitchButtonLinePlaceholdersEnabled(true);
        lootInventory.setLayout(layout);
        lootInventory.register();
        for (ItemStack item : dPlayer.getRewardItems()) {
            if (item != null) {
                InventoryButton button = new InventoryButton(item);
                button.setStealable(true);
                lootInventory.add(button);
            }
        }
        lootInventory.open(player);
        dPlayer.setRewardItems(null);
    }
}
 
源代码24 项目: ProjectAres   文件: ToolRepairMatchModule.java
private void doRepair(PlayerPickupItemEvent event, ItemStack stack) {
    ItemStack pickup = event.getItem().getItemStack();

    int hitsLeft = pickup.getType().getMaxDurability() - pickup.getDurability() + 1;
    stack.setDurability((short) Math.max(stack.getDurability() - hitsLeft, 0));

    event.setCancelled(true);
    event.getItem().remove();
    event.getPlayer().playSound(event.getPlayer().getLocation(), Sound.ENTITY_ITEM_PICKUP, 0.5f, 1f);
}
 
源代码25 项目: Thermos   文件: CraftItemStack.java
static boolean makeTag(net.minecraft.item.ItemStack item) {
    if (item == null) {
        return false;
    }

    if (item.stackTagCompound == null) {
        item.setTagCompound(new net.minecraft.nbt.NBTTagCompound());
    }

    return true;
}
 
源代码26 项目: Crazy-Crates   文件: Prize.java
/**
 * @return Returns the display item that is shown for the preview and the winning prize.
 */
public ItemStack getDisplayItem() {
    if (displayItemStack == null) {
        displayItemStack = displayItem.build();
        NBTItem nbt = new NBTItem(displayItemStack);
        nbt.setString("crazycrate-prize", name);
        displayItemStack = nbt.getItem();
    }
    return displayItemStack.clone();
}
 
源代码27 项目: GiantTrees   文件: ItemCost.java
private void dropExcess(Player player, int nToDrop) {
    while (nToDrop > 0) {
        ItemStack stack = new ItemStack(getMaterial(), Math.min(nToDrop, getMaterial().getMaxStackSize()), getData());
        player.getWorld().dropItemNaturally(player.getLocation(), stack);
        nToDrop -= getMaterial().getMaxStackSize();
    }
}
 
源代码28 项目: DungeonsXL   文件: Announcer.java
/**
 * @param button the button
 * @return the matching DGroup
 */
public DGroup getDGroupByButton(ItemStack button) {
    int index = buttons.indexOf(button);
    if (dGroups.size() <= index || index < 0) {
        return null;
    } else {
        return dGroups.get(index);
    }
}
 
源代码29 项目: NyaaUtils   文件: SignEditCommands.java
@SubCommand(value = "sign", permission = "nu.se.player")
public void commandSign(CommandSender sender, Arguments args) {
    Player player = asPlayer(sender);
    ItemStack item = getItemInHand(sender).clone();
    if (!SignEditListener.isSign(item.getType())) {
        msg(sender, "user.signedit.need_sign");
        return;
    }
    if (args.length() == 4) {
        int line = args.nextInt();
        String text = args.nextString();
        checkFormatCodes(text);
        text = ChatColor.translateAlternateColorCodes('&', text);
        if (ChatColor.stripColor(text).length() > plugin.cfg.signedit_max_length) {
            throw new BadCommandException("user.signedit.too_long", plugin.cfg.signedit_max_length);
        }
        if (line >= 0 && line < 4) {
            SignContent signContent = SignContent.fromItemStack(item);
            if ("CLEAR".equalsIgnoreCase(text)) {
                text = "";
            }
            signContent.setLine(line, text);
            printSignContent(player, signContent);
            player.getInventory().setItemInMainHand(signContent.toItemStack(item));
        } else {
            msg(sender, "user.signedit.invalid_line");
        }
    } else {
        printSignContent(player, SignContent.fromItemStack(item));
    }
}
 
源代码30 项目: SonarPet   文件: AbstractEntityZombiePet.java
@Override
public void initiateEntityPet() {
    super.initiateEntityPet();
    new BukkitRunnable() {
        @Override
        public void run() {
            //noinspection deprecation - 1.8.8 compatibility
            getBukkitEntity().getEquipment().setItemInHand(new ItemStack(getInitialItemInHand()));
        }
    }.runTaskLater(EchoPet.getPlugin(), 5L);
}
 
 类所在包
 同包方法