Skip to content

Commit d15c6be

Browse files
authored
Merge pull request #2 from focamacho/dev
fixes and additions for pageable menus
2 parents 9c528cf + c0a7eab commit d15c6be

File tree

4 files changed

+59
-6
lines changed

4 files changed

+59
-6
lines changed

build.gradle

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
allprojects {
22
group = 'com.focamacho'
3-
version = '1.0.9'
3+
version = '1.0.10'
44
}
55

66
subprojects {

sealmenus-bukkit/src/main/java/com/focamacho/sealmenus/bukkit/PageableChestMenu.java

+29-2
Original file line numberDiff line numberDiff line change
@@ -109,6 +109,7 @@ public List<MenuItem> getPageableItems() {
109109
public PageableChestMenu setPageableItems(List<MenuItem> items) {
110110
this.pageableItems.clear();
111111
pageableItems.addAll(items);
112+
this.page = 0;
112113
requireUpdate(null);
113114
return this;
114115
}
@@ -144,12 +145,34 @@ public Map.Entry<Integer, Integer> getPageableItemSlot(MenuItem item) {
144145
* Get the quantity of pages of this menu.
145146
* The quantity is defined by the amount
146147
* of items inserted.
148+
*
147149
* @return the quantity of pages of this menu.
148150
*/
149151
public int getPageCount() {
150152
return (int) Math.max(1, Math.ceil(this.pageableItems.size() / (double) itemSlots.length));
151153
}
152154

155+
/**
156+
* Get the current page the player
157+
* is in.
158+
*
159+
* @param player the player to check the
160+
* page.
161+
* @return the current page index.
162+
*/
163+
public int getCurrentPage(Player player) {
164+
if(this.fatherMenu != null && this.fatherMenu.inventory != null && this.fatherMenu.inventory.getViewers().contains(player)) {
165+
return this.fatherMenu.page;
166+
} else if(this.inventory != null && this.inventory.getViewers().contains(player)) {
167+
return this.page;
168+
} else {
169+
Optional<PageableChestMenu> menu = mirrorMenus.stream().filter(m -> m.inventory != null && m.inventory.getViewers().contains(player)).findFirst();
170+
if(menu.isPresent()) return menu.get().page;
171+
}
172+
173+
return 0;
174+
}
175+
153176
/**
154177
* Set the item used to go to the next page.
155178
* This item is only shown if there is enough items
@@ -281,11 +304,15 @@ public MenuItem getItem(Integer slot) {
281304

282305
@Override
283306
public void open(Player player) {
307+
open(player, 0);
308+
}
309+
310+
public void open(Player player, int page) {
284311
if(this.inventory == null || !super.hasViewers()) {
285-
this.page = 0;
312+
this.page = Math.min(getPageCount() - 1, page);
286313
requireUpdate(null);
287314
super.open(player);
288-
} else new PageableChestMenu(this).open(player);
315+
} else new PageableChestMenu(this).open(player, page);
289316
}
290317

291318
@Override

sealmenus-sponge/src/main/java/com/focamacho/sealmenus/sponge/ChestMenu.java

-1
Original file line numberDiff line numberDiff line change
@@ -290,7 +290,6 @@ public void update(int slot) {
290290
for (Inventory inventorySlot : this.inventory.slots()) {
291291
Integer slotIndex = inventorySlot.getInventoryProperty(SlotIndex.class).get().getValue();
292292
if(Objects.equals(slot, slotIndex)) {
293-
System.out.println("atualizando slot");
294293
if(containsItem(slot)) {
295294
ItemStack stack = getItem(slot).getItem();
296295
if (inventorySlot.peek().orElse(ItemStack.empty()) != stack)

sealmenus-sponge/src/main/java/com/focamacho/sealmenus/sponge/PageableChestMenu.java

+29-2
Original file line numberDiff line numberDiff line change
@@ -107,6 +107,7 @@ public List<MenuItem> getPageableItems() {
107107
public PageableChestMenu setPageableItems(List<MenuItem> items) {
108108
this.pageableItems.clear();
109109
pageableItems.addAll(items);
110+
this.page = 0;
110111
requireUpdate(null);
111112
return this;
112113
}
@@ -142,12 +143,34 @@ public Map.Entry<Integer, Integer> getPageableItemSlot(MenuItem item) {
142143
* Get the quantity of pages of this menu.
143144
* The quantity is defined by the amount
144145
* of items inserted.
146+
*
145147
* @return the quantity of pages of this menu.
146148
*/
147149
public int getPageCount() {
148150
return (int) Math.max(1, Math.ceil(this.pageableItems.size() / (double) itemSlots.length));
149151
}
150152

153+
/**
154+
* Get the current page the player
155+
* is in.
156+
*
157+
* @param player the player to check the
158+
* page.
159+
* @return the current page index.
160+
*/
161+
public int getCurrentPage(Player player) {
162+
if(this.fatherMenu != null && this.fatherMenu.playersViewing.contains(player)) {
163+
return this.fatherMenu.page;
164+
} else if(playersViewing.contains(player)) {
165+
return this.page;
166+
} else {
167+
Optional<PageableChestMenu> menu = mirrorMenus.stream().filter(m -> m.playersViewing.contains(player)).findFirst();
168+
if(menu.isPresent()) return menu.get().page;
169+
}
170+
171+
return 0;
172+
}
173+
151174
/**
152175
* Set the item used to go to the next page.
153176
* This item is only shown if there is enough items
@@ -279,11 +302,15 @@ public MenuItem getItem(Integer slot) {
279302

280303
@Override
281304
public void open(Player player) {
305+
open(player, 0);
306+
}
307+
308+
public void open(Player player, int page) {
282309
if(this.inventory == null || !super.hasViewers()) {
283-
this.page = 0;
310+
this.page = Math.min(getPageCount() - 1, page);
284311
requireUpdate(null);
285312
super.open(player);
286-
} else new PageableChestMenu(this).open(player);
313+
} else new PageableChestMenu(this).open(player, page);
287314
}
288315

289316
@Override

0 commit comments

Comments
 (0)