diff --git a/src/main/java/com/alttd/easter/Easter.java b/src/main/java/com/alttd/easter/Easter.java index 6c99a1a..1d81f28 100644 --- a/src/main/java/com/alttd/easter/Easter.java +++ b/src/main/java/com/alttd/easter/Easter.java @@ -25,7 +25,7 @@ public final class Easter extends JavaPlugin { this.dataManager = new DataManager(this); this.glowManager = new GlowManager(this); this.turnInGuiManager = new TurnInGuiManager(dataManager); - this.rabbitNpcManager = new RabbitNpcManager(this, turnInGuiManager); + this.rabbitNpcManager = new RabbitNpcManager(this, turnInGuiManager, dataManager); registerCommands(); registerEvents(); registerSchedulers(); diff --git a/src/main/java/com/alttd/easter/config/Messages.java b/src/main/java/com/alttd/easter/config/Messages.java index 9d1f819..a738554 100644 --- a/src/main/java/com/alttd/easter/config/Messages.java +++ b/src/main/java/com/alttd/easter/config/Messages.java @@ -74,6 +74,8 @@ public class Messages extends AbstractConfig { public static String REWARD = "Thank you! You've turned in 4 unique eggs and earned a prize!"; public static String DUPLICATE_EGGS = "Those are duplicates I already have. Bring me new colors!"; public static String GUI_TITLE = "Turn in Eggs"; + public static String TURNED_IN_NONE = "You haven't turned in any eggs yet."; + public static String TURNED_IN_LIST = "You have turned in: "; @SuppressWarnings("unused") private static void load() { @@ -83,6 +85,8 @@ public class Messages extends AbstractConfig { REWARD = config.getString(prefix, "reward", REWARD); DUPLICATE_EGGS = config.getString(prefix, "duplicate-eggs", DUPLICATE_EGGS); GUI_TITLE = config.getString(prefix, "gui-title", GUI_TITLE); + TURNED_IN_NONE = config.getString(prefix, "turned-in-none", TURNED_IN_NONE); + TURNED_IN_LIST = config.getString(prefix, "turned-in-list", TURNED_IN_LIST); } } diff --git a/src/main/java/com/alttd/easter/npc/RabbitNpcManager.java b/src/main/java/com/alttd/easter/npc/RabbitNpcManager.java index c548dd4..ab2241e 100644 --- a/src/main/java/com/alttd/easter/npc/RabbitNpcManager.java +++ b/src/main/java/com/alttd/easter/npc/RabbitNpcManager.java @@ -2,7 +2,10 @@ package com.alttd.easter.npc; import com.alttd.easter.config.Config; import com.alttd.easter.config.Messages; +import com.alttd.easter.data.DataManager; +import com.alttd.easter.egg.EggType; import com.alttd.easter.gui.TurnInGuiManager; +import com.alttd.easter.util.ItemUtils; import com.alttd.easter.util.Keys; import net.kyori.adventure.text.Component; import net.kyori.adventure.text.minimessage.tag.resolver.Placeholder; @@ -16,15 +19,21 @@ import org.bukkit.event.player.PlayerInteractAtEntityEvent; import org.bukkit.persistence.PersistentDataType; import org.bukkit.plugin.Plugin; +import java.util.Comparator; +import java.util.List; +import java.util.stream.Collectors; + @SuppressWarnings("ClassCanBeRecord") public class RabbitNpcManager implements Listener { private final org.bukkit.plugin.Plugin plugin; private final com.alttd.easter.gui.TurnInGuiManager turnInGuiManager; + private final DataManager dataManager; - public RabbitNpcManager(Plugin plugin, TurnInGuiManager turnInGuiManager) { + public RabbitNpcManager(Plugin plugin, TurnInGuiManager turnInGuiManager, DataManager dataManager) { this.plugin = plugin; this.turnInGuiManager = turnInGuiManager; + this.dataManager = dataManager; spawnOrFindRabbit(); } @@ -84,10 +93,22 @@ public class RabbitNpcManager implements Listener { player.sendRichMessage(Messages.RABBIT.LEFT_CLICK_INTRO, Placeholder.parsed("player", player.getName()) ); + var eggs = dataManager.getPlayerEggs(player.getUniqueId()); + if (eggs.isEmpty()) { + player.sendRichMessage(Messages.RABBIT.TURNED_IN_NONE); + return; + } + List sorted = eggs.stream() + .sorted(Comparator.comparingInt(Enum::ordinal)) + .toList(); + String names = sorted.stream() + .map(e -> ItemUtils.prettify(e.name())) + .collect(Collectors.joining(", ")); + player.sendRichMessage(Messages.RABBIT.TURNED_IN_LIST, + Placeholder.parsed("eggs", names)); } private void openTurnIn(Player player) { - // Delegate to TurnInGuiManager which controls the inventory and submission flow turnInGuiManager.open(player); } }