diff --git a/plugin/src/main/java/com/denizenscript/denizen/objects/properties/PropertyRegistry.java b/plugin/src/main/java/com/denizenscript/denizen/objects/properties/PropertyRegistry.java index 0001252543..8e123588d5 100644 --- a/plugin/src/main/java/com/denizenscript/denizen/objects/properties/PropertyRegistry.java +++ b/plugin/src/main/java/com/denizenscript/denizen/objects/properties/PropertyRegistry.java @@ -124,6 +124,7 @@ public static void registerMainProperties() { PropertyParser.registerProperty(EntitySize.class, EntityTag.class); PropertyParser.registerProperty(EntitySpeed.class, EntityTag.class); PropertyParser.registerProperty(EntitySpell.class, EntityTag.class); + PropertyParser.registerProperty(EntityStrength.class, EntityTag.class); PropertyParser.registerProperty(EntityTame.class, EntityTag.class); PropertyParser.registerProperty(EntityTrades.class, EntityTag.class); PropertyParser.registerProperty(EntityVillagerExperience.class, EntityTag.class); diff --git a/plugin/src/main/java/com/denizenscript/denizen/objects/properties/entity/EntityStrength.java b/plugin/src/main/java/com/denizenscript/denizen/objects/properties/entity/EntityStrength.java new file mode 100644 index 0000000000..5cd6e8c6e5 --- /dev/null +++ b/plugin/src/main/java/com/denizenscript/denizen/objects/properties/entity/EntityStrength.java @@ -0,0 +1,83 @@ +package com.denizenscript.denizen.objects.properties.entity; + +import com.denizenscript.denizen.objects.EntityTag; +import com.denizenscript.denizencore.objects.Mechanism; +import com.denizenscript.denizencore.objects.ObjectTag; +import com.denizenscript.denizencore.objects.core.ElementTag; +import com.denizenscript.denizencore.objects.properties.Property; +import com.denizenscript.denizencore.objects.properties.PropertyParser; +import org.bukkit.entity.Llama; + +public class EntityStrength implements Property { + + public static boolean describes(ObjectTag entity) { + return entity instanceof EntityTag && ((EntityTag) entity).getBukkitEntity() instanceof Llama; + } + + public static EntityStrength getFrom(ObjectTag entity) { + if (!describes(entity)) { + return null; + } + else { + return new EntityStrength((EntityTag) entity); + } + } + + public static final String[] handledMechs = new String[] { + "strength" + }; + + private EntityStrength(EntityTag entity) { + this.entity = entity; + } + + EntityTag entity; + + public ElementTag getStrength() { + return new ElementTag(((Llama) entity.getBukkitEntity()).getStrength()); + } + + @Override + public String getPropertyString() { + return getStrength().asString(); + } + + @Override + public String getPropertyId() { + return "strength"; + } + + public static void registerTags() { + + // <--[tag] + // @attribute + // @returns ElementTag + // @mechanism EntityTag.strength + // @group properties + // @description + // Returns the strength of a Llama. A llama's inventory contains (strength times three) slots. + // Can be from 1 to 5 (inclusive). + // --> + PropertyParser.registerTag(ElementTag.class, "strength", (attribute, object) -> { + return object.getStrength(); + }); + } + + @Override + public void adjust(Mechanism mechanism) { + + // <--[mechanism] + // @object EntityTag + // @name strength + // @input ElementTag(Boolean) + // @description + // Sets the strength of a Llama. A llama's inventory contains (strength times three) slots. + // Can be from 1 to 5 (inclusive). + // @tags + // + // --> + if (mechanism.matches("strength") && mechanism.requireInteger()) { + ((Llama) entity.getBukkitEntity()).setStrength(mechanism.getValue().asInt()); + } + } +}