summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorEdGruberman <ed@rjump.com>2012-12-14 02:55:41 -0700
committerfeildmaster <admin@feildmaster.com>2013-01-19 06:06:22 -0600
commit2f6cee111d0ba73e2561e77bb75e5ace5b382b9b (patch)
treea15189be159a7a52656713084df55d415f34f79b /src
parent329f9f31664632b973d985146f49f80d4613d6b7 (diff)
downloadbukkit-2f6cee111d0ba73e2561e77bb75e5ace5b382b9b.tar
bukkit-2f6cee111d0ba73e2561e77bb75e5ace5b382b9b.tar.gz
bukkit-2f6cee111d0ba73e2561e77bb75e5ace5b382b9b.tar.lz
bukkit-2f6cee111d0ba73e2561e77bb75e5ace5b382b9b.tar.xz
bukkit-2f6cee111d0ba73e2561e77bb75e5ace5b382b9b.zip
[Bleeding] Add experimental support for entity portal traveling
EntityPortalEvent is called when an entity is about to portal to a new location. This event is cancellable on top of being able to change the exit location. EntityPortalExitEvent is called when exiting the portal, allowing for adjustment of the exit velocity.
Diffstat (limited to 'src')
-rw-r--r--src/main/java/org/bukkit/event/entity/EntityPortalEnterEvent.java2
-rw-r--r--src/main/java/org/bukkit/event/entity/EntityPortalEvent.java47
-rw-r--r--src/main/java/org/bukkit/event/entity/EntityPortalExitEvent.java58
-rw-r--r--src/main/java/org/bukkit/event/player/PlayerPortalEvent.java2
4 files changed, 107 insertions, 2 deletions
diff --git a/src/main/java/org/bukkit/event/entity/EntityPortalEnterEvent.java b/src/main/java/org/bukkit/event/entity/EntityPortalEnterEvent.java
index 384d5db4..87d57b01 100644
--- a/src/main/java/org/bukkit/event/entity/EntityPortalEnterEvent.java
+++ b/src/main/java/org/bukkit/event/entity/EntityPortalEnterEvent.java
@@ -5,7 +5,7 @@ import org.bukkit.Location;
import org.bukkit.event.HandlerList;
/**
- * Stores data for entities standing inside a portal block
+ * Called when an entity comes into contact with a portal
*/
public class EntityPortalEnterEvent extends EntityEvent {
private static final HandlerList handlers = new HandlerList();
diff --git a/src/main/java/org/bukkit/event/entity/EntityPortalEvent.java b/src/main/java/org/bukkit/event/entity/EntityPortalEvent.java
new file mode 100644
index 00000000..8767243a
--- /dev/null
+++ b/src/main/java/org/bukkit/event/entity/EntityPortalEvent.java
@@ -0,0 +1,47 @@
+package org.bukkit.event.entity;
+
+import org.bukkit.Location;
+import org.bukkit.TravelAgent;
+import org.bukkit.entity.Entity;
+import org.bukkit.event.HandlerList;
+
+/**
+ * Called when a non-player entity is about to teleport because it is in contact with a portal
+ * <p />
+ * For players see {@link org.bukkit.event.player.PlayerPortalEvent PlayerPortalEvent}
+ */
+public class EntityPortalEvent extends EntityTeleportEvent {
+ private static final HandlerList handlers = new HandlerList();
+ protected boolean useTravelAgent = true;
+ protected TravelAgent travelAgent;
+
+ public EntityPortalEvent(final Entity entity, final Location from, final Location to, final TravelAgent pta) {
+ super(entity, from, to);
+ this.travelAgent = pta;
+ }
+
+ public void useTravelAgent(boolean useTravelAgent) {
+ this.useTravelAgent = useTravelAgent;
+ }
+
+ public boolean useTravelAgent() {
+ return useTravelAgent;
+ }
+
+ public TravelAgent getPortalTravelAgent() {
+ return this.travelAgent;
+ }
+
+ public void setPortalTravelAgent(TravelAgent travelAgent) {
+ this.travelAgent = travelAgent;
+ }
+
+ @Override
+ public HandlerList getHandlers() {
+ return handlers;
+ }
+
+ public static HandlerList getHandlerList() {
+ return handlers;
+ }
+} \ No newline at end of file
diff --git a/src/main/java/org/bukkit/event/entity/EntityPortalExitEvent.java b/src/main/java/org/bukkit/event/entity/EntityPortalExitEvent.java
new file mode 100644
index 00000000..8e69e3be
--- /dev/null
+++ b/src/main/java/org/bukkit/event/entity/EntityPortalExitEvent.java
@@ -0,0 +1,58 @@
+package org.bukkit.event.entity;
+
+import org.bukkit.Location;
+import org.bukkit.entity.Entity;
+import org.bukkit.event.HandlerList;
+import org.bukkit.util.Vector;
+
+/**
+ * Called before an entity exits a portal.
+ * <p />
+ * This event allows you to modify the velocity of the entity after they
+ * have successfully exeted the portal.
+ */
+public class EntityPortalExitEvent extends EntityTeleportEvent {
+ private static final HandlerList handlers = new HandlerList();
+ private Vector before;
+ private Vector after;
+
+ public EntityPortalExitEvent(final Entity entity, final Location from, final Location to, final Vector before, final Vector after) {
+ super(entity, from, to);
+ this.before = before;
+ this.after = after;
+ }
+
+ /**
+ * Gets a copy of the velocity that the entity has before entering the portal.
+ *
+ * @return velocity of entity before entering portal
+ */
+ public Vector getBefore() {
+ return this.before.clone();
+ }
+
+ /**
+ * Gets a copy of the velocity that the entity will have after exiting the portal.
+ *
+ * @return velocity of entity after exiting portal
+ */
+ public Vector getAfter() {
+ return this.after.clone();
+ }
+
+ /**
+ * Sets the velocity that the entity will have after exiting the portal.
+ */
+ public void setAfter(Vector after) {
+ this.after = after.clone();
+ }
+
+ @Override
+ public HandlerList getHandlers() {
+ return handlers;
+ }
+
+ public static HandlerList getHandlerList() {
+ return handlers;
+ }
+} \ No newline at end of file
diff --git a/src/main/java/org/bukkit/event/player/PlayerPortalEvent.java b/src/main/java/org/bukkit/event/player/PlayerPortalEvent.java
index a243b538..1114f5c7 100644
--- a/src/main/java/org/bukkit/event/player/PlayerPortalEvent.java
+++ b/src/main/java/org/bukkit/event/player/PlayerPortalEvent.java
@@ -6,7 +6,7 @@ import org.bukkit.entity.Player;
import org.bukkit.event.HandlerList;
/**
- * Called when a player completes the portaling process by standing in a portal
+ * Called when a player is about to teleport because it is in contact with a portal
*/
public class PlayerPortalEvent extends PlayerTeleportEvent {
private static final HandlerList handlers = new HandlerList();