mirror of
https://github.com/PurpurMC/Purpur.git
synced 2026-02-17 16:37:43 +01:00
Fix #287 - TPSBarTask NPE (again)
This commit is contained in:
@@ -17,18 +17,10 @@ index a551636c2c59e68a5abb1cd5611c1d5c7e36f514..b7663a3d64ae5202abb93eabba6ec013
|
||||
|
||||
if (commanddispatcher_servertype.d) {
|
||||
diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java
|
||||
index 45cb8681fd0942084b56eb8d45390c2dbc8a4f3d..966b6e2f9b7c473d8dfcae205d8ef8f08912ded9 100644
|
||||
index 45cb8681fd0942084b56eb8d45390c2dbc8a4f3d..16c20b3e7dcbbdb08e8c2a15074495eacc001e70 100644
|
||||
--- a/src/main/java/net/minecraft/server/MinecraftServer.java
|
||||
+++ b/src/main/java/net/minecraft/server/MinecraftServer.java
|
||||
@@ -584,6 +584,7 @@ public abstract class MinecraftServer extends IAsyncTaskHandlerReentrant<TickTas
|
||||
this.serverConnection.acceptConnections();
|
||||
// CraftBukkit end
|
||||
|
||||
+ net.pl3x.purpur.task.TPSBarTask.start(); // Purpur
|
||||
}
|
||||
|
||||
protected void updateWorldSettings() {}
|
||||
@@ -979,6 +980,7 @@ public abstract class MinecraftServer extends IAsyncTaskHandlerReentrant<TickTas
|
||||
@@ -979,6 +979,7 @@ public abstract class MinecraftServer extends IAsyncTaskHandlerReentrant<TickTas
|
||||
this.safeShutdown(flag, false);
|
||||
}
|
||||
public void safeShutdown(boolean flag, boolean isRestarting) {
|
||||
@@ -36,6 +28,19 @@ index 45cb8681fd0942084b56eb8d45390c2dbc8a4f3d..966b6e2f9b7c473d8dfcae205d8ef8f0
|
||||
this.isRunning = false;
|
||||
this.isRestarting = isRestarting;
|
||||
this.hasLoggedStop = true; // Paper
|
||||
diff --git a/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java b/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java
|
||||
index 28d47ef97939309ce26b6e4cae14925b510755fd..6d39b777a0f708d61f611d9c16c3b3c48f89d477 100644
|
||||
--- a/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java
|
||||
+++ b/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java
|
||||
@@ -323,6 +323,8 @@ public class DedicatedServer extends MinecraftServer implements IMinecraftServer
|
||||
MinecraftServerBeans.a((MinecraftServer) this);
|
||||
}
|
||||
|
||||
+ net.pl3x.purpur.task.TPSBarTask.start(); // Purpur
|
||||
+
|
||||
return true;
|
||||
}
|
||||
}
|
||||
diff --git a/src/main/java/net/minecraft/server/players/PlayerList.java b/src/main/java/net/minecraft/server/players/PlayerList.java
|
||||
index c316b0468c53825f90d9bc2ad40d655d92857715..d710834422afa1d4336f68e2425aaffd64d444e2 100644
|
||||
--- a/src/main/java/net/minecraft/server/players/PlayerList.java
|
||||
@@ -84,10 +89,10 @@ index 0000000000000000000000000000000000000000..807f5709af7fd9497633ecfc9e932f0d
|
||||
+}
|
||||
diff --git a/src/main/java/net/pl3x/purpur/task/TPSBarTask.java b/src/main/java/net/pl3x/purpur/task/TPSBarTask.java
|
||||
new file mode 100644
|
||||
index 0000000000000000000000000000000000000000..f9f75d96565ccee9437b7d39a98c9adf97446e51
|
||||
index 0000000000000000000000000000000000000000..a9d71d2b769b8e4e0f5039e997fc5ebc1cc9bfbb
|
||||
--- /dev/null
|
||||
+++ b/src/main/java/net/pl3x/purpur/task/TPSBarTask.java
|
||||
@@ -0,0 +1,112 @@
|
||||
@@ -0,0 +1,116 @@
|
||||
+package net.pl3x.purpur.task;
|
||||
+
|
||||
+import org.bukkit.Bukkit;
|
||||
@@ -105,12 +110,18 @@ index 0000000000000000000000000000000000000000..f9f75d96565ccee9437b7d39a98c9adf
|
||||
+ private final NamespacedKey key;
|
||||
+ private BossBar bossbar;
|
||||
+
|
||||
+ public TPSBarTask() {
|
||||
+ instance = this;
|
||||
+ private TPSBarTask() {
|
||||
+ this.key = new NamespacedKey("purpur", "tpsbar");
|
||||
+ }
|
||||
+
|
||||
+ public BossBar getBossBar() {
|
||||
+ private static TPSBarTask instance() {
|
||||
+ if (instance == null) {
|
||||
+ instance = new TPSBarTask();
|
||||
+ }
|
||||
+ return instance;
|
||||
+ }
|
||||
+
|
||||
+ private BossBar bossbar() {
|
||||
+ if (bossbar == null) {
|
||||
+ bossbar = Bukkit.getBossBar(key);
|
||||
+ if (bossbar == null) {
|
||||
@@ -124,7 +135,7 @@ index 0000000000000000000000000000000000000000..f9f75d96565ccee9437b7d39a98c9adf
|
||||
+
|
||||
+ @Override
|
||||
+ public void run() {
|
||||
+ BossBar bossbar = getBossBar();
|
||||
+ BossBar bossbar = bossbar();
|
||||
+ if (bossbar.getPlayers().isEmpty()) {
|
||||
+ return;
|
||||
+ }
|
||||
@@ -167,19 +178,18 @@ index 0000000000000000000000000000000000000000..f9f75d96565ccee9437b7d39a98c9adf
|
||||
+ @Override
|
||||
+ public void cancel() {
|
||||
+ super.cancel();
|
||||
+ BossBar bossbar = getBossBar();
|
||||
+ BossBar bossbar = bossbar();
|
||||
+ bossbar.setVisible(false);
|
||||
+ bossbar.removeAll();
|
||||
+ Bukkit.removeBossBar(key);
|
||||
+ }
|
||||
+
|
||||
+ public static void removePlayer(Player player) {
|
||||
+ BossBar bossbar = instance.getBossBar();
|
||||
+ bossbar.removePlayer(player);
|
||||
+ instance().bossbar().removePlayer(player);
|
||||
+ }
|
||||
+
|
||||
+ public static void togglePlayer(Player player) {
|
||||
+ BossBar bossbar = instance.getBossBar();
|
||||
+ BossBar bossbar = instance().bossbar();
|
||||
+ if (bossbar.getPlayers().contains(player)) {
|
||||
+ bossbar.removePlayer(player);
|
||||
+ } else {
|
||||
@@ -190,8 +200,7 @@ index 0000000000000000000000000000000000000000..f9f75d96565ccee9437b7d39a98c9adf
|
||||
+
|
||||
+ public static void start() {
|
||||
+ stop();
|
||||
+ instance = new TPSBarTask();
|
||||
+ instance.runTaskTimerAsynchronously(new MinecraftInternalPlugin(), 20L, 20L);
|
||||
+ instance().runTaskTimerAsynchronously(new MinecraftInternalPlugin(), 20L, 20L);
|
||||
+ }
|
||||
+
|
||||
+ public static void stop() {
|
||||
|
||||
Reference in New Issue
Block a user