Track eggs turned in by players and display sorted list
This commit is contained in:
parent
c6d7f02cef
commit
e46e8b2e32
|
|
@ -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();
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user