Fix tpsbar with naughty plugins

This commit is contained in:
BillyGalbreath
2021-03-23 11:57:56 -05:00
parent 75b07a03d2
commit d44f93e7eb

View File

@@ -84,10 +84,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..170f01516aab72e5b192695a73602ff656ef4ca5 index 0000000000000000000000000000000000000000..dcb973f658c2ff30ab014785f530a3db0aebe512
--- /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,106 @@ @@ -0,0 +1,111 @@
+package net.pl3x.purpur.task; +package net.pl3x.purpur.task;
+ +
+import org.bukkit.Bukkit; +import org.bukkit.Bukkit;
@@ -101,27 +101,30 @@ index 0000000000000000000000000000000000000000..170f01516aab72e5b192695a73602ff6
+import org.bukkit.scheduler.BukkitRunnable; +import org.bukkit.scheduler.BukkitRunnable;
+ +
+public class TPSBarTask extends BukkitRunnable { +public class TPSBarTask extends BukkitRunnable {
+ private final NamespacedKey key;
+ private final BossBar bossbar;
+ private static TPSBarTask instance; + private static TPSBarTask instance;
+ private final NamespacedKey key;
+ private BossBar bossbar;
+ +
+ public TPSBarTask() { + public TPSBarTask() {
+ instance = this; + instance = this;
+
+ this.key = new NamespacedKey("purpur", "tpsbar"); + this.key = new NamespacedKey("purpur", "tpsbar");
+ }
+ +
+ BossBar bossbar = Bukkit.getBossBar(key); + public BossBar getBossBar() {
+ if (bossbar == null) { + if (bossbar == null) {
+ bossbar = Bukkit.createBossBar(key, "TPS: 20.0", BarColor.RED, BarStyle.SEGMENTED_20); + bossbar = Bukkit.getBossBar(key);
+ if (bossbar == null) {
+ bossbar = Bukkit.createBossBar(key, "TPS: 20.0", BarColor.RED, BarStyle.SEGMENTED_20);
+ }
+ bossbar.setVisible(true);
+ bossbar.setProgress(1.0D);
+ } + }
+ bossbar.setVisible(true); + return bossbar;
+ bossbar.setProgress(1.0D);
+
+ this.bossbar = bossbar;
+ } + }
+ +
+ @Override + @Override
+ public void run() { + public void run() {
+ BossBar bossbar = getBossBar();
+ if (bossbar.getPlayers().isEmpty()) { + if (bossbar.getPlayers().isEmpty()) {
+ return; + return;
+ } + }
@@ -164,20 +167,22 @@ index 0000000000000000000000000000000000000000..170f01516aab72e5b192695a73602ff6
+ @Override + @Override
+ public void cancel() { + public void cancel() {
+ super.cancel(); + super.cancel();
+ BossBar bossbar = getBossBar();
+ 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) {
+ instance.bossbar.removePlayer(player); + instance.getBossBar().removePlayer(player);
+ } + }
+ +
+ public static void togglePlayer(Player player) { + public static void togglePlayer(Player player) {
+ if (instance.bossbar.getPlayers().contains(player)) { + BossBar bossbar = instance.getBossBar();
+ instance.bossbar.removePlayer(player); + if (bossbar.getPlayers().contains(player)) {
+ bossbar.removePlayer(player);
+ } else { + } else {
+ instance.bossbar.addPlayer(player); + bossbar.addPlayer(player);
+ instance.run(); + instance.run();
+ } + }
+ } + }