Skip to content

Commit 0a3db5d

Browse files
committed
Add more version support
1 parent e86166c commit 0a3db5d

32 files changed

Lines changed: 368 additions & 45 deletions

File tree

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ Use `build` for the reusable FastStats libraries:
1515
./gradlew :config:build
1616
./gradlew :bukkit:build
1717
./gradlew :bungeecord:build
18-
./gradlew :fabric:versions:26.1:build
18+
./gradlew :fabric:versions:26.1-26.3:build
1919
./gradlew :hytale:build
2020
./gradlew :minestom:build
2121
./gradlew :neoforge:versions:26.1:build

build.gradle.kts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -129,11 +129,11 @@ subprojects {
129129
tasks.register("checkPlatformCompat") {
130130
group = "verification"
131131
description = "Compiles all platform compatibility modules."
132-
dependsOn(":fabric:versions:26.1:compileJava", ":neoforge:versions:26.1:compileJava")
132+
dependsOn(":fabric:versions:26.1-26.3:compileJava", ":neoforge:versions:26.1:compileJava")
133133
}
134134

135135
tasks.register("publishPlatformCompat") {
136136
group = "publishing"
137137
description = "Publishes all platform compatibility modules."
138-
dependsOn(":fabric:versions:26.1:publish", ":neoforge:versions:26.1:publish")
138+
dependsOn(":fabric:versions:26.1-26.3:publish", ":neoforge:versions:26.1:publish")
139139
}

fabric/example-mod/build.gradle.kts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
plugins {
2-
id("net.fabricmc.fabric-loom")
2+
id("net.fabricmc.fabric-loom") version "1.15-SNAPSHOT"
33
kotlin("jvm")
44
}
55

@@ -10,7 +10,7 @@ tasks.compileJava {
1010
}
1111

1212
dependencies {
13-
implementation(project(":fabric:versions:26.1"))
13+
implementation(project(":fabric:versions:26.1-26.3"))
1414
minecraft("com.mojang:minecraft:26.1.2")
1515
implementation("net.fabricmc.fabric-api:fabric-api:0.150.0+26.1.2")
1616
compileOnly("net.fabricmc:fabric-loader:0.19.3")
@@ -21,5 +21,5 @@ tasks.jar {
2121
from(project(":config").sourceSets["main"].output)
2222
from(project(":core").sourceSets["main"].output)
2323
from(project(":fabric").sourceSets["main"].output)
24-
from(project(":fabric:versions:26.1").sourceSets["main"].output)
24+
from(project(":fabric:versions:26.1-26.3").sourceSets["main"].output)
2525
}
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
extra.set("moduleName", "dev.faststats.fabric.compat.v1_21_11")
2+
// todo: validate supported version range
3+
extra.set("publishVersionSuffix", "mc1.21.11")
4+
5+
plugins {
6+
id("net.fabricmc.fabric-loom-remap")
7+
}
8+
9+
java.toolchain.languageVersion = JavaLanguageVersion.of(25)
10+
11+
tasks.compileJava {
12+
options.release.set(25)
13+
}
14+
15+
dependencies {
16+
api(project(":fabric"))
17+
api(project(":core"))
18+
implementation(project(":config"))
19+
20+
// minecraft("com.mojang:minecraft:1.21.10")
21+
minecraft("com.mojang:minecraft:1.21.11")
22+
mappings(loom.officialMojangMappings())
23+
24+
// compileOnly("net.fabricmc.fabric-api:fabric-api:0.138.4+1.21.10") // 1.21.10
25+
compileOnly("net.fabricmc.fabric-api:fabric-api:0.141.4+1.21.11") // 1.21.11
26+
27+
compileOnly("net.fabricmc:fabric-loader:0.19.3")
28+
}
Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
package dev.faststats.fabric.compat.v1_21_11;
2+
3+
import dev.faststats.fabric.compat.CompatibilityLayer;
4+
import net.fabricmc.fabric.api.event.lifecycle.v1.ServerLifecycleEvents;
5+
import net.minecraft.client.Minecraft;
6+
import net.minecraft.server.MinecraftServer;
7+
import org.jspecify.annotations.Nullable;
8+
9+
public final class CompatibilityLayerImpl implements CompatibilityLayer {
10+
private @Nullable MinecraftServer server;
11+
12+
@Override
13+
public void initServer() {
14+
ServerLifecycleEvents.SERVER_STARTING.register(server -> this.server = server);
15+
}
16+
17+
@Override
18+
public boolean clientOnlineMode() {
19+
final var client = Minecraft.getInstance();
20+
return client.getUser().getXuid().isPresent() && !client.isOfflineDeveloperMode();
21+
}
22+
23+
@Override
24+
public int clientPlayerCount() {
25+
final var client = Minecraft.getInstance();
26+
final var connection = client.getConnection();
27+
if (connection != null) return connection.getOnlinePlayers().size();
28+
29+
final var server = client.getSingleplayerServer();
30+
if (server != null) return server.getPlayerCount();
31+
32+
return client.player == null ? 0 : 1;
33+
}
34+
35+
@Override
36+
public boolean serverOnlineMode() {
37+
assert server != null : "Server not initialized";
38+
return server.usesAuthentication();
39+
}
40+
41+
@Override
42+
public int serverPlayerCount() {
43+
assert server != null : "Server not initialized";
44+
return server.getPlayerCount();
45+
}
46+
}
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
import dev.faststats.fabric.compat.v1_21_11.CompatibilityLayerImpl;
2+
import org.jspecify.annotations.NullMarked;
3+
4+
@NullMarked
5+
module dev.faststats.fabric.compat.v1_21_11 {
6+
requires dev.faststats.fabric;
7+
8+
requires static org.jspecify;
9+
10+
provides dev.faststats.fabric.compat.CompatibilityLayer with CompatibilityLayerImpl;
11+
}
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
dev.faststats.fabric.compat.v1_21_11.CompatibilityLayerImpl
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
extra.set("moduleName", "dev.faststats.fabric.compat.v26_1")
2+
extra.set("publishVersionSuffix", "mc26.1-26.3")
3+
4+
plugins {
5+
id("net.fabricmc.fabric-loom") version "1.15-SNAPSHOT"
6+
}
7+
8+
java.toolchain.languageVersion = JavaLanguageVersion.of(25)
9+
10+
tasks.compileJava {
11+
options.release.set(25)
12+
}
13+
14+
dependencies {
15+
api(project(":fabric"))
16+
api(project(":core"))
17+
implementation(project(":config"))
18+
19+
// minecraft("com.mojang:minecraft:26.1")
20+
// minecraft("com.mojang:minecraft:26.1.1")
21+
// minecraft("com.mojang:minecraft:26.1.2")
22+
// minecraft("com.mojang:minecraft:26.2")
23+
minecraft("com.mojang:minecraft:26.3-snapshot-1")
24+
25+
// compileOnly("net.fabricmc.fabric-api:fabric-api:0.153.0+26.1.2") // 26.1-26.1.2
26+
// compileOnly("net.fabricmc.fabric-api:fabric-api:0.153.0+26.2") // 26.2
27+
compileOnly("net.fabricmc.fabric-api:fabric-api:0.153.1+26.3") // 26.3
28+
29+
compileOnly("net.fabricmc:fabric-loader:0.19.3")
30+
}

fabric/versions/26.1/src/main/java/dev/faststats/fabric/compat/v26_1/CompatibilityLayer_v26_1.java renamed to fabric/versions/26.1-26.3/src/main/java/dev/faststats/fabric/compat/v26_1/CompatibilityLayerImpl.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
import net.minecraft.server.MinecraftServer;
77
import org.jspecify.annotations.Nullable;
88

9-
public final class CompatibilityLayer_v26_1 implements CompatibilityLayer {
9+
public final class CompatibilityLayerImpl implements CompatibilityLayer {
1010
private @Nullable MinecraftServer server;
1111

1212
@Override

fabric/versions/26.1/src/main/java/module-info.java renamed to fabric/versions/26.1-26.3/src/main/java/module-info.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
import dev.faststats.fabric.compat.v26_1.CompatibilityLayerImpl;
12
import org.jspecify.annotations.NullMarked;
23

34
@NullMarked
@@ -6,5 +7,5 @@
67

78
requires static org.jspecify;
89

9-
provides dev.faststats.fabric.compat.CompatibilityLayer with dev.faststats.fabric.compat.v26_1.CompatibilityLayer_v26_1;
10+
provides dev.faststats.fabric.compat.CompatibilityLayer with CompatibilityLayerImpl;
1011
}

0 commit comments

Comments
 (0)