AFK tablist should honor existing prefix/suffix

This commit is contained in:
BillyGalbreath
2022-11-28 00:56:05 -06:00
parent 47dc2e92f5
commit 3bfbda3574
6 changed files with 24 additions and 19 deletions

View File

@@ -5,10 +5,10 @@ Subject: [PATCH] AFK API
diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java
index d35eee8011e0c1a8b2885054597cfd88b1192795..e00aa16f51ec065cdce13dff0926d87e49561c8b 100644
index d35eee8011e0c1a8b2885054597cfd88b1192795..bbb02e62fe7ea9a96929563fc4ab6e82f4f35974 100644
--- a/src/main/java/net/minecraft/server/level/ServerPlayer.java
+++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java
@@ -2022,8 +2022,58 @@ public class ServerPlayer extends Player {
@@ -2022,8 +2022,63 @@ public class ServerPlayer extends Player {
public void resetLastActionTime() {
this.lastActionTime = Util.getMillis();
@@ -26,7 +26,7 @@ index d35eee8011e0c1a8b2885054597cfd88b1192795..e00aa16f51ec065cdce13dff0926d87e
+
+ String msg = afk ? org.purpurmc.purpur.PurpurConfig.afkBroadcastAway : org.purpurmc.purpur.PurpurConfig.afkBroadcastBack;
+
+ org.purpurmc.purpur.event.PlayerAFKEvent event = new org.purpurmc.purpur.event.PlayerAFKEvent(this.getBukkitEntity(), afk, level.purpurConfig.idleTimeoutKick, msg, !Bukkit.isPrimaryThread());
+ org.purpurmc.purpur.event.PlayerAFKEvent event = new org.purpurmc.purpur.event.PlayerAFKEvent(this.getBukkitEntity(), afk, this.level.purpurConfig.idleTimeoutKick, msg, !Bukkit.isPrimaryThread());
+ if (!event.callEvent() || event.shouldKick()) {
+ return;
+ }
@@ -42,15 +42,20 @@ index d35eee8011e0c1a8b2885054597cfd88b1192795..e00aa16f51ec065cdce13dff0926d87e
+ server.getPlayerList().broadcastMiniMessage(String.format(msg, this.getGameProfile().getName()), false);
+ }
+
+ if (level.purpurConfig.idleTimeoutUpdateTabList) {
+ if (this.level.purpurConfig.idleTimeoutUpdateTabList) {
+ String scoreboardName = getScoreboardName();
+ String playerListName = getBukkitEntity().getPlayerListName();
+ String[] split = playerListName.split(scoreboardName);
+ String prefix = (split.length > 0 ? split[0] : "").replace(org.purpurmc.purpur.PurpurConfig.afkTabListPrefix, "");
+ String suffix = (split.length > 1 ? split[1] : "").replace(org.purpurmc.purpur.PurpurConfig.afkTabListSuffix, "");
+ if (afk) {
+ getBukkitEntity().setPlayerListName(org.purpurmc.purpur.PurpurConfig.afkTabListPrefix + getScoreboardName() + org.purpurmc.purpur.PurpurConfig.afkTabListSuffix, true);
+ getBukkitEntity().setPlayerListName(org.purpurmc.purpur.PurpurConfig.afkTabListPrefix + suffix + scoreboardName + prefix + org.purpurmc.purpur.PurpurConfig.afkTabListSuffix, true);
+ } else {
+ getBukkitEntity().setPlayerListName(getScoreboardName());
+ getBukkitEntity().setPlayerListName(prefix + scoreboardName + suffix);
+ }
+ }
+
+ ((ServerLevel) level).updateSleepingPlayerList();
+ ((ServerLevel) this.level).updateSleepingPlayerList();
+ }
+
+ @Override