Support the item on object event.

This commit is contained in:
Major-
2014-03-08 09:32:12 +00:00
parent 1bb7b37aaa
commit 12dec81473
5 changed files with 138 additions and 0 deletions
@@ -0,0 +1,71 @@
package org.apollo.game.event.impl;
import org.apollo.game.event.Event;
/**
* An {@link Event} sent by the client when an item is used on an object.
*
* @author Major
*/
public final class ItemOnObjectEvent extends InventoryItemEvent {
/**
* The object id the item was used on.
*/
private final int objectId;
/**
* The x coordinate of the object.
*/
private final int x;
/**
* The y coordinate of the object.
*/
private final int y;
/**
* Creates an item on object event.
*
* @param interfaceId The interface id.
* @param id The item id.
* @param slot The slot the item is in.
* @param objectId The object id.
* @param x The x coordinate.
* @param y The y coordinate.
*/
public ItemOnObjectEvent(int interfaceId, int id, int slot, int objectId, int x, int y) {
super(0, interfaceId, id, slot);
this.objectId = objectId;
this.x = x;
this.y = y;
}
/**
* Gets the object id.
*
* @return The object id.
*/
public int getObjectId() {
return objectId;
}
/**
* Gets the x coordinate of the object.
*
* @return The x coordinate.
*/
public int getX() {
return x;
}
/**
* Gets the y coordinate of the object.
*
* @return The y coordinate.
*/
public int getY() {
return y;
}
}
@@ -0,0 +1,32 @@
package org.apollo.net.release.r317;
import org.apollo.game.event.impl.ItemOnObjectEvent;
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.GamePacketReader;
import org.apollo.net.release.EventDecoder;
/**
* An {@link EventDecoder} for the {@link ItemOnObjectEvent}.
*
* @author Major
*/
public final class ItemOnObjectEventDecoder extends EventDecoder<ItemOnObjectEvent> {
@Override
public ItemOnObjectEvent decode(GamePacket packet) {
GamePacketReader reader = new GamePacketReader(packet);
int interfaceId = (int) reader.getUnsigned(DataType.SHORT);
int objectId = (int) reader.getUnsigned(DataType.SHORT, DataOrder.LITTLE);
int y = (int) reader.getUnsigned(DataType.SHORT, DataOrder.LITTLE, DataTransformation.ADD);
int slot = (int) reader.getUnsigned(DataType.SHORT, DataOrder.LITTLE);
int x = (int) reader.getUnsigned(DataType.SHORT, DataOrder.LITTLE, DataTransformation.ADD);
int itemId = (int) reader.getUnsigned(DataType.SHORT);
return new ItemOnObjectEvent(interfaceId, itemId, slot, objectId, x, y);
}
}
@@ -39,6 +39,7 @@ import org.apollo.game.event.impl.UpdateSlottedItemsEvent;
import org.apollo.game.event.impl.UpdateWeightEvent;
import org.apollo.net.meta.PacketMetaDataGroup;
import org.apollo.net.release.Release;
import org.apollo.net.release.r377.ItemOnObjectEventDecoder;
/**
* A {@link Release} implementation for the 317 protocol.
@@ -142,6 +143,7 @@ public final class Release317 extends Release {
register(155, new SecondNpcActionEventDecoder());
register(17, new ThirdNpcActionEventDecoder());
register(236, new TakeTileItemEventDecoder());
register(192, new ItemOnObjectEventDecoder());
register(188, new AddFriendEventDecoder());
register(133, new AddIgnoreEventDecoder());
@@ -0,0 +1,32 @@
package org.apollo.net.release.r377;
import org.apollo.game.event.impl.ItemOnObjectEvent;
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.GamePacketReader;
import org.apollo.net.release.EventDecoder;
/**
* An {@link EventDecoder} for the {@link ItemOnObjectEvent}.
*
* @author Major
*/
public final class ItemOnObjectEventDecoder extends EventDecoder<ItemOnObjectEvent> {
@Override
public ItemOnObjectEvent decode(GamePacket packet) {
GamePacketReader reader = new GamePacketReader(packet);
int objectId = (int) reader.getUnsigned(DataType.SHORT, DataOrder.LITTLE);
int interfaceId = (int) reader.getUnsigned(DataType.SHORT, DataOrder.LITTLE);
int itemId = (int) reader.getUnsigned(DataType.SHORT, DataOrder.LITTLE);
int y = (int) reader.getUnsigned(DataType.SHORT, DataOrder.LITTLE);
int slot = (int) reader.getUnsigned(DataType.SHORT);
int x = (int) reader.getUnsigned(DataType.SHORT, DataOrder.LITTLE, DataTransformation.ADD);
return new ItemOnObjectEvent(interfaceId, itemId, slot, objectId, x, y);
}
}
@@ -139,6 +139,7 @@ public final class Release377 extends Release {
register(112, new SecondNpcActionEventDecoder());
register(13, new ThirdNpcActionEventDecoder());
register(71, new TakeTileItemEventDecoder());
register(152, new ItemOnObjectEventDecoder());
register(120, new AddFriendEventDecoder());
register(217, new AddIgnoreEventDecoder());