diff --git a/plugin/src/main/java/com/denizenscript/denizen/objects/properties/material/MaterialMode.java b/plugin/src/main/java/com/denizenscript/denizen/objects/properties/material/MaterialMode.java index 7c2f1f80b9..2fe202447e 100644 --- a/plugin/src/main/java/com/denizenscript/denizen/objects/properties/material/MaterialMode.java +++ b/plugin/src/main/java/com/denizenscript/denizen/objects/properties/material/MaterialMode.java @@ -31,7 +31,9 @@ public static boolean describes(ObjectTag material) { || data instanceof DaylightDetector || data instanceof CommandBlock || (NMSHandler.getVersion().isAtLeast(NMSVersion.v1_17) && (data instanceof SculkSensor - || data instanceof BigDripleaf)); + || data instanceof BigDripleaf)) + || (NMSHandler.getVersion().isAtLeast(NMSVersion.v1_19) && (data instanceof SculkCatalyst + || data instanceof SculkShrieker)); } public static MaterialMode getFrom(ObjectTag _material) { @@ -70,6 +72,8 @@ public static void registerTags() { // For daylight_detectors, output is INVERTED or NORMAL. // For command_blocks, output is CONDITIONAL or NORMAL. // For big_dripleafs, output is FULL, NONE, PARTIAL, or UNSTABLE. + // For sculk_catalysts, output is BLOOM or NORMAL. + // For sculk_shriekers, output is SHRIEKING or NORMAL. // --> PropertyParser.registerStaticTag(ElementTag.class, "mode", (attribute, material) -> { return new ElementTag(material.getPropertyString()); @@ -92,10 +96,6 @@ public boolean isStructureBlock() { return material.getModernData() instanceof StructureBlock; } - public boolean isSculkSensor() { - return NMSHandler.getVersion().isAtLeast(NMSVersion.v1_17) && material.getModernData() instanceof SculkSensor; - } - public boolean isDaylightDetector() { return material.getModernData() instanceof DaylightDetector; } @@ -108,6 +108,18 @@ public boolean isBigDripleaf() { return NMSHandler.getVersion().isAtLeast(NMSVersion.v1_17) && material.getModernData() instanceof BigDripleaf; } + public boolean isSculkSensor() { + return NMSHandler.getVersion().isAtLeast(NMSVersion.v1_17) && material.getModernData() instanceof SculkSensor; + } + + public boolean isSculkCatalyst() { + return NMSHandler.getVersion().isAtLeast(NMSVersion.v1_19) && material.getModernData() instanceof SculkCatalyst; + } + + public boolean isSculkShrieker() { + return NMSHandler.getVersion().isAtLeast(NMSVersion.v1_19) && material.getModernData() instanceof SculkShrieker; + } + public Comparator getComparator() { return (Comparator) material.getModernData(); } @@ -140,6 +152,14 @@ public BigDripleaf getBigDripleaf() { return (BigDripleaf) material.getModernData(); }*/ + /*public SculkCatalyst getSculkCatalyst() { // TODO: 1.19 + return (SculkCatalyst) material.getModernData(); + } + + public SculkShrieker getSculkShrieker() { + return (SculkShrieker) material.getModernData(); + }*/ + @Override public String getPropertyString() { if (isComparator()) { @@ -166,6 +186,12 @@ else if (isSculkSensor()) { else if (isBigDripleaf()) { return ((BigDripleaf) material.getModernData()).getTilt().name(); // TODO: 1.17 } + else if (isSculkCatalyst()) { + return ((SculkCatalyst) material.getModernData()).isBloom() ? "BLOOM" : "NORMAL"; // TODO: 1.19 + } + else if (isSculkShrieker()) { + return ((SculkShrieker) material.getModernData()).isShrieking() ? "SHRIEKING" : "NORMAL"; // TODO: 1.19 + } return null; // Unreachable } @@ -191,6 +217,8 @@ public void adjust(Mechanism mechanism) { // For daylight_detectors, input is INVERTED or NORMAL. // For command_blocks, input is CONDITIONAL or NORMAL. // For big_dripleafs, input is FULL, NONE, PARTIAL, or UNSTABLE. + // For sculk_catalysts, input is BLOOM or NORMAL. + // For sculk_shriekers, input is SHRIEKING or NORMAL. // @tags // // --> @@ -216,6 +244,12 @@ else if (isCommandBlock()) { else if (isSculkSensor() || isBigDripleaf()) { MultiVersionHelper1_17.materialModeRunMech(mechanism, this); } + else if (isSculkCatalyst()) { + ((SculkCatalyst) material.getModernData()).setBloom(CoreUtilities.equalsIgnoreCase(mechanism.getValue().asString(), "bloom")); // TODO: 1.19 + } + else if (isSculkShrieker()) { + ((SculkShrieker) material.getModernData()).setShrieking(CoreUtilities.equalsIgnoreCase(mechanism.getValue().asString(), "shrieking")); // TODO: 1.19 + } } } } diff --git a/plugin/src/main/java/com/denizenscript/denizen/objects/properties/material/MaterialSwitchable.java b/plugin/src/main/java/com/denizenscript/denizen/objects/properties/material/MaterialSwitchable.java index e5e49b40c0..a36f66b96b 100644 --- a/plugin/src/main/java/com/denizenscript/denizen/objects/properties/material/MaterialSwitchable.java +++ b/plugin/src/main/java/com/denizenscript/denizen/objects/properties/material/MaterialSwitchable.java @@ -1,5 +1,7 @@ package com.denizenscript.denizen.objects.properties.material; +import com.denizenscript.denizen.nms.NMSHandler; +import com.denizenscript.denizen.nms.NMSVersion; import com.denizenscript.denizen.objects.MaterialTag; import com.denizenscript.denizencore.objects.Mechanism; import com.denizenscript.denizencore.objects.ObjectTag; @@ -30,7 +32,8 @@ public static boolean describes(ObjectTag material) { || data instanceof Piston || data instanceof Lightable || data instanceof EndPortalFrame - || data instanceof Hopper; + || data instanceof Hopper + || (NMSHandler.getVersion().isAtLeast(NMSVersion.v1_19) && data instanceof SculkShrieker); } public static MaterialSwitchable getFrom(ObjectTag _material) { @@ -71,6 +74,7 @@ public static void registerTags() { // - a piston block is extended // - an end portal frame has an ender eye in it // - a hopper is NOT being powered by redstone + // - a sculk_shrieker can summon a warden // --> PropertyParser.registerStaticTag(ElementTag.class, "switched", (attribute, material) -> { return new ElementTag(material.getState()); @@ -81,10 +85,6 @@ public boolean isPowerable() { return material.getModernData() instanceof Powerable; } - public Powerable getPowerable() { - return (Powerable) material.getModernData(); - } - public boolean isOpenable() { return material.getModernData() instanceof Openable; } @@ -113,6 +113,14 @@ public boolean isHopper() { return material.getModernData() instanceof Hopper; } + public boolean isSculkShrieker() { + return NMSHandler.getVersion().isAtLeast(NMSVersion.v1_19) && material.getModernData() instanceof SculkShrieker; + } + + public Powerable getPowerable() { + return (Powerable) material.getModernData(); + } + public Openable getOpenable() { return (Openable) material.getModernData(); } @@ -141,6 +149,10 @@ public Hopper getHopper() { return (Hopper) material.getModernData(); } + /*public SculkShrieker getSculkShrieker() { // TODO: 1.19 + return (SculkShrieker) material.getModernData(); + }*/ + public boolean getState() { if (isOpenable()) { return getOpenable().isOpen(); @@ -166,6 +178,9 @@ else if (isEndFrame()) { else if (isHopper()) { return getHopper().isEnabled(); } + else if (isSculkShrieker()) { + return ((SculkShrieker) material.getModernData()).isCanSummon(); + } return false; // Unreachable } @@ -194,6 +209,9 @@ else if (isEndFrame()) { else if (isHopper()) { getHopper().setEnabled(state); } + else if (isSculkShrieker()) { + ((SculkShrieker) material.getModernData()).setCanSummon(state); + } } @Override @@ -214,8 +232,17 @@ public void adjust(Mechanism mechanism) { // @name switched // @input ElementTag(Boolean) // @description - // Sets whether a material is 'switched on', which has different semantic meaning depending on the material type (eg a door is opened, a piston is extended, etc). - // Refer to <@link tag MaterialTag.switched> for specifics. + // Sets whether a material is 'switched on', which has different semantic meaning depending on the material type. + // More specifically, this sets whether: + // - a Powerable material (like pressure plates) is activated + // - an Openable material (like doors) is open + // - a dispenser is powered and should dispense its contents + // - a daylight sensor can see the sun + // - a lightable block is lit + // - a piston block is extended + // - an end portal frame has an ender eye in it + // - a hopper is NOT being powered by redstone + // - a sculk_shrieker can summon a warden // @tags // // -->