From f528987019cb02cb8a7d04df5996c590f7dfdb1a Mon Sep 17 00:00:00 2001 From: Major- Date: Sat, 28 Feb 2015 12:42:16 +0000 Subject: [PATCH] Change PlayerPositionUpdateEvent to MobPositionUpdateEvent. --- src/org/apollo/game/model/entity/Mob.java | 8 ++- src/org/apollo/game/model/entity/Player.java | 7 --- .../event/impl/MobPositionUpdateEvent.java | 56 +++++++++++++++++++ .../event/impl/PlayerPositionUpdateEvent.java | 22 -------- 4 files changed, 62 insertions(+), 31 deletions(-) create mode 100644 src/org/apollo/game/model/event/impl/MobPositionUpdateEvent.java delete mode 100644 src/org/apollo/game/model/event/impl/PlayerPositionUpdateEvent.java diff --git a/src/org/apollo/game/model/entity/Mob.java b/src/org/apollo/game/model/entity/Mob.java index 26d847fa..17c4f8ca 100644 --- a/src/org/apollo/game/model/entity/Mob.java +++ b/src/org/apollo/game/model/entity/Mob.java @@ -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); diff --git a/src/org/apollo/game/model/entity/Player.java b/src/org/apollo/game/model/entity/Player.java index d12c182e..578dfecd 100644 --- a/src/org/apollo/game/model/entity/Player.java +++ b/src/org/apollo/game/model/entity/Player.java @@ -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. * diff --git a/src/org/apollo/game/model/event/impl/MobPositionUpdateEvent.java b/src/org/apollo/game/model/event/impl/MobPositionUpdateEvent.java new file mode 100644 index 00000000..82f9a470 --- /dev/null +++ b/src/org/apollo/game/model/event/impl/MobPositionUpdateEvent.java @@ -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. + *

+ * 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; + } + +} \ No newline at end of file diff --git a/src/org/apollo/game/model/event/impl/PlayerPositionUpdateEvent.java b/src/org/apollo/game/model/event/impl/PlayerPositionUpdateEvent.java deleted file mode 100644 index 2681b00f..00000000 --- a/src/org/apollo/game/model/event/impl/PlayerPositionUpdateEvent.java +++ /dev/null @@ -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); - } - -} \ No newline at end of file