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);
}
}