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