feat: menu stuff

This commit is contained in:
TheClashFruit 2023-06-18 20:28:38 +02:00
parent c173d73dc1
commit 92ac5a6048
Signed by: TheClashFruit
GPG key ID: CF4A319B9A73290C
12 changed files with 65 additions and 8 deletions

Binary file not shown.

View file

@ -10,6 +10,7 @@ import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.inventory.InventoryClickEvent;
import org.bukkit.event.player.PlayerInteractEvent;
import org.bukkit.inventory.Inventory;
import java.util.List;
import java.util.Map;
@ -95,6 +96,11 @@ public class MenuListener implements Listener {
player.performCommand(menuEvent.get("data").toString());
}
case "open_page" -> {
Inventory menuGui = GuiUtil.createGui(cosmeticsConfig, player, menuEvent.get("data").toString());
player.openInventory(menuGui);
}
case "do_nothing" -> {}
default -> {
player.closeInventory();

View file

@ -1,11 +1,8 @@
package me.theclashfruit.hubbit.events;
import me.clip.placeholderapi.PlaceholderAPI;
import me.theclashfruit.hubbit.Hubbit;
import me.theclashfruit.hubbit.utils.MessageFormatter;
import net.kyori.adventure.text.Component;
import net.kyori.adventure.text.minimessage.MiniMessage;
import org.bukkit.Bukkit;
import org.bukkit.Material;
import org.bukkit.configuration.Configuration;
import org.bukkit.event.EventHandler;
@ -17,6 +14,8 @@ import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.meta.ItemMeta;
import java.util.List;
import java.util.concurrent.atomic.AtomicInteger;
import java.util.concurrent.atomic.AtomicReference;
import static org.bukkit.plugin.java.JavaPlugin.getPlugin;
import static org.bukkit.Bukkit.getLogger;
@ -58,8 +57,39 @@ public class PlayerActionsListener implements Listener {
event.getPlayer().getInventory().setContents(playerInv.getContents());
event.getPlayer().updateInventory();
if(mainConfig.getBoolean("hub.tablist")) {
if(mainConfig.getBoolean("hub.tablist.enabled")) {
AtomicReference<String> header = new AtomicReference<>("");
int headerLinesLength = mainConfig.getStringList("hub.tablist.header").size();
AtomicInteger headerCurrentLine = new AtomicInteger();
mainConfig.getStringList("hub.tablist.header").forEach(line -> {
if(headerLinesLength == (headerCurrentLine.get() + 1))
header.set(header + line);
else
header.set(header + line + "<newline>");
headerCurrentLine.getAndIncrement();
});
AtomicReference<String> footer = new AtomicReference<>("");
int footerLinesLength = mainConfig.getStringList("hub.tablist.footer").size();
AtomicInteger footerCurrentLine = new AtomicInteger();
mainConfig.getStringList("hub.tablist.footer").forEach(line -> {
if(footerLinesLength == (footerCurrentLine.get() + 1))
footer.set(footer + line);
else
footer.set(footer + line + "<newline>");
footerCurrentLine.getAndIncrement();
});
event.getPlayer().sendPlayerListHeaderAndFooter(
MessageFormatter.formatMessage(header.toString(), event.getPlayer()),
MessageFormatter.formatMessage(footer.toString(), event.getPlayer())
);
}
}
}

View file

@ -13,13 +13,15 @@ import org.bukkit.inventory.meta.ItemMeta;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.concurrent.atomic.AtomicInteger;
import java.util.concurrent.atomic.AtomicReference;
import static org.bukkit.plugin.java.JavaPlugin.getPlugin;
public class GuiUtil {
public static Inventory createGui(FileConfiguration guiConfig, Player guiHolder, String pageId) {
Inventory inventoryGui = new MenuInventoryHolder(getPlugin(Hubbit.class), guiConfig.getInt("size"), MessageFormatter.formatMessage(guiConfig.getString("title"), guiHolder)).getInventory();
Inventory inventoryGui = new MenuInventoryHolder(getPlugin(Hubbit.class), guiConfig.getInt("size"), MessageFormatter.formatMessage(guiConfig.getString("title"), guiHolder)).getInventory();;
int inventorySize = guiConfig.getInt("size");
@ -44,7 +46,9 @@ public class GuiUtil {
List<Map<?, ?>> items = (List<Map<?, ?>>) page.get("items");
items.forEach(item -> {
ItemStack itemStack = new ItemStack(Material.valueOf((String) item.get("material")), (int) item.get("count"));
Material itemMaterial = item.get("material").toString().startsWith("COSMETIC_") ? Material.STONE : Material.valueOf((String) item.get("material"));
ItemStack itemStack = new ItemStack(itemMaterial, (int) item.get("count"));
ItemMeta itemMeta = itemStack.getItemMeta();
@ -61,7 +65,24 @@ public class GuiUtil {
itemStack.setItemMeta(itemMeta);
inventoryGui.setItem((int) item.get("slot"), itemStack);
getPlugin(Hubbit.class).getLogger().log(java.util.logging.Level.INFO, item.get("slot").toString());
if(Objects.equals(item.get("slot").toString(), "fill")) {
AtomicInteger i = new AtomicInteger(0);
while(i.get() < inventorySize) {
if(inventoryGui.getItem(i.get()) == null) {
inventoryGui.setItem(i.get(), itemStack);
}
i.getAndIncrement();
}
getPlugin(Hubbit.class).getLogger().log(java.util.logging.Level.INFO, item.get("slot").toString());
} else {
inventoryGui.setItem((int) item.get("slot"), itemStack);
getPlugin(Hubbit.class).getLogger().log(java.util.logging.Level.INFO, item.get("slot").toString());
}
});
}
});

View file

@ -24,7 +24,7 @@ hub:
- '<grey>Select your awesome cosmetics!'
protection: true
tablist:
enbled: true
enabled: true
header:
- '<dark_aqua>Hubbit'
- ''