Skip to content

Commit e36f264

Browse files
authored
add 'along' to push pattern, cleanup code (#7803)
add 'along' to push pattern, cleanup
1 parent b69e6be commit e36f264

1 file changed

Lines changed: 28 additions & 33 deletions

File tree

Lines changed: 28 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -1,75 +1,70 @@
11
package ch.njol.skript.effects;
22

3-
import org.bukkit.entity.Entity;
4-
import org.bukkit.event.Event;
5-
import org.bukkit.util.Vector;
6-
import org.jetbrains.annotations.Nullable;
7-
83
import ch.njol.skript.Skript;
94
import ch.njol.skript.doc.Description;
10-
import ch.njol.skript.doc.Examples;
5+
import ch.njol.skript.doc.Example;
116
import ch.njol.skript.doc.Name;
127
import ch.njol.skript.doc.Since;
138
import ch.njol.skript.lang.Effect;
149
import ch.njol.skript.lang.Expression;
1510
import ch.njol.skript.lang.SkriptParser.ParseResult;
1611
import ch.njol.skript.util.Direction;
1712
import ch.njol.util.Kleenean;
13+
import org.bukkit.entity.Entity;
14+
import org.bukkit.event.Event;
15+
import org.bukkit.util.Vector;
16+
import org.jetbrains.annotations.Nullable;
1817

19-
/**
20-
* @author Peter Güttinger
21-
*/
2218
@Name("Push")
2319
@Description("Push entities around.")
24-
@Examples({"push the player upwards",
25-
"push the victim downwards at speed 0.5"})
20+
@Example("push the player upwards")
21+
@Example("push the victim downwards at speed 0.5")
22+
@Example("push player along vector from player to player's target at speed 2")
2623
@Since("1.4.6")
2724
public class EffPush extends Effect {
25+
2826
static {
29-
Skript.registerEffect(EffPush.class, "(push|thrust) %entities% %direction% [(at|with) (speed|velocity|force) %-number%]");
27+
Skript.registerEffect(EffPush.class, "(push|thrust) %entities% [along] %direction% [(at|with) (speed|velocity|force) %-number%]");
3028
}
31-
32-
@SuppressWarnings("null")
29+
3330
private Expression<Entity> entities;
34-
@SuppressWarnings("null")
3531
private Expression<Direction> direction;
36-
@Nullable
37-
private Expression<Number> speed = null;
32+
private @Nullable Expression<Number> speed = null;
3833

3934
@SuppressWarnings({"unchecked", "null"})
4035
@Override
41-
public boolean init(final Expression<?>[] exprs, final int matchedPattern, final Kleenean isDelayed, final ParseResult parseResult) {
36+
public boolean init(Expression<?>[] exprs, int matchedPattern, Kleenean isDelayed, ParseResult parseResult) {
4237
entities = (Expression<Entity>) exprs[0];
4338
direction = (Expression<Direction>) exprs[1];
4439
speed = (Expression<Number>) exprs[2];
4540
return true;
4641
}
4742

4843
@Override
49-
protected void execute(final Event e) {
50-
final Direction d = direction.getSingle(e);
51-
if (d == null)
44+
protected void execute(Event event) {
45+
Direction direction = this.direction.getSingle(event);
46+
if (direction == null)
5247
return;
53-
final Number v = speed != null ? speed.getSingle(e) : null;
54-
if (speed != null && v == null)
48+
Number speed = this.speed != null ? this.speed.getSingle(event) : null;
49+
if (this.speed != null && speed == null)
5550
return;
56-
final Entity[] ents = entities.getArray(e);
57-
for (final Entity en : ents) {
58-
assert en != null;
59-
final Vector mod = d.getDirection(en);
60-
if (v != null)
61-
mod.normalize().multiply(v.doubleValue());
62-
if (!(Double.isFinite(mod.getX()) && Double.isFinite(mod.getY()) && Double.isFinite(mod.getZ()))) {
51+
Entity[] entities = this.entities.getArray(event);
52+
for (Entity entity : entities) {
53+
Vector pushDirection = direction.getDirection(entity);
54+
if (speed != null)
55+
pushDirection.normalize().multiply(speed.doubleValue());
56+
if (!(Double.isFinite(pushDirection.getX()) && Double.isFinite(pushDirection.getY()) && Double.isFinite(pushDirection.getZ()))) {
6357
// Some component of the mod vector is not finite, so just stop
6458
return;
6559
}
66-
en.setVelocity(en.getVelocity().add(mod)); // REMIND add NoCheatPlus exception to players
60+
entity.setVelocity(entity.getVelocity().add(pushDirection));
6761
}
6862
}
6963

7064
@Override
71-
public String toString(final @Nullable Event e, final boolean debug) {
72-
return "push " + entities.toString(e, debug) + " " + direction.toString(e, debug) + (speed != null ? " at speed " + speed.toString(e, debug) : "");
65+
public String toString(@Nullable Event event, boolean debug) {
66+
return "push " + entities.toString(event, debug) + " " + direction.toString(event, debug) +
67+
(speed != null ? " at speed " + speed.toString(event, debug) : "");
7368
}
7469

7570
}

0 commit comments

Comments
 (0)