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
new file mode 100644
index 0000000000000000000000000000000000000000..170f01516aab72e5b192695a73602ff656ef4ca5
index 0000000000000000000000000000000000000000..dcb973f658c2ff30ab014785f530a3db0aebe512
--- /dev/null
+++ b/src/main/java/net/pl3x/purpur/task/TPSBarTask.java
@@ -0,0 +1,106 @@
@@ -0,0 +1,111 @@
+package net.pl3x.purpur.task;
+
+import org.bukkit.Bukkit;
@@ -101,27 +101,30 @@ index 0000000000000000000000000000000000000000..170f01516aab72e5b192695a73602ff6
+import org.bukkit.scheduler.BukkitRunnable;
+
+public class TPSBarTask extends BukkitRunnable {
+ private final NamespacedKey key;
+ private final BossBar bossbar;
+ private static TPSBarTask instance;
+ private final NamespacedKey key;
+ private BossBar bossbar;
+
+ public TPSBarTask() {
+ instance = this;
+
+ this.key = new NamespacedKey("purpur", "tpsbar");
+ }
+
+ BossBar bossbar = Bukkit.getBossBar(key);
+ public BossBar getBossBar() {
+ 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);
+ bossbar.setProgress(1.0D);
+
+ this.bossbar = bossbar;
+ return bossbar;
+ }
+
+ @Override
+ public void run() {
+ BossBar bossbar = getBossBar();
+ if (bossbar.getPlayers().isEmpty()) {
+ return;
+ }
@@ -164,20 +167,22 @@ index 0000000000000000000000000000000000000000..170f01516aab72e5b192695a73602ff6
+ @Override
+ public void cancel() {
+ super.cancel();
+ BossBar bossbar = getBossBar();
+ bossbar.setVisible(false);
+ bossbar.removeAll();
+ Bukkit.removeBossBar(key);
+ }
+
+ public static void removePlayer(Player player) {
+ instance.bossbar.removePlayer(player);
+ instance.getBossBar().removePlayer(player);
+ }
+
+ public static void togglePlayer(Player player) {
+ if (instance.bossbar.getPlayers().contains(player)) {
+ instance.bossbar.removePlayer(player);
+ BossBar bossbar = instance.getBossBar();
+ if (bossbar.getPlayers().contains(player)) {
+ bossbar.removePlayer(player);
+ } else {
+ instance.bossbar.addPlayer(player);
+ bossbar.addPlayer(player);
+ instance.run();
+ }
+ }