Added various 1.6 portal events.

By: Stephen <stephen@jazer.com>
This commit is contained in:
Bukkit/Spigot 2011-06-07 14:12:08 -04:00
parent b3c007d3a7
commit 2c4ba8815e
9 changed files with 150 additions and 0 deletions

View File

@ -229,6 +229,12 @@ public abstract class Event implements Serializable {
* @see org.bukkit.event.player.PlayerMoveEvent
*/
PLAYER_TELEPORT (Category.PLAYER),
/**
* Called when a player completes the portaling process by standing in a portal
*
* @see org.bukkit.event.player.PlayerPortalEvent
*/
PLAYER_PORTAL (Category.PLAYER),
/**
* Called when a player changes their held item
*
@ -483,6 +489,12 @@ public abstract class Event implements Serializable {
* Called when a World is unloaded
*/
WORLD_UNLOAD (Category.WORLD),
/**
* Called when world attempts to create a matching end to a portal
*
* @see org.bukkit.event.world.PortalCreateEvent
*/
PORTAL_CREATE (Category.WORLD),
/**
* ENTITY EVENTS
@ -500,6 +512,12 @@ public abstract class Event implements Serializable {
* @see org.bukkit.event.painting.PaintingRemoveEvent
*/
PAINTING_BREAK (Category.ENTITY),
/**
* Called when an entity touches a portal block
*
* @see org.bukkit.event.entity.EntityPortalEnterEvent
*/
ENTITY_PORTAL_ENTER (Category.ENTITY),
/**
* LIVING_ENTITY EVENTS

View File

@ -26,6 +26,8 @@ public class EntityListener implements Listener {
public void onEntityInteract(EntityInteractEvent event) {}
public void onEntityPortalEnter(EntityPortalEnterEvent event) {}
public void onPaintingPlace(PaintingPlaceEvent event) {}
public void onPaintingBreak(PaintingBreakEvent event) {}

View File

@ -0,0 +1,26 @@
package org.bukkit.event.entity;
import org.bukkit.entity.Entity;
import org.bukkit.Location;
import org.bukkit.event.Cancellable;
/**
* Stores data for entities standing inside a portal block
*/
public class EntityPortalEnterEvent extends EntityEvent {
private Location location;
public EntityPortalEnterEvent(Entity entity, Location location) {
super(Type.ENTITY_PORTAL_ENTER, entity);
this.location = location;
}
/*
* Gets the portal block the entity is touching
* @return The portal block the entity is touching
*/
public Location getLocation() {
return location;
}
}

View File

@ -183,6 +183,13 @@ public class PlayerListener implements Listener {
*/
public void onPlayerBedLeave(PlayerBedLeaveEvent event) {}
/**
* Called when a player is teleporting in a portal (after the animation)
*
* @param event Relevant event details
*/
public void onPlayerPortal(PlayerPortalEvent event) {}
// TODO: Remove after RB
@Deprecated public void onPlayerQuit(PlayerEvent event) {}
@Deprecated public void onPlayerCommandPreprocess(PlayerChatEvent event) {}

View File

@ -0,0 +1,22 @@
package org.bukkit.event.player;
import org.bukkit.Location;
import org.bukkit.entity.Player;
import org.bukkit.block.Block;
/**
* Called when a player completes the portaling process by standing in a portal
*/
public class PlayerPortalEvent extends PlayerTeleportEvent {
private boolean useTravelAgent = true;
public PlayerPortalEvent(Player player, Location from, Location to) {
super(Type.PLAYER_PORTAL, player, from, to);
}
public void useTravelAgent(boolean useTravelAgent){
this.useTravelAgent = useTravelAgent;
}
public boolean useTravelAgent(){
return useTravelAgent;
}
}

View File

@ -2,6 +2,7 @@ package org.bukkit.event.player;
import org.bukkit.Location;
import org.bukkit.entity.Player;
import org.bukkit.event.Event;
/**
* Holds information for player teleport events
@ -10,4 +11,7 @@ public class PlayerTeleportEvent extends PlayerMoveEvent {
public PlayerTeleportEvent(Player player, Location from, Location to) {
super(Type.PLAYER_TELEPORT, player, from, to);
}
public PlayerTeleportEvent(final Event.Type type, Player player, Location from, Location to) {
super(type, player, from, to);
}
}

View File

@ -0,0 +1,43 @@
package org.bukkit.event.world;
import org.bukkit.block.Block;
import org.bukkit.World;
import org.bukkit.event.Cancellable;
import java.util.ArrayList;
/**
* Called when the world attempts to create a matching end to a portal
*/
public class PortalCreateEvent extends WorldEvent implements Cancellable {
private boolean cancel = false;
private ArrayList<Block> blocks = new ArrayList<Block>();
public PortalCreateEvent(final ArrayList<Block> blocks, final World world) {
super(Type.PORTAL_CREATE, world);
this.blocks = blocks;
}
public ArrayList<Block> getBlocks(){
return this.blocks;
}
/**
* Gets the cancellation state of this event. A canceled event will not
* be executed in the server, but will still pass to other plugins
*
* @return true if this event is canceled
*/
public boolean isCancelled() {
return cancel;
}
/**
* Sets the cancellation state of this event. A canceled event will not
* be executed in the server, but will still pass to other plugins
*
* @param cancel true if you wish to cancel this event
*/
public void setCancelled(boolean cancel) {
this.cancel = cancel;
}
}

View File

@ -29,6 +29,13 @@ public class WorldListener implements Listener {
*/
public void onSpawnChange(SpawnChangeEvent event) {}
/**
* Called when the world generates a portal end point
*
* @param event Relevant event details
*/
public void onPortalCreate(PortalCreateEvent event) {}
/**
* Called when a world is saved
*

View File

@ -293,6 +293,13 @@ public final class JavaPluginLoader implements PluginLoader {
}
};
case PLAYER_PORTAL:
return new EventExecutor() {
public void execute(Listener listener, Event event) {
((PlayerListener) listener).onPlayerPortal((PlayerPortalEvent) event);
}
};
case PLAYER_INTERACT:
return new EventExecutor() {
public void execute(Listener listener, Event event) {
@ -562,6 +569,13 @@ public final class JavaPluginLoader implements PluginLoader {
}
};
case PORTAL_CREATE:
return new EventExecutor() {
public void execute(Listener listener, Event event) {
((WorldListener) listener).onPortalCreate((PortalCreateEvent) event);
}
};
// Painting Events
case PAINTING_PLACE:
return new EventExecutor() {
@ -627,6 +641,13 @@ public final class JavaPluginLoader implements PluginLoader {
}
};
case ENTITY_PORTAL_ENTER:
return new EventExecutor() {
public void execute(Listener listener, Event event) {
((EntityListener) listener).onEntityPortalEnter((EntityPortalEnterEvent) event);
}
};
case CREATURE_SPAWN:
return new EventExecutor() {
public void execute(Listener listener, Event event) {