RuneHive-Tarnish
Neural OSRS Enhancement Framework
Loading...
Searching...
No Matches
ItemContainerActionPacketListener.java
1package com.osroyale.net.packet.in;
2
3import com.osroyale.content.event.EventDispatcher;
4import com.osroyale.content.event.impl.ItemContainerInteractionEvent;
5import com.osroyale.game.event.impl.ItemContainerContextMenuEvent;
6import com.osroyale.game.plugin.PluginManager;
7import com.osroyale.game.world.entity.mob.player.Player;
8import com.osroyale.net.codec.ByteModification;
9import com.osroyale.net.codec.ByteOrder;
10import com.osroyale.net.packet.GamePacket;
11import com.osroyale.net.packet.PacketListener;
12import com.osroyale.net.packet.PacketListenerMeta;
13import com.osroyale.net.packet.out.SendInputAmount;
14import plugin.click.object.DepositBoxPlugin;
15
22@PacketListenerMeta({140, 141, 145, 117, 43, 129, 135, 208})
59
61
62 private static final int FIRST_ITEM_ACTION_OPCODE = 145;
63 private static final int SECOND_ITEM_ACTION_OPCODE = 117;
64 private static final int THIRD_ITEM_ACTION_OPCODE = 43;
65 private static final int FOURTH_ITEM_ACTION_OPCODE = 129;
66 private static final int FIFTH_ITEM_ACTION_OPCODE = 135;
67 private static final int SIXTH_ITEM_ACTION_OPCODE = 208;
68 private static final int ALL_BUT_ONE_ACTION_OPCODE = 140;
69 private static final int MODIFIABLE_X_ACTION_OPCODE = 141;
70
71 @Override
72 public void handlePacket(Player player, GamePacket packet) {
73 switch (packet.getOpcode()) {
74
75 case FIRST_ITEM_ACTION_OPCODE:
76 firstAction(player, packet);
77 break;
78
79 case SECOND_ITEM_ACTION_OPCODE:
80 secondAction(player, packet);
81 break;
82
83 case THIRD_ITEM_ACTION_OPCODE:
84 thirdAction(player, packet);
85 break;
86
87 case FOURTH_ITEM_ACTION_OPCODE:
88 fourthAction(player, packet);
89 break;
90
91 case FIFTH_ITEM_ACTION_OPCODE:
92 fifthAction(player, packet);
93 break;
94
95 case SIXTH_ITEM_ACTION_OPCODE:
96 sixthAction(player, packet);
97 break;
98
99 case ALL_BUT_ONE_ACTION_OPCODE:
100 allButOne(player, packet);
101 break;
102
103 case MODIFIABLE_X_ACTION_OPCODE:
104 modifiableXAction(player, packet);
105 break;
106 }
107 }
108
116 private void firstAction(Player player, GamePacket packet) {
117 final int interfaceId = packet.readShort(ByteModification.ADD);
118 final int removeSlot = packet.readShort(ByteModification.ADD);
119 final int removeId = packet.readShort(ByteModification.ADD);
120
121 if (EventDispatcher.execute(player, new ItemContainerInteractionEvent(1, interfaceId, removeSlot, removeId))) {
122 return;
123 }
124
125 PluginManager.getDataBus().publish(player, new ItemContainerContextMenuEvent(1, interfaceId, removeSlot, removeId));
126 }
127
135 private void secondAction(Player player, GamePacket packet) {
136 final int interfaceId = packet.readShort(ByteOrder.LE, ByteModification.ADD);
137 final int removeId = packet.readShort(ByteOrder.LE, ByteModification.ADD);
138 final int removeSlot = packet.readShort(ByteOrder.LE);
139
140 if (EventDispatcher.execute(player, new ItemContainerInteractionEvent(2, interfaceId, removeSlot, removeId))) {
141 return;
142 }
143
144 PluginManager.getDataBus().publish(player, new ItemContainerContextMenuEvent(2, interfaceId, removeSlot, removeId));
145 }
146
154 private void thirdAction(Player player, GamePacket packet) {
155 final int interfaceId = packet.readShort(ByteOrder.LE);
156 final int removeId = packet.readShort(ByteModification.ADD);
157 final int removeSlot = packet.readShort(ByteModification.ADD);
158
159 if (EventDispatcher.execute(player, new ItemContainerInteractionEvent(3, interfaceId, removeSlot, removeId))) {
160 return;
161 }
162
163 PluginManager.getDataBus().publish(player, new ItemContainerContextMenuEvent(3, interfaceId, removeSlot, removeId));
164 }
165
172 private void fourthAction(Player player, GamePacket packet) {
173 final int interfaceId = packet.readShort(ByteOrder.LE);
174 final int removeId = packet.readShort(ByteModification.ADD);
175 final int removeSlot = packet.readShort(ByteModification.ADD);
176
177 if (EventDispatcher.execute(player, new ItemContainerInteractionEvent(4, interfaceId, removeSlot, removeId))) {
178 return;
179 }
180
181 PluginManager.getDataBus().publish(player, new ItemContainerContextMenuEvent(4, interfaceId, removeSlot, removeId));
182 }
183
191 private void fifthAction(Player player, GamePacket packet) {
192 final int removeSlot = packet.readShort(ByteOrder.LE);
193 final int interfaceId = packet.readShort(ByteModification.ADD);
194 final int removeId = packet.readShort(ByteOrder.LE);
195
196 player.attributes.set("XREMOVE_SLOT", removeSlot);
197 player.attributes.set("XREMOVE_INTERFACE", interfaceId);
198 player.attributes.set("XREMOVE_REMOVE", removeId);
199
200 if(interfaceId == 7423) {
201 player.send(new SendInputAmount("Enter amount", 10, input -> DepositBoxPlugin.deposit(player, removeSlot, Integer.parseInt(input))));
202 return;
203 }
204
205 if (EventDispatcher.execute(player, new ItemContainerInteractionEvent(5, interfaceId, removeSlot, removeId))) {
206 return;
207 }
208
209 PluginManager.getDataBus().publish(player, new ItemContainerContextMenuEvent(5, interfaceId, removeSlot, removeId));
210 }
211
219 private void sixthAction(Player player, GamePacket packet) {
220 final int amount = packet.readInt();
221
222 if (player.enterInputListener.isPresent()) {
223 player.enterInputListener.get().accept(Integer.toString(amount));
224 return;
225 }
226
227 final int interfaceId = player.attributes.get("XREMOVE_INTERFACE", Integer.class);
228 final int removeSlot = player.attributes.get("XREMOVE_SLOT", Integer.class);
229 final int removeId = player.attributes.get("XREMOVE_REMOVE", Integer.class);
230
231 if (EventDispatcher.execute(player, new ItemContainerInteractionEvent(6, interfaceId, removeSlot, removeId))) {
232 return;
233 }
234
235 PluginManager.getDataBus().publish(player, new ItemContainerContextMenuEvent(6, interfaceId, removeSlot, removeId));
236 }
237
245 private void allButOne(Player player, GamePacket packet) {
246 final int removeSlot = packet.readShort(ByteModification.ADD);
247 final int interfaceId = packet.readShort();
248 final int removeId = packet.readShort(ByteModification.ADD);
249
250 PluginManager.getDataBus().publish(player, new ItemContainerContextMenuEvent(7, interfaceId, removeSlot, removeId));
251 }
252
260 private void modifiableXAction(Player player, GamePacket packet) {
261 final int removeSlot = packet.readShort(ByteModification.ADD);
262 final int interfaceId = packet.readShort();
263 final int removeId = packet.readShort(ByteModification.ADD);
264 final int amount = packet.readInt();
265
266 PluginManager.getDataBus().publish(player, new ItemContainerContextMenuEvent(8, interfaceId, removeSlot, removeId, amount));
267 }
268
269}