From c1b97837b20b53a1e9d8d58f40169bdb1b465664 Mon Sep 17 00:00:00 2001 From: david <89749147+davight@users.noreply.github.com> Date: Sun, 28 Dec 2025 21:16:12 +0100 Subject: [PATCH] add powerable property --- .../objects/properties/PropertyRegistry.java | 1 + .../material/MaterialPowerable.java | 49 +++++++++++++++++++ 2 files changed, 50 insertions(+) create mode 100644 plugin/src/main/java/com/denizenscript/denizen/objects/properties/material/MaterialPowerable.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 477c8bb129..75e5bcd79d 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 @@ -297,6 +297,7 @@ public static void registerMainProperties() { PropertyParser.registerProperty(MaterialMode.class, MaterialTag.class); PropertyParser.registerProperty(MaterialNote.class, MaterialTag.class); PropertyParser.registerProperty(MaterialPersistent.class, MaterialTag.class); + PropertyParser.registerProperty(MaterialPowerable.class, MaterialTag.class); PropertyParser.registerProperty(MaterialPower.class, MaterialTag.class); PropertyParser.registerProperty(MaterialShape.class, MaterialTag.class); PropertyParser.registerProperty(MaterialSides.class, MaterialTag.class); diff --git a/plugin/src/main/java/com/denizenscript/denizen/objects/properties/material/MaterialPowerable.java b/plugin/src/main/java/com/denizenscript/denizen/objects/properties/material/MaterialPowerable.java new file mode 100644 index 0000000000..4243e47048 --- /dev/null +++ b/plugin/src/main/java/com/denizenscript/denizen/objects/properties/material/MaterialPowerable.java @@ -0,0 +1,49 @@ +package com.denizenscript.denizen.objects.properties.material; + +import com.denizenscript.denizen.objects.MaterialTag; +import com.denizenscript.denizencore.objects.Mechanism; +import com.denizenscript.denizencore.objects.core.ElementTag; +import org.bukkit.block.data.Powerable; + +public class MaterialPowerable extends MaterialProperty { + + // <--[property] + // @object MaterialTag + // @name powered + // @input ElementTag(Boolean) + // @description + // Controls whether the material is powered. + // --> + + public static boolean describes(MaterialTag material) { + return material.getModernData() instanceof Powerable; + } + + public MaterialPowerable(MaterialTag material) { + super(material); + } + + @Override + public ElementTag getPropertyValue() { + if (getBlockData() instanceof Powerable powerable) { + return new ElementTag(powerable.isPowered()); + } + return null; + } + + @Override + public String getPropertyId() { + return "powered"; + } + + @Override + public void setPropertyValue(ElementTag elementTag, Mechanism mechanism) { + if (getBlockData() instanceof Powerable powerable && mechanism.requireBoolean()) { + powerable.setPowered(elementTag.asBoolean()); + } + } + + public static void register() { + autoRegister("powered", MaterialPowerable.class, ElementTag.class, false); + } +}