Notify players when score buckets change

This commit is contained in:
2026-09-26 18:20:54 -07:00
parent e4bebd3908
commit b165d67118
4 changed files with 31 additions and 4 deletions

View File

@@ -174,19 +174,33 @@ public class ScoreKeeperPlugin extends JavaPlugin {
}
public void switchPlayerBucket(Player player, String bucketId) {
requireBucket(bucketId);
ScoreBucket bucket = requireBucket(bucketId);
UUID playerId = player.getUniqueId();
String previousBucketId = getPlayerBucket(player);
if (bucketId.equals(_defaultBucketId)) {
_playerBuckets.remove(playerId);
} else {
_playerBuckets.put(playerId, bucketId);
}
if (!previousBucketId.equals(bucketId)) {
sendBucketChangeMessage(player, bucket);
}
}
public void switchAllPlayers(String bucketId) {
requireBucket(bucketId);
Map<UUID, String> previousBuckets = new LinkedHashMap<>();
for (Player player : getServer().getOnlinePlayers()) {
previousBuckets.put(player.getUniqueId(), getPlayerBucket(player));
}
_defaultBucketId = bucketId;
_playerBuckets.clear();
ScoreBucket bucket = requireBucket(bucketId);
for (Player player : getServer().getOnlinePlayers()) {
if (!bucketId.equals(previousBuckets.get(player.getUniqueId()))) {
sendBucketChangeMessage(player, bucket);
}
}
}
// endregion
@@ -204,6 +218,15 @@ public class ScoreKeeperPlugin extends JavaPlugin {
return bucket;
}
private void sendBucketChangeMessage(Player player, ScoreBucket bucket) {
int score = getScore(player, bucket.getId());
String unit = score == 1 ? bucket.getSingular() : bucket.getPlural();
sendMessage(
player,
Component.text(
"You are now tracking " + bucket.getId() + ". You have " + score + " " + unit + "."));
}
private void loadScores() {
File scoreFile = new File(getDataFolder(), "scores.yml");
if (!scoreFile.isFile()) {

View File

@@ -103,8 +103,10 @@ public class ScoreBucketCommand implements CommandExecutor {
private void switchPlayerBucket(CommandSender sender, Player target, String bucketId) {
try {
_plugin.switchPlayerBucket(target, bucketId);
_plugin.sendMessage(
sender, Component.text(target.getName() + " is now tracking " + bucketId + "."));
if (sender != target) {
_plugin.sendMessage(
sender, Component.text(target.getName() + " is now tracking " + bucketId + "."));
}
} catch (IllegalArgumentException ex) {
sendError(sender, ex.getMessage());
}