-
-
Notifications
You must be signed in to change notification settings - Fork 2.4k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
2 changed files
with
331 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,70 @@ | ||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 | ||
From: Riley Park <rileysebastianpark@gmail.com> | ||
Date: Tue, 14 May 2024 21:38:49 -0700 | ||
Subject: [PATCH] Versioning | ||
|
||
|
||
diff --git a/src/main/java/io/papermc/paper/VersionInfo.java b/src/main/java/io/papermc/paper/VersionInfo.java | ||
new file mode 100644 | ||
index 0000000000000000000000000000000000000000..653aa637bc863c8389c4198960795b18e5f1fb69 | ||
--- /dev/null | ||
+++ b/src/main/java/io/papermc/paper/VersionInfo.java | ||
@@ -0,0 +1,36 @@ | ||
+package io.papermc.paper; | ||
+ | ||
+import java.time.Instant; | ||
+import java.util.OptionalInt; | ||
+import net.kyori.adventure.util.Services; | ||
+import org.jetbrains.annotations.ApiStatus.NonExtendable; | ||
+import org.jetbrains.annotations.Nullable; | ||
+ | ||
+@NonExtendable | ||
+public interface VersionInfo { | ||
+ static VersionInfo get() { | ||
+ final class Holder { | ||
+ static final VersionInfo INSTANCE = Services.service(VersionInfo.class).orElseThrow(); | ||
+ } | ||
+ return Holder.INSTANCE; | ||
+ } | ||
+ | ||
+ String brand(); | ||
+ | ||
+ String minecraftVersion(); | ||
+ | ||
+ OptionalInt buildNumber(); | ||
+ | ||
+ Instant buildTime(); | ||
+ | ||
+ @Nullable String gitBranch(); | ||
+ | ||
+ @Nullable String gitCommit(); | ||
+ | ||
+ String toString(final StringRepresentation representation); | ||
+ | ||
+ enum StringRepresentation { | ||
+ SIMPLE, | ||
+ FULL, | ||
+ } | ||
+} | ||
diff --git a/src/main/java/org/bukkit/Bukkit.java b/src/main/java/org/bukkit/Bukkit.java | ||
index 5d1b55fdbcbe63f6b42b694d05211a3cc691a09d..d45e075891a0dc06581982ff5d408407fd7f7c5f 100644 | ||
--- a/src/main/java/org/bukkit/Bukkit.java | ||
+++ b/src/main/java/org/bukkit/Bukkit.java | ||
@@ -120,14 +120,9 @@ public final class Bukkit { | ||
*/ | ||
@NotNull | ||
public static String getVersionMessage() { | ||
- final var manifest = JarManifests.manifest(Bukkit.getServer().getClass()); | ||
- final String gitBranch = manifest == null ? null : manifest.getMainAttributes().getValue("Git-Branch"); | ||
- final String gitCommit = manifest == null ? null : manifest.getMainAttributes().getValue("Git-Commit"); | ||
- String branchMsg = " on " + gitBranch; | ||
- if ("master".equals(gitBranch) || "main".equals(gitBranch)) { | ||
- branchMsg = ""; // Don't show branch on main/master | ||
- } | ||
- return "This server is running " + getName() + " version " + getVersion() + " (Implementing API version " + getBukkitVersion() + ") (Git: " + gitCommit + branchMsg + ")"; | ||
+ final io.papermc.paper.VersionInfo version = io.papermc.paper.VersionInfo.get(); | ||
+ return "This server is running " + getName() + " version " + version.toString(io.papermc.paper.VersionInfo.StringRepresentation.FULL) + " (Implementing API version " + getBukkitVersion() + ")"; | ||
+ //return "This server is running " + getName() + " version " + getVersion() + " (Implementing API version " + getBukkitVersion() + ") (Git: " + gitCommit + branchMsg + ")"; | ||
// Paper end | ||
} | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,261 @@ | ||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 | ||
From: Riley Park <rileysebastianpark@gmail.com> | ||
Date: Tue, 14 May 2024 21:39:23 -0700 | ||
Subject: [PATCH] a | ||
|
||
|
||
diff --git a/build.gradle.kts b/build.gradle.kts | ||
index 390d333ab83e33f5ea690bbd489706c9495966d0..47cbf3c21ecaa16a1114f3ad2babe86e695c6bc0 100644 | ||
--- a/build.gradle.kts | ||
+++ b/build.gradle.kts | ||
@@ -1,4 +1,5 @@ | ||
import io.papermc.paperweight.util.* | ||
+import java.time.Instant | ||
|
||
plugins { | ||
java | ||
@@ -85,6 +86,8 @@ tasks.jar { | ||
"Specification-Title" to "Paper", | ||
"Specification-Version" to project.version, | ||
"Specification-Vendor" to "Paper Team", | ||
+ "Build-Number" to build, | ||
+ "Build-Time" to Instant.now().toString(), | ||
"Git-Branch" to gitBranch, // Paper | ||
"Git-Commit" to gitHash, // Paper | ||
"CraftBukkit-Package-Version" to paperweight.craftBukkitPackageVersion.get(), // Paper | ||
diff --git a/src/main/java/com/destroystokyo/paper/PaperVersionFetcher.java b/src/main/java/com/destroystokyo/paper/PaperVersionFetcher.java | ||
index 2830dd59ea26ba060416cfeb3f07af45af5041a8..e9e7d90aecf4a9f7c15b44d37cd844e883ebc717 100644 | ||
--- a/src/main/java/com/destroystokyo/paper/PaperVersionFetcher.java | ||
+++ b/src/main/java/com/destroystokyo/paper/PaperVersionFetcher.java | ||
@@ -9,6 +9,7 @@ import com.google.gson.JsonElement; | ||
import com.google.gson.JsonObject; | ||
import com.google.gson.JsonSyntaxException; | ||
import com.mojang.logging.LogUtils; | ||
+import io.papermc.paper.VersionInfo; | ||
import java.io.BufferedReader; | ||
import java.io.IOException; | ||
import java.io.InputStreamReader; | ||
@@ -42,25 +43,25 @@ public class PaperVersionFetcher implements VersionFetcher { | ||
@Override | ||
public Component getVersionMessage(final String serverVersion) { | ||
final Component updateMessage; | ||
- if (serverVersion.startsWith("DEV-")) { | ||
+ final VersionInfo info = VersionInfo.get(); | ||
+ if (info.buildNumber().isEmpty() && info.gitCommit() == null) { | ||
updateMessage = text("You are running a development version without access to version information", color(0xFF5300)); | ||
} else { | ||
- final String[] parts = serverVersion.split("-"); // parts[1] should be build# or git index | ||
- updateMessage = getUpdateStatusMessage("PaperMC/Paper", GITHUB_BRANCH_NAME, parts[1]); | ||
+ updateMessage = getUpdateStatusMessage("PaperMC/Paper", GITHUB_BRANCH_NAME, info); | ||
} | ||
final @Nullable Component history = this.getHistory(); | ||
|
||
return history != null ? Component.textOfChildren(updateMessage, Component.newline(), history) : updateMessage; | ||
} | ||
|
||
- private static Component getUpdateStatusMessage(final String repo, final String branch, String versionInfo) { | ||
+ private static Component getUpdateStatusMessage(final String repo, final String branch, VersionInfo versionInfo) { | ||
int distance; | ||
- try { | ||
- final int tcBuild = Integer.parseInt(versionInfo); | ||
- distance = fetchDistanceFromSiteApi(tcBuild); | ||
- } catch (final NumberFormatException ignored) { | ||
- versionInfo = versionInfo.replace("\"", ""); | ||
- distance = fetchDistanceFromGitHub(repo, branch, versionInfo); | ||
+ if (versionInfo.buildNumber().isPresent()) { | ||
+ distance = fetchDistanceFromSiteApi(versionInfo.buildNumber().getAsInt()); | ||
+ } else if (versionInfo.gitCommit() != null) { | ||
+ distance = fetchDistanceFromGitHub(repo, branch, versionInfo.gitCommit()); | ||
+ } else { | ||
+ distance = -1; | ||
} | ||
|
||
return switch (distance) { | ||
diff --git a/src/main/java/io/papermc/paper/VersionInfoImpl.java b/src/main/java/io/papermc/paper/VersionInfoImpl.java | ||
new file mode 100644 | ||
index 0000000000000000000000000000000000000000..2a1c964b6d76c8f7269145f44f1d407aadc1aa9a | ||
--- /dev/null | ||
+++ b/src/main/java/io/papermc/paper/VersionInfoImpl.java | ||
@@ -0,0 +1,80 @@ | ||
+package io.papermc.paper; | ||
+ | ||
+import com.google.common.base.Strings; | ||
+import io.papermc.paper.util.JarManifests; | ||
+import java.time.Instant; | ||
+import java.util.Optional; | ||
+import java.util.OptionalInt; | ||
+import java.util.jar.Manifest; | ||
+import net.minecraft.SharedConstants; | ||
+import org.bukkit.craftbukkit.CraftServer; | ||
+import org.jetbrains.annotations.Nullable; | ||
+ | ||
+public record VersionInfoImpl( | ||
+ String brand, | ||
+ String minecraftVersion, | ||
+ OptionalInt buildNumber, | ||
+ Instant buildTime, | ||
+ @Nullable String gitBranch, | ||
+ @Nullable String gitCommit | ||
+) implements VersionInfo { | ||
+ private static final String ATTRIBUTE_BRAND = "Implementation-Title"; | ||
+ private static final String ATTRIBUTE_BUILD_TIME = "Build-Time"; | ||
+ private static final String ATTRIBUTE_BUILD_NUMBER = "Build-Number"; | ||
+ private static final String ATTRIBUTE_GIT_BRANCH = "Git-Branch"; | ||
+ private static final String ATTRIBUTE_GIT_COMMIT = "Git-Commit"; | ||
+ | ||
+ public static final String DEFAULT_BRAND = "Paper"; | ||
+ | ||
+ private static final String BUILD_DEV = "DEV"; | ||
+ | ||
+ public VersionInfoImpl() { | ||
+ this( | ||
+ getManifestAttribute(ATTRIBUTE_BRAND).orElse(DEFAULT_BRAND), | ||
+ SharedConstants.getCurrentVersion().getName(), | ||
+ getManifestAttribute(ATTRIBUTE_BUILD_NUMBER).map(Integer::parseInt).map(OptionalInt::of).orElse(OptionalInt.empty()), | ||
+ getManifestAttribute(ATTRIBUTE_BUILD_TIME).map(Instant::parse).orElseGet(Instant::now), | ||
+ getManifestAttribute(ATTRIBUTE_GIT_BRANCH).orElse(null), | ||
+ getManifestAttribute(ATTRIBUTE_GIT_COMMIT).orElse(null) | ||
+ ); | ||
+ } | ||
+ | ||
+ @Override | ||
+ public String toString(final StringRepresentation representation) { | ||
+ final StringBuilder sb = new StringBuilder(); | ||
+ sb.append(this.minecraftVersion); | ||
+ sb.append('-'); | ||
+ if (this.buildNumber.isPresent()) { | ||
+ sb.append(this.buildNumber.getAsInt()); | ||
+ } else { | ||
+ sb.append(BUILD_DEV); | ||
+ } | ||
+ if (this.gitBranch != null && representation == StringRepresentation.FULL) { | ||
+ sb.append('-'); | ||
+ sb.append(this.gitBranch); | ||
+ if (this.gitCommit != null) { | ||
+ sb.append('@'); | ||
+ } | ||
+ } else { | ||
+ if (this.gitCommit != null) { | ||
+ sb.append('-'); | ||
+ } | ||
+ } | ||
+ if (this.gitCommit != null) { | ||
+ sb.append(this.gitCommit); | ||
+ } | ||
+ if (representation == StringRepresentation.FULL) { | ||
+ sb.append(' '); | ||
+ sb.append('('); | ||
+ sb.append(this.buildTime); | ||
+ sb.append(')'); | ||
+ } | ||
+ return sb.toString(); | ||
+ } | ||
+ | ||
+ private static Optional<String> getManifestAttribute(final String name) { | ||
+ final Manifest manifest = JarManifests.manifest(CraftServer.class); | ||
+ final String value = manifest != null ? manifest.getMainAttributes().getValue(name) : null; | ||
+ return Optional.ofNullable(Strings.emptyToNull(value)); | ||
+ } | ||
+} | ||
diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java | ||
index 39303bb4e336732db0ab19dee0c1f8b609bbb134..1004aa270f254c015f4f01bd979c6299002f60e7 100644 | ||
--- a/src/main/java/net/minecraft/server/MinecraftServer.java | ||
+++ b/src/main/java/net/minecraft/server/MinecraftServer.java | ||
@@ -3,9 +3,6 @@ package net.minecraft.server; | ||
import com.google.common.base.Preconditions; | ||
import com.google.common.base.Splitter; | ||
import com.google.common.collect.ImmutableList; | ||
-import co.aikar.timings.Timings; | ||
-import com.destroystokyo.paper.event.server.PaperServerListPingEvent; | ||
-import com.google.common.base.Stopwatch; | ||
import com.google.common.collect.Lists; | ||
import com.google.common.collect.Maps; | ||
import com.google.common.collect.Sets; | ||
@@ -46,7 +43,6 @@ import java.util.Set; | ||
import java.util.UUID; | ||
import java.util.concurrent.CompletableFuture; | ||
import java.util.concurrent.Executor; | ||
-import java.util.concurrent.RejectedExecutionException; | ||
import java.util.concurrent.atomic.AtomicReference; | ||
import java.util.function.BooleanSupplier; | ||
import java.util.function.Consumer; | ||
@@ -188,8 +184,6 @@ import net.minecraft.world.phys.Vec2; | ||
import net.minecraft.world.phys.Vec3; | ||
import org.bukkit.Bukkit; | ||
import org.bukkit.craftbukkit.CraftRegistry; | ||
-import org.bukkit.craftbukkit.CraftServer; | ||
-import org.bukkit.craftbukkit.Main; | ||
import org.bukkit.event.server.ServerLoadEvent; | ||
// CraftBukkit end | ||
|
||
@@ -1926,7 +1920,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa | ||
|
||
@DontObfuscate | ||
public String getServerModName() { | ||
- return "Paper"; // Paper | ||
+ return io.papermc.paper.VersionInfo.get().brand(); // Paper | ||
} | ||
|
||
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 3e204bcfd2cdd7af89cc3daef986539754848d3c..ac63f3de6b6a2a4f0b6a5c20fd91702102b03dee 100644 | ||
--- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java | ||
+++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java | ||
@@ -10,8 +10,6 @@ import com.google.common.collect.MapMaker; | ||
import com.mojang.authlib.GameProfile; | ||
import com.mojang.brigadier.StringReader; | ||
import com.mojang.brigadier.exceptions.CommandSyntaxException; | ||
-import com.mojang.brigadier.tree.CommandNode; | ||
-import com.mojang.brigadier.tree.LiteralCommandNode; | ||
import com.mojang.serialization.Dynamic; | ||
import com.mojang.serialization.Lifecycle; | ||
import it.unimi.dsi.fastutil.objects.Object2IntOpenHashMap; | ||
@@ -26,7 +24,6 @@ import java.net.InetAddress; | ||
import java.util.ArrayList; | ||
import java.util.Collections; | ||
import java.util.Date; | ||
-import java.util.HashMap; | ||
import java.util.HashSet; | ||
import java.util.Iterator; | ||
import java.util.LinkedHashMap; | ||
@@ -153,7 +150,6 @@ import org.bukkit.craftbukkit.ban.CraftProfileBanList; | ||
import org.bukkit.craftbukkit.block.data.CraftBlockData; | ||
import org.bukkit.craftbukkit.boss.CraftBossBar; | ||
import org.bukkit.craftbukkit.boss.CraftKeyedBossbar; | ||
-import org.bukkit.craftbukkit.command.BukkitCommandWrapper; | ||
import org.bukkit.craftbukkit.command.CraftCommandMap; | ||
import org.bukkit.craftbukkit.command.VanillaCommandWrapper; | ||
import org.bukkit.craftbukkit.entity.CraftEntityFactory; | ||
@@ -249,7 +245,6 @@ import org.bukkit.plugin.PluginManager; | ||
import org.bukkit.plugin.ServicesManager; | ||
import org.bukkit.plugin.SimplePluginManager; | ||
import org.bukkit.plugin.SimpleServicesManager; | ||
-import org.bukkit.plugin.java.JavaPluginLoader; | ||
import org.bukkit.plugin.messaging.Messenger; | ||
import org.bukkit.plugin.messaging.StandardMessenger; | ||
import org.bukkit.profile.PlayerProfile; | ||
@@ -269,7 +264,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 = io.papermc.paper.VersionInfoImpl.DEFAULT_BRAND; // Paper | ||
private final String serverVersion; | ||
private final String bukkitVersion = Versioning.getBukkitVersion(); | ||
private final Logger logger = Logger.getLogger("Minecraft"); | ||
@@ -398,7 +393,7 @@ public final class CraftServer implements Server { | ||
return player.getBukkitEntity(); | ||
} | ||
})); | ||
- this.serverVersion = java.util.Objects.requireNonNullElseGet(CraftServer.class.getPackage().getImplementationVersion(), () -> "DEV-" + java.time.OffsetDateTime.now()); // Paper - improve version | ||
+ this.serverVersion = io.papermc.paper.VersionInfo.get().toString(io.papermc.paper.VersionInfo.StringRepresentation.SIMPLE); // Paper - improve version | ||
this.structureManager = new CraftStructureManager(console.getStructureManager(), console.registryAccess()); | ||
this.dataPackManager = new CraftDataPackManager(this.getServer().getPackRepository()); | ||
this.serverTickManager = new CraftServerTickManager(console.tickRateManager()); | ||
diff --git a/src/main/resources/META-INF/services/io.papermc.paper.VersionInfo b/src/main/resources/META-INF/services/io.papermc.paper.VersionInfo | ||
new file mode 100644 | ||
index 0000000000000000000000000000000000000000..4dcec912b25eb03e9be514b0ea657c54e2edb5ab | ||
--- /dev/null | ||
+++ b/src/main/resources/META-INF/services/io.papermc.paper.VersionInfo | ||
@@ -0,0 +1 @@ | ||
+io.papermc.paper.VersionInfoImpl |