package com.asteria.net.message.impl;
import plugin.skills.prayer.Bone;
import plugin.skills.prayer.PrayerBoneBury;
import com.asteria.game.World;
import com.asteria.game.character.player.Player;
import com.asteria.game.character.player.content.FoodConsumable;
import com.asteria.game.character.player.content.PotionConsumable;
import com.asteria.game.item.Item;
import com.asteria.game.item.ItemDefinition;
import com.asteria.game.plugin.context.ItemFirstClickPlugin;
import com.asteria.net.ByteOrder;
import com.asteria.net.ValueType;
import com.asteria.net.message.InputMessageListener;
import com.asteria.net.message.MessageBuilder;
/**
* The message sent from the client when the player clicks an item.
*
* @author lare96 <http://github.com/lare96>
*/
public final class ItemActionMessage implements InputMessageListener {
@Override
public void handleMessage(Player player, int opcode, int size, MessageBuilder payload) {
if (player.isDisabled())
return;
switch (opcode) {
case 122:
firstClick(player, payload);
break;
}
}
/**
* Handles the first slot of an item action.
*
* @param player
* the player to handle this for.
* @param payload
* the payloadfer for reading the sent data.
*/
private void firstClick(Player player, MessageBuilder payload) {
int container = payload.getShort(true, ValueType.A, ByteOrder.LITTLE);
int slot = payload.getShort(false, ValueType.A);
int id = payload.getShort(false, ByteOrder.LITTLE);
if (slot < 0 || container < 0 || id < 0 || id > ItemDefinition.DEFINITIONS.length)
return;
player.setSkillAction(false);
player.getCombatBuilder().cooldown(true);
if (container == 3214) {
Item item = player.getInventory().get(slot);
if (item == null || item.getId() != id) {
return;
}
if (FoodConsumable.consume(player, item, slot)) {
return;
}
if (PotionConsumable.consume(player, item, slot)) {
return;
}
Bone bone = Bone.getBone(id);
if (bone != null) {
PrayerBoneBury buryAction = new PrayerBoneBury(player, bone);
buryAction.start();
return;
}
World.getPlugins().execute(player, ItemFirstClickPlugin.class, new ItemFirstClickPlugin(slot, item));
}
}
}