Updated Upstream (Paper, Tuinity, & Airplane)

Upstream has released updates that appear to apply and compile correctly

Paper Changes:
d4532f7e7 bug #5373 - fix AsyncChatEvent not being posted when processing a legacy APCE continuation
522ae1c51 Replace all block states of a specified block (#5055)
1cda67118 [Auto] Updated Upstream (CraftBukkit)

Tuinity Changes:
44e8e5de5 Do not load extra radius of chunks when loading a single chunk
31f9cae05 Revert custom table implementation for blockstate states
9ac33d168 Be aware of entity teleports when chunk checking entities
18c7f3f59 Always set impluse for projectiles to true, even if hit failed

Airplane Changes:
0f8044393 Update Upstream (Tuinity)
2f6cbdc74 More debug for plugins not shutting down tasks
12e1b6169 Update Upstream (Tuinity)
fc778d30b Update README.md
b23bee302 Remove debug
8157e9838 Config style, flare style, disable tracker by def
98d0b589b Updates to README
This commit is contained in:
BillyGalbreath
2021-03-17 13:45:42 -05:00
parent 45b9a18cd9
commit 297181ed5e
17 changed files with 170 additions and 461 deletions

View File

@@ -626,7 +626,7 @@ copy of the Program in return for a fee.
END OF TERMS AND CONDITIONS
diff --git a/pom.xml b/pom.xml
index e83e4241a56fe131a75fe21cc1518992c089da2c..fa4ff553ae58285201d773a538eeda2b40c89c4a 100644
index d9b46ca2fb2ec8f76f3c781d9250fdc68ad7e363..1c8ff351df082c4afe8c722b3132e4446e9b42e7 100644
--- a/pom.xml
+++ b/pom.xml
@@ -27,8 +27,8 @@
@@ -640,7 +640,7 @@ index e83e4241a56fe131a75fe21cc1518992c089da2c..fa4ff553ae58285201d773a538eeda2b
<version>${project.version}</version>
<scope>compile</scope>
</dependency>
@@ -159,6 +159,13 @@
@@ -159,8 +159,23 @@
<version>1.1.0-SNAPSHOT</version>
<scope>compile</scope>
</dependency>
@@ -653,19 +653,17 @@ index e83e4241a56fe131a75fe21cc1518992c089da2c..fa4ff553ae58285201d773a538eeda2b
+ </dependency>
</dependencies>
<repositories>
@@ -172,6 +179,11 @@
<id>spigotmc-public</id>
<url>https://hub.spigotmc.org/nexus/content/groups/public/</url>
</repository>
+ <repositories>
+ <!-- Airplane - Flare -->
+ <repository>
+ <id>jitpack.io</id>
+ <url>https://jitpack.io</url>
+ </repository>
</repositories>
<pluginRepositories>
+ </repositories>
+
<!-- This builds a completely 'ready to start' jar with all dependencies inside -->
<build>
<finalName>tuinity-${minecraft.version}</finalName>
diff --git a/src/main/java/com/destroystokyo/paper/Metrics.java b/src/main/java/com/destroystokyo/paper/Metrics.java
index 52c0ab1ce46e1f3233ef746d9bc699356fa9fae4..b480bd3044370b8eb733166f0c4b737344475993 100644
--- a/src/main/java/com/destroystokyo/paper/Metrics.java
@@ -800,10 +798,10 @@ index 0000000000000000000000000000000000000000..1fa9b40e2f89272fa8bc9d927a9a852b
+}
diff --git a/src/main/java/gg/airplane/AirplaneConfig.java b/src/main/java/gg/airplane/AirplaneConfig.java
new file mode 100644
index 0000000000000000000000000000000000000000..424325ada75b788ce390378d8df0116e5c50cf3d
index 0000000000000000000000000000000000000000..3886c731a69540f638d57a411285da289d3b704b
--- /dev/null
+++ b/src/main/java/gg/airplane/AirplaneConfig.java
@@ -0,0 +1,107 @@
@@ -0,0 +1,108 @@
+package gg.airplane;
+
+import gg.airplane.manual.ManualParser;
@@ -828,8 +826,9 @@ index 0000000000000000000000000000000000000000..424325ada75b788ce390378d8df0116e
+
+ manual.get("info.version", "1.0");
+ manual.setComment("info",
+ " Airplane Configuration",
+ " Please see https://airplane.gg/config for help.");
+ "Airplane Configuration",
+ "Read https://blog.airplane.gg/ to find out more about Airplane",
+ "Join our Discord to receive support & optimization help: https://discord.gg/3gtc45q");
+
+ for (Method method : AirplaneConfig.class.getDeclaredMethods()) {
+ if (Modifier.isStatic(method.getModifiers()) && Modifier.isPrivate(method.getModifiers())) {
@@ -897,7 +896,7 @@ index 0000000000000000000000000000000000000000..424325ada75b788ce390378d8df0116e
+ }
+
+
+ public static boolean multithreadedEntityTracker = true;
+ public static boolean multithreadedEntityTracker = false;
+ public static boolean entityTrackerAsyncPackets = false;
+
+ private static void entityTracker() {
@@ -1037,21 +1036,21 @@ index 0000000000000000000000000000000000000000..f4976428bc721319d2926e97cbe0f64c
+}
diff --git a/src/main/java/gg/airplane/flare/FlareCommand.java b/src/main/java/gg/airplane/flare/FlareCommand.java
new file mode 100644
index 0000000000000000000000000000000000000000..e3ef62ae97b8b92459e1c405525790ba2172df01
index 0000000000000000000000000000000000000000..ddc90f1589e683f452c5a74d9d2408803edea029
--- /dev/null
+++ b/src/main/java/gg/airplane/flare/FlareCommand.java
@@ -0,0 +1,159 @@
@@ -0,0 +1,149 @@
+package gg.airplane.flare;
+
+import com.google.common.collect.ImmutableList;
+import gg.airplane.AirplaneConfig;
+import gg.airplane.flare.exceptions.UserReportableException;
+import gg.airplane.flare.profiling.AsyncProfilerIntegration;
+import net.md_5.bungee.api.ChatColor;
+import net.md_5.bungee.api.chat.BaseComponent;
+import net.md_5.bungee.api.chat.ClickEvent;
+import net.md_5.bungee.api.chat.ComponentBuilder;
+import net.md_5.bungee.api.chat.TextComponent;
+import net.kyori.adventure.text.Component;
+import net.kyori.adventure.text.event.ClickEvent;
+import net.kyori.adventure.text.format.NamedTextColor;
+import net.kyori.adventure.text.format.TextColor;
+import net.kyori.adventure.text.format.TextDecoration;
+import org.bukkit.Bukkit;
+import org.bukkit.command.Command;
+import org.bukkit.command.CommandSender;
@@ -1066,21 +1065,14 @@ index 0000000000000000000000000000000000000000..e3ef62ae97b8b92459e1c405525790ba
+public class FlareCommand extends Command {
+
+ private static final String BASE_URL = "https://blog.airplane.gg/flare-tutorial/#setting-the-access-token";
+ private static final ChatColor HEX = ChatColor.of("#6a7eda");
+ private static final BaseComponent[] PREFIX = new ComponentBuilder("Flare ✈ ")
+ .color(HEX)
+ .bold(true)
+ .create();
+
+ private static ComponentBuilder create(ComponentBuilder newBuilder) {
+ newBuilder.color(HEX);
+ newBuilder.bold(false);
+
+ ComponentBuilder builder = new ComponentBuilder();
+ builder.append(PREFIX);
+ builder.append(newBuilder.create());
+ return builder;
+ }
+ private static final TextColor HEX = TextColor.fromHexString("#e3eaea");
+ private static final Component PREFIX = Component.text()
+ .append(Component.text("Flare ✈")
+ .color(TextColor.fromHexString("#6a7eda"))
+ .decoration(TextDecoration.BOLD, true)
+ .append(Component.text(" ", HEX)
+ .decoration(TextDecoration.BOLD, false)))
+ .asComponent();
+
+ public FlareCommand() {
+ super("flare", "Profile your server with Flare", "/flare", Collections.singletonList("profile"));
@@ -1091,36 +1083,28 @@ index 0000000000000000000000000000000000000000..e3ef62ae97b8b92459e1c405525790ba
+ public boolean execute(CommandSender sender, String commandLabel, String[] args) {
+ if (!testPermission(sender)) return true;
+ if (AirplaneConfig.accessToken.length() == 0) {
+ BaseComponent clickable = new TextComponent(BASE_URL);
+ clickable.setUnderlined(true);
+ clickable.setColor(HEX);
+ clickable.setClickEvent(new ClickEvent(ClickEvent.Action.OPEN_URL, BASE_URL));
+ Component clickable = Component.text(BASE_URL, HEX, TextDecoration.UNDERLINED).clickEvent(ClickEvent.clickEvent(ClickEvent.Action.OPEN_URL, BASE_URL));
+
+ sender.sendMessage(create(new ComponentBuilder("Flare currently requires an access token to use. To learn more, visit ")
+ .color(HEX)
+ .append(clickable)
+ )
+ .create());
+ sender.sendMessage(PREFIX.append(Component.text("Flare currently requires an access token to use. To learn more, visit ").color(HEX).append(clickable)));
+ return true;
+ }
+
+ if (AsyncProfilerIntegration.doesNotSupportProfiling()) {
+ sender.sendMessage(create(new ComponentBuilder("Profiling is not supported in this environment, reason: " + AsyncProfilerIntegration.getDisabledReason())
+ .color(ChatColor.RED)
+ ).create());
+ sender.sendMessage(PREFIX.append(
+ Component.text("Profiling is not supported in this environment, reason: " + AsyncProfilerIntegration.getDisabledReason(), NamedTextColor.RED)));
+ return true;
+ }
+ if (ProfilingManager.isProfiling()) {
+ if (args.length == 1 && args[0].equalsIgnoreCase("status")) {
+ sender.sendMessage(create(new ComponentBuilder("Status: " + AsyncProfilerIntegration.status())).create());
+ sender.sendMessage(PREFIX.append(Component.text("Status: " + AsyncProfilerIntegration.status(), HEX)));
+ return true;
+ }
+ if (ProfilingManager.stop()) {
+ if (!(sender instanceof ConsoleCommandSender)) {
+ sender.sendMessage(create(new ComponentBuilder("Profiling has been stopped.")).create());
+ sender.sendMessage(PREFIX.append(Component.text("Profiling has been stopped.", HEX)));
+ }
+ } else {
+ sender.sendMessage(create(new ComponentBuilder("Profiling has already been stopped.")).create());
+ sender.sendMessage(PREFIX.append(Component.text("Profiling has already been stopped.", HEX)));
+ }
+ } else {
+ ProfileType profileType = null;
@@ -1128,10 +1112,11 @@ index 0000000000000000000000000000000000000000..e3ef62ae97b8b92459e1c405525790ba
+ try {
+ profileType = ProfileType.valueOf(args[0].toUpperCase());
+ } catch (Exception e) {
+ sender.sendMessage(create(new ComponentBuilder("Invalid profile type ")
+ .append(args[0]).color(ChatColor.BOLD)
+ .append("!").color(HEX)).create());
+ return false;
+ sender.sendMessage(PREFIX.append(Component
+ .text("Invalid profile type ", HEX)
+ .append(Component.text(args[0], HEX, TextDecoration.BOLD)
+ .append(Component.text("!", HEX)))
+ ));
+ }
+ }
+ int interval = 5;
@@ -1139,10 +1124,12 @@ index 0000000000000000000000000000000000000000..e3ef62ae97b8b92459e1c405525790ba
+ try {
+ interval = Integer.parseInt(args[1]);
+ } catch (Exception e) {
+ sender.sendMessage(create(new ComponentBuilder("Invalid time in milliseconds ")
+ .append(args[1]).color(HEX).bold(true)
+ .append("!").color(HEX)).create());
+ return false;
+ sender.sendMessage(PREFIX.append(Component
+ .text("Invalid time in milliseconds ", HEX)
+ .append(Component.text(args[1], HEX, TextDecoration.BOLD)
+ .append(Component.text("!", HEX)))
+ ));
+ return true;
+ }
+ }
+ int finalInterval = interval;
@@ -1151,18 +1138,20 @@ index 0000000000000000000000000000000000000000..e3ef62ae97b8b92459e1c405525790ba
+ try {
+ if (ProfilingManager.start(finalProfileType, finalInterval)) {
+ if (!(sender instanceof ConsoleCommandSender)) {
+ sender.sendMessage(create(new ComponentBuilder("Profiling has been started: " + ProfilingManager.getProfilingUrl().get())
+ .event(new ClickEvent(ClickEvent.Action.OPEN_URL, ProfilingManager.getProfilingUrl().get())))
+ .create());
+ sender.sendMessage(create(new ComponentBuilder(" Run /" + commandLabel + " to stop profiling.")).create());
+ sender.sendMessage(PREFIX.append(Component
+ .text("Flare has been started: " + ProfilingManager.getProfilingUrl().get(), HEX)
+ .clickEvent(ClickEvent.openUrl(ProfilingManager.getProfilingUrl().get()))
+ ));
+ sender.sendMessage(PREFIX.append(Component.text(" Run /" + commandLabel + " to stop the Flare.", HEX)));
+ }
+ } else {
+ sender.sendMessage(create(new ComponentBuilder("Profiling has already been started: " + ProfilingManager.getProfilingUrl().get())
+ .event(new ClickEvent(ClickEvent.Action.OPEN_URL, ProfilingManager.getProfilingUrl().get())))
+ .create());
+ sender.sendMessage(PREFIX.append(Component
+ .text("Flare has already been started: " + ProfilingManager.getProfilingUrl().get(), HEX)
+ .clickEvent(ClickEvent.openUrl(ProfilingManager.getProfilingUrl().get()))
+ ));
+ }
+ } catch (UserReportableException e) {
+ sender.sendMessage(create(new ComponentBuilder("Profiling failed to start: " + e.getUserError())).create());
+ sender.sendMessage(Component.text("Flare failed to start: " + e.getUserError(), NamedTextColor.RED));
+ e.printStackTrace();
+ }
+ });
@@ -2528,7 +2517,7 @@ index 3ebe3d0dc4c2c6aee6ea349006a74cbe5aa8e78f..7b80f6f08f274fd1adff114a81919bf4
if (d2 > d1 * d1) {
return false;
diff --git a/src/main/java/net/minecraft/server/PlayerChunkMap.java b/src/main/java/net/minecraft/server/PlayerChunkMap.java
index 3e0bf6df7c4608a5b19024612db52558fd722f4b..e5e8d066661a0dee1c07ba0c855204cb81459da5 100644
index 945d16f57317406bff3cbe20756677eccfba1525..05250a66202cf7f6c8b7dba5e70682ed4d354156 100644
--- a/src/main/java/net/minecraft/server/PlayerChunkMap.java
+++ b/src/main/java/net/minecraft/server/PlayerChunkMap.java
@@ -651,7 +651,9 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d {
@@ -3019,7 +3008,7 @@ index bf06ef09cfd4d7618365249d1332d264d8ff1377..996fa5b4652f847f4e64d4cd191fe5a5
// Paper start - Prevent armor stands from doing entity lookups
@Override
diff --git a/src/main/java/net/minecraft/server/WorldServer.java b/src/main/java/net/minecraft/server/WorldServer.java
index a77fceac7c9e79a6bac05becc21bcb6bf2a1a7c7..f4eb878f9a66fd3404ddde5a14924bb419a351db 100644
index 18d21f21c10974d21d17abe2f9319cdc7fd51eea..a2b8aa9ebef69535a8560e4eef42471e58e84e7f 100644
--- a/src/main/java/net/minecraft/server/WorldServer.java
+++ b/src/main/java/net/minecraft/server/WorldServer.java
@@ -968,11 +968,12 @@ public class WorldServer extends World implements GeneratorAccessSeed {
@@ -3137,7 +3126,7 @@ index a77fceac7c9e79a6bac05becc21bcb6bf2a1a7c7..f4eb878f9a66fd3404ddde5a14924bb4
if (isActive) { // Paper - EAR 2
TimingHistory.activatedEntityTicks++; // Paper
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
index f994e99ebc8fe22e6f6b45f6379ec410a598789f..ec8ad7a51f62c699588b5804331a5d33ab1fa5a7 100644
index f994e99ebc8fe22e6f6b45f6379ec410a598789f..ea91e1a9b99a42c462befa8245dea029ea536e01 100644
--- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java
+++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
@@ -232,7 +232,7 @@ import javax.annotation.Nullable; // Paper
@@ -3149,6 +3138,18 @@ index f994e99ebc8fe22e6f6b45f6379ec410a598789f..ec8ad7a51f62c699588b5804331a5d33
private final String serverVersion;
private final String bukkitVersion = Versioning.getBukkitVersion();
private final Logger logger = Logger.getLogger("Minecraft");
@@ -978,6 +978,11 @@ public final class CraftServer implements Server {
plugin.getDescription().getName(),
"This plugin is not properly shutting down its async tasks when it is being shut down. This task may throw errors during the final shutdown logs and might not complete before process dies."
));
+ getLogger().log(Level.SEVERE, String.format("%s Stacktrace", worker.getThread().getName()));
+ StackTraceElement[] stackTrace = worker.getThread().getStackTrace();
+ for (StackTraceElement element : stackTrace) {
+ getLogger().log(Level.SEVERE, " " + element.toString());
+ }
}
}
// Paper end
diff --git a/src/main/java/org/bukkit/craftbukkit/inventory/CraftShapelessRecipe.java b/src/main/java/org/bukkit/craftbukkit/inventory/CraftShapelessRecipe.java
index 4aba511fe8078164bf1467b39645dd9bf6a931e7..56b781e438f0cf1c12dd55eb37356601e47de47f 100644
--- a/src/main/java/org/bukkit/craftbukkit/inventory/CraftShapelessRecipe.java