summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/org/bukkit/Location.java66
-rw-r--r--src/org/bukkit/event/player/PlayerListener.java16
-rw-r--r--src/org/bukkit/event/player/PlayerMoveEvent.java85
-rw-r--r--src/org/bukkit/plugin/java/JavaPluginLoader.java6
4 files changed, 169 insertions, 4 deletions
diff --git a/src/org/bukkit/Location.java b/src/org/bukkit/Location.java
index 4da77ad1..95a57cda 100644
--- a/src/org/bukkit/Location.java
+++ b/src/org/bukkit/Location.java
@@ -9,12 +9,20 @@ public class Location {
private double x;
private double y;
private double z;
+ private float pitch;
+ private float yaw;
public Location(final World world, final double x, final double y, final double z) {
+ this(world, x, y, z, 0, 0);
+ }
+
+ public Location(final World world, final double x, final double y, final double z, final float pitch, final float yaw) {
this.world = world;
this.x = x;
this.y = y;
this.z = z;
+ this.pitch = pitch;
+ this.yaw = yaw;
}
/**
@@ -89,6 +97,42 @@ public class Location {
return z;
}
+ /**
+ * Sets the yaw of this location
+ *
+ * @param yaw New yaw
+ */
+ public void setYaw(float yaw) {
+ this.yaw = yaw;
+ }
+
+ /**
+ * Gets the yaw of this location
+ *
+ * @return Yaw
+ */
+ public float getYaw() {
+ return yaw;
+ }
+
+ /**
+ * Sets the pitch of this location
+ *
+ * @param pitch New pitch
+ */
+ public void setPitch(float pitch) {
+ this.pitch = pitch;
+ }
+
+ /**
+ * Gets the pitch of this location
+ *
+ * @return Pitch
+ */
+ public float getPitch() {
+ return pitch;
+ }
+
@Override
public boolean equals(Object obj) {
if (obj == null) {
@@ -110,15 +154,29 @@ public class Location {
if (Double.doubleToLongBits(this.z) != Double.doubleToLongBits(other.z)) {
return false;
}
+ if (Float.floatToIntBits(this.pitch) != Float.floatToIntBits(other.pitch)) {
+ return false;
+ }
+ if (Float.floatToIntBits(this.yaw) != Float.floatToIntBits(other.yaw)) {
+ return false;
+ }
return true;
}
@Override
public int hashCode() {
- int hash = 7;
- hash = 23 * hash + (int) (Double.doubleToLongBits(this.x) ^ (Double.doubleToLongBits(this.x) >>> 32));
- hash = 23 * hash + (int) (Double.doubleToLongBits(this.y) ^ (Double.doubleToLongBits(this.y) >>> 32));
- hash = 23 * hash + (int) (Double.doubleToLongBits(this.z) ^ (Double.doubleToLongBits(this.z) >>> 32));
+ int hash = 3;
+ hash = 19 * hash + (this.world != null ? this.world.hashCode() : 0);
+ hash = 19 * hash + (int) (Double.doubleToLongBits(this.x) ^ (Double.doubleToLongBits(this.x) >>> 32));
+ hash = 19 * hash + (int) (Double.doubleToLongBits(this.y) ^ (Double.doubleToLongBits(this.y) >>> 32));
+ hash = 19 * hash + (int) (Double.doubleToLongBits(this.z) ^ (Double.doubleToLongBits(this.z) >>> 32));
+ hash = 19 * hash + Float.floatToIntBits(this.pitch);
+ hash = 19 * hash + Float.floatToIntBits(this.yaw);
return hash;
}
+
+ @Override
+ public String toString() {
+ return "Location{" + "world=" + world + "x=" + x + "y=" + y + "z=" + z + "pitch=" + pitch + "yaw=" + yaw + '}';
+ }
}
diff --git a/src/org/bukkit/event/player/PlayerListener.java b/src/org/bukkit/event/player/PlayerListener.java
index dc3d01ec..fe545c38 100644
--- a/src/org/bukkit/event/player/PlayerListener.java
+++ b/src/org/bukkit/event/player/PlayerListener.java
@@ -41,4 +41,20 @@ public class PlayerListener implements Listener {
*/
public void onPlayerCommand(PlayerChatEvent event) {
}
+
+ /**
+ * Called when a player attempts to move location in a world
+ *
+ * @param event Relevant event details
+ */
+ public void onPlayerMove(PlayerMoveEvent event) {
+ }
+
+ /**
+ * Called when a player attempts to teleport to a new location in a world
+ *
+ * @param event Relevant event details
+ */
+ public void onPlayerTeleport(PlayerMoveEvent event) {
+ }
}
diff --git a/src/org/bukkit/event/player/PlayerMoveEvent.java b/src/org/bukkit/event/player/PlayerMoveEvent.java
new file mode 100644
index 00000000..bb08255d
--- /dev/null
+++ b/src/org/bukkit/event/player/PlayerMoveEvent.java
@@ -0,0 +1,85 @@
+
+package org.bukkit.event.player;
+
+import org.bukkit.Location;
+import org.bukkit.Player;
+import org.bukkit.event.Event;
+
+/**
+ * Holds information for player movement and teleportation events
+ */
+public class PlayerMoveEvent extends PlayerEvent {
+ private boolean cancel = false;
+ private Location from;
+ private Location to;
+
+ public PlayerMoveEvent(final Event.Type type, final Player player, final Location from, final Location to) {
+ super(type, player);
+ this.from = from;
+ this.to = to;
+ }
+
+ /**
+ * Gets the cancellation state of this event. A cancelled event will not
+ * be executed in the server, but will still pass to other plugins
+ *
+ * If a move or teleport event is cancelled, the player will be moved or
+ * teleported back to the Location as defined by getFrom(). This will not
+ * fire an event
+ *
+ * @return true if this event is cancelled
+ */
+ public boolean isCancelled() {
+ return cancel;
+ }
+
+ /**
+ * Sets the cancellation state of this event. A cancelled event will not
+ * be executed in the server, but will still pass to other plugins
+ *
+ * If a move or teleport event is cancelled, the player will be moved or
+ * teleported back to the Location as defined by getFrom(). This will not
+ * fire an event
+ *
+ * @param cancel true if you wish to cancel this event
+ */
+ public void setCancelled(boolean cancel) {
+ this.cancel = cancel;
+ }
+
+ /**
+ * Gets the location this player moved from
+ *
+ * @return Location the player moved from
+ */
+ public Location getFrom() {
+ return from;
+ }
+
+ /**
+ * Sets the location to mark as where the player moved from
+ *
+ * @param from New location to mark as the players previous location
+ */
+ public void setFrom(Location from) {
+ this.from = from;
+ }
+
+ /**
+ * Gets the location this player moved to
+ *
+ * @return Location the player moved to
+ */
+ public Location getTo() {
+ return to;
+ }
+
+ /**
+ * Sets the location that this player will move to
+ *
+ * @param to New Location this player will move to
+ */
+ public void setTo(Location to) {
+ this.to = to;
+ }
+}
diff --git a/src/org/bukkit/plugin/java/JavaPluginLoader.java b/src/org/bukkit/plugin/java/JavaPluginLoader.java
index d687096c..9c6a6800 100644
--- a/src/org/bukkit/plugin/java/JavaPluginLoader.java
+++ b/src/org/bukkit/plugin/java/JavaPluginLoader.java
@@ -93,6 +93,12 @@ public final class JavaPluginLoader implements PluginLoader {
case PLAYER_CHAT:
trueListener.onPlayerChat((PlayerChatEvent)event);
break;
+ case PLAYER_MOVE:
+ trueListener.onPlayerMove((PlayerMoveEvent)event);
+ break;
+ case PLAYER_TELEPORT:
+ trueListener.onPlayerTeleport((PlayerMoveEvent)event);
+ break;
}
}
}