Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -229,10 +229,6 @@ public final class BukkitEventValues {
// EntityTameEvent
EventValues.registerEventValue(EntityTameEvent.class, Entity.class, EntityTameEvent::getEntity);

// EntityTeleportEvent
EventValues.registerEventValue(EntityTeleportEvent.class, Location.class, EntityTeleportEvent::getFrom, TIME_PAST);
EventValues.registerEventValue(EntityTeleportEvent.class, Location.class, EntityTeleportEvent::getTo);

// EntityChangeBlockEvent
EventValues.registerEventValue(EntityChangeBlockEvent.class, Block.class, EntityChangeBlockEvent::getBlock, TIME_PAST);
EventValues.registerEventValue(EntityChangeBlockEvent.class, Block.class, EntityChangeBlockEvent::getBlock);
Expand Down
57 changes: 57 additions & 0 deletions src/main/java/ch/njol/skript/events/EvtPortal.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,57 @@
package ch.njol.skript.events;

import org.bukkit.event.Event;
import org.bukkit.event.entity.EntityPortalEvent;
import org.bukkit.event.player.PlayerPortalEvent;
import org.jetbrains.annotations.Nullable;

import ch.njol.skript.Skript;
import ch.njol.skript.lang.Literal;
import ch.njol.skript.lang.SkriptEvent;
import ch.njol.skript.lang.SkriptParser.ParseResult;
import ch.njol.util.coll.CollectionUtils;

public class EvtPortal extends SkriptEvent {

static {
Skript.registerEvent("Portal", EvtPortal.class, CollectionUtils.array(PlayerPortalEvent.class, EntityPortalEvent.class), "[player] portal", "entity portal")
.description(
"Called when a player or an entity uses a nether or end portal. Note that 'on entity portal' event does not apply to players.",
"<a href='#EffCancelEvent'>Cancel the event</a> to prevent the entity from teleporting."
).keywords(
"player", "entity"
).examples(
"on portal:",
"\tbroadcast \"%player% has entered a portal!\"",
"",
"on player portal:",
"\tplayer's world is world(\"wilderness\")",
"\tset world of event-location to player's world",
"\tadd 9000 to x-pos of event-location",
"",
"on entity portal:",
"\tbroadcast \"A %type of event-entity% has entered a portal!"
).since("1.0, 2.5.3 (entities), INSERT VERSION (location changers)");
}

private boolean isPlayer;

@Override
public boolean init(Literal<?>[] args, int matchedPattern, ParseResult parseResult) {
isPlayer = matchedPattern == 0;
return true;
}

@Override
public boolean check(Event event) {
if (isPlayer)
return event instanceof PlayerPortalEvent;
return event instanceof EntityPortalEvent;
}

@Override
public String toString(@Nullable Event event, boolean debug) {
return (isPlayer ? "player" : "entity") + " portal";
}

}
53 changes: 53 additions & 0 deletions src/main/java/ch/njol/skript/events/EvtTeleport.java
Original file line number Diff line number Diff line change
Expand Up @@ -5,13 +5,19 @@
import ch.njol.skript.lang.SkriptEvent;
import ch.njol.skript.lang.SkriptParser.ParseResult;
import ch.njol.skript.entity.EntityType;
import ch.njol.skript.registrations.EventConverter;
import ch.njol.skript.registrations.EventValues;
import ch.njol.util.coll.CollectionUtils;

import org.bukkit.Location;
import org.bukkit.entity.Entity;
import org.bukkit.event.Event;
import org.bukkit.event.entity.EntityTeleportEvent;
import org.bukkit.event.player.PlayerTeleportEvent;
import org.jetbrains.annotations.Nullable;

import static ch.njol.skript.registrations.EventValues.TIME_PAST;

public class EvtTeleport extends SkriptEvent {

static {
Expand All @@ -26,6 +32,53 @@ public class EvtTeleport extends SkriptEvent {
"on creeper teleport:"
)
.since("1.0, 2.9.0 (entity teleport)");

EventValues.registerEventValue(PlayerTeleportEvent.class, Location.class, new EventConverter<>() {
@Override
public void set(PlayerTeleportEvent event, Location value) {
event.setFrom(value.clone());
}

@Override
public Location convert(PlayerTeleportEvent event) {
return event.getFrom();
}
}, TIME_PAST);
EventValues.registerEventValue(PlayerTeleportEvent.class, Location.class, new EventConverter<>() {
@Override
public void set(PlayerTeleportEvent event, Location value) {
event.setTo(value.clone());
}

@Override
public Location convert(PlayerTeleportEvent event) {
return event.getTo();
}
});

EventValues.registerEventValue(EntityTeleportEvent.class, Location.class, new EventConverter<>() {
@Override
public void set(EntityTeleportEvent event, Location value) {
event.setFrom(value.clone());
}

@Override
public Location convert(EntityTeleportEvent event) {
return event.getFrom();
}
}, TIME_PAST);
EventValues.registerEventValue(EntityTeleportEvent.class, Location.class, new EventConverter<>() {
@Override
public void set(EntityTeleportEvent event, Location value) {
event.setTo(value.clone());
}

@Override
public Location convert(EntityTeleportEvent event) {
return event.getTo();
}
});

}

@Nullable
Expand Down
8 changes: 0 additions & 8 deletions src/main/java/ch/njol/skript/events/SimpleEvents.java
Original file line number Diff line number Diff line change
Expand Up @@ -199,14 +199,6 @@ public class SimpleEvents {
.description("Called when a player is kicked from the server. You can change the <a href='#ExprMessage'>kick message</a> or <a href='#EffCancelEvent'>cancel the event</a> entirely.")
.examples("on kick:")
.since("1.0");
Skript.registerEvent("Entity Portal", SimpleEvent.class, EntityPortalEvent.class, "entity portal")
.description("Called when an entity uses a nether or end portal. <a href='#EffCancelEvent'>Cancel the event</a> to prevent the entity from teleporting.")
.examples("on entity portal:", "\tbroadcast \"A %type of event-entity% has entered a portal!")
.since("2.5.3");
Skript.registerEvent("Portal", SimpleEvent.class, PlayerPortalEvent.class, "[player] portal")
.description("Called when a player uses a nether or end portal. <a href='#EffCancelEvent'>Cancel the event</a> to prevent the player from teleporting.")
.examples("on player portal:")
.since("1.0");
Skript.registerEvent("Quit", SimpleEvent.class, PlayerQuitEvent.class, "(quit[ting]|disconnect[ing]|log[ ]out|logging out|leav(e|ing))")
.description("Called when a player leaves the server.")
.examples("on quit:",
Expand Down