Track eggs turned in by players and display sorted list

This commit is contained in:
akastijn 2026-04-05 16:46:42 +02:00
parent c6d7f02cef
commit e46e8b2e32
3 changed files with 28 additions and 3 deletions

View File

@ -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();

View File

@ -74,6 +74,8 @@ public class Messages extends AbstractConfig {
public static String REWARD = "<green>Thank you! You've turned in 4 unique eggs and earned a prize!</green>";
public static String DUPLICATE_EGGS = "<yellow>Those are duplicates I already have. Bring me new colors!</yellow>";
public static String GUI_TITLE = "<gold>Turn in Eggs</gold>";
public static String TURNED_IN_NONE = "<yellow>You haven't turned in any eggs yet.</yellow>";
public static String TURNED_IN_LIST = "<green>You have turned in: <eggs></green>";
@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);
}
}

View File

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