Skip to content

Commit

Permalink
ContentPackHelper improvements
Browse files Browse the repository at this point in the history
  • Loading branch information
btarg committed Dec 9, 2023
1 parent beead8b commit f5c04ee
Show file tree
Hide file tree
Showing 4 changed files with 24 additions and 33 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -26,10 +26,8 @@
import org.bukkit.inventory.ItemStack;
import org.jetbrains.annotations.NotNull;

import java.io.File;
import java.io.IOException;
import java.util.*;
import java.util.stream.Collectors;

@SuppressWarnings("deprecation")
public class RootCommand implements TabExecutor {
Expand All @@ -44,7 +42,8 @@ public boolean onCommand(@NotNull CommandSender sender, @NotNull Command command
OrigamiMain.getCreativeMenu().openCreativeMenu(player, contentPack, 1);
return true;
} else {
sendIncorrectArgumentsMessage(command, sender);
// default to first content pack in list
OrigamiMain.getCreativeMenu().openCreativeMenu(player, ContentPackHelper.getAllContentPackNames().get(0), 1);
}
}
}
Expand Down Expand Up @@ -159,9 +158,7 @@ public List<String> onTabComplete(@NotNull CommandSender sender, @NotNull Comman
} else if (Objects.equals(args[0], "reload")) {
tabComplete = Arrays.asList("all", "blocks", "items", "recipes", "resources");
} else if (Objects.equals(args[0], "menu")) {
tabComplete = Arrays.stream(ContentPackHelper.getAllContentPacks())
.map(File::getName)
.collect(Collectors.toList());
tabComplete = ContentPackHelper.getAllContentPackNames();
}

