From f21ea4d34bfb8ed895c7de241a3b0e83817c5e80 Mon Sep 17 00:00:00 2001 From: Asleepp Date: Tue, 2 Apr 2024 23:08:27 -0300 Subject: [PATCH 1/8] Added Entity Teleport event. --- .../classes/data/BukkitEventValues.java | 15 ++++ .../njol/skript/events/EvtEntityTeleport.java | 77 +++++++++++++++++++ 2 files changed, 92 insertions(+) create mode 100644 src/main/java/ch/njol/skript/events/EvtEntityTeleport.java diff --git a/src/main/java/ch/njol/skript/classes/data/BukkitEventValues.java b/src/main/java/ch/njol/skript/classes/data/BukkitEventValues.java index 0c3175247b1..6ee19fdb93f 100644 --- a/src/main/java/ch/njol/skript/classes/data/BukkitEventValues.java +++ b/src/main/java/ch/njol/skript/classes/data/BukkitEventValues.java @@ -98,6 +98,7 @@ import org.bukkit.event.entity.EntityPickupItemEvent; import org.bukkit.event.entity.EntityResurrectEvent; import org.bukkit.event.entity.EntityTameEvent; +import org.bukkit.event.entity.EntityTeleportEvent; import org.bukkit.event.entity.EntityTransformEvent; import org.bukkit.event.entity.EntityTransformEvent.TransformReason; import org.bukkit.event.entity.FireworkExplodeEvent; @@ -616,6 +617,20 @@ public Entity get(final EntityTameEvent e) { } }, 0); + // EntityTeleportEvent + EventValues.registerEventValue(EntityTeleportEvent.class, Location.class, new Getter() { + @Override + public @Nullable Location get(EntityTeleportEvent event) { + return event.getFrom(); + } + }, EventValues.TIME_PAST); + EventValues.registerEventValue(EntityTeleportEvent.class, Location.class, new Getter() { + @Override + public @Nullable Location get(EntityTeleportEvent event) { + return event.getTo(); + } + }, EventValues.TIME_FUTURE); + // EntityChangeBlockEvent EventValues.registerEventValue(EntityChangeBlockEvent.class, Block.class, new Getter() { @Override diff --git a/src/main/java/ch/njol/skript/events/EvtEntityTeleport.java b/src/main/java/ch/njol/skript/events/EvtEntityTeleport.java new file mode 100644 index 00000000000..11350161f28 --- /dev/null +++ b/src/main/java/ch/njol/skript/events/EvtEntityTeleport.java @@ -0,0 +1,77 @@ +/** + * 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.events; + +import ch.njol.skript.Skript; +import ch.njol.skript.lang.Expression; +import ch.njol.skript.lang.Literal; +import ch.njol.skript.lang.SkriptEvent; +import ch.njol.skript.lang.SkriptParser; +import ch.njol.skript.entity.EntityType; +import org.bukkit.entity.Entity; +import org.bukkit.event.Event; +import org.bukkit.event.entity.EntityTeleportEvent; + +import javax.annotation.Nullable; + +public class EvtEntityTeleport extends SkriptEvent { + + static { + Skript.registerEvent("Entity Teleport", EvtEntityTeleport.class, EntityTeleportEvent.class, "[any] entity teleport[ing] [of %entitytypes%]") + .description("Called whenever a non-player entity is teleported, this event may also be called due to a result of natural causes, such as an Enderman or Shulker teleporting, or Wolfs teleporting to players.") + .examples("on entity teleport:", "on entity teleport of creeper:") + .since("VERSION"); + } + + @SuppressWarnings("unchecked") + private Expression entities;; + + @Override + public boolean init(Literal[] args, int matchedPattern, SkriptParser.ParseResult parseResult) { + if (args.length > 0 && args[0] != null) { + entities = (Expression) args[0]; + } + return true; + } + + + @Override + public boolean check(Event e) { + if (e instanceof EntityTeleportEvent) { + EntityTeleportEvent event = (EntityTeleportEvent) e; + Entity entity = event.getEntity(); + if (entities != null) { + for (EntityType entType : entities.getArray(e)) { + if (entType.isInstance(entity)) { + return true; + } + } + } else { + return true; + } + } + return false; + } + + + @Override + public String toString(@Nullable Event e, boolean debug) { + return "on any entity teleport"; + } +} \ No newline at end of file From 0971864cd8d276c759d3f5f97162839910600d6d Mon Sep 17 00:00:00 2001 From: Asleepp Date: Wed, 3 Apr 2024 06:58:54 -0300 Subject: [PATCH 2/8] Added suggested changes. Renamed EvtEntityTeleport -> EvtTeleport. Removed Player Teleport from SimpleEvents into EvtTeleport --- .../classes/data/BukkitEventValues.java | 2 +- .../njol/skript/events/EvtEntityTeleport.java | 77 ------------- .../ch/njol/skript/events/EvtTeleport.java | 104 ++++++++++++++++++ .../ch/njol/skript/events/SimpleEvents.java | 4 - 4 files changed, 105 insertions(+), 82 deletions(-) delete mode 100644 src/main/java/ch/njol/skript/events/EvtEntityTeleport.java create mode 100644 src/main/java/ch/njol/skript/events/EvtTeleport.java diff --git a/src/main/java/ch/njol/skript/classes/data/BukkitEventValues.java b/src/main/java/ch/njol/skript/classes/data/BukkitEventValues.java index 6ee19fdb93f..96ab1cd1b68 100644 --- a/src/main/java/ch/njol/skript/classes/data/BukkitEventValues.java +++ b/src/main/java/ch/njol/skript/classes/data/BukkitEventValues.java @@ -629,7 +629,7 @@ public Entity get(final EntityTameEvent e) { public @Nullable Location get(EntityTeleportEvent event) { return event.getTo(); } - }, EventValues.TIME_FUTURE); + }, EventValues.TIME_NOW); // EntityChangeBlockEvent EventValues.registerEventValue(EntityChangeBlockEvent.class, Block.class, new Getter() { diff --git a/src/main/java/ch/njol/skript/events/EvtEntityTeleport.java b/src/main/java/ch/njol/skript/events/EvtEntityTeleport.java deleted file mode 100644 index 11350161f28..00000000000 --- a/src/main/java/ch/njol/skript/events/EvtEntityTeleport.java +++ /dev/null @@ -1,77 +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.events; - -import ch.njol.skript.Skript; -import ch.njol.skript.lang.Expression; -import ch.njol.skript.lang.Literal; -import ch.njol.skript.lang.SkriptEvent; -import ch.njol.skript.lang.SkriptParser; -import ch.njol.skript.entity.EntityType; -import org.bukkit.entity.Entity; -import org.bukkit.event.Event; -import org.bukkit.event.entity.EntityTeleportEvent; - -import javax.annotation.Nullable; - -public class EvtEntityTeleport extends SkriptEvent { - - static { - Skript.registerEvent("Entity Teleport", EvtEntityTeleport.class, EntityTeleportEvent.class, "[any] entity teleport[ing] [of %entitytypes%]") - .description("Called whenever a non-player entity is teleported, this event may also be called due to a result of natural causes, such as an Enderman or Shulker teleporting, or Wolfs teleporting to players.") - .examples("on entity teleport:", "on entity teleport of creeper:") - .since("VERSION"); - } - - @SuppressWarnings("unchecked") - private Expression entities;; - - @Override - public boolean init(Literal[] args, int matchedPattern, SkriptParser.ParseResult parseResult) { - if (args.length > 0 && args[0] != null) { - entities = (Expression) args[0]; - } - return true; - } - - - @Override - public boolean check(Event e) { - if (e instanceof EntityTeleportEvent) { - EntityTeleportEvent event = (EntityTeleportEvent) e; - Entity entity = event.getEntity(); - if (entities != null) { - for (EntityType entType : entities.getArray(e)) { - if (entType.isInstance(entity)) { - return true; - } - } - } else { - return true; - } - } - return false; - } - - - @Override - public String toString(@Nullable Event e, boolean debug) { - return "on any entity teleport"; - } -} \ No newline at end of file diff --git a/src/main/java/ch/njol/skript/events/EvtTeleport.java b/src/main/java/ch/njol/skript/events/EvtTeleport.java new file mode 100644 index 00000000000..66699df917b --- /dev/null +++ b/src/main/java/ch/njol/skript/events/EvtTeleport.java @@ -0,0 +1,104 @@ +/** + * 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.events; + +import ch.njol.skript.Skript; +import ch.njol.skript.lang.Expression; +import ch.njol.skript.lang.Literal; +import ch.njol.skript.lang.SkriptEvent; +import ch.njol.skript.lang.SkriptParser; +import ch.njol.skript.entity.EntityType; +import ch.njol.util.coll.CollectionUtils; +import org.bukkit.entity.Entity; +import org.bukkit.entity.Player; +import org.bukkit.event.Event; +import org.bukkit.event.entity.EntityTeleportEvent; +import org.bukkit.event.player.PlayerTeleportEvent; + +import javax.annotation.Nullable; + +public class EvtTeleport extends SkriptEvent { + + static { + Skript.registerEvent("Teleport", EvtTeleport.class, CollectionUtils.array(EntityTeleportEvent.class, PlayerTeleportEvent.class), "entity teleport[ing] [of %entitytypes%]", "[player] teleport[ing]") + .description("This event can be used to teleport non-player or player entities respectively", "When teleporting entities, the event may also be called due to a result of natural causes, such as an Enderman or Shulker teleporting, or Wolfs teleporting to players.", "When teleporting players, the event can be called by teleporting through a nether/end portal, or by other means (e.g. plugins).") + .examples( + "on player teleport:", + "on entity teleport:", + "on entity teleport of creeper:" + ) + .since("1.0, INSERT VERSION (entity teleport)"); + } + + @SuppressWarnings("unchecked") + private Expression entities; + + private int matchedPattern; + @Override + public boolean init(Literal[] args, int matchedPattern, SkriptParser.ParseResult parseResult) { + this.matchedPattern = matchedPattern; + if (matchedPattern == 0 && args[0] != null) { + entities = (Expression) args[0]; + } + return true; + } + + + @Override + public boolean check(Event event) { + Entity entity; + if (event instanceof EntityTeleportEvent) { + EntityTeleportEvent entityEvent = (EntityTeleportEvent) event; + entity = entityEvent.getEntity(); + if (entity instanceof Player) { + return false; + } + } else if (event instanceof PlayerTeleportEvent) { + PlayerTeleportEvent playerEvent = (PlayerTeleportEvent) event; + entity = playerEvent.getPlayer(); + if (matchedPattern == 0) { + return false; // Exclude players from "entity teleport event" + } + } else { + return false; + } + if (entities != null) { + for (EntityType entType : entities.getArray(event)) { + if (entType.isInstance(entity)) { + return true; + } + } + } else { + return true; + } + return false; + } + + + + public String toString(@Nullable Event e, boolean debug) { + if (entities != null) { + return "on entity teleport of " + entities.toString(e, debug); + } else if (e instanceof PlayerTeleportEvent) { + return "on player teleport"; + } else { + return "on entity teleport"; + } + } +} diff --git a/src/main/java/ch/njol/skript/events/SimpleEvents.java b/src/main/java/ch/njol/skript/events/SimpleEvents.java index 18679fcbbbf..0be62b8227f 100644 --- a/src/main/java/ch/njol/skript/events/SimpleEvents.java +++ b/src/main/java/ch/njol/skript/events/SimpleEvents.java @@ -325,10 +325,6 @@ public class SimpleEvents { .description("Called when a player respawns. You should prefer this event over the death event as the player is technically alive when this event is called.") .examples("on respawn:") .since("1.0"); - Skript.registerEvent("Teleport", SimpleEvent.class, PlayerTeleportEvent.class, "[player] teleport[ing]") - .description("Called whenever a player is teleported, either by a nether/end portal or other means (e.g. by plugins).") - .examples("on teleport:") - .since("1.0"); Skript.registerEvent("Sneak Toggle", SimpleEvent.class, PlayerToggleSneakEvent.class, "[player] toggl(e|ing) sneak", "[player] sneak toggl(e|ing)") .description("Called when a player starts or stops sneaking. Use is sneaking to get whether the player was sneaking before the event was called.") .examples("# make players that stop sneaking jump", From ce30c253fafa38c948b0b8d157fd1f064dfa87ff Mon Sep 17 00:00:00 2001 From: Asleepp Date: Wed, 3 Apr 2024 15:32:31 -0300 Subject: [PATCH 3/8] Added Suggested changes x2 --- .../ch/njol/skript/events/EvtTeleport.java | 18 ++++++------------ 1 file changed, 6 insertions(+), 12 deletions(-) diff --git a/src/main/java/ch/njol/skript/events/EvtTeleport.java b/src/main/java/ch/njol/skript/events/EvtTeleport.java index 66699df917b..ef877239edb 100644 --- a/src/main/java/ch/njol/skript/events/EvtTeleport.java +++ b/src/main/java/ch/njol/skript/events/EvtTeleport.java @@ -36,12 +36,12 @@ public class EvtTeleport extends SkriptEvent { static { - Skript.registerEvent("Teleport", EvtTeleport.class, CollectionUtils.array(EntityTeleportEvent.class, PlayerTeleportEvent.class), "entity teleport[ing] [of %entitytypes%]", "[player] teleport[ing]") - .description("This event can be used to teleport non-player or player entities respectively", "When teleporting entities, the event may also be called due to a result of natural causes, such as an Enderman or Shulker teleporting, or Wolfs teleporting to players.", "When teleporting players, the event can be called by teleporting through a nether/end portal, or by other means (e.g. plugins).") + Skript.registerEvent("Teleport", EvtTeleport.class, CollectionUtils.array(EntityTeleportEvent.class, PlayerTeleportEvent.class), "[%entitytypes%] teleport[ing]", "[player] teleport[ing]") + .description("This event can be used to teleport non-player or player entities respectively", "When teleporting entities, the event may also be called due to a result of natural causes, such as an enderman or shulker teleporting, or wolves teleporting to players.", "When teleporting players, the event can be called by teleporting through a nether/end portal, or by other means (e.g. plugins).") .examples( + "on teleport:", "on player teleport:", - "on entity teleport:", - "on entity teleport of creeper:" + "on creeper teleport:" ) .since("1.0, INSERT VERSION (entity teleport)"); } @@ -66,15 +66,9 @@ public boolean check(Event event) { if (event instanceof EntityTeleportEvent) { EntityTeleportEvent entityEvent = (EntityTeleportEvent) event; entity = entityEvent.getEntity(); - if (entity instanceof Player) { - return false; - } } else if (event instanceof PlayerTeleportEvent) { PlayerTeleportEvent playerEvent = (PlayerTeleportEvent) event; entity = playerEvent.getPlayer(); - if (matchedPattern == 0) { - return false; // Exclude players from "entity teleport event" - } } else { return false; } @@ -94,11 +88,11 @@ public boolean check(Event event) { public String toString(@Nullable Event e, boolean debug) { if (entities != null) { - return "on entity teleport of " + entities.toString(e, debug); + return "on " + entities.toString(e, debug) + " teleport" ; } else if (e instanceof PlayerTeleportEvent) { return "on player teleport"; } else { - return "on entity teleport"; + return "on teleport"; } } } From 20545aafc4bb8ef261eb54217622154c2020d9a9 Mon Sep 17 00:00:00 2001 From: Asleepp Date: Thu, 18 Apr 2024 23:11:37 -0300 Subject: [PATCH 4/8] Added suggested changes x3 --- .../ch/njol/skript/events/EvtTeleport.java | 36 +++++++++---------- 1 file changed, 17 insertions(+), 19 deletions(-) diff --git a/src/main/java/ch/njol/skript/events/EvtTeleport.java b/src/main/java/ch/njol/skript/events/EvtTeleport.java index ef877239edb..1e4a29ae035 100644 --- a/src/main/java/ch/njol/skript/events/EvtTeleport.java +++ b/src/main/java/ch/njol/skript/events/EvtTeleport.java @@ -22,11 +22,10 @@ import ch.njol.skript.lang.Expression; import ch.njol.skript.lang.Literal; import ch.njol.skript.lang.SkriptEvent; -import ch.njol.skript.lang.SkriptParser; +import ch.njol.skript.lang.SkriptParser.ParseResult; import ch.njol.skript.entity.EntityType; import ch.njol.util.coll.CollectionUtils; import org.bukkit.entity.Entity; -import org.bukkit.entity.Player; import org.bukkit.event.Event; import org.bukkit.event.entity.EntityTeleportEvent; import org.bukkit.event.player.PlayerTeleportEvent; @@ -36,8 +35,11 @@ public class EvtTeleport extends SkriptEvent { static { - Skript.registerEvent("Teleport", EvtTeleport.class, CollectionUtils.array(EntityTeleportEvent.class, PlayerTeleportEvent.class), "[%entitytypes%] teleport[ing]", "[player] teleport[ing]") - .description("This event can be used to teleport non-player or player entities respectively", "When teleporting entities, the event may also be called due to a result of natural causes, such as an enderman or shulker teleporting, or wolves teleporting to players.", "When teleporting players, the event can be called by teleporting through a nether/end portal, or by other means (e.g. plugins).") + Skript.registerEvent("Teleport", EvtTeleport.class, CollectionUtils.array(EntityTeleportEvent.class, PlayerTeleportEvent.class), "[%entitytypes%] teleport[ing]") + .description( + "This event can be used to listen to teleports from non-players or player entities respectively.", + "When teleporting entities, the event may also be called due to a result of natural causes, such as an enderman or shulker teleporting, or wolves teleporting to players.", + "When teleporting players, the event can be called by teleporting through a nether/end portal, or by other means (e.g. plugins).") .examples( "on teleport:", "on player teleport:", @@ -49,11 +51,9 @@ public class EvtTeleport extends SkriptEvent { @SuppressWarnings("unchecked") private Expression entities; - private int matchedPattern; @Override - public boolean init(Literal[] args, int matchedPattern, SkriptParser.ParseResult parseResult) { - this.matchedPattern = matchedPattern; - if (matchedPattern == 0 && args[0] != null) { + public boolean init(Literal[] args, int matchedPattern, ParseResult parseResult) { + if (args[0] != null) { entities = (Expression) args[0]; } return true; @@ -62,18 +62,20 @@ public boolean init(Literal[] args, int matchedPattern, SkriptParser.ParseRes @Override public boolean check(Event event) { - Entity entity; if (event instanceof EntityTeleportEvent) { - EntityTeleportEvent entityEvent = (EntityTeleportEvent) event; - entity = entityEvent.getEntity(); + Entity entity = ((EntityTeleportEvent) event).getEntity(); + return checkEntity(entity, event); } else if (event instanceof PlayerTeleportEvent) { - PlayerTeleportEvent playerEvent = (PlayerTeleportEvent) event; - entity = playerEvent.getPlayer(); + Entity entity = ((PlayerTeleportEvent) event).getPlayer(); + return checkEntity(entity, event); } else { return false; } + } + + private boolean checkEntity(Entity entity, Event event) { if (entities != null) { - for (EntityType entType : entities.getArray(event)) { + for (EntityType entType : entities.getAll(event)) { if (entType.isInstance(entity)) { return true; } @@ -84,13 +86,9 @@ public boolean check(Event event) { return false; } - - public String toString(@Nullable Event e, boolean debug) { if (entities != null) { - return "on " + entities.toString(e, debug) + " teleport" ; - } else if (e instanceof PlayerTeleportEvent) { - return "on player teleport"; + return "on " + entities.toString(e, debug) + " teleport"; } else { return "on teleport"; } From 2aab65e64b268c0159bb3c539cad6d39b5499f76 Mon Sep 17 00:00:00 2001 From: Asleepp Date: Fri, 19 Apr 2024 12:21:29 -0300 Subject: [PATCH 5/8] Suggested Changes --- src/main/java/ch/njol/skript/events/EvtTeleport.java | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/src/main/java/ch/njol/skript/events/EvtTeleport.java b/src/main/java/ch/njol/skript/events/EvtTeleport.java index 1e4a29ae035..cc8bfa03ed7 100644 --- a/src/main/java/ch/njol/skript/events/EvtTeleport.java +++ b/src/main/java/ch/njol/skript/events/EvtTeleport.java @@ -53,9 +53,8 @@ public class EvtTeleport extends SkriptEvent { @Override public boolean init(Literal[] args, int matchedPattern, ParseResult parseResult) { - if (args[0] != null) { + if (args[0] != null) entities = (Expression) args[0]; - } return true; } @@ -76,11 +75,9 @@ public boolean check(Event event) { private boolean checkEntity(Entity entity, Event event) { if (entities != null) { for (EntityType entType : entities.getAll(event)) { - if (entType.isInstance(entity)) { + if (entType.isInstance(entity)) return true; - } } - } else { return true; } return false; From d1d54e14dad320287a1e43c37db76e3a51d79285 Mon Sep 17 00:00:00 2001 From: Asleepp Date: Fri, 19 Apr 2024 21:03:46 -0300 Subject: [PATCH 6/8] whoops --- src/main/java/ch/njol/skript/events/EvtTeleport.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/ch/njol/skript/events/EvtTeleport.java b/src/main/java/ch/njol/skript/events/EvtTeleport.java index cc8bfa03ed7..d73bb656bbd 100644 --- a/src/main/java/ch/njol/skript/events/EvtTeleport.java +++ b/src/main/java/ch/njol/skript/events/EvtTeleport.java @@ -78,9 +78,9 @@ private boolean checkEntity(Entity entity, Event event) { if (entType.isInstance(entity)) return true; } - return true; + return false; } - return false; + return true; } public String toString(@Nullable Event e, boolean debug) { From db2d8bb16de87657e4b034ed5e7b5a5970e5e120 Mon Sep 17 00:00:00 2001 From: sovde <10354869+sovdeeth@users.noreply.github.com> Date: Mon, 1 Jul 2024 22:22:01 +0200 Subject: [PATCH 7/8] Update EvtTeleport.java --- .../ch/njol/skript/events/EvtTeleport.java | 33 +++++++++---------- 1 file changed, 16 insertions(+), 17 deletions(-) diff --git a/src/main/java/ch/njol/skript/events/EvtTeleport.java b/src/main/java/ch/njol/skript/events/EvtTeleport.java index d73bb656bbd..67be22ec4d6 100644 --- a/src/main/java/ch/njol/skript/events/EvtTeleport.java +++ b/src/main/java/ch/njol/skript/events/EvtTeleport.java @@ -19,7 +19,6 @@ package ch.njol.skript.events; import ch.njol.skript.Skript; -import ch.njol.skript.lang.Expression; import ch.njol.skript.lang.Literal; import ch.njol.skript.lang.SkriptEvent; import ch.njol.skript.lang.SkriptParser.ParseResult; @@ -29,8 +28,7 @@ import org.bukkit.event.Event; import org.bukkit.event.entity.EntityTeleportEvent; import org.bukkit.event.player.PlayerTeleportEvent; - -import javax.annotation.Nullable; +import org.jetbrains.annotations.Nullable; public class EvtTeleport extends SkriptEvent { @@ -48,13 +46,16 @@ public class EvtTeleport extends SkriptEvent { .since("1.0, INSERT VERSION (entity teleport)"); } - @SuppressWarnings("unchecked") - private Expression entities; + @Nullable + private Literal entitiesLiteral; + private EntityType @Nullable [] entities; @Override public boolean init(Literal[] args, int matchedPattern, ParseResult parseResult) { - if (args[0] != null) - entities = (Expression) args[0]; + if (args[0] != null) { + entitiesLiteral = ((Literal) args[0]); // evaluate only once + entities = entitiesLiteral.getAll(); + } return true; } @@ -63,18 +64,18 @@ public boolean init(Literal[] args, int matchedPattern, ParseResult parseResu public boolean check(Event event) { if (event instanceof EntityTeleportEvent) { Entity entity = ((EntityTeleportEvent) event).getEntity(); - return checkEntity(entity, event); + return checkEntity(entity); } else if (event instanceof PlayerTeleportEvent) { Entity entity = ((PlayerTeleportEvent) event).getPlayer(); - return checkEntity(entity, event); + return checkEntity(entity); } else { return false; } } - private boolean checkEntity(Entity entity, Event event) { + private boolean checkEntity(Entity entity) { if (entities != null) { - for (EntityType entType : entities.getAll(event)) { + for (EntityType entType : entities) { if (entType.isInstance(entity)) return true; } @@ -83,11 +84,9 @@ private boolean checkEntity(Entity entity, Event event) { return true; } - public String toString(@Nullable Event e, boolean debug) { - if (entities != null) { - return "on " + entities.toString(e, debug) + " teleport"; - } else { - return "on teleport"; - } + public String toString(@Nullable Event event, boolean debug) { + if (entitiesLiteral != null) + return "on " + entitiesLiteral.toString(event, debug) + " teleport"; + return "on teleport"; } } From eac948de41ff7f3222425106bd08aae4ccea83c1 Mon Sep 17 00:00:00 2001 From: Asleepp <119438940+Asleeepp@users.noreply.github.com> Date: Mon, 1 Jul 2024 19:38:43 -0300 Subject: [PATCH 8/8] yes --- src/main/java/ch/njol/skript/events/EvtTeleport.java | 1 + 1 file changed, 1 insertion(+) diff --git a/src/main/java/ch/njol/skript/events/EvtTeleport.java b/src/main/java/ch/njol/skript/events/EvtTeleport.java index d73bb656bbd..8967514ee15 100644 --- a/src/main/java/ch/njol/skript/events/EvtTeleport.java +++ b/src/main/java/ch/njol/skript/events/EvtTeleport.java @@ -90,4 +90,5 @@ public String toString(@Nullable Event e, boolean debug) { return "on teleport"; } } + }