Notify players when score buckets change
This commit is contained in:
@@ -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()) {
|
||||
|
||||
@@ -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());
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user