private void giveItem(CommandSender sender, Player player, ItemStack stack, ResourceBundle resourceBundle) { player.getInventory().addItem(stack); new LocalizedStringImpl("give.done", resourceBundle) .send(sender, ItemIds.getName(stack.getType()), stack.getAmount(), player.getName()); }
@Override public ItemStack getResult(ItemStack[] matrix) { ItemStack original = null; int copies = 0; for (ItemStack item : matrix) { if (item == null) { continue; } switch (item.getType()) { case WRITTEN_BOOK: if (original != null) { return null; // Only one original allowed } original = item; break; case BOOK_AND_QUILL: copies += 1; break; default: return null; // Wrong item in matrix } } if (original == null || copies == 0) { return null; } ItemStack ret = new ItemStack(Material.WRITTEN_BOOK, copies); ret.setItemMeta(original.getItemMeta()); return ret; }
protected ItemStack dispenseStack(GlowBlock block, ItemStack stack) { BlockFace facing = BlockDispenser.getFacing(block); Vector dispensePosition = BlockDispenser.getDispensePosition(block); ItemStack items = new ItemStack(stack.getType(), 1); stack.setAmount(stack.getAmount() - 1); doDispense(block, items, 6, facing, dispensePosition); return stack.getAmount() > 0 ? stack : null; }
private boolean compareItems(ItemStack a, ItemStack b, boolean ignoreMeta) { if (ignoreMeta) { return a.getTypeId() == b.getTypeId() && a.getDurability() == b.getDurability(); } return a.isSimilar(b); }
/** * Creates a new item stack derived from the specified stack * * @param stack the stack to copy * @throws IllegalArgumentException if the specified stack is null or * returns an item meta not created by the item factory */ public ItemStack(final ItemStack stack) throws IllegalArgumentException { Validate.notNull(stack, "Cannot copy null stack"); this.type = stack.getTypeId(); this.amount = stack.getAmount(); this.durability = stack.getDurability(); this.data = stack.getData(); if (stack.hasItemMeta()) { setItemMeta0(stack.getItemMeta(), getType0()); } }
private boolean matchesWildcard(ItemStack expected, ItemStack actual) { return actual != null && expected.getType() == actual.getType() && ( isWildcard(expected.getDurability()) || expected.getDurability() == actual .getDurability()); }
public void addGameStartItem() { ItemStack startGame = new ItemStack(Material.DIAMOND, 1); ItemMeta im = startGame.getItemMeta(); im.setDisplayName(BedwarsRel._l(player, "lobby.startgame")); startGame.setItemMeta(im); this.player.getInventory().addItem(startGame); }
@EventHandler(ignoreCancelled = true) public void onPlayerBucketFill(PlayerBucketFillEvent event) { Player player = event.getPlayer(); Block blockAffected = event.getBlockClicked().getRelative(event.getBlockFace()); boolean allowed = false; // Milk buckets can't be emptied as of writing if (event.getItemStack().getType() == Material.MILK_BUCKET) { allowed = true; } ItemStack item = new ItemStack(event.getBucket(), 1); Events.fireToCancel(event, new BreakBlockEvent(event, create(player), blockAffected).setAllowed(allowed)); Events.fireToCancel(event, new UseItemEvent(event, create(player), player.getWorld(), item).setAllowed(allowed)); if (event.isCancelled()) { playDenyEffect(event.getPlayer(), blockAffected.getLocation().add(0.5, 0.5, 0.5)); } }
@Override public boolean onRightClick(ItemUseEvent e, Player p, ItemStack item) { if (SlimefunManager.isItemSimiliar(item, SlimefunItems.STAFF_WIND, true)) { if (p.getFoodLevel() >= 2) { if (p.getInventory().getItemInMainHand().getType() != Material.SHEARS && p.getGameMode() != GameMode.CREATIVE) { FoodLevelChangeEvent event = new FoodLevelChangeEvent(p, p.getFoodLevel() - 2); Bukkit.getPluginManager().callEvent(event); p.setFoodLevel(event.getFoodLevel()); } p.setVelocity(p.getEyeLocation().getDirection().multiply(4)); p.getWorld().playSound(p.getLocation(), Sound.ENTITY_TNT_PRIMED, 1, 1); p.getWorld().playEffect(p.getLocation(), Effect.SMOKE, 1); p.setFallDistance(0.0f); } else { Messages.local.sendTranslation(p, "messages.hungry", true); } return true; } else return false; } });
@EventHandler public void onPlayerInteract(PlayerInteractEvent event) { if (event.getHand() == null || event.getHand().equals(EquipmentSlot.OFF_HAND)) { return; } Player p = event.getPlayer(); ItemStack inhand = p.getInventory().getItemInMainHand(); if (event.getAction().equals(Action.RIGHT_CLICK_AIR) && inhand.getType().equals(Material.CLOCK) && p.hasPermission("tardis.temporal")) { if (inhand.hasItemMeta() && inhand.getItemMeta().hasDisplayName() && notthese.contains(inhand.getItemMeta().getDisplayName())) { return; } p.resetPlayerTime(); plugin.getTrackerKeeper().getSetTime().remove(p.getUniqueId()); TARDISMessage.send(p, "TEMPORAL_RESET"); } } }
@EventHandler(priority = EventPriority.HIGHEST) public void onWorldChange(PlayerChangedWorldEvent e){ Player p = e.getPlayer(); World w = p.getWorld(); if(!isEnabled(w)) return; PlayerInventory inv = p.getInventory(); ItemStack chestplate = inv.getChestplate(); if(chestplate == null || chestplate.getType() != Material.ELYTRA) return; inv.setChestplate(new ItemStack(Material.AIR)); if(inv.firstEmpty() != -1) inv.addItem(chestplate); else w.dropItem(p.getLocation(), chestplate); } }
@EventHandler(priority = EventPriority.LOW, ignoreCancelled = true) public void onTropicalFishScooping(final PlayerInteractEntityEvent e) { if (e.getRightClicked() instanceof TropicalFish && e.getPlayer().getInventory().getItemInMainHand().getType().equals(Material.WATER_BUCKET)) { checkIsland(e, e.getRightClicked().getLocation(), Flags.FISH_SCOOPING); } } }
@EventHandler public void onFillAcidBucket(PlayerBucketFillEvent event) { Player p = event.getPlayer(); if (!p.getWorld().getName().equals("Skaro")) { return; } Material type = event.getBlockClicked().getType(); ItemStack bucket = event.getItemStack(); ItemMeta im = bucket.getItemMeta(); if (type.equals(Material.WATER)) { im.setDisplayName("Acid Bucket"); } if (type.equals(Material.LAVA)) { im.setDisplayName("Rust Bucket"); } bucket.setItemMeta(im); p.updateInventory(); } }
@EventHandler public void onPlace(BlockPlaceEvent e) { if (ProtectionSystem.build(e.getPlayer(), e.getBlock().getLocation(), true)) { if (config.buggedBlocks && !config.buggedBlocksExclude.contains(e.getBlock().getType())) { ItemStack returnItem = e.getItemInHand().clone(); returnItem.setAmount(1); Bukkit.getScheduler().runTaskLater(FunnyGuilds.getInstance(), () -> { e.getBlockReplacedState().update(true); if (config.buggedBlockReturn) { e.getPlayer().getInventory().addItem(returnItem); } }, config.buggedBlocksTimer); return; } e.setCancelled(true); } }
@Override public boolean onBlockBreak(BlockBreakEvent e, ItemStack item, int fortune, List<ItemStack> drops) { if (SlimefunManager.isItemSimiliar(e.getPlayer().getInventory().getItemInMainHand(), SlimefunItems.PICKAXE_OF_CONTAINMENT, true)) { if (e.getBlock().getType() != Material.SPAWNER) return true; ItemStack spawner = SlimefunItems.BROKEN_SPAWNER.clone(); ItemMeta im = spawner.getItemMeta(); List<String> lore = im.getLore(); for (int i = 0; i < lore.size(); i++) { if (lore.get(i).contains("<Type>")) lore.set(i, lore.get(i).replace("<Type>", StringUtils.format(((CreatureSpawner) e.getBlock().getState()).getSpawnedType().toString()))); } im.setLore(lore); spawner.setItemMeta(im); e.getBlock().getLocation().getWorld().dropItemNaturally(e.getBlock().getLocation(), spawner); e.setExpToDrop(0); return true; } else return false; } });
@EventHandler(ignoreCancelled = true) public void onTelepathicCircuitPlace(BlockPlaceEvent event) { ItemStack is = event.getItemInHand(); if (!is.getType().equals(Material.DAYLIGHT_DETECTOR) || !is.hasItemMeta()) { return; } ItemMeta im = is.getItemMeta(); if (im.hasDisplayName() && im.getDisplayName().equals("TARDIS Telepathic Circuit")) { UUID uuid = event.getPlayer().getUniqueId(); String l = event.getBlock().getLocation().toString(); plugin.getTrackerKeeper().getTelepathicPlacements().put(uuid, l); } } }
Player player = Bukkit.getPlayerExact(args[0]); Material material = Material.matchMaterial(args[1]); material = Bukkit.getUnsafe().getMaterialFromInternalName(args[1]); ItemStack stack = new ItemStack(material, amount, data); stack = Bukkit.getUnsafe().modifyItemStack(stack, Joiner.on(' ').join(Arrays.asList(args).subList(4, args.length))); } catch (Throwable t) { player.sendMessage("Not a valid tag"); return true; player.getInventory().addItem(stack); Command.broadcastCommandMessage(sender, "Gave " + player.getName() + " some " + material.getId() + " (" + material + ")"); } else { sender.sendMessage("There's no item called " + args[1]);
@Override public boolean onBlockBreak(BlockBreakEvent e, ItemStack item, int fortune, List<ItemStack> drops) { if (SlimefunManager.isItemSimiliar(e.getPlayer().getInventory().getItemInMainHand(), SlimefunItems.PICKAXE_OF_VEIN_MINING, true)) { if (e.getBlock().getType().toString().endsWith("_ORE")) { List<Location> blocks = new ArrayList<Location>(); Vein.calculate(e.getBlock().getLocation(), e.getBlock().getLocation(), blocks, 16); for (Location block: blocks) { Block b = block.getBlock(); b.getWorld().playEffect(b.getLocation(), Effect.STEP_SOUND, b.getType()); for (ItemStack drop: b.getDrops()) { b.getWorld().dropItemNaturally(b.getLocation(), drop.getType().isBlock() ? drop: new CustomItem(drop, fortune)); } b.setType(Material.AIR); } } return true; } else return false; } });
private boolean clearAll(CommandSender sender, Player player, Material material, int data, int maxCount, ResourceBundle resourceBundle) { int count = countAllItems(player.getInventory(), material, data, maxCount); if (maxCount == 0) { new LocalizedStringImpl("clear.count", resourceBundle).send( sender, player.getName(), count); return true; sender, player.getName()); return false; player.getInventory().clear(); } else { int remaining = maxCount; for (ItemStack stack : player.getInventory().getContents()) { if (stack.getType() == material && (data == -1 || data == stack.getData() .getData())) { player.getInventory().remove(stack); } else { int oldAmount = stack.getAmount(); int removed = Math.min(oldAmount, remaining); stack.setAmount(oldAmount - removed); remaining -= removed;
@EventHandler(priority = EventPriority.HIGH) public void onItemHeldChange(PlayerItemHeldEvent event) { Player player = event.getPlayer(); ConfigurationManager cfg = WorldGuard.getInstance().getPlatform().getGlobalStateManager(); WorldConfiguration wcfg = cfg.get(BukkitAdapter.adapt(player.getWorld())); if (wcfg.removeInfiniteStacks && !plugin.hasPermission(player, "worldguard.override.infinite-stack")) { int newSlot = event.getNewSlot(); ItemStack heldItem = player.getInventory().getItem(newSlot); if (heldItem != null && heldItem.getAmount() < 0) { player.getInventory().setItem(newSlot, null); player.sendMessage(ChatColor.RED + "Infinite stack removed."); } } }