Skip to content

Commit 33b9f36

Browse files
committed
Require Java 25, initial fabric 26.1 support
1 parent 449176b commit 33b9f36

File tree

13 files changed

+109
-107
lines changed

13 files changed

+109
-107
lines changed

buildSrc/src/main/kotlin/bluemap.java.gradle.kts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ tasks.withType(AbstractArchiveTask::class).configureEach {
1515
}
1616

1717
java {
18-
toolchain.languageVersion = JavaLanguageVersion.of(21)
18+
toolchain.languageVersion = JavaLanguageVersion.of(25)
1919
withSourcesJar()
2020
withJavadocJar()
2121
}

gradle/libs.versions.toml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,14 +29,14 @@ guava = { module = "com.google.guava:guava", version = "33.3.0-jre" }
2929
jetbrains-annotations = { module = "org.jetbrains:annotations", version = "23.0.0" }
3030
junit-core = { module = "org.junit.jupiter:junit-jupiter", version.ref = "junit" }
3131
junit-engine = { module = "org.junit.jupiter:junit-jupiter-engine", version.ref = "junit" }
32-
lombok = { module = "org.projectlombok:lombok", version = "1.18.32" }
32+
lombok = { module = "org.projectlombok:lombok", version = "1.18.42" }
3333
lz4 = { module = "at.yawk.lz4:lz4-java", version = "1.8.1" }
3434

3535
[plugins]
3636
cursegradle = { id = "com.matthewprenger.cursegradle", version = "1.4.0" }
3737
forgegradle = { id = "net.minecraftforge.gradle", version = "[6.0.24,6.2)" }
3838
hangar = { id = "io.papermc.hangar-publish-plugin", version = "0.1.2" }
39-
loom = { id = "fabric-loom", version = "1.13-SNAPSHOT" }
39+
loom = { id = "net.fabricmc.fabric-loom", version = "1.15-SNAPSHOT" }
4040
minotaur = { id = "com.modrinth.minotaur", version = "2.8.7" }
4141
node-gradle = { id = "com.github.node-gradle.node", version = "7.0.2" }
4242
neoforge-gradle = { id = "net.neoforged.moddev", version = "2.0.107" }

gradle/wrapper/gradle-wrapper.jar

181 Bytes
Binary file not shown.

gradle/wrapper/gradle-wrapper.properties

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
distributionBase=GRADLE_USER_HOME
22
distributionPath=wrapper/dists
3-
distributionUrl=https\://services.gradle.org/distributions/gradle-8.14-bin.zip
3+
distributionUrl=https\://services.gradle.org/distributions/gradle-9.4.0-bin.zip
44
networkTimeout=10000
55
validateDistributionUrl=true
66
zipStoreBase=GRADLE_USER_HOME

gradlew

Lines changed: 4 additions & 5 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

gradlew.bat

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

implementations/fabric/build.gradle.kts

Lines changed: 25 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
import com.matthewprenger.cursegradle.CurseRelation
2-
import net.fabricmc.loom.task.RemapJarTask
32

