Examples of dInventory


Examples of net.aufdemrand.denizen.objects.dInventory

    static Pattern fromPattern = Pattern.compile("(\\[)(.*)(\\])");

    public dInventory getInventoryFrom(dPlayer player, dNPC npc) {

        dInventory inventory = null;

        try {
            if (contains("INVENTORY")) {
                if (InventoryType.valueOf(getString("INVENTORY").toUpperCase()) != null) {
                    inventory = new dInventory(InventoryType.valueOf(getString("INVENTORY").toUpperCase()));
                    inventory.setIdentifiers("script", getName());
                }
                else {
                    dB.echoError("Invalid inventory type specified. Assuming \"CHEST\"");
                }
            }
            if (contains("SIZE")) {
                if (inventory != null && !getInventoryType().name().equalsIgnoreCase("CHEST")) {
                    dB.echoError("You can only set the size of chest inventories!");
                }
                else {
                    int size = aH.getIntegerFrom(getString("SIZE"));

                    if (size == 0) {
                        size = 27;
                        dB.echoError("Inventory size can't be 0. Assuming default of 27...");
                    }
                    if (size % 9 != 0) {
                        size = (int) Math.ceil(size/9)*9;
                        dB.echoError("Inventory size must be a multiple of 9! Rounding up to " + size + "...");
                    }
                    if (size < 0) {
                        size = size*-1;
                        dB.echoError("Inventory size must be a positive number! Inverting to " + size + "...");
                    }

                    inventory = new dInventory(size,
                            contains("TITLE") ? TagManager.tag(player, npc, getString("TITLE")) : "Chest");
                    inventory.setIdentifiers("script", getName());
                }
            }
            if (contains("SLOTS")) {
                ItemStack[] finalItems = new ItemStack[getSize()];
                int itemsAdded = 0;
                for (String items : getStringList("SLOTS")) {
                    items = TagManager.tag(player, npc, items);
                    String[] itemsInLine = items.split(" ");
                    for (String item : itemsInLine) {
                        Matcher m = fromPattern.matcher(item);
                        if (!m.matches()) {
                            dB.echoError("Inventory script \"" + getName() + "\" has an invalid slot item.");
                            return null;
                        }
                        if (contains("DEFINITIONS." + m.group(2)) &&
                                dItem.matches(getString("DEFINITIONS." + m.group(2)))) {
                            finalItems[itemsAdded] = dItem.valueOf(TagManager.tag
                                    (player, npc, getString("DEFINITIONS." + m.group(2))))
                                        .getItemStack();
                        }
                        else if (dItem.matches(m.group(2))) {
                            finalItems[itemsAdded] = dItem.valueOf(TagManager.tag(player, npc, m.group(2)))
                                    .getItemStack();
                        }
                        else {
                            finalItems[itemsAdded] = new ItemStack(Material.AIR);
                            if (!m.group(2).trim().isEmpty()) {
                                dB.echoError("Inventory script \"" + getName() + "\" has an invalid slot item: ["
                                        + m.group(2) + "]... Ignoring it and assuming \"AIR\"");
                            }
                        }
                        itemsAdded++;
                    }
                }
                if (inventory == null) {
                    int size = finalItems.length%9==0?finalItems.length:Math.round(finalItems.length/9)*9;
                    inventory = new dInventory(size==0?9:size,
                            contains("TITLE") ? TagManager.tag(player, npc, getString("TITLE")) : "Chest");
                }
                inventory.setContents(finalItems);
            }
        }
        catch (Exception e) {
            dB.echoError("Woah! An exception has been called with this inventory script!");
            dB.echoError(e);
            inventory = null;
        }

        if (inventory != null)
            InventoryScriptHelper.tempInventoryScripts.put(inventory.getInventory(), getName());

        return inventory;

    }
View Full Code Here

