Overhaul menu system and simplify it heavily, separating Pageable Menus and regular Menus into two different implementations

This commit is contained in:
Taah
2023-09-02 10:14:10 -07:00
parent 28c57f3a52
commit 2364ab33ff
18 changed files with 609 additions and 563 deletions

View File

@ -0,0 +1,10 @@
package dev.plex.util.function;
/**
* @author Taah
* @since 8:40 AM [02-09-2023]
*/
public interface ConditionalQuadConsumer<K, V, S, T>
{
boolean accept(K k, V v, S s, T t);
}

View File

@ -0,0 +1,10 @@
package dev.plex.util.function;
/**
* @author Taah
* @since 8:40 AM [02-09-2023]
*/
public interface QuadConsumer<K, V, S, T>
{
void accept(K k, V v, S s, T t);
}

View File

@ -1,13 +1,17 @@
package dev.plex.util.item;
import dev.plex.util.minimessage.SafeMiniMessage;
import net.kyori.adventure.text.Component;
import org.bukkit.Bukkit;
import org.bukkit.Material;
import org.bukkit.OfflinePlayer;
import org.bukkit.attribute.Attribute;
import org.bukkit.attribute.AttributeModifier;
import org.bukkit.enchantments.Enchantment;
import org.bukkit.inventory.ItemFlag;
import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.meta.ItemMeta;
import org.bukkit.inventory.meta.SkullMeta;
import java.util.Arrays;
@ -19,7 +23,7 @@ public class ItemBuilder
public ItemBuilder(Material material)
{
this.itemStack = new ItemStack(material);
this.itemStack = new ItemStack(Bukkit.getItemFactory().getItemMeta(material) == null ? Material.LIGHT_BLUE_STAINED_GLASS_PANE : material);
this.meta = itemStack.getItemMeta();
}
@ -29,12 +33,22 @@ public class ItemBuilder
return this;
}
public ItemBuilder lore(String... lore)
{
return this.lore(Arrays.stream(lore).map(SafeMiniMessage::mmDeserialize).toArray(Component[]::new));
}
public ItemBuilder displayName(Component displayName)
{
this.meta.displayName(displayName);
return this;
}
public ItemBuilder displayName(String displayName)
{
return this.displayName(SafeMiniMessage.mmDeserialize(displayName));
}
public ItemBuilder addEnchantment(Enchantment enchantment, int level)
{
this.meta.addEnchant(enchantment, level, true);
@ -53,6 +67,15 @@ public class ItemBuilder
return this;
}
public ItemBuilder owner(OfflinePlayer player)
{
if (this.meta instanceof SkullMeta skullMeta)
{
skullMeta.setOwningPlayer(player);
}
return this;
}
public ItemStack build()
{
this.itemStack.setItemMeta(this.meta);

View File

@ -1,21 +0,0 @@
package dev.plex.util.menu;
import dev.plex.Plex;
import org.bukkit.event.Listener;
public abstract class AbstractMenu implements Listener
{
private final String name;
public AbstractMenu(String name)
{
this.name = name;
Plex.get().getServer().getPluginManager().registerEvents(this, Plex.get());
}
public String getName()
{
return name;
}
}

View File

@ -1,20 +0,0 @@
package dev.plex.util.menu;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.inventory.InventoryClickEvent;
import org.bukkit.inventory.Inventory;
public interface IMenu
{
Inventory getInventory();
void openInv(Player player);
@EventHandler
void onClick(InventoryClickEvent event);
}