mirror of
https://github.com/PurpurMC/Purpur.git
synced 2026-02-17 16:37:43 +01:00
Add option to update tab list with AFK players
This commit is contained in:
@@ -341,10 +341,15 @@ idle-timeout
|
||||
* tick-nearby-entities
|
||||
- **default**: false
|
||||
- **description**: Should entities tick normally when nearby players are afk. False will require at least 1 non-afk player in order to tick.
|
||||
|
||||
* count-as-sleeping
|
||||
- **default**: false
|
||||
- **description**: Should AFK players count as sleeping? (allows active players to skip night by sleeping, even if AFK players are not in bed)
|
||||
|
||||
* update-tab-list
|
||||
- **default**: true
|
||||
- **description**: Should AFK players have their name updated in the tab list (puts `[AFK]` in front of their name)
|
||||
|
||||
* broadcast
|
||||
* away
|
||||
- **default**: "&e&o{player} is now AFK"
|
||||
|
||||
@@ -1,20 +1,20 @@
|
||||
From ee58a30e490ea342f7ae1c7fa4b81ac972608fce Mon Sep 17 00:00:00 2001
|
||||
From 07af55508e37f5acc40cfbbfdb7b49e9af3ef34b Mon Sep 17 00:00:00 2001
|
||||
From: William Blake Galbreath <blake.galbreath@gmail.com>
|
||||
Date: Thu, 8 Aug 2019 15:29:15 -0500
|
||||
Subject: [PATCH] Implement AFK API
|
||||
|
||||
---
|
||||
.../java/net/minecraft/server/Entity.java | 1 +
|
||||
.../net/minecraft/server/EntityHuman.java | 9 +++++
|
||||
.../net/minecraft/server/EntityPlayer.java | 39 +++++++++++++++++++
|
||||
.../net/minecraft/server/IEntityAccess.java | 34 ++++++----------
|
||||
.../net/minecraft/server/EntityHuman.java | 9 ++++
|
||||
.../net/minecraft/server/EntityPlayer.java | 43 +++++++++++++++++++
|
||||
.../net/minecraft/server/IEntityAccess.java | 34 ++++++---------
|
||||
.../net/minecraft/server/IEntitySelector.java | 2 +
|
||||
.../minecraft/server/PlayerConnection.java | 10 +++++
|
||||
.../net/minecraft/server/WorldServer.java | 4 +-
|
||||
.../net/pl3x/purpur/PurpurWorldConfig.java | 14 +++++++
|
||||
.../net/pl3x/purpur/PurpurWorldConfig.java | 16 +++++++
|
||||
.../craftbukkit/entity/CraftPlayer.java | 17 ++++++++
|
||||
.../java/org/spigotmc/ActivationRange.java | 1 +
|
||||
10 files changed, 107 insertions(+), 24 deletions(-)
|
||||
10 files changed, 113 insertions(+), 24 deletions(-)
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/server/Entity.java b/src/main/java/net/minecraft/server/Entity.java
|
||||
index 770d21468..2ff5a12d8 100644
|
||||
@@ -49,10 +49,10 @@ index 2a943f316..8ee2e6c7f 100644
|
||||
super(EntityTypes.PLAYER, world);
|
||||
this.bY = ItemStack.a;
|
||||
diff --git a/src/main/java/net/minecraft/server/EntityPlayer.java b/src/main/java/net/minecraft/server/EntityPlayer.java
|
||||
index 622899d8f..64c274470 100644
|
||||
index 622899d8f..032cbbcb2 100644
|
||||
--- a/src/main/java/net/minecraft/server/EntityPlayer.java
|
||||
+++ b/src/main/java/net/minecraft/server/EntityPlayer.java
|
||||
@@ -1593,8 +1593,47 @@ public class EntityPlayer extends EntityHuman implements ICrafting {
|
||||
@@ -1593,8 +1593,51 @@ public class EntityPlayer extends EntityHuman implements ICrafting {
|
||||
|
||||
public void resetIdleTimer() {
|
||||
this.cm = SystemUtils.getMonotonicMillis();
|
||||
@@ -83,6 +83,10 @@ index 622899d8f..64c274470 100644
|
||||
+ ((WorldServer) world).getMinecraftServer().server.broadcastMessage(event.getBroadcastMsg().replace("{player}", getName()));
|
||||
+ }
|
||||
+
|
||||
+ if (world.purpurConfig.idleTimeoutUpdateTabList) {
|
||||
+ getBukkitEntity().setPlayerListName((setAfk ? "[AFK] " : "") + getName());
|
||||
+ }
|
||||
+
|
||||
+ ((WorldServer) world).everyoneSleeping();
|
||||
+ }
|
||||
+
|
||||
@@ -223,7 +227,7 @@ index 50fcab233..30b2bb0e2 100644
|
||||
} else if (entityplayer.isSleeping()) {
|
||||
++j;
|
||||
diff --git a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java
|
||||
index b1dcb5f8d..d3f4b7f01 100644
|
||||
index b1dcb5f8d..f4fc0b014 100644
|
||||
--- a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java
|
||||
+++ b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java
|
||||
@@ -1,6 +1,7 @@
|
||||
@@ -234,19 +238,21 @@ index b1dcb5f8d..d3f4b7f01 100644
|
||||
import org.bukkit.configuration.file.YamlConfiguration;
|
||||
import org.spigotmc.SpigotWorldConfig;
|
||||
|
||||
@@ -131,6 +132,19 @@ public class PurpurWorldConfig {
|
||||
@@ -131,6 +132,21 @@ public class PurpurWorldConfig {
|
||||
limitVillagerIronGolemSpawns = getInt("limit-villager-iron-golem-spawns", limitVillagerIronGolemSpawns);
|
||||
}
|
||||
|
||||
+ public boolean idleTimeoutKick = true;
|
||||
+ public boolean idleTimeoutTickNearbyEntities = false;
|
||||
+ public boolean idleTimeoutCountAsSleeping = false;
|
||||
+ public boolean idleTimeoutUpdateTabList = true;
|
||||
+ public String idleTimeoutBroadcastAway = "&e&o{player} is now AFK";
|
||||
+ public String idleTimeoutBroadcastBack = "&e&o{player} is no longer AFK";
|
||||
+ private void playerIdleTimeoutSettings() {
|
||||
+ idleTimeoutKick = getBoolean("idle-timeout.kick-if-idle", idleTimeoutKick);
|
||||
+ idleTimeoutTickNearbyEntities = getBoolean("idle-timeout.tick-nearby-entities", idleTimeoutTickNearbyEntities);
|
||||
+ idleTimeoutCountAsSleeping = getBoolean("idle-timeout.count-as-sleeping", idleTimeoutCountAsSleeping);
|
||||
+ idleTimeoutUpdateTabList = getBoolean("idle-timeout.update-tab-list", idleTimeoutUpdateTabList);
|
||||
+ idleTimeoutBroadcastAway = ChatColor.translateAlternateColorCodes('&', getString("idle-timeout.broadcast.away", idleTimeoutBroadcastAway));
|
||||
+ idleTimeoutBroadcastBack = ChatColor.translateAlternateColorCodes('&', getString("idle-timeout.broadcast.back", idleTimeoutBroadcastBack));
|
||||
+ }
|
||||
|
||||
Reference in New Issue
Block a user