From 7b3edf78c6620c9142ff3cabb7e065e329e5cc8e Mon Sep 17 00:00:00 2001 From: hyper <39167664+heypr@users.noreply.github.com> Date: Tue, 14 Nov 2023 23:32:53 -0500 Subject: [PATCH] Implements the ``pierce_level`` property (#2561) * Implements the ``pierce_level`` property * Meta & if statement change. * Meta changes * Another meta change. * Update EntityArrowPierceLevel.java --- .../objects/properties/PropertyRegistry.java | 1 + .../entity/EntityArrowPierceLevel.java | 42 +++++++++++++++++++ 2 files changed, 43 insertions(+) create mode 100644 plugin/src/main/java/com/denizenscript/denizen/objects/properties/entity/EntityArrowPierceLevel.java 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 ba75cce27d..ecd5f2606c 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 @@ -36,6 +36,7 @@ public static void registerMainProperties() { PropertyParser.registerProperty(EntityAreaEffectCloud.class, EntityTag.class); PropertyParser.registerProperty(EntityArmorBonus.class, EntityTag.class); PropertyParser.registerProperty(EntityArrowDamage.class, EntityTag.class); + PropertyParser.registerProperty(EntityArrowPierceLevel.class, EntityTag.class); PropertyParser.registerProperty(EntityAttributeBaseValues.class, EntityTag.class); PropertyParser.registerProperty(EntityAttributeModifiers.class, EntityTag.class); PropertyParser.registerProperty(EntityArmorPose.class, EntityTag.class); diff --git a/plugin/src/main/java/com/denizenscript/denizen/objects/properties/entity/EntityArrowPierceLevel.java b/plugin/src/main/java/com/denizenscript/denizen/objects/properties/entity/EntityArrowPierceLevel.java new file mode 100644 index 0000000000..e15a407026 --- /dev/null +++ b/plugin/src/main/java/com/denizenscript/denizen/objects/properties/entity/EntityArrowPierceLevel.java @@ -0,0 +1,42 @@ +package com.denizenscript.denizen.objects.properties.entity; + +import com.denizenscript.denizen.objects.EntityTag; +import com.denizenscript.denizencore.objects.Mechanism; +import com.denizenscript.denizencore.objects.core.ElementTag; +import org.bukkit.entity.AbstractArrow; + +public class EntityArrowPierceLevel extends EntityProperty { + + // <--[property] + // @object EntityTag + // @name pierce_level + // @input ElementTag(Number) + // @description + // The number of entities an arrow will pierce through while flying. Must be between 0 and 127. + // --> + + public static boolean describes(EntityTag entity) { + return entity.getBukkitEntity() instanceof AbstractArrow; + } + + @Override + public ElementTag getPropertyValue() { + return new ElementTag(as(AbstractArrow.class).getPierceLevel()); + } + + @Override + public void setPropertyValue(ElementTag value, Mechanism mechanism) { + if (mechanism.requireInteger()) { + as(AbstractArrow.class).setPierceLevel(value.asInt()); + } + } + + @Override + public String getPropertyId() { + return "pierce_level"; + } + + public static void register() { + autoRegister("pierce_level", EntityArrowPierceLevel.class, ElementTag.class, false); + } +}