Search in sources :

Example 31 with ListTag

use of com.denizenscript.denizencore.objects.core.ListTag in project Denizen-For-Bukkit by DenizenScript.

the class ItemAttributeNBT method getList.

public ListTag getList() {
    ItemStack itemStack = item.getItemStack();
    List<CustomNBT.AttributeReturn> nbtKeys = CustomNBT.getAttributes(itemStack);
    ListTag list = new ListTag();
    if (nbtKeys != null) {
        for (CustomNBT.AttributeReturn atr : nbtKeys) {
            list.add(EscapeTagBase.escape(atr.attr) + "/" + EscapeTagBase.escape(atr.slot) + "/" + atr.op + "/" + atr.amt);
        }
    }
    return list;
}
Also used : ItemStack(org.bukkit.inventory.ItemStack) ListTag(com.denizenscript.denizencore.objects.core.ListTag) CustomNBT(com.denizenscript.denizen.utilities.nbt.CustomNBT)

Example 32 with ListTag

use of com.denizenscript.denizencore.objects.core.ListTag in project Denizen-For-Bukkit by DenizenScript.

the class ItemAttributeNBT method adjust.

@Override
public void adjust(Mechanism mechanism) {
    if (mechanism.matches("nbt_attributes")) {
        Deprecations.legacyAttributeProperties.warn(mechanism.context);
        if (item.getMaterial().getMaterial() == Material.AIR) {
            mechanism.echoError("Cannot apply NBT to AIR!");
            return;
        }
        ListTag list = mechanism.valueAsType(ListTag.class);
        ItemStack itemStack = item.getItemStack();
        itemStack = CustomNBT.clearNBT(itemStack, CustomNBT.KEY_ATTRIBUTES);
        for (String string : list) {
            String[] split = string.split("/");
            if (split.length != 4) {
                mechanism.echoError("Invalid nbt_attributes input: must have 4 values per attribute.");
                continue;
            }
            String attribute = EscapeTagBase.unEscape(split[0]);
            String slot = EscapeTagBase.unEscape(split[1]);
            int op = new ElementTag(split[2]).asInt();
            double amt = new ElementTag(split[3]).asDouble();
            itemStack = CustomNBT.addAttribute(itemStack, attribute, slot, op, amt);
        }
        item.setItemStack(itemStack);
    }
}
Also used : ElementTag(com.denizenscript.denizencore.objects.core.ElementTag) ItemStack(org.bukkit.inventory.ItemStack) ListTag(com.denizenscript.denizencore.objects.core.ListTag)

Example 33 with ListTag

use of com.denizenscript.denizencore.objects.core.ListTag in project Denizen-For-Bukkit by DenizenScript.

the class ItemCanPlaceOn method getMaterials.

private ListTag getMaterials() {
    ItemStack itemStack = item.getItemStack();
    List<Material> materials = CustomNBT.getNBTMaterials(itemStack, CustomNBT.KEY_CAN_PLACE_ON);
    if (materials != null && !materials.isEmpty()) {
        ListTag list = new ListTag();
        for (Material material : materials) {
            list.addObject(new MaterialTag(material));
        }
        return list;
    }
    return null;
}
Also used : MaterialTag(com.denizenscript.denizen.objects.MaterialTag) Material(org.bukkit.Material) ItemStack(org.bukkit.inventory.ItemStack) ListTag(com.denizenscript.denizencore.objects.core.ListTag)

Example 34 with ListTag

use of com.denizenscript.denizencore.objects.core.ListTag in project Denizen-For-Bukkit by DenizenScript.

the class ItemEnchantments method getObjectAttribute.

