From c26b1e19348a40911d0ab8f8aa9c32c2887b9684 Mon Sep 17 00:00:00 2001 From: SirSmurfy2 <82696841+TheAbsolutionism@users.noreply.github.com> Date: Thu, 2 Jan 2025 15:42:05 -0500 Subject: [PATCH 1/5] Initial Commit --- .../skript/conditions/CondIsSprinting.java | 22 ++++--- .../ch/njol/skript/effects/EffSprinting.java | 60 +++++++++++++++++++ .../tests/syntaxes/effects/EffSprinting.sk | 8 +++ 3 files changed, 81 insertions(+), 9 deletions(-) create mode 100644 src/main/java/ch/njol/skript/effects/EffSprinting.java create mode 100644 src/test/skript/tests/syntaxes/effects/EffSprinting.sk diff --git a/src/main/java/ch/njol/skript/conditions/CondIsSprinting.java b/src/main/java/ch/njol/skript/conditions/CondIsSprinting.java index c1f25ea82e2..955e973c61e 100644 --- a/src/main/java/ch/njol/skript/conditions/CondIsSprinting.java +++ b/src/main/java/ch/njol/skript/conditions/CondIsSprinting.java @@ -1,5 +1,7 @@ package ch.njol.skript.conditions; +import org.bukkit.entity.Camel; +import org.bukkit.entity.LivingEntity; import org.bukkit.entity.Player; import ch.njol.skript.conditions.base.PropertyCondition; @@ -8,22 +10,24 @@ import ch.njol.skript.doc.Name; import ch.njol.skript.doc.Since; -/** - * @author Peter Güttinger - */ @Name("Is Sprinting") -@Description("Checks whether a player is sprinting.") +@Description("Checks whether a player or camel is sprinting.") @Examples("player is not sprinting") -@Since("1.4.4") -public class CondIsSprinting extends PropertyCondition { +@Since("1.4.4, INSERT VERSION (camels)") +public class CondIsSprinting extends PropertyCondition { static { - register(CondIsSprinting.class, "sprinting", "players"); + register(CondIsSprinting.class, "sprinting", "livingentities"); } @Override - public boolean check(final Player p) { - return p.isSprinting(); + public boolean check(LivingEntity entity) { + if (entity instanceof Player player) { + return player.isSprinting(); + } else if (entity instanceof Camel camel) { + return camel.isDashing(); + } + return false; } @Override diff --git a/src/main/java/ch/njol/skript/effects/EffSprinting.java b/src/main/java/ch/njol/skript/effects/EffSprinting.java new file mode 100644 index 00000000000..9e29883c197 --- /dev/null +++ b/src/main/java/ch/njol/skript/effects/EffSprinting.java @@ -0,0 +1,60 @@ +package ch.njol.skript.effects; + +import ch.njol.skript.Skript; +import ch.njol.skript.doc.Description; +import ch.njol.skript.doc.Examples; +import ch.njol.skript.doc.Name; +import ch.njol.skript.doc.Since; +import ch.njol.skript.lang.Effect; +import ch.njol.skript.lang.Expression; +import ch.njol.skript.lang.SkriptParser.ParseResult; +import ch.njol.util.Kleenean; +import org.bukkit.entity.Camel; +import org.bukkit.entity.LivingEntity; +import org.bukkit.entity.Player; +import org.bukkit.event.Event; +import org.jetbrains.annotations.Nullable; + +@Name("Sprint") +@Description("Make a player or camel start or stop sprinting.") +@Examples({ + "make player start sprinting", + "make last spawned camel sprint" +}) +@Since("INSERT VERSION") +public class EffSprinting extends Effect { + + static { + Skript.registerEffect(EffSprinting.class, + "make %livingentities% (start sprinting|sprint)", + "make %livingentities% (stop sprinting|not sprint)"); + } + + private Expression entities; + private boolean sprint; + + @Override + public boolean init(Expression[] exprs, int matchedPattern, Kleenean isDelayed, ParseResult parseResult) { + //noinspection unchecked + entities = (Expression) exprs[0]; + sprint = matchedPattern == 0; + return true; + } + + @Override + protected void execute(Event event) { + for (LivingEntity entity : entities.getArray(event)) { + if (entity instanceof Player player) { + player.setSprinting(sprint); + } else if (entity instanceof Camel camel) { + camel.setDashing(sprint); + } + } + } + + @Override + public String toString(@Nullable Event event, boolean debug) { + return "make " + entities.toString(event, debug) + (sprint ? " start" : " stop") + " sprinting"; + } + +} diff --git a/src/test/skript/tests/syntaxes/effects/EffSprinting.sk b/src/test/skript/tests/syntaxes/effects/EffSprinting.sk new file mode 100644 index 00000000000..490563293f3 --- /dev/null +++ b/src/test/skript/tests/syntaxes/effects/EffSprinting.sk @@ -0,0 +1,8 @@ +test "camel sprinting": + spawn a camel at test-location: + set {_entity} to entity + make {_entity} start sprinting + assert {_entity} is sprinting with "Camel should be sprinting" + make {_entity} stop sprinting + assert {_entity} is not sprinting with "Camel should not be sprinting" + clear entity within {_entity} From 1cf58cda223719f6fdee1fbd1bc33489aa272fc0 Mon Sep 17 00:00:00 2001 From: SirSmurfy2 <82696841+TheAbsolutionism@users.noreply.github.com> Date: Thu, 2 Jan 2025 16:21:41 -0500 Subject: [PATCH 2/5] Seperation --- .../njol/skript/conditions/CondIsDashing.java | 36 +++++++++++ .../skript/conditions/CondIsSprinting.java | 22 +++---- .../ch/njol/skript/effects/EffDashing.java | 59 +++++++++++++++++++ .../ch/njol/skript/effects/EffSprinting.java | 24 +++----- .../tests/syntaxes/effects/EffDashing.sk | 9 +++ .../tests/syntaxes/effects/EffSprinting.sk | 8 --- 6 files changed, 120 insertions(+), 38 deletions(-) create mode 100644 src/main/java/ch/njol/skript/conditions/CondIsDashing.java create mode 100644 src/main/java/ch/njol/skript/effects/EffDashing.java create mode 100644 src/test/skript/tests/syntaxes/effects/EffDashing.sk delete mode 100644 src/test/skript/tests/syntaxes/effects/EffSprinting.sk diff --git a/src/main/java/ch/njol/skript/conditions/CondIsDashing.java b/src/main/java/ch/njol/skript/conditions/CondIsDashing.java new file mode 100644 index 00000000000..a190e03e250 --- /dev/null +++ b/src/main/java/ch/njol/skript/conditions/CondIsDashing.java @@ -0,0 +1,36 @@ +package ch.njol.skript.conditions; + +import ch.njol.skript.conditions.base.PropertyCondition; +import ch.njol.skript.doc.Description; +import ch.njol.skript.doc.Examples; +import ch.njol.skript.doc.Name; +import ch.njol.skript.doc.Since; +import org.bukkit.entity.Camel; +import org.bukkit.entity.LivingEntity; + +@Name("Camel Is Dashing") +@Description("Checks whether a camel is sprinting.") +@Examples({ + "if last spawned camel is not dashing:", + "\tmake last spawned camel start dashing" +}) +@Since("INSERT VERSION") +public class CondIsDashing extends PropertyCondition { + + static { + register(CondIsDashing.class, "dashing", "livingentities"); + } + + @Override + public boolean check(LivingEntity entity) { + if (entity instanceof Camel camel) + return camel.isDashing(); + return false; + } + + @Override + protected String getPropertyName() { + return "dashing"; + } + +} diff --git a/src/main/java/ch/njol/skript/conditions/CondIsSprinting.java b/src/main/java/ch/njol/skript/conditions/CondIsSprinting.java index 955e973c61e..6740ce47d07 100644 --- a/src/main/java/ch/njol/skript/conditions/CondIsSprinting.java +++ b/src/main/java/ch/njol/skript/conditions/CondIsSprinting.java @@ -1,33 +1,25 @@ package ch.njol.skript.conditions; -import org.bukkit.entity.Camel; -import org.bukkit.entity.LivingEntity; -import org.bukkit.entity.Player; - import ch.njol.skript.conditions.base.PropertyCondition; import ch.njol.skript.doc.Description; import ch.njol.skript.doc.Examples; import ch.njol.skript.doc.Name; import ch.njol.skript.doc.Since; +import org.bukkit.entity.Player; @Name("Is Sprinting") -@Description("Checks whether a player or camel is sprinting.") +@Description("Checks whether a player is sprinting.") @Examples("player is not sprinting") -@Since("1.4.4, INSERT VERSION (camels)") -public class CondIsSprinting extends PropertyCondition { +@Since("1.4.4") +public class CondIsSprinting extends PropertyCondition { static { - register(CondIsSprinting.class, "sprinting", "livingentities"); + register(CondIsSprinting.class, "sprinting", "players"); } @Override - public boolean check(LivingEntity entity) { - if (entity instanceof Player player) { - return player.isSprinting(); - } else if (entity instanceof Camel camel) { - return camel.isDashing(); - } - return false; + public boolean check(Player player) { + return player.isSprinting(); } @Override diff --git a/src/main/java/ch/njol/skript/effects/EffDashing.java b/src/main/java/ch/njol/skript/effects/EffDashing.java new file mode 100644 index 00000000000..4aa721105bf --- /dev/null +++ b/src/main/java/ch/njol/skript/effects/EffDashing.java @@ -0,0 +1,59 @@ +package ch.njol.skript.effects; + +import ch.njol.skript.Skript; +import ch.njol.skript.doc.Description; +import ch.njol.skript.doc.Examples; +import ch.njol.skript.doc.Name; +import ch.njol.skript.doc.Since; +import ch.njol.skript.lang.Effect; +import ch.njol.skript.lang.Expression; +import ch.njol.skript.lang.SkriptParser.ParseResult; +import ch.njol.util.Kleenean; +import org.bukkit.entity.Camel; +import org.bukkit.entity.LivingEntity; +import org.bukkit.event.Event; +import org.jetbrains.annotations.Nullable; + +@Name("Camel Dashing") +@Description({ + "Make a camel start or stop dashing.", + "Dashing is a temporary speed burst, a dash lasts for 0.35 seconds." +}) +@Examples({ + "make last spawned camel start dashing", + "make last spawned camel stop dashing", +}) +@Since("INSERT VERSION") +public class EffDashing extends Effect { + + static { + Skript.registerEffect(EffDashing.class, + "make %livingentities% (start dashing|dash)", + "make %livingentities% stop dashing"); + } + + private Expression entities; + private boolean dash; + + @Override + public boolean init(Expression[] exprs, int matchedPattern, Kleenean isDelayed, ParseResult parseResult) { + //noinspection unchecked + entities = (Expression) exprs[0]; + dash = matchedPattern == 0; + return true; + } + + @Override + protected void execute(Event event) { + for (LivingEntity entity : entities.getArray(event)) { + if (entity instanceof Camel camel) + camel.setDashing(dash); + } + } + + @Override + public String toString(@Nullable Event event, boolean debug) { + return "make " + entities.toString(event, debug) + (dash ? " start" : " stop") + " dashing"; + } + +} diff --git a/src/main/java/ch/njol/skript/effects/EffSprinting.java b/src/main/java/ch/njol/skript/effects/EffSprinting.java index 9e29883c197..3e3f2154928 100644 --- a/src/main/java/ch/njol/skript/effects/EffSprinting.java +++ b/src/main/java/ch/njol/skript/effects/EffSprinting.java @@ -9,14 +9,12 @@ import ch.njol.skript.lang.Expression; import ch.njol.skript.lang.SkriptParser.ParseResult; import ch.njol.util.Kleenean; -import org.bukkit.entity.Camel; -import org.bukkit.entity.LivingEntity; import org.bukkit.entity.Player; import org.bukkit.event.Event; import org.jetbrains.annotations.Nullable; -@Name("Sprint") -@Description("Make a player or camel start or stop sprinting.") +@Name("Sprinting") +@Description("Make a player start or stop sprinting.") @Examples({ "make player start sprinting", "make last spawned camel sprint" @@ -26,35 +24,31 @@ public class EffSprinting extends Effect { static { Skript.registerEffect(EffSprinting.class, - "make %livingentities% (start sprinting|sprint)", - "make %livingentities% (stop sprinting|not sprint)"); + "make %players% (start sprinting|sprint)", + "make %players% (stop sprinting|not sprint)"); } - private Expression entities; + private Expression players; private boolean sprint; @Override public boolean init(Expression[] exprs, int matchedPattern, Kleenean isDelayed, ParseResult parseResult) { //noinspection unchecked - entities = (Expression) exprs[0]; + players = (Expression) exprs[0]; sprint = matchedPattern == 0; return true; } @Override protected void execute(Event event) { - for (LivingEntity entity : entities.getArray(event)) { - if (entity instanceof Player player) { - player.setSprinting(sprint); - } else if (entity instanceof Camel camel) { - camel.setDashing(sprint); - } + for (Player player : players.getArray(event)) { + player.setSprinting(sprint); } } @Override public String toString(@Nullable Event event, boolean debug) { - return "make " + entities.toString(event, debug) + (sprint ? " start" : " stop") + " sprinting"; + return "make " + players.toString(event, debug) + (sprint ? " start" : " stop") + " sprinting"; } } diff --git a/src/test/skript/tests/syntaxes/effects/EffDashing.sk b/src/test/skript/tests/syntaxes/effects/EffDashing.sk new file mode 100644 index 00000000000..d8a405fcb54 --- /dev/null +++ b/src/test/skript/tests/syntaxes/effects/EffDashing.sk @@ -0,0 +1,9 @@ +test "camel dashing" when running minecraft "1.20": + # Test fails on 1.19.4, effect does work. + spawn a camel at test-location: + set {_entity} to entity + make {_entity} start dashing + assert {_entity} is dashing with "Camel should be dashing" + make {_entity} stop dashing + assert {_entity} is not dashing with "Camel should not be dashing" + clear entity within {_entity} diff --git a/src/test/skript/tests/syntaxes/effects/EffSprinting.sk b/src/test/skript/tests/syntaxes/effects/EffSprinting.sk deleted file mode 100644 index 490563293f3..00000000000 --- a/src/test/skript/tests/syntaxes/effects/EffSprinting.sk +++ /dev/null @@ -1,8 +0,0 @@ -test "camel sprinting": - spawn a camel at test-location: - set {_entity} to entity - make {_entity} start sprinting - assert {_entity} is sprinting with "Camel should be sprinting" - make {_entity} stop sprinting - assert {_entity} is not sprinting with "Camel should not be sprinting" - clear entity within {_entity} From 5feb83d5555060fd90b2bf46de870b084a50f298 Mon Sep 17 00:00:00 2001 From: SirSmurfy2 <82696841+TheAbsolutionism@users.noreply.github.com> Date: Fri, 3 Jan 2025 16:07:28 -0500 Subject: [PATCH 3/5] Remove EffDashing --- .../njol/skript/conditions/CondIsDashing.java | 6 +- .../ch/njol/skript/effects/EffDashing.java | 59 ------------------- .../ch/njol/skript/effects/EffSprinting.java | 8 ++- .../tests/syntaxes/effects/EffDashing.sk | 9 --- 4 files changed, 8 insertions(+), 74 deletions(-) delete mode 100644 src/main/java/ch/njol/skript/effects/EffDashing.java delete mode 100644 src/test/skript/tests/syntaxes/effects/EffDashing.sk diff --git a/src/main/java/ch/njol/skript/conditions/CondIsDashing.java b/src/main/java/ch/njol/skript/conditions/CondIsDashing.java index a190e03e250..089c2d7e458 100644 --- a/src/main/java/ch/njol/skript/conditions/CondIsDashing.java +++ b/src/main/java/ch/njol/skript/conditions/CondIsDashing.java @@ -9,10 +9,10 @@ import org.bukkit.entity.LivingEntity; @Name("Camel Is Dashing") -@Description("Checks whether a camel is sprinting.") +@Description("Checks whether a camel is dashing.") @Examples({ - "if last spawned camel is not dashing:", - "\tmake last spawned camel start dashing" + "if last spawned camel is dashing:", + "\tkill last spawned camel" }) @Since("INSERT VERSION") public class CondIsDashing extends PropertyCondition { diff --git a/src/main/java/ch/njol/skript/effects/EffDashing.java b/src/main/java/ch/njol/skript/effects/EffDashing.java deleted file mode 100644 index 4aa721105bf..00000000000 --- a/src/main/java/ch/njol/skript/effects/EffDashing.java +++ /dev/null @@ -1,59 +0,0 @@ -package ch.njol.skript.effects; - -import ch.njol.skript.Skript; -import ch.njol.skript.doc.Description; -import ch.njol.skript.doc.Examples; -import ch.njol.skript.doc.Name; -import ch.njol.skript.doc.Since; -import ch.njol.skript.lang.Effect; -import ch.njol.skript.lang.Expression; -import ch.njol.skript.lang.SkriptParser.ParseResult; -import ch.njol.util.Kleenean; -import org.bukkit.entity.Camel; -import org.bukkit.entity.LivingEntity; -import org.bukkit.event.Event; -import org.jetbrains.annotations.Nullable; - -@Name("Camel Dashing") -@Description({ - "Make a camel start or stop dashing.", - "Dashing is a temporary speed burst, a dash lasts for 0.35 seconds." -}) -@Examples({ - "make last spawned camel start dashing", - "make last spawned camel stop dashing", -}) -@Since("INSERT VERSION") -public class EffDashing extends Effect { - - static { - Skript.registerEffect(EffDashing.class, - "make %livingentities% (start dashing|dash)", - "make %livingentities% stop dashing"); - } - - private Expression entities; - private boolean dash; - - @Override - public boolean init(Expression[] exprs, int matchedPattern, Kleenean isDelayed, ParseResult parseResult) { - //noinspection unchecked - entities = (Expression) exprs[0]; - dash = matchedPattern == 0; - return true; - } - - @Override - protected void execute(Event event) { - for (LivingEntity entity : entities.getArray(event)) { - if (entity instanceof Camel camel) - camel.setDashing(dash); - } - } - - @Override - public String toString(@Nullable Event event, boolean debug) { - return "make " + entities.toString(event, debug) + (dash ? " start" : " stop") + " dashing"; - } - -} diff --git a/src/main/java/ch/njol/skript/effects/EffSprinting.java b/src/main/java/ch/njol/skript/effects/EffSprinting.java index 3e3f2154928..e8e7f8741c0 100644 --- a/src/main/java/ch/njol/skript/effects/EffSprinting.java +++ b/src/main/java/ch/njol/skript/effects/EffSprinting.java @@ -17,7 +17,7 @@ @Description("Make a player start or stop sprinting.") @Examples({ "make player start sprinting", - "make last spawned camel sprint" + "force player to start sprinting" }) @Since("INSERT VERSION") public class EffSprinting extends Effect { @@ -25,7 +25,9 @@ public class EffSprinting extends Effect { static { Skript.registerEffect(EffSprinting.class, "make %players% (start sprinting|sprint)", - "make %players% (stop sprinting|not sprint)"); + "force %players% to (start sprinting|sprint)", + "make %players% (stop sprinting|not sprint)", + "force %players% to (stop sprinting|not sprint)"); } private Expression players; @@ -35,7 +37,7 @@ public class EffSprinting extends Effect { public boolean init(Expression[] exprs, int matchedPattern, Kleenean isDelayed, ParseResult parseResult) { //noinspection unchecked players = (Expression) exprs[0]; - sprint = matchedPattern == 0; + sprint = matchedPattern <= 1; return true; } diff --git a/src/test/skript/tests/syntaxes/effects/EffDashing.sk b/src/test/skript/tests/syntaxes/effects/EffDashing.sk deleted file mode 100644 index d8a405fcb54..00000000000 --- a/src/test/skript/tests/syntaxes/effects/EffDashing.sk +++ /dev/null @@ -1,9 +0,0 @@ -test "camel dashing" when running minecraft "1.20": - # Test fails on 1.19.4, effect does work. - spawn a camel at test-location: - set {_entity} to entity - make {_entity} start dashing - assert {_entity} is dashing with "Camel should be dashing" - make {_entity} stop dashing - assert {_entity} is not dashing with "Camel should not be dashing" - clear entity within {_entity} From 35ce7c560fd274a7d91a16c04c6e59823e790ad9 Mon Sep 17 00:00:00 2001 From: SirSmurfy2 <82696841+TheAbsolutionism@users.noreply.github.com> Date: Fri, 3 Jan 2025 17:10:11 -0500 Subject: [PATCH 4/5] Sprinting Docs Update --- .../java/ch/njol/skript/effects/EffSprinting.java | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/src/main/java/ch/njol/skript/effects/EffSprinting.java b/src/main/java/ch/njol/skript/effects/EffSprinting.java index e8e7f8741c0..937b7ee0347 100644 --- a/src/main/java/ch/njol/skript/effects/EffSprinting.java +++ b/src/main/java/ch/njol/skript/effects/EffSprinting.java @@ -14,7 +14,16 @@ import org.jetbrains.annotations.Nullable; @Name("Sprinting") -@Description("Make a player start or stop sprinting.") +@Description({ + "Make a player start or stop sprinting.", + "If the player is not moving when this effect is used, they will be put in sprint mode for a tick and then stops (Causes FOV change). " + + "Using it a second time, without the player manually sprinting in between, causes the player to stay in sprint mode, with some quirks.", + " - Particles may not be produced under the player's feet.", + " - The player will not exit the sprinting state if they stop moving.", + " - Restrictions like low hunger will not prevent the player from sprinting", + " - The player pressing shift will stop them sprinting, and pressing sprint will re-assert normal sprinting behavior", + "Using this effect two or more consecutive times on a stationary player produces undefined behavior and should not be relied on." +}) @Examples({ "make player start sprinting", "force player to start sprinting" From e4d9b8f1527006cf75388f79f82660758277fb67 Mon Sep 17 00:00:00 2001 From: SirSmurfy2 <82696841+TheAbsolutionism@users.noreply.github.com> Date: Thu, 9 Jan 2025 16:09:31 -0500 Subject: [PATCH 5/5] Requested Changes --- src/main/java/ch/njol/skript/conditions/CondIsDashing.java | 2 +- src/main/java/ch/njol/skript/effects/EffSprinting.java | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/ch/njol/skript/conditions/CondIsDashing.java b/src/main/java/ch/njol/skript/conditions/CondIsDashing.java index 089c2d7e458..fe9141e6b79 100644 --- a/src/main/java/ch/njol/skript/conditions/CondIsDashing.java +++ b/src/main/java/ch/njol/skript/conditions/CondIsDashing.java @@ -9,7 +9,7 @@ import org.bukkit.entity.LivingEntity; @Name("Camel Is Dashing") -@Description("Checks whether a camel is dashing.") +@Description("Checks whether a camel is currently using its dash ability.") @Examples({ "if last spawned camel is dashing:", "\tkill last spawned camel" diff --git a/src/main/java/ch/njol/skript/effects/EffSprinting.java b/src/main/java/ch/njol/skript/effects/EffSprinting.java index 937b7ee0347..01a0b9d0b9b 100644 --- a/src/main/java/ch/njol/skript/effects/EffSprinting.java +++ b/src/main/java/ch/njol/skript/effects/EffSprinting.java @@ -16,7 +16,7 @@ @Name("Sprinting") @Description({ "Make a player start or stop sprinting.", - "If the player is not moving when this effect is used, they will be put in sprint mode for a tick and then stops (Causes FOV change). " + "If the player is not moving when this effect is used, they will be put in sprint mode for a tick and then stopped (this causes the FOV to change). " + "Using it a second time, without the player manually sprinting in between, causes the player to stay in sprint mode, with some quirks.", " - Particles may not be produced under the player's feet.", " - The player will not exit the sprinting state if they stop moving.",