From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: violetc <58360096+s-yh-china@users.noreply.github.com> Date: Tue, 13 Sep 2022 16:58:47 +0800 Subject: [PATCH] Build changes diff --git a/build.gradle.kts b/build.gradle.kts index 9cf389defdaeb887e9cad4f0fed3f3b95667b238..5c2ecb57aa3395a2bb10464e85b18c3ecf77e91d 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -7,8 +7,12 @@ plugins { } dependencies { - implementation(project(":paper-api")) - implementation(project(":paper-mojangapi")) + implementation(project(":leaves-api")) // Leaves + // Leaves start + implementation("io.papermc.paper:paper-mojangapi:1.19.4-R0.1-SNAPSHOT") { + exclude("io.papermc.paper", "paper-api") + } + // Leaves end // Paper start implementation("org.jline:jline-terminal-jansi:3.21.0") implementation("net.minecrell:terminalconsoleappender:1.3.0") @@ -56,13 +60,13 @@ tasks.jar { manifest { val git = Git(rootProject.layout.projectDirectory.path) val gitHash = git("rev-parse", "--short=7", "HEAD").getText().trim() - val implementationVersion = System.getenv("BUILD_NUMBER") ?: "\"$gitHash\"" + val implementationVersion = /* System.getenv("BUILD_NUMBER") ?: */ "\"$gitHash\"" // Leaves we dont have CI val date = git("show", "-s", "--format=%ci", gitHash).getText().trim() // Paper val gitBranch = git("rev-parse", "--abbrev-ref", "HEAD").getText().trim() // Paper attributes( "Main-Class" to "org.bukkit.craftbukkit.Main", "Implementation-Title" to "CraftBukkit", - "Implementation-Version" to "git-Paper-$implementationVersion", + "Implementation-Version" to "git-Leaves-$implementationVersion", "Implementation-Vendor" to date, // Paper "Specification-Title" to "Bukkit", "Specification-Version" to project.version, @@ -134,7 +138,7 @@ fun TaskContainer.registerRunTask( name: String, block: JavaExec.() -> Unit ): TaskProvider = register(name) { - group = "paper" + group = "paperweight" mainClass.set("org.bukkit.craftbukkit.Main") standardInput = System.`in` workingDir = rootProject.layout.projectDirectory diff --git a/src/main/java/com/destroystokyo/paper/Metrics.java b/src/main/java/com/destroystokyo/paper/Metrics.java index 4b002e8b75d117b726b0de274a76d3596fce015b..0ac8bcb0a4b7d1da3d0e016617db7a81ce9acead 100644 --- a/src/main/java/com/destroystokyo/paper/Metrics.java +++ b/src/main/java/com/destroystokyo/paper/Metrics.java @@ -593,7 +593,7 @@ public class Metrics { boolean logFailedRequests = config.getBoolean("logFailedRequests", false); // Only start Metrics, if it's enabled in the config if (config.getBoolean("enabled", true)) { - Metrics metrics = new Metrics("Paper", serverUUID, logFailedRequests, Bukkit.getLogger()); + Metrics metrics = new Metrics("Leaves", serverUUID, logFailedRequests, Bukkit.getLogger()); // Leaves - we have our own bstats page metrics.addCustomChart(new Metrics.SimplePie("minecraft_version", () -> { String minecraftVersion = Bukkit.getVersion(); @@ -603,15 +603,7 @@ public class Metrics { metrics.addCustomChart(new Metrics.SingleLineChart("players", () -> Bukkit.getOnlinePlayers().size())); metrics.addCustomChart(new Metrics.SimplePie("online_mode", () -> Bukkit.getOnlineMode() ? "online" : "offline")); - final String paperVersion; - final String implVersion = org.bukkit.craftbukkit.Main.class.getPackage().getImplementationVersion(); - if (implVersion != null) { - final String buildOrHash = implVersion.substring(implVersion.lastIndexOf('-') + 1); - paperVersion = "git-Paper-%s-%s".formatted(Bukkit.getServer().getMinecraftVersion(), buildOrHash); - } else { - paperVersion = "unknown"; - } - metrics.addCustomChart(new Metrics.SimplePie("paper_version", () -> paperVersion)); + metrics.addCustomChart(new Metrics.SimplePie("leaves_version", () -> (Metrics.class.getPackage().getImplementationVersion() != null) ? Metrics.class.getPackage().getImplementationVersion() : "unknown")); // Leaves - we have our own bstats page metrics.addCustomChart(new Metrics.DrilldownPie("java_version", () -> { Map> map = new HashMap<>(); diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java index e67c4a7aaa11f5c67f926f92e0a174af526c2ec3..a1513818ce64c97462000eb3cf69cd09261f9ddb 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java @@ -1681,7 +1681,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop // Spigot - Spigot > // CraftBukkit - cb > vanilla! + return "Leaves"; // Leaves - Leaves > //Paper - Paper > // Spigot - Spigot > // CraftBukkit - cb > vanilla! } 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 f9a9d2bb7b6d1bf4a0931438de4d8c7ee0757479..3e9861287cd3b6632aa6e4e1834e4afca4dad268 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java @@ -256,7 +256,7 @@ import javax.annotation.Nullable; // Paper import javax.annotation.Nonnull; // Paper public final class CraftServer implements Server { - private final String serverName = "Paper"; // Paper + private final String serverName = "Leaves"; // Leaves // Paper private final String serverVersion; private final String bukkitVersion = Versioning.getBukkitVersion(); private final Logger logger = Logger.getLogger("Minecraft"); diff --git a/src/main/java/org/bukkit/craftbukkit/Main.java b/src/main/java/org/bukkit/craftbukkit/Main.java index d51650d3e37eb76a0cf991e95d28a552aa567af9..b9a3d707cbe1b2a44f1401d812e1224cddd984b0 100644 --- a/src/main/java/org/bukkit/craftbukkit/Main.java +++ b/src/main/java/org/bukkit/craftbukkit/Main.java @@ -285,7 +285,7 @@ public class Main { if (buildDate.before(deadline.getTime())) { // Paper start - This is some stupid bullshit System.err.println("*** Warning, you've not updated in a while! ***"); - System.err.println("*** Please download a new build as per instructions from https://papermc.io/downloads ***"); // Paper + System.err.println("*** Please download a new build as per instructions from https://github.com/LeavesMC/Leaves/releases ***"); // Leaves //System.err.println("*** Server will start in 20 seconds ***"); //Thread.sleep(TimeUnit.SECONDS.toMillis(20)); // Paper End diff --git a/src/main/java/org/bukkit/craftbukkit/util/Versioning.java b/src/main/java/org/bukkit/craftbukkit/util/Versioning.java index 774556a62eb240da42e84db4502e2ed43495be17..ca166161ef919c559de9cc02bdf435cbfcc972df 100644 --- a/src/main/java/org/bukkit/craftbukkit/util/Versioning.java +++ b/src/main/java/org/bukkit/craftbukkit/util/Versioning.java @@ -11,7 +11,7 @@ public final class Versioning { public static String getBukkitVersion() { String result = "Unknown-Version"; - InputStream stream = Bukkit.class.getClassLoader().getResourceAsStream("META-INF/maven/io.papermc.paper/paper-api/pom.properties"); + InputStream stream = Bukkit.class.getClassLoader().getResourceAsStream("META-INF/maven/top.leavesmc.leaves/leaves-api/pom.properties"); // Leaves Properties properties = new Properties(); if (stream != null) { diff --git a/src/main/resources/logo.png b/src/main/resources/logo.png index a7d785f60c884ee4ee487cc364402d66c3dc2ecc..68e9ac07245a9e4607b5e57c3511121a5651ad43 100644 GIT binary patch literal 9654 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 literal 14310 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