Updated Upstream (Paper & Tuinity)

Upstream has released updates that appear to apply and compile correctly

Paper Changes:
05af2837c [CI-SKIP] Improved the annotation test output
586966949 abstract custom set tags, add entity tags
c7667378e Added PlayerLoomPatternSelectEvent
00972e80d Reimplement GS4QueryEvent
544c5c278 Re-add coral block tags (#4987)
7d56c8deb Added PlayerLecternPageChangeEvent
c7cdf255b Add BlockFailedDispenseEvent
c8a8d6fbe Added world settings for mobs picking up loot
91eda5bd3 Added ServerResourcesReloadedEvent
be81b4f5c Add a Enchantable MaterialTag
975d18703 Add doors to material tags
d075e748e colorful itemdump
f3ba3dee0 Added WorldGameRuleChangeEvent
086d20118 Guardian beam workaround
b63c890ec Support spawning item stacks
d7d74c552 added height config for bamboo
7878e3bc2 Use setAmount for Recipe Amount
50e70697b Add EntityLoadCrossbowEvent
f344e092c Add Anti-Xray bypass permission
9fd31e675 fix for nerfed slime mobs splitting
4a7962cd1 Zombie API - breaking doors
5650a41f5 Fix interact event not being called in adventure
2c9ed4335 Add PlayerFlowerPotManipulateEvent
1f32290b6 [Auto] Updated Upstream (CraftBukkit)
d87694a20 Redact Velocity forwarding secret properly (#4980)
24a0b0206 [Auto] Updated Upstream (CraftBukkit)
7681042ef [Auto] Updated Upstream (Bukkit/CraftBukkit)
7dea3dba6 [Auto] Updated Upstream (CraftBukkit)
4b3792920 JavaDoc fixes
f13b4727e Allow disabling mob spawner spawn egg transformation
525b50737 Cache burn durations
2c37d1077 Optimized tick ready check
b4000b01a Add API to get the Material of Boats and Minecarts
f1317386d Fix sign lazy initialisation
9f61759d9 Updated Upstream (CraftBukkit/Spigot) (#4972)
aaff430b6 [CI-SKIP] Use GitHub Actions for build status
9f4055d99 Fix harming potion dupe
7bfb781ff Additional Block Material API's
0eaffd008 Micro Optimize DataBits

Tuinity Changes:
9e5cabb6e Port starlight changes
This commit is contained in:
jmp
2021-01-01 15:36:31 -08:00
parent da957253a3
commit c7b279fe1b
112 changed files with 974 additions and 1072 deletions

View File

@@ -0,0 +1,196 @@
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: BillyGalbreath <blake.galbreath@gmail.com>
Date: Sat, 12 Dec 2020 21:19:05 -0600
Subject: [PATCH] Implement TPSBar
diff --git a/src/main/java/net/minecraft/server/CommandDispatcher.java b/src/main/java/net/minecraft/server/CommandDispatcher.java
index ccd0be059f4d7b95d4ec58c0d4fc744a94fec3fd..e31f13b80aef9b410c508030c0d965ec999505e4 100644
--- a/src/main/java/net/minecraft/server/CommandDispatcher.java
+++ b/src/main/java/net/minecraft/server/CommandDispatcher.java
@@ -109,6 +109,7 @@ public class CommandDispatcher {
CommandWhitelist.a(this.b);
net.pl3x.purpur.command.DemoCommand.register(getDispatcher()); // Purpur
net.pl3x.purpur.command.PingCommand.register(getDispatcher()); // Purpur
+ net.pl3x.purpur.command.TPSBarCommand.register(getDispatcher()); // Purpur
}
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 22e84d2e08ad436c553dc7d99046adf9ee63e9f1..9399b3c1571dfbbc58476e3d92599f589fa0094a 100644
--- a/src/main/java/net/minecraft/server/MinecraftServer.java
+++ b/src/main/java/net/minecraft/server/MinecraftServer.java
@@ -468,6 +468,7 @@ public abstract class MinecraftServer extends IAsyncTaskHandlerReentrant<TickTas
this.serverConnection.acceptConnections();
// CraftBukkit end
+ net.pl3x.purpur.task.TPSBarTask.start(); // Purpur
}
protected void updateWorldSettings() {}
@@ -857,6 +858,7 @@ public abstract class MinecraftServer extends IAsyncTaskHandlerReentrant<TickTas
this.safeShutdown(flag, false);
}
public void safeShutdown(boolean flag, boolean isRestarting) {
+ net.pl3x.purpur.task.TPSBarTask.stop(); // Purpur
this.isRunning = false;
this.isRestarting = isRestarting;
if (flag) {
diff --git a/src/main/java/net/minecraft/server/PlayerList.java b/src/main/java/net/minecraft/server/PlayerList.java
index f055fd0aff86d04677d0bd256c9e7c12f94bfbcc..d2a7fa1595ed4bc9fea0238af42f70889e07b262 100644
--- a/src/main/java/net/minecraft/server/PlayerList.java
+++ b/src/main/java/net/minecraft/server/PlayerList.java
@@ -513,6 +513,8 @@ public abstract class PlayerList {
if (entityplayer.didPlayerJoinEvent) cserver.getPluginManager().callEvent(playerQuitEvent); // Paper - if we disconnected before join ever fired, don't fire quit
entityplayer.getBukkitEntity().disconnect(playerQuitEvent.getQuitMessage());
+ net.pl3x.purpur.task.TPSBarTask.removePlayer(cserver.getPlayer(entityplayer)); // Purpur
+
if (server.isMainThread()) entityplayer.playerTick(); // SPIGOT-924 // Paper - don't tick during emergency shutdowns (Watchdog)
// CraftBukkit end
diff --git a/src/main/java/net/pl3x/purpur/command/TPSBarCommand.java b/src/main/java/net/pl3x/purpur/command/TPSBarCommand.java
new file mode 100644
index 0000000000000000000000000000000000000000..508575963816ba4f21371bf9e37033373e454c9f
--- /dev/null
+++ b/src/main/java/net/pl3x/purpur/command/TPSBarCommand.java
@@ -0,0 +1,27 @@
+package net.pl3x.purpur.command;
+
+import net.minecraft.server.CommandDispatcher;
+import net.minecraft.server.CommandListenerWrapper;
+import net.minecraft.server.EntityPlayer;
+import net.pl3x.purpur.task.TPSBarTask;
+
+public class TPSBarCommand {
+ public static void register(com.mojang.brigadier.CommandDispatcher<CommandListenerWrapper> dispatcher) {
+ dispatcher.register(CommandDispatcher.literal("tpsbar")
+ .requires((listener) -> {
+ return listener.hasPermission(2);
+ })
+ .executes((context) -> {
+ return execute(context.getSource(), context.getSource().getPlayerOrException());
+ })
+ ).setPermission("bukkit.command.tpsbar");
+ }
+
+ private static int execute(CommandListenerWrapper sender, EntityPlayer player) {
+ if (player != null) {
+ TPSBarTask.togglePlayer(player.getBukkitEntity());
+ return 1;
+ }
+ return 0;
+ }
+}
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..362c586aeecc8a2b1a4a736f01a9fb9f833b14e9
--- /dev/null
+++ b/src/main/java/net/pl3x/purpur/task/TPSBarTask.java
@@ -0,0 +1,106 @@
+package net.pl3x.purpur.task;
+
+import org.bukkit.Bukkit;
+import org.bukkit.ChatColor;
+import org.bukkit.NamespacedKey;
+import org.bukkit.boss.BarColor;
+import org.bukkit.boss.BarStyle;
+import org.bukkit.boss.BossBar;
+import org.bukkit.craftbukkit.scheduler.MinecraftInternalPlugin;
+import org.bukkit.entity.Player;
+import org.bukkit.scheduler.BukkitRunnable;
+
+public class TPSBarTask extends BukkitRunnable {
+ private final NamespacedKey key;
+ private final BossBar bossbar;
+ private static TPSBarTask instance;
+
+ public TPSBarTask() {
+ instance = this;
+
+ this.key = new NamespacedKey("purpur", "tpsbar");
+
+ BossBar 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);
+
+ this.bossbar = bossbar;
+ }
+
+ @Override
+ public void run() {
+ if (bossbar.getPlayers().isEmpty()) {
+ return;
+ }
+
+ double tps = Bukkit.getTPS()[0];
+ if (tps > 20.0D) {
+ tps = 20.0D;
+ } else if (tps < 0.0D) {
+ tps = 0.0D;
+ }
+
+ bossbar.setVisible(true);
+ bossbar.setProgress(Math.max(Math.min(tps / 20.0D, 1.0D), 0.0D));
+
+ String tpsColor;
+ if (tps >= 18) {
+ tpsColor = "&2";
+ bossbar.setColor(BarColor.GREEN);
+ } else if (tps >= 15) {
+ tpsColor = "&e";
+ bossbar.setColor(BarColor.YELLOW);
+ } else {
+ tpsColor = "&4";
+ bossbar.setColor(BarColor.RED);
+ }
+
+ double mspt = Bukkit.getAverageTickTime();
+ String msptColor;
+ if (mspt < 40) {
+ msptColor = "&2";
+ } else if (mspt < 50) {
+ msptColor = "&e";
+ } else {
+ msptColor = "&4";
+ }
+
+ bossbar.setTitle(ChatColor.translateAlternateColorCodes('&', "&eTPS&3: " + tpsColor + String.format("%.2f", tps) + " &eMSPT&3: " + msptColor + String.format("%.3f", mspt)));
+ }
+
+ @Override
+ public void cancel() {
+ super.cancel();
+ bossbar.setVisible(false);
+ bossbar.removeAll();
+ Bukkit.removeBossBar(key);
+ }
+
+ public static void removePlayer(Player player) {
+ instance.bossbar.removePlayer(player);
+ }
+
+ public static void togglePlayer(Player player) {
+ if (instance.bossbar.getPlayers().contains(player)) {
+ instance.bossbar.removePlayer(player);
+ } else {
+ instance.bossbar.addPlayer(player);
+ instance.run();
+ }
+ }
+
+ public static void start() {
+ if (instance != null) {
+ instance.cancel();
+ }
+ instance = new TPSBarTask();
+ instance.runTaskTimerAsynchronously(new MinecraftInternalPlugin(), 20L, 20L);
+ }
+
+ public static void stop() {
+ instance.cancel();
+ }
+}