Skip to content

Commit 5e87816

Browse files
committed
Add mount event support
1 parent 013bfa8 commit 5e87816

File tree

2 files changed

+26
-4
lines changed

2 files changed

+26
-4
lines changed

src/main/java/ch/njol/skript/events/SimpleEvents.java

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -80,6 +80,8 @@
8080
import org.bukkit.event.world.WorldLoadEvent;
8181
import org.bukkit.event.world.WorldSaveEvent;
8282
import org.bukkit.event.world.WorldUnloadEvent;
83+
import org.spigotmc.event.entity.EntityDismountEvent;
84+
import org.spigotmc.event.entity.EntityMountEvent;
8385

8486
import ch.njol.skript.Skript;
8587
import ch.njol.skript.lang.util.SimpleEvent;
@@ -332,10 +334,16 @@ public class SimpleEvents {
332334
.description("Called when an <a href='../classes/#entity'>entity</a> enters a vehicle, either deliberately (players) or by falling into them (mobs).")
333335
.examples("")
334336
.since("1.0");
335-
Skript.registerEvent("Vehicle Exit", SimpleEvent.class, VehicleExitEvent.class, "vehicle exit", "exit[ing] [a] vehicle")
336-
.description("Called when an entity exits a vehicle.")
337-
.examples("")
338-
.since("1.0");
337+
if (Skript.classExists("org.spigotmc.event.entity.EntityMountEvent")) {
338+
Skript.registerEvent("Entity Mount", SimpleEvent.class, EntityMountEvent.class, "mount[ing]")
339+
.description("Called when entity starts riding another.")
340+
.examples("")
341+
.since("2.2-dev13b");
342+
Skript.registerEvent("Entity Dismount", SimpleEvent.class, EntityDismountEvent.class, "dismount[ing]")
343+
.description("Called when an entity dismounts.")
344+
.examples("")
345+
.since("2.2-dev13b");
346+
}
339347
Skript.registerEvent("World Init", SimpleEvent.class, WorldInitEvent.class, "world init")
340348
.description("Called when a world is initialised. As all default worlds are initialised before any scripts are loaded, this event is only called for newly created worlds.",
341349
"World management plugins might change the behaviour of this event though.")

src/main/java/ch/njol/skript/expressions/ExprVehicle.java

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,8 +26,11 @@
2626
import org.bukkit.event.vehicle.VehicleEnterEvent;
2727
import org.bukkit.event.vehicle.VehicleExitEvent;
2828
import org.eclipse.jdt.annotation.Nullable;
29+
import org.spigotmc.event.entity.EntityDismountEvent;
30+
import org.spigotmc.event.entity.EntityMountEvent;
2931

3032
import ch.njol.skript.classes.Changer.ChangeMode;
33+
import ch.njol.skript.Skript;
3134
import ch.njol.skript.classes.Converter;
3235
import ch.njol.skript.doc.Description;
3336
import ch.njol.skript.doc.Examples;
@@ -47,6 +50,9 @@
4750
@Examples({"vehicle of the player is a minecart"})
4851
@Since("2.0")
4952
public class ExprVehicle extends SimplePropertyExpression<Entity, Entity> {
53+
54+
static final boolean hasMountEvents = Skript.classExists("org.spigotmc.event.entity.EntityMountEvent");
55+
5056
static {
5157
register(ExprVehicle.class, Entity.class, "vehicle[s]", "entities");
5258
}
@@ -63,6 +69,14 @@ public Entity convert(final Entity p) {
6369
if (getTime() >= 0 && e instanceof VehicleExitEvent && p.equals(((VehicleExitEvent) e).getExited()) && !Delay.isDelayed(e)) {
6470
return ((VehicleExitEvent) e).getVehicle();
6571
}
72+
if (hasMountEvents) {
73+
if (getTime() >= 0 && e instanceof EntityMountEvent && p.equals(((EntityMountEvent) e).getEntity()) && !Delay.isDelayed(e)) {
74+
return ((EntityMountEvent) e).getMount();
75+
}
76+
if (getTime() >= 0 && e instanceof EntityDismountEvent && p.equals(((EntityDismountEvent) e).getEntity()) && !Delay.isDelayed(e)) {
77+
return ((EntityDismountEvent) e).getDismounted();
78+
}
79+
}
6680
return p.getVehicle();
6781
}
6882
});

0 commit comments

Comments
 (0)