Mirror von
https://github.com/TheSilentPro/HeadDB.git
synchronisiert 2024-12-28 11:50:06 +01:00
Redesigned the GUI & added main menu to categories
Dieser Commit ist enthalten in:
Ursprung
8ae2b7fecf
Commit
25283705f6
@ -22,9 +22,9 @@ public class LocalHead {
|
|||||||
ItemStack item = new ItemStack(Material.PLAYER_HEAD);
|
ItemStack item = new ItemStack(Material.PLAYER_HEAD);
|
||||||
SkullMeta meta = (SkullMeta) item.getItemMeta();
|
SkullMeta meta = (SkullMeta) item.getItemMeta();
|
||||||
meta.setOwningPlayer(Bukkit.getOfflinePlayer(uuid));
|
meta.setOwningPlayer(Bukkit.getOfflinePlayer(uuid));
|
||||||
meta.setDisplayName(Utils.colorize("&8" + name));
|
meta.setDisplayName(Utils.colorize("&e" + name));
|
||||||
List<String> lore = new ArrayList<>();
|
List<String> lore = new ArrayList<>();
|
||||||
lore.add(Utils.colorize("&aUUID: " + uuid.toString()));
|
lore.add(Utils.colorize("&7UUID: " + uuid.toString()));
|
||||||
meta.setLore(lore);
|
meta.setLore(lore);
|
||||||
item.setItemMeta(meta);
|
item.setItemMeta(meta);
|
||||||
|
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
package tsp.headdb.inventory;
|
package tsp.headdb.inventory;
|
||||||
|
|
||||||
import org.bukkit.Bukkit;
|
import org.bukkit.Bukkit;
|
||||||
|
import org.bukkit.Material;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
import org.bukkit.event.inventory.ClickType;
|
import org.bukkit.event.inventory.ClickType;
|
||||||
import org.bukkit.inventory.Inventory;
|
import org.bukkit.inventory.Inventory;
|
||||||
@ -62,7 +63,7 @@ public class InventoryUtils {
|
|||||||
if (e.getClick() == ClickType.RIGHT) {
|
if (e.getClick() == ClickType.RIGHT) {
|
||||||
HeadAPI.removeFavoriteHead(player.getUniqueId(), head.getId());
|
HeadAPI.removeFavoriteHead(player.getUniqueId(), head.getId());
|
||||||
openFavoritesMenu(player);
|
openFavoritesMenu(player);
|
||||||
Utils.sendMessage(player, "Removed &e" + head.getName() + " &8from favorites.");
|
Utils.sendMessage(player, "Removed &e" + head.getName() + " &7from favorites.");
|
||||||
}
|
}
|
||||||
}));
|
}));
|
||||||
}
|
}
|
||||||
@ -87,7 +88,7 @@ public class InventoryUtils {
|
|||||||
}
|
}
|
||||||
if (e.getClick() == ClickType.RIGHT) {
|
if (e.getClick() == ClickType.RIGHT) {
|
||||||
HeadAPI.addFavoriteHead(player.getUniqueId(), head.getId());
|
HeadAPI.addFavoriteHead(player.getUniqueId(), head.getId());
|
||||||
Utils.sendMessage(player, "Added &e" + head.getName() + " &8to favorites.");
|
Utils.sendMessage(player, "Added &e" + head.getName() + " &7to favorites.");
|
||||||
}
|
}
|
||||||
}));
|
}));
|
||||||
}
|
}
|
||||||
@ -123,7 +124,7 @@ public class InventoryUtils {
|
|||||||
public static void openDatabase(Player player) {
|
public static void openDatabase(Player player) {
|
||||||
Inventory inventory = Bukkit.createInventory(null, 54, Utils.colorize("&c&lHeadDB &8(" + HeadAPI.getHeads().size() + ")"));
|
Inventory inventory = Bukkit.createInventory(null, 54, Utils.colorize("&c&lHeadDB &8(" + HeadAPI.getHeads().size() + ")"));
|
||||||
|
|
||||||
fillBorder(inventory, XMaterial.BLACK_STAINED_GLASS_PANE.parseItem());
|
fill(inventory, XMaterial.BLACK_STAINED_GLASS_PANE.parseItem());
|
||||||
for (Category category : Category.getCategories()) {
|
for (Category category : Category.getCategories()) {
|
||||||
ItemStack item = category.getItem();
|
ItemStack item = category.getItem();
|
||||||
ItemMeta meta = item.getItemMeta();
|
ItemMeta meta = item.getItemMeta();
|
||||||
@ -135,14 +136,14 @@ public class InventoryUtils {
|
|||||||
inventory.addItem(item);
|
inventory.addItem(item);
|
||||||
}
|
}
|
||||||
|
|
||||||
inventory.setItem(37, buildButton(
|
inventory.setItem(39, buildButton(
|
||||||
XMaterial.BOOK.parseItem(),
|
XMaterial.BOOK.parseItem(),
|
||||||
"&eFavorites",
|
"&eFavorites",
|
||||||
"",
|
"",
|
||||||
"&8Click to view your favorites")
|
"&8Click to view your favorites")
|
||||||
);
|
);
|
||||||
|
|
||||||
inventory.setItem(43, buildButton(
|
inventory.setItem(41, buildButton(
|
||||||
XMaterial.COMPASS.parseItem(),
|
XMaterial.COMPASS.parseItem(),
|
||||||
"&aLocal",
|
"&aLocal",
|
||||||
"",
|
"",
|
||||||
@ -152,26 +153,29 @@ public class InventoryUtils {
|
|||||||
player.openInventory(inventory);
|
player.openInventory(inventory);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void fillBorder(Inventory inv, ItemStack item) {
|
public static void fill(Inventory inv, ItemStack item) {
|
||||||
int size = inv.getSize();
|
int size = inv.getSize();
|
||||||
int rows = (size + 1) / 9;
|
int[] ignored = new int[]{20, 21, 22, 23, 24, 29, 30, 31, 32, 33, 39, 41};
|
||||||
|
|
||||||
// Fill top
|
// Fill
|
||||||
for (int i = 0; i < 9; i++) {
|
for (int i = 0; i < size; i++) {
|
||||||
inv.setItem(i, item);
|
if (!contains(i, ignored)) {
|
||||||
|
ItemStack slotItem = inv.getItem(i);
|
||||||
|
if (slotItem == null || slotItem.getType() == Material.AIR) {
|
||||||
|
inv.setItem(i, item);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private static boolean contains(int n, int... array) {
|
||||||
|
for (int i : array) {
|
||||||
|
if (i == n) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Fill bottom
|
return false;
|
||||||
for (int i = size - 9; i < size; i++) {
|
|
||||||
inv.setItem(i, item);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Fill sides
|
|
||||||
for (int i = 2; i <= rows - 1; i++) {
|
|
||||||
int[] slots = new int[]{i * 9 - 1, (i - 1) * 9};
|
|
||||||
inv.setItem(slots[0], item);
|
|
||||||
inv.setItem(slots[1], item);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private static ItemStack buildButton(ItemStack item, String name, String... lore) {
|
private static ItemStack buildButton(ItemStack item, String name, String... lore) {
|
||||||
|
@ -33,6 +33,8 @@ public class PagedPane implements InventoryHolder {
|
|||||||
protected Button controlBack;
|
protected Button controlBack;
|
||||||
@SuppressWarnings("WeakerAccess")
|
@SuppressWarnings("WeakerAccess")
|
||||||
protected Button controlNext;
|
protected Button controlNext;
|
||||||
|
@SuppressWarnings("WeakerAccess")
|
||||||
|
protected Button controlMain;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param pageSize The page size. inventory rows - 2
|
* @param pageSize The page size. inventory rows - 2
|
||||||
@ -145,6 +147,7 @@ public class PagedPane implements InventoryHolder {
|
|||||||
|
|
||||||
controlBack = null;
|
controlBack = null;
|
||||||
controlNext = null;
|
controlNext = null;
|
||||||
|
controlMain = null;
|
||||||
createControls(inventory);
|
createControls(inventory);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -169,6 +172,12 @@ public class PagedPane implements InventoryHolder {
|
|||||||
}
|
}
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
else if (event.getSlot() == inventory.getSize()- 5) {
|
||||||
|
if (controlMain != null){
|
||||||
|
controlMain.onClick(event);
|
||||||
|
}
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
pages.get(currentIndex).handleClick(event);
|
pages.get(currentIndex).handleClick(event);
|
||||||
|
|
||||||
@ -236,12 +245,9 @@ public class PagedPane implements InventoryHolder {
|
|||||||
"&3&lPage &a&l%d &7/ &c&l%d",
|
"&3&lPage &a&l%d &7/ &c&l%d",
|
||||||
getCurrentPage(), getPageAmount()
|
getCurrentPage(), getPageAmount()
|
||||||
);
|
);
|
||||||
String lore = String.format(
|
String lore = "&7Click to go to the &cMain Menu";
|
||||||
Locale.ROOT,
|
|
||||||
"&7Current: &a%d",
|
|
||||||
getCurrentPage()
|
|
||||||
);
|
|
||||||
ItemStack itemStack = setMeta(HeadAPI.getHeadByValue("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvY2Q5MWY1MTI2NmVkZGM2MjA3ZjEyYWU4ZDdhNDljNWRiMDQxNWFkYTA0ZGFiOTJiYjc2ODZhZmRiMTdmNGQ0ZSJ9fX0=").getItemStack(), name, lore);
|
ItemStack itemStack = setMeta(HeadAPI.getHeadByValue("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvY2Q5MWY1MTI2NmVkZGM2MjA3ZjEyYWU4ZDdhNDljNWRiMDQxNWFkYTA0ZGFiOTJiYjc2ODZhZmRiMTdmNGQ0ZSJ9fX0=").getItemStack(), name, lore);
|
||||||
|
controlMain = new Button(itemStack, event -> InventoryUtils.openDatabase((Player) event.getWhoClicked()));
|
||||||
inventory.setItem(inventory.getSize() - 5, itemStack);
|
inventory.setItem(inventory.getSize() - 5, itemStack);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -250,7 +256,7 @@ public class PagedPane implements InventoryHolder {
|
|||||||
int yMod = rowIndex * 9;
|
int yMod = rowIndex * 9;
|
||||||
for (int i = 0; i < 9; i++) {
|
for (int i = 0; i < 9; i++) {
|
||||||
int slot = yMod + i;
|
int slot = yMod + i;
|
||||||
inventory.setItem(slot, itemStack);
|
inventory.setItem(slot, setMeta(itemStack, ""));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Laden…
In neuem Issue referenzieren
Einen Benutzer sperren