RuneHive-Tarnish
Neural OSRS Enhancement Framework
Loading...
Searching...
No Matches
Inventory.java
1package com.osroyale.game.world.items.containers.inventory;
2
3import com.osroyale.game.world.entity.mob.player.Player;
4import com.osroyale.game.world.items.Item;
5import com.osroyale.game.world.items.containers.ItemContainer;
6import com.osroyale.game.world.items.containers.ItemContainerAdapter;
7import com.osroyale.game.world.items.ground.GroundItem;
8import com.osroyale.net.packet.out.SendItemOnInterface;
9import com.osroyale.net.packet.out.SendItemOnInterfaceSlot;
10import com.osroyale.net.packet.out.SendMessage;
11
12import java.util.Arrays;
13import java.util.List;
14import java.util.Optional;
15import java.util.function.Consumer;
16
59
60public final class Inventory extends ItemContainer {
61
63 public static final int SIZE = 28;
64
66 public static final int INVENTORY_DISPLAY_ID = 3214;
67
69 private final Player player;
70
72 public Inventory(Player player) {
74 addListener(new InventoryListener(player));
75// addListener(new ItemWeightListener(player));TODO
76 this.player = player;
77 }
78
80 public void refresh() {
82 }
83
89 public void addOrExecute(Consumer<Item> action, Optional<String> message, List<Item> items) {
90 boolean val = false;
91 for (Item item : items) {
92 if (item == null)
93 continue;
94 if (hasCapacityFor(item)) {
95 player.inventory.add(item);
96 } else {
97 action.accept(item);
98 val = true;
99 }
100 }
101 if (val) {
102 message.ifPresent(m -> player.send(new SendMessage(m)));
103 }
104 }
105
111 public void addOrExecute(Consumer<Item> action, Optional<String> message, Item... items) {
112 addOrExecute(action, message, Arrays.asList(items));
113 }
114
120 public void addOrExecute(Consumer<Item> action, String message, Item... items) {
121 addOrExecute(action, Optional.of(message), Arrays.asList(items));
122 }
123
129 public void addOrExecute(Consumer<Item> action, String message, List<Item> items) {
130 addOrExecute(action, Optional.of(message), items);
131 }
132
138 public void addOrExecute(Consumer<Item> action, List<Item> items) {
139 addOrExecute(action, Optional.empty(), items);
140 }
141
147 public void addOrExecute(Consumer<Item> action, Item... items) {
148 addOrExecute(action, Arrays.asList(items));
149 }
150
155 public void addOrDrop(List<Item> items) {
156 addOrExecute(t -> GroundItem.create(player, t), "@red@Some of the items were dropped since you have no room in your inventory.", items);
157 }
158
163 public void addOrDrop(Item... items) {
164 addOrDrop(Arrays.asList(items));
165 }
166
171 public void addOrBank(List<Item> items) {
172 addOrExecute(t -> player.bank.depositFromNothing(t, 0), "@red@Some of the items were banked since you have no room in your inventory.", items);
173 }
174
179 public void addOrBank(Item... items) {
180 addOrBank(Arrays.asList(items));
181 }
182
184 @Override
185 public void refresh(Player player, int widget) {
186 player.send(new SendItemOnInterface(widget, toArray()));
187 }
188
193 private final class InventoryListener extends ItemContainerAdapter {
194
196 InventoryListener(Player player) {
197 super(player);
198 }
199
200 @Override
201 public void itemUpdated(ItemContainer container, Optional<Item> oldItem, Optional<Item> newItem, int index, boolean refresh, boolean login) {
202 if (refresh)
203 player.send(new SendItemOnInterfaceSlot(getWidgetId(), newItem.orElse(null), index));
204 }
205
206 @Override
207 public int getWidgetId() {
209 }
210
211 @Override
212 public String getCapacityExceededMsg() {
213 return "You do not have enough space in your inventory.";
214 }
215 }
216}
ItemContainer(int capacity, StackPolicy policy, Item[] items)
final boolean addListener(ItemContainerListener listener)
void addOrExecute(Consumer< Item > action, Optional< String > message, Item... items)
void addOrExecute(Consumer< Item > action, String message, Item... items)
void addOrExecute(Consumer< Item > action, Optional< String > message, List< Item > items)
void addOrExecute(Consumer< Item > action, List< Item > items)
void addOrExecute(Consumer< Item > action, String message, List< Item > items)
void addOrExecute(Consumer< Item > action, Item... items)
static GroundItem create(Player player, Item item)