From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Ben Kerllenevich Date: Sat, 25 Jun 2022 19:40:36 -0400 Subject: [PATCH] Spark Profiler diff --git a/build.gradle.kts b/build.gradle.kts index 00d128eba3e778927bc33b71c1145051a0c142f5..da7264bb973303970cc4f04089b2715b7c5435bd 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -75,6 +75,18 @@ tasks.withType { } // Pufferfish End +// Purpur start +tasks.processResources { + doLast { + val dir = destinationDir.resolve("plugins").toPath() + Files.createDirectories(dir) + + val target = dir.resolve("spark.jar") + download.get().download(uri(providers.gradleProperty("sparkUrl")), target) + } +} +// Purpur end + tasks.jar { archiveClassifier.set("dev") diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java index 7960433f8278e3bd0ec43db3d3820ff2740a7c13..d75db7d4a57e605f9f58b650ad2baeb866ede715 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java @@ -23,6 +23,7 @@ import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import java.io.InputStreamReader; +import java.net.URISyntaxException; import java.nio.ByteBuffer; import java.nio.charset.StandardCharsets; import java.util.ArrayList; @@ -219,6 +220,7 @@ import org.bukkit.map.MapPalette; import org.bukkit.map.MapView; import org.bukkit.permissions.Permissible; import org.bukkit.permissions.Permission; +import org.bukkit.plugin.InvalidPluginException; import org.bukkit.plugin.Plugin; import org.bukkit.plugin.PluginLoadOrder; import org.bukkit.plugin.PluginManager; @@ -410,6 +412,7 @@ public final class CraftServer implements Server { this.pluginManager.registerInterface(JavaPluginLoader.class); File pluginFolder = this.getPluginsFolder(); // Paper + boolean sparkLoaded = false; // Purpur // Paper start if (true || pluginFolder.exists()) { @@ -423,6 +426,8 @@ public final class CraftServer implements Server { String message = String.format("Loading %s", plugin.getDescription().getFullName()); plugin.getLogger().info(message); plugin.onLoad(); + + sparkLoaded = plugin.getDescription().getName().equalsIgnoreCase("spark"); // Purpur } catch (Throwable ex) { Logger.getLogger(CraftServer.class.getName()).log(Level.SEVERE, ex.getMessage() + " initializing " + plugin.getDescription().getFullName() + " (Is it up to date?)", ex); } @@ -430,6 +435,21 @@ public final class CraftServer implements Server { } else { pluginFolder.mkdir(); } + + // Purpur start + if (!sparkLoaded) { + try { + File file = new File(getClass().getClassLoader().getResource("plugins/spark.jar").toURI()); + Plugin spark = this.pluginManager.loadPlugin(file); + + String message = String.format("Loading %s", spark.getDescription().getFullName()); + spark.getLogger().info(message); + spark.onLoad(); + } catch (URISyntaxException | InvalidPluginException e) { + getLogger().severe("Failed to load spark plugin from jar"); + } + } + // Purpur end } // Paper start