Change PlayerPositionUpdateEvent to MobPositionUpdateEvent.

This commit is contained in:
Major-
2015-02-28 12:42:16 +00:00
parent 603f76d2c2
commit f528987019
4 changed files with 62 additions and 31 deletions
+6 -2
View File
@@ -16,6 +16,7 @@ import org.apollo.game.model.area.SectorRepository;
import org.apollo.game.model.def.NpcDefinition;
import org.apollo.game.model.entity.attr.Attribute;
import org.apollo.game.model.entity.attr.AttributeMap;
import org.apollo.game.model.event.impl.MobPositionUpdateEvent;
import org.apollo.game.model.inv.Inventory;
import org.apollo.game.model.inv.Inventory.StackMode;
import org.apollo.game.model.inv.InventoryConstants;
@@ -402,7 +403,7 @@ public abstract class Mob extends Entity {
this.index = index;
}
}
/**
* Returns this mobs interacting index.
*
@@ -427,7 +428,10 @@ public abstract class Mob extends Entity {
*
* @param position The position.
*/
public void setPosition(Position position) {
public final void setPosition(Position position) {
World.getWorld().submit(new MobPositionUpdateEvent(this, position));
// Intentionally ignore the Event result - accidentally terminating this method would break the entire server.
Position old = this.position;
SectorRepository repository = World.getWorld().getSectorRepository();
Sector current = repository.fromPosition(old);
@@ -21,7 +21,6 @@ import org.apollo.game.model.World;
import org.apollo.game.model.area.Sector;
import org.apollo.game.model.event.impl.LoginEvent;
import org.apollo.game.model.event.impl.LogoutEvent;
import org.apollo.game.model.event.impl.PlayerPositionUpdateEvent;
import org.apollo.game.model.inter.InterfaceConstants;
import org.apollo.game.model.inter.InterfaceListener;
import org.apollo.game.model.inter.InterfaceSet;
@@ -718,12 +717,6 @@ public final class Player extends Mob {
sendMessage(message, false);
}
@Override
public void setPosition(Position position) {
super.setPosition(position);
World.getWorld().submit(new PlayerPositionUpdateEvent(this));
}
/**
* Sends a message to the player.
*
@@ -0,0 +1,56 @@
package org.apollo.game.model.event.impl;
import org.apollo.game.model.Position;
import org.apollo.game.model.entity.Mob;
import org.apollo.game.model.event.Event;
/**
* An {@link Event} created when a Mob's Position is being updated.
* <p>
* This Event intentionally ignores the result of execution - it should not be possible for a plugin to prevent this
* Event from happening, only to listen for it.
*
* @author Major
*/
public final class MobPositionUpdateEvent extends Event {
/**
* The Mob whose position is being updated.
*/
private final Mob mob;
/**
* The next Position of the Mob.
*/
private final Position next;
/**
* Creates the MobPositionUpdateEvent.
*
* @param mob The {@link Mob} whose Position is being updated.
* @param next The next {@link Position} of the Mob.
*/
public MobPositionUpdateEvent(Mob mob, Position next) {
this.mob = mob;
this.next = next;
}
/**
* Gets the {@link Mob} being moved.
*
* @return The Mob.
*/
public Mob getMob() {
return mob;
}
/**
* Gets the {@link Position} this {@link Mob} is being moved to.
*
* @return The Position.
*/
public Position getNext() {
return next;
}
}
@@ -1,22 +0,0 @@
package org.apollo.game.model.event.impl;
import org.apollo.game.model.entity.Player;
import org.apollo.game.model.event.PlayerEvent;
/**
* A {@link PlayerEvent} created when a Player's Position is being updated.
*
* @author Major
*/
public final class PlayerPositionUpdateEvent extends PlayerEvent {
/**
* Creates the PlayerPositionUpdateEvent.
*
* @param player The {@link Player} whose Position is being updated.
*/
public PlayerPositionUpdateEvent(Player player) {
super(player);
}
}