100 lines
3.4 KiB
Java
100 lines
3.4 KiB
Java
package com.alttd.easter.util;
|
|
|
|
import com.alttd.easter.egg.EggType;
|
|
import net.kyori.adventure.text.Component;
|
|
import net.kyori.adventure.text.format.NamedTextColor;
|
|
import net.kyori.adventure.text.format.TextColor;
|
|
import net.kyori.adventure.text.minimessage.MiniMessage;
|
|
import net.kyori.adventure.text.minimessage.tag.resolver.Placeholder;
|
|
import org.bukkit.inventory.ItemFlag;
|
|
import org.bukkit.inventory.ItemStack;
|
|
import org.bukkit.inventory.meta.ItemMeta;
|
|
import org.bukkit.persistence.PersistentDataType;
|
|
|
|
import java.util.ArrayList;
|
|
import java.util.List;
|
|
|
|
public final class ItemUtils {
|
|
|
|
private static String colorName(EggType type) {
|
|
return switch (type) {
|
|
case BROWN_HUSK -> "Brown";
|
|
case RED_SPIDER -> "Red";
|
|
case ORANGE_BLAZE -> "Orange";
|
|
case YELLOW_PIGLIN -> "Yellow";
|
|
case LIME_CREEPER -> "Lime";
|
|
case GREEN_ZOMBIE -> "Green";
|
|
case LIGHT_BLUE_STRAY -> "Light Blue";
|
|
case CYAN_GUARDIAN -> "Cyan";
|
|
case BLUE_WARDEN -> "Blue";
|
|
case PURPLE_ENDER_DRAGON -> "Purple";
|
|
case MAGENTA_ENDERMAN -> "Magenta";
|
|
case PINK_HOGLIN -> "Pink";
|
|
case WHITE_SKELETON -> "White";
|
|
case LIGHT_GRAY_SILVERFISH -> "Light Gray";
|
|
case GRAY_WITHER -> "Gray";
|
|
case BLACK_WITHER_SKELETON -> "Black";
|
|
};
|
|
}
|
|
|
|
public static Component colorNameComponent(EggType type) {
|
|
return Component.text(colorName(type), type.getColor());
|
|
}
|
|
|
|
public static Component typeNameComponent(EggType type) {
|
|
return Component.text(prettify(type.name()), type.getColor());
|
|
}
|
|
|
|
public static ItemStack createEggItem(EggType type) {
|
|
ItemStack item = new ItemStack(type.getMaterial());
|
|
ItemMeta meta = item.getItemMeta();
|
|
meta.addEnchant(type.getEnchantment(), type.getEnchantLevel(), true);
|
|
meta.addItemFlags(ItemFlag.HIDE_ENCHANTS);
|
|
Component name = MiniMessage.miniMessage().deserialize("<gold>Easter Egg - </gold><type>",
|
|
Placeholder.component("type", typeNameComponent(type))
|
|
);
|
|
meta.displayName(name);
|
|
meta.getPersistentDataContainer().set(Keys.EGG_ITEM, PersistentDataType.STRING, type.name());
|
|
item.setItemMeta(meta);
|
|
return item;
|
|
}
|
|
|
|
public static boolean isEggItem(ItemStack item) {
|
|
if (item == null) {
|
|
return false;
|
|
}
|
|
ItemMeta meta = item.getItemMeta();
|
|
if (meta == null) {
|
|
return false;
|
|
}
|
|
return meta.getPersistentDataContainer().has(Keys.EGG_ITEM, PersistentDataType.STRING);
|
|
}
|
|
|
|
public static EggType getEggType(ItemStack item) {
|
|
if (!isEggItem(item)) {
|
|
return null;
|
|
}
|
|
String name = item.getItemMeta().getPersistentDataContainer().get(Keys.EGG_ITEM, PersistentDataType.STRING);
|
|
try {
|
|
return name == null ? null : EggType.valueOf(name);
|
|
} catch (IllegalArgumentException ex) {
|
|
return null;
|
|
}
|
|
}
|
|
|
|
public static String prettify(String name) {
|
|
String[] parts = name.toLowerCase().split("_");
|
|
List<String> out = new ArrayList<>();
|
|
for (String p : parts) {
|
|
if (p.isEmpty()) {
|
|
continue;
|
|
}
|
|
out.add(Character.toUpperCase(p.charAt(0)) + p.substring(1));
|
|
}
|
|
return String.join(" ", out);
|
|
}
|
|
|
|
private ItemUtils() {
|
|
}
|
|
}
|