From fa9dcf5a64c590fdecf00857810d98210a24a132 Mon Sep 17 00:00:00 2001 From: Mona Date: Wed, 11 Mar 2026 18:59:39 +0100 Subject: [PATCH 1/2] feat: port to 26.1 --- build.gradle | 11 +++--- gradle.properties | 7 ++-- gradle/wrapper/gradle-wrapper.properties | 2 +- .../hypixel/modapi/fabric/FabricModAPI.java | 34 +++++++++++-------- .../payload/ClientboundHypixelPayload.java | 25 +++++++------- .../payload/ServerboundHypixelPayload.java | 26 +++++++------- src/main/resources/fabric.mod.json | 2 +- 7 files changed, 56 insertions(+), 51 deletions(-) diff --git a/build.gradle b/build.gradle index 532ca2d..55c6ebc 100644 --- a/build.gradle +++ b/build.gradle @@ -1,5 +1,5 @@ plugins { - id 'fabric-loom' version '1.10-SNAPSHOT' + id 'net.fabricmc.fabric-loom' version '1.15-SNAPSHOT' id 'maven-publish' } @@ -25,11 +25,10 @@ repositories { dependencies { // To change the versions see the gradle.properties file minecraft "com.mojang:minecraft:${project.minecraft_version}" - mappings "net.fabricmc:yarn:${project.yarn_mappings}:v2" - modImplementation "net.fabricmc:fabric-loader:${project.loader_version}" - modImplementation "net.fabricmc.fabric-api:fabric-api:${project.fabric_version}" + implementation "net.fabricmc:fabric-loader:${project.loader_version}" + implementation "net.fabricmc.fabric-api:fabric-api:${project.fabric_version}" - include modImplementation("net.hypixel:mod-api:${project.mod_api_version}") + include implementation("net.hypixel:mod-api:${project.mod_api_version}") } processResources { @@ -45,7 +44,7 @@ processResources { } } -def targetJavaVersion = 17 +def targetJavaVersion = 25 tasks.withType(JavaCompile).configureEach { // ensure that the encoding is set to UTF-8, no matter what the system default is // this fixes some edge cases with special characters not displaying correctly diff --git a/gradle.properties b/gradle.properties index 94ec110..2b3959f 100644 --- a/gradle.properties +++ b/gradle.properties @@ -3,9 +3,8 @@ org.gradle.jvmargs=-Xmx1G # Fabric Properties # check these on https://modmuss50.me/fabric.html - minecraft_version=1.21 - yarn_mappings=1.21+build.9 - loader_version=0.16.10 + minecraft_version=26.1-pre-1 + loader_version=0.18.4 # Mod Properties mod_version = 1.0.1+build.dev @@ -15,4 +14,4 @@ org.gradle.jvmargs=-Xmx1G # Dependencies # check this on https://modmuss50.me/fabric.html - fabric_version=0.102.0+1.21 + fabric_version=0.143.12+26.1 diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index cea7a79..bad7c24 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-8.12-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-9.2.0-bin.zip networkTimeout=10000 validateDistributionUrl=true zipStoreBase=GRADLE_USER_HOME diff --git a/src/main/java/net/hypixel/modapi/fabric/FabricModAPI.java b/src/main/java/net/hypixel/modapi/fabric/FabricModAPI.java index 92e6877..f299022 100644 --- a/src/main/java/net/hypixel/modapi/fabric/FabricModAPI.java +++ b/src/main/java/net/hypixel/modapi/fabric/FabricModAPI.java @@ -1,10 +1,12 @@ package net.hypixel.modapi.fabric; import com.mojang.logging.LogUtils; +import io.netty.buffer.ByteBuf; import net.fabricmc.api.ClientModInitializer; import net.fabricmc.fabric.api.client.networking.v1.ClientConfigurationNetworking; import net.fabricmc.fabric.api.client.networking.v1.ClientPlayConnectionEvents; import net.fabricmc.fabric.api.client.networking.v1.ClientPlayNetworking; +import net.fabricmc.fabric.api.gametest.v1.GameTest; import net.fabricmc.fabric.api.networking.v1.PayloadTypeRegistry; import net.fabricmc.loader.api.FabricLoader; import net.hypixel.modapi.HypixelModAPI; @@ -16,12 +18,10 @@ import net.hypixel.modapi.packet.HypixelPacket; import net.hypixel.modapi.packet.impl.clientbound.ClientboundHelloPacket; import net.hypixel.modapi.packet.impl.clientbound.event.ClientboundLocationPacket; -import net.minecraft.client.MinecraftClient; -import net.minecraft.network.PacketByteBuf; -import net.minecraft.network.codec.PacketCodec; -import net.minecraft.network.packet.CustomPayload; -import net.minecraft.test.GameTest; -import net.minecraft.util.Identifier; +import net.minecraft.client.Minecraft; +import net.minecraft.network.codec.StreamCodec; +import net.minecraft.network.protocol.common.custom.CustomPacketPayload; +import net.minecraft.resources.Identifier; import org.jetbrains.annotations.ApiStatus; import org.slf4j.Logger; @@ -58,7 +58,7 @@ public boolean sendPacket(HypixelPacket packet) { ServerboundHypixelPayload hypixelPayload = new ServerboundHypixelPayload(packet); - if (MinecraftClient.getInstance().getNetworkHandler() != null) { + if (Minecraft.getInstance().getConnection() != null) { ClientPlayNetworking.send(hypixelPayload); return true; } @@ -105,10 +105,12 @@ public static void reloadRegistrations() { private static void registerClientbound(String identifier) { try { - CustomPayload.Id clientboundId = new CustomPayload.Id<>(Identifier.of(identifier)); - PacketCodec codec = ClientboundHypixelPayload.buildCodec(clientboundId); - PayloadTypeRegistry.playS2C().register(clientboundId, codec); - PayloadTypeRegistry.configurationS2C().register(clientboundId, codec); + CustomPacketPayload.Type clientboundId = new CustomPacketPayload.Type<>( + Identifier.parse(identifier) + ); + StreamCodec codec = ClientboundHypixelPayload.buildCodec(clientboundId); + PayloadTypeRegistry.clientboundPlay().register(clientboundId, codec); + PayloadTypeRegistry.clientboundConfiguration().register(clientboundId, codec); // Also register the global receiver for handling incoming packets during PLAY and CONFIGURATION ClientPlayNetworking.registerGlobalReceiver(clientboundId, (payload, context) -> { @@ -157,10 +159,12 @@ private static void handleIncomingPayload(String identifier, ClientboundHypixelP private static void registerServerbound(String identifier) { try { - CustomPayload.Id serverboundId = new CustomPayload.Id<>(Identifier.of(identifier)); - PacketCodec codec = ServerboundHypixelPayload.buildCodec(serverboundId); - PayloadTypeRegistry.playC2S().register(serverboundId, codec); - PayloadTypeRegistry.configurationC2S().register(serverboundId, codec); + CustomPacketPayload.Type serverboundId = new CustomPacketPayload.Type<>( + Identifier.parse(identifier) + ); + StreamCodec codec = ServerboundHypixelPayload.buildCodec(); + PayloadTypeRegistry.serverboundPlay().register(serverboundId, codec); + PayloadTypeRegistry.serverboundConfiguration().register(serverboundId, codec); } catch (IllegalArgumentException ignored) { // Ignored as this is fired when we reload the registrations and the packet is already registered } diff --git a/src/main/java/net/hypixel/modapi/fabric/payload/ClientboundHypixelPayload.java b/src/main/java/net/hypixel/modapi/fabric/payload/ClientboundHypixelPayload.java index 7b1c735..155e5f3 100644 --- a/src/main/java/net/hypixel/modapi/fabric/payload/ClientboundHypixelPayload.java +++ b/src/main/java/net/hypixel/modapi/fabric/payload/ClientboundHypixelPayload.java @@ -1,21 +1,22 @@ package net.hypixel.modapi.fabric.payload; +import io.netty.buffer.ByteBuf; import net.hypixel.modapi.HypixelModAPI; import net.hypixel.modapi.error.ErrorReason; import net.hypixel.modapi.packet.ClientboundHypixelPacket; import net.hypixel.modapi.serializer.PacketSerializer; -import net.minecraft.network.PacketByteBuf; -import net.minecraft.network.codec.PacketCodec; -import net.minecraft.network.packet.CustomPayload; +import net.minecraft.network.codec.StreamCodec; +import net.minecraft.network.protocol.common.custom.CustomPacketPayload; +import org.jspecify.annotations.NonNull; -public class ClientboundHypixelPayload implements CustomPayload { - private final Id id; +public class ClientboundHypixelPayload implements CustomPacketPayload { + private final Type type; private ClientboundHypixelPacket packet; private ErrorReason errorReason; - private ClientboundHypixelPayload(Id id, PacketByteBuf buf) { - this.id = id; + private ClientboundHypixelPayload(Type type, ByteBuf buf) { + this.type = type; PacketSerializer serializer = new PacketSerializer(buf); boolean success = serializer.readBoolean(); @@ -24,12 +25,12 @@ private ClientboundHypixelPayload(Id id, PacketByteBu return; } - this.packet = HypixelModAPI.getInstance().getRegistry().createClientboundPacket(id.id().toString(), serializer); + this.packet = HypixelModAPI.getInstance().getRegistry().createClientboundPacket(type.id().toString(), serializer); } @Override - public Id getId() { - return id; + public @NonNull Type type() { + return type; } public boolean isSuccess() { @@ -44,8 +45,8 @@ public ErrorReason getErrorReason() { return errorReason; } - public static PacketCodec buildCodec(Id id) { - return CustomPayload.codecOf((value, buf) -> { + public static StreamCodec buildCodec(Type id) { + return CustomPacketPayload.codec((value, buf) -> { throw new UnsupportedOperationException("Cannot write ClientboundHypixelPayload"); }, buf -> new ClientboundHypixelPayload(id, buf)); } diff --git a/src/main/java/net/hypixel/modapi/fabric/payload/ServerboundHypixelPayload.java b/src/main/java/net/hypixel/modapi/fabric/payload/ServerboundHypixelPayload.java index 536b5f4..f4af8b6 100644 --- a/src/main/java/net/hypixel/modapi/fabric/payload/ServerboundHypixelPayload.java +++ b/src/main/java/net/hypixel/modapi/fabric/payload/ServerboundHypixelPayload.java @@ -1,33 +1,35 @@ package net.hypixel.modapi.fabric.payload; +import io.netty.buffer.ByteBuf; import net.hypixel.modapi.packet.HypixelPacket; import net.hypixel.modapi.serializer.PacketSerializer; -import net.minecraft.network.PacketByteBuf; -import net.minecraft.network.codec.PacketCodec; -import net.minecraft.network.packet.CustomPayload; -import net.minecraft.util.Identifier; +import net.minecraft.network.codec.StreamCodec; +import net.minecraft.network.protocol.common.custom.CustomPacketPayload; +import net.minecraft.resources.Identifier; +import org.jspecify.annotations.NonNull; -public class ServerboundHypixelPayload implements CustomPayload { - private final Id id; +public class ServerboundHypixelPayload implements CustomPacketPayload { + private final Type type; private final HypixelPacket packet; public ServerboundHypixelPayload(HypixelPacket packet) { - this.id = new CustomPayload.Id<>(Identifier.of(packet.getIdentifier())); + this.type = new CustomPacketPayload.Type<>(Identifier.parse(packet.getIdentifier())); this.packet = packet; } - private void write(PacketByteBuf buf) { + private void write(ByteBuf buf) { PacketSerializer serializer = new PacketSerializer(buf); packet.write(serializer); } + @Override - public Id getId() { - return id; + public @NonNull Type type() { + return type; } - public static PacketCodec buildCodec(Id id) { - return CustomPayload.codecOf(ServerboundHypixelPayload::write, buf -> { + public static StreamCodec buildCodec() { + return CustomPacketPayload.codec(ServerboundHypixelPayload::write, _ -> { throw new UnsupportedOperationException("Cannot read ServerboundHypixelPayload"); }); } diff --git a/src/main/resources/fabric.mod.json b/src/main/resources/fabric.mod.json index 3931a3c..18f7d0a 100644 --- a/src/main/resources/fabric.mod.json +++ b/src/main/resources/fabric.mod.json @@ -18,7 +18,7 @@ }, "depends": { "fabricloader": ">=${loader_version}", - "fabric": "*", + "fabric-api": "*", "minecraft": ">=${minecraft_version}" } } From 1a2fa64b939cb68711fe3d74af18425ac12193a9 Mon Sep 17 00:00:00 2001 From: Mona Date: Fri, 20 Mar 2026 11:24:25 +0100 Subject: [PATCH 2/2] chore: bump to 26.1-rc1 --- gradle.properties | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gradle.properties b/gradle.properties index 2b3959f..8b1bbd1 100644 --- a/gradle.properties +++ b/gradle.properties @@ -3,7 +3,7 @@ org.gradle.jvmargs=-Xmx1G # Fabric Properties # check these on https://modmuss50.me/fabric.html - minecraft_version=26.1-pre-1 + minecraft_version=26.1-rc-1 loader_version=0.18.4 # Mod Properties @@ -14,4 +14,4 @@ org.gradle.jvmargs=-Xmx1G # Dependencies # check this on https://modmuss50.me/fabric.html - fabric_version=0.143.12+26.1 + fabric_version=0.143.14+26.1