diff --git a/src/main/java/com/alttd/easter/Easter.java b/src/main/java/com/alttd/easter/Easter.java index c67a10a..6c99a1a 100644 --- a/src/main/java/com/alttd/easter/Easter.java +++ b/src/main/java/com/alttd/easter/Easter.java @@ -5,10 +5,10 @@ import com.alttd.easter.config.Config; import com.alttd.easter.config.Messages; import com.alttd.easter.data.DataManager; import com.alttd.easter.glow.GlowManager; +import com.alttd.easter.gui.TurnInGuiManager; import com.alttd.easter.listeners.DeathListener; import com.alttd.easter.listeners.SpawnListener; import com.alttd.easter.npc.RabbitNpcManager; -import com.alttd.easter.gui.TurnInGuiManager; import org.bukkit.plugin.PluginManager; import org.bukkit.plugin.java.JavaPlugin; @@ -53,7 +53,9 @@ public final class Easter extends JavaPlugin { public void reloadConfigs() { Config.reload(); Messages.reload(); - if (rabbitNpcManager != null) rabbitNpcManager.reload(); + if (rabbitNpcManager != null) { + rabbitNpcManager.reload(); + } } private void registerSchedulers() { diff --git a/src/main/java/com/alttd/easter/commands/Command.java b/src/main/java/com/alttd/easter/commands/Command.java index 39d60bf..3ee0701 100644 --- a/src/main/java/com/alttd/easter/commands/Command.java +++ b/src/main/java/com/alttd/easter/commands/Command.java @@ -1,7 +1,8 @@ package com.alttd.easter.commands; import com.alttd.easter.Easter; -import com.alttd.easter.commands.subcommands.*; +import com.alttd.easter.commands.subcommands.Reload; +import com.alttd.easter.commands.subcommands.SetPrize; import com.alttd.easter.config.Messages; import lombok.Getter; import lombok.extern.slf4j.Slf4j; @@ -18,7 +19,8 @@ import java.util.List; import java.util.stream.Collectors; @SuppressWarnings("ClassCanBeRecord") -@Slf4j @Getter +@Slf4j +@Getter public class Command implements CommandExecutor, TabExecutor { private final List subCommands; @@ -36,7 +38,7 @@ public class Command implements CommandExecutor, TabExecutor { subCommands = List.of( new Reload(easter), new SetPrize() - ); + ); } @Override @@ -50,8 +52,9 @@ public class Command implements CommandExecutor, TabExecutor { } SubCommand subCommand = getSubCommand(args[0]); - if (subCommand == null) + if (subCommand == null) { return false; + } if (!commandSender.hasPermission(subCommand.getPermission())) { commandSender.sendRichMessage(Messages.GENERIC.NO_PERMISSION, Placeholder.parsed("permission", subCommand.getPermission())); @@ -71,17 +74,18 @@ public class Command implements CommandExecutor, TabExecutor { if (args.length <= 1) { res.addAll(subCommands.stream() - .filter(subCommand -> commandSender.hasPermission(subCommand.getPermission())) - .map(SubCommand::getName) - .filter(name -> args.length == 0 || name.startsWith(args[0])) - .toList() - ); + .filter(subCommand -> commandSender.hasPermission(subCommand.getPermission())) + .map(SubCommand::getName) + .filter(name -> args.length == 0 || name.startsWith(args[0])) + .toList() + ); } else { SubCommand subCommand = getSubCommand(args[0]); - if (subCommand != null && commandSender.hasPermission(subCommand.getPermission())) + if (subCommand != null && commandSender.hasPermission(subCommand.getPermission())) { res.addAll(subCommand.getTabComplete(commandSender, args).stream() - .filter(str -> str.toLowerCase().startsWith(args[args.length - 1].toLowerCase())) - .toList()); + .filter(str -> str.toLowerCase().startsWith(args[args.length - 1].toLowerCase())) + .toList()); + } } return res; } diff --git a/src/main/java/com/alttd/easter/commands/SubCommand.java b/src/main/java/com/alttd/easter/commands/SubCommand.java index 5f9c4fb..42c7488 100644 --- a/src/main/java/com/alttd/easter/commands/SubCommand.java +++ b/src/main/java/com/alttd/easter/commands/SubCommand.java @@ -6,7 +6,8 @@ import java.util.List; public abstract class SubCommand { - public SubCommand() {} + public SubCommand() { + } public abstract boolean onCommand(CommandSender commandSender, String[] args); diff --git a/src/main/java/com/alttd/easter/config/AbstractConfig.java b/src/main/java/com/alttd/easter/config/AbstractConfig.java index 6cb6f75..f6e198e 100644 --- a/src/main/java/com/alttd/easter/config/AbstractConfig.java +++ b/src/main/java/com/alttd/easter/config/AbstractConfig.java @@ -19,7 +19,8 @@ import java.util.List; import java.util.Map; import java.util.stream.Collectors; -@Slf4j @SuppressWarnings({"unused", "SameParameterValue"}) +@Slf4j +@SuppressWarnings({"unused", "SameParameterValue"}) abstract class AbstractConfig { File file; YamlConfiguration yaml; @@ -129,8 +130,7 @@ abstract class AbstractConfig { final ConfigurationSection section = yaml.getConfigurationSection(path); if (section != null) { for (String key : section.getKeys(false)) { - @SuppressWarnings("unchecked") - final T val = (T) section.get(key); + @SuppressWarnings("unchecked") final T val = (T) section.get(key); if (val != null) { builder.put(key, val); } diff --git a/src/main/java/com/alttd/easter/config/Config.java b/src/main/java/com/alttd/easter/config/Config.java index b683499..7341cb7 100644 --- a/src/main/java/com/alttd/easter/config/Config.java +++ b/src/main/java/com/alttd/easter/config/Config.java @@ -9,16 +9,17 @@ import java.io.File; import java.util.ArrayList; import java.util.List; -@Slf4j public class Config extends AbstractConfig{ +@Slf4j +public class Config extends AbstractConfig { static Config config; Config() { super( new File(File.separator - + "mnt" + File.separator - + "configs" + File.separator - + "Easter"), + + "mnt" + File.separator + + "configs" + File.separator + + "Easter"), "config.yml"); } @@ -58,7 +59,9 @@ import java.util.List; public static Location getLocation(org.bukkit.Server server) { World world = server.getWorld(WORLD); - if (world == null) return null; + if (world == null) { + return null; + } return new Location(world, X, Y, Z, YAW, PITCH); } } @@ -73,7 +76,9 @@ import java.util.List; LIST = new ArrayList<>(); if (raw != null) { for (Object o : raw) { - if (o instanceof ItemStack item) LIST.add(item); + if (o instanceof ItemStack item) { + LIST.add(item); + } } } // ensure path exists @@ -86,7 +91,9 @@ import java.util.List; } public static ItemStack getRandomPrize() { - if (LIST.isEmpty()) return null; + if (LIST.isEmpty()) { + return null; + } return LIST.get((int) (Math.random() * LIST.size())).clone(); } } diff --git a/src/main/java/com/alttd/easter/config/Messages.java b/src/main/java/com/alttd/easter/config/Messages.java index 9cb3ea7..35c1b89 100644 --- a/src/main/java/com/alttd/easter/config/Messages.java +++ b/src/main/java/com/alttd/easter/config/Messages.java @@ -8,9 +8,9 @@ public class Messages extends AbstractConfig { Messages() { super( new File(File.separator - + "mnt" + File.separator - + "configs" + File.separator - + "Easter"), + + "mnt" + File.separator + + "configs" + File.separator + + "Easter"), "messages.yml"); } diff --git a/src/main/java/com/alttd/easter/data/DataManager.java b/src/main/java/com/alttd/easter/data/DataManager.java index 46703d3..e6beb59 100644 --- a/src/main/java/com/alttd/easter/data/DataManager.java +++ b/src/main/java/com/alttd/easter/data/DataManager.java @@ -18,7 +18,10 @@ public class DataManager { this.file = new File(plugin.getDataFolder(), "data.yml"); this.yaml = new YamlConfiguration(); if (file.exists()) { - try { yaml.load(file); } catch (Exception ignored) {} + try { + yaml.load(file); + } catch (Exception ignored) { + } } load(); } @@ -29,10 +32,15 @@ public class DataManager { UUID uuid = UUID.fromString(key); List list = yaml.getStringList(key); Set types = list.stream().map(s -> { - try { return EggType.valueOf(s); } catch (Exception e) { return null; } + try { + return EggType.valueOf(s); + } catch (Exception e) { + return null; + } }).filter(Objects::nonNull).collect(Collectors.toSet()); playerEggs.put(uuid, types); - } catch (IllegalArgumentException ignored) {} + } catch (IllegalArgumentException ignored) { + } } } @@ -41,7 +49,10 @@ public class DataManager { List list = e.getValue().stream().map(Enum::name).toList(); yaml.set(e.getKey().toString(), list); } - try { yaml.save(file); } catch (IOException ignored) {} + try { + yaml.save(file); + } catch (IOException ignored) { + } } public Set getPlayerEggs(UUID uuid) { diff --git a/src/main/java/com/alttd/easter/egg/EggType.java b/src/main/java/com/alttd/easter/egg/EggType.java index 3b0b35f..bdce9fe 100644 --- a/src/main/java/com/alttd/easter/egg/EggType.java +++ b/src/main/java/com/alttd/easter/egg/EggType.java @@ -40,7 +40,9 @@ public enum EggType { public static EggType fromEntityType(EntityType entityType) { for (EggType type : values()) { - if (type.entityType == entityType) return type; + if (type.entityType == entityType) { + return type; + } } return null; } diff --git a/src/main/java/com/alttd/easter/glow/GlowManager.java b/src/main/java/com/alttd/easter/glow/GlowManager.java index 1a5b270..7de344b 100644 --- a/src/main/java/com/alttd/easter/glow/GlowManager.java +++ b/src/main/java/com/alttd/easter/glow/GlowManager.java @@ -25,28 +25,47 @@ public class GlowManager { team.setColor(colorFor(type)); } String entry = entity.getUniqueId().toString(); - if (!team.hasEntry(entry)) team.addEntry(entry); + if (!team.hasEntry(entry)) { + team.addEntry(entry); + } } private ChatColor colorFor(EggType type) { switch (type) { - case BROWN_HUSK: return ChatColor.DARK_RED; // closest - case RED_SPIDER: return ChatColor.RED; - case ORANGE_BLAZE: return ChatColor.GOLD; - case YELLOW_PIGLIN: return ChatColor.YELLOW; - case LIME_CREEPER: return ChatColor.GREEN; - case GREEN_ZOMBIE: return ChatColor.DARK_GREEN; - case LIGHT_BLUE_STRAY: return ChatColor.AQUA; - case CYAN_GUARDIAN: return ChatColor.DARK_AQUA; - case BLUE_WARDEN: return ChatColor.BLUE; - case PURPLE_ENDER_DRAGON: return ChatColor.DARK_PURPLE; - case MAGENTA_ENDERMAN: return ChatColor.LIGHT_PURPLE; - case PINK_HOGLIN: return ChatColor.LIGHT_PURPLE; - case WHITE_SKELETON: return ChatColor.WHITE; - case LIGHT_GRAY_SILVERFISH: return ChatColor.GRAY; - case GRAY_WITHER: return ChatColor.DARK_GRAY; - case BLACK_WITHER_SKELETON: return ChatColor.BLACK; - default: return ChatColor.WHITE; + case BROWN_HUSK: + return ChatColor.DARK_RED; // closest + case RED_SPIDER: + return ChatColor.RED; + case ORANGE_BLAZE: + return ChatColor.GOLD; + case YELLOW_PIGLIN: + return ChatColor.YELLOW; + case LIME_CREEPER: + return ChatColor.GREEN; + case GREEN_ZOMBIE: + return ChatColor.DARK_GREEN; + case LIGHT_BLUE_STRAY: + return ChatColor.AQUA; + case CYAN_GUARDIAN: + return ChatColor.DARK_AQUA; + case BLUE_WARDEN: + return ChatColor.BLUE; + case PURPLE_ENDER_DRAGON: + return ChatColor.DARK_PURPLE; + case MAGENTA_ENDERMAN: + return ChatColor.LIGHT_PURPLE; + case PINK_HOGLIN: + return ChatColor.LIGHT_PURPLE; + case WHITE_SKELETON: + return ChatColor.WHITE; + case LIGHT_GRAY_SILVERFISH: + return ChatColor.GRAY; + case GRAY_WITHER: + return ChatColor.DARK_GRAY; + case BLACK_WITHER_SKELETON: + return ChatColor.BLACK; + default: + return ChatColor.WHITE; } } } diff --git a/src/main/java/com/alttd/easter/gui/TurnInGuiManager.java b/src/main/java/com/alttd/easter/gui/TurnInGuiManager.java index 62b12bb..657b560 100644 --- a/src/main/java/com/alttd/easter/gui/TurnInGuiManager.java +++ b/src/main/java/com/alttd/easter/gui/TurnInGuiManager.java @@ -28,7 +28,9 @@ public class TurnInGuiManager implements Listener { // crude strip of minimessage tags for inventory title String mm = Messages.RABBIT.GUI_TITLE; String plain = mm.replaceAll("<[^>]+>", ""); - if (plain.isBlank()) plain = "Turn in Eggs"; + if (plain.isBlank()) { + plain = "Turn in Eggs"; + } return plain; } @@ -40,10 +42,16 @@ public class TurnInGuiManager implements Listener { @EventHandler public void onClick(InventoryClickEvent event) { - if (!(event.getWhoClicked() instanceof Player player)) return; + if (!(event.getWhoClicked() instanceof Player player)) { + return; + } Inventory top = openInventories.get(player.getUniqueId()); - if (top == null) return; - if (!event.getView().getTopInventory().equals(top)) return; + if (top == null) { + return; + } + if (!event.getView().getTopInventory().equals(top)) { + return; + } // If clicking in player inventory with shift-click, prevent moving non-egg items into GUI if (event.isShiftClick() && event.getClickedInventory() != null && event.getClickedInventory().equals(player.getInventory())) { @@ -68,14 +76,20 @@ public class TurnInGuiManager implements Listener { public void onClose(InventoryCloseEvent event) { Player player = (Player) event.getPlayer(); Inventory top = openInventories.remove(player.getUniqueId()); - if (top == null) return; - if (!event.getInventory().equals(top)) return; + if (top == null) { + return; + } + if (!event.getInventory().equals(top)) { + return; + } // collect egg items and clear them from the GUI so they don't drop Set submitted = new HashSet<>(); for (ItemStack item : top.getContents()) { if (ItemUtils.isEggItem(item)) { EggType type = ItemUtils.getEggType(item); - if (type != null) submitted.add(type); + if (type != null) { + submitted.add(type); + } } } top.clear(); @@ -90,24 +104,26 @@ public class TurnInGuiManager implements Listener { List colors = submitted.stream().map(ItemUtils::colorName).toList(); if (colors.size() == 1) { player.sendRichMessage(Messages.RABBIT.ONE_EGG, - net.kyori.adventure.text.minimessage.tag.resolver.Placeholder.parsed("player", player.getName()), - net.kyori.adventure.text.minimessage.tag.resolver.Placeholder.parsed("egg1", colors.getFirst()) - ); + net.kyori.adventure.text.minimessage.tag.resolver.Placeholder.parsed("player", player.getName()), + net.kyori.adventure.text.minimessage.tag.resolver.Placeholder.parsed("egg1", colors.getFirst()) + ); } else { String c1 = !colors.isEmpty() ? colors.get(0) : ""; String c2 = colors.size() > 1 ? colors.get(1) : ""; String c3 = colors.size() > 2 ? colors.get(2) : ""; player.sendRichMessage(Messages.RABBIT.MULTI_EGGS, - net.kyori.adventure.text.minimessage.tag.resolver.Placeholder.parsed("player", player.getName()), - net.kyori.adventure.text.minimessage.tag.resolver.Placeholder.parsed("egg1", c1), - net.kyori.adventure.text.minimessage.tag.resolver.Placeholder.parsed("egg2", c2), - net.kyori.adventure.text.minimessage.tag.resolver.Placeholder.parsed("egg3", c3) - ); + net.kyori.adventure.text.minimessage.tag.resolver.Placeholder.parsed("player", player.getName()), + net.kyori.adventure.text.minimessage.tag.resolver.Placeholder.parsed("egg1", c1), + net.kyori.adventure.text.minimessage.tag.resolver.Placeholder.parsed("egg2", c2), + net.kyori.adventure.text.minimessage.tag.resolver.Placeholder.parsed("egg3", c3) + ); } int total = dataManager.getPlayerEggs(player.getUniqueId()).size(); if (total % 4 == 0) { var prize = com.alttd.easter.config.Config.PRIZES.getRandomPrize(); - if (prize != null) player.getInventory().addItem(prize); + if (prize != null) { + player.getInventory().addItem(prize); + } player.sendRichMessage(Messages.RABBIT.REWARD); } } diff --git a/src/main/java/com/alttd/easter/listeners/SpawnListener.java b/src/main/java/com/alttd/easter/listeners/SpawnListener.java index fbb0c4f..a2355db 100644 --- a/src/main/java/com/alttd/easter/listeners/SpawnListener.java +++ b/src/main/java/com/alttd/easter/listeners/SpawnListener.java @@ -26,13 +26,21 @@ public class SpawnListener implements Listener { @EventHandler public void onNaturalSpawn(CreatureSpawnEvent event) { - if (event.getSpawnReason() != CreatureSpawnEvent.SpawnReason.NATURAL) return; - if (!(event.getEntity() instanceof Creature creature)) return; + if (event.getSpawnReason() != CreatureSpawnEvent.SpawnReason.NATURAL) { + return; + } + if (!(event.getEntity() instanceof Creature creature)) { + return; + } EntityType type = event.getEntityType(); EggType eggType = EggType.fromEntityType(type); - if (eggType == null) return; + if (eggType == null) { + return; + } double chance = Config.EGGS.SPAWN_CHANCE; - if (ThreadLocalRandom.current().nextDouble() >= chance) return; + if (ThreadLocalRandom.current().nextDouble() >= chance) { + return; + } ItemStack eggItem = ItemUtils.createEggItem(eggType); EntityEquipment equipment = creature.getEquipment(); diff --git a/src/main/java/com/alttd/easter/npc/RabbitNpcManager.java b/src/main/java/com/alttd/easter/npc/RabbitNpcManager.java index 446ccee..21787dd 100644 --- a/src/main/java/com/alttd/easter/npc/RabbitNpcManager.java +++ b/src/main/java/com/alttd/easter/npc/RabbitNpcManager.java @@ -16,7 +16,7 @@ import org.bukkit.event.player.PlayerInteractAtEntityEvent; import org.bukkit.persistence.PersistentDataType; import org.bukkit.plugin.Plugin; -import java.util.*; +import java.util.UUID; @SuppressWarnings("ClassCanBeRecord") public class RabbitNpcManager implements Listener { @@ -46,17 +46,21 @@ public class RabbitNpcManager implements Listener { } } var loc = Config.RABBIT.getLocation(plugin.getServer()); - if (loc == null) return; + if (loc == null) { + return; + } Rabbit rabbit = (Rabbit) loc.getWorld().spawnEntity(loc, EntityType.RABBIT); rabbit.setCustomNameVisible(true); rabbit.customName(net.kyori.adventure.text.Component.text("Easter Bunny")); - rabbit.getPersistentDataContainer().set(Keys.RABBIT_NPC, PersistentDataType.BYTE, (byte)1); + rabbit.getPersistentDataContainer().set(Keys.RABBIT_NPC, PersistentDataType.BYTE, (byte) 1); rabbitId = rabbit.getUniqueId(); } @EventHandler public void onInteract(PlayerInteractAtEntityEvent event) { - if (!(event.getRightClicked() instanceof Rabbit) && !(event.getRightClicked() instanceof org.bukkit.entity.LivingEntity le && le.getPersistentDataContainer().has(Keys.RABBIT_NPC, PersistentDataType.BYTE))) return; + if (!(event.getRightClicked() instanceof Rabbit) && !(event.getRightClicked() instanceof org.bukkit.entity.LivingEntity le && le.getPersistentDataContainer().has(Keys.RABBIT_NPC, PersistentDataType.BYTE))) { + return; + } event.setCancelled(true); Player player = event.getPlayer(); // Right click -> open GUI @@ -65,13 +69,19 @@ public class RabbitNpcManager implements Listener { @EventHandler public void onLeftClick(EntityDamageByEntityEvent event) { - if (!(event.getEntity() instanceof org.bukkit.entity.LivingEntity le)) return; - if (!le.getPersistentDataContainer().has(Keys.RABBIT_NPC, PersistentDataType.BYTE)) return; - if (!(event.getDamager() instanceof Player player)) return; + if (!(event.getEntity() instanceof org.bukkit.entity.LivingEntity le)) { + return; + } + if (!le.getPersistentDataContainer().has(Keys.RABBIT_NPC, PersistentDataType.BYTE)) { + return; + } + if (!(event.getDamager() instanceof Player player)) { + return; + } event.setCancelled(true); player.sendRichMessage(Messages.RABBIT.LEFT_CLICK_INTRO, - Placeholder.parsed("player", player.getName()) - ); + Placeholder.parsed("player", player.getName()) + ); } private void openTurnIn(Player player) { diff --git a/src/main/java/com/alttd/easter/util/ItemUtils.java b/src/main/java/com/alttd/easter/util/ItemUtils.java index c679d80..87eb318 100644 --- a/src/main/java/com/alttd/easter/util/ItemUtils.java +++ b/src/main/java/com/alttd/easter/util/ItemUtils.java @@ -45,14 +45,20 @@ public final class ItemUtils { } public static boolean isEggItem(ItemStack item) { - if (item == null) return false; + if (item == null) { + return false; + } ItemMeta meta = item.getItemMeta(); - if (meta == null) return false; + 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; + if (!isEggItem(item)) { + return null; + } String name = item.getItemMeta().getPersistentDataContainer().get(Keys.EGG_ITEM, PersistentDataType.STRING); try { return name == null ? null : EggType.valueOf(name); @@ -65,11 +71,14 @@ public final class ItemUtils { String[] parts = name.toLowerCase().split("_"); List out = new ArrayList<>(); for (String p : parts) { - if (p.isEmpty()) continue; + if (p.isEmpty()) { + continue; + } out.add(Character.toUpperCase(p.charAt(0)) + p.substring(1)); } return String.join(" ", out); } - private ItemUtils() {} + private ItemUtils() { + } } diff --git a/src/main/java/com/alttd/easter/util/Keys.java b/src/main/java/com/alttd/easter/util/Keys.java index 250a8e7..2d1bd88 100644 --- a/src/main/java/com/alttd/easter/util/Keys.java +++ b/src/main/java/com/alttd/easter/util/Keys.java @@ -8,5 +8,6 @@ public final class Keys { public static final NamespacedKey EGG_ENTITY = new NamespacedKey(Easter.getPlugin(Easter.class), "egg-entity"); public static final NamespacedKey RABBIT_NPC = new NamespacedKey(Easter.getPlugin(Easter.class), "rabbit-npc"); - private Keys() {} + private Keys() { + } } diff --git a/src/main/resources/plugin.yml b/src/main/resources/plugin.yml index 1326b1f..86eba80 100644 --- a/src/main/resources/plugin.yml +++ b/src/main/resources/plugin.yml @@ -8,7 +8,7 @@ commands: easter: description: Easter main command usage: / - aliases: [easter] + aliases: [ easter ] permission: playerutils.use permissions: easter.reload: