Skip to content

Commit 3245756

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

14 files changed

Lines changed: 231 additions & 8 deletions

File tree

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
extra.set("moduleName", "dev.faststats.fabric.compat.v1_18")
2+
extra.set("publishVersionSuffix", "mc1.18-1.21.8")
3+
4+
plugins {
5+
id("net.fabricmc.fabric-loom-remap")
6+
}
7+
8+
java.toolchain.languageVersion = JavaLanguageVersion.of(21)
9+
10+
tasks.compileJava {
11+
options.release.set(21)
12+
}
13+
14+
dependencies {
15+
api(project(":fabric"))
16+
api(project(":core"))
17+
implementation(project(":config"))
18+
19+
minecraft("com.mojang:minecraft:1.16.4")
20+
// minecraft("com.mojang:minecraft:1.16.5")
21+
// minecraft("com.mojang:minecraft:1.17")
22+
// minecraft("com.mojang:minecraft:1.17.1")
23+
mappings(loom.officialMojangMappings())
24+
25+
compileOnly("net.fabricmc.fabric-api:fabric-api:0.29.3+1.16") // 1.16.4
26+
// compileOnly("net.fabricmc.fabric-api:fabric-api:0.42.0+1.16") // 1.16.5
27+
// compileOnly("net.fabricmc.fabric-api:fabric-api:0.36.0+1.17") // 1.17
28+
// compileOnly("net.fabricmc.fabric-api:fabric-api:0.46.1+1.17") // 1.17.1
29+
30+
compileOnly("net.fabricmc:fabric-loader:0.19.3")
31+
}
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_18;
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().getGameProfile().getId().version() == 4; // todo: improve this check
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+
}

fabric/versions/1.21.11/src/main/java/module-info.java renamed to fabric/versions/1.17.2/src/main/java/module-info.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
1-
import dev.faststats.fabric.compat.v1_21_11.CompatibilityLayerImpl;
1+
import dev.faststats.fabric.compat.v1_18.CompatibilityLayerImpl;
22
import org.jspecify.annotations.NullMarked;
33

44
@NullMarked
5-
module dev.faststats.fabric.compat.v1_21_11 {
5+
module dev.faststats.fabric.compat.v1_18 {
66
requires dev.faststats.fabric;
77

88
requires static org.jspecify;
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
dev.faststats.fabric.compat.v1_18.CompatibilityLayerImpl
Lines changed: 73 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,73 @@
1+
extra.set("moduleName", "dev.faststats.fabric.compat.v1_18")
2+
extra.set("publishVersionSuffix", "mc1.18-1.21.8")
3+
4+
plugins {
5+
id("net.fabricmc.fabric-loom-remap")
6+
}
7+
8+
java.toolchain.languageVersion = JavaLanguageVersion.of(21)
9+
10+
tasks.compileJava {
11+
options.release.set(21)
12+
}
13+
14+
dependencies {
15+
api(project(":fabric"))
16+
api(project(":core"))
17+
implementation(project(":config"))
18+
19+
// minecraft("com.mojang:minecraft:1.18")
20+
// minecraft("com.mojang:minecraft:1.18.1")
21+
// minecraft("com.mojang:minecraft:1.18.2")
22+
// minecraft("com.mojang:minecraft:1.19")
23+
// minecraft("com.mojang:minecraft:1.19.1")
24+
// minecraft("com.mojang:minecraft:1.19.2")
25+
// minecraft("com.mojang:minecraft:1.19.3")
26+
// minecraft("com.mojang:minecraft:1.19.4")
27+
// minecraft("com.mojang:minecraft:1.20")
28+
// minecraft("com.mojang:minecraft:1.20.1")
29+
// minecraft("com.mojang:minecraft:1.20.2")
30+
// minecraft("com.mojang:minecraft:1.20.3")
31+
// minecraft("com.mojang:minecraft:1.20.4")
32+
// minecraft("com.mojang:minecraft:1.20.5")
33+
// minecraft("com.mojang:minecraft:1.20.6")
34+
// minecraft("com.mojang:minecraft:1.21")
35+
// minecraft("com.mojang:minecraft:1.21.1")
36+
// minecraft("com.mojang:minecraft:1.21.2")
37+
// minecraft("com.mojang:minecraft:1.21.3")
38+
// minecraft("com.mojang:minecraft:1.21.4")
39+
// minecraft("com.mojang:minecraft:1.21.5")
40+
// minecraft("com.mojang:minecraft:1.21.6")
41+
// minecraft("com.mojang:minecraft:1.21.7")
42+
minecraft("com.mojang:minecraft:1.21.8")
43+
mappings(loom.officialMojangMappings())
44+
45+
// compileOnly("net.fabricmc.fabric-api:fabric-api:0.46.1+1.17") // 1.17 // todo new module
46+
47+
// compileOnly("net.fabricmc.fabric-api:fabric-api:0.44.0+1.18") // 1.18
48+
// compileOnly("net.fabricmc.fabric-api:fabric-api:0.46.6+1.18") // 1.18.1
49+
// compileOnly("net.fabricmc.fabric-api:fabric-api:0.77.0+1.18.2") // 1.18.2
50+
// compileOnly("net.fabricmc.fabric-api:fabric-api:0.58.0+1.19") // 1.19
51+
// compileOnly("net.fabricmc.fabric-api:fabric-api:0.58.5+1.19.1") // 1.19.1
52+
// compileOnly("net.fabricmc.fabric-api:fabric-api:0.77.0+1.19.2") // 1.19.2
53+
// compileOnly("net.fabricmc.fabric-api:fabric-api:0.76.1+1.19.3") // 1.19.3
54+
// compileOnly("net.fabricmc.fabric-api:fabric-api:0.87.2+1.19.4") // 1.19.4
55+
// compileOnly("net.fabricmc.fabric-api:fabric-api:0.83.0+1.20") // 1.20
56+
// compileOnly("net.fabricmc.fabric-api:fabric-api:0.92.9+1.20.1") // 1.20.1
57+
// compileOnly("net.fabricmc.fabric-api:fabric-api:0.91.6+1.20.2") // 1.20.2
58+
// compileOnly("net.fabricmc.fabric-api:fabric-api:0.91.1+1.20.3") // 1.20.3
59+
// compileOnly("net.fabricmc.fabric-api:fabric-api:0.97.3+1.20.4") // 1.20.4
60+
// compileOnly("net.fabricmc.fabric-api:fabric-api:0.97.8+1.20.5") // 1.20.5
61+
// compileOnly("net.fabricmc.fabric-api:fabric-api:0.100.8+1.20.6") // 1.20.6
62+
// compileOnly("net.fabricmc.fabric-api:fabric-api:0.102.0+1.21") // 1.21
63+
// compileOnly("net.fabricmc.fabric-api:fabric-api:0.116.13+1.21") // 1.21.1
64+
// compileOnly("net.fabricmc.fabric-api:fabric-api:0.106.1+1.21.2") // 1.21.2
65+
// compileOnly("net.fabricmc.fabric-api:fabric-api:0.114.1+1.21.3") // 1.21.3
66+
// compileOnly("net.fabricmc.fabric-api:fabric-api:0.119.4+1.21.4") // 1.21.4
67+
// compileOnly("net.fabricmc.fabric-api:fabric-api:0.128.2+1.21.5") // 1.21.5
68+
// compileOnly("net.fabricmc.fabric-api:fabric-api:0.128.2+1.21.6") // 1.21.6
69+
// compileOnly("net.fabricmc.fabric-api:fabric-api:0.129.0+1.21.7") // 1.21.7
70+
compileOnly("net.fabricmc.fabric-api:fabric-api:0.136.1+1.21.8") // 1.21.8
71+
72+
compileOnly("net.fabricmc:fabric-loader:0.19.3")
73+
}
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_18;
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();
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_18.CompatibilityLayerImpl;
2+
import org.jspecify.annotations.NullMarked;
3+
4+
@NullMarked
5+
module dev.faststats.fabric.compat.v1_18 {
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_18.CompatibilityLayerImpl

fabric/versions/1.21.11/src/main/resources/META-INF/services/dev.faststats.fabric.compat.CompatibilityLayer

Lines changed: 0 additions & 1 deletion
This file was deleted.

fabric/versions/1.21.11/build.gradle.kts renamed to fabric/versions/1.21.9-1.21.11/build.gradle.kts

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
1-
extra.set("moduleName", "dev.faststats.fabric.compat.v1_21_11")
2-
// todo: validate supported version range
3-
extra.set("publishVersionSuffix", "mc1.21.11")
1+
extra.set("moduleName", "dev.faststats.fabric.compat.v1_21_9")
2+
extra.set("publishVersionSuffix", "mc1.21.9-1.21.11")
43

54
plugins {
65
id("net.fabricmc.fabric-loom-remap")
@@ -17,10 +16,12 @@ dependencies {
1716
api(project(":core"))
1817
implementation(project(":config"))
1918

19+
// minecraft("com.mojang:minecraft:1.21.9")
2020
// minecraft("com.mojang:minecraft:1.21.10")
2121
minecraft("com.mojang:minecraft:1.21.11")
2222
mappings(loom.officialMojangMappings())
2323

24+
// compileOnly("net.fabricmc.fabric-api:fabric-api:0.134.1+1.21.9") // 1.21.9
2425
// compileOnly("net.fabricmc.fabric-api:fabric-api:0.138.4+1.21.10") // 1.21.10
2526
compileOnly("net.fabricmc.fabric-api:fabric-api:0.141.4+1.21.11") // 1.21.11
2627

0 commit comments

Comments
 (0)