diff --git a/README.md b/README.md index 3ca4d939..d66bc025 100644 --- a/README.md +++ b/README.md @@ -34,6 +34,10 @@ dev.faststats.metrics:neoforge:+mc26.3 Each artifact only declares the Minecraft version it was built for in its `fabric.mod.json`, `mods.toml` or `neoforge.mods.toml`. +The Fabric artifact also supports Quilt, which loads Fabric mods. +On Quilt it reports Quilt and the Quilt Loader version instead of Fabric. +It needs Quilt Loader 0.30.0 or newer and Fabric API or Quilted Fabric API. + See [CONTRIBUTING.md](CONTRIBUTING.md) for how the version-specific code is organized and how to add a Minecraft version. diff --git a/fabric/src/main/java/dev/faststats/fabric/FabricMetrics.java b/fabric/src/main/java/dev/faststats/fabric/FabricMetrics.java index 6aef6fc4..16184912 100644 --- a/fabric/src/main/java/dev/faststats/fabric/FabricMetrics.java +++ b/fabric/src/main/java/dev/faststats/fabric/FabricMetrics.java @@ -13,11 +13,12 @@ protected FabricMetrics(final Factory factory, final ModContainer mod) throws Il this.mod = mod; } - protected void appendFabricData(final JsonObject metrics, final String serverType) { + protected void appendFabricData(final JsonObject metrics, final boolean client) { + final var loader = isQuilt() ? "Quilt" : "Fabric"; metrics.addProperty("game_version", minecraftVersion()); metrics.addProperty("platform_version", platformVersion()); metrics.addProperty("plugin_version", mod.getMetadata().getVersion().getFriendlyString()); - metrics.addProperty("server_type", serverType); + metrics.addProperty("server_type", client ? loader + " Client" : loader); } protected static String minecraftVersion() { @@ -25,7 +26,11 @@ protected static String minecraftVersion() { } protected static String platformVersion() { - return version("fabricloader"); + return version(isQuilt() ? "quilt_loader" : "fabricloader"); + } + + private static boolean isQuilt() { + return FabricLoader.getInstance().isModLoaded("quilt_loader"); } private static String version(final String modId) { diff --git a/fabric/src/main/java/dev/faststats/fabric/FabricMetricsClient.java b/fabric/src/main/java/dev/faststats/fabric/FabricMetricsClient.java index 8b2fa7e7..dbbc5913 100644 --- a/fabric/src/main/java/dev/faststats/fabric/FabricMetricsClient.java +++ b/fabric/src/main/java/dev/faststats/fabric/FabricMetricsClient.java @@ -21,6 +21,6 @@ public boolean isClientApplication() { protected void appendDefaultData(final JsonObject metrics) { metrics.addProperty("online_mode", compatibilityLayer.clientOnlineMode()); metrics.addProperty("player_count", compatibilityLayer.clientPlayerCount()); - appendFabricData(metrics, "Fabric Client"); + appendFabricData(metrics, true); } } diff --git a/fabric/src/main/java/dev/faststats/fabric/FabricMetricsServer.java b/fabric/src/main/java/dev/faststats/fabric/FabricMetricsServer.java index 8fed32e6..2f4aa0f3 100644 --- a/fabric/src/main/java/dev/faststats/fabric/FabricMetricsServer.java +++ b/fabric/src/main/java/dev/faststats/fabric/FabricMetricsServer.java @@ -17,6 +17,6 @@ final class FabricMetricsServer extends FabricMetrics { protected void appendDefaultData(final JsonObject metrics) { metrics.addProperty("online_mode", compatibilityLayer.serverOnlineMode()); metrics.addProperty("player_count", compatibilityLayer.serverPlayerCount()); - appendFabricData(metrics, "Fabric"); + appendFabricData(metrics, false); } } diff --git a/gradle.properties b/gradle.properties index 4c41c4b8..b76ad973 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,3 +1,3 @@ -version=0.31.0-pre3 +version=0.31.0-pre4 org.gradle.jvmargs=-Xmx4g -XX:MaxMetaspaceSize=512m org.gradle.configuration-cache=true