Skip to content

Commit

Permalink
Fixed creative menu close + next page buttons
Browse files Browse the repository at this point in the history
  • Loading branch information
btarg committed Dec 9, 2023
1 parent 0220137 commit beead8b
Show file tree
Hide file tree
Showing 2 changed files with 18 additions and 18 deletions.
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -78,7 +78,7 @@ through the steps needed to replicate the bug.
- [x] Resource pack generation
- [x] Resource pack hosting
- [ ] Resource pack merging / multiple pack support
- [ ] In-game UI for obtaining items (AKA "creative mode")
- [X] In-game UI for obtaining items (AKA "creative mode")
- [ ] Web UI for visual editing *(see preliminary work [here](https://github.com/btarg/vuejava))*
- [ ] Backend API with Javalin
- [ ] Vue.js frontend
Expand Down
34 changes: 17 additions & 17 deletions src/main/java/io/github/btarg/origami/gui/CreativeMenu.java
Original file line number Diff line number Diff line change
Expand Up @@ -41,10 +41,14 @@ public void openCreativeMenu(Player player, String contentPack, int page) {
for (int i = startIndex; i < Math.min(startIndex + pageSize, totalItems); i++) {
gui.setItem(i - startIndex, allCustomItemStacks.get(i));
}

// previous page
if (page > 1) gui.setItem(45, createNavigationButton(-1, contentPack));
// close button
gui.setItem(49, createCloseButton(totalPages(totalItems, pageSize) + 1));
if (startIndex < totalItems) gui.setItem(53, createNavigationButton(1, contentPack));
// next page
if (page < totalPages(totalItems, pageSize)) {
gui.setItem(53, createNavigationButton(1, contentPack));
}

currentPage = page;
player.openInventory(gui);
Expand All @@ -61,27 +65,25 @@ public void onInventoryClick(InventoryClickEvent event) {

int pageChange = getButtonPageChange(clickedItem);
String contentPack = getContentPackFromItem(clickedItem);
if (pageChange != 0) {
if (contentPack != null) {
int maxPages = totalPages(getAllCustomItemStacks(contentPack).size(), Math.min(getAllCustomItemStacks(contentPack).size(), 45));
if (Math.abs(pageChange) <= maxPages) {
openCreativeMenu(player, contentPack, currentPage + pageChange);
} else {
player.closeInventory();
}
}
} else if (clickedItem.getType() == Material.BARRIER) {
int maxPages = totalPages(getAllCustomItemStacks(contentPack).size(), Math.min(getAllCustomItemStacks(contentPack).size(), 45));
if (pageChange > maxPages) {
int maxPages = totalPages(getAllCustomItemStacks(contentPack).size(), Math.min(getAllCustomItemStacks(contentPack).size(), 45));
int newPage = currentPage + pageChange;

if (pageChange != 0 && contentPack != null) {
if (newPage > 0 && newPage <= maxPages) {
openCreativeMenu(player, contentPack, newPage);
} else {
player.closeInventory();
}
} else {
} else if (clickedItem.getType() == Material.BARRIER && pageChange > maxPages) {
player.closeInventory();
} else if (pageChange == 0) {
giveMaxStack(player, clickedItem.clone());
}
}
}
}


private void giveMaxStack(Player player, ItemStack item) {
ItemStack maxStack = item.clone();
maxStack.setAmount(maxStack.getMaxStackSize());
Expand Down Expand Up @@ -130,10 +132,8 @@ private ItemStack createCloseButton(int pageChange) {

private List<ItemStack> getAllCustomItemStacks(String contentPack) {
List<ItemStack> allCustomItemStacks = new ArrayList<>();

CustomBlockRegistry.getBlockDefinitions(contentPack).values().forEach(blockDef -> allCustomItemStacks.add(blockDef.createCustomItemStack(1)));
CustomItemRegistry.getItemDefinitions(contentPack).values().forEach(itemDef -> allCustomItemStacks.add(itemDef.createCustomItemStack(1)));

return allCustomItemStacks;
}

Expand Down

0 comments on commit beead8b

Please sign in to comment.