From 937fecab05c52010d689ca3132e4a8ffac3b515f Mon Sep 17 00:00:00 2001 From: Asleepp Date: Fri, 19 Apr 2024 14:25:48 -0300 Subject: [PATCH 01/34] start --- .../skript/classes/data/BukkitClasses.java | 30 +++++++ .../ch/njol/skript/expressions/ExprTick.java | 88 +++++++++++++++++++ 2 files changed, 118 insertions(+) create mode 100644 src/main/java/ch/njol/skript/expressions/ExprTick.java diff --git a/src/main/java/ch/njol/skript/classes/data/BukkitClasses.java b/src/main/java/ch/njol/skript/classes/data/BukkitClasses.java index 25000a2390d..1d01f772236 100644 --- a/src/main/java/ch/njol/skript/classes/data/BukkitClasses.java +++ b/src/main/java/ch/njol/skript/classes/data/BukkitClasses.java @@ -38,6 +38,7 @@ import org.bukkit.Location; import org.bukkit.Material; import org.bukkit.OfflinePlayer; +import org.bukkit.ServerTickManager; import org.bukkit.SoundCategory; import org.bukkit.World; import org.bukkit.World.Environment; @@ -1548,6 +1549,35 @@ public String toVariableNameString(EnchantmentOffer eo) { .name("Transform Reason") .description("Represents a transform reason of an entity transform event.") .since("2.8.0")); + Classes.registerClass(new ClassInfo<>(ServerTickManager.class, "servertickmanager") + .user("server tick manager") + .name("Server Tick Manager") + .description("Represents a server's tick manager.") + .examples("set {_stm} to server's tick manager") + .since("INSERT VERSION") + .parser(new Parser() { + + @Nullable + @Override + public ServerTickManager parse(String s, ParseContext parseContext) { + return null; // can't be parsed from a string + } + + @Override + public String toString(ServerTickManager serverTickManager, int i) { + return "server tick manager"; + } + + @Override + public String toVariableNameString(ServerTickManager serverTickManager) { + return "server tick manager"; + } + + public String getVariableNamePattern() { + return "server tick manager"; + } + })); + } } diff --git a/src/main/java/ch/njol/skript/expressions/ExprTick.java b/src/main/java/ch/njol/skript/expressions/ExprTick.java new file mode 100644 index 00000000000..b1ce8d35b06 --- /dev/null +++ b/src/main/java/ch/njol/skript/expressions/ExprTick.java @@ -0,0 +1,88 @@ +/** + * This file is part of Skript. + * + * Skript is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Skript is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Skript. If not, see . + * + * Copyright Peter Güttinger, SkriptLang team and contributors + */ +package ch.njol.skript.expressions; + +import ch.njol.skript.Skript; +import ch.njol.skript.classes.Changer; +import ch.njol.skript.expressions.base.SimplePropertyExpression; +import ch.njol.skript.lang.Expression; +import ch.njol.skript.lang.ExpressionType; +import ch.njol.skript.lang.SkriptParser; +import ch.njol.skript.lang.util.SimpleExpression; +import ch.njol.util.Kleenean; +import org.bukkit.Server; +import org.bukkit.ServerTickManager; +import org.bukkit.event.Event; +import org.eclipse.jdt.annotation.Nullable; + +public class ExprTick extends SimplePropertyExpression { + + static { + register(ExprTick.class, Number.class, "[server] tick rate", "servertickmanager"); + } + + @Override + public Number convert(Server server) { + return server.getServerTickManager().getTickRate(); + } + + @Override + public Class getReturnType() { + return Number.class; + } + + @Override + protected String getPropertyName() { + return "tick rate"; + } + + @Override + public Class[] acceptChange(Changer.ChangeMode mode) { + if (mode == Changer.ChangeMode.SET || mode == Changer.ChangeMode.ADD || mode == Changer.ChangeMode.REMOVE) { + return new Class[]{Number.class}; + } + return null; + } + + @Override + public void change(Event event, @Nullable Object[] delta, Changer.ChangeMode mode) { + if (delta != null && delta.length != 0) { + Server server = getExpr().getSingle(event); + if (server == null) { + return; + } + ServerTickManager serverTickManager = server.getServerTickManager(); + float tickRate = serverTickManager.getTickRate(); + float change = ((Number) delta[0]).floatValue(); + switch (mode) { + case SET: + serverTickManager.setTickRate(change); + break; + case ADD: + serverTickManager.setTickRate(tickRate + change); + break; + case REMOVE: + serverTickManager.setTickRate(tickRate - change); + break; + } + } + } +} + + From 69dab634e9dd5f71f4b78071c0f88750e610fbb9 Mon Sep 17 00:00:00 2001 From: Asleepp Date: Fri, 19 Apr 2024 14:30:12 -0300 Subject: [PATCH 02/34] start --- src/main/java/ch/njol/skript/classes/data/BukkitClasses.java | 1 - 1 file changed, 1 deletion(-) diff --git a/src/main/java/ch/njol/skript/classes/data/BukkitClasses.java b/src/main/java/ch/njol/skript/classes/data/BukkitClasses.java index 1d01f772236..dc263ef91e1 100644 --- a/src/main/java/ch/njol/skript/classes/data/BukkitClasses.java +++ b/src/main/java/ch/njol/skript/classes/data/BukkitClasses.java @@ -1553,7 +1553,6 @@ public String toVariableNameString(EnchantmentOffer eo) { .user("server tick manager") .name("Server Tick Manager") .description("Represents a server's tick manager.") - .examples("set {_stm} to server's tick manager") .since("INSERT VERSION") .parser(new Parser() { From 2e2b1ca7aff7ad48de4b850f1046c8173e434e08 Mon Sep 17 00:00:00 2001 From: Asleepp Date: Fri, 19 Apr 2024 15:30:50 -0300 Subject: [PATCH 03/34] fixes build failure, hopefully --- .../ch/njol/skript/expressions/ExprTick.java | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/src/main/java/ch/njol/skript/expressions/ExprTick.java b/src/main/java/ch/njol/skript/expressions/ExprTick.java index b1ce8d35b06..6273ba91402 100644 --- a/src/main/java/ch/njol/skript/expressions/ExprTick.java +++ b/src/main/java/ch/njol/skript/expressions/ExprTick.java @@ -18,14 +18,9 @@ */ package ch.njol.skript.expressions; -import ch.njol.skript.Skript; import ch.njol.skript.classes.Changer; import ch.njol.skript.expressions.base.SimplePropertyExpression; -import ch.njol.skript.lang.Expression; -import ch.njol.skript.lang.ExpressionType; -import ch.njol.skript.lang.SkriptParser; -import ch.njol.skript.lang.util.SimpleExpression; -import ch.njol.util.Kleenean; +import org.bukkit.Bukkit; import org.bukkit.Server; import org.bukkit.ServerTickManager; import org.bukkit.event.Event; @@ -33,10 +28,18 @@ public class ExprTick extends SimplePropertyExpression { + private static boolean isServerVersionAtLeast(String requiredVersion) { + String currentVersion = Bukkit.getServer().getBukkitVersion(); + return currentVersion.compareTo(requiredVersion) >= 0; + } + static { - register(ExprTick.class, Number.class, "[server] tick rate", "servertickmanager"); + if (isServerVersionAtLeast("1.20.3")) { + register(ExprTick.class, Number.class, "[server] tick rate", "servertickmanager"); + } } + @Override public Number convert(Server server) { return server.getServerTickManager().getTickRate(); From 0baa016f4b6d9e6bbf64a665610e55eba7b18faa Mon Sep 17 00:00:00 2001 From: Asleepp Date: Fri, 19 Apr 2024 15:58:14 -0300 Subject: [PATCH 04/34] 2nd time lucky --- src/main/java/ch/njol/skript/expressions/ExprTick.java | 10 ++-------- 1 file changed, 2 insertions(+), 8 deletions(-) diff --git a/src/main/java/ch/njol/skript/expressions/ExprTick.java b/src/main/java/ch/njol/skript/expressions/ExprTick.java index 6273ba91402..9761082607f 100644 --- a/src/main/java/ch/njol/skript/expressions/ExprTick.java +++ b/src/main/java/ch/njol/skript/expressions/ExprTick.java @@ -18,9 +18,9 @@ */ package ch.njol.skript.expressions; +import ch.njol.skript.Skript; import ch.njol.skript.classes.Changer; import ch.njol.skript.expressions.base.SimplePropertyExpression; -import org.bukkit.Bukkit; import org.bukkit.Server; import org.bukkit.ServerTickManager; import org.bukkit.event.Event; @@ -28,18 +28,12 @@ public class ExprTick extends SimplePropertyExpression { - private static boolean isServerVersionAtLeast(String requiredVersion) { - String currentVersion = Bukkit.getServer().getBukkitVersion(); - return currentVersion.compareTo(requiredVersion) >= 0; - } - static { - if (isServerVersionAtLeast("1.20.3")) { + if (Skript.methodExists(Server.class, "getServerTickManager") && Skript.isRunningMinecraft(1, 20, 3)) { register(ExprTick.class, Number.class, "[server] tick rate", "servertickmanager"); } } - @Override public Number convert(Server server) { return server.getServerTickManager().getTickRate(); From b09785209ef1243bc6b8aaf3c81a78477555ec1f Mon Sep 17 00:00:00 2001 From: Asleepp Date: Fri, 19 Apr 2024 18:26:27 -0300 Subject: [PATCH 05/34] freeze, sprint and step --- .../njol/skript/effects/EffFreezeServer.java | 55 ++++++++++++++++ .../njol/skript/effects/EffSprintServer.java | 66 +++++++++++++++++++ .../ch/njol/skript/effects/EffStepServer.java | 66 +++++++++++++++++++ 3 files changed, 187 insertions(+) create mode 100644 src/main/java/ch/njol/skript/effects/EffFreezeServer.java create mode 100644 src/main/java/ch/njol/skript/effects/EffSprintServer.java create mode 100644 src/main/java/ch/njol/skript/effects/EffStepServer.java diff --git a/src/main/java/ch/njol/skript/effects/EffFreezeServer.java b/src/main/java/ch/njol/skript/effects/EffFreezeServer.java new file mode 100644 index 00000000000..b1a4a98004f --- /dev/null +++ b/src/main/java/ch/njol/skript/effects/EffFreezeServer.java @@ -0,0 +1,55 @@ +/** + * This file is part of Skript. + * + * Skript is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Skript is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Skript. If not, see . + * + * Copyright Peter Güttinger, SkriptLang team and contributors + */ +package ch.njol.skript.effects; + +import ch.njol.skript.Skript; +import ch.njol.skript.lang.Effect; +import ch.njol.skript.lang.Expression; +import ch.njol.skript.lang.SkriptParser; +import ch.njol.util.Kleenean; +import org.bukkit.Bukkit; +import org.bukkit.event.Event; +import org.jetbrains.annotations.Nullable; + +public class EffFreezeServer extends Effect { + + static { + Skript.registerEffect(EffFreezeServer.class, + "freeze [the] server", + "unfreeze [the] server"); + } + + private boolean freeze; + + @Override + public boolean init(Expression[] exprs, int matchedPattern, Kleenean isDelayed, SkriptParser.ParseResult parseResult) { + freeze = matchedPattern == 0; + return true; + } + + @Override + protected void execute(Event event) { + Bukkit.getServer().getServerTickManager().setFrozen(freeze); + } + + @Override + public String toString(@Nullable Event e, boolean debug) { + return freeze ? "freeze server effect" : "unfreeze server effect"; + } +} diff --git a/src/main/java/ch/njol/skript/effects/EffSprintServer.java b/src/main/java/ch/njol/skript/effects/EffSprintServer.java new file mode 100644 index 00000000000..ec23541e148 --- /dev/null +++ b/src/main/java/ch/njol/skript/effects/EffSprintServer.java @@ -0,0 +1,66 @@ +/** + * This file is part of Skript. + * + * Skript is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Skript is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Skript. If not, see . + * + * Copyright Peter Güttinger, SkriptLang team and contributors + */ +package ch.njol.skript.effects; + +import ch.njol.skript.Skript; +import ch.njol.skript.lang.Effect; +import ch.njol.skript.lang.Expression; +import ch.njol.skript.lang.SkriptParser; +import ch.njol.skript.util.Timespan; +import ch.njol.util.Kleenean; +import org.bukkit.Bukkit; +import org.bukkit.event.Event; +import org.jetbrains.annotations.Nullable; + +public class EffSprintServer extends Effect { + + static { + Skript.registerEffect(EffSprintServer.class, + "make [the] server sprint for %timespan%", + "make [the] server stop sprinting"); + } + + private boolean sprint; + private Expression timespan; + + @SuppressWarnings("unchecked") + @Override + public boolean init(Expression[] exprs, int matchedPattern, Kleenean isDelayed, SkriptParser.ParseResult parseResult) { + sprint = matchedPattern == 0; + if (sprint) { + timespan = (Expression) exprs[0]; + } + return true; + } + + @Override + protected void execute(Event event) { + if (sprint) { + long sprintTicks = timespan != null ? timespan.getSingle(event).getTicks_i() : 1; + Bukkit.getServer().getServerTickManager().requestGameToSprint((int) sprintTicks); + } else { + Bukkit.getServer().getServerTickManager().stopSprinting(); + } + } + + @Override + public String toString(@Nullable Event e, boolean debug) { + return sprint ? "sprint server effect" : "stop sprinting server effect"; + } +} diff --git a/src/main/java/ch/njol/skript/effects/EffStepServer.java b/src/main/java/ch/njol/skript/effects/EffStepServer.java new file mode 100644 index 00000000000..bb7f320b693 --- /dev/null +++ b/src/main/java/ch/njol/skript/effects/EffStepServer.java @@ -0,0 +1,66 @@ +/** + * This file is part of Skript. + * + * Skript is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Skript is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Skript. If not, see . + * + * Copyright Peter Güttinger, SkriptLang team and contributors + */ +package ch.njol.skript.effects; + +import ch.njol.skript.Skript; +import ch.njol.skript.lang.Effect; +import ch.njol.skript.lang.Expression; +import ch.njol.skript.lang.SkriptParser; +import ch.njol.skript.util.Timespan; +import ch.njol.util.Kleenean; +import org.bukkit.Bukkit; +import org.bukkit.event.Event; +import org.jetbrains.annotations.Nullable; + +public class EffStepServer extends Effect { + + static { + Skript.registerEffect(EffStepServer.class, + "make [the] server step for %timespan%", + "make [the] server stop stepping"); + } + + private boolean step; + private Expression timespan; + + @SuppressWarnings("unchecked") + @Override + public boolean init(Expression[] exprs, int matchedPattern, Kleenean isDelayed, SkriptParser.ParseResult parseResult) { + step = matchedPattern == 0; + if (step) { + timespan = (Expression) exprs[0]; + } + return true; + } + + @Override + protected void execute(Event event) { + if (step) { + long stepTicks = timespan != null ? timespan.getSingle(event).getTicks_i() : 1; + Bukkit.getServer().getServerTickManager().stepGameIfFrozen((int) stepTicks); + } else { + Bukkit.getServer().getServerTickManager().stopStepping(); + } + } + + @Override + public String toString(@Nullable Event e, boolean debug) { + return step ? "step server effect" : "stop stepping server effect"; + } +} From d9d887e1ca1f89611df1374c1aa6d826ee466b0c Mon Sep 17 00:00:00 2001 From: Asleepp Date: Fri, 19 Apr 2024 21:33:50 -0300 Subject: [PATCH 06/34] e --- src/main/java/ch/njol/skript/effects/EffStepServer.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/ch/njol/skript/effects/EffStepServer.java b/src/main/java/ch/njol/skript/effects/EffStepServer.java index bb7f320b693..84e2c02e526 100644 --- a/src/main/java/ch/njol/skript/effects/EffStepServer.java +++ b/src/main/java/ch/njol/skript/effects/EffStepServer.java @@ -61,6 +61,6 @@ protected void execute(Event event) { @Override public String toString(@Nullable Event e, boolean debug) { - return step ? "step server effect" : "stop stepping server effect"; + return step ? "step server" : "stop stepping server"; } } From a79700eb3f61619af4d7d9c3aadac70f491d4b24 Mon Sep 17 00:00:00 2001 From: Asleepp Date: Fri, 19 Apr 2024 21:33:58 -0300 Subject: [PATCH 07/34] e --- src/main/java/ch/njol/skript/effects/EffFreezeServer.java | 2 +- src/main/java/ch/njol/skript/effects/EffSprintServer.java | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/ch/njol/skript/effects/EffFreezeServer.java b/src/main/java/ch/njol/skript/effects/EffFreezeServer.java index b1a4a98004f..6fcb1fe7083 100644 --- a/src/main/java/ch/njol/skript/effects/EffFreezeServer.java +++ b/src/main/java/ch/njol/skript/effects/EffFreezeServer.java @@ -50,6 +50,6 @@ protected void execute(Event event) { @Override public String toString(@Nullable Event e, boolean debug) { - return freeze ? "freeze server effect" : "unfreeze server effect"; + return freeze ? "freeze server" : "unfreeze server"; } } diff --git a/src/main/java/ch/njol/skript/effects/EffSprintServer.java b/src/main/java/ch/njol/skript/effects/EffSprintServer.java index ec23541e148..ff5e4ff450c 100644 --- a/src/main/java/ch/njol/skript/effects/EffSprintServer.java +++ b/src/main/java/ch/njol/skript/effects/EffSprintServer.java @@ -61,6 +61,6 @@ protected void execute(Event event) { @Override public String toString(@Nullable Event e, boolean debug) { - return sprint ? "sprint server effect" : "stop sprinting server effect"; + return sprint ? "sprint server" : "stop sprinting server"; } } From a536e6100f7fe9d1ae31a0cf0071d8b7d97b7c17 Mon Sep 17 00:00:00 2001 From: Asleepp Date: Fri, 19 Apr 2024 21:47:42 -0300 Subject: [PATCH 08/34] changed ExprTick to simpleexpression --- .../ch/njol/skript/expressions/ExprTick.java | 50 +++++++++++-------- 1 file changed, 29 insertions(+), 21 deletions(-) diff --git a/src/main/java/ch/njol/skript/expressions/ExprTick.java b/src/main/java/ch/njol/skript/expressions/ExprTick.java index 9761082607f..31dc7ab47de 100644 --- a/src/main/java/ch/njol/skript/expressions/ExprTick.java +++ b/src/main/java/ch/njol/skript/expressions/ExprTick.java @@ -20,23 +20,35 @@ import ch.njol.skript.Skript; import ch.njol.skript.classes.Changer; -import ch.njol.skript.expressions.base.SimplePropertyExpression; -import org.bukkit.Server; -import org.bukkit.ServerTickManager; +import ch.njol.skript.lang.Expression; +import ch.njol.skript.lang.ExpressionType; +import ch.njol.skript.lang.SkriptParser; +import ch.njol.skript.lang.util.SimpleExpression; +import ch.njol.util.Kleenean; +import org.bukkit.Bukkit; import org.bukkit.event.Event; -import org.eclipse.jdt.annotation.Nullable; +import org.jetbrains.annotations.Nullable; -public class ExprTick extends SimplePropertyExpression { +public class ExprTick extends SimpleExpression { static { - if (Skript.methodExists(Server.class, "getServerTickManager") && Skript.isRunningMinecraft(1, 20, 3)) { - register(ExprTick.class, Number.class, "[server] tick rate", "servertickmanager"); - } + Skript.registerExpression(ExprTick.class, Number.class, ExpressionType.SIMPLE, "server[[']s] tick rate"); } @Override - public Number convert(Server server) { - return server.getServerTickManager().getTickRate(); + public boolean init(Expression[] exprs, int matchedPattern, Kleenean isDelayed, SkriptParser.ParseResult parseResult) { + return true; + } + + @Nullable + @Override + protected Number[] get(Event event) { + return new Number[]{Bukkit.getServer().getServerTickManager().getTickRate()}; + } + + @Override + public boolean isSingle() { + return true; } @Override @@ -45,8 +57,8 @@ public Class getReturnType() { } @Override - protected String getPropertyName() { - return "tick rate"; + public String toString(@Nullable Event event, boolean debug) { + return "server tick rate"; } @Override @@ -60,22 +72,17 @@ public Class[] acceptChange(Changer.ChangeMode mode) { @Override public void change(Event event, @Nullable Object[] delta, Changer.ChangeMode mode) { if (delta != null && delta.length != 0) { - Server server = getExpr().getSingle(event); - if (server == null) { - return; - } - ServerTickManager serverTickManager = server.getServerTickManager(); - float tickRate = serverTickManager.getTickRate(); + float tickRate = Bukkit.getServer().getServerTickManager().getTickRate(); float change = ((Number) delta[0]).floatValue(); switch (mode) { case SET: - serverTickManager.setTickRate(change); + Bukkit.getServer().getServerTickManager().setTickRate(change); break; case ADD: - serverTickManager.setTickRate(tickRate + change); + Bukkit.getServer().getServerTickManager().setTickRate(tickRate + change); break; case REMOVE: - serverTickManager.setTickRate(tickRate - change); + Bukkit.getServer().getServerTickManager().setTickRate(tickRate - change); break; } } @@ -83,3 +90,4 @@ public void change(Event event, @Nullable Object[] delta, Changer.ChangeMode mod } + From dc282d83d2be4a375071de69458bb61035b0bf61 Mon Sep 17 00:00:00 2001 From: Asleepp Date: Sat, 20 Apr 2024 23:05:56 -0300 Subject: [PATCH 09/34] Fixes and additions --- .../skript/conditions/CondEntityFrozen.java | 44 ++++++++++++++ .../skript/conditions/CondServerState.java | 60 +++++++++++++++++++ .../njol/skript/effects/EffFreezeServer.java | 9 ++- .../njol/skript/effects/EffSprintServer.java | 10 +++- .../ch/njol/skript/effects/EffStepServer.java | 9 ++- .../ch/njol/skript/expressions/ExprTick.java | 5 +- 6 files changed, 127 insertions(+), 10 deletions(-) create mode 100644 src/main/java/ch/njol/skript/conditions/CondEntityFrozen.java create mode 100644 src/main/java/ch/njol/skript/conditions/CondServerState.java diff --git a/src/main/java/ch/njol/skript/conditions/CondEntityFrozen.java b/src/main/java/ch/njol/skript/conditions/CondEntityFrozen.java new file mode 100644 index 00000000000..46d6601bfe0 --- /dev/null +++ b/src/main/java/ch/njol/skript/conditions/CondEntityFrozen.java @@ -0,0 +1,44 @@ +package ch.njol.skript.conditions; + +import ch.njol.skript.Skript; +import ch.njol.skript.lang.Condition; +import ch.njol.skript.lang.Expression; +import ch.njol.skript.lang.SkriptParser.ParseResult; +import ch.njol.util.Kleenean; +import org.bukkit.Bukkit; +import org.bukkit.Server; +import org.bukkit.entity.Entity; +import org.bukkit.event.Event; + +import javax.annotation.Nullable; + +public class CondEntityFrozen extends Condition { + + static { + if (Skript.methodExists(Server.class, "getServerTickManager")) { + Skript.registerCondition(CondEntityFrozen.class, + "%entities% (is|are) (server [state]|tick) frozen", + "%entities% (is[n't| not]|are[n't| not]) (server [state]|tick) frozen"); + } + } + + private Expression entities; + + @SuppressWarnings("unchecked") + @Override + public boolean init(Expression[] exprs, int matchedPattern, Kleenean isDelayed, ParseResult parseResult) { + entities = (Expression) exprs[0]; + setNegated(matchedPattern == 1); + return true; + } + + @Override + public boolean check(Event e) { + return entities.check(e, entity -> Bukkit.getServer().getServerTickManager().isFrozen(entity), isNegated()); + } + + @Override + public String toString(@Nullable Event event, boolean debug) { + return "entity/entities " + entities.toString(event, debug) + " " + (isNegated() ? "isn't/aren't " : "is/are ") + "frozen"; + } +} diff --git a/src/main/java/ch/njol/skript/conditions/CondServerState.java b/src/main/java/ch/njol/skript/conditions/CondServerState.java new file mode 100644 index 00000000000..9281d96ea00 --- /dev/null +++ b/src/main/java/ch/njol/skript/conditions/CondServerState.java @@ -0,0 +1,60 @@ +package ch.njol.skript.conditions; + +import ch.njol.skript.Skript; +import ch.njol.skript.lang.Condition; +import ch.njol.skript.lang.Expression; +import ch.njol.skript.lang.SkriptParser.ParseResult; +import ch.njol.util.Kleenean; +import org.bukkit.Bukkit; +import org.bukkit.Server; +import org.bukkit.event.Event; +import org.eclipse.jdt.annotation.Nullable; + +public class CondServerState extends Condition { + + static { + if (Skript.methodExists(Server.class, "getServerTickManager")) { + Skript.registerCondition(CondServerState.class, + "server state is [currently] (:frozen|:stepping|:sprinting|:normal)", + "server state (is[n't| not]) [currently] (:frozen|:stepping|:sprinting|:normal)"); + } + } + + private String state; + + @Override + public boolean init(Expression[] exprs, int matchedPattern, Kleenean isDelayed, ParseResult parseResult) { + if (parseResult.hasTag("stepping")) { + state = "stepping"; + } else if (parseResult.hasTag("sprinting")) { + state = "sprinting"; + } else if (parseResult.hasTag("frozen")) { + state = "frozen"; + } else if (parseResult.hasTag("normal")) { + state = "normal"; + } + + return true; + } + + @Override + public boolean check(Event e) { + switch (state) { + case "frozen": + return Bukkit.getServer().getServerTickManager().isFrozen(); + case "stepping": + return Bukkit.getServer().getServerTickManager().isStepping(); + case "sprinting": + return Bukkit.getServer().getServerTickManager().isSprinting(); + case "normal": + return Bukkit.getServer().getServerTickManager().isRunningNormally(); + } + return false; + } + + @Override + public String toString(@Nullable Event event, boolean debug) { + return "server state is " + state; + } + +} diff --git a/src/main/java/ch/njol/skript/effects/EffFreezeServer.java b/src/main/java/ch/njol/skript/effects/EffFreezeServer.java index 6fcb1fe7083..df4b03677eb 100644 --- a/src/main/java/ch/njol/skript/effects/EffFreezeServer.java +++ b/src/main/java/ch/njol/skript/effects/EffFreezeServer.java @@ -24,15 +24,18 @@ import ch.njol.skript.lang.SkriptParser; import ch.njol.util.Kleenean; import org.bukkit.Bukkit; +import org.bukkit.Server; import org.bukkit.event.Event; import org.jetbrains.annotations.Nullable; public class EffFreezeServer extends Effect { static { - Skript.registerEffect(EffFreezeServer.class, - "freeze [the] server", - "unfreeze [the] server"); + if (Skript.methodExists(Server.class, "getServerTickManager")) { + Skript.registerEffect(EffFreezeServer.class, + "freeze [the] server", + "unfreeze [the] server"); + } } private boolean freeze; diff --git a/src/main/java/ch/njol/skript/effects/EffSprintServer.java b/src/main/java/ch/njol/skript/effects/EffSprintServer.java index ff5e4ff450c..607d3c3a6dd 100644 --- a/src/main/java/ch/njol/skript/effects/EffSprintServer.java +++ b/src/main/java/ch/njol/skript/effects/EffSprintServer.java @@ -25,15 +25,19 @@ import ch.njol.skript.util.Timespan; import ch.njol.util.Kleenean; import org.bukkit.Bukkit; +import org.bukkit.Server; +import org.bukkit.ServerTickManager; import org.bukkit.event.Event; import org.jetbrains.annotations.Nullable; public class EffSprintServer extends Effect { static { - Skript.registerEffect(EffSprintServer.class, - "make [the] server sprint for %timespan%", - "make [the] server stop sprinting"); + if (Skript.methodExists(Server.class, "getServerTickManager")) { + Skript.registerEffect(EffSprintServer.class, + "request [for the] server [to] sprint for %timespan%", + "make [the] server stop sprinting"); + } } private boolean sprint; diff --git a/src/main/java/ch/njol/skript/effects/EffStepServer.java b/src/main/java/ch/njol/skript/effects/EffStepServer.java index 84e2c02e526..50088a07066 100644 --- a/src/main/java/ch/njol/skript/effects/EffStepServer.java +++ b/src/main/java/ch/njol/skript/effects/EffStepServer.java @@ -25,15 +25,18 @@ import ch.njol.skript.util.Timespan; import ch.njol.util.Kleenean; import org.bukkit.Bukkit; +import org.bukkit.Server; import org.bukkit.event.Event; import org.jetbrains.annotations.Nullable; public class EffStepServer extends Effect { static { - Skript.registerEffect(EffStepServer.class, - "make [the] server step for %timespan%", - "make [the] server stop stepping"); + if (Skript.methodExists(Server.class, "getServerTickManager")) { + Skript.registerEffect(EffStepServer.class, + "make [the] server step for %timespan% [if [the] server [state] is frozen]", + "make [the] server stop stepping"); + } } private boolean step; diff --git a/src/main/java/ch/njol/skript/expressions/ExprTick.java b/src/main/java/ch/njol/skript/expressions/ExprTick.java index 31dc7ab47de..fe76709a492 100644 --- a/src/main/java/ch/njol/skript/expressions/ExprTick.java +++ b/src/main/java/ch/njol/skript/expressions/ExprTick.java @@ -26,13 +26,16 @@ import ch.njol.skript.lang.util.SimpleExpression; import ch.njol.util.Kleenean; import org.bukkit.Bukkit; +import org.bukkit.Server; import org.bukkit.event.Event; import org.jetbrains.annotations.Nullable; public class ExprTick extends SimpleExpression { static { - Skript.registerExpression(ExprTick.class, Number.class, ExpressionType.SIMPLE, "server[[']s] tick rate"); + if (Skript.methodExists(Server.class, "getServerTickManager")) { + Skript.registerExpression(ExprTick.class, Number.class, ExpressionType.SIMPLE, "server[[']s] tick rate"); + } } @Override From cc51f01ffab21b7dfe2dab73b9962b5f6d15eaba Mon Sep 17 00:00:00 2001 From: Asleepp Date: Sat, 20 Apr 2024 23:11:26 -0300 Subject: [PATCH 10/34] Fix --- .../skript/classes/data/BukkitClasses.java | 27 ------------------- 1 file changed, 27 deletions(-) diff --git a/src/main/java/ch/njol/skript/classes/data/BukkitClasses.java b/src/main/java/ch/njol/skript/classes/data/BukkitClasses.java index dc263ef91e1..acc33004c23 100644 --- a/src/main/java/ch/njol/skript/classes/data/BukkitClasses.java +++ b/src/main/java/ch/njol/skript/classes/data/BukkitClasses.java @@ -1549,33 +1549,6 @@ public String toVariableNameString(EnchantmentOffer eo) { .name("Transform Reason") .description("Represents a transform reason of an entity transform event.") .since("2.8.0")); - Classes.registerClass(new ClassInfo<>(ServerTickManager.class, "servertickmanager") - .user("server tick manager") - .name("Server Tick Manager") - .description("Represents a server's tick manager.") - .since("INSERT VERSION") - .parser(new Parser() { - - @Nullable - @Override - public ServerTickManager parse(String s, ParseContext parseContext) { - return null; // can't be parsed from a string - } - - @Override - public String toString(ServerTickManager serverTickManager, int i) { - return "server tick manager"; - } - - @Override - public String toVariableNameString(ServerTickManager serverTickManager) { - return "server tick manager"; - } - - public String getVariableNamePattern() { - return "server tick manager"; - } - })); } From 3d07f893891bb59f32b0a4c90d095cb88c1ca2c4 Mon Sep 17 00:00:00 2001 From: Asleepp Date: Sat, 20 Apr 2024 23:12:48 -0300 Subject: [PATCH 11/34] license moment --- .../skript/conditions/CondEntityFrozen.java | 18 ++++++++++++++++++ .../skript/conditions/CondServerState.java | 18 ++++++++++++++++++ 2 files changed, 36 insertions(+) diff --git a/src/main/java/ch/njol/skript/conditions/CondEntityFrozen.java b/src/main/java/ch/njol/skript/conditions/CondEntityFrozen.java index 46d6601bfe0..e8d46bba205 100644 --- a/src/main/java/ch/njol/skript/conditions/CondEntityFrozen.java +++ b/src/main/java/ch/njol/skript/conditions/CondEntityFrozen.java @@ -1,3 +1,21 @@ +/** + * This file is part of Skript. + * + * Skript is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Skript is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Skript. If not, see . + * + * Copyright Peter Güttinger, SkriptLang team and contributors + */ package ch.njol.skript.conditions; import ch.njol.skript.Skript; diff --git a/src/main/java/ch/njol/skript/conditions/CondServerState.java b/src/main/java/ch/njol/skript/conditions/CondServerState.java index 9281d96ea00..425969c77c2 100644 --- a/src/main/java/ch/njol/skript/conditions/CondServerState.java +++ b/src/main/java/ch/njol/skript/conditions/CondServerState.java @@ -1,3 +1,21 @@ +/** + * This file is part of Skript. + * + * Skript is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Skript is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Skript. If not, see . + * + * Copyright Peter Güttinger, SkriptLang team and contributors + */ package ch.njol.skript.conditions; import ch.njol.skript.Skript; From 2c5a1329295a7f6cc6d9c151ca720582f20c2c5a Mon Sep 17 00:00:00 2001 From: Asleepp Date: Sun, 21 Apr 2024 09:26:09 -0300 Subject: [PATCH 12/34] Additions + Docs --- .../skript/conditions/CondEntityFrozen.java | 11 +++- .../skript/conditions/CondServerState.java | 14 ++++- .../njol/skript/effects/EffFreezeServer.java | 11 +++- .../njol/skript/effects/EffSprintServer.java | 13 ++++- .../ch/njol/skript/effects/EffStepServer.java | 11 +++- .../expressions/ExprFrozenTicksToRun.java | 57 +++++++++++++++++++ .../ch/njol/skript/expressions/ExprTick.java | 17 ++++++ 7 files changed, 127 insertions(+), 7 deletions(-) create mode 100644 src/main/java/ch/njol/skript/expressions/ExprFrozenTicksToRun.java diff --git a/src/main/java/ch/njol/skript/conditions/CondEntityFrozen.java b/src/main/java/ch/njol/skript/conditions/CondEntityFrozen.java index e8d46bba205..402344cdbed 100644 --- a/src/main/java/ch/njol/skript/conditions/CondEntityFrozen.java +++ b/src/main/java/ch/njol/skript/conditions/CondEntityFrozen.java @@ -19,6 +19,10 @@ package ch.njol.skript.conditions; 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.Condition; import ch.njol.skript.lang.Expression; import ch.njol.skript.lang.SkriptParser.ParseResult; @@ -29,7 +33,12 @@ import org.bukkit.event.Event; import javax.annotation.Nullable; - +@Name("Entity Frozen") +@Description({ + "Checks if the specified entities are frozen or not.", + "Requires Minecraft 1.20.4+"}) +@Examples({"if target entity is server frozen:"}) +@Since("INSERT VERSION") public class CondEntityFrozen extends Condition { static { diff --git a/src/main/java/ch/njol/skript/conditions/CondServerState.java b/src/main/java/ch/njol/skript/conditions/CondServerState.java index 425969c77c2..86ba0d4970e 100644 --- a/src/main/java/ch/njol/skript/conditions/CondServerState.java +++ b/src/main/java/ch/njol/skript/conditions/CondServerState.java @@ -19,6 +19,10 @@ package ch.njol.skript.conditions; 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.Condition; import ch.njol.skript.lang.Expression; import ch.njol.skript.lang.SkriptParser.ParseResult; @@ -28,13 +32,19 @@ import org.bukkit.event.Event; import org.eclipse.jdt.annotation.Nullable; +@Name("Server State") +@Description({ + "Represents the state of the server, for example, if the server is frozen, or running normally.", + "Requires Minecraft 1.20.4+"}) +@Examples({"if server's state is currently frozen:", "if server state is normal:"}) +@Since("INSERT VERSION") public class CondServerState extends Condition { static { if (Skript.methodExists(Server.class, "getServerTickManager")) { Skript.registerCondition(CondServerState.class, - "server state is [currently] (:frozen|:stepping|:sprinting|:normal)", - "server state (is[n't| not]) [currently] (:frozen|:stepping|:sprinting|:normal)"); + "server[[']s] state is [currently] (:frozen|:stepping|:sprinting|:normal)", + "server[[']s] state (is[n't| not]) [currently] (:frozen|:stepping|:sprinting|:normal)"); } } diff --git a/src/main/java/ch/njol/skript/effects/EffFreezeServer.java b/src/main/java/ch/njol/skript/effects/EffFreezeServer.java index df4b03677eb..9a1b8ab968d 100644 --- a/src/main/java/ch/njol/skript/effects/EffFreezeServer.java +++ b/src/main/java/ch/njol/skript/effects/EffFreezeServer.java @@ -19,6 +19,10 @@ 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; @@ -27,7 +31,12 @@ import org.bukkit.Server; import org.bukkit.event.Event; import org.jetbrains.annotations.Nullable; - +@Name("Freeze/Unfreeze Server") +@Description({ + "Freezes or unfreezes the server.", + "Requires Minecraft 1.20.4+"}) +@Examples({"freeze server", "unfreeze server"}) +@Since("INSERT VERSION") public class EffFreezeServer extends Effect { static { diff --git a/src/main/java/ch/njol/skript/effects/EffSprintServer.java b/src/main/java/ch/njol/skript/effects/EffSprintServer.java index 607d3c3a6dd..e7e21043ca2 100644 --- a/src/main/java/ch/njol/skript/effects/EffSprintServer.java +++ b/src/main/java/ch/njol/skript/effects/EffSprintServer.java @@ -19,23 +19,32 @@ package ch.njol.skript.effects; import ch.njol.skript.Skript; +import ch.njol.skript.doc.Since; import ch.njol.skript.lang.Effect; import ch.njol.skript.lang.Expression; import ch.njol.skript.lang.SkriptParser; import ch.njol.skript.util.Timespan; +import ch.njol.skript.doc.Description; +import ch.njol.skript.doc.Examples; +import ch.njol.skript.doc.Name; import ch.njol.util.Kleenean; import org.bukkit.Bukkit; import org.bukkit.Server; -import org.bukkit.ServerTickManager; import org.bukkit.event.Event; import org.jetbrains.annotations.Nullable; +@Name("Sprint Server") +@Description({ + "Requests the server to sprint for a certain amount of time, or stops the server from sprinting.", + "Requires Minecraft 1.20.4+"}) +@Examples({"request server to sprint for 10 seconds", "make server stop sprinting"}) +@Since("INSERT VERSION") public class EffSprintServer extends Effect { static { if (Skript.methodExists(Server.class, "getServerTickManager")) { Skript.registerEffect(EffSprintServer.class, - "request [for the] server [to] sprint for %timespan%", + "request [for [the]] server [to] sprint for %timespan%", "make [the] server stop sprinting"); } } diff --git a/src/main/java/ch/njol/skript/effects/EffStepServer.java b/src/main/java/ch/njol/skript/effects/EffStepServer.java index 50088a07066..c39c9fbd290 100644 --- a/src/main/java/ch/njol/skript/effects/EffStepServer.java +++ b/src/main/java/ch/njol/skript/effects/EffStepServer.java @@ -19,16 +19,25 @@ package ch.njol.skript.effects; import ch.njol.skript.Skript; +import ch.njol.skript.doc.Since; import ch.njol.skript.lang.Effect; import ch.njol.skript.lang.Expression; import ch.njol.skript.lang.SkriptParser; import ch.njol.skript.util.Timespan; +import ch.njol.skript.doc.Description; +import ch.njol.skript.doc.Examples; +import ch.njol.skript.doc.Name; import ch.njol.util.Kleenean; import org.bukkit.Bukkit; import org.bukkit.Server; import org.bukkit.event.Event; import org.jetbrains.annotations.Nullable; - +@Name("Step Server") +@Description({ + "Makes the server step for a certain amount of time if the server state is frozen, or stops the server from stepping.", + "Requires Minecraft 1.20.4+"}) +@Examples({"make server step for 5 seconds if server is frozen", "make server stop stepping"}) +@Since("INSERT VERSION") public class EffStepServer extends Effect { static { diff --git a/src/main/java/ch/njol/skript/expressions/ExprFrozenTicksToRun.java b/src/main/java/ch/njol/skript/expressions/ExprFrozenTicksToRun.java new file mode 100644 index 00000000000..8c54a8d0557 --- /dev/null +++ b/src/main/java/ch/njol/skript/expressions/ExprFrozenTicksToRun.java @@ -0,0 +1,57 @@ +package ch.njol.skript.expressions; + +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.Expression; +import ch.njol.skript.lang.ExpressionType; +import ch.njol.skript.lang.SkriptParser.ParseResult; +import ch.njol.skript.lang.util.SimpleExpression; +import ch.njol.util.Kleenean; +import org.bukkit.Bukkit; +import org.bukkit.Server; +import org.bukkit.event.Event; +import org.eclipse.jdt.annotation.Nullable; + +@Name("Frozen Ticks To Run") +@Description({ + "Gets the amount of frozen ticks left to run on the server.", + "Requires Minecraft 1.20.4+"}) +@Examples({"broadcast \"%frozen ticks to run%\""}) +@Since("INSERT VERSION") +public class ExprFrozenTicksToRun extends SimpleExpression { + + static { + if (Skript.methodExists(Server.class, "getServerTickManager")) { + Skript.registerExpression(ExprFrozenTicksToRun.class, Number.class, ExpressionType.SIMPLE, "[amount of] frozen ticks [left] to run"); + } + } + + @Override + public boolean isSingle() { + return true; + } + + @Override + public Class getReturnType() { + return Number.class; + } + + @Override + public String toString(@Nullable Event event, boolean debug) { + return "frozen ticks to run"; + } + + @Override + public boolean init(Expression[] exprs, int matchedPattern, Kleenean isDelayed, ParseResult parseResult) { + return true; + } + + @Override + @Nullable + protected Number[] get(Event event) { + return new Number[]{Bukkit.getServer().getServerTickManager().getFrozenTicksToRun()}; + } +} diff --git a/src/main/java/ch/njol/skript/expressions/ExprTick.java b/src/main/java/ch/njol/skript/expressions/ExprTick.java index fe76709a492..b4e2b0fab48 100644 --- a/src/main/java/ch/njol/skript/expressions/ExprTick.java +++ b/src/main/java/ch/njol/skript/expressions/ExprTick.java @@ -20,6 +20,10 @@ import ch.njol.skript.Skript; import ch.njol.skript.classes.Changer; +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.Expression; import ch.njol.skript.lang.ExpressionType; import ch.njol.skript.lang.SkriptParser; @@ -30,6 +34,19 @@ import org.bukkit.event.Event; import org.jetbrains.annotations.Nullable; +@Name("Server Tick Rate") +@Description({ + "Gets or sets the current tick rate of the server. The tick rate is the number of game ticks that occur in a second. Higher values mean the game runs faster.", + "The server's default tick rate is 20.", + "Requires Minecraft 1.20.4+"}) +@Examples({ + "send \"%server's tick rate%\" to player", + "set server's tick rate to 20 # This is the default tick rate.", + "add 5 to server's tick rate", + "remove 2 from server's tick rate" +}) +@Since("INSERT VERSION") + public class ExprTick extends SimpleExpression { static { From 7a037d7af5f9f9f68661ce14f7d71eb845f4e2c7 Mon Sep 17 00:00:00 2001 From: Asleepp Date: Sun, 21 Apr 2024 09:30:22 -0300 Subject: [PATCH 13/34] sigh --- .../expressions/ExprFrozenTicksToRun.java | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/src/main/java/ch/njol/skript/expressions/ExprFrozenTicksToRun.java b/src/main/java/ch/njol/skript/expressions/ExprFrozenTicksToRun.java index 8c54a8d0557..f78d3ae1595 100644 --- a/src/main/java/ch/njol/skript/expressions/ExprFrozenTicksToRun.java +++ b/src/main/java/ch/njol/skript/expressions/ExprFrozenTicksToRun.java @@ -1,3 +1,21 @@ +/** + * This file is part of Skript. + * + * Skript is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Skript is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Skript. If not, see . + * + * Copyright Peter Güttinger, SkriptLang team and contributors + */ package ch.njol.skript.expressions; import ch.njol.skript.Skript; From f5d1f0e07d101f06607628634934648ffa2888c0 Mon Sep 17 00:00:00 2001 From: Asleepp Date: Sun, 21 Apr 2024 09:35:15 -0300 Subject: [PATCH 14/34] Leaving BukkitClasses.java as it was --- src/main/java/ch/njol/skript/classes/data/BukkitClasses.java | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/main/java/ch/njol/skript/classes/data/BukkitClasses.java b/src/main/java/ch/njol/skript/classes/data/BukkitClasses.java index acc33004c23..25000a2390d 100644 --- a/src/main/java/ch/njol/skript/classes/data/BukkitClasses.java +++ b/src/main/java/ch/njol/skript/classes/data/BukkitClasses.java @@ -38,7 +38,6 @@ import org.bukkit.Location; import org.bukkit.Material; import org.bukkit.OfflinePlayer; -import org.bukkit.ServerTickManager; import org.bukkit.SoundCategory; import org.bukkit.World; import org.bukkit.World.Environment; @@ -1549,7 +1548,6 @@ public String toVariableNameString(EnchantmentOffer eo) { .name("Transform Reason") .description("Represents a transform reason of an entity transform event.") .since("2.8.0")); - } } From 22826fe42465768673a5e8c45d775b533da4bee6 Mon Sep 17 00:00:00 2001 From: Asleepp Date: Mon, 22 Apr 2024 15:20:38 -0300 Subject: [PATCH 15/34] jesus christ --- .../skript/conditions/CondEntityFrozen.java | 71 ------------------- .../skript/conditions/CondIsTickFrozen.java | 61 ++++++++++++++++ ...verState.java => CondServerTickState.java} | 59 ++++++++------- .../njol/skript/effects/EffFreezeServer.java | 20 ++++-- .../njol/skript/effects/EffSprintServer.java | 31 ++++---- .../ch/njol/skript/effects/EffStepServer.java | 31 ++++---- .../expressions/ExprFrozenTicksToRun.java | 32 +++++---- .../ch/njol/skript/expressions/ExprTick.java | 55 +++++++------- 8 files changed, 194 insertions(+), 166 deletions(-) delete mode 100644 src/main/java/ch/njol/skript/conditions/CondEntityFrozen.java create mode 100644 src/main/java/ch/njol/skript/conditions/CondIsTickFrozen.java rename src/main/java/ch/njol/skript/conditions/{CondServerState.java => CondServerTickState.java} (56%) diff --git a/src/main/java/ch/njol/skript/conditions/CondEntityFrozen.java b/src/main/java/ch/njol/skript/conditions/CondEntityFrozen.java deleted file mode 100644 index 402344cdbed..00000000000 --- a/src/main/java/ch/njol/skript/conditions/CondEntityFrozen.java +++ /dev/null @@ -1,71 +0,0 @@ -/** - * This file is part of Skript. - * - * Skript is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * Skript is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Skript. If not, see . - * - * Copyright Peter Güttinger, SkriptLang team and contributors - */ -package ch.njol.skript.conditions; - -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.Condition; -import ch.njol.skript.lang.Expression; -import ch.njol.skript.lang.SkriptParser.ParseResult; -import ch.njol.util.Kleenean; -import org.bukkit.Bukkit; -import org.bukkit.Server; -import org.bukkit.entity.Entity; -import org.bukkit.event.Event; - -import javax.annotation.Nullable; -@Name("Entity Frozen") -@Description({ - "Checks if the specified entities are frozen or not.", - "Requires Minecraft 1.20.4+"}) -@Examples({"if target entity is server frozen:"}) -@Since("INSERT VERSION") -public class CondEntityFrozen extends Condition { - - static { - if (Skript.methodExists(Server.class, "getServerTickManager")) { - Skript.registerCondition(CondEntityFrozen.class, - "%entities% (is|are) (server [state]|tick) frozen", - "%entities% (is[n't| not]|are[n't| not]) (server [state]|tick) frozen"); - } - } - - private Expression entities; - - @SuppressWarnings("unchecked") - @Override - public boolean init(Expression[] exprs, int matchedPattern, Kleenean isDelayed, ParseResult parseResult) { - entities = (Expression) exprs[0]; - setNegated(matchedPattern == 1); - return true; - } - - @Override - public boolean check(Event e) { - return entities.check(e, entity -> Bukkit.getServer().getServerTickManager().isFrozen(entity), isNegated()); - } - - @Override - public String toString(@Nullable Event event, boolean debug) { - return "entity/entities " + entities.toString(event, debug) + " " + (isNegated() ? "isn't/aren't " : "is/are ") + "frozen"; - } -} diff --git a/src/main/java/ch/njol/skript/conditions/CondIsTickFrozen.java b/src/main/java/ch/njol/skript/conditions/CondIsTickFrozen.java new file mode 100644 index 00000000000..76abc06b195 --- /dev/null +++ b/src/main/java/ch/njol/skript/conditions/CondIsTickFrozen.java @@ -0,0 +1,61 @@ +/** + * This file is part of Skript. + * + * Skript is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Skript is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Skript. If not, see . + * + * Copyright Peter Güttinger, SkriptLang team and contributors + */ +package ch.njol.skript.conditions; + +import ch.njol.skript.Skript; +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.RequiredPlugins; +import ch.njol.skript.doc.Since; +import org.bukkit.Bukkit; +import org.bukkit.Server; +import org.bukkit.ServerTickManager; +import org.bukkit.entity.Entity; + +@Name("Is Entity Tick Frozen") +@Description("Checks if the specified entities are frozen or not.") +@Examples({"if target entity is tick frozen:"}) +@Since("INSERT VERSION") +@RequiredPlugins("Minecraft 1.20.4+") +public class CondIsTickFrozen extends PropertyCondition { + + private static final ServerTickManager SERVER_TICK_MANAGER; + + static { + if (Skript.methodExists(Server.class, "getServerTickManager")) { + SERVER_TICK_MANAGER = Bukkit.getServerTickManager(); + register(CondIsTickFrozen.class, PropertyType.BE, "tick frozen", "entities"); + } else { + SERVER_TICK_MANAGER = null; + } + } + + @Override + public boolean check(Entity entity) { + return SERVER_TICK_MANAGER != null && SERVER_TICK_MANAGER.isFrozen(entity); + } + + @Override + protected String getPropertyName() { + return "tick frozen"; + } +} + diff --git a/src/main/java/ch/njol/skript/conditions/CondServerState.java b/src/main/java/ch/njol/skript/conditions/CondServerTickState.java similarity index 56% rename from src/main/java/ch/njol/skript/conditions/CondServerState.java rename to src/main/java/ch/njol/skript/conditions/CondServerTickState.java index 86ba0d4970e..4ac30e0b60a 100644 --- a/src/main/java/ch/njol/skript/conditions/CondServerState.java +++ b/src/main/java/ch/njol/skript/conditions/CondServerTickState.java @@ -22,6 +22,7 @@ import ch.njol.skript.doc.Description; import ch.njol.skript.doc.Examples; import ch.njol.skript.doc.Name; +import ch.njol.skript.doc.RequiredPlugins; import ch.njol.skript.doc.Since; import ch.njol.skript.lang.Condition; import ch.njol.skript.lang.Expression; @@ -29,37 +30,46 @@ import ch.njol.util.Kleenean; import org.bukkit.Bukkit; import org.bukkit.Server; +import org.bukkit.ServerTickManager; import org.bukkit.event.Event; import org.eclipse.jdt.annotation.Nullable; -@Name("Server State") -@Description({ - "Represents the state of the server, for example, if the server is frozen, or running normally.", - "Requires Minecraft 1.20.4+"}) -@Examples({"if server's state is currently frozen:", "if server state is normal:"}) +@Name("Server Tick State") +@Description("Represents the ticking state of the server, for example, if the server is frozen, or running normally.") +@Examples({"if server's tick state is currently frozen:", "if server tick state is normal:"}) @Since("INSERT VERSION") -public class CondServerState extends Condition { +@RequiredPlugins("Minecraft 1.20.4+") +public class CondServerTickState extends Condition { + + public enum ServerState { + FROZEN, STEPPING, SPRINTING, NORMAL + } + + private static final ServerTickManager SERVER_TICK_MANAGER; static { if (Skript.methodExists(Server.class, "getServerTickManager")) { - Skript.registerCondition(CondServerState.class, - "server[[']s] state is [currently] (:frozen|:stepping|:sprinting|:normal)", - "server[[']s] state (is[n't| not]) [currently] (:frozen|:stepping|:sprinting|:normal)"); + SERVER_TICK_MANAGER = Bukkit.getServerTickManager(); + Skript.registerCondition(CondServerTickState.class, + "[the] server['s] tick[ing] state is [currently] (:frozen|:stepping|:sprinting|:normal)", + "[the] server['s] tick[ing] state (is[n't| not]) [currently] (:frozen|:stepping|:sprinting|:normal)"); + } else { + SERVER_TICK_MANAGER = null; } } - private String state; + private ServerState state; @Override public boolean init(Expression[] exprs, int matchedPattern, Kleenean isDelayed, ParseResult parseResult) { if (parseResult.hasTag("stepping")) { - state = "stepping"; + state = ServerState.STEPPING; } else if (parseResult.hasTag("sprinting")) { - state = "sprinting"; + state = ServerState.SPRINTING; } else if (parseResult.hasTag("frozen")) { - state = "frozen"; + state = ServerState.FROZEN; } else if (parseResult.hasTag("normal")) { - state = "normal"; + state = ServerState.NORMAL; } return true; @@ -68,21 +78,20 @@ public boolean init(Expression[] exprs, int matchedPattern, Kleenean isDelaye @Override public boolean check(Event e) { switch (state) { - case "frozen": - return Bukkit.getServer().getServerTickManager().isFrozen(); - case "stepping": - return Bukkit.getServer().getServerTickManager().isStepping(); - case "sprinting": - return Bukkit.getServer().getServerTickManager().isSprinting(); - case "normal": - return Bukkit.getServer().getServerTickManager().isRunningNormally(); + case FROZEN: + return SERVER_TICK_MANAGER.isFrozen() != isNegated(); + case STEPPING: + return SERVER_TICK_MANAGER.isStepping() != isNegated(); + case SPRINTING: + return SERVER_TICK_MANAGER.isSprinting() != isNegated(); + case NORMAL: + return SERVER_TICK_MANAGER.isRunningNormally() != isNegated(); } - return false; + return isNegated(); } @Override public String toString(@Nullable Event event, boolean debug) { - return "server state is " + state; + return "the server's tick state is " + state; } - } diff --git a/src/main/java/ch/njol/skript/effects/EffFreezeServer.java b/src/main/java/ch/njol/skript/effects/EffFreezeServer.java index 9a1b8ab968d..13fca8ca309 100644 --- a/src/main/java/ch/njol/skript/effects/EffFreezeServer.java +++ b/src/main/java/ch/njol/skript/effects/EffFreezeServer.java @@ -22,46 +22,52 @@ import ch.njol.skript.doc.Description; import ch.njol.skript.doc.Examples; import ch.njol.skript.doc.Name; +import ch.njol.skript.doc.RequiredPlugins; import ch.njol.skript.doc.Since; import ch.njol.skript.lang.Effect; import ch.njol.skript.lang.Expression; -import ch.njol.skript.lang.SkriptParser; +import ch.njol.skript.lang.SkriptParser.ParseResult; import ch.njol.util.Kleenean; import org.bukkit.Bukkit; import org.bukkit.Server; +import org.bukkit.ServerTickManager; import org.bukkit.event.Event; import org.jetbrains.annotations.Nullable; @Name("Freeze/Unfreeze Server") -@Description({ - "Freezes or unfreezes the server.", - "Requires Minecraft 1.20.4+"}) +@Description("Freezes or unfreezes the server.") @Examples({"freeze server", "unfreeze server"}) @Since("INSERT VERSION") +@RequiredPlugins("Minecraft 1.20.4+") public class EffFreezeServer extends Effect { + private static final ServerTickManager SERVER_TICK_MANAGER; + static { if (Skript.methodExists(Server.class, "getServerTickManager")) { + SERVER_TICK_MANAGER = Bukkit.getServerTickManager(); Skript.registerEffect(EffFreezeServer.class, "freeze [the] server", "unfreeze [the] server"); + } else { + SERVER_TICK_MANAGER = null; } } private boolean freeze; @Override - public boolean init(Expression[] exprs, int matchedPattern, Kleenean isDelayed, SkriptParser.ParseResult parseResult) { + public boolean init(Expression[] exprs, int matchedPattern, Kleenean isDelayed, ParseResult parseResult) { freeze = matchedPattern == 0; return true; } @Override protected void execute(Event event) { - Bukkit.getServer().getServerTickManager().setFrozen(freeze); + SERVER_TICK_MANAGER.setFrozen(freeze); } @Override - public String toString(@Nullable Event e, boolean debug) { + public String toString(@Nullable Event event, boolean debug) { return freeze ? "freeze server" : "unfreeze server"; } } diff --git a/src/main/java/ch/njol/skript/effects/EffSprintServer.java b/src/main/java/ch/njol/skript/effects/EffSprintServer.java index e7e21043ca2..013b230a135 100644 --- a/src/main/java/ch/njol/skript/effects/EffSprintServer.java +++ b/src/main/java/ch/njol/skript/effects/EffSprintServer.java @@ -19,10 +19,11 @@ package ch.njol.skript.effects; import ch.njol.skript.Skript; +import ch.njol.skript.doc.RequiredPlugins; import ch.njol.skript.doc.Since; import ch.njol.skript.lang.Effect; import ch.njol.skript.lang.Expression; -import ch.njol.skript.lang.SkriptParser; +import ch.njol.skript.lang.SkriptParser.ParseResult; import ch.njol.skript.util.Timespan; import ch.njol.skript.doc.Description; import ch.njol.skript.doc.Examples; @@ -30,22 +31,27 @@ import ch.njol.util.Kleenean; import org.bukkit.Bukkit; import org.bukkit.Server; +import org.bukkit.ServerTickManager; import org.bukkit.event.Event; import org.jetbrains.annotations.Nullable; @Name("Sprint Server") -@Description({ - "Requests the server to sprint for a certain amount of time, or stops the server from sprinting.", - "Requires Minecraft 1.20.4+"}) +@Description("Requests the server to sprint for a certain amount of time, or stops the server from sprinting.") @Examples({"request server to sprint for 10 seconds", "make server stop sprinting"}) @Since("INSERT VERSION") +@RequiredPlugins("Minecraft 1.20.4+") public class EffSprintServer extends Effect { + private static final ServerTickManager SERVER_TICK_MANAGER; + static { if (Skript.methodExists(Server.class, "getServerTickManager")) { + SERVER_TICK_MANAGER = Bukkit.getServerTickManager(); Skript.registerEffect(EffSprintServer.class, "request [for [the]] server [to] sprint for %timespan%", "make [the] server stop sprinting"); + } else { + SERVER_TICK_MANAGER = null; } } @@ -54,26 +60,27 @@ public class EffSprintServer extends Effect { @SuppressWarnings("unchecked") @Override - public boolean init(Expression[] exprs, int matchedPattern, Kleenean isDelayed, SkriptParser.ParseResult parseResult) { + public boolean init(Expression[] exprs, int matchedPattern, Kleenean isDelayed, ParseResult parseResult) { sprint = matchedPattern == 0; - if (sprint) { + if (sprint) timespan = (Expression) exprs[0]; - } return true; } @Override protected void execute(Event event) { if (sprint) { - long sprintTicks = timespan != null ? timespan.getSingle(event).getTicks_i() : 1; - Bukkit.getServer().getServerTickManager().requestGameToSprint((int) sprintTicks); + Timespan timespanInstance = timespan.getSingle(event); + long sprintTicks = timespanInstance != null ? timespanInstance.getTicks() : 1; + SERVER_TICK_MANAGER.requestGameToSprint((int) sprintTicks); } else { - Bukkit.getServer().getServerTickManager().stopSprinting(); + SERVER_TICK_MANAGER.stopSprinting(); } } + @Override - public String toString(@Nullable Event e, boolean debug) { - return sprint ? "sprint server" : "stop sprinting server"; + public String toString(@Nullable Event event, boolean debug) { + return sprint ? "request to sprint server for" + timespan.toString(event, debug) : "stop sprinting server"; } } diff --git a/src/main/java/ch/njol/skript/effects/EffStepServer.java b/src/main/java/ch/njol/skript/effects/EffStepServer.java index c39c9fbd290..89f61939b2a 100644 --- a/src/main/java/ch/njol/skript/effects/EffStepServer.java +++ b/src/main/java/ch/njol/skript/effects/EffStepServer.java @@ -19,6 +19,7 @@ package ch.njol.skript.effects; import ch.njol.skript.Skript; +import ch.njol.skript.doc.RequiredPlugins; import ch.njol.skript.doc.Since; import ch.njol.skript.lang.Effect; import ch.njol.skript.lang.Expression; @@ -30,49 +31,53 @@ import ch.njol.util.Kleenean; import org.bukkit.Bukkit; import org.bukkit.Server; +import org.bukkit.ServerTickManager; import org.bukkit.event.Event; import org.jetbrains.annotations.Nullable; @Name("Step Server") -@Description({ - "Makes the server step for a certain amount of time if the server state is frozen, or stops the server from stepping.", - "Requires Minecraft 1.20.4+"}) +@Description("Makes the server step for a certain amount of time if the server state is frozen, or stops the server from stepping.") @Examples({"make server step for 5 seconds if server is frozen", "make server stop stepping"}) @Since("INSERT VERSION") +@RequiredPlugins("Minecraft 1.20.4+") public class EffStepServer extends Effect { + private static final ServerTickManager SERVER_TICK_MANAGER; + static { if (Skript.methodExists(Server.class, "getServerTickManager")) { + SERVER_TICK_MANAGER = Bukkit.getServerTickManager(); Skript.registerEffect(EffStepServer.class, - "make [the] server step for %timespan% [if [the] server [state] is frozen]", + "make [the] server step for %timespan%", "make [the] server stop stepping"); + } else { + SERVER_TICK_MANAGER = null; } } - private boolean step; private Expression timespan; @SuppressWarnings("unchecked") @Override public boolean init(Expression[] exprs, int matchedPattern, Kleenean isDelayed, SkriptParser.ParseResult parseResult) { - step = matchedPattern == 0; - if (step) { + if (matchedPattern == 0) timespan = (Expression) exprs[0]; - } return true; } @Override protected void execute(Event event) { - if (step) { - long stepTicks = timespan != null ? timespan.getSingle(event).getTicks_i() : 1; - Bukkit.getServer().getServerTickManager().stepGameIfFrozen((int) stepTicks); + Timespan timespanInstance = timespan.getSingle(event); + if (timespanInstance != null) { + long stepTicks = timespanInstance.getTicks(); + SERVER_TICK_MANAGER.stepGameIfFrozen((int) stepTicks); } else { - Bukkit.getServer().getServerTickManager().stopStepping(); + SERVER_TICK_MANAGER.stopStepping(); } } + @Override public String toString(@Nullable Event e, boolean debug) { - return step ? "step server" : "stop stepping server"; + return timespan == null ? "make the server stop stepping" : "make the step server for " + timespan.toString(e, debug); } } diff --git a/src/main/java/ch/njol/skript/expressions/ExprFrozenTicksToRun.java b/src/main/java/ch/njol/skript/expressions/ExprFrozenTicksToRun.java index f78d3ae1595..98ad9b844b6 100644 --- a/src/main/java/ch/njol/skript/expressions/ExprFrozenTicksToRun.java +++ b/src/main/java/ch/njol/skript/expressions/ExprFrozenTicksToRun.java @@ -22,6 +22,7 @@ import ch.njol.skript.doc.Description; import ch.njol.skript.doc.Examples; import ch.njol.skript.doc.Name; +import ch.njol.skript.doc.RequiredPlugins; import ch.njol.skript.doc.Since; import ch.njol.skript.lang.Expression; import ch.njol.skript.lang.ExpressionType; @@ -30,46 +31,51 @@ import ch.njol.util.Kleenean; import org.bukkit.Bukkit; import org.bukkit.Server; +import org.bukkit.ServerTickManager; import org.bukkit.event.Event; import org.eclipse.jdt.annotation.Nullable; @Name("Frozen Ticks To Run") -@Description({ - "Gets the amount of frozen ticks left to run on the server.", - "Requires Minecraft 1.20.4+"}) +@Description("Gets the amount of frozen ticks left to run on the server.") @Examples({"broadcast \"%frozen ticks to run%\""}) @Since("INSERT VERSION") +@RequiredPlugins("Minecraft 1.20.4+") public class ExprFrozenTicksToRun extends SimpleExpression { + private static final ServerTickManager SERVER_TICK_MANAGER; + static { if (Skript.methodExists(Server.class, "getServerTickManager")) { + SERVER_TICK_MANAGER = Bukkit.getServerTickManager(); Skript.registerExpression(ExprFrozenTicksToRun.class, Number.class, ExpressionType.SIMPLE, "[amount of] frozen ticks [left] to run"); + } else { + SERVER_TICK_MANAGER = null; } } @Override - public boolean isSingle() { + public boolean init(Expression[] exprs, int matchedPattern, Kleenean isDelayed, ParseResult parseResult) { return true; } @Override - public Class getReturnType() { - return Number.class; + public boolean isSingle() { + return true; } @Override - public String toString(@Nullable Event event, boolean debug) { - return "frozen ticks to run"; + public Class getReturnType() { + return Number.class; } @Override - public boolean init(Expression[] exprs, int matchedPattern, Kleenean isDelayed, ParseResult parseResult) { - return true; + @Nullable + protected Number[] get(Event event) { + return new Number[]{SERVER_TICK_MANAGER.getFrozenTicksToRun()}; } @Override - @Nullable - protected Number[] get(Event event) { - return new Number[]{Bukkit.getServer().getServerTickManager().getFrozenTicksToRun()}; + public String toString(@Nullable Event event, boolean debug) { + return "frozen ticks to run"; } } diff --git a/src/main/java/ch/njol/skript/expressions/ExprTick.java b/src/main/java/ch/njol/skript/expressions/ExprTick.java index b4e2b0fab48..e5ac28884f2 100644 --- a/src/main/java/ch/njol/skript/expressions/ExprTick.java +++ b/src/main/java/ch/njol/skript/expressions/ExprTick.java @@ -19,26 +19,27 @@ package ch.njol.skript.expressions; import ch.njol.skript.Skript; -import ch.njol.skript.classes.Changer; +import ch.njol.skript.classes.Changer.ChangeMode; import ch.njol.skript.doc.Description; import ch.njol.skript.doc.Examples; import ch.njol.skript.doc.Name; +import ch.njol.skript.doc.RequiredPlugins; import ch.njol.skript.doc.Since; import ch.njol.skript.lang.Expression; import ch.njol.skript.lang.ExpressionType; -import ch.njol.skript.lang.SkriptParser; +import ch.njol.skript.lang.SkriptParser.ParseResult; import ch.njol.skript.lang.util.SimpleExpression; import ch.njol.util.Kleenean; import org.bukkit.Bukkit; import org.bukkit.Server; +import org.bukkit.ServerTickManager; import org.bukkit.event.Event; import org.jetbrains.annotations.Nullable; @Name("Server Tick Rate") @Description({ "Gets or sets the current tick rate of the server. The tick rate is the number of game ticks that occur in a second. Higher values mean the game runs faster.", - "The server's default tick rate is 20.", - "Requires Minecraft 1.20.4+"}) + "The server's default tick rate is 20."}) @Examples({ "send \"%server's tick rate%\" to player", "set server's tick rate to 20 # This is the default tick rate.", @@ -46,26 +47,26 @@ "remove 2 from server's tick rate" }) @Since("INSERT VERSION") - +@RequiredPlugins("Minecraft 1.20.4+") public class ExprTick extends SimpleExpression { + private static final ServerTickManager SERVER_TICK_MANAGER; + static { if (Skript.methodExists(Server.class, "getServerTickManager")) { - Skript.registerExpression(ExprTick.class, Number.class, ExpressionType.SIMPLE, "server[[']s] tick rate"); + SERVER_TICK_MANAGER = Bukkit.getServerTickManager(); + Skript.registerExpression(ExprTick.class, Number.class, ExpressionType.SIMPLE, "server['s] tick rate"); + } + else { + SERVER_TICK_MANAGER = null; } } @Override - public boolean init(Expression[] exprs, int matchedPattern, Kleenean isDelayed, SkriptParser.ParseResult parseResult) { + public boolean init(Expression[] exprs, int matchedPattern, Kleenean isDelayed, ParseResult parseResult) { return true; } - @Nullable - @Override - protected Number[] get(Event event) { - return new Number[]{Bukkit.getServer().getServerTickManager().getTickRate()}; - } - @Override public boolean isSingle() { return true; @@ -76,38 +77,42 @@ public Class getReturnType() { return Number.class; } + @Nullable + @Override + protected Number[] get(Event event) { + return new Number[]{SERVER_TICK_MANAGER.getTickRate()}; + } + @Override public String toString(@Nullable Event event, boolean debug) { return "server tick rate"; } - @Override - public Class[] acceptChange(Changer.ChangeMode mode) { - if (mode == Changer.ChangeMode.SET || mode == Changer.ChangeMode.ADD || mode == Changer.ChangeMode.REMOVE) { + public Class[] acceptChange(ChangeMode mode) { + if (mode == ChangeMode.SET || mode == ChangeMode.ADD || mode == ChangeMode.REMOVE || mode == ChangeMode.RESET) return new Class[]{Number.class}; - } return null; } @Override - public void change(Event event, @Nullable Object[] delta, Changer.ChangeMode mode) { + public void change(Event event, @Nullable Object[] delta, ChangeMode mode) { if (delta != null && delta.length != 0) { - float tickRate = Bukkit.getServer().getServerTickManager().getTickRate(); + float tickRate = SERVER_TICK_MANAGER.getTickRate(); float change = ((Number) delta[0]).floatValue(); switch (mode) { case SET: - Bukkit.getServer().getServerTickManager().setTickRate(change); + SERVER_TICK_MANAGER.setTickRate(change); break; case ADD: - Bukkit.getServer().getServerTickManager().setTickRate(tickRate + change); + SERVER_TICK_MANAGER.setTickRate(tickRate + change); break; case REMOVE: - Bukkit.getServer().getServerTickManager().setTickRate(tickRate - change); + SERVER_TICK_MANAGER.setTickRate(tickRate - change); + break; + case RESET: + SERVER_TICK_MANAGER.setTickRate(20); break; } } } } - - - From 5a80a00d5dc4357e54f0f0839996601dc805b7e6 Mon Sep 17 00:00:00 2001 From: Asleepp Date: Fri, 26 Apr 2024 15:43:52 -0300 Subject: [PATCH 16/34] Suggested changes. --- .../skript/conditions/CondIsTickFrozen.java | 10 +-- .../conditions/CondServerTickState.java | 8 +- .../njol/skript/effects/EffFreezeServer.java | 6 +- .../njol/skript/effects/EffSprintServer.java | 11 ++- .../ch/njol/skript/effects/EffStepServer.java | 20 ++--- .../expressions/ExprFrozenTicksToRun.java | 23 +++--- .../ch/njol/skript/expressions/ExprTick.java | 73 ++++++++++--------- 7 files changed, 81 insertions(+), 70 deletions(-) diff --git a/src/main/java/ch/njol/skript/conditions/CondIsTickFrozen.java b/src/main/java/ch/njol/skript/conditions/CondIsTickFrozen.java index 76abc06b195..a03411fbf0a 100644 --- a/src/main/java/ch/njol/skript/conditions/CondIsTickFrozen.java +++ b/src/main/java/ch/njol/skript/conditions/CondIsTickFrozen.java @@ -31,7 +31,7 @@ import org.bukkit.entity.Entity; @Name("Is Entity Tick Frozen") -@Description("Checks if the specified entities are frozen or not.") +@Description("Checks if the specified entities are frozen due to the server's ticking state.") @Examples({"if target entity is tick frozen:"}) @Since("INSERT VERSION") @RequiredPlugins("Minecraft 1.20.4+") @@ -40,17 +40,17 @@ public class CondIsTickFrozen extends PropertyCondition { private static final ServerTickManager SERVER_TICK_MANAGER; static { + ServerTickManager STM_VALUE = null; if (Skript.methodExists(Server.class, "getServerTickManager")) { - SERVER_TICK_MANAGER = Bukkit.getServerTickManager(); + STM_VALUE = Bukkit.getServerTickManager(); register(CondIsTickFrozen.class, PropertyType.BE, "tick frozen", "entities"); - } else { - SERVER_TICK_MANAGER = null; } + SERVER_TICK_MANAGER = STM_VALUE; } @Override public boolean check(Entity entity) { - return SERVER_TICK_MANAGER != null && SERVER_TICK_MANAGER.isFrozen(entity); + return SERVER_TICK_MANAGER.isFrozen(entity); } @Override diff --git a/src/main/java/ch/njol/skript/conditions/CondServerTickState.java b/src/main/java/ch/njol/skript/conditions/CondServerTickState.java index 4ac30e0b60a..c8c898bd3f3 100644 --- a/src/main/java/ch/njol/skript/conditions/CondServerTickState.java +++ b/src/main/java/ch/njol/skript/conditions/CondServerTickState.java @@ -48,14 +48,14 @@ public enum ServerState { private static final ServerTickManager SERVER_TICK_MANAGER; static { + ServerTickManager STM_VALUE = null; if (Skript.methodExists(Server.class, "getServerTickManager")) { - SERVER_TICK_MANAGER = Bukkit.getServerTickManager(); + STM_VALUE = Bukkit.getServerTickManager(); Skript.registerCondition(CondServerTickState.class, "[the] server['s] tick[ing] state is [currently] (:frozen|:stepping|:sprinting|:normal)", "[the] server['s] tick[ing] state (is[n't| not]) [currently] (:frozen|:stepping|:sprinting|:normal)"); - } else { - SERVER_TICK_MANAGER = null; } + SERVER_TICK_MANAGER = STM_VALUE; } private ServerState state; @@ -76,7 +76,7 @@ public boolean init(Expression[] exprs, int matchedPattern, Kleenean isDelaye } @Override - public boolean check(Event e) { + public boolean check(Event event) { switch (state) { case FROZEN: return SERVER_TICK_MANAGER.isFrozen() != isNegated(); diff --git a/src/main/java/ch/njol/skript/effects/EffFreezeServer.java b/src/main/java/ch/njol/skript/effects/EffFreezeServer.java index 13fca8ca309..83c53a002a5 100644 --- a/src/main/java/ch/njol/skript/effects/EffFreezeServer.java +++ b/src/main/java/ch/njol/skript/effects/EffFreezeServer.java @@ -43,14 +43,14 @@ public class EffFreezeServer extends Effect { private static final ServerTickManager SERVER_TICK_MANAGER; static { + ServerTickManager STM_VALUE = null; if (Skript.methodExists(Server.class, "getServerTickManager")) { - SERVER_TICK_MANAGER = Bukkit.getServerTickManager(); + STM_VALUE = Bukkit.getServerTickManager(); Skript.registerEffect(EffFreezeServer.class, "freeze [the] server", "unfreeze [the] server"); - } else { - SERVER_TICK_MANAGER = null; } + SERVER_TICK_MANAGER = STM_VALUE; } private boolean freeze; diff --git a/src/main/java/ch/njol/skript/effects/EffSprintServer.java b/src/main/java/ch/njol/skript/effects/EffSprintServer.java index 013b230a135..836caf0ea34 100644 --- a/src/main/java/ch/njol/skript/effects/EffSprintServer.java +++ b/src/main/java/ch/njol/skript/effects/EffSprintServer.java @@ -36,7 +36,10 @@ import org.jetbrains.annotations.Nullable; @Name("Sprint Server") -@Description("Requests the server to sprint for a certain amount of time, or stops the server from sprinting.") +@Description({ + "Requests the server to sprint for a certain amount of time, or stops the server from sprinting.", + "Sprinting is where the server increases the tick rate depending on the time you input, and resets it to what it was after its done sprinting." +}) @Examples({"request server to sprint for 10 seconds", "make server stop sprinting"}) @Since("INSERT VERSION") @RequiredPlugins("Minecraft 1.20.4+") @@ -45,14 +48,14 @@ public class EffSprintServer extends Effect { private static final ServerTickManager SERVER_TICK_MANAGER; static { + ServerTickManager STM_VALUE = null; if (Skript.methodExists(Server.class, "getServerTickManager")) { - SERVER_TICK_MANAGER = Bukkit.getServerTickManager(); + STM_VALUE = Bukkit.getServerTickManager(); Skript.registerEffect(EffSprintServer.class, "request [for [the]] server [to] sprint for %timespan%", "make [the] server stop sprinting"); - } else { - SERVER_TICK_MANAGER = null; } + SERVER_TICK_MANAGER = STM_VALUE; } private boolean sprint; diff --git a/src/main/java/ch/njol/skript/effects/EffStepServer.java b/src/main/java/ch/njol/skript/effects/EffStepServer.java index 89f61939b2a..b7ec05ea62b 100644 --- a/src/main/java/ch/njol/skript/effects/EffStepServer.java +++ b/src/main/java/ch/njol/skript/effects/EffStepServer.java @@ -23,7 +23,7 @@ import ch.njol.skript.doc.Since; import ch.njol.skript.lang.Effect; import ch.njol.skript.lang.Expression; -import ch.njol.skript.lang.SkriptParser; +import ch.njol.skript.lang.SkriptParser.ParseResult; import ch.njol.skript.util.Timespan; import ch.njol.skript.doc.Description; import ch.njol.skript.doc.Examples; @@ -35,8 +35,10 @@ import org.bukkit.event.Event; import org.jetbrains.annotations.Nullable; @Name("Step Server") -@Description("Makes the server step for a certain amount of time if the server state is frozen, or stops the server from stepping.") -@Examples({"make server step for 5 seconds if server is frozen", "make server stop stepping"}) +@Description({ + "Makes the server \"step\" for a certain amount of time while the server's tick state is frozen.", + "When you step, the server goes forward that amount of time in ticks."}) +@Examples({"make server step for 5 seconds", "make server stop stepping"}) @Since("INSERT VERSION") @RequiredPlugins("Minecraft 1.20.4+") public class EffStepServer extends Effect { @@ -44,21 +46,21 @@ public class EffStepServer extends Effect { private static final ServerTickManager SERVER_TICK_MANAGER; static { + ServerTickManager STM_VALUE = null; if (Skript.methodExists(Server.class, "getServerTickManager")) { - SERVER_TICK_MANAGER = Bukkit.getServerTickManager(); + STM_VALUE = Bukkit.getServerTickManager(); Skript.registerEffect(EffStepServer.class, "make [the] server step for %timespan%", "make [the] server stop stepping"); - } else { - SERVER_TICK_MANAGER = null; } + SERVER_TICK_MANAGER = STM_VALUE; } private Expression timespan; @SuppressWarnings("unchecked") @Override - public boolean init(Expression[] exprs, int matchedPattern, Kleenean isDelayed, SkriptParser.ParseResult parseResult) { + public boolean init(Expression[] exprs, int matchedPattern, Kleenean isDelayed, ParseResult parseResult) { if (matchedPattern == 0) timespan = (Expression) exprs[0]; return true; @@ -77,7 +79,7 @@ protected void execute(Event event) { @Override - public String toString(@Nullable Event e, boolean debug) { - return timespan == null ? "make the server stop stepping" : "make the step server for " + timespan.toString(e, debug); + public String toString(@Nullable Event event, boolean debug) { + return timespan == null ? "make the server stop stepping" : "make the step server for " + timespan.toString(event, debug); } } diff --git a/src/main/java/ch/njol/skript/expressions/ExprFrozenTicksToRun.java b/src/main/java/ch/njol/skript/expressions/ExprFrozenTicksToRun.java index 98ad9b844b6..d4c28293071 100644 --- a/src/main/java/ch/njol/skript/expressions/ExprFrozenTicksToRun.java +++ b/src/main/java/ch/njol/skript/expressions/ExprFrozenTicksToRun.java @@ -36,7 +36,7 @@ import org.eclipse.jdt.annotation.Nullable; @Name("Frozen Ticks To Run") -@Description("Gets the amount of frozen ticks left to run on the server.") +@Description("Gets the amount of ticks that are in queue to run while the server's tick state is frozen.") @Examples({"broadcast \"%frozen ticks to run%\""}) @Since("INSERT VERSION") @RequiredPlugins("Minecraft 1.20.4+") @@ -45,19 +45,26 @@ public class ExprFrozenTicksToRun extends SimpleExpression { private static final ServerTickManager SERVER_TICK_MANAGER; static { + ServerTickManager STM_VALUE = null; if (Skript.methodExists(Server.class, "getServerTickManager")) { - SERVER_TICK_MANAGER = Bukkit.getServerTickManager(); - Skript.registerExpression(ExprFrozenTicksToRun.class, Number.class, ExpressionType.SIMPLE, "[amount of] frozen ticks [left] to run"); - } else { - SERVER_TICK_MANAGER = null; + STM_VALUE = Bukkit.getServerTickManager(); + Skript.registerExpression(ExprFrozenTicksToRun.class, Number.class, ExpressionType.SIMPLE, "[the] [amount of] frozen ticks [left] to run"); } + SERVER_TICK_MANAGER = STM_VALUE; } + @Override public boolean init(Expression[] exprs, int matchedPattern, Kleenean isDelayed, ParseResult parseResult) { return true; } + @Override + @Nullable + protected Number[] get(Event event) { + return new Number[]{SERVER_TICK_MANAGER.getFrozenTicksToRun()}; + } + @Override public boolean isSingle() { return true; @@ -68,12 +75,6 @@ public Class getReturnType() { return Number.class; } - @Override - @Nullable - protected Number[] get(Event event) { - return new Number[]{SERVER_TICK_MANAGER.getFrozenTicksToRun()}; - } - @Override public String toString(@Nullable Event event, boolean debug) { return "frozen ticks to run"; diff --git a/src/main/java/ch/njol/skript/expressions/ExprTick.java b/src/main/java/ch/njol/skript/expressions/ExprTick.java index e5ac28884f2..24a0f0f8e2f 100644 --- a/src/main/java/ch/njol/skript/expressions/ExprTick.java +++ b/src/main/java/ch/njol/skript/expressions/ExprTick.java @@ -53,13 +53,12 @@ public class ExprTick extends SimpleExpression { private static final ServerTickManager SERVER_TICK_MANAGER; static { + ServerTickManager STM_VALUE = null; if (Skript.methodExists(Server.class, "getServerTickManager")) { - SERVER_TICK_MANAGER = Bukkit.getServerTickManager(); - Skript.registerExpression(ExprTick.class, Number.class, ExpressionType.SIMPLE, "server['s] tick rate"); - } - else { - SERVER_TICK_MANAGER = null; + STM_VALUE = Bukkit.getServerTickManager(); + Skript.registerExpression(ExprTick.class, Number.class, ExpressionType.SIMPLE, "[the] server['s] tick rate"); } + SERVER_TICK_MANAGER = STM_VALUE; } @Override @@ -67,27 +66,12 @@ public boolean init(Expression[] exprs, int matchedPattern, Kleenean isDelaye return true; } - @Override - public boolean isSingle() { - return true; - } - - @Override - public Class getReturnType() { - return Number.class; - } - @Nullable @Override protected Number[] get(Event event) { return new Number[]{SERVER_TICK_MANAGER.getTickRate()}; } - @Override - public String toString(@Nullable Event event, boolean debug) { - return "server tick rate"; - } - public Class[] acceptChange(ChangeMode mode) { if (mode == ChangeMode.SET || mode == ChangeMode.ADD || mode == ChangeMode.REMOVE || mode == ChangeMode.RESET) return new Class[]{Number.class}; @@ -96,23 +80,44 @@ public Class[] acceptChange(ChangeMode mode) { @Override public void change(Event event, @Nullable Object[] delta, ChangeMode mode) { - if (delta != null && delta.length != 0) { - float tickRate = SERVER_TICK_MANAGER.getTickRate(); - float change = ((Number) delta[0]).floatValue(); - switch (mode) { - case SET: + float tickRate = SERVER_TICK_MANAGER.getTickRate(); + float change = delta != null && delta.length != 0 ? ((Number) delta[0]).floatValue() : 0; + switch (mode) { + case SET: + if (delta != null) { SERVER_TICK_MANAGER.setTickRate(change); - break; - case ADD: + } + break; + case ADD: + if (delta != null) { SERVER_TICK_MANAGER.setTickRate(tickRate + change); - break; - case REMOVE: + } + break; + case REMOVE: + if (delta != null) { SERVER_TICK_MANAGER.setTickRate(tickRate - change); - break; - case RESET: - SERVER_TICK_MANAGER.setTickRate(20); - break; - } + } + break; + case RESET: + SERVER_TICK_MANAGER.setTickRate(20); + break; } } + + + @Override + public boolean isSingle() { + return true; + } + + @Override + public Class getReturnType() { + return Number.class; + } + + @Override + public String toString(@Nullable Event event, boolean debug) { + return "server tick rate"; + } + } From b890d94efed0cea51d3c76bc0e5727cd19860470 Mon Sep 17 00:00:00 2001 From: Asleepp Date: Tue, 30 Apr 2024 21:30:50 -0300 Subject: [PATCH 17/34] Have i done this right? (probably not) --- .../njol/skript/bukkitutil/ServerUtils.java | 21 +++++++++++++++++++ .../skript/conditions/CondIsTickFrozen.java | 7 ++----- .../conditions/CondServerTickState.java | 21 ++++++++----------- .../njol/skript/effects/EffFreezeServer.java | 7 ++----- .../njol/skript/effects/EffSprintServer.java | 9 +++----- .../ch/njol/skript/effects/EffStepServer.java | 9 +++----- .../expressions/ExprFrozenTicksToRun.java | 7 ++----- .../ch/njol/skript/expressions/ExprTick.java | 17 +++++++-------- 8 files changed, 49 insertions(+), 49 deletions(-) create mode 100644 src/main/java/ch/njol/skript/bukkitutil/ServerUtils.java diff --git a/src/main/java/ch/njol/skript/bukkitutil/ServerUtils.java b/src/main/java/ch/njol/skript/bukkitutil/ServerUtils.java new file mode 100644 index 00000000000..095a1adbcf1 --- /dev/null +++ b/src/main/java/ch/njol/skript/bukkitutil/ServerUtils.java @@ -0,0 +1,21 @@ +package ch.njol.skript.bukkitutil; + +import ch.njol.skript.Skript; +import org.bukkit.Bukkit; +import org.bukkit.ServerTickManager; + +public class ServerUtils { + private static final ServerTickManager SERVER_TICK_MANAGER; + + static { + ServerTickManager STM_VALUE = null; + if (Skript.methodExists(Bukkit.class, "getServerTickManager")) { + STM_VALUE = Bukkit.getServerTickManager(); + } + SERVER_TICK_MANAGER = STM_VALUE; + } + + public static ServerTickManager getServerTickManager() { + return SERVER_TICK_MANAGER; + } +} diff --git a/src/main/java/ch/njol/skript/conditions/CondIsTickFrozen.java b/src/main/java/ch/njol/skript/conditions/CondIsTickFrozen.java index a03411fbf0a..fbab4893c9d 100644 --- a/src/main/java/ch/njol/skript/conditions/CondIsTickFrozen.java +++ b/src/main/java/ch/njol/skript/conditions/CondIsTickFrozen.java @@ -19,6 +19,7 @@ package ch.njol.skript.conditions; import ch.njol.skript.Skript; +import ch.njol.skript.bukkitutil.ServerUtils; import ch.njol.skript.conditions.base.PropertyCondition; import ch.njol.skript.doc.Description; import ch.njol.skript.doc.Examples; @@ -37,20 +38,16 @@ @RequiredPlugins("Minecraft 1.20.4+") public class CondIsTickFrozen extends PropertyCondition { - private static final ServerTickManager SERVER_TICK_MANAGER; static { - ServerTickManager STM_VALUE = null; if (Skript.methodExists(Server.class, "getServerTickManager")) { - STM_VALUE = Bukkit.getServerTickManager(); register(CondIsTickFrozen.class, PropertyType.BE, "tick frozen", "entities"); } - SERVER_TICK_MANAGER = STM_VALUE; } @Override public boolean check(Entity entity) { - return SERVER_TICK_MANAGER.isFrozen(entity); + return ServerUtils.getServerTickManager().isFrozen(entity); } @Override diff --git a/src/main/java/ch/njol/skript/conditions/CondServerTickState.java b/src/main/java/ch/njol/skript/conditions/CondServerTickState.java index c8c898bd3f3..4471e8f574e 100644 --- a/src/main/java/ch/njol/skript/conditions/CondServerTickState.java +++ b/src/main/java/ch/njol/skript/conditions/CondServerTickState.java @@ -19,6 +19,7 @@ package ch.njol.skript.conditions; import ch.njol.skript.Skript; +import ch.njol.skript.bukkitutil.ServerUtils; import ch.njol.skript.doc.Description; import ch.njol.skript.doc.Examples; import ch.njol.skript.doc.Name; @@ -29,7 +30,6 @@ import ch.njol.skript.lang.SkriptParser.ParseResult; import ch.njol.util.Kleenean; import org.bukkit.Bukkit; -import org.bukkit.Server; import org.bukkit.ServerTickManager; import org.bukkit.event.Event; import org.eclipse.jdt.annotation.Nullable; @@ -45,21 +45,16 @@ public enum ServerState { FROZEN, STEPPING, SPRINTING, NORMAL } - private static final ServerTickManager SERVER_TICK_MANAGER; + private ServerState state; static { - ServerTickManager STM_VALUE = null; - if (Skript.methodExists(Server.class, "getServerTickManager")) { - STM_VALUE = Bukkit.getServerTickManager(); + if (Skript.methodExists(Bukkit.class, "getServerTickManager")) { Skript.registerCondition(CondServerTickState.class, "[the] server['s] tick[ing] state is [currently] (:frozen|:stepping|:sprinting|:normal)", "[the] server['s] tick[ing] state (is[n't| not]) [currently] (:frozen|:stepping|:sprinting|:normal)"); } - SERVER_TICK_MANAGER = STM_VALUE; } - private ServerState state; - @Override public boolean init(Expression[] exprs, int matchedPattern, Kleenean isDelayed, ParseResult parseResult) { if (parseResult.hasTag("stepping")) { @@ -77,15 +72,16 @@ public boolean init(Expression[] exprs, int matchedPattern, Kleenean isDelaye @Override public boolean check(Event event) { + ServerTickManager serverTickManager = ServerUtils.getServerTickManager(); switch (state) { case FROZEN: - return SERVER_TICK_MANAGER.isFrozen() != isNegated(); + return serverTickManager.isFrozen() != isNegated(); case STEPPING: - return SERVER_TICK_MANAGER.isStepping() != isNegated(); + return serverTickManager.isStepping() != isNegated(); case SPRINTING: - return SERVER_TICK_MANAGER.isSprinting() != isNegated(); + return serverTickManager.isSprinting() != isNegated(); case NORMAL: - return SERVER_TICK_MANAGER.isRunningNormally() != isNegated(); + return serverTickManager.isRunningNormally() != isNegated(); } return isNegated(); } @@ -95,3 +91,4 @@ public String toString(@Nullable Event event, boolean debug) { return "the server's tick state is " + state; } } + diff --git a/src/main/java/ch/njol/skript/effects/EffFreezeServer.java b/src/main/java/ch/njol/skript/effects/EffFreezeServer.java index 83c53a002a5..baa1f6bb95f 100644 --- a/src/main/java/ch/njol/skript/effects/EffFreezeServer.java +++ b/src/main/java/ch/njol/skript/effects/EffFreezeServer.java @@ -19,6 +19,7 @@ package ch.njol.skript.effects; import ch.njol.skript.Skript; +import ch.njol.skript.bukkitutil.ServerUtils; import ch.njol.skript.doc.Description; import ch.njol.skript.doc.Examples; import ch.njol.skript.doc.Name; @@ -40,17 +41,13 @@ @RequiredPlugins("Minecraft 1.20.4+") public class EffFreezeServer extends Effect { - private static final ServerTickManager SERVER_TICK_MANAGER; static { - ServerTickManager STM_VALUE = null; if (Skript.methodExists(Server.class, "getServerTickManager")) { - STM_VALUE = Bukkit.getServerTickManager(); Skript.registerEffect(EffFreezeServer.class, "freeze [the] server", "unfreeze [the] server"); } - SERVER_TICK_MANAGER = STM_VALUE; } private boolean freeze; @@ -63,7 +60,7 @@ public boolean init(Expression[] exprs, int matchedPattern, Kleenean isDelaye @Override protected void execute(Event event) { - SERVER_TICK_MANAGER.setFrozen(freeze); + ServerUtils.getServerTickManager().setFrozen(freeze); } @Override diff --git a/src/main/java/ch/njol/skript/effects/EffSprintServer.java b/src/main/java/ch/njol/skript/effects/EffSprintServer.java index 836caf0ea34..724f9e5b284 100644 --- a/src/main/java/ch/njol/skript/effects/EffSprintServer.java +++ b/src/main/java/ch/njol/skript/effects/EffSprintServer.java @@ -19,6 +19,7 @@ package ch.njol.skript.effects; import ch.njol.skript.Skript; +import ch.njol.skript.bukkitutil.ServerUtils; import ch.njol.skript.doc.RequiredPlugins; import ch.njol.skript.doc.Since; import ch.njol.skript.lang.Effect; @@ -45,17 +46,13 @@ @RequiredPlugins("Minecraft 1.20.4+") public class EffSprintServer extends Effect { - private static final ServerTickManager SERVER_TICK_MANAGER; static { - ServerTickManager STM_VALUE = null; if (Skript.methodExists(Server.class, "getServerTickManager")) { - STM_VALUE = Bukkit.getServerTickManager(); Skript.registerEffect(EffSprintServer.class, "request [for [the]] server [to] sprint for %timespan%", "make [the] server stop sprinting"); } - SERVER_TICK_MANAGER = STM_VALUE; } private boolean sprint; @@ -75,9 +72,9 @@ protected void execute(Event event) { if (sprint) { Timespan timespanInstance = timespan.getSingle(event); long sprintTicks = timespanInstance != null ? timespanInstance.getTicks() : 1; - SERVER_TICK_MANAGER.requestGameToSprint((int) sprintTicks); + ServerUtils.getServerTickManager().requestGameToSprint((int) sprintTicks); } else { - SERVER_TICK_MANAGER.stopSprinting(); + ServerUtils.getServerTickManager().stopSprinting(); } } diff --git a/src/main/java/ch/njol/skript/effects/EffStepServer.java b/src/main/java/ch/njol/skript/effects/EffStepServer.java index b7ec05ea62b..f18a2f85123 100644 --- a/src/main/java/ch/njol/skript/effects/EffStepServer.java +++ b/src/main/java/ch/njol/skript/effects/EffStepServer.java @@ -19,6 +19,7 @@ package ch.njol.skript.effects; import ch.njol.skript.Skript; +import ch.njol.skript.bukkitutil.ServerUtils; import ch.njol.skript.doc.RequiredPlugins; import ch.njol.skript.doc.Since; import ch.njol.skript.lang.Effect; @@ -43,17 +44,13 @@ @RequiredPlugins("Minecraft 1.20.4+") public class EffStepServer extends Effect { - private static final ServerTickManager SERVER_TICK_MANAGER; static { - ServerTickManager STM_VALUE = null; if (Skript.methodExists(Server.class, "getServerTickManager")) { - STM_VALUE = Bukkit.getServerTickManager(); Skript.registerEffect(EffStepServer.class, "make [the] server step for %timespan%", "make [the] server stop stepping"); } - SERVER_TICK_MANAGER = STM_VALUE; } private Expression timespan; @@ -71,9 +68,9 @@ protected void execute(Event event) { Timespan timespanInstance = timespan.getSingle(event); if (timespanInstance != null) { long stepTicks = timespanInstance.getTicks(); - SERVER_TICK_MANAGER.stepGameIfFrozen((int) stepTicks); + ServerUtils.getServerTickManager().stepGameIfFrozen((int) stepTicks); } else { - SERVER_TICK_MANAGER.stopStepping(); + ServerUtils.getServerTickManager().stopStepping(); } } diff --git a/src/main/java/ch/njol/skript/expressions/ExprFrozenTicksToRun.java b/src/main/java/ch/njol/skript/expressions/ExprFrozenTicksToRun.java index d4c28293071..39ad9a04a59 100644 --- a/src/main/java/ch/njol/skript/expressions/ExprFrozenTicksToRun.java +++ b/src/main/java/ch/njol/skript/expressions/ExprFrozenTicksToRun.java @@ -19,6 +19,7 @@ package ch.njol.skript.expressions; import ch.njol.skript.Skript; +import ch.njol.skript.bukkitutil.ServerUtils; import ch.njol.skript.doc.Description; import ch.njol.skript.doc.Examples; import ch.njol.skript.doc.Name; @@ -42,15 +43,11 @@ @RequiredPlugins("Minecraft 1.20.4+") public class ExprFrozenTicksToRun extends SimpleExpression { - private static final ServerTickManager SERVER_TICK_MANAGER; static { - ServerTickManager STM_VALUE = null; if (Skript.methodExists(Server.class, "getServerTickManager")) { - STM_VALUE = Bukkit.getServerTickManager(); Skript.registerExpression(ExprFrozenTicksToRun.class, Number.class, ExpressionType.SIMPLE, "[the] [amount of] frozen ticks [left] to run"); } - SERVER_TICK_MANAGER = STM_VALUE; } @@ -62,7 +59,7 @@ public boolean init(Expression[] exprs, int matchedPattern, Kleenean isDelaye @Override @Nullable protected Number[] get(Event event) { - return new Number[]{SERVER_TICK_MANAGER.getFrozenTicksToRun()}; + return new Number[]{ServerUtils.getServerTickManager().getFrozenTicksToRun()}; } @Override diff --git a/src/main/java/ch/njol/skript/expressions/ExprTick.java b/src/main/java/ch/njol/skript/expressions/ExprTick.java index 24a0f0f8e2f..6b322442f97 100644 --- a/src/main/java/ch/njol/skript/expressions/ExprTick.java +++ b/src/main/java/ch/njol/skript/expressions/ExprTick.java @@ -19,6 +19,7 @@ package ch.njol.skript.expressions; import ch.njol.skript.Skript; +import ch.njol.skript.bukkitutil.ServerUtils; import ch.njol.skript.classes.Changer.ChangeMode; import ch.njol.skript.doc.Description; import ch.njol.skript.doc.Examples; @@ -50,15 +51,11 @@ @RequiredPlugins("Minecraft 1.20.4+") public class ExprTick extends SimpleExpression { - private static final ServerTickManager SERVER_TICK_MANAGER; static { - ServerTickManager STM_VALUE = null; if (Skript.methodExists(Server.class, "getServerTickManager")) { - STM_VALUE = Bukkit.getServerTickManager(); Skript.registerExpression(ExprTick.class, Number.class, ExpressionType.SIMPLE, "[the] server['s] tick rate"); } - SERVER_TICK_MANAGER = STM_VALUE; } @Override @@ -69,7 +66,7 @@ public boolean init(Expression[] exprs, int matchedPattern, Kleenean isDelaye @Nullable @Override protected Number[] get(Event event) { - return new Number[]{SERVER_TICK_MANAGER.getTickRate()}; + return new Number[]{ServerUtils.getServerTickManager().getTickRate()}; } public Class[] acceptChange(ChangeMode mode) { @@ -80,26 +77,26 @@ public Class[] acceptChange(ChangeMode mode) { @Override public void change(Event event, @Nullable Object[] delta, ChangeMode mode) { - float tickRate = SERVER_TICK_MANAGER.getTickRate(); + float tickRate = ServerUtils.getServerTickManager().getTickRate(); float change = delta != null && delta.length != 0 ? ((Number) delta[0]).floatValue() : 0; switch (mode) { case SET: if (delta != null) { - SERVER_TICK_MANAGER.setTickRate(change); + ServerUtils.getServerTickManager().setTickRate(change); } break; case ADD: if (delta != null) { - SERVER_TICK_MANAGER.setTickRate(tickRate + change); + ServerUtils.getServerTickManager().setTickRate(tickRate + change); } break; case REMOVE: if (delta != null) { - SERVER_TICK_MANAGER.setTickRate(tickRate - change); + ServerUtils.getServerTickManager().setTickRate(tickRate - change); } break; case RESET: - SERVER_TICK_MANAGER.setTickRate(20); + ServerUtils.getServerTickManager().setTickRate(20); break; } } From e4faa7d26cf0ae25df6c89bf73cc8bf9e59b1e5b Mon Sep 17 00:00:00 2001 From: Asleepp Date: Tue, 30 Apr 2024 21:33:49 -0300 Subject: [PATCH 18/34] forgot license again --- .../ch/njol/skript/bukkitutil/ServerUtils.java | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/src/main/java/ch/njol/skript/bukkitutil/ServerUtils.java b/src/main/java/ch/njol/skript/bukkitutil/ServerUtils.java index 095a1adbcf1..8c6cba8c5e8 100644 --- a/src/main/java/ch/njol/skript/bukkitutil/ServerUtils.java +++ b/src/main/java/ch/njol/skript/bukkitutil/ServerUtils.java @@ -1,3 +1,21 @@ +/** + * This file is part of Skript. + * + * Skript is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Skript is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Skript. If not, see . + * + * Copyright Peter Güttinger, SkriptLang team and contributors + */ package ch.njol.skript.bukkitutil; import ch.njol.skript.Skript; From f98bb103da85cdc710bf3eea364e8850706d3b8f Mon Sep 17 00:00:00 2001 From: Asleepp Date: Wed, 1 May 2024 15:30:12 -0300 Subject: [PATCH 19/34] consistency + suggested changes --- .../skript/conditions/CondIsTickFrozen.java | 5 +---- .../conditions/CondServerTickState.java | 13 ++++++------- .../njol/skript/effects/EffFreezeServer.java | 5 +---- .../njol/skript/effects/EffSprintServer.java | 5 +---- .../ch/njol/skript/effects/EffStepServer.java | 19 +++++++++---------- .../expressions/ExprFrozenTicksToRun.java | 5 +---- .../ch/njol/skript/expressions/ExprTick.java | 16 ++++------------ 7 files changed, 23 insertions(+), 45 deletions(-) diff --git a/src/main/java/ch/njol/skript/conditions/CondIsTickFrozen.java b/src/main/java/ch/njol/skript/conditions/CondIsTickFrozen.java index fbab4893c9d..51890de03c5 100644 --- a/src/main/java/ch/njol/skript/conditions/CondIsTickFrozen.java +++ b/src/main/java/ch/njol/skript/conditions/CondIsTickFrozen.java @@ -27,8 +27,6 @@ import ch.njol.skript.doc.RequiredPlugins; import ch.njol.skript.doc.Since; import org.bukkit.Bukkit; -import org.bukkit.Server; -import org.bukkit.ServerTickManager; import org.bukkit.entity.Entity; @Name("Is Entity Tick Frozen") @@ -40,9 +38,8 @@ public class CondIsTickFrozen extends PropertyCondition { static { - if (Skript.methodExists(Server.class, "getServerTickManager")) { + if (Skript.methodExists(Bukkit.class, "getServerTickManager")) register(CondIsTickFrozen.class, PropertyType.BE, "tick frozen", "entities"); - } } @Override diff --git a/src/main/java/ch/njol/skript/conditions/CondServerTickState.java b/src/main/java/ch/njol/skript/conditions/CondServerTickState.java index 4471e8f574e..6177b898ec2 100644 --- a/src/main/java/ch/njol/skript/conditions/CondServerTickState.java +++ b/src/main/java/ch/njol/skript/conditions/CondServerTickState.java @@ -40,21 +40,20 @@ @Since("INSERT VERSION") @RequiredPlugins("Minecraft 1.20.4+") public class CondServerTickState extends Condition { - - public enum ServerState { - FROZEN, STEPPING, SPRINTING, NORMAL - } - private ServerState state; static { - if (Skript.methodExists(Bukkit.class, "getServerTickManager")) { + if (Skript.methodExists(Bukkit.class, "getServerTickManager")) Skript.registerCondition(CondServerTickState.class, "[the] server['s] tick[ing] state is [currently] (:frozen|:stepping|:sprinting|:normal)", "[the] server['s] tick[ing] state (is[n't| not]) [currently] (:frozen|:stepping|:sprinting|:normal)"); - } } + public enum ServerState { + FROZEN, STEPPING, SPRINTING, NORMAL + } + + @Override public boolean init(Expression[] exprs, int matchedPattern, Kleenean isDelayed, ParseResult parseResult) { if (parseResult.hasTag("stepping")) { diff --git a/src/main/java/ch/njol/skript/effects/EffFreezeServer.java b/src/main/java/ch/njol/skript/effects/EffFreezeServer.java index baa1f6bb95f..c7d5df37d9e 100644 --- a/src/main/java/ch/njol/skript/effects/EffFreezeServer.java +++ b/src/main/java/ch/njol/skript/effects/EffFreezeServer.java @@ -30,8 +30,6 @@ import ch.njol.skript.lang.SkriptParser.ParseResult; import ch.njol.util.Kleenean; import org.bukkit.Bukkit; -import org.bukkit.Server; -import org.bukkit.ServerTickManager; import org.bukkit.event.Event; import org.jetbrains.annotations.Nullable; @Name("Freeze/Unfreeze Server") @@ -43,11 +41,10 @@ public class EffFreezeServer extends Effect { static { - if (Skript.methodExists(Server.class, "getServerTickManager")) { + if (Skript.methodExists(Bukkit.class, "getServerTickManager")) Skript.registerEffect(EffFreezeServer.class, "freeze [the] server", "unfreeze [the] server"); - } } private boolean freeze; diff --git a/src/main/java/ch/njol/skript/effects/EffSprintServer.java b/src/main/java/ch/njol/skript/effects/EffSprintServer.java index 724f9e5b284..5de3aaf2baf 100644 --- a/src/main/java/ch/njol/skript/effects/EffSprintServer.java +++ b/src/main/java/ch/njol/skript/effects/EffSprintServer.java @@ -31,8 +31,6 @@ import ch.njol.skript.doc.Name; import ch.njol.util.Kleenean; import org.bukkit.Bukkit; -import org.bukkit.Server; -import org.bukkit.ServerTickManager; import org.bukkit.event.Event; import org.jetbrains.annotations.Nullable; @@ -48,11 +46,10 @@ public class EffSprintServer extends Effect { static { - if (Skript.methodExists(Server.class, "getServerTickManager")) { + if (Skript.methodExists(Bukkit.class, "getServerTickManager")) Skript.registerEffect(EffSprintServer.class, "request [for [the]] server [to] sprint for %timespan%", "make [the] server stop sprinting"); - } } private boolean sprint; diff --git a/src/main/java/ch/njol/skript/effects/EffStepServer.java b/src/main/java/ch/njol/skript/effects/EffStepServer.java index f18a2f85123..9b37f877d28 100644 --- a/src/main/java/ch/njol/skript/effects/EffStepServer.java +++ b/src/main/java/ch/njol/skript/effects/EffStepServer.java @@ -31,8 +31,6 @@ import ch.njol.skript.doc.Name; import ch.njol.util.Kleenean; import org.bukkit.Bukkit; -import org.bukkit.Server; -import org.bukkit.ServerTickManager; import org.bukkit.event.Event; import org.jetbrains.annotations.Nullable; @Name("Step Server") @@ -46,11 +44,10 @@ public class EffStepServer extends Effect { static { - if (Skript.methodExists(Server.class, "getServerTickManager")) { + if (Skript.methodExists(Bukkit.class, "getServerTickManager")) Skript.registerEffect(EffStepServer.class, "make [the] server step for %timespan%", "make [the] server stop stepping"); - } } private Expression timespan; @@ -65,12 +62,14 @@ public boolean init(Expression[] exprs, int matchedPattern, Kleenean isDelaye @Override protected void execute(Event event) { - Timespan timespanInstance = timespan.getSingle(event); - if (timespanInstance != null) { - long stepTicks = timespanInstance.getTicks(); - ServerUtils.getServerTickManager().stepGameIfFrozen((int) stepTicks); - } else { - ServerUtils.getServerTickManager().stopStepping(); + if (timespan != null) { + Timespan timespanInstance = timespan.getSingle(event); + if (timespanInstance != null) { + long stepTicks = timespanInstance.getTicks(); + ServerUtils.getServerTickManager().stepGameIfFrozen((int) stepTicks); + } else { + ServerUtils.getServerTickManager().stopStepping(); + } } } diff --git a/src/main/java/ch/njol/skript/expressions/ExprFrozenTicksToRun.java b/src/main/java/ch/njol/skript/expressions/ExprFrozenTicksToRun.java index 39ad9a04a59..0d4e117deb7 100644 --- a/src/main/java/ch/njol/skript/expressions/ExprFrozenTicksToRun.java +++ b/src/main/java/ch/njol/skript/expressions/ExprFrozenTicksToRun.java @@ -31,8 +31,6 @@ import ch.njol.skript.lang.util.SimpleExpression; import ch.njol.util.Kleenean; import org.bukkit.Bukkit; -import org.bukkit.Server; -import org.bukkit.ServerTickManager; import org.bukkit.event.Event; import org.eclipse.jdt.annotation.Nullable; @@ -45,9 +43,8 @@ public class ExprFrozenTicksToRun extends SimpleExpression { static { - if (Skript.methodExists(Server.class, "getServerTickManager")) { + if (Skript.methodExists(Bukkit.class, "getServerTickManager")) Skript.registerExpression(ExprFrozenTicksToRun.class, Number.class, ExpressionType.SIMPLE, "[the] [amount of] frozen ticks [left] to run"); - } } diff --git a/src/main/java/ch/njol/skript/expressions/ExprTick.java b/src/main/java/ch/njol/skript/expressions/ExprTick.java index 6b322442f97..8929e586851 100644 --- a/src/main/java/ch/njol/skript/expressions/ExprTick.java +++ b/src/main/java/ch/njol/skript/expressions/ExprTick.java @@ -32,8 +32,6 @@ import ch.njol.skript.lang.util.SimpleExpression; import ch.njol.util.Kleenean; import org.bukkit.Bukkit; -import org.bukkit.Server; -import org.bukkit.ServerTickManager; import org.bukkit.event.Event; import org.jetbrains.annotations.Nullable; @@ -53,7 +51,7 @@ public class ExprTick extends SimpleExpression { static { - if (Skript.methodExists(Server.class, "getServerTickManager")) { + if (Skript.methodExists(Bukkit.class, "getServerTickManager")) { Skript.registerExpression(ExprTick.class, Number.class, ExpressionType.SIMPLE, "[the] server['s] tick rate"); } } @@ -81,19 +79,13 @@ public void change(Event event, @Nullable Object[] delta, ChangeMode mode) { float change = delta != null && delta.length != 0 ? ((Number) delta[0]).floatValue() : 0; switch (mode) { case SET: - if (delta != null) { - ServerUtils.getServerTickManager().setTickRate(change); - } + ServerUtils.getServerTickManager().setTickRate(change); break; case ADD: - if (delta != null) { - ServerUtils.getServerTickManager().setTickRate(tickRate + change); - } + ServerUtils.getServerTickManager().setTickRate(tickRate + change); break; case REMOVE: - if (delta != null) { - ServerUtils.getServerTickManager().setTickRate(tickRate - change); - } + ServerUtils.getServerTickManager().setTickRate(tickRate - change); break; case RESET: ServerUtils.getServerTickManager().setTickRate(20); From 3a9cca624ef18f7024c49860597f2d55c5616ba9 Mon Sep 17 00:00:00 2001 From: Asleepp Date: Sun, 5 May 2024 13:56:32 -0300 Subject: [PATCH 20/34] suggested changes --- .../skript/conditions/CondServerTickState.java | 17 ++++++++--------- .../ch/njol/skript/effects/EffSprintServer.java | 4 ++-- .../ch/njol/skript/effects/EffStepServer.java | 6 +++--- 3 files changed, 13 insertions(+), 14 deletions(-) diff --git a/src/main/java/ch/njol/skript/conditions/CondServerTickState.java b/src/main/java/ch/njol/skript/conditions/CondServerTickState.java index 6177b898ec2..e0a66825e49 100644 --- a/src/main/java/ch/njol/skript/conditions/CondServerTickState.java +++ b/src/main/java/ch/njol/skript/conditions/CondServerTickState.java @@ -56,19 +56,18 @@ public enum ServerState { @Override public boolean init(Expression[] exprs, int matchedPattern, Kleenean isDelayed, ParseResult parseResult) { - if (parseResult.hasTag("stepping")) { - state = ServerState.STEPPING; - } else if (parseResult.hasTag("sprinting")) { - state = ServerState.SPRINTING; - } else if (parseResult.hasTag("frozen")) { - state = ServerState.FROZEN; - } else if (parseResult.hasTag("normal")) { - state = ServerState.NORMAL; + String tag = parseResult.expr; + if (tag != null) { + try { + state = ServerState.valueOf(tag.toUpperCase()); + } catch (IllegalArgumentException e) { + Skript.error("Invalid argument."); + } } - return true; } + @Override public boolean check(Event event) { ServerTickManager serverTickManager = ServerUtils.getServerTickManager(); diff --git a/src/main/java/ch/njol/skript/effects/EffSprintServer.java b/src/main/java/ch/njol/skript/effects/EffSprintServer.java index 5de3aaf2baf..d913e8888ef 100644 --- a/src/main/java/ch/njol/skript/effects/EffSprintServer.java +++ b/src/main/java/ch/njol/skript/effects/EffSprintServer.java @@ -37,7 +37,7 @@ @Name("Sprint Server") @Description({ "Requests the server to sprint for a certain amount of time, or stops the server from sprinting.", - "Sprinting is where the server increases the tick rate depending on the time you input, and resets it to what it was after its done sprinting." + "Sprinting is where the server increases the tick rate depending on the time you input, and resets the tick rate to what it was after it has finished sprinting." }) @Examples({"request server to sprint for 10 seconds", "make server stop sprinting"}) @Since("INSERT VERSION") @@ -48,7 +48,7 @@ public class EffSprintServer extends Effect { static { if (Skript.methodExists(Bukkit.class, "getServerTickManager")) Skript.registerEffect(EffSprintServer.class, - "request [for [the]] server [to] sprint for %timespan%", + "request [for] [the] server [to] sprint for %timespan%", "make [the] server stop sprinting"); } diff --git a/src/main/java/ch/njol/skript/effects/EffStepServer.java b/src/main/java/ch/njol/skript/effects/EffStepServer.java index 9b37f877d28..1b9408875fa 100644 --- a/src/main/java/ch/njol/skript/effects/EffStepServer.java +++ b/src/main/java/ch/njol/skript/effects/EffStepServer.java @@ -67,15 +67,15 @@ protected void execute(Event event) { if (timespanInstance != null) { long stepTicks = timespanInstance.getTicks(); ServerUtils.getServerTickManager().stepGameIfFrozen((int) stepTicks); - } else { - ServerUtils.getServerTickManager().stopStepping(); } + } else { + ServerUtils.getServerTickManager().stopStepping(); } } @Override public String toString(@Nullable Event event, boolean debug) { - return timespan == null ? "make the server stop stepping" : "make the step server for " + timespan.toString(event, debug); + return timespan == null ? "make the server stop stepping" : "make the server step for " + timespan.toString(event, debug); } } From af2ac12ebaf17f4a59fbb61be10838451d4dba8f Mon Sep 17 00:00:00 2001 From: Asleepp Date: Tue, 7 May 2024 19:03:54 -0300 Subject: [PATCH 21/34] ServerTickState --- .../njol/skript/conditions/CondServerTickState.java | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/src/main/java/ch/njol/skript/conditions/CondServerTickState.java b/src/main/java/ch/njol/skript/conditions/CondServerTickState.java index e0a66825e49..ebb34ebb715 100644 --- a/src/main/java/ch/njol/skript/conditions/CondServerTickState.java +++ b/src/main/java/ch/njol/skript/conditions/CondServerTickState.java @@ -34,6 +34,8 @@ import org.bukkit.event.Event; import org.eclipse.jdt.annotation.Nullable; +import java.util.Locale; + @Name("Server Tick State") @Description("Represents the ticking state of the server, for example, if the server is frozen, or running normally.") @Examples({"if server's tick state is currently frozen:", "if server tick state is normal:"}) @@ -56,18 +58,15 @@ public enum ServerState { @Override public boolean init(Expression[] exprs, int matchedPattern, Kleenean isDelayed, ParseResult parseResult) { - String tag = parseResult.expr; - if (tag != null) { - try { - state = ServerState.valueOf(tag.toUpperCase()); - } catch (IllegalArgumentException e) { - Skript.error("Invalid argument."); - } + if (!parseResult.tags.isEmpty()) { + String tag = parseResult.tags.get(0).toUpperCase(Locale.ENGLISH); + state = ServerState.valueOf(tag); } return true; } + @Override public boolean check(Event event) { ServerTickManager serverTickManager = ServerUtils.getServerTickManager(); From 7bbf510e13dac4ab5894f708ca7202a4e10edc2a Mon Sep 17 00:00:00 2001 From: Asleepp Date: Tue, 7 May 2024 19:51:32 -0300 Subject: [PATCH 22/34] suggested changes x95954865 --- .../ch/njol/skript/conditions/CondServerTickState.java | 5 ++++- src/main/java/ch/njol/skript/effects/EffFreezeServer.java | 5 ++++- src/main/java/ch/njol/skript/effects/EffSprintServer.java | 7 +++++-- src/main/java/ch/njol/skript/effects/EffStepServer.java | 5 ++++- 4 files changed, 17 insertions(+), 5 deletions(-) diff --git a/src/main/java/ch/njol/skript/conditions/CondServerTickState.java b/src/main/java/ch/njol/skript/conditions/CondServerTickState.java index ebb34ebb715..d6ff018869b 100644 --- a/src/main/java/ch/njol/skript/conditions/CondServerTickState.java +++ b/src/main/java/ch/njol/skript/conditions/CondServerTickState.java @@ -38,7 +38,10 @@ @Name("Server Tick State") @Description("Represents the ticking state of the server, for example, if the server is frozen, or running normally.") -@Examples({"if server's tick state is currently frozen:", "if server tick state is normal:"}) +@Examples({ + "if server's tick state is currently frozen:", + "if server tick state is normal:" +}) @Since("INSERT VERSION") @RequiredPlugins("Minecraft 1.20.4+") public class CondServerTickState extends Condition { diff --git a/src/main/java/ch/njol/skript/effects/EffFreezeServer.java b/src/main/java/ch/njol/skript/effects/EffFreezeServer.java index c7d5df37d9e..299c18e037e 100644 --- a/src/main/java/ch/njol/skript/effects/EffFreezeServer.java +++ b/src/main/java/ch/njol/skript/effects/EffFreezeServer.java @@ -34,7 +34,10 @@ import org.jetbrains.annotations.Nullable; @Name("Freeze/Unfreeze Server") @Description("Freezes or unfreezes the server.") -@Examples({"freeze server", "unfreeze server"}) +@Examples({ + "freeze server", + "unfreeze server" +}) @Since("INSERT VERSION") @RequiredPlugins("Minecraft 1.20.4+") public class EffFreezeServer extends Effect { diff --git a/src/main/java/ch/njol/skript/effects/EffSprintServer.java b/src/main/java/ch/njol/skript/effects/EffSprintServer.java index d913e8888ef..6b9c74b8f89 100644 --- a/src/main/java/ch/njol/skript/effects/EffSprintServer.java +++ b/src/main/java/ch/njol/skript/effects/EffSprintServer.java @@ -37,9 +37,12 @@ @Name("Sprint Server") @Description({ "Requests the server to sprint for a certain amount of time, or stops the server from sprinting.", - "Sprinting is where the server increases the tick rate depending on the time you input, and resets the tick rate to what it was after it has finished sprinting." + "Sprinting is where the server increases the tick rate depending on the time you input, and resets the tick rate to what it was after the server has finished sprinting." +}) +@Examples({ + "request server to sprint for 10 seconds", + "make server stop sprinting" }) -@Examples({"request server to sprint for 10 seconds", "make server stop sprinting"}) @Since("INSERT VERSION") @RequiredPlugins("Minecraft 1.20.4+") public class EffSprintServer extends Effect { diff --git a/src/main/java/ch/njol/skript/effects/EffStepServer.java b/src/main/java/ch/njol/skript/effects/EffStepServer.java index 1b9408875fa..a5a7c0c0eab 100644 --- a/src/main/java/ch/njol/skript/effects/EffStepServer.java +++ b/src/main/java/ch/njol/skript/effects/EffStepServer.java @@ -37,7 +37,10 @@ @Description({ "Makes the server \"step\" for a certain amount of time while the server's tick state is frozen.", "When you step, the server goes forward that amount of time in ticks."}) -@Examples({"make server step for 5 seconds", "make server stop stepping"}) +@Examples({ + "make server step for 5 seconds", + "make server stop stepping" +}) @Since("INSERT VERSION") @RequiredPlugins("Minecraft 1.20.4+") public class EffStepServer extends Effect { From 8fdfed6dce26ad2a9103780f49c8d3e1357a7ae5 Mon Sep 17 00:00:00 2001 From: Asleepp <119438940+Asleeepp@users.noreply.github.com> Date: Fri, 21 Jun 2024 15:22:06 -0300 Subject: [PATCH 23/34] Changes + tests --- .../njol/skript/bukkitutil/ServerUtils.java | 13 +++++++-- .../skript/conditions/CondIsTickFrozen.java | 7 +++-- .../conditions/CondServerTickState.java | 7 +++-- .../njol/skript/effects/EffFreezeServer.java | 4 +-- .../njol/skript/effects/EffSprintServer.java | 10 +++---- .../ch/njol/skript/effects/EffStepServer.java | 17 ++++++----- .../expressions/ExprFrozenTicksToRun.java | 19 ++++++------- ...{ExprTick.java => ExprServerTickRate.java} | 28 +++++++++++-------- .../syntaxes/conditions/CondServerTickState | 27 ++++++++++++++++++ .../tests/syntaxes/effects/EffServerTick | 20 +++++++++++++ 10 files changed, 104 insertions(+), 48 deletions(-) rename src/main/java/ch/njol/skript/expressions/{ExprTick.java => ExprServerTickRate.java} (84%) create mode 100644 src/test/skript/tests/syntaxes/conditions/CondServerTickState create mode 100644 src/test/skript/tests/syntaxes/effects/EffServerTick diff --git a/src/main/java/ch/njol/skript/bukkitutil/ServerUtils.java b/src/main/java/ch/njol/skript/bukkitutil/ServerUtils.java index 8c6cba8c5e8..cb56f1ab5f1 100644 --- a/src/main/java/ch/njol/skript/bukkitutil/ServerUtils.java +++ b/src/main/java/ch/njol/skript/bukkitutil/ServerUtils.java @@ -23,17 +23,24 @@ import org.bukkit.ServerTickManager; public class ServerUtils { + private static final ServerTickManager SERVER_TICK_MANAGER; static { - ServerTickManager STM_VALUE = null; + ServerTickManager serverTickManager = null; if (Skript.methodExists(Bukkit.class, "getServerTickManager")) { - STM_VALUE = Bukkit.getServerTickManager(); + serverTickManager = Bukkit.getServerTickManager(); } - SERVER_TICK_MANAGER = STM_VALUE; + SERVER_TICK_MANAGER = serverTickManager; } public static ServerTickManager getServerTickManager() { return SERVER_TICK_MANAGER; } + + public static boolean isServerTickManagerPresent() { + return SERVER_TICK_MANAGER != null; + } + } + diff --git a/src/main/java/ch/njol/skript/conditions/CondIsTickFrozen.java b/src/main/java/ch/njol/skript/conditions/CondIsTickFrozen.java index 51890de03c5..41064f8f939 100644 --- a/src/main/java/ch/njol/skript/conditions/CondIsTickFrozen.java +++ b/src/main/java/ch/njol/skript/conditions/CondIsTickFrozen.java @@ -31,15 +31,15 @@ @Name("Is Entity Tick Frozen") @Description("Checks if the specified entities are frozen due to the server's ticking state.") -@Examples({"if target entity is tick frozen:"}) +@Examples("if target entity is tick frozen:") @Since("INSERT VERSION") @RequiredPlugins("Minecraft 1.20.4+") public class CondIsTickFrozen extends PropertyCondition { static { - if (Skript.methodExists(Bukkit.class, "getServerTickManager")) - register(CondIsTickFrozen.class, PropertyType.BE, "tick frozen", "entities"); + if (ServerUtils.isServerTickManagerPresent()) + register(CondIsTickFrozen.class, "tick frozen", "entities"); } @Override @@ -51,5 +51,6 @@ public boolean check(Entity entity) { protected String getPropertyName() { return "tick frozen"; } + } diff --git a/src/main/java/ch/njol/skript/conditions/CondServerTickState.java b/src/main/java/ch/njol/skript/conditions/CondServerTickState.java index d6ff018869b..e1e95a28d55 100644 --- a/src/main/java/ch/njol/skript/conditions/CondServerTickState.java +++ b/src/main/java/ch/njol/skript/conditions/CondServerTickState.java @@ -45,20 +45,20 @@ @Since("INSERT VERSION") @RequiredPlugins("Minecraft 1.20.4+") public class CondServerTickState extends Condition { + private ServerState state; static { - if (Skript.methodExists(Bukkit.class, "getServerTickManager")) + if (ServerUtils.isServerTickManagerPresent()) Skript.registerCondition(CondServerTickState.class, "[the] server['s] tick[ing] state is [currently] (:frozen|:stepping|:sprinting|:normal)", - "[the] server['s] tick[ing] state (is[n't| not]) [currently] (:frozen|:stepping|:sprinting|:normal)"); + "[the] server['s] tick[ing] state is(n't| not) [currently] (:frozen|:stepping|:sprinting|:normal)"); } public enum ServerState { FROZEN, STEPPING, SPRINTING, NORMAL } - @Override public boolean init(Expression[] exprs, int matchedPattern, Kleenean isDelayed, ParseResult parseResult) { if (!parseResult.tags.isEmpty()) { @@ -90,5 +90,6 @@ public boolean check(Event event) { public String toString(@Nullable Event event, boolean debug) { return "the server's tick state is " + state; } + } diff --git a/src/main/java/ch/njol/skript/effects/EffFreezeServer.java b/src/main/java/ch/njol/skript/effects/EffFreezeServer.java index 299c18e037e..269eff1246e 100644 --- a/src/main/java/ch/njol/skript/effects/EffFreezeServer.java +++ b/src/main/java/ch/njol/skript/effects/EffFreezeServer.java @@ -42,9 +42,8 @@ @RequiredPlugins("Minecraft 1.20.4+") public class EffFreezeServer extends Effect { - static { - if (Skript.methodExists(Bukkit.class, "getServerTickManager")) + if (ServerUtils.isServerTickManagerPresent()) Skript.registerEffect(EffFreezeServer.class, "freeze [the] server", "unfreeze [the] server"); @@ -67,4 +66,5 @@ protected void execute(Event event) { public String toString(@Nullable Event event, boolean debug) { return freeze ? "freeze server" : "unfreeze server"; } + } diff --git a/src/main/java/ch/njol/skript/effects/EffSprintServer.java b/src/main/java/ch/njol/skript/effects/EffSprintServer.java index 6b9c74b8f89..0dd21e2bdcb 100644 --- a/src/main/java/ch/njol/skript/effects/EffSprintServer.java +++ b/src/main/java/ch/njol/skript/effects/EffSprintServer.java @@ -47,9 +47,8 @@ @RequiredPlugins("Minecraft 1.20.4+") public class EffSprintServer extends Effect { - static { - if (Skript.methodExists(Bukkit.class, "getServerTickManager")) + if (ServerUtils.isServerTickManagerPresent()) Skript.registerEffect(EffSprintServer.class, "request [for] [the] server [to] sprint for %timespan%", "make [the] server stop sprinting"); @@ -58,8 +57,8 @@ public class EffSprintServer extends Effect { private boolean sprint; private Expression timespan; - @SuppressWarnings("unchecked") @Override + @SuppressWarnings("unchecked") public boolean init(Expression[] exprs, int matchedPattern, Kleenean isDelayed, ParseResult parseResult) { sprint = matchedPattern == 0; if (sprint) @@ -70,17 +69,16 @@ public boolean init(Expression[] exprs, int matchedPattern, Kleenean isDelaye @Override protected void execute(Event event) { if (sprint) { - Timespan timespanInstance = timespan.getSingle(event); - long sprintTicks = timespanInstance != null ? timespanInstance.getTicks() : 1; + long sprintTicks = timespan.getOptionalSingle(event).map(Timespan::getTicks).orElse(1L); ServerUtils.getServerTickManager().requestGameToSprint((int) sprintTicks); } else { ServerUtils.getServerTickManager().stopSprinting(); } } - @Override public String toString(@Nullable Event event, boolean debug) { return sprint ? "request to sprint server for" + timespan.toString(event, debug) : "stop sprinting server"; } + } diff --git a/src/main/java/ch/njol/skript/effects/EffStepServer.java b/src/main/java/ch/njol/skript/effects/EffStepServer.java index a5a7c0c0eab..b9a4c2559f3 100644 --- a/src/main/java/ch/njol/skript/effects/EffStepServer.java +++ b/src/main/java/ch/njol/skript/effects/EffStepServer.java @@ -30,13 +30,14 @@ import ch.njol.skript.doc.Examples; import ch.njol.skript.doc.Name; import ch.njol.util.Kleenean; -import org.bukkit.Bukkit; import org.bukkit.event.Event; import org.jetbrains.annotations.Nullable; + @Name("Step Server") @Description({ "Makes the server \"step\" for a certain amount of time while the server's tick state is frozen.", - "When you step, the server goes forward that amount of time in ticks."}) + "When you step, the server goes forward that amount of time in ticks." +}) @Examples({ "make server step for 5 seconds", "make server stop stepping" @@ -45,9 +46,8 @@ @RequiredPlugins("Minecraft 1.20.4+") public class EffStepServer extends Effect { - static { - if (Skript.methodExists(Bukkit.class, "getServerTickManager")) + if (ServerUtils.isServerTickManagerPresent()) Skript.registerEffect(EffStepServer.class, "make [the] server step for %timespan%", "make [the] server stop stepping"); @@ -66,11 +66,9 @@ public boolean init(Expression[] exprs, int matchedPattern, Kleenean isDelaye @Override protected void execute(Event event) { if (timespan != null) { - Timespan timespanInstance = timespan.getSingle(event); - if (timespanInstance != null) { - long stepTicks = timespanInstance.getTicks(); - ServerUtils.getServerTickManager().stepGameIfFrozen((int) stepTicks); - } + Timespan timespan = this.timespan.getSingle(event); + if (timespan != null) + ServerUtils.getServerTickManager().stepGameIfFrozen((int) timespan.getTicks()); } else { ServerUtils.getServerTickManager().stopStepping(); } @@ -81,4 +79,5 @@ protected void execute(Event event) { public String toString(@Nullable Event event, boolean debug) { return timespan == null ? "make the server stop stepping" : "make the server step for " + timespan.toString(event, debug); } + } diff --git a/src/main/java/ch/njol/skript/expressions/ExprFrozenTicksToRun.java b/src/main/java/ch/njol/skript/expressions/ExprFrozenTicksToRun.java index 0d4e117deb7..8a719fa9de2 100644 --- a/src/main/java/ch/njol/skript/expressions/ExprFrozenTicksToRun.java +++ b/src/main/java/ch/njol/skript/expressions/ExprFrozenTicksToRun.java @@ -34,17 +34,16 @@ import org.bukkit.event.Event; import org.eclipse.jdt.annotation.Nullable; -@Name("Frozen Ticks To Run") +@Name("Frozen Ticks to Run") @Description("Gets the amount of ticks that are in queue to run while the server's tick state is frozen.") -@Examples({"broadcast \"%frozen ticks to run%\""}) +@Examples("broadcast \"There are %frozen ticks to run% frozen ticks left!\"") @Since("INSERT VERSION") @RequiredPlugins("Minecraft 1.20.4+") -public class ExprFrozenTicksToRun extends SimpleExpression { - +public class ExprFrozenTicksToRun extends SimpleExpression { static { - if (Skript.methodExists(Bukkit.class, "getServerTickManager")) - Skript.registerExpression(ExprFrozenTicksToRun.class, Number.class, ExpressionType.SIMPLE, "[the] [amount of] frozen ticks [left] to run"); + if (ServerUtils.isServerTickManagerPresent()) + Skript.registerExpression(ExprFrozenTicksToRun.class, Integer.class, ExpressionType.SIMPLE, "[the] [amount of] frozen ticks [left] to run"); } @@ -55,8 +54,8 @@ public boolean init(Expression[] exprs, int matchedPattern, Kleenean isDelaye @Override @Nullable - protected Number[] get(Event event) { - return new Number[]{ServerUtils.getServerTickManager().getFrozenTicksToRun()}; + protected Integer[] get(Event event) { + return new Integer[] {ServerUtils.getServerTickManager().getFrozenTicksToRun()}; } @Override @@ -65,8 +64,8 @@ public boolean isSingle() { } @Override - public Class getReturnType() { - return Number.class; + public Class getReturnType() { + return Integer.class; } @Override diff --git a/src/main/java/ch/njol/skript/expressions/ExprTick.java b/src/main/java/ch/njol/skript/expressions/ExprServerTickRate.java similarity index 84% rename from src/main/java/ch/njol/skript/expressions/ExprTick.java rename to src/main/java/ch/njol/skript/expressions/ExprServerTickRate.java index 8929e586851..341eedb8f30 100644 --- a/src/main/java/ch/njol/skript/expressions/ExprTick.java +++ b/src/main/java/ch/njol/skript/expressions/ExprServerTickRate.java @@ -31,14 +31,15 @@ import ch.njol.skript.lang.SkriptParser.ParseResult; import ch.njol.skript.lang.util.SimpleExpression; import ch.njol.util.Kleenean; -import org.bukkit.Bukkit; +import ch.njol.util.coll.CollectionUtils; import org.bukkit.event.Event; import org.jetbrains.annotations.Nullable; @Name("Server Tick Rate") @Description({ "Gets or sets the current tick rate of the server. The tick rate is the number of game ticks that occur in a second. Higher values mean the game runs faster.", - "The server's default tick rate is 20."}) + "The server's default tick rate is 20." +}) @Examples({ "send \"%server's tick rate%\" to player", "set server's tick rate to 20 # This is the default tick rate.", @@ -47,13 +48,11 @@ }) @Since("INSERT VERSION") @RequiredPlugins("Minecraft 1.20.4+") -public class ExprTick extends SimpleExpression { - +public class ExprServerTickRate extends SimpleExpression { static { - if (Skript.methodExists(Bukkit.class, "getServerTickManager")) { - Skript.registerExpression(ExprTick.class, Number.class, ExpressionType.SIMPLE, "[the] server['s] tick rate"); - } + if (ServerUtils.isServerTickManagerPresent()) + Skript.registerExpression(ExprServerTickRate.class, Number.class, ExpressionType.SIMPLE, "[the] server['s] tick rate"); } @Override @@ -64,13 +63,19 @@ public boolean init(Expression[] exprs, int matchedPattern, Kleenean isDelaye @Nullable @Override protected Number[] get(Event event) { - return new Number[]{ServerUtils.getServerTickManager().getTickRate()}; + return new Number[] {ServerUtils.getServerTickManager().getTickRate()}; } public Class[] acceptChange(ChangeMode mode) { - if (mode == ChangeMode.SET || mode == ChangeMode.ADD || mode == ChangeMode.REMOVE || mode == ChangeMode.RESET) - return new Class[]{Number.class}; - return null; + switch (mode) { + case SET: + case ADD: + case REMOVE: + case RESET: + return CollectionUtils.array(Number.class); + default: + return null; + } } @Override @@ -93,7 +98,6 @@ public void change(Event event, @Nullable Object[] delta, ChangeMode mode) { } } - @Override public boolean isSingle() { return true; diff --git a/src/test/skript/tests/syntaxes/conditions/CondServerTickState b/src/test/skript/tests/syntaxes/conditions/CondServerTickState new file mode 100644 index 00000000000..ae9c0cbb928 --- /dev/null +++ b/src/test/skript/tests/syntaxes/conditions/CondServerTickState @@ -0,0 +1,27 @@ +test "Server Tick State Expressions" when running minecraft "1.20.4": + # Test if server is normal + assert server's tick state is normal with "Server tick state is not normal" + + freeze the server + assert server's tick state is frozen with "Server tick state is not frozen" + unfreeze the server + + # Step the server and test + make the server step for 5 seconds + assert server's tick state is stepping with "Server tick state is not stepping" + make the server stop stepping + + + # Sprint the server and test + request for the server to sprint for 10 seconds + assert server's tick state is sprinting with "Server tick state is not sprinting" + make the server stop sprinting + +test "Entity Tick Frozen Expression" when running minecraft "1.20.4": + spawn a cow at spawn of world "world" + freeze the server + wait 1 tick + assert last spawned cow is tick frozen with "Entity is not tick frozen" + unfreeze the server + assert last spawned cow is not tick frozen with "Entity is still tick frozen after unfreezing" + diff --git a/src/test/skript/tests/syntaxes/effects/EffServerTick b/src/test/skript/tests/syntaxes/effects/EffServerTick new file mode 100644 index 00000000000..c0108330e38 --- /dev/null +++ b/src/test/skript/tests/syntaxes/effects/EffServerTick @@ -0,0 +1,20 @@ +test "Server Sprinting Effect" when running minecraft "1.20.4": + request for the server to sprint for 10 seconds + assert server's tick state is sprinting with "Server did not start sprinting" + + make the server stop sprinting + assert server's tick state is normal with "Server did not stop sprinting" + +test "Server Stepping Effect" when running minecraft "1.20.4": + make the server step for 5 seconds + assert server's tick state is stepping with "Server did not start stepping" + + make the server stop stepping + assert server's tick state is normal with "Server did not stop stepping" + +test "Server Freezing Effect" when running minecraft "1.20.4": + freeze the server + assert server's tick state is frozen with "Server did not freeze" + + unfreeze the server + assert server's tick state is normal with "Server did not unfreeze" From 23084493f2633f6b795c0b714c9221bdc806f4d0 Mon Sep 17 00:00:00 2001 From: Asleepp <119438940+Asleeepp@users.noreply.github.com> Date: Fri, 21 Jun 2024 15:31:42 -0300 Subject: [PATCH 24/34] WORKING tests --- .../conditions/{CondServerTickState => CondServerTickState.sk} | 0 .../tests/syntaxes/effects/{EffServerTick => EffServerTick.sk} | 0 2 files changed, 0 insertions(+), 0 deletions(-) rename src/test/skript/tests/syntaxes/conditions/{CondServerTickState => CondServerTickState.sk} (100%) rename src/test/skript/tests/syntaxes/effects/{EffServerTick => EffServerTick.sk} (100%) diff --git a/src/test/skript/tests/syntaxes/conditions/CondServerTickState b/src/test/skript/tests/syntaxes/conditions/CondServerTickState.sk similarity index 100% rename from src/test/skript/tests/syntaxes/conditions/CondServerTickState rename to src/test/skript/tests/syntaxes/conditions/CondServerTickState.sk diff --git a/src/test/skript/tests/syntaxes/effects/EffServerTick b/src/test/skript/tests/syntaxes/effects/EffServerTick.sk similarity index 100% rename from src/test/skript/tests/syntaxes/effects/EffServerTick rename to src/test/skript/tests/syntaxes/effects/EffServerTick.sk From 53dabc9069c23dd3c070af644958690fd38d5d2b Mon Sep 17 00:00:00 2001 From: Asleepp <119438940+Asleeepp@users.noreply.github.com> Date: Fri, 21 Jun 2024 15:42:33 -0300 Subject: [PATCH 25/34] ACTUAL working tests --- .../skript/tests/syntaxes/conditions/CondServerTickState.sk | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/test/skript/tests/syntaxes/conditions/CondServerTickState.sk b/src/test/skript/tests/syntaxes/conditions/CondServerTickState.sk index ae9c0cbb928..7e10a2f39e4 100644 --- a/src/test/skript/tests/syntaxes/conditions/CondServerTickState.sk +++ b/src/test/skript/tests/syntaxes/conditions/CondServerTickState.sk @@ -4,13 +4,12 @@ test "Server Tick State Expressions" when running minecraft "1.20.4": freeze the server assert server's tick state is frozen with "Server tick state is not frozen" - unfreeze the server # Step the server and test make the server step for 5 seconds assert server's tick state is stepping with "Server tick state is not stepping" make the server stop stepping - + unfreeze the server # Sprint the server and test request for the server to sprint for 10 seconds From 8d35f8e6f6eab8353526e61c2df8b0909ebcdd97 Mon Sep 17 00:00:00 2001 From: Asleepp <119438940+Asleeepp@users.noreply.github.com> Date: Fri, 21 Jun 2024 16:09:34 -0300 Subject: [PATCH 26/34] Number -> float + Server tick rate test --- .../expressions/ExprServerTickRate.java | 12 +++++----- .../tests/syntaxes/effects/EffServerTick.sk | 22 +++++++++++++++++++ 2 files changed, 28 insertions(+), 6 deletions(-) diff --git a/src/main/java/ch/njol/skript/expressions/ExprServerTickRate.java b/src/main/java/ch/njol/skript/expressions/ExprServerTickRate.java index 341eedb8f30..e39406e70aa 100644 --- a/src/main/java/ch/njol/skript/expressions/ExprServerTickRate.java +++ b/src/main/java/ch/njol/skript/expressions/ExprServerTickRate.java @@ -48,11 +48,11 @@ }) @Since("INSERT VERSION") @RequiredPlugins("Minecraft 1.20.4+") -public class ExprServerTickRate extends SimpleExpression { +public class ExprServerTickRate extends SimpleExpression { static { if (ServerUtils.isServerTickManagerPresent()) - Skript.registerExpression(ExprServerTickRate.class, Number.class, ExpressionType.SIMPLE, "[the] server['s] tick rate"); + Skript.registerExpression(ExprServerTickRate.class, Float.class, ExpressionType.SIMPLE, "[the] server['s] tick rate"); } @Override @@ -62,8 +62,8 @@ public boolean init(Expression[] exprs, int matchedPattern, Kleenean isDelaye @Nullable @Override - protected Number[] get(Event event) { - return new Number[] {ServerUtils.getServerTickManager().getTickRate()}; + protected Float[] get(Event event) { + return new Float[] {ServerUtils.getServerTickManager().getTickRate()}; } public Class[] acceptChange(ChangeMode mode) { @@ -104,8 +104,8 @@ public boolean isSingle() { } @Override - public Class getReturnType() { - return Number.class; + public Class getReturnType() { + return Float.class; } @Override diff --git a/src/test/skript/tests/syntaxes/effects/EffServerTick.sk b/src/test/skript/tests/syntaxes/effects/EffServerTick.sk index c0108330e38..0846b65c6d6 100644 --- a/src/test/skript/tests/syntaxes/effects/EffServerTick.sk +++ b/src/test/skript/tests/syntaxes/effects/EffServerTick.sk @@ -18,3 +18,25 @@ test "Server Freezing Effect" when running minecraft "1.20.4": unfreeze the server assert server's tick state is normal with "Server did not unfreeze" + +test "Server Tick Rate Expression" when running minecraft "1.20.4": + set {_tickRate} to server's tick rate + assert {_tickRate} is 20 with "Default server tick rate is not 20" + + set server's tick rate to 25 + set {_tickRate} to server's tick rate + assert {_tickRate} is 25 with "Server tick rate was not set to 25" + + add 5 to server's tick rate + set {_tickRate} to server's tick rate + assert {_tickRate} is 30 with "Server tick rate was not increased to 30" + + remove 10 from server's tick rate + set {_tickRate} to server's tick rate + assert {_tickRate} is 20 with "Server tick rate was not decreased to 20" + + # Reset the server tick rate to default and verify + reset server's tick rate + set {_tickRate} to server's tick rate + assert {_tickRate} is 20 with "Server tick rate was not reset to 20" + From 9f205f417e9c8623098c35a6176d14bfdb84c291 Mon Sep 17 00:00:00 2001 From: Asleepp <119438940+Asleeepp@users.noreply.github.com> Date: Thu, 27 Jun 2024 18:08:50 -0300 Subject: [PATCH 27/34] Suggested --- .../ch/njol/skript/conditions/CondServerTickState.java | 10 ++++------ .../java/ch/njol/skript/effects/EffSprintServer.java | 2 +- .../java/ch/njol/skript/effects/EffStepServer.java | 6 ++++-- .../njol/skript/expressions/ExprFrozenTicksToRun.java | 3 ++- .../ch/njol/skript/expressions/ExprServerTickRate.java | 2 +- 5 files changed, 12 insertions(+), 11 deletions(-) diff --git a/src/main/java/ch/njol/skript/conditions/CondServerTickState.java b/src/main/java/ch/njol/skript/conditions/CondServerTickState.java index e1e95a28d55..ab2c2e3508a 100644 --- a/src/main/java/ch/njol/skript/conditions/CondServerTickState.java +++ b/src/main/java/ch/njol/skript/conditions/CondServerTickState.java @@ -46,8 +46,6 @@ @RequiredPlugins("Minecraft 1.20.4+") public class CondServerTickState extends Condition { - private ServerState state; - static { if (ServerUtils.isServerTickManagerPresent()) Skript.registerCondition(CondServerTickState.class, @@ -55,16 +53,16 @@ public class CondServerTickState extends Condition { "[the] server['s] tick[ing] state is(n't| not) [currently] (:frozen|:stepping|:sprinting|:normal)"); } + private ServerState state; + public enum ServerState { FROZEN, STEPPING, SPRINTING, NORMAL } @Override public boolean init(Expression[] exprs, int matchedPattern, Kleenean isDelayed, ParseResult parseResult) { - if (!parseResult.tags.isEmpty()) { - String tag = parseResult.tags.get(0).toUpperCase(Locale.ENGLISH); - state = ServerState.valueOf(tag); - } + String tag = parseResult.tags.get(0).toUpperCase(Locale.ENGLISH); + state = ServerState.valueOf(tag); return true; } diff --git a/src/main/java/ch/njol/skript/effects/EffSprintServer.java b/src/main/java/ch/njol/skript/effects/EffSprintServer.java index 0dd21e2bdcb..92f576ba80f 100644 --- a/src/main/java/ch/njol/skript/effects/EffSprintServer.java +++ b/src/main/java/ch/njol/skript/effects/EffSprintServer.java @@ -50,7 +50,7 @@ public class EffSprintServer extends Effect { static { if (ServerUtils.isServerTickManagerPresent()) Skript.registerEffect(EffSprintServer.class, - "request [for] [the] server [to] sprint for %timespan%", + "(make|request) [for] [the] server [to] sprint for %timespan%", "make [the] server stop sprinting"); } diff --git a/src/main/java/ch/njol/skript/effects/EffStepServer.java b/src/main/java/ch/njol/skript/effects/EffStepServer.java index b9a4c2559f3..21d5df18e32 100644 --- a/src/main/java/ch/njol/skript/effects/EffStepServer.java +++ b/src/main/java/ch/njol/skript/effects/EffStepServer.java @@ -35,7 +35,8 @@ @Name("Step Server") @Description({ - "Makes the server \"step\" for a certain amount of time while the server's tick state is frozen.", + "Makes the server \"step\" for a certain amount of time", + "The server can only step when it's ticking state is frozen.", "When you step, the server goes forward that amount of time in ticks." }) @Examples({ @@ -55,8 +56,9 @@ public class EffStepServer extends Effect { private Expression timespan; - @SuppressWarnings("unchecked") + @Override + @SuppressWarnings("unchecked") public boolean init(Expression[] exprs, int matchedPattern, Kleenean isDelayed, ParseResult parseResult) { if (matchedPattern == 0) timespan = (Expression) exprs[0]; diff --git a/src/main/java/ch/njol/skript/expressions/ExprFrozenTicksToRun.java b/src/main/java/ch/njol/skript/expressions/ExprFrozenTicksToRun.java index 8a719fa9de2..fa351b0e8ed 100644 --- a/src/main/java/ch/njol/skript/expressions/ExprFrozenTicksToRun.java +++ b/src/main/java/ch/njol/skript/expressions/ExprFrozenTicksToRun.java @@ -70,6 +70,7 @@ public Class getReturnType() { @Override public String toString(@Nullable Event event, boolean debug) { - return "frozen ticks to run"; + return "the frozen ticks left to run"; } + } diff --git a/src/main/java/ch/njol/skript/expressions/ExprServerTickRate.java b/src/main/java/ch/njol/skript/expressions/ExprServerTickRate.java index e39406e70aa..6c4f3b01f09 100644 --- a/src/main/java/ch/njol/skript/expressions/ExprServerTickRate.java +++ b/src/main/java/ch/njol/skript/expressions/ExprServerTickRate.java @@ -81,7 +81,7 @@ public Class[] acceptChange(ChangeMode mode) { @Override public void change(Event event, @Nullable Object[] delta, ChangeMode mode) { float tickRate = ServerUtils.getServerTickManager().getTickRate(); - float change = delta != null && delta.length != 0 ? ((Number) delta[0]).floatValue() : 0; + float change = delta != null ? ((Number) delta[0]).floatValue() : 0; switch (mode) { case SET: ServerUtils.getServerTickManager().setTickRate(change); From 936f56665ec8076159e9c6659e0eb9bfbd8e888e Mon Sep 17 00:00:00 2001 From: Asleepp <119438940+Asleeepp@users.noreply.github.com> Date: Fri, 28 Jun 2024 14:14:06 -0300 Subject: [PATCH 28/34] Slight syntax change --- .../java/ch/njol/skript/conditions/CondServerTickState.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/main/java/ch/njol/skript/conditions/CondServerTickState.java b/src/main/java/ch/njol/skript/conditions/CondServerTickState.java index ab2c2e3508a..15716e55bd0 100644 --- a/src/main/java/ch/njol/skript/conditions/CondServerTickState.java +++ b/src/main/java/ch/njol/skript/conditions/CondServerTickState.java @@ -40,7 +40,7 @@ @Description("Represents the ticking state of the server, for example, if the server is frozen, or running normally.") @Examples({ "if server's tick state is currently frozen:", - "if server tick state is normal:" + "if the server is sprinting:" }) @Since("INSERT VERSION") @RequiredPlugins("Minecraft 1.20.4+") @@ -49,8 +49,8 @@ public class CondServerTickState extends Condition { static { if (ServerUtils.isServerTickManagerPresent()) Skript.registerCondition(CondServerTickState.class, - "[the] server['s] tick[ing] state is [currently] (:frozen|:stepping|:sprinting|:normal)", - "[the] server['s] tick[ing] state is(n't| not) [currently] (:frozen|:stepping|:sprinting|:normal)"); + "[the] server['s tick[ing] state] is [currently] (:frozen|:stepping|:sprinting|:normal)", + "[the] server['s tick[ing] state] is(n't| not) [currently] (:frozen|:stepping|:sprinting|:normal)"); } private ServerState state; From 9b6124ed9a552edad8b36c67d4608165b4fc369e Mon Sep 17 00:00:00 2001 From: Asleepp <119438940+Asleeepp@users.noreply.github.com> Date: Mon, 1 Jul 2024 21:15:28 -0300 Subject: [PATCH 29/34] stuff --- .../njol/skript/effects/EffSprintServer.java | 8 ++- .../ch/njol/skript/effects/EffStepServer.java | 2 +- .../expressions/ExprServerTickRate.java | 2 +- .../tests/syntaxes/effects/EffServerTick.sk | 51 ++++++++++++------- 4 files changed, 37 insertions(+), 26 deletions(-) diff --git a/src/main/java/ch/njol/skript/effects/EffSprintServer.java b/src/main/java/ch/njol/skript/effects/EffSprintServer.java index 92f576ba80f..e42b7144d8b 100644 --- a/src/main/java/ch/njol/skript/effects/EffSprintServer.java +++ b/src/main/java/ch/njol/skript/effects/EffSprintServer.java @@ -54,21 +54,19 @@ public class EffSprintServer extends Effect { "make [the] server stop sprinting"); } - private boolean sprint; private Expression timespan; @Override @SuppressWarnings("unchecked") public boolean init(Expression[] exprs, int matchedPattern, Kleenean isDelayed, ParseResult parseResult) { - sprint = matchedPattern == 0; - if (sprint) + if (timespan != null) timespan = (Expression) exprs[0]; return true; } @Override protected void execute(Event event) { - if (sprint) { + if (timespan != null) { long sprintTicks = timespan.getOptionalSingle(event).map(Timespan::getTicks).orElse(1L); ServerUtils.getServerTickManager().requestGameToSprint((int) sprintTicks); } else { @@ -78,7 +76,7 @@ protected void execute(Event event) { @Override public String toString(@Nullable Event event, boolean debug) { - return sprint ? "request to sprint server for" + timespan.toString(event, debug) : "stop sprinting server"; + return timespan != null ? "request to sprint server for" + timespan.toString(event, debug) : "stop sprinting server"; } } diff --git a/src/main/java/ch/njol/skript/effects/EffStepServer.java b/src/main/java/ch/njol/skript/effects/EffStepServer.java index 21d5df18e32..2a469e19a9c 100644 --- a/src/main/java/ch/njol/skript/effects/EffStepServer.java +++ b/src/main/java/ch/njol/skript/effects/EffStepServer.java @@ -36,7 +36,7 @@ @Name("Step Server") @Description({ "Makes the server \"step\" for a certain amount of time", - "The server can only step when it's ticking state is frozen.", + "The server can only step when its ticking state is frozen.", "When you step, the server goes forward that amount of time in ticks." }) @Examples({ diff --git a/src/main/java/ch/njol/skript/expressions/ExprServerTickRate.java b/src/main/java/ch/njol/skript/expressions/ExprServerTickRate.java index 6c4f3b01f09..cfb33ebda64 100644 --- a/src/main/java/ch/njol/skript/expressions/ExprServerTickRate.java +++ b/src/main/java/ch/njol/skript/expressions/ExprServerTickRate.java @@ -110,7 +110,7 @@ public Class getReturnType() { @Override public String toString(@Nullable Event event, boolean debug) { - return "server tick rate"; + return "the server's tick rate"; } } diff --git a/src/test/skript/tests/syntaxes/effects/EffServerTick.sk b/src/test/skript/tests/syntaxes/effects/EffServerTick.sk index 0846b65c6d6..7219e19d7a9 100644 --- a/src/test/skript/tests/syntaxes/effects/EffServerTick.sk +++ b/src/test/skript/tests/syntaxes/effects/EffServerTick.sk @@ -20,23 +20,36 @@ test "Server Freezing Effect" when running minecraft "1.20.4": assert server's tick state is normal with "Server did not unfreeze" test "Server Tick Rate Expression" when running minecraft "1.20.4": - set {_tickRate} to server's tick rate - assert {_tickRate} is 20 with "Default server tick rate is not 20" - - set server's tick rate to 25 - set {_tickRate} to server's tick rate - assert {_tickRate} is 25 with "Server tick rate was not set to 25" - - add 5 to server's tick rate - set {_tickRate} to server's tick rate - assert {_tickRate} is 30 with "Server tick rate was not increased to 30" - - remove 10 from server's tick rate - set {_tickRate} to server's tick rate - assert {_tickRate} is 20 with "Server tick rate was not decreased to 20" - - # Reset the server tick rate to default and verify - reset server's tick rate - set {_tickRate} to server's tick rate - assert {_tickRate} is 20 with "Server tick rate was not reset to 20" + # Ensure default tick rate is 20 + set {_tickRate} to server's tick rate + assert {_tickRate} is 20 with "Default server tick rate is not 20" + + set server's tick rate to 25 + set {_tickRate} to server's tick rate + assert {_tickRate} is 25 with "Server tick rate was not set to 25" + + add 5 to server's tick rate + set {_tickRate} to server's tick rate + assert {_tickRate} is 30 with "Server tick rate was not increased to 30" + + remove 10 from server's tick rate + set {_tickRate} to server's tick rate + assert {_tickRate} is 20 with "Server tick rate was not decreased to 20" + + set server's tick rate to -5 + set {_tickRate} to server's tick rate + assert {_tickRate} is 20 with "Setting negative tick rate did not revert to default" + + add -3 to server's tick rate + set {_tickRate} to server's tick rate + assert {_tickRate} is 17 with "Adding negative value did not decrease tick rate" + + remove -7 from server's tick rate + set {_tickRate} to server's tick rate + assert {_tickRate} is 24 with "Removing negative value did not increase tick rate" + + # Reset the server tick rate to default and verify + reset server's tick rate + set {_tickRate} to server's tick rate + assert {_tickRate} is 20 with "Server tick rate was not reset to 20" From 44dd920d7e5705f4814be12d50ba63ac27cf21b2 Mon Sep 17 00:00:00 2001 From: Asleepp <119438940+Asleeepp@users.noreply.github.com> Date: Wed, 4 Sep 2024 20:56:58 -0300 Subject: [PATCH 30/34] suggested changes --- .../conditions/CondServerTickState.java | 54 ++++++------------- .../njol/skript/effects/EffFreezeServer.java | 20 +------ .../njol/skript/effects/EffSprintServer.java | 29 +++------- .../ch/njol/skript/effects/EffStepServer.java | 21 +------- .../expressions/ExprFrozenTicksToRun.java | 30 +++-------- .../expressions/ExprServerTickRate.java | 42 +++++---------- .../conditions/CondServerTickState.sk | 2 +- .../tests/syntaxes/effects/EffServerTick.sk | 10 ++-- 8 files changed, 49 insertions(+), 159 deletions(-) diff --git a/src/main/java/ch/njol/skript/conditions/CondServerTickState.java b/src/main/java/ch/njol/skript/conditions/CondServerTickState.java index 15716e55bd0..01af14dd341 100644 --- a/src/main/java/ch/njol/skript/conditions/CondServerTickState.java +++ b/src/main/java/ch/njol/skript/conditions/CondServerTickState.java @@ -1,21 +1,3 @@ -/** - * This file is part of Skript. - * - * Skript is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * Skript is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Skript. If not, see . - * - * Copyright Peter Güttinger, SkriptLang team and contributors - */ package ch.njol.skript.conditions; import ch.njol.skript.Skript; @@ -29,7 +11,6 @@ import ch.njol.skript.lang.Expression; import ch.njol.skript.lang.SkriptParser.ParseResult; import ch.njol.util.Kleenean; -import org.bukkit.Bukkit; import org.bukkit.ServerTickManager; import org.bukkit.event.Event; import org.eclipse.jdt.annotation.Nullable; @@ -49,8 +30,8 @@ public class CondServerTickState extends Condition { static { if (ServerUtils.isServerTickManagerPresent()) Skript.registerCondition(CondServerTickState.class, - "[the] server['s tick[ing] state] is [currently] (:frozen|:stepping|:sprinting|:normal)", - "[the] server['s tick[ing] state] is(n't| not) [currently] (:frozen|:stepping|:sprinting|:normal)"); + "[the] server's tick[ing] state is [currently] (:frozen|:stepping|:sprinting|:normal)", + "[the] server's tick[ing] state (isn't|is not) [currently] (:frozen|:stepping|:sprinting|:normal)"); } private ServerState state; @@ -63,31 +44,30 @@ public enum ServerState { public boolean init(Expression[] exprs, int matchedPattern, Kleenean isDelayed, ParseResult parseResult) { String tag = parseResult.tags.get(0).toUpperCase(Locale.ENGLISH); state = ServerState.valueOf(tag); + setNegated(matchedPattern == 1); return true; } - - - @Override public boolean check(Event event) { ServerTickManager serverTickManager = ServerUtils.getServerTickManager(); - switch (state) { - case FROZEN: - return serverTickManager.isFrozen() != isNegated(); - case STEPPING: - return serverTickManager.isStepping() != isNegated(); - case SPRINTING: - return serverTickManager.isSprinting() != isNegated(); - case NORMAL: - return serverTickManager.isRunningNormally() != isNegated(); - } - return isNegated(); + boolean result = switch (state) { + case FROZEN -> serverTickManager.isFrozen(); + case STEPPING -> serverTickManager.isStepping(); + case SPRINTING -> serverTickManager.isSprinting(); + case NORMAL -> serverTickManager.isRunningNormally(); + }; + return isNegated() != result; } @Override public String toString(@Nullable Event event, boolean debug) { - return "the server's tick state is " + state; + String stateStr; + if (isNegated()) { + stateStr = "the server's tick state isn't "; + } else { + stateStr = "the server's tick state is "; + } + return stateStr + state.toString().toLowerCase(Locale.ENGLISH); } - } diff --git a/src/main/java/ch/njol/skript/effects/EffFreezeServer.java b/src/main/java/ch/njol/skript/effects/EffFreezeServer.java index 269eff1246e..8713707b870 100644 --- a/src/main/java/ch/njol/skript/effects/EffFreezeServer.java +++ b/src/main/java/ch/njol/skript/effects/EffFreezeServer.java @@ -1,21 +1,3 @@ -/** - * This file is part of Skript. - * - * Skript is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * Skript is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Skript. If not, see . - * - * Copyright Peter Güttinger, SkriptLang team and contributors - */ package ch.njol.skript.effects; import ch.njol.skript.Skript; @@ -29,9 +11,9 @@ import ch.njol.skript.lang.Expression; import ch.njol.skript.lang.SkriptParser.ParseResult; import ch.njol.util.Kleenean; -import org.bukkit.Bukkit; import org.bukkit.event.Event; import org.jetbrains.annotations.Nullable; + @Name("Freeze/Unfreeze Server") @Description("Freezes or unfreezes the server.") @Examples({ diff --git a/src/main/java/ch/njol/skript/effects/EffSprintServer.java b/src/main/java/ch/njol/skript/effects/EffSprintServer.java index e42b7144d8b..2a3a95164db 100644 --- a/src/main/java/ch/njol/skript/effects/EffSprintServer.java +++ b/src/main/java/ch/njol/skript/effects/EffSprintServer.java @@ -1,21 +1,3 @@ -/** - * This file is part of Skript. - * - * Skript is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * Skript is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Skript. If not, see . - * - * Copyright Peter Güttinger, SkriptLang team and contributors - */ package ch.njol.skript.effects; import ch.njol.skript.Skript; @@ -30,13 +12,12 @@ import ch.njol.skript.doc.Examples; import ch.njol.skript.doc.Name; import ch.njol.util.Kleenean; -import org.bukkit.Bukkit; import org.bukkit.event.Event; import org.jetbrains.annotations.Nullable; @Name("Sprint Server") @Description({ - "Requests the server to sprint for a certain amount of time, or stops the server from sprinting.", + "Makes the server sprint for a certain amount of time, or stops the server from sprinting.", "Sprinting is where the server increases the tick rate depending on the time you input, and resets the tick rate to what it was after the server has finished sprinting." }) @Examples({ @@ -50,7 +31,7 @@ public class EffSprintServer extends Effect { static { if (ServerUtils.isServerTickManagerPresent()) Skript.registerEffect(EffSprintServer.class, - "(make|request) [for] [the] server [to] sprint for %timespan%", + "make [the] server sprint for %timespan%", "make [the] server stop sprinting"); } @@ -59,7 +40,7 @@ public class EffSprintServer extends Effect { @Override @SuppressWarnings("unchecked") public boolean init(Expression[] exprs, int matchedPattern, Kleenean isDelayed, ParseResult parseResult) { - if (timespan != null) + if (matchedPattern == 0) timespan = (Expression) exprs[0]; return true; } @@ -76,7 +57,9 @@ protected void execute(Event event) { @Override public String toString(@Nullable Event event, boolean debug) { - return timespan != null ? "request to sprint server for" + timespan.toString(event, debug) : "stop sprinting server"; + if (timespan != null) + return "make the server sprint for " + timespan.toString(event, debug); + return "make the server stop sprinting"; } } diff --git a/src/main/java/ch/njol/skript/effects/EffStepServer.java b/src/main/java/ch/njol/skript/effects/EffStepServer.java index 2a469e19a9c..387821e62f6 100644 --- a/src/main/java/ch/njol/skript/effects/EffStepServer.java +++ b/src/main/java/ch/njol/skript/effects/EffStepServer.java @@ -1,21 +1,3 @@ -/** - * This file is part of Skript. - * - * Skript is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * Skript is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Skript. If not, see . - * - * Copyright Peter Güttinger, SkriptLang team and contributors - */ package ch.njol.skript.effects; import ch.njol.skript.Skript; @@ -37,7 +19,7 @@ @Description({ "Makes the server \"step\" for a certain amount of time", "The server can only step when its ticking state is frozen.", - "When you step, the server goes forward that amount of time in ticks." + "When stepping, the server goes forward that amount of time in ticks." }) @Examples({ "make server step for 5 seconds", @@ -56,7 +38,6 @@ public class EffStepServer extends Effect { private Expression timespan; - @Override @SuppressWarnings("unchecked") public boolean init(Expression[] exprs, int matchedPattern, Kleenean isDelayed, ParseResult parseResult) { diff --git a/src/main/java/ch/njol/skript/expressions/ExprFrozenTicksToRun.java b/src/main/java/ch/njol/skript/expressions/ExprFrozenTicksToRun.java index fa351b0e8ed..d3b3681e0d4 100644 --- a/src/main/java/ch/njol/skript/expressions/ExprFrozenTicksToRun.java +++ b/src/main/java/ch/njol/skript/expressions/ExprFrozenTicksToRun.java @@ -1,21 +1,3 @@ -/** - * This file is part of Skript. - * - * Skript is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * Skript is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Skript. If not, see . - * - * Copyright Peter Güttinger, SkriptLang team and contributors - */ package ch.njol.skript.expressions; import ch.njol.skript.Skript; @@ -30,7 +12,6 @@ import ch.njol.skript.lang.SkriptParser.ParseResult; import ch.njol.skript.lang.util.SimpleExpression; import ch.njol.util.Kleenean; -import org.bukkit.Bukkit; import org.bukkit.event.Event; import org.eclipse.jdt.annotation.Nullable; @@ -46,16 +27,19 @@ public class ExprFrozenTicksToRun extends SimpleExpression { Skript.registerExpression(ExprFrozenTicksToRun.class, Integer.class, ExpressionType.SIMPLE, "[the] [amount of] frozen ticks [left] to run"); } - @Override public boolean init(Expression[] exprs, int matchedPattern, Kleenean isDelayed, ParseResult parseResult) { return true; } @Override - @Nullable - protected Integer[] get(Event event) { - return new Integer[] {ServerUtils.getServerTickManager().getFrozenTicksToRun()}; + protected Integer @Nullable [] get(Event event) { + int frozenTicks = ServerUtils.getServerTickManager().getFrozenTicksToRun(); + if (frozenTicks > 0) { + return new Integer[] {frozenTicks}; + } else { + return null; + } } @Override diff --git a/src/main/java/ch/njol/skript/expressions/ExprServerTickRate.java b/src/main/java/ch/njol/skript/expressions/ExprServerTickRate.java index cfb33ebda64..2aaaaf72858 100644 --- a/src/main/java/ch/njol/skript/expressions/ExprServerTickRate.java +++ b/src/main/java/ch/njol/skript/expressions/ExprServerTickRate.java @@ -1,21 +1,3 @@ -/** - * This file is part of Skript. - * - * Skript is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * Skript is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Skript. If not, see . - * - * Copyright Peter Güttinger, SkriptLang team and contributors - */ package ch.njol.skript.expressions; import ch.njol.skript.Skript; @@ -31,6 +13,7 @@ import ch.njol.skript.lang.SkriptParser.ParseResult; import ch.njol.skript.lang.util.SimpleExpression; import ch.njol.util.Kleenean; +import ch.njol.util.Math2; import ch.njol.util.coll.CollectionUtils; import org.bukkit.event.Event; import org.jetbrains.annotations.Nullable; @@ -68,13 +51,8 @@ protected Float[] get(Event event) { public Class[] acceptChange(ChangeMode mode) { switch (mode) { - case SET: - case ADD: - case REMOVE: - case RESET: - return CollectionUtils.array(Number.class); - default: - return null; + case SET, ADD, REMOVE, RESET -> { return CollectionUtils.array(Number.class); } + default -> { return null; } } } @@ -82,20 +60,26 @@ public Class[] acceptChange(ChangeMode mode) { public void change(Event event, @Nullable Object[] delta, ChangeMode mode) { float tickRate = ServerUtils.getServerTickManager().getTickRate(); float change = delta != null ? ((Number) delta[0]).floatValue() : 0; + float newTickRate = tickRate; + switch (mode) { case SET: - ServerUtils.getServerTickManager().setTickRate(change); + newTickRate = change; break; case ADD: - ServerUtils.getServerTickManager().setTickRate(tickRate + change); + newTickRate = tickRate + change; break; case REMOVE: - ServerUtils.getServerTickManager().setTickRate(tickRate - change); + newTickRate = tickRate - change; break; case RESET: - ServerUtils.getServerTickManager().setTickRate(20); + newTickRate = 20; break; } + + newTickRate = Math2.fit(newTickRate, 1.0f, 10000f); + + ServerUtils.getServerTickManager().setTickRate(newTickRate); } @Override diff --git a/src/test/skript/tests/syntaxes/conditions/CondServerTickState.sk b/src/test/skript/tests/syntaxes/conditions/CondServerTickState.sk index 7e10a2f39e4..4a34b54bb8a 100644 --- a/src/test/skript/tests/syntaxes/conditions/CondServerTickState.sk +++ b/src/test/skript/tests/syntaxes/conditions/CondServerTickState.sk @@ -12,7 +12,7 @@ test "Server Tick State Expressions" when running minecraft "1.20.4": unfreeze the server # Sprint the server and test - request for the server to sprint for 10 seconds + make the server sprint for 10 seconds assert server's tick state is sprinting with "Server tick state is not sprinting" make the server stop sprinting diff --git a/src/test/skript/tests/syntaxes/effects/EffServerTick.sk b/src/test/skript/tests/syntaxes/effects/EffServerTick.sk index 7219e19d7a9..33c8af2c9e7 100644 --- a/src/test/skript/tests/syntaxes/effects/EffServerTick.sk +++ b/src/test/skript/tests/syntaxes/effects/EffServerTick.sk @@ -1,5 +1,5 @@ test "Server Sprinting Effect" when running minecraft "1.20.4": - request for the server to sprint for 10 seconds + make the server sprint for 10 seconds assert server's tick state is sprinting with "Server did not start sprinting" make the server stop sprinting @@ -38,15 +38,11 @@ test "Server Tick Rate Expression" when running minecraft "1.20.4": set server's tick rate to -5 set {_tickRate} to server's tick rate - assert {_tickRate} is 20 with "Setting negative tick rate did not revert to default" + assert {_tickRate} is 1 with "Setting negative tick rate did not clamp." add -3 to server's tick rate set {_tickRate} to server's tick rate - assert {_tickRate} is 17 with "Adding negative value did not decrease tick rate" - - remove -7 from server's tick rate - set {_tickRate} to server's tick rate - assert {_tickRate} is 24 with "Removing negative value did not increase tick rate" + assert {_tickRate} is 1 with "Adding a negative value clamped the tick rate." # Reset the server tick rate to default and verify reset server's tick rate From 6f6668208786b3eb30b93275474acc7b659ed81d Mon Sep 17 00:00:00 2001 From: Asleepp <119438940+Asleeepp@users.noreply.github.com> Date: Wed, 30 Oct 2024 17:05:42 -0300 Subject: [PATCH 31/34] jetbrains --- .../java/ch/njol/skript/conditions/CondServerTickState.java | 2 +- .../java/ch/njol/skript/expressions/ExprFrozenTicksToRun.java | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/ch/njol/skript/conditions/CondServerTickState.java b/src/main/java/ch/njol/skript/conditions/CondServerTickState.java index 01af14dd341..197d676477f 100644 --- a/src/main/java/ch/njol/skript/conditions/CondServerTickState.java +++ b/src/main/java/ch/njol/skript/conditions/CondServerTickState.java @@ -13,7 +13,7 @@ import ch.njol.util.Kleenean; import org.bukkit.ServerTickManager; import org.bukkit.event.Event; -import org.eclipse.jdt.annotation.Nullable; +import org.jetbrains.annotations.Nullable; import java.util.Locale; diff --git a/src/main/java/ch/njol/skript/expressions/ExprFrozenTicksToRun.java b/src/main/java/ch/njol/skript/expressions/ExprFrozenTicksToRun.java index d3b3681e0d4..64c12a3ca3c 100644 --- a/src/main/java/ch/njol/skript/expressions/ExprFrozenTicksToRun.java +++ b/src/main/java/ch/njol/skript/expressions/ExprFrozenTicksToRun.java @@ -13,7 +13,7 @@ import ch.njol.skript.lang.util.SimpleExpression; import ch.njol.util.Kleenean; import org.bukkit.event.Event; -import org.eclipse.jdt.annotation.Nullable; +import org.jetbrains.annotations.Nullable; @Name("Frozen Ticks to Run") @Description("Gets the amount of ticks that are in queue to run while the server's tick state is frozen.") From fc817831aa3c6e57ab43ab9bbf7da522d98ab0c5 Mon Sep 17 00:00:00 2001 From: Asleepp <119438940+Asleeepp@users.noreply.github.com> Date: Sat, 7 Dec 2024 06:26:01 -0300 Subject: [PATCH 32/34] Apply suggestions from code review Co-authored-by: Patrick Miller --- .../java/ch/njol/skript/conditions/CondServerTickState.java | 2 +- src/main/java/ch/njol/skript/effects/EffStepServer.java | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/ch/njol/skript/conditions/CondServerTickState.java b/src/main/java/ch/njol/skript/conditions/CondServerTickState.java index 197d676477f..cc41e829b20 100644 --- a/src/main/java/ch/njol/skript/conditions/CondServerTickState.java +++ b/src/main/java/ch/njol/skript/conditions/CondServerTickState.java @@ -69,5 +69,5 @@ public String toString(@Nullable Event event, boolean debug) { } return stateStr + state.toString().toLowerCase(Locale.ENGLISH); } -} +} diff --git a/src/main/java/ch/njol/skript/effects/EffStepServer.java b/src/main/java/ch/njol/skript/effects/EffStepServer.java index 387821e62f6..df5cd8f641e 100644 --- a/src/main/java/ch/njol/skript/effects/EffStepServer.java +++ b/src/main/java/ch/njol/skript/effects/EffStepServer.java @@ -51,7 +51,7 @@ protected void execute(Event event) { if (timespan != null) { Timespan timespan = this.timespan.getSingle(event); if (timespan != null) - ServerUtils.getServerTickManager().stepGameIfFrozen((int) timespan.getTicks()); + ServerUtils.getServerTickManager().stepGameIfFrozen((int) timespan.getAs(Timespan.TimePeriod.TICKS)); } else { ServerUtils.getServerTickManager().stopStepping(); } From e3d2e793a1c84abbe7a4249b1f15d74d21aee230 Mon Sep 17 00:00:00 2001 From: Asleepp <119438940+Asleeepp@users.noreply.github.com> Date: Sat, 7 Dec 2024 06:26:44 -0300 Subject: [PATCH 33/34] Apply suggestions from code review Co-authored-by: Patrick Miller --- .../ch/njol/skript/expressions/ExprFrozenTicksToRun.java | 5 ++--- .../java/ch/njol/skript/expressions/ExprServerTickRate.java | 4 ++-- 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/src/main/java/ch/njol/skript/expressions/ExprFrozenTicksToRun.java b/src/main/java/ch/njol/skript/expressions/ExprFrozenTicksToRun.java index 64c12a3ca3c..cee4884d2c2 100644 --- a/src/main/java/ch/njol/skript/expressions/ExprFrozenTicksToRun.java +++ b/src/main/java/ch/njol/skript/expressions/ExprFrozenTicksToRun.java @@ -36,10 +36,9 @@ public boolean init(Expression[] exprs, int matchedPattern, Kleenean isDelaye protected Integer @Nullable [] get(Event event) { int frozenTicks = ServerUtils.getServerTickManager().getFrozenTicksToRun(); if (frozenTicks > 0) { - return new Integer[] {frozenTicks}; - } else { - return null; + return new Integer[]{frozenTicks}; } + return new Integer[0]; } @Override diff --git a/src/main/java/ch/njol/skript/expressions/ExprServerTickRate.java b/src/main/java/ch/njol/skript/expressions/ExprServerTickRate.java index 2aaaaf72858..de426fdc333 100644 --- a/src/main/java/ch/njol/skript/expressions/ExprServerTickRate.java +++ b/src/main/java/ch/njol/skript/expressions/ExprServerTickRate.java @@ -51,8 +51,8 @@ protected Float[] get(Event event) { public Class[] acceptChange(ChangeMode mode) { switch (mode) { - case SET, ADD, REMOVE, RESET -> { return CollectionUtils.array(Number.class); } - default -> { return null; } + case SET, ADD, REMOVE, RESET -> return CollectionUtils.array(Number.class); + default -> return null; } } From 47e0f49c3df3c318fd3c44703ecba65ceaf7329a Mon Sep 17 00:00:00 2001 From: Asleepp <119438940+Asleeepp@users.noreply.github.com> Date: Sat, 28 Dec 2024 13:48:08 -0300 Subject: [PATCH 34/34] ticking module --- src/main/java/ch/njol/skript/Skript.java | 2 ++ .../skript/bukkit/ticking/TickingModule.java | 24 +++++++++++++++++++ .../conditions/CondIsTickFrozen.java | 23 +----------------- .../conditions/CondServerTickState.java | 2 +- .../elements}/effects/EffFreezeServer.java | 2 +- .../elements}/effects/EffSprintServer.java | 2 +- .../elements}/effects/EffStepServer.java | 4 ++-- .../expressions/ExprFrozenTicksToRun.java | 2 +- .../expressions/ExprServerTickRate.java | 6 ++--- .../conditions/CondServerTickState.sk | 8 ------- 10 files changed, 36 insertions(+), 39 deletions(-) create mode 100644 src/main/java/org/skriptlang/skript/bukkit/ticking/TickingModule.java rename src/main/java/{ch/njol/skript => org/skriptlang/skript/bukkit/ticking/elements}/conditions/CondIsTickFrozen.java (52%) rename src/main/java/{ch/njol/skript => org/skriptlang/skript/bukkit/ticking/elements}/conditions/CondServerTickState.java (97%) rename src/main/java/{ch/njol/skript => org/skriptlang/skript/bukkit/ticking/elements}/effects/EffFreezeServer.java (95%) rename src/main/java/{ch/njol/skript => org/skriptlang/skript/bukkit/ticking/elements}/effects/EffSprintServer.java (97%) rename src/main/java/{ch/njol/skript => org/skriptlang/skript/bukkit/ticking/elements}/effects/EffStepServer.java (94%) rename src/main/java/{ch/njol/skript => org/skriptlang/skript/bukkit/ticking/elements}/expressions/ExprFrozenTicksToRun.java (96%) rename src/main/java/{ch/njol/skript => org/skriptlang/skript/bukkit/ticking/elements}/expressions/ExprServerTickRate.java (93%) diff --git a/src/main/java/ch/njol/skript/Skript.java b/src/main/java/ch/njol/skript/Skript.java index 8b03eaca40b..11edcaa98f5 100644 --- a/src/main/java/ch/njol/skript/Skript.java +++ b/src/main/java/ch/njol/skript/Skript.java @@ -96,6 +96,7 @@ import org.skriptlang.skript.bukkit.SkriptMetrics; import org.skriptlang.skript.bukkit.breeding.BreedingModule; import org.skriptlang.skript.bukkit.displays.DisplayModule; +import org.skriptlang.skript.bukkit.ticking.TickingModule; import org.skriptlang.skript.lang.comparator.Comparator; import org.skriptlang.skript.lang.comparator.Comparators; import org.skriptlang.skript.lang.converter.Converter; @@ -557,6 +558,7 @@ public void onEnable() { // todo: become proper module once registry api is merged DisplayModule.load(); BreedingModule.load(); + TickingModule.load(); } catch (final Exception e) { exception(e, "Could not load required .class files: " + e.getLocalizedMessage()); setEnabled(false); diff --git a/src/main/java/org/skriptlang/skript/bukkit/ticking/TickingModule.java b/src/main/java/org/skriptlang/skript/bukkit/ticking/TickingModule.java new file mode 100644 index 00000000000..363564a18bd --- /dev/null +++ b/src/main/java/org/skriptlang/skript/bukkit/ticking/TickingModule.java @@ -0,0 +1,24 @@ +package org.skriptlang.skript.bukkit.ticking; + +import ch.njol.skript.Skript; +import ch.njol.skript.lang.util.SimpleEvent; +import ch.njol.skript.registrations.EventValues; +import ch.njol.skript.util.Getter; +import org.bukkit.entity.HumanEntity; +import org.bukkit.entity.LivingEntity; +import org.bukkit.event.entity.EntityBreedEvent; +import org.bukkit.event.entity.EntityEnterLoveModeEvent; +import org.bukkit.inventory.ItemStack; +import org.jetbrains.annotations.Nullable; + +import java.io.IOException; + +public class TickingModule { + + public static void load() throws IOException { + if (!Skript.classExists("org.bukkit.ServerTickManager")) + return; + + Skript.getAddonInstance().loadClasses("org.skriptlang.skript.bukkit.ticking", "elements"); + } +} diff --git a/src/main/java/ch/njol/skript/conditions/CondIsTickFrozen.java b/src/main/java/org/skriptlang/skript/bukkit/ticking/elements/conditions/CondIsTickFrozen.java similarity index 52% rename from src/main/java/ch/njol/skript/conditions/CondIsTickFrozen.java rename to src/main/java/org/skriptlang/skript/bukkit/ticking/elements/conditions/CondIsTickFrozen.java index 41064f8f939..88c60566d5a 100644 --- a/src/main/java/ch/njol/skript/conditions/CondIsTickFrozen.java +++ b/src/main/java/org/skriptlang/skript/bukkit/ticking/elements/conditions/CondIsTickFrozen.java @@ -1,24 +1,5 @@ -/** - * This file is part of Skript. - * - * Skript is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * Skript is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Skript. If not, see . - * - * Copyright Peter Güttinger, SkriptLang team and contributors - */ -package ch.njol.skript.conditions; +package org.skriptlang.skript.bukkit.ticking.elements.conditions; -import ch.njol.skript.Skript; import ch.njol.skript.bukkitutil.ServerUtils; import ch.njol.skript.conditions.base.PropertyCondition; import ch.njol.skript.doc.Description; @@ -26,7 +7,6 @@ import ch.njol.skript.doc.Name; import ch.njol.skript.doc.RequiredPlugins; import ch.njol.skript.doc.Since; -import org.bukkit.Bukkit; import org.bukkit.entity.Entity; @Name("Is Entity Tick Frozen") @@ -36,7 +16,6 @@ @RequiredPlugins("Minecraft 1.20.4+") public class CondIsTickFrozen extends PropertyCondition { - static { if (ServerUtils.isServerTickManagerPresent()) register(CondIsTickFrozen.class, "tick frozen", "entities"); diff --git a/src/main/java/ch/njol/skript/conditions/CondServerTickState.java b/src/main/java/org/skriptlang/skript/bukkit/ticking/elements/conditions/CondServerTickState.java similarity index 97% rename from src/main/java/ch/njol/skript/conditions/CondServerTickState.java rename to src/main/java/org/skriptlang/skript/bukkit/ticking/elements/conditions/CondServerTickState.java index cc41e829b20..3218ad93acb 100644 --- a/src/main/java/ch/njol/skript/conditions/CondServerTickState.java +++ b/src/main/java/org/skriptlang/skript/bukkit/ticking/elements/conditions/CondServerTickState.java @@ -1,4 +1,4 @@ -package ch.njol.skript.conditions; +package org.skriptlang.skript.bukkit.ticking.elements.conditions; import ch.njol.skript.Skript; import ch.njol.skript.bukkitutil.ServerUtils; diff --git a/src/main/java/ch/njol/skript/effects/EffFreezeServer.java b/src/main/java/org/skriptlang/skript/bukkit/ticking/elements/effects/EffFreezeServer.java similarity index 95% rename from src/main/java/ch/njol/skript/effects/EffFreezeServer.java rename to src/main/java/org/skriptlang/skript/bukkit/ticking/elements/effects/EffFreezeServer.java index 8713707b870..4777d9b3276 100644 --- a/src/main/java/ch/njol/skript/effects/EffFreezeServer.java +++ b/src/main/java/org/skriptlang/skript/bukkit/ticking/elements/effects/EffFreezeServer.java @@ -1,4 +1,4 @@ -package ch.njol.skript.effects; +package org.skriptlang.skript.bukkit.ticking.elements.effects; import ch.njol.skript.Skript; import ch.njol.skript.bukkitutil.ServerUtils; diff --git a/src/main/java/ch/njol/skript/effects/EffSprintServer.java b/src/main/java/org/skriptlang/skript/bukkit/ticking/elements/effects/EffSprintServer.java similarity index 97% rename from src/main/java/ch/njol/skript/effects/EffSprintServer.java rename to src/main/java/org/skriptlang/skript/bukkit/ticking/elements/effects/EffSprintServer.java index 2a3a95164db..0a869d3ccd3 100644 --- a/src/main/java/ch/njol/skript/effects/EffSprintServer.java +++ b/src/main/java/org/skriptlang/skript/bukkit/ticking/elements/effects/EffSprintServer.java @@ -1,4 +1,4 @@ -package ch.njol.skript.effects; +package org.skriptlang.skript.bukkit.ticking.elements.effects; import ch.njol.skript.Skript; import ch.njol.skript.bukkitutil.ServerUtils; diff --git a/src/main/java/ch/njol/skript/effects/EffStepServer.java b/src/main/java/org/skriptlang/skript/bukkit/ticking/elements/effects/EffStepServer.java similarity index 94% rename from src/main/java/ch/njol/skript/effects/EffStepServer.java rename to src/main/java/org/skriptlang/skript/bukkit/ticking/elements/effects/EffStepServer.java index df5cd8f641e..5e0961e66f1 100644 --- a/src/main/java/ch/njol/skript/effects/EffStepServer.java +++ b/src/main/java/org/skriptlang/skript/bukkit/ticking/elements/effects/EffStepServer.java @@ -1,4 +1,4 @@ -package ch.njol.skript.effects; +package org.skriptlang.skript.bukkit.ticking.elements.effects; import ch.njol.skript.Skript; import ch.njol.skript.bukkitutil.ServerUtils; @@ -51,7 +51,7 @@ protected void execute(Event event) { if (timespan != null) { Timespan timespan = this.timespan.getSingle(event); if (timespan != null) - ServerUtils.getServerTickManager().stepGameIfFrozen((int) timespan.getAs(Timespan.TimePeriod.TICKS)); + ServerUtils.getServerTickManager().stepGameIfFrozen((int) timespan.getAs(Timespan.TimePeriod.TICK)); } else { ServerUtils.getServerTickManager().stopStepping(); } diff --git a/src/main/java/ch/njol/skript/expressions/ExprFrozenTicksToRun.java b/src/main/java/org/skriptlang/skript/bukkit/ticking/elements/expressions/ExprFrozenTicksToRun.java similarity index 96% rename from src/main/java/ch/njol/skript/expressions/ExprFrozenTicksToRun.java rename to src/main/java/org/skriptlang/skript/bukkit/ticking/elements/expressions/ExprFrozenTicksToRun.java index cee4884d2c2..ba28e2b0f55 100644 --- a/src/main/java/ch/njol/skript/expressions/ExprFrozenTicksToRun.java +++ b/src/main/java/org/skriptlang/skript/bukkit/ticking/elements/expressions/ExprFrozenTicksToRun.java @@ -1,4 +1,4 @@ -package ch.njol.skript.expressions; +package org.skriptlang.skript.bukkit.ticking.elements.expressions; import ch.njol.skript.Skript; import ch.njol.skript.bukkitutil.ServerUtils; diff --git a/src/main/java/ch/njol/skript/expressions/ExprServerTickRate.java b/src/main/java/org/skriptlang/skript/bukkit/ticking/elements/expressions/ExprServerTickRate.java similarity index 93% rename from src/main/java/ch/njol/skript/expressions/ExprServerTickRate.java rename to src/main/java/org/skriptlang/skript/bukkit/ticking/elements/expressions/ExprServerTickRate.java index de426fdc333..75155ec1eb7 100644 --- a/src/main/java/ch/njol/skript/expressions/ExprServerTickRate.java +++ b/src/main/java/org/skriptlang/skript/bukkit/ticking/elements/expressions/ExprServerTickRate.java @@ -1,4 +1,4 @@ -package ch.njol.skript.expressions; +package org.skriptlang.skript.bukkit.ticking.elements.expressions; import ch.njol.skript.Skript; import ch.njol.skript.bukkitutil.ServerUtils; @@ -51,8 +51,8 @@ protected Float[] get(Event event) { public Class[] acceptChange(ChangeMode mode) { switch (mode) { - case SET, ADD, REMOVE, RESET -> return CollectionUtils.array(Number.class); - default -> return null; + case SET, ADD, REMOVE, RESET -> { return CollectionUtils.array(Number.class); } + default -> { return null; } } } diff --git a/src/test/skript/tests/syntaxes/conditions/CondServerTickState.sk b/src/test/skript/tests/syntaxes/conditions/CondServerTickState.sk index 4a34b54bb8a..9406849edae 100644 --- a/src/test/skript/tests/syntaxes/conditions/CondServerTickState.sk +++ b/src/test/skript/tests/syntaxes/conditions/CondServerTickState.sk @@ -16,11 +16,3 @@ test "Server Tick State Expressions" when running minecraft "1.20.4": assert server's tick state is sprinting with "Server tick state is not sprinting" make the server stop sprinting -test "Entity Tick Frozen Expression" when running minecraft "1.20.4": - spawn a cow at spawn of world "world" - freeze the server - wait 1 tick - assert last spawned cow is tick frozen with "Entity is not tick frozen" - unfreeze the server - assert last spawned cow is not tick frozen with "Entity is still tick frozen after unfreezing" -