Examples of net.aufdemrand.denizen.objects.dInventory

    @Override
    public void execute(ScriptEntry scriptEntry) throws CommandExecutionException {

        Element engrave = scriptEntry.getElement("engrave");
        Element unlimit_stack_size = scriptEntry.getElement("unlimit_stack_size");
        dInventory inventory = (dInventory) scriptEntry.getObject("inventory");
        Element qty = scriptEntry.getElement("qty");
        Type type = (Type) scriptEntry.getObject("type");
        Element slot = scriptEntry.getElement("slot");

        Object items_object = scriptEntry.getObject("items");
        List<dItem> items = null;

        if (items_object != null)
            items = (List<dItem>) items_object;

        dB.report(scriptEntry, getName(),
                aH.debugObj("Type", type.name())
                        + (inventory != null ? inventory.debug(): "")
                        + aH.debugObj("Quantity", qty.asDouble())
                        + engrave.debug()
                        + unlimit_stack_size.debug()
                        + (items != null ? aH.debugObj("Items", items) : "")
                        + slot.debug());

        switch (type) {

            case MONEY:
                if(Depends.economy != null)
                    Depends.economy.depositPlayer(((BukkitScriptEntryData)scriptEntry.entryData).getPlayer().getName(), qty.asDouble());
                else
                    dB.echoError("No economy loaded! Have you installed Vault and a compatible economy plugin?");
                break;

            case EXP:
                ((BukkitScriptEntryData)scriptEntry.entryData).getPlayer().getPlayerEntity().giveExp(qty.asInt());
                break;

            case ITEM:
                boolean set_quantity = scriptEntry.hasObject("set_quantity");
                boolean limited = !unlimit_stack_size.asBoolean();
                for (dItem item : items) {
                    ItemStack is = item.getItemStack();
                    if (is.getType() == Material.AIR) {
                        dB.echoError("Cannot give air!");
                        continue;
                    }
                    if (set_quantity)
                        is.setAmount(qty.asInt());
                    if (engrave.asBoolean()) is = CustomNBT.addCustomNBT(item.getItemStack(), "owner", ((BukkitScriptEntryData)scriptEntry.entryData).getPlayer().getName());

                    List<ItemStack> leftovers = inventory.addWithLeftovers(slot.asInt()-1, limited, is);

                    if (!leftovers.isEmpty()) {
                        dB.echoDebug (scriptEntry, "The inventory didn't have enough space, the rest of the items have been placed on the floor.");
                        for (ItemStack leftoverItem : leftovers)
                            inventory.getLocation().getWorld().dropItem(inventory.getLocation(), leftoverItem);
                    }
                }
                break;
        }
    }
View Full Code Here

Examples of net.aufdemrand.denizen.objects.dInventory

                    return;

                if (event.isShiftClick()) {
                    // Save the quantity of items of this type that the player had
                    // before the event took place
                    final int initialQty = new dInventory(player.getPlayerEntity().getInventory()).count(item, false);

                    // Run a task 1 tick later, after the event has occurred, and
                    // see how many items of this type the player has then in the
                    // inventory
                    Bukkit.getScheduler().scheduleSyncDelayedTask(DenizenAPI.getCurrentInstance(),
                    new Runnable() {
                        @Override
                        public void run() {
                            int newQty = new dInventory(player.getPlayerEntity().getInventory()).count(item, false);
                            int difference = newQty - initialQty;

                            // If any items were obtained (i.e. if shift click was
                            // used with the player's inventory not being full),
                            // increase the number of current items
View Full Code Here

Examples of net.aufdemrand.denizen.objects.dInventory

            return dInventory.valueOf(string);
        }
        else if (arg.matchesArgumentList(dItem.class)) {
            List<dItem> list = dList.valueOf(string).filter(dItem.class);
            ItemStack[] items = convertItems(list).toArray(new ItemStack[list.size()]);
            return new dInventory(dInventory.maxSlots).add(0, items);
        }
        else if (dLocation.matches(string)) {
            return dLocation.valueOf(string).getInventory();
        }
        else if (dEntity.matches(string)) {
View Full Code Here
TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.