mirror of
https://github.com/plexusorg/Plex.git
synced 2025-06-28 22:46:40 +00:00
Overhaul menu system and simplify it heavily, separating Pageable Menus and regular Menus into two different implementations
This commit is contained in:
@ -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);
|
||||
}
|
@ -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);
|
||||
}
|
@ -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);
|
||||
|
@ -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;
|
||||
}
|
||||
}
|
@ -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);
|
||||
|
||||
}
|
Reference in New Issue
Block a user