From 082c9849a0533493aaa969b842672d21105b21b3 Mon Sep 17 00:00:00 2001 From: "Alex \"mcmonkey\" Goodwin" Date: Fri, 26 Nov 2021 22:30:38 -0800 Subject: [PATCH] WorldTag.hardcore --- .../server/InternalEventScriptEvent.java | 7 ++++++ .../denizen/objects/WorldTag.java | 24 +++++++++++++++++++ 2 files changed, 31 insertions(+) diff --git a/plugin/src/main/java/com/denizenscript/denizen/events/server/InternalEventScriptEvent.java b/plugin/src/main/java/com/denizenscript/denizen/events/server/InternalEventScriptEvent.java index 6ee028c97f..45ce9ac8df 100644 --- a/plugin/src/main/java/com/denizenscript/denizen/events/server/InternalEventScriptEvent.java +++ b/plugin/src/main/java/com/denizenscript/denizen/events/server/InternalEventScriptEvent.java @@ -8,6 +8,9 @@ import com.denizenscript.denizencore.objects.core.ListTag; import com.denizenscript.denizencore.utilities.CoreUtilities; import com.denizenscript.denizencore.utilities.ReflectionHelper; +import com.denizenscript.denizencore.utilities.debugging.SlowWarning; +import com.denizenscript.denizencore.utilities.debugging.VerySlowWarning; +import com.denizenscript.denizencore.utilities.debugging.Warning; import org.bukkit.event.*; import org.bukkit.plugin.Plugin; import org.bukkit.plugin.RegisteredListener; @@ -69,6 +72,9 @@ public boolean matches(ScriptPath path) { public String getName() { return "InternalBukkitEvent"; } + + public static Warning depFieldContext = new VerySlowWarning("The context.field_ special tag for 'internal bukkit event' is experimental and subject to be removed or replace in the future"); + @Override public ObjectTag getContext(String name) { if (name.equals("fields")) { @@ -85,6 +91,7 @@ public ObjectTag getContext(String name) { return result; } if (name.startsWith("field_")) { + depFieldContext.warn(); String fName = CoreUtilities.toLowerCase(name.substring("field_".length())); Class c = currentEvent.getClass(); while (c != null && c != Object.class) { diff --git a/plugin/src/main/java/com/denizenscript/denizen/objects/WorldTag.java b/plugin/src/main/java/com/denizenscript/denizen/objects/WorldTag.java index 4d3482abef..a4f8b11ab6 100644 --- a/plugin/src/main/java/com/denizenscript/denizen/objects/WorldTag.java +++ b/plugin/src/main/java/com/denizenscript/denizen/objects/WorldTag.java @@ -514,6 +514,17 @@ public static void registerTags() { return new ElementTag(object.getWorld().getDifficulty().name()); }); + // <--[tag] + // @attribute + // @returns ElementTag(Boolean) + // @mechanism WorldTag.hardcore + // @description + // Returns whether the world is in hardcore mode. + // --> + registerTag(ElementTag.class, "hardcore", (attribute, object) -> { + return new ElementTag(object.getWorld().isHardcore()); + }); + // <--[tag] // @attribute // @returns ElementTag(Boolean) @@ -951,6 +962,19 @@ public void adjust(Mechanism mechanism) { } } + // <--[mechanism] + // @object WorldTag + // @name hardcore + // @input ElementTag(Boolean) + // @description + // Sets whether the world is hardcore mode. + // @tags + // + // --> + if (mechanism.matches("hardcore") && mechanism.requireBoolean()) { + getWorld().setHardcore(mechanism.getValue().asBoolean()); + } + // <--[mechanism] // @object WorldTag // @name save