mirror of
https://github.com/PurpurMC/Purpur.git
synced 2026-02-19 17:37:42 +01:00
Updated Upstream (Paper)
Upstream has released updates that appear to apply and compile correctly Paper Changes: PaperMC/Paper@841da90 Paper Plugins (#8108) PaperMC/Paper@7baf427 Fix plugin updater logic, allow null update directory (#8864)
This commit is contained in:
@@ -3544,7 +3544,7 @@ index ebe65474a4a05ff1637d7f37ebcfe690af59def5..42142c512b12e5b269c19f1e821c50e7
|
||||
|
||||
@Nullable
|
||||
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
|
||||
index f1a3d8dae2a61b875e423aebfdfcad2f77d498ff..5077c545e74711d5268d3cfa31926af1e995ea05 100644
|
||||
index 621919a4a45caa73a43020fdca24764d95d89fd2..fdabf7f68d1fa12598e3803cf2d72054645393b1 100644
|
||||
--- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java
|
||||
+++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
|
||||
@@ -261,7 +261,7 @@ import javax.annotation.Nullable; // Paper
|
||||
@@ -3556,7 +3556,7 @@ index f1a3d8dae2a61b875e423aebfdfcad2f77d498ff..5077c545e74711d5268d3cfa31926af1
|
||||
private final String serverVersion;
|
||||
private final String bukkitVersion = Versioning.getBukkitVersion();
|
||||
private final Logger logger = Logger.getLogger("Minecraft");
|
||||
@@ -1067,6 +1067,11 @@ public final class CraftServer implements Server {
|
||||
@@ -1048,6 +1048,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."
|
||||
));
|
||||
@@ -3581,10 +3581,10 @@ index f7ea77dd82d978ad307f99c743efacfb34478b3d..009ab06182359862b8f543030ec4fe4e
|
||||
}
|
||||
}
|
||||
diff --git a/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java b/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java
|
||||
index 287e8c4c57ea1737460fdaf114e7eed627a25b2d..b9e4305f515faa14c2afc0ccaf23d205e9c9f858 100644
|
||||
index 4c50d0422fcc6860e502f8b745aac2695f47073d..258db803682fcc4f76c792ef741b77e63a65ce98 100644
|
||||
--- a/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java
|
||||
+++ b/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java
|
||||
@@ -462,7 +462,7 @@ public final class CraftMagicNumbers implements UnsafeValues {
|
||||
@@ -468,7 +468,7 @@ public final class CraftMagicNumbers implements UnsafeValues {
|
||||
|
||||
@Override
|
||||
public com.destroystokyo.paper.util.VersionFetcher getVersionFetcher() {
|
||||
|
||||
@@ -193,7 +193,7 @@ index 68d16efaf9c2d997afabadcf1ee24c5de685b5b3..861cd9f092a19aca520c2be4ba7a6ee3
|
||||
|
||||
public SystemReport fillSystemReport(SystemReport details) {
|
||||
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
|
||||
index 5077c545e74711d5268d3cfa31926af1e995ea05..0c75b7f595dc14c02f6384f786a3943f4e16bcef 100644
|
||||
index fdabf7f68d1fa12598e3803cf2d72054645393b1..9f8f6ff6408a191012241846cce058b80969e5fe 100644
|
||||
--- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java
|
||||
+++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
|
||||
@@ -261,7 +261,7 @@ import javax.annotation.Nullable; // Paper
|
||||
@@ -259,10 +259,10 @@ index cdefb2025eedea7e204d70d568adaf1c1ec4c03c..d1526ed7197b883e1d1f07baf285bf5e
|
||||
// (async tasks must live with race-conditions if they attempt to cancel between these few lines of code)
|
||||
}
|
||||
diff --git a/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java b/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java
|
||||
index b9e4305f515faa14c2afc0ccaf23d205e9c9f858..feacdb99ce7ec21fb85b5a13be7a7cb530a40e21 100644
|
||||
index 258db803682fcc4f76c792ef741b77e63a65ce98..a3a627eca3219d234c57ab491a30c770baf24395 100644
|
||||
--- a/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java
|
||||
+++ b/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java
|
||||
@@ -462,7 +462,7 @@ public final class CraftMagicNumbers implements UnsafeValues {
|
||||
@@ -468,7 +468,7 @@ public final class CraftMagicNumbers implements UnsafeValues {
|
||||
|
||||
@Override
|
||||
public com.destroystokyo.paper.util.VersionFetcher getVersionFetcher() {
|
||||
|
||||
@@ -105,10 +105,10 @@ index 42299fd6ae663b01bb5f010b96887caa744dcb96..816f906f98adc180f37d2b216628e576
|
||||
this.world = new CraftWorld((ServerLevel) this, gen, biomeProvider, env);
|
||||
|
||||
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
|
||||
index 0c75b7f595dc14c02f6384f786a3943f4e16bcef..0fcc3685f3f5b5c81a85f6981541f2cecc386da3 100644
|
||||
index 9f8f6ff6408a191012241846cce058b80969e5fe..d633d9da06ea08b55a57fa4e9b8104ccb074385f 100644
|
||||
--- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java
|
||||
+++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
|
||||
@@ -981,6 +981,7 @@ public final class CraftServer implements Server {
|
||||
@@ -962,6 +962,7 @@ public final class CraftServer implements Server {
|
||||
|
||||
org.spigotmc.SpigotConfig.init((File) console.options.valueOf("spigot-settings")); // Spigot
|
||||
this.console.paperConfigurations.reloadConfigs(this.console);
|
||||
@@ -116,7 +116,7 @@ index 0c75b7f595dc14c02f6384f786a3943f4e16bcef..0fcc3685f3f5b5c81a85f6981541f2ce
|
||||
for (ServerLevel world : this.console.getAllLevels()) {
|
||||
// world.serverLevelData.setDifficulty(config.difficulty); // Paper - per level difficulty
|
||||
world.setSpawnSettings(world.serverLevelData.getDifficulty() != Difficulty.PEACEFUL && config.spawnMonsters, config.spawnAnimals); // Paper - per level difficulty (from MinecraftServer#setDifficulty(ServerLevel, Difficulty, boolean))
|
||||
@@ -996,6 +997,7 @@ public final class CraftServer implements Server {
|
||||
@@ -977,6 +978,7 @@ public final class CraftServer implements Server {
|
||||
}
|
||||
}
|
||||
world.spigotConfig.init(); // Spigot
|
||||
@@ -124,7 +124,7 @@ index 0c75b7f595dc14c02f6384f786a3943f4e16bcef..0fcc3685f3f5b5c81a85f6981541f2ce
|
||||
}
|
||||
|
||||
Plugin[] pluginClone = pluginManager.getPlugins().clone(); // Paper
|
||||
@@ -1011,6 +1013,7 @@ public final class CraftServer implements Server {
|
||||
@@ -992,6 +994,7 @@ public final class CraftServer implements Server {
|
||||
this.reloadData();
|
||||
org.spigotmc.SpigotConfig.registerCommands(); // Spigot
|
||||
io.papermc.paper.command.PaperCommands.registerCommands(this.console); // Paper
|
||||
@@ -132,7 +132,7 @@ index 0c75b7f595dc14c02f6384f786a3943f4e16bcef..0fcc3685f3f5b5c81a85f6981541f2ce
|
||||
this.overrideAllCommandBlockCommands = this.commandsConfiguration.getStringList("command-block-overrides").contains("*");
|
||||
this.ignoreVanillaPermissions = this.commandsConfiguration.getBoolean("ignore-vanilla-permissions");
|
||||
|
||||
@@ -2770,6 +2773,18 @@ public final class CraftServer implements Server {
|
||||
@@ -2751,6 +2754,18 @@ public final class CraftServer implements Server {
|
||||
return CraftServer.this.console.paperConfigurations.createLegacyObject(CraftServer.this.console);
|
||||
}
|
||||
|
||||
|
||||
@@ -17,10 +17,10 @@ index c7e4330c93baff1f3027d7c75cf857b673d38970..5134fed0cd0eedbe0c2177bce91b978b
|
||||
public final boolean spawnNpcs = this.get("spawn-npcs", true);
|
||||
public final boolean pvp = this.get("pvp", true);
|
||||
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
|
||||
index 0fcc3685f3f5b5c81a85f6981541f2cecc386da3..45f75ebc00f0e371066bb244a61c8d68a57c68c8 100644
|
||||
index d633d9da06ea08b55a57fa4e9b8104ccb074385f..1528e8ec7d475e59d93b28a8874676afdb5c96ac 100644
|
||||
--- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java
|
||||
+++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
|
||||
@@ -2960,4 +2960,11 @@ public final class CraftServer implements Server {
|
||||
@@ -2941,4 +2941,11 @@ public final class CraftServer implements Server {
|
||||
}
|
||||
|
||||
// Paper end
|
||||
|
||||
@@ -25,10 +25,10 @@ index 70d3fc30e21a6c3c3d7a87ce2e43dd2eb8322b2c..7c731c72a19c43f4b291557310c632f3
|
||||
}
|
||||
// Spigot end
|
||||
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
|
||||
index 45f75ebc00f0e371066bb244a61c8d68a57c68c8..e451348e26c024d48dfccbc6f182544baef7ff3f 100644
|
||||
index 1528e8ec7d475e59d93b28a8874676afdb5c96ac..d7279047dfe353ce9f4312ac0fc53623fa8d7a55 100644
|
||||
--- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java
|
||||
+++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
|
||||
@@ -2966,5 +2966,10 @@ public final class CraftServer implements Server {
|
||||
@@ -2947,5 +2947,10 @@ public final class CraftServer implements Server {
|
||||
public String getServerName() {
|
||||
return this.getProperties().serverName;
|
||||
}
|
||||
|
||||
@@ -69,10 +69,10 @@ index 779d14840fdb0b27e1bb49e680c59539294b2995..96f50760dec9fb7ec317b500ce5cd6a6
|
||||
lagging = recentTps[0] < org.purpurmc.purpur.PurpurConfig.laggingThreshold; // Purpur
|
||||
tickSection = curTime;
|
||||
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
|
||||
index e451348e26c024d48dfccbc6f182544baef7ff3f..102302a6884b8a8cf850f25983bb48205af298b8 100644
|
||||
index d7279047dfe353ce9f4312ac0fc53623fa8d7a55..10a63a0e67f061d68264a6ebe0209bb51bbef5fc 100644
|
||||
--- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java
|
||||
+++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
|
||||
@@ -2727,6 +2727,7 @@ public final class CraftServer implements Server {
|
||||
@@ -2708,6 +2708,7 @@ public final class CraftServer implements Server {
|
||||
@Override
|
||||
public double[] getTPS() {
|
||||
return new double[] {
|
||||
|
||||
@@ -51,10 +51,10 @@ index bbff7466cecf50285c97fadaf68682a6c6ea879f..5ae858b81e6f9903b7296077cf497f62
|
||||
private int maxStack = MAX_STACK;
|
||||
public List<HumanEntity> transaction = new java.util.ArrayList<HumanEntity>();
|
||||
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
|
||||
index 102302a6884b8a8cf850f25983bb48205af298b8..ab3e5b4bfd3968d9d758d35bdcebfd7662dbb8a8 100644
|
||||
index 10a63a0e67f061d68264a6ebe0209bb51bbef5fc..0fe1f103f1df37ecb879a6101dac2e9800623f6d 100644
|
||||
--- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java
|
||||
+++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
|
||||
@@ -1455,6 +1455,19 @@ public final class CraftServer implements Server {
|
||||
@@ -1436,6 +1436,19 @@ public final class CraftServer implements Server {
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
@@ -3,54 +3,105 @@ From: Ben Kerllenevich <ben@omega24.dev>
|
||||
Date: Sat, 25 Jun 2022 19:40:36 -0400
|
||||
Subject: [PATCH] Spark Profiler
|
||||
|
||||
Co-authored-by: granny <granny@purpurmc.org>
|
||||
|
||||
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
|
||||
index cd1906a3dcb52de5deed02e1b0005fe83c91f211..97f357a6c8d600daf68b249e04da1f7008b14302 100644
|
||||
--- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java
|
||||
+++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
|
||||
@@ -434,7 +434,44 @@ public final class CraftServer implements Server {
|
||||
if (!pluginFolder.exists()) {
|
||||
pluginFolder.mkdirs();
|
||||
}
|
||||
- Plugin[] plugins = this.pluginManager.loadPlugins(pluginFolder, this.extraPluginJars());
|
||||
+ // Purpur start
|
||||
+ List<File> extraJars = this.extraPluginJars();
|
||||
+ if (!Boolean.getBoolean("Purpur.IReallyDontWantSpark")) {
|
||||
+ try {
|
||||
+ File file = new File("cache", "spark.jar");
|
||||
+ file.getParentFile().mkdirs();
|
||||
diff --git a/src/main/java/io/papermc/paper/plugin/provider/source/SparkProviderSource.java b/src/main/java/io/papermc/paper/plugin/provider/source/SparkProviderSource.java
|
||||
new file mode 100644
|
||||
index 0000000000000000000000000000000000000000..74e3334ec92e3864b84e299b33ca995224eb7c3f
|
||||
--- /dev/null
|
||||
+++ b/src/main/java/io/papermc/paper/plugin/provider/source/SparkProviderSource.java
|
||||
@@ -0,0 +1,82 @@
|
||||
+package io.papermc.paper.plugin.provider.source;
|
||||
+
|
||||
+ boolean shouldDownload = true;
|
||||
+ if (file.exists()) {
|
||||
+ String fileSha1 = String.format("%040x", new java.math.BigInteger(1, java.security.MessageDigest.getInstance("SHA-1").digest(java.nio.file.Files.readAllBytes(file.toPath()))));
|
||||
+ String sparkSha1;
|
||||
+ java.net.URLConnection urlConnection = new java.net.URL("https://sparkapi.lucko.me/download/bukkit/sha1").openConnection();
|
||||
+ urlConnection.setReadTimeout(5000);
|
||||
+ urlConnection.setConnectTimeout(5000);
|
||||
+ try (java.io.BufferedReader reader = new java.io.BufferedReader(new InputStreamReader(urlConnection.getInputStream()))) {
|
||||
+ sparkSha1 = reader.lines().collect(Collectors.joining(""));
|
||||
+ }
|
||||
+import com.mojang.logging.LogUtils;
|
||||
+import io.papermc.paper.plugin.entrypoint.Entrypoint;
|
||||
+import io.papermc.paper.plugin.entrypoint.EntrypointHandler;
|
||||
+import io.papermc.paper.plugin.entrypoint.LaunchEntryPointHandler;
|
||||
+import io.papermc.paper.plugin.provider.PluginProvider;
|
||||
+import java.io.BufferedReader;
|
||||
+import java.io.File;
|
||||
+import java.io.InputStreamReader;
|
||||
+import java.math.BigInteger;
|
||||
+import java.net.URL;
|
||||
+import java.net.URLConnection;
|
||||
+import java.nio.file.Files;
|
||||
+import java.nio.file.Path;
|
||||
+import java.nio.file.StandardCopyOption;
|
||||
+import java.security.MessageDigest;
|
||||
+import java.util.stream.Collectors;
|
||||
+import org.bukkit.plugin.java.JavaPlugin;
|
||||
+import org.slf4j.Logger;
|
||||
+
|
||||
+ if (fileSha1.equals(sparkSha1)) {
|
||||
+ shouldDownload = false;
|
||||
+ }
|
||||
+public class SparkProviderSource extends FileProviderSource {
|
||||
+ public static final SparkProviderSource INSTANCE = new SparkProviderSource();
|
||||
+
|
||||
+ private static final Logger LOGGER = LogUtils.getLogger();
|
||||
+
|
||||
+ public SparkProviderSource() {
|
||||
+ super("File '%s' specified by Purpur"::formatted);
|
||||
+ }
|
||||
+
|
||||
+ @Override
|
||||
+ public void registerProviders(EntrypointHandler entrypointHandler, Path context) throws Exception {
|
||||
+ if (!Boolean.getBoolean("Purpur.IReallyDontWantSpark")) {
|
||||
+ try {
|
||||
+ File file = context.toFile();
|
||||
+ file.getParentFile().mkdirs();
|
||||
+
|
||||
+ boolean shouldDownload = true;
|
||||
+ if (file.exists()) {
|
||||
+ String fileSha1 = String.format("%040x", new BigInteger(1, MessageDigest.getInstance("SHA-1").digest(Files.readAllBytes(file.toPath()))));
|
||||
+ String sparkSha1;
|
||||
+ URLConnection urlConnection = new URL("https://sparkapi.lucko.me/download/bukkit/sha1").openConnection();
|
||||
+ urlConnection.setReadTimeout(5000);
|
||||
+ urlConnection.setConnectTimeout(5000);
|
||||
+ try (BufferedReader reader = new BufferedReader(new InputStreamReader(urlConnection.getInputStream()))) {
|
||||
+ sparkSha1 = reader.lines().collect(Collectors.joining(""));
|
||||
+ }
|
||||
+
|
||||
+ if (shouldDownload) {
|
||||
+ java.net.URLConnection urlConnection = new java.net.URL("https://sparkapi.lucko.me/download/bukkit").openConnection();
|
||||
+ urlConnection.setReadTimeout(5000);
|
||||
+ urlConnection.setConnectTimeout(5000);
|
||||
+ java.nio.file.Files.copy(urlConnection.getInputStream(), file.toPath(), java.nio.file.StandardCopyOption.REPLACE_EXISTING);
|
||||
+ if (fileSha1.equals(sparkSha1)) {
|
||||
+ shouldDownload = false;
|
||||
+ }
|
||||
+
|
||||
+ extraJars.add(file);
|
||||
+ } catch (Exception e) {
|
||||
+ getLogger().severe("Purpur: Failed to download and install spark plugin");
|
||||
+ e.printStackTrace();
|
||||
+ }
|
||||
+
|
||||
+ if (shouldDownload) {
|
||||
+ URLConnection urlConnection = new URL("https://sparkapi.lucko.me/download/bukkit").openConnection();
|
||||
+ urlConnection.setReadTimeout(5000);
|
||||
+ urlConnection.setConnectTimeout(5000);
|
||||
+ Files.copy(urlConnection.getInputStream(), file.toPath(), StandardCopyOption.REPLACE_EXISTING);
|
||||
+ }
|
||||
+
|
||||
+ if (hasSpark()) {
|
||||
+ LOGGER.info("Purpur: Using user-provided spark plugin instead of our own.");
|
||||
+ } else {
|
||||
+ super.registerProviders(entrypointHandler, context);
|
||||
+ }
|
||||
+
|
||||
+ } catch (Exception e) {
|
||||
+ LOGGER.error("Purpur: Failed to download and install spark plugin");
|
||||
+ e.printStackTrace();
|
||||
+ }
|
||||
+ Plugin[] plugins = this.pluginManager.loadPlugins(pluginFolder, extraJars);
|
||||
+ // Purpur end
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
+ private static boolean hasSpark() {
|
||||
+ for (PluginProvider<JavaPlugin> provider : LaunchEntryPointHandler.INSTANCE.get(Entrypoint.PLUGIN).getRegisteredProviders()) {
|
||||
+ if (provider.getMeta().getName().equalsIgnoreCase("spark")) {
|
||||
+ return true;
|
||||
+ }
|
||||
+ }
|
||||
+ return false;
|
||||
+ }
|
||||
+}
|
||||
diff --git a/src/main/java/net/minecraft/server/Main.java b/src/main/java/net/minecraft/server/Main.java
|
||||
index a821cb33fbc29109aec68f9d6a0eb2efc121ee13..066b18444e92508908dd823c8d928721e338d06d 100644
|
||||
--- a/src/main/java/net/minecraft/server/Main.java
|
||||
+++ b/src/main/java/net/minecraft/server/Main.java
|
||||
@@ -122,6 +122,7 @@ public class Main {
|
||||
// Register plugins from the flag
|
||||
io.papermc.paper.plugin.util.EntrypointUtil.registerProvidersFromSource(io.papermc.paper.plugin.provider.source.PluginFlagProviderSource.INSTANCE, files);
|
||||
// Paper end
|
||||
for (Plugin plugin : plugins) {
|
||||
try {
|
||||
+ io.papermc.paper.plugin.util.EntrypointUtil.registerProvidersFromSource(io.papermc.paper.plugin.provider.source.SparkProviderSource.INSTANCE, new File("cache", "spark.jar").toPath()); // Purpur
|
||||
Bootstrap.bootStrap();
|
||||
Bootstrap.validate();
|
||||
Util.startTimerHackThread();
|
||||
|
||||
@@ -5,10 +5,10 @@ Subject: [PATCH] Debug Marker API
|
||||
|
||||
|
||||
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
|
||||
index 39ca67f8b6b81b807f14e12137f4cb28d81bc5d4..799fdf506d57a729ccbb28da70678ccb1e02d152 100644
|
||||
index 0fe1f103f1df37ecb879a6101dac2e9800623f6d..2bdabca25c75cbee0f53c1d50a07202bac9e1550 100644
|
||||
--- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java
|
||||
+++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
|
||||
@@ -1503,6 +1503,42 @@ public final class CraftServer implements Server {
|
||||
@@ -1447,6 +1447,42 @@ public final class CraftServer implements Server {
|
||||
public void removeFuel(org.bukkit.Material material) {
|
||||
net.minecraft.world.level.block.entity.AbstractFurnaceBlockEntity.removeFuel(net.minecraft.world.item.ItemStack.fromBukkitCopy(new ItemStack(material)));
|
||||
}
|
||||
|
||||
@@ -5,10 +5,10 @@ Subject: [PATCH] Language API
|
||||
|
||||
|
||||
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
|
||||
index 72d9726ac8d06502f6123aea039e026ad6529661..c32e32005968b46d1f7d5162ab15c61e36f398f5 100644
|
||||
index 2bdabca25c75cbee0f53c1d50a07202bac9e1550..e5b5510806d183944f0ac926604e86f3b3dc1d7a 100644
|
||||
--- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java
|
||||
+++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
|
||||
@@ -321,6 +321,20 @@ public final class CraftServer implements Server {
|
||||
@@ -322,6 +322,20 @@ public final class CraftServer implements Server {
|
||||
|
||||
Bukkit.setServer(this);
|
||||
io.papermc.paper.world.structure.PaperConfiguredStructure.init(); // Paper
|
||||
|
||||
123
patches/server/0310-Improve-output-of-plugins-command.patch
Normal file
123
patches/server/0310-Improve-output-of-plugins-command.patch
Normal file
@@ -0,0 +1,123 @@
|
||||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: Parker Hawke <hawkeboyz2@hotmail.com>
|
||||
Date: Sat, 27 Jun 2020 18:43:37 -0400
|
||||
Subject: [PATCH] Improve output of plugins command
|
||||
|
||||
Co-authored-by: Oharass <oharass@bk.ru>
|
||||
Co-authored-by: granny <granny@purpurmc.org>
|
||||
|
||||
diff --git a/src/main/java/io/papermc/paper/command/PaperPluginsCommand.java b/src/main/java/io/papermc/paper/command/PaperPluginsCommand.java
|
||||
index 72096a66a4046633de73a12f5a043ac6dff169b1..a0200653bc7919a974e3ee6260edfb7cf4c221b4 100644
|
||||
--- a/src/main/java/io/papermc/paper/command/PaperPluginsCommand.java
|
||||
+++ b/src/main/java/io/papermc/paper/command/PaperPluginsCommand.java
|
||||
@@ -78,10 +78,10 @@ public class PaperPluginsCommand extends BukkitCommand {
|
||||
this.setAliases(Arrays.asList("pl"));
|
||||
}
|
||||
|
||||
- private static <T> List<Component> formatProviders(TreeMap<String, PluginProvider<T>> plugins) {
|
||||
+ private static <T> List<Component> formatProviders(TreeMap<String, PluginProvider<T>> plugins, @NotNull CommandSender sender) { // Purpur
|
||||
List<Component> components = new ArrayList<>(plugins.size());
|
||||
for (PluginProvider<T> entry : plugins.values()) {
|
||||
- components.add(formatProvider(entry));
|
||||
+ components.add(formatProvider(entry, sender)); // Purpur
|
||||
}
|
||||
|
||||
boolean isFirst = true;
|
||||
@@ -109,7 +109,7 @@ public class PaperPluginsCommand extends BukkitCommand {
|
||||
return formattedSublists;
|
||||
}
|
||||
|
||||
- private static Component formatProvider(PluginProvider<?> provider) {
|
||||
+ private static Component formatProvider(PluginProvider<?> provider, @NotNull CommandSender sender) { // Purpur
|
||||
TextComponent.Builder builder = Component.text();
|
||||
if (provider instanceof SpigotPluginProvider spigotPluginProvider && CraftMagicNumbers.isLegacy(spigotPluginProvider.getMeta())) {
|
||||
builder.append(LEGACY_PLUGIN_STAR);
|
||||
@@ -117,12 +117,64 @@ public class PaperPluginsCommand extends BukkitCommand {
|
||||
|
||||
String name = provider.getMeta().getName();
|
||||
Component pluginName = Component.text(name, fromStatus(provider))
|
||||
- .clickEvent(ClickEvent.runCommand("/version " + name));
|
||||
+ // Purpur start
|
||||
+ .clickEvent(ClickEvent.suggestCommand("/version " + name));
|
||||
+
|
||||
+ if (sender instanceof org.bukkit.entity.Player && sender.hasPermission("bukkit.command.version")) {
|
||||
+ // Event components
|
||||
+ String description = provider.getMeta().getDescription();
|
||||
+ TextComponent.Builder hover = Component.text();
|
||||
+ hover.append(Component.text("Version: ", NamedTextColor.WHITE)).append(Component.text(provider.getMeta().getVersion(), NamedTextColor.GREEN));
|
||||
+
|
||||
+ if (description != null) {
|
||||
+ hover.append(Component.newline())
|
||||
+ .append(Component.text("Description: ", NamedTextColor.WHITE))
|
||||
+ .append(Component.text(description, NamedTextColor.GREEN));
|
||||
+ }
|
||||
+
|
||||
+ if (provider.getMeta().getWebsite() != null) {
|
||||
+ hover.append(Component.newline())
|
||||
+ .append(Component.text("Website: ", NamedTextColor.WHITE))
|
||||
+ .append(Component.text(provider.getMeta().getWebsite(), NamedTextColor.GREEN));
|
||||
+ }
|
||||
+
|
||||
+ if (!provider.getMeta().getAuthors().isEmpty()) {
|
||||
+ hover.append(Component.newline());
|
||||
+ if (provider.getMeta().getAuthors().size() == 1) {
|
||||
+ hover.append(Component.text("Author: "));
|
||||
+ } else {
|
||||
+ hover.append(Component.text("Authors: "));
|
||||
+ }
|
||||
+
|
||||
+ hover.append(getAuthors(provider.getMeta()));
|
||||
+ }
|
||||
+
|
||||
+ pluginName.hoverEvent(hover.build());
|
||||
+ }
|
||||
|
||||
builder.append(pluginName);
|
||||
+ // Purpur end
|
||||
+
|
||||
+ return builder.build();
|
||||
+ }
|
||||
+
|
||||
+ // Purpur start
|
||||
+ @NotNull
|
||||
+ private static TextComponent getAuthors(@NotNull final PluginMeta pluginMeta) {
|
||||
+ TextComponent.Builder builder = Component.text();
|
||||
+ List<String> authors = pluginMeta.getAuthors();
|
||||
+
|
||||
+ for (int i = 0; i < authors.size(); i++) {
|
||||
+ if (i > 0) {
|
||||
+ builder.append(Component.text(i < authors.size() - 1 ? ", " : " and ", NamedTextColor.WHITE));
|
||||
+ }
|
||||
+
|
||||
+ builder.append(Component.text(authors.get(i), NamedTextColor.GREEN));
|
||||
+ }
|
||||
|
||||
return builder.build();
|
||||
}
|
||||
+ // Purpur end
|
||||
|
||||
private static Component asPlainComponents(String strings) {
|
||||
net.kyori.adventure.text.TextComponent.Builder builder = Component.text();
|
||||
@@ -182,16 +234,16 @@ public class PaperPluginsCommand extends BukkitCommand {
|
||||
}
|
||||
}
|
||||
|
||||
- Component infoMessage = Component.text("Server Plugins (%s):".formatted(paperPlugins.size() + spigotPlugins.size()), NamedTextColor.WHITE);
|
||||
+ //Component infoMessage = Component.text("Server Plugins (%s):".formatted(paperPlugins.size() + spigotPlugins.size()), NamedTextColor.WHITE);
|
||||
//.append(INFO_ICON_START.hoverEvent(SERVER_PLUGIN_INFO)); TODO: Add docs
|
||||
|
||||
- sender.sendMessage(infoMessage);
|
||||
- sender.sendMessage(PAPER_HEADER);
|
||||
- for (Component component : formatProviders(paperPlugins)) {
|
||||
+ //sender.sendMessage(infoMessage); // Purpur
|
||||
+ sender.sendMessage(PAPER_HEADER.append(Component.text(" (%s):".formatted(paperPlugins.size())))); // Purpur
|
||||
+ for (Component component : formatProviders(paperPlugins, sender)) { // Purpur
|
||||
sender.sendMessage(component);
|
||||
}
|
||||
- sender.sendMessage(BUKKIT_HEADER);
|
||||
- for (Component component : formatProviders(spigotPlugins)) {
|
||||
+ sender.sendMessage(BUKKIT_HEADER.append(Component.text(" (%s):".formatted(spigotPlugins.size())))); // Purpur
|
||||
+ for (Component component : formatProviders(spigotPlugins, sender)) { // Purpur
|
||||
sender.sendMessage(component);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user