From 8c6d6bf189f5d9ec5c70292ace876c30ff8c9c6f Mon Sep 17 00:00:00 2001 From: Major- Date: Sat, 15 Feb 2014 15:15:25 +0000 Subject: [PATCH] Split SetTileItemEvent into three separate events. --- .../game/event/impl/AddTileItemEvent.java | 70 +++++++++ .../game/event/impl/RemoveTileItemEvent.java | 60 ++++++++ .../game/event/impl/SetTileItemEvent.java | 145 ------------------ .../game/event/impl/UpdateTileItemEvent.java | 91 +++++++++++ .../release/r317/AddTileItemEventEncoder.java | 27 ++++ .../apollo/net/release/r317/Release317.java | 12 +- .../r317/RemoveTileItemEventEncoder.java | 25 +++ .../release/r317/SetTileItemEventEncoder.java | 43 ------ .../r317/UpdateTileItemEventEncoder.java | 26 ++++ .../release/r377/AddTileItemEventEncoder.java | 26 ++++ .../release/r377/PositionEventEncoder.java | 2 +- .../apollo/net/release/r377/Release377.java | 12 +- .../r377/RemoveTileItemEventEncoder.java | 25 +++ .../release/r377/SetTileItemEventEncoder.java | 42 ----- .../r377/UpdateTileItemEventEncoder.java | 26 ++++ 15 files changed, 395 insertions(+), 237 deletions(-) create mode 100644 src/org/apollo/game/event/impl/AddTileItemEvent.java create mode 100644 src/org/apollo/game/event/impl/RemoveTileItemEvent.java delete mode 100644 src/org/apollo/game/event/impl/SetTileItemEvent.java create mode 100644 src/org/apollo/game/event/impl/UpdateTileItemEvent.java create mode 100644 src/org/apollo/net/release/r317/AddTileItemEventEncoder.java create mode 100644 src/org/apollo/net/release/r317/RemoveTileItemEventEncoder.java delete mode 100644 src/org/apollo/net/release/r317/SetTileItemEventEncoder.java create mode 100644 src/org/apollo/net/release/r317/UpdateTileItemEventEncoder.java create mode 100644 src/org/apollo/net/release/r377/AddTileItemEventEncoder.java create mode 100644 src/org/apollo/net/release/r377/RemoveTileItemEventEncoder.java delete mode 100644 src/org/apollo/net/release/r377/SetTileItemEventEncoder.java create mode 100644 src/org/apollo/net/release/r377/UpdateTileItemEventEncoder.java diff --git a/src/org/apollo/game/event/impl/AddTileItemEvent.java b/src/org/apollo/game/event/impl/AddTileItemEvent.java new file mode 100644 index 00000000..67fa14fb --- /dev/null +++ b/src/org/apollo/game/event/impl/AddTileItemEvent.java @@ -0,0 +1,70 @@ +package org.apollo.game.event.impl; + +import org.apollo.game.event.Event; +import org.apollo.game.model.Item; + +/** + * An {@link Event} sent to the client that adds an item to a tile. + * + * @author Major + */ +public final class AddTileItemEvent extends Event { + + /** + * The item to add to the tile. + */ + private final Item item; + + /** + * The position offset + */ + private final int positionOffset; + + /** + * Creates am add tile item event. + * + * @param item The item to add to the tile. + */ + public AddTileItemEvent(Item item) { + this(item, 0); + } + + /** + * Creates am add tile item event. + * + * @param item The item to add to the tile. + * @param positionOffset The offset from the 'base' position. + */ + public AddTileItemEvent(Item item, int positionOffset) { + this.item = item; + this.positionOffset = positionOffset; + } + + /** + * Gets the id of the item. + * + * @return The id. + */ + public int getId() { + return item.getId(); + } + + /** + * Gets the amount of the item. + * + * @return The amount. + */ + public int getAmount() { + return item.getAmount(); + } + + /** + * Gets the offset from the 'base' position. + * + * @return The offset. + */ + public int getPositionOffset() { + return positionOffset; + } + +} \ No newline at end of file diff --git a/src/org/apollo/game/event/impl/RemoveTileItemEvent.java b/src/org/apollo/game/event/impl/RemoveTileItemEvent.java new file mode 100644 index 00000000..0966689a --- /dev/null +++ b/src/org/apollo/game/event/impl/RemoveTileItemEvent.java @@ -0,0 +1,60 @@ +package org.apollo.game.event.impl; + +import org.apollo.game.event.Event; + +/** + * An {@link Event} sent to the client to instruct it to remove an item from a tile. + * + * @author Major + */ +public final class RemoveTileItemEvent extends Event { + + /** + * The item. + */ + private final int id; + + /** + * The offset from the client's base position. + */ + private final int positionOffset; + + /** + * Creates a remove tile item event. + * + * @param id The id of the item to remove. + */ + public RemoveTileItemEvent(int id) { + this(id, 0); + } + + /** + * Creates a remove tile item event. + * + * @param id The id of the item to remove. + * @param positionOffset The offset from the 'base' position. + */ + public RemoveTileItemEvent(int id, int positionOffset) { + this.id = id; + this.positionOffset = positionOffset; + } + + /** + * Gets the id of the item to remove. + * + * @return The id. + */ + public int getId() { + return id; + } + + /** + * Gets the offset from the 'base' position. + * + * @return The offset. + */ + public int getPositionOffset() { + return positionOffset; + } + +} \ No newline at end of file diff --git a/src/org/apollo/game/event/impl/SetTileItemEvent.java b/src/org/apollo/game/event/impl/SetTileItemEvent.java deleted file mode 100644 index 03e87ed5..00000000 --- a/src/org/apollo/game/event/impl/SetTileItemEvent.java +++ /dev/null @@ -1,145 +0,0 @@ -package org.apollo.game.event.impl; - -import org.apollo.game.event.Event; -import org.apollo.game.model.Item; -import org.apollo.game.model.def.ItemDefinition; - -/** - * An {@link Event} sent to tell the client to display an item on a tile. - * - * @author Major - */ -public final class SetTileItemEvent extends Event { - - /** - * The {@link Item}. - */ - private final Item item; - - /** - * The offset from the client's base position. - */ - private final int positionOffset; - - /** - * The previous amount of the item (if it is being updated). - */ - private final int previousAmount; - - /** - * Indicates whether the item is stackable. - */ - private final boolean stackable; - - /** - * Indicates whether an existing item is being updated. - */ - private final boolean updating; - - /** - * Creates a new event that will remove the item with the specified id from the tile. - * - * @param id The id of the item. - */ - public SetTileItemEvent(int id) { - this(id, 0, ItemDefinition.lookup(id).isStackable(), false, 0, 0); - } - - /** - * Creates a new event that will add an item with the specified id and amount to the tile. - * - * @param id The id of the item. - * @param amount The amount of the item. - */ - public SetTileItemEvent(int id, int amount) { - this(id, amount, ItemDefinition.lookup(id).isStackable(), false, 0, 0); - } - - /** - * Creates a new event that updates the previous amount of the item. - * - * @param id The id of the item. - * @param amount The amount of the item. - * @param previousAmount The previous amount of the item. - */ - public SetTileItemEvent(int id, int amount, int previousAmount) { - this(id, amount, true, true, previousAmount, 0); - } - - /** - * Creates a new set tile item event. - * - * @param id The id of the item. - * @param amount The new amount of the item. - * @param stackable Whether the item is stackable or not. - * @param positionOffset The offset from the client's base position. - * @param updating If the item is being updated or not. - * @param previousAmount The previous amount of the item. - */ - public SetTileItemEvent(int id, int amount, boolean stackable, boolean updating, int previousAmount, - int positionOffset) { - if (id < 0 || amount < 0 || previousAmount < 0) { - throw new IllegalArgumentException("The id, amount, and previous amount must be 0 or greater."); - } - this.item = new Item(id, amount); - this.stackable = stackable; - this.updating = updating; - this.previousAmount = previousAmount; - this.positionOffset = positionOffset; - } - - /** - * Gets the amount of the item. - * - * @return The amount. - */ - public int getAmount() { - return item.getAmount(); - } - - /** - * Gets the id of the item. - * - * @return The item. - */ - public int getId() { - return item.getId(); - } - - /** - * Gets the offset from the client's base position. - * - * @return The offset. - */ - public int getPositionOffset() { - return positionOffset; - } - - /** - * Gets the previous amount of the item. - * - * @return The previous amount. - */ - public int getPreviousAmount() { - return previousAmount; - } - - /** - * Indicates whether this item is stackable or not. - * - * @return {@code true} if the item is stackable, otherwise {@code false}. - */ - public boolean isStackable() { - return stackable; - } - - /** - * Indicates whether this item is being updated or not. - * - * @return {@code true} if the item is being updated, otherwise {@code false}. - */ - public boolean isUpdating() { - return updating; - } - -} \ No newline at end of file diff --git a/src/org/apollo/game/event/impl/UpdateTileItemEvent.java b/src/org/apollo/game/event/impl/UpdateTileItemEvent.java new file mode 100644 index 00000000..9634b301 --- /dev/null +++ b/src/org/apollo/game/event/impl/UpdateTileItemEvent.java @@ -0,0 +1,91 @@ +package org.apollo.game.event.impl; + +import org.apollo.game.event.Event; +import org.apollo.game.model.Item; + +/** + * An {@link Event} sent to tell the client to update the amount of an item display on a tile. + * + * @author Major + */ +public final class UpdateTileItemEvent extends Event { + + /** + * The {@link Item}. + */ + private final Item item; + + /** + * The offset from the client's base position. + */ + private final int positionOffset; + + /** + * The previous amount of the item (if it is being updated). + */ + private final int previousAmount; + + /** + * Creates a new event that updates the previous amount of the item. + * + * @param id The id of the item. + * @param amount The amount of the item. + * @param previousAmount The previous amount of the item. + */ + public UpdateTileItemEvent(Item item, int previousAmount) { + this(item, previousAmount, 0); + } + + /** + * Creates a new set tile item event. + * + * @param id The id of the item. + * @param amount The new amount of the item. + * @param stackable Whether the item is stackable or not. + * @param positionOffset The offset from the client's base position. + * @param updating If the item is being updated or not. + * @param previousAmount The previous amount of the item. + */ + public UpdateTileItemEvent(Item item, int previousAmount, int positionOffset) { + this.item = item; + this.previousAmount = previousAmount; + this.positionOffset = positionOffset; + } + + /** + * Gets the amount of the item. + * + * @return The amount. + */ + public int getAmount() { + return item.getAmount(); + } + + /** + * Gets the id of the item. + * + * @return The item. + */ + public int getId() { + return item.getId(); + } + + /** + * Gets the offset from the client's base position. + * + * @return The offset. + */ + public int getPositionOffset() { + return positionOffset; + } + + /** + * Gets the previous amount of the item. + * + * @return The previous amount. + */ + public int getPreviousAmount() { + return previousAmount; + } + +} \ No newline at end of file diff --git a/src/org/apollo/net/release/r317/AddTileItemEventEncoder.java b/src/org/apollo/net/release/r317/AddTileItemEventEncoder.java new file mode 100644 index 00000000..f7d96521 --- /dev/null +++ b/src/org/apollo/net/release/r317/AddTileItemEventEncoder.java @@ -0,0 +1,27 @@ +package org.apollo.net.release.r317; + +import org.apollo.game.event.impl.AddTileItemEvent; +import org.apollo.net.codec.game.DataOrder; +import org.apollo.net.codec.game.DataTransformation; +import org.apollo.net.codec.game.DataType; +import org.apollo.net.codec.game.GamePacket; +import org.apollo.net.codec.game.GamePacketBuilder; +import org.apollo.net.release.EventEncoder; + +/** + * An {@link EventEncoder} for the {@link AddTileItemEvent}. + * + * @author Major + */ +public final class AddTileItemEventEncoder extends EventEncoder { + + @Override + public GamePacket encode(AddTileItemEvent event) { + GamePacketBuilder builder = new GamePacketBuilder(44); + builder.put(DataType.SHORT, DataOrder.LITTLE, DataTransformation.ADD, event.getId()); + builder.put(DataType.SHORT, event.getAmount()); + builder.put(DataType.BYTE, event.getPositionOffset()); + return builder.toGamePacket(); + } + +} \ No newline at end of file diff --git a/src/org/apollo/net/release/r317/Release317.java b/src/org/apollo/net/release/r317/Release317.java index ba3f4b9a..bac1c21c 100644 --- a/src/org/apollo/net/release/r317/Release317.java +++ b/src/org/apollo/net/release/r317/Release317.java @@ -1,5 +1,6 @@ package org.apollo.net.release.r317; +import org.apollo.game.event.impl.AddTileItemEvent; import org.apollo.game.event.impl.CloseInterfaceEvent; import org.apollo.game.event.impl.ConfigEvent; import org.apollo.game.event.impl.DisplayTabInterfaceEvent; @@ -17,9 +18,10 @@ import org.apollo.game.event.impl.PlayerSynchronizationEvent; import org.apollo.game.event.impl.PositionEvent; import org.apollo.game.event.impl.PrivacyOptionEvent; import org.apollo.game.event.impl.RegionChangeEvent; +import org.apollo.game.event.impl.RemoveTileItemEvent; import org.apollo.game.event.impl.SendFriendEvent; import org.apollo.game.event.impl.ServerMessageEvent; -import org.apollo.game.event.impl.SetTileItemEvent; +import org.apollo.game.event.impl.UpdateTileItemEvent; import org.apollo.game.event.impl.SetWidgetItemModelEvent; import org.apollo.game.event.impl.SetWidgetModelAnimationEvent; import org.apollo.game.event.impl.SetWidgetNpcModelEvent; @@ -115,6 +117,8 @@ public final class Release317 extends Release { register(185, new ButtonEventDecoder()); register(130, new ClosedInterfaceEventDecoder()); register(208, new EnteredAmountEventDecoder()); + register(40, new DialogueContinueEventDecoder()); + register(53, new ItemOnItemEventDecoder()); register(237, new MagicOnItemEventDecoder()); @@ -134,7 +138,6 @@ public final class Release317 extends Release { register(155, new SecondNpcActionEventDecoder()); register(17, new ThirdNpcActionEventDecoder()); register(236, new TakeTileItemEventDecoder()); - register(40, new DialogueContinueEventDecoder()); register(188, new AddFriendEventDecoder()); register(133, new AddIgnoreEventDecoder()); @@ -165,12 +168,15 @@ public final class Release317 extends Release { register(SetWidgetModelAnimationEvent.class, new SetWidgetModelAnimationEventEncoder()); register(ConfigEvent.class, new ConfigEventEncoder()); register(DisplayTabInterfaceEvent.class, new DisplayTabInterfaceEventEncoder()); - register(SetTileItemEvent.class, new SetTileItemEventEncoder()); register(PositionEvent.class, new PositionEventEncoder()); register(UpdateRunEnergyEvent.class, new UpdateRunEnergyEventEncoder()); register(PrivacyOptionEvent.class, new PrivacyOptionEventEncoder()); register(OpenDialogueInterfaceEvent.class, new OpenDialogueInterfaceEventEncoder()); + register(AddTileItemEvent.class, new AddTileItemEventEncoder()); + register(UpdateTileItemEvent.class, new UpdateTileItemEventEncoder()); + register(RemoveTileItemEvent.class, new RemoveTileItemEventEncoder()); + register(ForwardPrivateMessageEvent.class, new ForwardPrivateMessageEventEncoder()); register(FriendServerStatusEvent.class, new FriendServerStatusEventEncoder()); register(IgnoreListEvent.class, new IgnoreListEventEncoder()); diff --git a/src/org/apollo/net/release/r317/RemoveTileItemEventEncoder.java b/src/org/apollo/net/release/r317/RemoveTileItemEventEncoder.java new file mode 100644 index 00000000..1ef41f1d --- /dev/null +++ b/src/org/apollo/net/release/r317/RemoveTileItemEventEncoder.java @@ -0,0 +1,25 @@ +package org.apollo.net.release.r317; + +import org.apollo.game.event.impl.RemoveTileItemEvent; +import org.apollo.net.codec.game.DataTransformation; +import org.apollo.net.codec.game.DataType; +import org.apollo.net.codec.game.GamePacket; +import org.apollo.net.codec.game.GamePacketBuilder; +import org.apollo.net.release.EventEncoder; + +/** + * An {@link EventEncoder} for the {@link RemoveTileItemEvent}. + * + * @author Major + */ +public final class RemoveTileItemEventEncoder extends EventEncoder { + + @Override + public GamePacket encode(RemoveTileItemEvent event) { + GamePacketBuilder builder = new GamePacketBuilder(156); + builder.put(DataType.BYTE, DataTransformation.ADD, event.getPositionOffset()); + builder.put(DataType.SHORT, event.getId()); + return builder.toGamePacket(); + } + +} \ No newline at end of file diff --git a/src/org/apollo/net/release/r317/SetTileItemEventEncoder.java b/src/org/apollo/net/release/r317/SetTileItemEventEncoder.java deleted file mode 100644 index e88f372c..00000000 --- a/src/org/apollo/net/release/r317/SetTileItemEventEncoder.java +++ /dev/null @@ -1,43 +0,0 @@ -package org.apollo.net.release.r317; - -import org.apollo.game.event.impl.SetTileItemEvent; -import org.apollo.net.codec.game.DataOrder; -import org.apollo.net.codec.game.DataTransformation; -import org.apollo.net.codec.game.DataType; -import org.apollo.net.codec.game.GamePacket; -import org.apollo.net.codec.game.GamePacketBuilder; -import org.apollo.net.release.EventEncoder; - -/** - * An {@link EventEncoder} for the {@link SetTileItemEvent}. - * - * @author Major - */ -public class SetTileItemEventEncoder extends EventEncoder { - - @Override - public GamePacket encode(SetTileItemEvent event) { - GamePacketBuilder builder = null; - if (event.getAmount() == 0) { // remove the item. - builder = new GamePacketBuilder(156); - - builder.put(DataType.BYTE, DataTransformation.ADD, event.getPositionOffset()); - builder.put(DataType.SHORT, event.getId()); - } else if (!event.isUpdating()) { // sending a new item - builder = new GamePacketBuilder(44); - - builder.put(DataType.SHORT, DataOrder.LITTLE, DataTransformation.ADD, event.getId()); - builder.put(DataType.SHORT, event.getAmount()); - builder.put(DataType.BYTE, event.getPositionOffset()); - } else { // updating an already displayed item - builder = new GamePacketBuilder(84); - - builder.put(DataType.BYTE, event.getPositionOffset()); - builder.put(DataType.SHORT, event.getId()); - builder.put(DataType.SHORT, event.getPreviousAmount()); - builder.put(DataType.SHORT, event.getAmount()); - } - return builder.toGamePacket(); - } - -} \ No newline at end of file diff --git a/src/org/apollo/net/release/r317/UpdateTileItemEventEncoder.java b/src/org/apollo/net/release/r317/UpdateTileItemEventEncoder.java new file mode 100644 index 00000000..257ba7d9 --- /dev/null +++ b/src/org/apollo/net/release/r317/UpdateTileItemEventEncoder.java @@ -0,0 +1,26 @@ +package org.apollo.net.release.r317; + +import org.apollo.game.event.impl.UpdateTileItemEvent; +import org.apollo.net.codec.game.DataType; +import org.apollo.net.codec.game.GamePacket; +import org.apollo.net.codec.game.GamePacketBuilder; +import org.apollo.net.release.EventEncoder; + +/** + * An {@link EventEncoder} for the {@link UpdateTileItemEvent}. + * + * @author Major + */ +public final class UpdateTileItemEventEncoder extends EventEncoder { + + @Override + public GamePacket encode(UpdateTileItemEvent event) { + GamePacketBuilder builder = new GamePacketBuilder(84); + builder.put(DataType.BYTE, event.getPositionOffset()); + builder.put(DataType.SHORT, event.getId()); + builder.put(DataType.SHORT, event.getPreviousAmount()); + builder.put(DataType.SHORT, event.getAmount()); + return builder.toGamePacket(); + } + +} \ No newline at end of file diff --git a/src/org/apollo/net/release/r377/AddTileItemEventEncoder.java b/src/org/apollo/net/release/r377/AddTileItemEventEncoder.java new file mode 100644 index 00000000..eb965d18 --- /dev/null +++ b/src/org/apollo/net/release/r377/AddTileItemEventEncoder.java @@ -0,0 +1,26 @@ +package org.apollo.net.release.r377; + +import org.apollo.game.event.impl.AddTileItemEvent; +import org.apollo.net.codec.game.DataTransformation; +import org.apollo.net.codec.game.DataType; +import org.apollo.net.codec.game.GamePacket; +import org.apollo.net.codec.game.GamePacketBuilder; +import org.apollo.net.release.EventEncoder; + +/** + * An {@link EventEncoder} for the {@link AddTileItemEvent}. + * + * @author Major + */ +public final class AddTileItemEventEncoder extends EventEncoder { + + @Override + public GamePacket encode(AddTileItemEvent event) { + GamePacketBuilder builder = new GamePacketBuilder(107); + builder.put(DataType.SHORT, event.getId()); + builder.put(DataType.BYTE, DataTransformation.NEGATE, event.getPositionOffset()); + builder.put(DataType.SHORT, DataTransformation.ADD, event.getAmount()); + return builder.toGamePacket(); + } + +} \ No newline at end of file diff --git a/src/org/apollo/net/release/r377/PositionEventEncoder.java b/src/org/apollo/net/release/r377/PositionEventEncoder.java index 2c987a59..f1e9b03f 100644 --- a/src/org/apollo/net/release/r377/PositionEventEncoder.java +++ b/src/org/apollo/net/release/r377/PositionEventEncoder.java @@ -14,7 +14,7 @@ import org.apollo.net.release.EventEncoder; * @author Chris Fletcher * @author Major */ -final class PositionEventEncoder extends EventEncoder { +public final class PositionEventEncoder extends EventEncoder { @Override public GamePacket encode(PositionEvent event) { diff --git a/src/org/apollo/net/release/r377/Release377.java b/src/org/apollo/net/release/r377/Release377.java index 538fea13..908d462e 100644 --- a/src/org/apollo/net/release/r377/Release377.java +++ b/src/org/apollo/net/release/r377/Release377.java @@ -1,5 +1,6 @@ package org.apollo.net.release.r377; +import org.apollo.game.event.impl.AddTileItemEvent; import org.apollo.game.event.impl.CloseInterfaceEvent; import org.apollo.game.event.impl.ConfigEvent; import org.apollo.game.event.impl.DisplayTabInterfaceEvent; @@ -17,9 +18,10 @@ import org.apollo.game.event.impl.PlayerSynchronizationEvent; import org.apollo.game.event.impl.PositionEvent; import org.apollo.game.event.impl.PrivacyOptionEvent; import org.apollo.game.event.impl.RegionChangeEvent; +import org.apollo.game.event.impl.RemoveTileItemEvent; import org.apollo.game.event.impl.SendFriendEvent; import org.apollo.game.event.impl.ServerMessageEvent; -import org.apollo.game.event.impl.SetTileItemEvent; +import org.apollo.game.event.impl.UpdateTileItemEvent; import org.apollo.game.event.impl.SetWidgetItemModelEvent; import org.apollo.game.event.impl.SetWidgetModelAnimationEvent; import org.apollo.game.event.impl.SetWidgetNpcModelEvent; @@ -115,6 +117,8 @@ public final class Release377 extends Release { register(79, new ButtonEventDecoder()); register(110, new ClosedInterfaceEventDecoder()); register(75, new EnteredAmountEventDecoder()); + register(226, new DialogueContinueEventDecoder()); + register(1, new ItemOnItemEventDecoder()); register(36, new MagicOnItemEventDecoder()); @@ -131,7 +135,6 @@ public final class Release377 extends Release { register(112, new SecondNpcActionEventDecoder()); register(13, new ThirdNpcActionEventDecoder()); register(71, new TakeTileItemEventDecoder()); - register(226, new DialogueContinueEventDecoder()); register(120, new AddFriendEventDecoder()); register(217, new AddIgnoreEventDecoder()); @@ -162,12 +165,15 @@ public final class Release377 extends Release { register(SetWidgetModelAnimationEvent.class, new SetWidgetModelAnimationEventEncoder()); register(ConfigEvent.class, new ConfigEventEncoder()); register(DisplayTabInterfaceEvent.class, new DisplayTabInterfaceEventEncoder()); - register(SetTileItemEvent.class, new SetTileItemEventEncoder()); register(PositionEvent.class, new PositionEventEncoder()); register(UpdateRunEnergyEvent.class, new UpdateRunEnergyEventEncoder()); register(PrivacyOptionEvent.class, new PrivacyOptionEventEncoder()); register(OpenDialogueInterfaceEvent.class, new OpenDialogueInterfaceEventEncoder()); + register(AddTileItemEvent.class, new AddTileItemEventEncoder()); + register(UpdateTileItemEvent.class, new UpdateTileItemEventEncoder()); + register(RemoveTileItemEvent.class, new RemoveTileItemEventEncoder()); + register(ForwardPrivateMessageEvent.class, new ForwardPrivateMessageEventEncoder()); register(FriendServerStatusEvent.class, new FriendServerStatusEventEncoder()); register(IgnoreListEvent.class, new IgnoreListEventEncoder()); diff --git a/src/org/apollo/net/release/r377/RemoveTileItemEventEncoder.java b/src/org/apollo/net/release/r377/RemoveTileItemEventEncoder.java new file mode 100644 index 00000000..de009b8a --- /dev/null +++ b/src/org/apollo/net/release/r377/RemoveTileItemEventEncoder.java @@ -0,0 +1,25 @@ +package org.apollo.net.release.r377; + +import org.apollo.game.event.impl.RemoveTileItemEvent; +import org.apollo.net.codec.game.DataTransformation; +import org.apollo.net.codec.game.DataType; +import org.apollo.net.codec.game.GamePacket; +import org.apollo.net.codec.game.GamePacketBuilder; +import org.apollo.net.release.EventEncoder; + +/** + * An {@link EventEncoder} for the {@link RemoveTileItemEvent}. + * + * @author Major + */ +public final class RemoveTileItemEventEncoder extends EventEncoder { + + @Override + public GamePacket encode(RemoveTileItemEvent event) { + GamePacketBuilder builder = new GamePacketBuilder(208); + builder.put(DataType.SHORT, DataTransformation.ADD, event.getId()); + builder.put(DataType.BYTE, DataTransformation.ADD, event.getPositionOffset()); + return builder.toGamePacket(); + } + +} \ No newline at end of file diff --git a/src/org/apollo/net/release/r377/SetTileItemEventEncoder.java b/src/org/apollo/net/release/r377/SetTileItemEventEncoder.java deleted file mode 100644 index 06c010e5..00000000 --- a/src/org/apollo/net/release/r377/SetTileItemEventEncoder.java +++ /dev/null @@ -1,42 +0,0 @@ -package org.apollo.net.release.r377; - -import org.apollo.game.event.impl.SetTileItemEvent; -import org.apollo.net.codec.game.DataTransformation; -import org.apollo.net.codec.game.DataType; -import org.apollo.net.codec.game.GamePacket; -import org.apollo.net.codec.game.GamePacketBuilder; -import org.apollo.net.release.EventEncoder; - -/** - * An {@link EventEncoder} for the {@link SetTileItemEvent}. - * - * @author Major - */ -public class SetTileItemEventEncoder extends EventEncoder { - - @Override - public GamePacket encode(SetTileItemEvent event) { - GamePacketBuilder builder = null; - if (event.getAmount() == 0) { // remove the item. - builder = new GamePacketBuilder(208); - - builder.put(DataType.SHORT, DataTransformation.ADD, event.getId()); - builder.put(DataType.BYTE, DataTransformation.ADD, event.getPositionOffset()); - } else if (!event.isUpdating()) { // sending a new item - builder = new GamePacketBuilder(107); - - builder.put(DataType.SHORT, event.getId()); - builder.put(DataType.BYTE, DataTransformation.NEGATE, event.getPositionOffset()); - builder.put(DataType.SHORT, DataTransformation.ADD, event.getAmount()); - } else { // updating an already displayed item - builder = new GamePacketBuilder(121); - - builder.put(DataType.BYTE, event.getPositionOffset()); - builder.put(DataType.SHORT, event.getId()); - builder.put(DataType.SHORT, event.getPreviousAmount()); - builder.put(DataType.SHORT, event.getAmount()); - } - return builder.toGamePacket(); - } - -} \ No newline at end of file diff --git a/src/org/apollo/net/release/r377/UpdateTileItemEventEncoder.java b/src/org/apollo/net/release/r377/UpdateTileItemEventEncoder.java new file mode 100644 index 00000000..f0f62ca5 --- /dev/null +++ b/src/org/apollo/net/release/r377/UpdateTileItemEventEncoder.java @@ -0,0 +1,26 @@ +package org.apollo.net.release.r377; + +import org.apollo.game.event.impl.UpdateTileItemEvent; +import org.apollo.net.codec.game.DataType; +import org.apollo.net.codec.game.GamePacket; +import org.apollo.net.codec.game.GamePacketBuilder; +import org.apollo.net.release.EventEncoder; + +/** + * An {@link EventEncoder} for the {@link UpdateTileItemEvent}. + * + * @author Major + */ +public final class UpdateTileItemEventEncoder extends EventEncoder { + + @Override + public GamePacket encode(UpdateTileItemEvent event) { + GamePacketBuilder builder = new GamePacketBuilder(121); + builder.put(DataType.BYTE, event.getPositionOffset()); + builder.put(DataType.SHORT, event.getId()); + builder.put(DataType.SHORT, event.getPreviousAmount()); + builder.put(DataType.SHORT, event.getAmount()); + return builder.toGamePacket(); + } + +} \ No newline at end of file