return tabComplete;
Expand Down
33 changes: 12 additions & 21 deletions src/main/java/io/github/btarg/origami/gui/CreativeMenu.java
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,6 @@
import io.github.btarg.origami.registry.CustomItemRegistry;
import io.github.btarg.origami.util.NamespacedKeyHelper;
import net.kyori.adventure.text.Component;
import net.kyori.adventure.text.format.Style;
import net.kyori.adventure.text.format.TextColor;
import org.bukkit.Bukkit;
import org.bukkit.Material;
Expand All @@ -30,6 +29,7 @@ public class CreativeMenu implements Listener {
private int currentPage = 1;

public void openCreativeMenu(Player player, String contentPack, int page) {
if (contentPack == null) return;
List<ItemStack> allCustomItemStacks = getAllCustomItemStacks(contentPack);
int totalItems = allCustomItemStacks.size();

Expand All @@ -41,10 +41,11 @@ 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));
gui.setItem(49, createButton(Material.BARRIER, Component.text("Close", TextColor.color(Color.RED.getRGB())), totalPages(totalItems, pageSize) + 1, contentPack));
// next page
if (page < totalPages(totalItems, pageSize)) {
gui.setItem(53, createNavigationButton(1, contentPack));
Expand All @@ -68,12 +69,8 @@ public void onInventoryClick(InventoryClickEvent event) {
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();
}
if (pageChange != 0 && contentPack != null && newPage > 0 && newPage <= maxPages) {
openCreativeMenu(player, contentPack, newPage);
} else if (clickedItem.getType() == Material.BARRIER && pageChange > maxPages) {
player.closeInventory();
} else if (pageChange == 0) {
Expand All @@ -83,7 +80,6 @@ public void onInventoryClick(InventoryClickEvent event) {
}
}


private void giveMaxStack(Player player, ItemStack item) {
ItemStack maxStack = item.clone();
maxStack.setAmount(maxStack.getMaxStackSize());
Expand All @@ -94,7 +90,7 @@ private void giveMaxStack(Player player, ItemStack item) {
private String getContentPackFromItem(ItemStack item) {
if (item != null && item.hasItemMeta()) {
PersistentDataContainer pdc = item.getItemMeta().getPersistentDataContainer();
return (pdc.has(NamespacedKeyHelper.contentPackKey, PersistentDataType.STRING))
return pdc.has(NamespacedKeyHelper.contentPackKey, PersistentDataType.STRING)
? pdc.get(NamespacedKeyHelper.contentPackKey, PersistentDataType.STRING)
: null;
}
Expand All @@ -104,28 +100,23 @@ private String getContentPackFromItem(ItemStack item) {
private int getButtonPageChange(ItemStack item) {
if (item != null && item.hasItemMeta()) {
PersistentDataContainer pdc = item.getItemMeta().getPersistentDataContainer();
return (pdc.has(pageChangeKey, PersistentDataType.INTEGER))
return pdc.has(pageChangeKey, PersistentDataType.INTEGER)
? pdc.get(pageChangeKey, PersistentDataType.INTEGER)
: 0;
}
return 0;
}

private ItemStack createNavigationButton(int pageChange, String contentPack) {
ItemStack item = new ItemStack(Material.ARROW);
ItemMeta meta = item.getItemMeta();
meta.displayName(Component.text(pageChange > 0 ? "Next Page" : "Previous Page").style(Style.empty()));
meta.getPersistentDataContainer().set(pageChangeKey, PersistentDataType.INTEGER, pageChange);
meta.getPersistentDataContainer().set(NamespacedKeyHelper.contentPackKey, PersistentDataType.STRING, contentPack);
item.setItemMeta(meta);
return item;
return createButton(Material.ARROW, Component.text(pageChange > 0 ? "Next Page" : "Previous Page", TextColor.color(Color.WHITE.getRGB())), pageChange, contentPack);
}

private ItemStack createCloseButton(int pageChange) {
ItemStack item = new ItemStack(Material.BARRIER);
private ItemStack createButton(Material material, Component buttonName, int pageChange, String contentPack) {
ItemStack item = new ItemStack(material);
ItemMeta meta = item.getItemMeta();
meta.displayName(Component.text("Close").color(TextColor.color(Color.RED.getRGB())));
meta.displayName(buttonName);
meta.getPersistentDataContainer().set(pageChangeKey, PersistentDataType.INTEGER, pageChange);
meta.getPersistentDataContainer().set(NamespacedKeyHelper.contentPackKey, PersistentDataType.STRING, contentPack);
item.setItemMeta(meta);
return item;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,9 @@
import java.io.File;
import java.io.IOException;
import java.util.Arrays;
import java.util.List;
import java.util.Objects;
import java.util.stream.Collectors;

public class ContentPackHelper {

Expand All @@ -25,9 +27,14 @@ public static File getContentPacksFolder() {
return folder;
}


public static File[] getAllContentPacks() {
return Arrays.stream(Objects.requireNonNull(getContentPacksFolder().listFiles(File::isDirectory))).toArray(File[]::new);
}

public static List<String> getAllContentPackNames() {
return Arrays.stream(getAllContentPacks())
.map(File::getName)
.collect(Collectors.toList());
}
}

6 changes: 1 addition & 5 deletions src/main/java/io/github/btarg/origami/web/JavalinServer.java
Original file line number Diff line number Diff line change
Expand Up @@ -16,10 +16,8 @@
import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Objects;
import java.util.stream.Collectors;

public class JavalinServer {
private static final File generatedZipFile = new File(OrigamiMain.getInstance().getDataFolder(), "generated/pack.zip");
Expand All @@ -36,9 +34,7 @@ private static List<JavalinHandler> httpHandlers() {
HandlerType.GET,
ctx -> ctx.result("hello world!")
));
String filenamesAsString = Arrays.stream(ContentPackHelper.getAllContentPacks())
.map(File::getName)
.collect(Collectors.joining("\n"));
String filenamesAsString = String.join("\n", ContentPackHelper.getAllContentPackNames());
handlerList.add(new JavalinHandler(
"/api/contentpacks",
HandlerType.GET,
Expand Down

0 comments on commit f5c04ee

Please sign in to comment.