From 2c814f8d41fa7027b98042455b633d29776785ba Mon Sep 17 00:00:00 2001 From: nostalgic853 Date: Sun, 23 Oct 2022 21:41:22 +0800 Subject: [PATCH] Better versioning system --- .../workflows/{build-stable.yml => build.yml} | 10 +-- patches/api/0004-Rebrand.patch | 19 +++++ patches/server/0001-Rebrand.patch | 83 +++++++++++++++---- 3 files changed, 93 insertions(+), 19 deletions(-) rename .github/workflows/{build-stable.yml => build.yml} (86%) create mode 100644 patches/api/0004-Rebrand.patch diff --git a/.github/workflows/build-stable.yml b/.github/workflows/build.yml similarity index 86% rename from .github/workflows/build-stable.yml rename to .github/workflows/build.yml index 66ac6b2..5334740 100644 --- a/.github/workflows/build-stable.yml +++ b/.github/workflows/build.yml @@ -1,8 +1,8 @@ -name: Build (stable/1.19.2) +name: Build (main) on: push: branches: - - "stable/1.19.2" + - "main" env: MC_VERSION: "1.19.2" @@ -44,12 +44,12 @@ jobs: export BUILD_NUMBER_111=${{ env.workflow }} ./gradlew createReobfPaperclipJar --stacktrace --no-daemon - name: Rename Jar - run: "mv build/libs/keyi-paperclip-${{ env.MC_VERSION }}-R0.1-SNAPSHOT-reobf.jar build/libs/keyi-stable-${{ env.MC_VERSION }}-${{ env.workflow }}.jar" + run: "mv build/libs/keyi-paperclip-${{ env.MC_VERSION }}-R0.1-SNAPSHOT-reobf.jar build/libs/keyi-${{ env.ref }}-${{ env.MC_VERSION }}-${{ env.workflow }}.jar" - name: Release Artifacts uses: marvinpinto/action-automatic-releases@latest with: title: "[${{ env.ref }}] #${{ env.workflow }}" - automatic_release_tag: "stable-latest" + automatic_release_tag: "main-latest" repo_token: "${{ secrets.GITHUB_TOKEN }}" - files: build/libs/keyi-stable-${{ env.MC_VERSION }}-${{ env.workflow }}.jar + files: "build/libs/keyi-${{ env.ref }}-${{ env.MC_VERSION }}-${{ env.workflow }}.jar" prerelease: false diff --git a/patches/api/0004-Rebrand.patch b/patches/api/0004-Rebrand.patch new file mode 100644 index 0000000..c448033 --- /dev/null +++ b/patches/api/0004-Rebrand.patch @@ -0,0 +1,19 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: nostalgic853 +Date: Sun, 23 Oct 2022 21:32:36 +0800 +Subject: [PATCH] Rebrand + + +diff --git a/src/main/java/org/bukkit/command/defaults/VersionCommand.java b/src/main/java/org/bukkit/command/defaults/VersionCommand.java +index eac5830986cd0638950bbb1e6f10a30e246e09a7..f446b486adcbee360ebbb63195ea5828311cf0f3 100644 +--- a/src/main/java/org/bukkit/command/defaults/VersionCommand.java ++++ b/src/main/java/org/bukkit/command/defaults/VersionCommand.java +@@ -198,7 +198,7 @@ public class VersionCommand extends BukkitCommand { + String version = Bukkit.getVersion(); + // Paper start + if (version.startsWith("null")) { // running from ide? +- setVersionMessage(net.kyori.adventure.text.Component.text("* Unknown version, custom build?", net.kyori.adventure.text.format.NamedTextColor.RED)); // Purpur ++ setVersionMessage(net.kyori.adventure.text.Component.text("Unknown version, custom build?", net.kyori.adventure.text.format.NamedTextColor.RED)); // Purpur // KeYi + return; + } + setVersionMessage(getVersionFetcher().getVersionMessage(version)); diff --git a/patches/server/0001-Rebrand.patch b/patches/server/0001-Rebrand.patch index 5182617..92de562 100644 --- a/patches/server/0001-Rebrand.patch +++ b/patches/server/0001-Rebrand.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Rebrand diff --git a/build.gradle.kts b/build.gradle.kts -index 2ee34f92e8a89b90448bbf710fdc0d5d6350e919..f15f7470a591d8491055d0ac3205224f6735ea59 100644 +index 2ee34f92e8a89b90448bbf710fdc0d5d6350e919..299ac3fab7543cb7ae0371ae80ea4786e6d37d8b 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -9,7 +9,7 @@ plugins { @@ -29,7 +29,7 @@ index 2ee34f92e8a89b90448bbf710fdc0d5d6350e919..f15f7470a591d8491055d0ac3205224f "Main-Class" to "org.bukkit.craftbukkit.Main", "Implementation-Title" to "CraftBukkit", - "Implementation-Version" to "git-Purpur-$implementationVersion",// Purpur -+ "Implementation-Version" to "git-KeYi-stable-$implementationVersion",// Purpur // KeYi ++ "Implementation-Version" to "git-KeYi-$gitBranch-$implementationVersion",// Purpur // KeYi "Implementation-Vendor" to date, // Paper "Specification-Title" to "Bukkit", "Specification-Version" to project.version, @@ -56,10 +56,29 @@ index acd95cf1dc7f009b63e44e4404e1736283fd458e..3436a377f9c11d8f2a39af65c3370861 metrics.addCustomChart(new Metrics.DrilldownPie("java_version", () -> { Map> map = new HashMap<>(); diff --git a/src/main/java/com/destroystokyo/paper/PaperVersionFetcher.java b/src/main/java/com/destroystokyo/paper/PaperVersionFetcher.java -index fba5dbdb7bcbb55400ef18342c9b54612972a718..fc65beba373834f4c6cf43f15e18b4655960a602 100644 +index fba5dbdb7bcbb55400ef18342c9b54612972a718..005983d56b283e54e2cf450f1e9f985aa22503a9 100644 --- a/src/main/java/com/destroystokyo/paper/PaperVersionFetcher.java +++ b/src/main/java/com/destroystokyo/paper/PaperVersionFetcher.java -@@ -20,7 +20,7 @@ import java.util.stream.StreamSupport; +@@ -4,27 +4,31 @@ import com.destroystokyo.paper.util.VersionFetcher; + import com.google.common.base.Charsets; + import com.google.common.io.Resources; + import com.google.gson.*; ++import io.papermc.paper.util.JarManifests; + 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.TextDecoration; +-import net.kyori.adventure.text.TextComponent; ++import org.bukkit.Bukkit; + + import javax.annotation.Nonnull; + import javax.annotation.Nullable; + import java.io.*; + import java.net.HttpURLConnection; + import java.net.URL; +-import java.util.stream.StreamSupport; ++import java.util.jar.Manifest; + public class PaperVersionFetcher implements VersionFetcher { private static final java.util.regex.Pattern VER_PATTERN = java.util.regex.Pattern.compile("^([0-9\\.]*)\\-.*R"); // R is an anchor, will always give '-R' at end // Purpur start @@ -68,18 +87,26 @@ index fba5dbdb7bcbb55400ef18342c9b54612972a718..fc65beba373834f4c6cf43f15e18b465 private static int distance = -2; public int distance() { return distance; } // Purpur end private static @Nullable String mcVer; -@@ -33,8 +33,8 @@ public class PaperVersionFetcher implements VersionFetcher { +- ++ // KeYi start ++ private static final Manifest JAR_MANIFEST = JarManifests.manifest(Bukkit.getServer().getClass()); ++ private static final String GIT_BRANCH = JAR_MANIFEST == null ? null : JAR_MANIFEST.getMainAttributes().getValue("Git-Branch"); ++ private static final String GIT_COMMIT = JAR_MANIFEST == null ? null : JAR_MANIFEST.getMainAttributes().getValue("Git-Commit"); ++ // KeYi end + @Override + public long getCacheTime() { + return 720000; +@@ -33,8 +37,7 @@ public class PaperVersionFetcher implements VersionFetcher { @Nonnull @Override public Component getVersionMessage(@Nonnull String serverVersion) { - String[] parts = serverVersion.substring("git-Purpur-".length()).split("[-\\s]"); // Purpur - final Component updateMessage = getUpdateStatusMessage("PurpurMC/Purpur", "ver/" + getMinecraftVersion(), parts[0]); // Purpur -+ String[] parts = serverVersion.substring("git-KeYi-stable-".length()).split("[-\\s]"); // Purpur // KeYi -+ final Component updateMessage = getUpdateStatusMessage("KeYiMC/KeYi", "stable/1.19.2", parts[0]); // Purpur // KeYi ++ final Component updateMessage = getUpdateStatusMessage("KeYiMC/KeYi", GIT_BRANCH, GIT_COMMIT); // Purpur // KeYi final Component history = getHistory(); return history != null ? Component.join(net.kyori.adventure.text.JoinConfiguration.separator(Component.newline()), history, updateMessage) : updateMessage; // Purpur -@@ -47,7 +47,7 @@ public class PaperVersionFetcher implements VersionFetcher { +@@ -47,7 +50,7 @@ public class PaperVersionFetcher implements VersionFetcher { String result = matcher.group(); mcVer = result.substring(0, result.length() - 2); // strip 'R' anchor and trailing '-' } else { @@ -88,7 +115,7 @@ index fba5dbdb7bcbb55400ef18342c9b54612972a718..fc65beba373834f4c6cf43f15e18b465 org.bukkit.Bukkit.getLogger().warning("Pattern: " + VER_PATTERN.toString()); org.bukkit.Bukkit.getLogger().warning("Version: " + org.bukkit.Bukkit.getBukkitVersion()); } -@@ -58,6 +58,8 @@ public class PaperVersionFetcher implements VersionFetcher { +@@ -58,6 +61,8 @@ public class PaperVersionFetcher implements VersionFetcher { private static Component getUpdateStatusMessage(@Nonnull String repo, @Nonnull String branch, @Nonnull String versionInfo) { //int distance; // Purpur - use field @@ -97,19 +124,47 @@ index fba5dbdb7bcbb55400ef18342c9b54612972a718..fc65beba373834f4c6cf43f15e18b465 try { int jenkinsBuild = Integer.parseInt(versionInfo); distance = fetchDistanceFromSiteApi(jenkinsBuild, getMinecraftVersion()); -@@ -65,6 +67,12 @@ public class PaperVersionFetcher implements VersionFetcher { +@@ -65,22 +70,25 @@ public class PaperVersionFetcher implements VersionFetcher { versionInfo = versionInfo.replace("\"", ""); distance = fetchDistanceFromGitHub(repo, branch, versionInfo); } + */ -+ + +- switch (distance) { +- case -1: +- return Component.text("* Error obtaining version information", NamedTextColor.RED); // Purpur +- case 0: +- return Component.text("* You are running the latest version", NamedTextColor.GREEN); // Purpur +- case -2: +- return Component.text("* Unknown version", NamedTextColor.RED); // Purpur +- default: +- return Component.text("* You are " + distance + " version(s) behind", NamedTextColor.YELLOW) // Purpur +- .append(Component.newline()) +- .append(Component.text("Download the new version at: ") +- .append(Component.text(DOWNLOAD_PAGE, NamedTextColor.GOLD) +- .hoverEvent(Component.text("Click to open", NamedTextColor.WHITE)) +- .clickEvent(ClickEvent.openUrl(DOWNLOAD_PAGE)))); +- } + versionInfo = versionInfo.replace("\"", ""); + distance = fetchDistanceFromGitHub(repo, branch, versionInfo); -+ + // KeYi end ++ ++ // KeYi start ++ return switch (distance) { ++ case -1 -> Component.text("Failed to obtain version information.", NamedTextColor.RED); // Purpur // KeYi ++ case 0 -> Component.text("You are running the latest version.", NamedTextColor.GREEN); // Purpur // KeYi ++ case -2 -> Component.text("You are running an unknown version.", NamedTextColor.RED); // Purpur // KeYi ++ default -> Component.text("You are " + distance + " version(s) behind.", NamedTextColor.YELLOW) // Purpur // KeYi ++ .append(Component.newline()) ++ .append(Component.text("Download the new version at: ") ++ .append(Component.text(DOWNLOAD_PAGE, NamedTextColor.GOLD) ++ .hoverEvent(Component.text("Click to open", NamedTextColor.WHITE)) ++ .clickEvent(ClickEvent.openUrl(DOWNLOAD_PAGE)))); ++ }; ++ // KeYi end + } - switch (distance) { - case -1: + private static int fetchDistanceFromSiteApi(int jenkinsBuild, @Nullable String siteApiVersion) { diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java index f9508a26b2e764e752da3d2c9f43a9d7de19dd27..4f029b96bf8deee597dbb56974e4519a1422f96d 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java