diff --git a/bukkit/src/main/java/net/william278/husksync/BukkitHuskSync.java b/bukkit/src/main/java/net/william278/husksync/BukkitHuskSync.java index 979576c4..a75e16c2 100644 --- a/bukkit/src/main/java/net/william278/husksync/BukkitHuskSync.java +++ b/bukkit/src/main/java/net/william278/husksync/BukkitHuskSync.java @@ -333,6 +333,12 @@ public class BukkitHuskSync extends JavaPlugin implements HuskSync, BukkitTask.S return PLATFORM_TYPE_ID; } + @Override + @NotNull + public String getServerVersion() { + return String.format("%s/%s", getServer().getName(), getServer().getVersion()); + } + @Override public Optional getLegacyConverter() { return Optional.of(legacyConverter); diff --git a/common/src/main/java/net/william278/husksync/HuskSync.java b/common/src/main/java/net/william278/husksync/HuskSync.java index f3977a38..962c272a 100644 --- a/common/src/main/java/net/william278/husksync/HuskSync.java +++ b/common/src/main/java/net/william278/husksync/HuskSync.java @@ -255,6 +255,14 @@ public interface HuskSync extends Task.Supplier, EventDispatcher, ConfigProvider @NotNull String getPlatformType(); + /** + * Returns the server software version + * + * @return the server software version string + */ + @NotNull + String getServerVersion(); + /** * Returns the legacy data converter if it exists * diff --git a/common/src/main/java/net/william278/husksync/command/HuskSyncCommand.java b/common/src/main/java/net/william278/husksync/command/HuskSyncCommand.java index 9299f01e..80d38823 100644 --- a/common/src/main/java/net/william278/husksync/command/HuskSyncCommand.java +++ b/common/src/main/java/net/william278/husksync/command/HuskSyncCommand.java @@ -204,19 +204,19 @@ public class HuskSyncCommand extends PluginCommand { PLUGIN_VERSION(plugin -> Component.text("v" + plugin.getPluginVersion().toStringWithoutMetadata()) .appendSpace().append(plugin.getPluginVersion().getMetadata().isBlank() ? Component.empty() : Component.text("(build " + plugin.getPluginVersion().getMetadata() + ")"))), - PLATFORM_TYPE(plugin -> Component.text(WordUtils.capitalizeFully(plugin.getPlatformType()))), + SERVER_VERSION(plugin -> Component.text(plugin.getServerVersion())), LANGUAGE(plugin -> Component.text(plugin.getSettings().getLanguage())), MINECRAFT_VERSION(plugin -> Component.text(plugin.getMinecraftVersion().toString())), JAVA_VERSION(plugin -> Component.text(System.getProperty("java.version"))), JAVA_VENDOR(plugin -> Component.text(System.getProperty("java.vendor"))), + SERVER_NAME(plugin -> Component.text(plugin.getServerName())), + CLUSTER_ID(plugin -> Component.text(plugin.getSettings().getClusterId().isBlank() ? "None" : plugin.getSettings().getClusterId())), SYNC_MODE(plugin -> Component.text(WordUtils.capitalizeFully( plugin.getSettings().getSynchronization().getMode().toString() ))), DELAY_LATENCY(plugin -> Component.text( plugin.getSettings().getSynchronization().getNetworkLatencyMilliseconds() + "ms" )), - SERVER_NAME(plugin -> Component.text(plugin.getServerName())), - CLUSTER_ID(plugin -> Component.text(plugin.getSettings().getClusterId().isBlank() ? "None" : plugin.getSettings().getClusterId())), DATABASE_TYPE(plugin -> Component.text(plugin.getSettings().getDatabase().getType().getDisplayName() + (plugin.getSettings().getDatabase().getType() == Database.Type.MONGO ? diff --git a/fabric/src/main/java/net/william278/husksync/FabricHuskSync.java b/fabric/src/main/java/net/william278/husksync/FabricHuskSync.java index 043b5bb6..4c5e4618 100644 --- a/fabric/src/main/java/net/william278/husksync/FabricHuskSync.java +++ b/fabric/src/main/java/net/william278/husksync/FabricHuskSync.java @@ -339,6 +339,14 @@ public class FabricHuskSync implements DedicatedServerModInitializer, HuskSync, return PLATFORM_TYPE_ID; } + @Override + @NotNull + public String getServerVersion() { + return String.format("%s %s/%s", getPlatformType(), FabricLoader.getInstance() + .getModContainer("fabricloader").map(l -> l.getMetadata().getVersion().getFriendlyString()) + .orElse("unknown"), minecraftServer.getVersion()); + } + @Override public Optional getLegacyConverter() { return Optional.empty();