From 31c92806ba76933049265c258d91c7398b993d26 Mon Sep 17 00:00:00 2001 From: OfficialDonut Date: Wed, 2 Oct 2019 11:23:37 -0400 Subject: [PATCH 1/8] Entity Silence Syntax --- .../njol/skript/conditions/CondIsSilent.java | 30 ++++++++++++ .../ch/njol/skript/effects/EffSilence.java | 48 +++++++++++++++++++ .../ch/njol/skript/effects/EffUnsilence.java | 48 +++++++++++++++++++ 3 files changed, 126 insertions(+) create mode 100644 src/main/java/ch/njol/skript/conditions/CondIsSilent.java create mode 100644 src/main/java/ch/njol/skript/effects/EffSilence.java create mode 100644 src/main/java/ch/njol/skript/effects/EffUnsilence.java diff --git a/src/main/java/ch/njol/skript/conditions/CondIsSilent.java b/src/main/java/ch/njol/skript/conditions/CondIsSilent.java new file mode 100644 index 00000000000..4bab9faa9f4 --- /dev/null +++ b/src/main/java/ch/njol/skript/conditions/CondIsSilent.java @@ -0,0 +1,30 @@ +package ch.njol.skript.conditions; + +import org.bukkit.entity.Entity; + +import ch.njol.skript.conditions.base.PropertyCondition; +import ch.njol.skript.doc.Description; +import ch.njol.skript.doc.Examples; +import ch.njol.skript.doc.Name; +import ch.njol.skript.doc.Since; + +@Name("Is Silent") +@Description("Checks whether an entity is silent.") +@Examples("target entity is silent") +@Since("INSERT VERSION") +public class CondIsSilent extends PropertyCondition { + + static { + register(CondIsSilent.class, PropertyType.BE, "silent", "entities"); + } + + @Override + public boolean check(Entity entity) { + return entity.isSilent(); + } + + @Override + protected String getPropertyName() { + return "silent"; + } +} diff --git a/src/main/java/ch/njol/skript/effects/EffSilence.java b/src/main/java/ch/njol/skript/effects/EffSilence.java new file mode 100644 index 00000000000..b45a80a0417 --- /dev/null +++ b/src/main/java/ch/njol/skript/effects/EffSilence.java @@ -0,0 +1,48 @@ +package ch.njol.skript.effects; + +import org.bukkit.entity.Entity; +import org.bukkit.event.Event; +import org.eclipse.jdt.annotation.Nullable; + +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; +import ch.njol.util.Kleenean; + +@Name("Silence Entity") +@Description("Makes an entity silent.") +@Examples("make target entity silent") +@Since("INSERT VERSION") +public class EffSilence extends Effect { + + static { + Skript.registerEffect(EffSilence.class, "silence %entities%", "make %entities% silent"); + } + + @SuppressWarnings("null") + private Expression entities; + + @SuppressWarnings({"unchecked", "null"}) + @Override + public boolean init(final Expression[] exprs, final int matchedPattern, final Kleenean isDelayed, final SkriptParser.ParseResult parser) { + entities = (Expression) exprs[0]; + return true; + } + + @Override + protected void execute(final Event e) { + for (Entity entity : entities.getArray(e)) { + entity.setSilent(true); + } + } + + @Override + public String toString(final @Nullable Event e, final boolean debug) { + return "silence" + entities.toString(e, debug); + } +} diff --git a/src/main/java/ch/njol/skript/effects/EffUnsilence.java b/src/main/java/ch/njol/skript/effects/EffUnsilence.java new file mode 100644 index 00000000000..391eb31d342 --- /dev/null +++ b/src/main/java/ch/njol/skript/effects/EffUnsilence.java @@ -0,0 +1,48 @@ +package ch.njol.skript.effects; + +import org.bukkit.entity.Entity; +import org.bukkit.event.Event; +import org.eclipse.jdt.annotation.Nullable; + +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; +import ch.njol.util.Kleenean; + +@Name("Unsilence Entity") +@Description("Unsilence an entity.") +@Examples("unsilence target entity") +@Since("INSERT VERSION") +public class EffUnsilence extends Effect { + + static { + Skript.registerEffect(EffSilence.class, "unsilence %entities%", "make %entities% (not silent|unsilent)"); + } + + @SuppressWarnings("null") + private Expression entities; + + @SuppressWarnings({"unchecked", "null"}) + @Override + public boolean init(final Expression[] exprs, final int matchedPattern, final Kleenean isDelayed, final SkriptParser.ParseResult parser) { + entities = (Expression) exprs[0]; + return true; + } + + @Override + protected void execute(final Event e) { + for (Entity entity : entities.getArray(e)) { + entity.setSilent(false); + } + } + + @Override + public String toString(final @Nullable Event e, final boolean debug) { + return "unsilence" + entities.toString(e, debug); + } +} From c1490a11da5b6cac34a5c5f8df2829e30f6c7ab9 Mon Sep 17 00:00:00 2001 From: OfficialDonut Date: Wed, 2 Oct 2019 11:26:09 -0400 Subject: [PATCH 2/8] License --- .../njol/skript/conditions/CondIsSilent.java | 19 +++++++++++++++++++ .../ch/njol/skript/effects/EffSilence.java | 19 +++++++++++++++++++ .../ch/njol/skript/effects/EffUnsilence.java | 19 +++++++++++++++++++ 3 files changed, 57 insertions(+) diff --git a/src/main/java/ch/njol/skript/conditions/CondIsSilent.java b/src/main/java/ch/njol/skript/conditions/CondIsSilent.java index 4bab9faa9f4..06928221124 100644 --- a/src/main/java/ch/njol/skript/conditions/CondIsSilent.java +++ b/src/main/java/ch/njol/skript/conditions/CondIsSilent.java @@ -1,3 +1,22 @@ +/** + * 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 2011-2017 Peter Güttinger and contributors + */ package ch.njol.skript.conditions; import org.bukkit.entity.Entity; diff --git a/src/main/java/ch/njol/skript/effects/EffSilence.java b/src/main/java/ch/njol/skript/effects/EffSilence.java index b45a80a0417..449ff3e6840 100644 --- a/src/main/java/ch/njol/skript/effects/EffSilence.java +++ b/src/main/java/ch/njol/skript/effects/EffSilence.java @@ -1,3 +1,22 @@ +/** + * 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 2011-2017 Peter Güttinger and contributors + */ package ch.njol.skript.effects; import org.bukkit.entity.Entity; diff --git a/src/main/java/ch/njol/skript/effects/EffUnsilence.java b/src/main/java/ch/njol/skript/effects/EffUnsilence.java index 391eb31d342..e836dcd611a 100644 --- a/src/main/java/ch/njol/skript/effects/EffUnsilence.java +++ b/src/main/java/ch/njol/skript/effects/EffUnsilence.java @@ -1,3 +1,22 @@ +/** + * 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 2011-2017 Peter Güttinger and contributors + */ package ch.njol.skript.effects; import org.bukkit.entity.Entity; From 78fb6c11be91c575ed1474c11365c941f9db2a80 Mon Sep 17 00:00:00 2001 From: OfficialDonut Date: Wed, 2 Oct 2019 11:32:41 -0400 Subject: [PATCH 3/8] Merge EffSilence and EffUnsilence --- .../ch/njol/skript/effects/EffSilence.java | 14 ++-- .../ch/njol/skript/effects/EffUnsilence.java | 67 ------------------- 2 files changed, 10 insertions(+), 71 deletions(-) delete mode 100644 src/main/java/ch/njol/skript/effects/EffUnsilence.java diff --git a/src/main/java/ch/njol/skript/effects/EffSilence.java b/src/main/java/ch/njol/skript/effects/EffSilence.java index 449ff3e6840..9b84dd2e7fc 100644 --- a/src/main/java/ch/njol/skript/effects/EffSilence.java +++ b/src/main/java/ch/njol/skript/effects/EffSilence.java @@ -34,34 +34,40 @@ import ch.njol.util.Kleenean; @Name("Silence Entity") -@Description("Makes an entity silent.") +@Description("Makes an entity silent/unsilent.") @Examples("make target entity silent") @Since("INSERT VERSION") public class EffSilence extends Effect { static { - Skript.registerEffect(EffSilence.class, "silence %entities%", "make %entities% silent"); + Skript.registerEffect(EffSilence.class, + "silence %entities%", + "unsilence %entities%", + "make %entities% silent", + "make %entities% (not silent|unsilent)"); } @SuppressWarnings("null") private Expression entities; + private boolean silence; @SuppressWarnings({"unchecked", "null"}) @Override public boolean init(final Expression[] exprs, final int matchedPattern, final Kleenean isDelayed, final SkriptParser.ParseResult parser) { entities = (Expression) exprs[0]; + silence = matchedPattern % 2 == 0; return true; } @Override protected void execute(final Event e) { for (Entity entity : entities.getArray(e)) { - entity.setSilent(true); + entity.setSilent(silence); } } @Override public String toString(final @Nullable Event e, final boolean debug) { - return "silence" + entities.toString(e, debug); + return (silence ? "silence" : "unsilence") + entities.toString(e, debug); } } diff --git a/src/main/java/ch/njol/skript/effects/EffUnsilence.java b/src/main/java/ch/njol/skript/effects/EffUnsilence.java deleted file mode 100644 index e836dcd611a..00000000000 --- a/src/main/java/ch/njol/skript/effects/EffUnsilence.java +++ /dev/null @@ -1,67 +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 2011-2017 Peter Güttinger and contributors - */ -package ch.njol.skript.effects; - -import org.bukkit.entity.Entity; -import org.bukkit.event.Event; -import org.eclipse.jdt.annotation.Nullable; - -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; -import ch.njol.util.Kleenean; - -@Name("Unsilence Entity") -@Description("Unsilence an entity.") -@Examples("unsilence target entity") -@Since("INSERT VERSION") -public class EffUnsilence extends Effect { - - static { - Skript.registerEffect(EffSilence.class, "unsilence %entities%", "make %entities% (not silent|unsilent)"); - } - - @SuppressWarnings("null") - private Expression entities; - - @SuppressWarnings({"unchecked", "null"}) - @Override - public boolean init(final Expression[] exprs, final int matchedPattern, final Kleenean isDelayed, final SkriptParser.ParseResult parser) { - entities = (Expression) exprs[0]; - return true; - } - - @Override - protected void execute(final Event e) { - for (Entity entity : entities.getArray(e)) { - entity.setSilent(false); - } - } - - @Override - public String toString(final @Nullable Event e, final boolean debug) { - return "unsilence" + entities.toString(e, debug); - } -} From fef2f5753c34c20d3deaac6d7e713b6ddfb31625 Mon Sep 17 00:00:00 2001 From: OfficialDonut Date: Wed, 2 Oct 2019 14:58:09 -0400 Subject: [PATCH 4/8] Changes --- src/main/java/ch/njol/skript/effects/EffSilence.java | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/main/java/ch/njol/skript/effects/EffSilence.java b/src/main/java/ch/njol/skript/effects/EffSilence.java index 9b84dd2e7fc..364e9231d19 100644 --- a/src/main/java/ch/njol/skript/effects/EffSilence.java +++ b/src/main/java/ch/njol/skript/effects/EffSilence.java @@ -30,7 +30,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.util.Kleenean; @Name("Silence Entity") @@ -53,21 +53,21 @@ public class EffSilence extends Effect { @SuppressWarnings({"unchecked", "null"}) @Override - public boolean init(final Expression[] exprs, final int matchedPattern, final Kleenean isDelayed, final SkriptParser.ParseResult parser) { + public boolean init(Expression[] exprs, int matchedPattern, Kleenean isDelayed, ParseResult parseResult) { entities = (Expression) exprs[0]; silence = matchedPattern % 2 == 0; return true; } @Override - protected void execute(final Event e) { + protected void execute(Event e) { for (Entity entity : entities.getArray(e)) { entity.setSilent(silence); } } @Override - public String toString(final @Nullable Event e, final boolean debug) { - return (silence ? "silence" : "unsilence") + entities.toString(e, debug); + public String toString(@Nullable Event e, boolean debug) { + return (silence ? "silence " : "unsilence ") + entities.toString(e, debug); } } From b8f6f56c9fe2535fa806fd2887a8d8fd773b2b15 Mon Sep 17 00:00:00 2001 From: OfficialDonut Date: Sun, 6 Oct 2019 16:19:38 -0400 Subject: [PATCH 5/8] Change pattern --- src/main/java/ch/njol/skript/conditions/CondIsSilent.java | 2 +- src/main/java/ch/njol/skript/effects/EffSilence.java | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/main/java/ch/njol/skript/conditions/CondIsSilent.java b/src/main/java/ch/njol/skript/conditions/CondIsSilent.java index 06928221124..de58a6fc375 100644 --- a/src/main/java/ch/njol/skript/conditions/CondIsSilent.java +++ b/src/main/java/ch/njol/skript/conditions/CondIsSilent.java @@ -28,7 +28,7 @@ import ch.njol.skript.doc.Since; @Name("Is Silent") -@Description("Checks whether an entity is silent.") +@Description("Checks whether an entity is silent i.e. its sounds are disabled.") @Examples("target entity is silent") @Since("INSERT VERSION") public class CondIsSilent extends PropertyCondition { diff --git a/src/main/java/ch/njol/skript/effects/EffSilence.java b/src/main/java/ch/njol/skript/effects/EffSilence.java index 364e9231d19..a06b7e25db5 100644 --- a/src/main/java/ch/njol/skript/effects/EffSilence.java +++ b/src/main/java/ch/njol/skript/effects/EffSilence.java @@ -34,7 +34,7 @@ import ch.njol.util.Kleenean; @Name("Silence Entity") -@Description("Makes an entity silent/unsilent.") +@Description("Controls whether or not an entity is silent.") @Examples("make target entity silent") @Since("INSERT VERSION") public class EffSilence extends Effect { @@ -44,7 +44,7 @@ public class EffSilence extends Effect { "silence %entities%", "unsilence %entities%", "make %entities% silent", - "make %entities% (not silent|unsilent)"); + "make %entities% (not silent|audible)"); } @SuppressWarnings("null") From adb85a85bfa353c608a312bf98a2091cb1e8d00b Mon Sep 17 00:00:00 2001 From: OfficialDonut Date: Sun, 6 Oct 2019 16:31:29 -0400 Subject: [PATCH 6/8] Change pattern --- src/main/java/ch/njol/skript/effects/EffSilence.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/ch/njol/skript/effects/EffSilence.java b/src/main/java/ch/njol/skript/effects/EffSilence.java index a06b7e25db5..27d871874ee 100644 --- a/src/main/java/ch/njol/skript/effects/EffSilence.java +++ b/src/main/java/ch/njol/skript/effects/EffSilence.java @@ -44,7 +44,7 @@ public class EffSilence extends Effect { "silence %entities%", "unsilence %entities%", "make %entities% silent", - "make %entities% (not silent|audible)"); + "make %entities% not silent"); } @SuppressWarnings("null") From 45a5b007e5d87999b5b399267be32a93a1c8e489 Mon Sep 17 00:00:00 2001 From: OfficialDonut Date: Mon, 21 Oct 2019 15:03:16 -0400 Subject: [PATCH 7/8] Test --- src/test/skript/tests/misc/entity-silence.sk | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 src/test/skript/tests/misc/entity-silence.sk diff --git a/src/test/skript/tests/misc/entity-silence.sk b/src/test/skript/tests/misc/entity-silence.sk new file mode 100644 index 00000000000..a8e5e8db746 --- /dev/null +++ b/src/test/skript/tests/misc/entity-silence.sk @@ -0,0 +1,6 @@ +test "entity silence": + spawn a pig at spawn of "world" + set {_pig} to last spawned pig + make {_pig} silent + assert {_pig} is silent with "failed to make pig silent" + delete {_pig} \ No newline at end of file From 78331f19193dd69b0baeecd1382ee56816f5c6cc Mon Sep 17 00:00:00 2001 From: Shane Bee Date: Mon, 4 Nov 2019 06:14:36 -0800 Subject: [PATCH 8/8] ExprPlayerWeather - fix (#2552) * ExprPlayerWeather - fix - Fix some issues with not properly setting/resetting player's weather * ExprPlayerWeather - change - Change suggested by Blueyescat --- .../ch/njol/skript/expressions/ExprPlayerWeather.java | 10 +++++++--- src/main/java/ch/njol/skript/util/WeatherType.java | 1 + 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/src/main/java/ch/njol/skript/expressions/ExprPlayerWeather.java b/src/main/java/ch/njol/skript/expressions/ExprPlayerWeather.java index da509dd11c8..a55212be12e 100644 --- a/src/main/java/ch/njol/skript/expressions/ExprPlayerWeather.java +++ b/src/main/java/ch/njol/skript/expressions/ExprPlayerWeather.java @@ -75,9 +75,13 @@ public Class[] acceptChange(final ChangeMode mode) { @SuppressWarnings("null") @Override public void change(final Event e, final @Nullable Object[] delta, final ChangeMode mode) { - final WeatherType type = delta == null ? WeatherType.CLEAR : (WeatherType) delta[0]; - for (final Player p : getExpr().getArray(e)) { - type.setWeather(p); + if (delta == null) { + for (Player p : getExpr().getArray(e)) + p.resetPlayerWeather(); + } else { + WeatherType type = (WeatherType) delta[0]; + for (Player p : getExpr().getArray(e)) + type.setWeather(p); } } diff --git a/src/main/java/ch/njol/skript/util/WeatherType.java b/src/main/java/ch/njol/skript/util/WeatherType.java index 88bcc3e7d08..34954169a2c 100644 --- a/src/main/java/ch/njol/skript/util/WeatherType.java +++ b/src/main/java/ch/njol/skript/util/WeatherType.java @@ -125,6 +125,7 @@ public void setWeather(Player player) { case RAIN: case THUNDER: player.setPlayerWeather(org.bukkit.WeatherType.DOWNFALL); + break; case CLEAR: player.setPlayerWeather(org.bukkit.WeatherType.CLEAR); break;