Initial setup for easter plugin

This commit is contained in:
2026-04-04 01:08:30 +02:00
parent 060e8a4541
commit 600f93c253
18 changed files with 718 additions and 18 deletions
@@ -0,0 +1,75 @@
package com.alttd.easter.util;
import com.alttd.easter.egg.EggType;
import org.bukkit.ChatColor;
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 {
public 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 Grey";
case GRAY_WITHER -> "Grey";
case BLACK_WITHER_SKELETON -> "Black";
};
}
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);
meta.setDisplayName(ChatColor.GOLD + "Easter Egg - " + prettify(type.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() {}
}