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;
}
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);
}
}
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;
}
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;
}
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);
}
}
Aggregations