@Override
public ObjectTag getObjectAttribute(Attribute attribute) {
    if (attribute == null) {
        return null;
    }
    // -->
    if (attribute.startsWith("is_enchanted")) {
        return new ElementTag(getEnchantments().size() > 0).getObjectAttribute(attribute.fulfill(1));
    }
    if (attribute.startsWith("enchantments.with_levels")) {
        Deprecations.itemEnchantmentTags.warn(attribute.context);
        Set<Map.Entry<Enchantment, Integer>> enchantments = getEnchantments();
        ListTag enchants = new ListTag();
        for (Map.Entry<Enchantment, Integer> enchantment : enchantments) {
            enchants.add(new EnchantmentTag(enchantment.getKey()).getCleanName() + "," + enchantment.getValue());
        }
        return enchants.getObjectAttribute(attribute.fulfill(2));
    }
    if (attribute.startsWith("enchantments.levels")) {
        Deprecations.itemEnchantmentTags.warn(attribute.context);
        Set<Map.Entry<Enchantment, Integer>> enchantments = getEnchantments();
        ListTag enchants = new ListTag();
        for (Map.Entry<Enchantment, Integer> enchantment : enchantments) {
            enchants.add(String.valueOf(enchantment.getValue()));
        }
        return enchants.getObjectAttribute(attribute.fulfill(2));
    }
    if (attribute.startsWith("enchantments.level") && attribute.hasContext(2)) {
        Deprecations.itemEnchantmentTags.warn(attribute.context);
        Set<Map.Entry<Enchantment, Integer>> enchantments = getEnchantments();
        if (enchantments.size() > 0) {
            for (Map.Entry<Enchantment, Integer> enchantment : enchantments) {
                if (enchantment.getKey().getName().equalsIgnoreCase(attribute.getContext(2)) || new EnchantmentTag(enchantment.getKey()).getCleanName().equalsIgnoreCase(attribute.getContext(2))) {
                    return new ElementTag(enchantment.getValue()).getObjectAttribute(attribute.fulfill(2));
                }
            }
        }
        return new ElementTag(0).getObjectAttribute(attribute.fulfill(2));
    }
    // -->
    if (attribute.startsWith("enchantment_types")) {
        Set<Map.Entry<Enchantment, Integer>> enchantments = getEnchantments();
        ListTag enchants = new ListTag();
        for (Map.Entry<Enchantment, Integer> enchantment : enchantments) {
            enchants.addObject(new EnchantmentTag(enchantment.getKey()));
        }
        return enchants.getObjectAttribute(attribute.fulfill(1));
    }
    // -->
    if (attribute.startsWith("enchantments")) {
        Deprecations.itemEnchantmentsLegacy.warn(attribute.context);
        Set<Map.Entry<Enchantment, Integer>> enchantments = getEnchantments();
        ListTag enchants = new ListTag();
        for (Map.Entry<Enchantment, Integer> enchantment : enchantments) {
            enchants.add(new EnchantmentTag(enchantment.getKey()).getCleanName());
        }
        return enchants.getObjectAttribute(attribute.fulfill(1));
    }
    // -->
    if (attribute.startsWith("enchantment_map")) {
        return getEnchantmentMap().getObjectAttribute(attribute.fulfill(1));
    }
    return null;
}
Also used : ElementTag(com.denizenscript.denizencore.objects.core.ElementTag) EnchantmentTag(com.denizenscript.denizen.objects.EnchantmentTag) Enchantment(org.bukkit.enchantments.Enchantment) ListTag(com.denizenscript.denizencore.objects.core.ListTag)

Example 35 with ListTag

use of com.denizenscript.denizencore.objects.core.ListTag in project Denizen-For-Bukkit by DenizenScript.

the class ItemHidden method adjust.

@Override
public void adjust(Mechanism mechanism) {
    // -->
    if (mechanism.matches("flags") || mechanism.matches("hides")) {
        if (mechanism.matches("flags")) {
            Deprecations.itemFlagsProperty.warn(mechanism.context);
        }
        ItemMeta meta = item.getItemMeta();
        meta.removeItemFlags(ItemFlag.values());
        ListTag new_hides = mechanism.valueAsType(ListTag.class);
        for (String str : new_hides) {
            str = str.toUpperCase();
            if (!str.startsWith("HIDE_")) {
                str = "HIDE_" + str;
            }
            if (str.equals("HIDE_ALL")) {
                meta.addItemFlags(ItemFlag.values());
            } else if (str.equals("HIDE_ITEM_DATA")) {
                meta.addItemFlags(ItemFlag.HIDE_POTION_EFFECTS);
            } else {
                meta.addItemFlags(ItemFlag.valueOf(str));
            }
        }
        item.setItemMeta(meta);
    }
}
Also used : ListTag(com.denizenscript.denizencore.objects.core.ListTag) ItemMeta(org.bukkit.inventory.meta.ItemMeta)

Aggregations

ListTag (com.denizenscript.denizencore.objects.core.ListTag)122 ElementTag (com.denizenscript.denizencore.objects.core.ElementTag)71 MapTag (com.denizenscript.denizencore.objects.core.MapTag)21 ItemStack (org.bukkit.inventory.ItemStack)18 EntityTag (com.denizenscript.denizen.objects.EntityTag)16 ObjectTag (com.denizenscript.denizencore.objects.ObjectTag)14 List (java.util.List)14 ItemTag (com.denizenscript.denizen.objects.ItemTag)13 PlayerTag (com.denizenscript.denizen.objects.PlayerTag)13 Player (org.bukkit.entity.Player)13 DurationTag (com.denizenscript.denizencore.objects.core.DurationTag)12 LocationTag (com.denizenscript.denizen.objects.LocationTag)11 NPCTag (com.denizenscript.denizen.objects.NPCTag)9 InvalidArgumentsException (com.denizenscript.denizencore.exceptions.InvalidArgumentsException)9 ArrayList (java.util.ArrayList)9 ScriptTag (com.denizenscript.denizencore.objects.core.ScriptTag)8 MaterialTag (com.denizenscript.denizen.objects.MaterialTag)7 ScriptEntry (com.denizenscript.denizencore.scripts.ScriptEntry)7 NPC (net.citizensnpcs.api.npc.NPC)7 Entity (org.bukkit.entity.Entity)7