43
plugins {
54
bluemap.implementation
@@ -9,13 +8,13 @@ plugins {
98
}
109

1110
val supportedMinecraftVersions = listOf(
12-
"1.21.11"
11+
"26.1-snapshot-11"
1312
)
1413

1514
val minecraftVersion = supportedMinecraftVersions.first()
16-
val yarnMappings = "${minecraftVersion}+build.1"
17-
val fabricLoaderVersion = "0.18.2"
18-
val fabricApiVersion = "0.139.4+${minecraftVersion}"
15+
val fabricLoaderVersion = "0.18.4"
16+
//val fabricApiVersion = "0.143.11+${minecraftVersion}"
17+
val fabricApiVersion = "0.143.11+26.1"
1918

2019
val shadowInclude: Configuration by configurations.creating
2120
configurations.api.get().extendsFrom(shadowInclude)
@@ -27,10 +26,9 @@ dependencies {
2726
}
2827

2928
minecraft ("com.mojang:minecraft:${minecraftVersion}")
30-
mappings ("net.fabricmc:yarn:${yarnMappings}")
31-
modImplementation ("net.fabricmc:fabric-loader:${fabricLoaderVersion}")
32-
modImplementation ("net.fabricmc.fabric-api:fabric-api:${fabricApiVersion}")
33-
modImplementation ( libs.fabric.permissions )
29+
implementation ("net.fabricmc:fabric-loader:${fabricLoaderVersion}")
30+
implementation ("net.fabricmc.fabric-api:fabric-api:${fabricApiVersion}")
31+
implementation ( libs.fabric.permissions )
3432

3533
shadowInclude ( libs.bluecommands.brigadier ) {
3634
exclude ( group = "com.mojang", module = "brigadier" )
@@ -85,7 +83,8 @@ tasks.withType(ProcessResources::class).configureEach {
8583
val replacements = mapOf(
8684
"version" to project.version,
8785
"fabric_loader_version" to fabricLoaderVersion,
88-
"minecraft_version" to minecraftVersion,
86+
"minecraft_version" to "26.1-alpha.11",
87+
//"minecraft_version" to minecraftVersion,
8988
"java_version" to java.toolchain.languageVersion.get()
9089
)
9190
inputs.properties(replacements)
@@ -94,16 +93,25 @@ tasks.withType(ProcessResources::class).configureEach {
9493
)) { expand(replacements) }
9594
}
9695

97-
val remappedShadowJar = tasks.register("remappedShadowJar", type = RemapJarTask::class) {
98-
dependsOn (tasks.shadowJar)
99-
archiveFileName = "${project.name}-${project.version}-shadow-remapped.jar"
100-
inputFile = tasks.shadowJar.flatMap { it.archiveFile }
101-
addNestedDependencies = true
96+
val mergeShadowAndJarJar = tasks.register<Jar>("mergeShadowAndJarJar") {
97+
dependsOn( tasks.shadowJar, tasks.jar )
98+
from (
99+
zipTree( tasks.shadowJar.map { it.outputs.files.singleFile } ).matching {
100+
exclude("fabric.mod.json")
101+
},
102+
zipTree( tasks.jar.map { it.outputs.files.singleFile } ).matching {
103+
include("META-INF/jars/**")
104+
include("fabric.mod.json")
105+
}
106+
).exclude(
107+
"META-INF/services/net.kyori.adventure*" // not correctly relocated and not needed -> exclude
108+
)
109+
archiveFileName = "${project.name}-${project.version}-merged.jar"
102110
}
103111

104112
tasks.getByName<CopyFileTask>("release") {
105-
dependsOn(remappedShadowJar)
106-
inputFile = remappedShadowJar.flatMap { it.archiveFile }
113+
dependsOn(mergeShadowAndJarJar)
114+
inputFile = mergeShadowAndJarJar.flatMap { it.archiveFile }
107115
}
108116

109117
modrinth {

implementations/fabric/src/main/java/de/bluecolored/bluemap/fabric/FabricCommandSource.java

Lines changed: 14 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -30,25 +30,19 @@
3030
import de.bluecolored.bluemap.common.commands.TextFormat;
3131
import de.bluecolored.bluemap.common.serverinterface.CommandSource;
3232
import de.bluecolored.bluemap.common.serverinterface.ServerWorld;
33-
import me.lucko.fabric.api.permissions.v0.Permissions;
3433
import net.kyori.adventure.text.Component;
3534
import net.kyori.adventure.text.serializer.gson.GsonComponentSerializer;
36-
import net.minecraft.command.DefaultPermissions;
37-
import net.minecraft.command.permission.Permission;
38-
import net.minecraft.command.permission.PermissionLevel;
39-
import net.minecraft.server.command.ServerCommandSource;
40-
import net.minecraft.text.Text;
41-
import net.minecraft.text.TextCodecs;
42-
import net.minecraft.util.math.Vec3d;
35+
import net.minecraft.commands.CommandSourceStack;
36+
import net.minecraft.network.chat.ComponentSerialization;
4337

4438
import java.util.Optional;
4539

4640
public class FabricCommandSource implements CommandSource {
4741

4842
private final FabricMod mod;
49-
private final ServerCommandSource delegate;
43+
private final CommandSourceStack delegate;
5044

51-
public FabricCommandSource(FabricMod mod, ServerCommandSource delegate) {
45+
public FabricCommandSource(FabricMod mod, CommandSourceStack delegate) {
5246
this.mod = mod;
5347
this.delegate = delegate;
5448
}
@@ -59,33 +53,37 @@ public void sendMessage(Component text) {
5953
text = Component.newline().append(text).appendNewline();
6054

6155
JsonElement textJson = GsonComponentSerializer.gson().serializeToTree(text.compact());
62-
Text minecraftText = TextCodecs.CODEC.parse(JsonOps.INSTANCE, textJson).getOrThrow();
63-
delegate.sendMessage(minecraftText);
56+
net.minecraft.network.chat.Component minecraftText = ComponentSerialization.CODEC.parse(JsonOps.INSTANCE, textJson).getOrThrow();
57+
delegate.sendSystemMessage(minecraftText);
6458
}
6559

6660
@Override
6761
public boolean hasPermission(String permission) {
62+
/* TODO: re-enable permission-api support once fabric-permission-api is updated
6863
try {
6964
Class.forName("me.lucko.fabric.api.permissions.v0.Permissions");
7065
return Permissions.check(delegate, permission, PermissionLevel.MODERATORS);
7166
} catch (ClassNotFoundException ex) {
72-
return delegate.getPermissions().hasPermission(DefaultPermissions.MODERATORS);
67+
return delegate.permissions().hasPermission(net.minecraft.server.permissions.Permissions.COMMANDS_MODERATOR);
7368
}
69+
*/
70+
71+
return delegate.permissions().hasPermission(net.minecraft.server.permissions.Permissions.COMMANDS_MODERATOR);
7472
}
7573

7674
@Override
7775
public Optional<Vector3d> getPosition() {
78-
if (!delegate.isExecutedByPlayer() && delegate.getName().equals("Server")) return Optional.empty();
76+
if (!delegate.isPlayer() && delegate.getTextName().equals("Server")) return Optional.empty();
7977

8078
return Optional.ofNullable(delegate.getPosition())
8179
.map(pos -> new Vector3d(pos.x, pos.y, pos.z));
8280
}
8381

8482
@Override
8583
public Optional<ServerWorld> getWorld() {
86-
if (!delegate.isExecutedByPlayer() && delegate.getName().equals("Server")) return Optional.empty();
84+
if (!delegate.isPlayer() && delegate.getTextName().equals("Server")) return Optional.empty();
8785

88-
return Optional.ofNullable(delegate.getWorld())
86+
return Optional.ofNullable(delegate.getLevel())
8987
.map(mod::getServerWorld);
9088
}
9189

implementations/fabric/src/main/java/de/bluecolored/bluemap/fabric/FabricEventForwarder.java

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -27,8 +27,7 @@
2727
import de.bluecolored.bluemap.common.serverinterface.ServerEventListener;
2828
import net.fabricmc.fabric.api.networking.v1.ServerPlayConnectionEvents;
2929
import net.minecraft.server.MinecraftServer;
30-
import net.minecraft.server.network.ServerPlayerEntity;
31-
30+
import net.minecraft.server.level.ServerPlayer;
3231
import java.util.ArrayList;
3332
import java.util.Collection;
3433
import java.util.UUID;
@@ -61,17 +60,17 @@ public synchronized void removeAllListeners() {
6160
this.eventListeners.clear();
6261
}
6362

64-
public synchronized void onPlayerJoin(MinecraftServer server, ServerPlayerEntity player) {
63+
public synchronized void onPlayerJoin(MinecraftServer server, ServerPlayer player) {
6564
if (this.mod.getServer() != server) return;
6665

67-
UUID uuid = player.getUuid();
66+
UUID uuid = player.getUUID();
6867
for (ServerEventListener listener : eventListeners) listener.onPlayerJoin(uuid);
6968
}
7069

71-
public synchronized void onPlayerLeave(MinecraftServer server, ServerPlayerEntity player) {
70+
public synchronized void onPlayerLeave(MinecraftServer server, ServerPlayer player) {
7271
if (this.mod.getServer() != server) return;
7372

74-
UUID uuid = player.getUuid();
73+
UUID uuid = player.getUUID();
7574
for (ServerEventListener listener : eventListeners) listener.onPlayerLeave(uuid);
7675
}
7776

implementations/fabric/src/main/java/de/bluecolored/bluemap/fabric/FabricMod.java

Lines changed: 19 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -41,13 +41,13 @@
4141
import net.fabricmc.fabric.api.event.lifecycle.v1.ServerTickEvents;
4242
import net.fabricmc.fabric.api.networking.v1.ServerPlayConnectionEvents;
4343
import net.minecraft.SharedConstants;
44-
import net.minecraft.registry.RegistryKey;
45-
import net.minecraft.registry.RegistryKeys;
44+
import net.minecraft.commands.CommandSourceStack;
45+
import net.minecraft.core.registries.Registries;
46+
import net.minecraft.resources.Identifier;
47+
import net.minecraft.resources.ResourceKey;
4648
import net.minecraft.server.MinecraftServer;
47-
import net.minecraft.server.command.ServerCommandSource;
48-
import net.minecraft.server.network.ServerPlayerEntity;
49-
import net.minecraft.util.Identifier;
50-
import net.minecraft.world.World;
49+
import net.minecraft.server.level.ServerPlayer;
50+
import net.minecraft.world.level.Level;
5151
import org.apache.logging.log4j.LogManager;
5252

5353
import java.io.IOException;
@@ -62,7 +62,7 @@ public class FabricMod implements ModInitializer, Server {
6262

6363
private final FabricEventForwarder eventForwarder;
6464

65-
private final LoadingCache<net.minecraft.server.world.ServerWorld, ServerWorld> worlds;
65+
private final LoadingCache<net.minecraft.server.level.ServerLevel, ServerWorld> worlds;
6666

6767
private int playerUpdateIndex = 0;
6868
private final Map<UUID, Player> onlinePlayerMap;
@@ -92,7 +92,7 @@ public void onInitialize() {
9292
BrigadierBridge.createCommandNodes(
9393
Commands.create(pluginInstance),
9494
new BrigadierExecutionHandler(pluginInstance),
95-
(ServerCommandSource fabricSource) -> new FabricCommandSource(this, fabricSource)
95+
(CommandSourceStack fabricSource) -> new FabricCommandSource(this, fabricSource)
9696
).forEach(dispatcher.getRoot()::addChild)
9797
);
9898

@@ -139,7 +139,7 @@ public void onInitialize() {
139139

140140
@Override
141141
public String getMinecraftVersion() {
142-
return SharedConstants.getGameVersion().comp_4024();
142+
return SharedConstants.getCurrentVersion().id();
143143
}
144144

145145
@Override
@@ -155,7 +155,7 @@ public void unregisterAllListeners() {
155155
@Override
156156
public Collection<ServerWorld> getLoadedServerWorlds() {
157157
Collection<ServerWorld> loadedWorlds = new ArrayList<>(3);
158-
for (net.minecraft.server.world.ServerWorld serverWorld : serverInstance.getWorlds()) {
158+
for (net.minecraft.server.level.ServerLevel serverWorld : serverInstance.getAllLevels()) {
159159
loadedWorlds.add(worlds.get(serverWorld));
160160
}
161161
return loadedWorlds;
@@ -167,22 +167,22 @@ public Optional<ServerWorld> getServerWorld(Object world) {
167167

168168
if (world instanceof String) {
169169
Identifier identifier = Identifier.tryParse((String) world);
170-
if (identifier != null) world = serverInstance.getWorld(RegistryKey.of(RegistryKeys.WORLD, identifier));
170+
if (identifier != null) world = serverInstance.getLevel(ResourceKey.create(Registries.DIMENSION, identifier));
171171
}
172172

173-
if (world instanceof RegistryKey) {
173+
if (world instanceof ResourceKey) {
174174
try {
175-
world = serverInstance.getWorld((RegistryKey<World>) world);
175+
world = serverInstance.getLevel((ResourceKey<Level>) world);
176176
} catch (ClassCastException ignored) {}
177177
}
178178

179-
if (world instanceof net.minecraft.server.world.ServerWorld)
180-
return Optional.of(getServerWorld((net.minecraft.server.world.ServerWorld) world));
179+
if (world instanceof net.minecraft.server.level.ServerLevel)
180+
return Optional.of(getServerWorld((net.minecraft.server.level.ServerLevel) world));
181181

182182
return Optional.empty();
183183
}
184184

185-
public ServerWorld getServerWorld(net.minecraft.server.world.ServerWorld serverWorld) {
185+
public ServerWorld getServerWorld(net.minecraft.server.level.ServerLevel serverWorld) {
186186
return worlds.get(Objects.requireNonNull(serverWorld));
187187
}
188188

@@ -196,18 +196,18 @@ public Optional<Path> getModsFolder() {
196196
return Optional.of(Path.of("mods"));
197197
}
198198

199-
public void onPlayerJoin(MinecraftServer server, ServerPlayerEntity playerInstance) {
199+
public void onPlayerJoin(MinecraftServer server, ServerPlayer playerInstance) {
200200
if (this.serverInstance != server) return;
201201

202202
FabricPlayer player = new FabricPlayer(playerInstance, this);
203203
onlinePlayerMap.put(player.getUuid(), player);
204204
onlinePlayerList.add(player);
205205
}
206206

207-
public void onPlayerLeave(MinecraftServer server, ServerPlayerEntity player) {
207+
public void onPlayerLeave(MinecraftServer server, ServerPlayer player) {
208208
if (this.serverInstance != server) return;
209209

210-
UUID playerUUID = player.getUuid();
210+
UUID playerUUID = player.getUUID();
211211
onlinePlayerMap.remove(playerUUID);
212212
synchronized (onlinePlayerList) {
213213
onlinePlayerList.removeIf(p -> p.getUuid().equals(playerUUID));

0 commit comments

Comments
 (0)