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.dataManager = new DataManager(this);
|
||||||
this.glowManager = new GlowManager(this);
|
this.glowManager = new GlowManager(this);
|
||||||
this.turnInGuiManager = new TurnInGuiManager(dataManager);
|
this.turnInGuiManager = new TurnInGuiManager(dataManager);
|
||||||
this.rabbitNpcManager = new RabbitNpcManager(this, turnInGuiManager);
|
this.rabbitNpcManager = new RabbitNpcManager(this, turnInGuiManager, dataManager);
|
||||||
registerCommands();
|
registerCommands();
|
||||||
registerEvents();
|
registerEvents();
|
||||||
registerSchedulers();
|
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 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 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 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")
|
@SuppressWarnings("unused")
|
||||||
private static void load() {
|
private static void load() {
|
||||||
|
|
@ -83,6 +85,8 @@ public class Messages extends AbstractConfig {
|
||||||
REWARD = config.getString(prefix, "reward", REWARD);
|
REWARD = config.getString(prefix, "reward", REWARD);
|
||||||
DUPLICATE_EGGS = config.getString(prefix, "duplicate-eggs", DUPLICATE_EGGS);
|
DUPLICATE_EGGS = config.getString(prefix, "duplicate-eggs", DUPLICATE_EGGS);
|
||||||
GUI_TITLE = config.getString(prefix, "gui-title", GUI_TITLE);
|
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.Config;
|
||||||
import com.alttd.easter.config.Messages;
|
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.gui.TurnInGuiManager;
|
||||||
|
import com.alttd.easter.util.ItemUtils;
|
||||||
import com.alttd.easter.util.Keys;
|
import com.alttd.easter.util.Keys;
|
||||||
import net.kyori.adventure.text.Component;
|
import net.kyori.adventure.text.Component;
|
||||||
import net.kyori.adventure.text.minimessage.tag.resolver.Placeholder;
|
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.persistence.PersistentDataType;
|
||||||
import org.bukkit.plugin.Plugin;
|
import org.bukkit.plugin.Plugin;
|
||||||
|
|
||||||
|
import java.util.Comparator;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
@SuppressWarnings("ClassCanBeRecord")
|
@SuppressWarnings("ClassCanBeRecord")
|
||||||
public class RabbitNpcManager implements Listener {
|
public class RabbitNpcManager implements Listener {
|
||||||
|
|
||||||
private final org.bukkit.plugin.Plugin plugin;
|
private final org.bukkit.plugin.Plugin plugin;
|
||||||
private final com.alttd.easter.gui.TurnInGuiManager turnInGuiManager;
|
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.plugin = plugin;
|
||||||
this.turnInGuiManager = turnInGuiManager;
|
this.turnInGuiManager = turnInGuiManager;
|
||||||
|
this.dataManager = dataManager;
|
||||||
spawnOrFindRabbit();
|
spawnOrFindRabbit();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -84,10 +93,22 @@ public class RabbitNpcManager implements Listener {
|
||||||
player.sendRichMessage(Messages.RABBIT.LEFT_CLICK_INTRO,
|
player.sendRichMessage(Messages.RABBIT.LEFT_CLICK_INTRO,
|
||||||
Placeholder.parsed("player", player.getName())
|
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) {
|
private void openTurnIn(Player player) {
|
||||||
// Delegate to TurnInGuiManager which controls the inventory and submission flow
|
|
||||||
turnInGuiManager.open(player);
|
turnInGuiManager.open(player);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user