From 17cef989c3deb6edc7457f1ccd4e6682824d0940 Mon Sep 17 00:00:00 2001 From: "Alex \"mcmonkey\" Goodwin" Date: Sun, 16 Jul 2023 08:07:38 -0700 Subject: [PATCH] walk_speed/fly_speed mechs: valid range check --- .../denizen/objects/EntityTag.java | 4 +-- .../denizen/objects/PlayerTag.java | 30 +++++++++++-------- 2 files changed, 20 insertions(+), 14 deletions(-) diff --git a/plugin/src/main/java/com/denizenscript/denizen/objects/EntityTag.java b/plugin/src/main/java/com/denizenscript/denizen/objects/EntityTag.java index 592440a70c..5a2d0cfe53 100644 --- a/plugin/src/main/java/com/denizenscript/denizen/objects/EntityTag.java +++ b/plugin/src/main/java/com/denizenscript/denizen/objects/EntityTag.java @@ -2891,7 +2891,7 @@ else if (object.getBukkitEntity() instanceof Hanging) { // Returns an interaction entity's last attack interaction, if any. // The returned map contains: // - 'player' (PlayerTag): the player who interacted - // - 'duration' (DurationTag): the amount of time since the interaction. Note that this value is calculated, and may become inaccurate if the interaction entity changes worlds or the server lags. + // - 'duration' (DurationTag): the amount of time since the interaction. Note that this is a delta time (same limitations as <@link event delta time>), and may become inaccurate if the interaction entity changes worlds. // - 'raw_game_time' (ElementTag(Number)): the raw game time the interaction occurred at, used to calculate the time above. // --> registerSpawnedOnlyTag(MapTag.class, "last_attack", (attribute, object) -> { @@ -2909,7 +2909,7 @@ else if (object.getBukkitEntity() instanceof Hanging) { // Returns an interaction entity's last right click interaction, if any. // The returned map contains: // - 'player' (PlayerTag): the player who interacted - // - 'duration' (DurationTag): the amount of time since the interaction. Note that this value is calculated, and may become inaccurate if the interaction entity changes worlds or the server lags. + // - 'duration' (DurationTag): the amount of time since the interaction. Note that this is a delta time (same limitations as <@link event delta time>), and may become inaccurate if the interaction entity changes worlds. // - 'raw_game_time' (ElementTag(Number)): the raw game time the interaction occurred at, used to calculate the time above. // --> registerSpawnedOnlyTag(MapTag.class, "last_interaction", (attribute, object) -> { diff --git a/plugin/src/main/java/com/denizenscript/denizen/objects/PlayerTag.java b/plugin/src/main/java/com/denizenscript/denizen/objects/PlayerTag.java index f5a526f20e..6198aa1d95 100644 --- a/plugin/src/main/java/com/denizenscript/denizen/objects/PlayerTag.java +++ b/plugin/src/main/java/com/denizenscript/denizen/objects/PlayerTag.java @@ -579,15 +579,6 @@ public void setLevel(int level) { } } - public void setFlySpeed(float speed) { - if (isOnline()) { - getPlayerEntity().setFlySpeed(speed); - } - else { - getNBTEditor().setFlySpeed(speed); - } - } - public void setGameMode(GameMode mode) { if (isOnline()) { getPlayerEntity().setGameMode(mode); @@ -3098,7 +3089,17 @@ public void adjust(Mechanism mechanism) { // // --> if (mechanism.matches("fly_speed") && mechanism.requireFloat()) { - setFlySpeed(mechanism.getValue().asFloat()); + float val = mechanism.getValue().asFloat(); + if (val < -1 || val > 1) { + mechanism.echoError("Invalid speed specified. Must be between -1 and 1."); + return; + } + if (isOnline()) { + getPlayerEntity().setFlySpeed(val); + } + else { + getNBTEditor().setFlySpeed(val); + } } // <--[mechanism] @@ -3247,11 +3248,16 @@ public void adjust(Mechanism mechanism) { // // --> if (mechanism.matches("walk_speed") && mechanism.requireFloat()) { + float val = mechanism.getValue().asFloat(); + if (val < -1 || val > 1) { + mechanism.echoError("Invalid speed specified. Must be between -1 and 1."); + return; + } if (isOnline()) { - getPlayerEntity().setWalkSpeed(mechanism.getValue().asFloat()); + getPlayerEntity().setWalkSpeed(val); } else { - getNBTEditor().setWalkSpeed(mechanism.getValue().asFloat()); + getNBTEditor().setWalkSpeed(val); } }