1package com.dreamfirestudios.dreamcore.DreamSmartInvs.content;
3import com.dreamfirestudios.dreamcore.DreamSmartInvs.ClickableItem;
4import com.dreamfirestudios.dreamcore.DreamSmartInvs.SmartInventory;
5import org.bukkit.Bukkit;
6import org.bukkit.entity.Player;
7import org.bukkit.inventory.Inventory;
8import org.bukkit.inventory.ItemStack;
10import java.util.HashMap;
12import java.util.Optional;
33 Optional<ClickableItem>
get(
int row,
int column);
34 Optional<ClickableItem>
get(
SlotPos slotPos);
64 if(contents.length == 0)
return null;
65 if((row < contents.length) && (column < contents[0].length)){
66 return contents[row][column];
72 private Map<String, SlotIterator> iterators =
new HashMap<>();
73 private Map<String, Object> properties =
new HashMap<>();
88 public Optional<SlotIterator>
iterator(String
id) {
89 return Optional.ofNullable(this.iterators.get(
id));
95 type, startRow, startColumn);
121 for (
int row = 0; row < contents.length; row++) {
122 for(
int column = 0; column < contents[0].length; column++) {
123 if(!this.
get(row, column).isPresent())
124 return Optional.of(
new SlotPos(row, column));
128 return Optional.empty();
132 public Optional<ClickableItem>
get(
int row,
int column) {
133 if(row >= contents.length)
134 return Optional.empty();
135 if(column >= contents[row].length)
136 return Optional.empty();
138 return Optional.ofNullable(contents[row][column]);
142 public Optional<ClickableItem>
get(
SlotPos slotPos) {
143 return get(slotPos.getRow(), slotPos.getColumn());
148 if(row >= contents.length)
150 if(column >= contents[row].length)
153 contents[row][column] = item;
154 update(row, column, item !=
null ? item.getItem() :
null);
160 return set(slotPos.getRow(), slotPos.getColumn(), item);
165 for(
int row = 0; row < contents.length; row++) {
166 for(
int column = 0; column < contents[0].length; column++) {
167 if(contents[row][column] ==
null) {
168 set(row, column, item);
179 for(
int row = 0; row < contents.length; row++)
180 for(
int column = 0; column < contents[row].length; column++)
181 set(row, column, item);
188 if(row >= contents.length)
191 for(
int column = 0; column < contents[row].length; column++)
192 set(row, column, item);
199 for(
int row = 0; row < contents.length; row++)
200 set(row, column, item);
213 for(
int row = fromRow; row <= toRow; row++) {
214 for(
int column = fromColumn; column <= toColumn; column++) {
215 if(row != fromRow && row != toRow && column != fromColumn && column != toColumn)
218 set(row, column, item);
230 @SuppressWarnings(
"unchecked")
232 public <T> T property(String name) {
233 return (T) properties.get(name);
236 @SuppressWarnings(
"unchecked")
238 public <T> T property(String name, T def) {
239 return properties.containsKey(name) ? (T) properties.get(name) : def;
244 properties.put(name, value);
248 private void update(
int row,
int column, ItemStack item) {
249 Player currentPlayer = Bukkit.getPlayer(player);
253 Inventory topInventory = currentPlayer.getOpenInventory().getTopInventory();
254 topInventory.setItem(inv.
getColumns() * row + column, item);
List< Player > getOpenedPlayers(SmartInventory inv)
InventoryManager getManager()
InventoryContents fillColumn(int column, ClickableItem item)
InventoryContents fillRect(SlotPos fromPos, SlotPos toPos, ClickableItem item)
SlotIterator newIterator(SlotIterator.Type type, int startRow, int startColumn)
SlotIterator newIterator(SlotIterator.Type type, SlotPos startPos)
Impl(SmartInventory inv, UUID player)
SlotIterator newIterator(String id, SlotIterator.Type type, int startRow, int startColumn)
InventoryContents fillBorders(ClickableItem item)
Optional< SlotIterator > iterator(String id)
Optional< SlotPos > firstEmpty()
InventoryContents fillRect(int fromRow, int fromColumn, int toRow, int toColumn, ClickableItem item)
SmartInventory inventory()
InventoryContents fillRow(int row, ClickableItem item)
InventoryContents setProperty(String name, Object value)
ClickableItem GetItemStack(int row, int column)
InventoryContents add(ClickableItem item)
SlotIterator newIterator(String id, SlotIterator.Type type, SlotPos startPos)
InventoryContents fill(ClickableItem item)
ClickableItem GetItemStack(int row, int column)
SlotIterator newIterator(String id, SlotIterator.Type type, int startRow, int startColumn)
InventoryContents add(ClickableItem item)
InventoryContents fill(ClickableItem item)
SlotIterator newIterator(SlotIterator.Type type, SlotPos startPos)
Optional< SlotIterator > iterator(String id)
InventoryContents fillRect(SlotPos fromPos, SlotPos toPos, ClickableItem item)
SmartInventory inventory()
InventoryContents fillRow(int row, ClickableItem item)
Optional< SlotPos > firstEmpty()
InventoryContents fillRect(int fromRow, int fromColumn, int toRow, int toColumn, ClickableItem item)
InventoryContents setProperty(String name, Object value)
InventoryContents fillBorders(ClickableItem item)
SlotIterator newIterator(SlotIterator.Type type, int startRow, int startColumn)
InventoryContents fillColumn(int column, ClickableItem item)
SlotIterator newIterator(String id, SlotIterator.Type type, SlotPos startPos)
< T > T property(String name, T def)
< T > T property(String name)