RuneHive-Tarnish
Neural OSRS Enhancement Framework
Loading...
Searching...
No Matches
ExaminePacketListener.java
1package com.osroyale.net.packet.in;
2
3import com.osroyale.game.world.entity.mob.player.Player;
4import com.osroyale.game.world.entity.mob.player.PlayerRight;
5import com.osroyale.game.world.items.Item;
6import com.osroyale.game.world.items.containers.inventory.Inventory;
7import com.osroyale.game.world.items.containers.pricechecker.PriceType;
8import com.osroyale.net.packet.GamePacket;
9import com.osroyale.net.packet.PacketListener;
10import com.osroyale.net.packet.PacketListenerMeta;
11import com.osroyale.net.packet.out.SendMessage;
12import com.osroyale.util.MessageColor;
13import com.osroyale.util.Utility;
14import org.jire.tarnishps.defs.ItemDef;
15import org.jire.tarnishps.defs.ItemDefLoader;
16import org.jire.tarnishps.event.item.ItemExamineEvent;
17import org.jire.tarnishps.event.npc.NpcExamineEvent;
18import org.jire.tarnishps.event.object.ObjectExamineEvent;
19
54
55public class ExaminePacketListener implements PacketListener {
56
57 private static final int INTERFACE = 0;
58 private static final int NPC = 1;
59 private static final int ITEM = 2;
60 private static final int OBJECT = 3;
61
62 @Override
63 public void handlePacket(Player player, GamePacket packet) {
64 final int type = packet.readByte(false);
65 switch (type) {
66 case INTERFACE: {
67 handleInterfaceExamine(player, packet);
68 break;
69 }
70 case NPC: {
71 int npcId = packet.readShort(false);
72 player.getEvents().interact(player, new NpcExamineEvent(npcId));
73 break;
74 }
75 case ITEM: {
76 int itemId = packet.readShort(false);
77 player.getEvents().interact(player, new ItemExamineEvent(itemId));
78 break;
79 }
80 case OBJECT: {
81 int objectId = packet.readShort(false);
82 player.getEvents().interact(player, new ObjectExamineEvent(objectId));
83 break;
84 }
85 }
86 }
87
88 private static void handleInterfaceExamine(Player player, GamePacket packet) {
89 int slot = packet.readShort();
90 int interfaceId = packet.readShort();
91 int itemId = packet.readShort();
92
93 if (PlayerRight.isDeveloper(player)) {
94 player.send(new SendMessage("[Examine] - slot: " + slot + " -- interfaceId: " + interfaceId + " -- itemId: " + itemId, MessageColor.DEVELOPER));
95 }
96
97 if (slot == -1) {
98 player.settings.clientWidth = interfaceId;
99 player.settings.clientHeight = itemId;
100 return;
101 }
102
103 switch (interfaceId) {
104 case Inventory.INVENTORY_DISPLAY_ID: {
105 Item item = player.inventory.get(slot);
106 if (item == null || item.getId() != itemId) return;
107 final ItemDef itemDef = ItemDefLoader.map.get(itemId);
108 if (itemDef != null) {
109 String examine = itemDef.getExamine();
110 if (!"null".equals(examine))
111 player.send(new SendMessage(examine));
112 }
113 if (item.isTradeable()) {
114 String message = "";
115 message += "Item: <col=A52929>" + item.getName() + "</col> ";
116 message += "Value: <col=A52929>" + Utility.formatDigits(item.getValue(PriceType.VALUE)) + " (" + Utility.formatDigits(item.getValue(PriceType.VALUE) * item.getAmount()) + ")</col> ";
117 message += "High alch: <col=A52929>" + Utility.formatDigits(item.getValue(PriceType.HIGH_ALCH_VALUE)) + "</col> ";
118 player.send(new SendMessage(message));
119 }
120 break;
121 }
122 case 26816: {
123 if (!player.attributes.has("DROP_SIMULATOR_SORTED_LIST")) return;
124 Item[] items = player.attributes.get("DROP_SIMULATOR_SORTED_LIST");
125 if (slot < 0 || slot >= items.length) return;
126 Item item = items[slot];
127 if (item.isTradeable()) {
128 String message = "";
129 message += "Item: <col=A52929>" + item.getName() + "</col> ";
130 message += "Value: <col=A52929>" + Utility.formatDigits(item.getValue(PriceType.VALUE)) + " (" + Utility.formatDigits(item.getValue(PriceType.VALUE) * item.getAmount()) + ")</col> ";
131 message += "High alch: <col=A52929>" + Utility.formatDigits(item.getValue(PriceType.HIGH_ALCH_VALUE));
132 player.send(new SendMessage(message));
133 }
134 break;
135 }
136
137 }
138 }
139
140}
void handlePacket(Player player, GamePacket packet)