From baac7f317b409d380590bbc48fdd6555c78e65e7 Mon Sep 17 00:00:00 2001 From: alex <8379108+Alex33856@users.noreply.github.com> Date: Fri, 23 Jan 2026 14:09:20 -0500 Subject: [PATCH 01/11] Update Gradle and Fabric Loom --- build.gradle | 4 ++-- gradle.properties | 4 ++-- gradle/wrapper/gradle-wrapper.properties | 2 +- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/build.gradle b/build.gradle index a583dc4..f76e5c1 100644 --- a/build.gradle +++ b/build.gradle @@ -1,5 +1,5 @@ plugins { - id 'fabric-loom' version '1.8-SNAPSHOT' + id 'net.fabricmc.fabric-loom-remap' version '1.15-SNAPSHOT' id 'maven-publish' } @@ -90,4 +90,4 @@ publishing { } } } -} \ No newline at end of file +} diff --git a/gradle.properties b/gradle.properties index bff1a39..ab0d79a 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,4 +1,4 @@ -# Done to increase the memory available to gradle. +# Done to increase the memory available to Gradle. org.gradle.jvmargs=-Xmx1G org.gradle.parallel=true @@ -14,4 +14,4 @@ maven_group=net.azureaaron.hmapi archives_base_name=hm-api # Dependencies -fabric_api_version=0.106.0+1.21.2 \ No newline at end of file +fabric_api_version=0.106.0+1.21.2 diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index df97d72..23449a2 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.10.2-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-9.2.1-bin.zip networkTimeout=10000 validateDistributionUrl=true zipStoreBase=GRADLE_USER_HOME From 35cfea92647974afca0eb01ff50494240d829bc6 Mon Sep 17 00:00:00 2001 From: alex <8379108+Alex33856@users.noreply.github.com> Date: Fri, 23 Jan 2026 14:16:12 -0500 Subject: [PATCH 02/11] Migrate Main Sources to Mojang Mappings --- src/main/java/net/azureaaron/hmapi/HMApi.java | 16 +++++------ .../hmapi/data/error/ModApiErrorReason.java | 6 ++-- .../hmapi/data/rank/MonthlyPackageRank.java | 6 ++-- .../hmapi/data/rank/PackageRank.java | 6 ++-- .../hmapi/data/rank/PlayerRank.java | 6 ++-- .../ClientCommonNetworkHandlerMixin.java | 10 +++---- .../mixins/CustomPayloadC2SPacketMixin.java | 18 ++++++------ .../mixins/CustomPayloadS2CPacketMixin.java | 28 +++++++++---------- .../hmapi/network/HijackedCustomPayload.java | 11 ++++---- .../network/HypixelCustomPayloadCodecs.java | 20 ++++++------- .../hmapi/network/HypixelNetworking.java | 20 ++++++------- .../hmapi/network/HypixelNetworkingImpl.java | 22 +++++++-------- .../hmapi/network/WrappedPacketCodec.java | 20 ++++++------- .../hmapi/network/packet/HypixelPacket.java | 25 ++++++++--------- .../packet/c2s/PartyInfoC2SPacket.java | 16 +++++------ .../packet/c2s/PlayerInfoC2SPacket.java | 16 +++++------ .../network/packet/c2s/RegisterC2SPacket.java | 20 ++++++------- .../network/packet/s2c/ErrorS2CPacket.java | 14 +++++----- .../network/packet/s2c/HelloS2CPacket.java | 16 +++++------ .../network/packet/s2c/HypixelS2CPacket.java | 8 +++--- .../v1/s2c/LocationUpdateS2CPacket.java | 24 ++++++++-------- .../packet/v1/s2c/PlayerInfoS2CPacket.java | 22 +++++++-------- .../packet/v2/s2c/PartyInfoS2CPacket.java | 20 ++++++------- .../hmapi/utils/PacketCodecUtils.java | 24 ++++++++-------- .../net/azureaaron/hmapi/utils/Utils.java | 9 +++--- 25 files changed, 196 insertions(+), 207 deletions(-) diff --git a/src/main/java/net/azureaaron/hmapi/HMApi.java b/src/main/java/net/azureaaron/hmapi/HMApi.java index 53eb9c8..82aebf5 100644 --- a/src/main/java/net/azureaaron/hmapi/HMApi.java +++ b/src/main/java/net/azureaaron/hmapi/HMApi.java @@ -16,11 +16,11 @@ import net.fabricmc.fabric.api.client.command.v2.ClientCommandRegistrationCallback; import net.fabricmc.fabric.api.client.command.v2.FabricClientCommandSource; import net.fabricmc.loader.api.FabricLoader; -import net.minecraft.client.MinecraftClient; -import net.minecraft.client.network.ClientPlayerEntity; -import net.minecraft.command.CommandRegistryAccess; -import net.minecraft.text.Text; -import net.minecraft.util.Util; +import net.minecraft.Util; +import net.minecraft.client.Minecraft; +import net.minecraft.client.player.LocalPlayer; +import net.minecraft.commands.CommandBuildContext; +import net.minecraft.network.chat.Component; public class HMApi implements ClientModInitializer { private static final Logger LOGGER = LogUtils.getLogger(); @@ -45,7 +45,7 @@ public void onInitializeClient() { } } - private static void registerCommands(CommandDispatcher dispatcher, CommandRegistryAccess registryAccess) { + private static void registerCommands(CommandDispatcher dispatcher, CommandBuildContext registryAccess) { dispatcher.register(ClientCommandManager.literal("hmapi") .then(ClientCommandManager.literal("sendPacket") .then(ClientCommandManager.literal("partyInfo2") @@ -78,12 +78,12 @@ private static void registerCommands(CommandDispatcher BY_ID = ValueLists.createIdToValueFunction(ModApiErrorReason::id, ModApiErrorReason.values(), (ModApiErrorReason) null); + private static final IntFunction BY_ID = ByIdMap.sparse(ModApiErrorReason::id, ModApiErrorReason.values(), (ModApiErrorReason) null); private final int id; diff --git a/src/main/java/net/azureaaron/hmapi/data/rank/MonthlyPackageRank.java b/src/main/java/net/azureaaron/hmapi/data/rank/MonthlyPackageRank.java index 6fca92d..89f47f5 100644 --- a/src/main/java/net/azureaaron/hmapi/data/rank/MonthlyPackageRank.java +++ b/src/main/java/net/azureaaron/hmapi/data/rank/MonthlyPackageRank.java @@ -1,11 +1,9 @@ package net.azureaaron.hmapi.data.rank; import java.util.function.IntFunction; - +import net.minecraft.util.ByIdMap; import org.jetbrains.annotations.ApiStatus; -import net.minecraft.util.function.ValueLists; - /** * Represents a monthly subscription rank, only relevant for MVP++ right now. */ @@ -17,7 +15,7 @@ public enum MonthlyPackageRank implements RankType { SUPERSTAR(2); @ApiStatus.Internal - public static final IntFunction BY_ID = ValueLists.createIdToValueFunction(MonthlyPackageRank::id, MonthlyPackageRank.values(), MonthlyPackageRank.NONE); + public static final IntFunction BY_ID = ByIdMap.sparse(MonthlyPackageRank::id, MonthlyPackageRank.values(), MonthlyPackageRank.NONE); private final int id; diff --git a/src/main/java/net/azureaaron/hmapi/data/rank/PackageRank.java b/src/main/java/net/azureaaron/hmapi/data/rank/PackageRank.java index 3e73fda..31c6d40 100644 --- a/src/main/java/net/azureaaron/hmapi/data/rank/PackageRank.java +++ b/src/main/java/net/azureaaron/hmapi/data/rank/PackageRank.java @@ -1,11 +1,9 @@ package net.azureaaron.hmapi.data.rank; import java.util.function.IntFunction; - +import net.minecraft.util.ByIdMap; import org.jetbrains.annotations.ApiStatus; -import net.minecraft.util.function.ValueLists; - /** * Represents a paid rank. */ @@ -17,7 +15,7 @@ public enum PackageRank implements RankType { MVP_PLUS(5); @ApiStatus.Internal - public static final IntFunction BY_ID = ValueLists.createIdToValueFunction(PackageRank::id, PackageRank.values(), PackageRank.NONE); + public static final IntFunction BY_ID = ByIdMap.sparse(PackageRank::id, PackageRank.values(), PackageRank.NONE); private final int id; diff --git a/src/main/java/net/azureaaron/hmapi/data/rank/PlayerRank.java b/src/main/java/net/azureaaron/hmapi/data/rank/PlayerRank.java index 24f0cbf..b0a230c 100644 --- a/src/main/java/net/azureaaron/hmapi/data/rank/PlayerRank.java +++ b/src/main/java/net/azureaaron/hmapi/data/rank/PlayerRank.java @@ -1,11 +1,9 @@ package net.azureaaron.hmapi.data.rank; import java.util.function.IntFunction; - +import net.minecraft.util.ByIdMap; import org.jetbrains.annotations.ApiStatus; -import net.minecraft.util.function.ValueLists; - /** * Represents a base rank type. */ @@ -16,7 +14,7 @@ public enum PlayerRank implements RankType { ADMIN(4); @ApiStatus.Internal - public static final IntFunction BY_ID = ValueLists.createIdToValueFunction(PlayerRank::id, PlayerRank.values(), PlayerRank.NORMAL); + public static final IntFunction BY_ID = ByIdMap.sparse(PlayerRank::id, PlayerRank.values(), PlayerRank.NORMAL); private final int id; diff --git a/src/main/java/net/azureaaron/hmapi/mixins/ClientCommonNetworkHandlerMixin.java b/src/main/java/net/azureaaron/hmapi/mixins/ClientCommonNetworkHandlerMixin.java index a713bbe..11841af 100644 --- a/src/main/java/net/azureaaron/hmapi/mixins/ClientCommonNetworkHandlerMixin.java +++ b/src/main/java/net/azureaaron/hmapi/mixins/ClientCommonNetworkHandlerMixin.java @@ -7,14 +7,14 @@ import net.azureaaron.hmapi.network.HypixelNetworkingImpl; import net.azureaaron.hmapi.network.packet.s2c.HypixelS2CPacket; -import net.minecraft.client.network.ClientCommonNetworkHandler; -import net.minecraft.network.packet.s2c.common.CustomPayloadS2CPacket; +import net.minecraft.client.multiplayer.ClientCommonPacketListenerImpl; +import net.minecraft.network.protocol.common.ClientboundCustomPayloadPacket; -@Mixin(value = ClientCommonNetworkHandler.class, priority = 888) +@Mixin(value = ClientCommonPacketListenerImpl.class, priority = 888) public class ClientCommonNetworkHandlerMixin { - @Inject(method = "onCustomPayload(Lnet/minecraft/network/packet/s2c/common/CustomPayloadS2CPacket;)V", at = @At("HEAD"), cancellable = true) - private void onCustomPayloadReceived(CustomPayloadS2CPacket customPayload, CallbackInfo ci) { + @Inject(method = "handleCustomPayload(Lnet/minecraft/network/protocol/common/ClientboundCustomPayloadPacket;)V", at = @At("HEAD"), cancellable = true) + private void onCustomPayloadReceived(ClientboundCustomPayloadPacket customPayload, CallbackInfo ci) { if (customPayload.payload() instanceof HypixelS2CPacket packet) { HypixelNetworkingImpl.handlePayload(packet); ci.cancel(); diff --git a/src/main/java/net/azureaaron/hmapi/mixins/CustomPayloadC2SPacketMixin.java b/src/main/java/net/azureaaron/hmapi/mixins/CustomPayloadC2SPacketMixin.java index cde41f9..ca265fb 100644 --- a/src/main/java/net/azureaaron/hmapi/mixins/CustomPayloadC2SPacketMixin.java +++ b/src/main/java/net/azureaaron/hmapi/mixins/CustomPayloadC2SPacketMixin.java @@ -6,17 +6,17 @@ import com.llamalad7.mixinextras.injector.ModifyExpressionValue; import net.azureaaron.hmapi.network.WrappedPacketCodec; -import net.minecraft.network.NetworkSide; -import net.minecraft.network.PacketByteBuf; -import net.minecraft.network.codec.PacketCodec; -import net.minecraft.network.packet.CustomPayload; -import net.minecraft.network.packet.c2s.common.CustomPayloadC2SPacket; +import net.minecraft.network.FriendlyByteBuf; +import net.minecraft.network.codec.StreamCodec; +import net.minecraft.network.protocol.PacketFlow; +import net.minecraft.network.protocol.common.ServerboundCustomPayloadPacket; +import net.minecraft.network.protocol.common.custom.CustomPacketPayload; -@Mixin(value = CustomPayloadC2SPacket.class, priority = 1888) +@Mixin(value = ServerboundCustomPayloadPacket.class, priority = 1888) public class CustomPayloadC2SPacketMixin { - @ModifyExpressionValue(method = "", at = @At(value = "INVOKE", target = "Lnet/minecraft/network/packet/CustomPayload;createCodec(Lnet/minecraft/network/packet/CustomPayload$CodecFactory;Ljava/util/List;)Lnet/minecraft/network/codec/PacketCodec;")) - private static PacketCodec wrapC2SPacketCodec(PacketCodec original) { - return new WrappedPacketCodec(original, NetworkSide.SERVERBOUND); + @ModifyExpressionValue(method = "", at = @At(value = "INVOKE", target = "Lnet/minecraft/network/protocol/common/custom/CustomPacketPayload;codec(Lnet/minecraft/network/protocol/common/custom/CustomPacketPayload$FallbackProvider;Ljava/util/List;)Lnet/minecraft/network/codec/StreamCodec;")) + private static StreamCodec wrapC2SPacketCodec(StreamCodec original) { + return new WrappedPacketCodec(original, PacketFlow.SERVERBOUND); } } diff --git a/src/main/java/net/azureaaron/hmapi/mixins/CustomPayloadS2CPacketMixin.java b/src/main/java/net/azureaaron/hmapi/mixins/CustomPayloadS2CPacketMixin.java index df3b666..c775008 100644 --- a/src/main/java/net/azureaaron/hmapi/mixins/CustomPayloadS2CPacketMixin.java +++ b/src/main/java/net/azureaaron/hmapi/mixins/CustomPayloadS2CPacketMixin.java @@ -10,28 +10,28 @@ import net.azureaaron.hmapi.network.HijackedCustomPayload; import net.azureaaron.hmapi.network.WrappedPacketCodec; -import net.minecraft.network.NetworkSide; -import net.minecraft.network.PacketByteBuf; -import net.minecraft.network.codec.PacketCodec; -import net.minecraft.network.listener.ClientCommonPacketListener; -import net.minecraft.network.packet.CustomPayload; -import net.minecraft.network.packet.s2c.common.CustomPayloadS2CPacket; +import net.minecraft.network.FriendlyByteBuf; +import net.minecraft.network.codec.StreamCodec; +import net.minecraft.network.protocol.PacketFlow; +import net.minecraft.network.protocol.common.ClientCommonPacketListener; +import net.minecraft.network.protocol.common.ClientboundCustomPayloadPacket; +import net.minecraft.network.protocol.common.custom.CustomPacketPayload; -@Mixin(value = CustomPayloadS2CPacket.class, priority = 1888) +@Mixin(value = ClientboundCustomPayloadPacket.class, priority = 1888) public abstract class CustomPayloadS2CPacketMixin { @Shadow - public abstract CustomPayload payload(); + public abstract CustomPacketPayload payload(); - @ModifyExpressionValue(method = "", at = @At(value = "INVOKE", target = "Lnet/minecraft/network/packet/CustomPayload;createCodec(Lnet/minecraft/network/packet/CustomPayload$CodecFactory;Ljava/util/List;)Lnet/minecraft/network/codec/PacketCodec;")) - private static PacketCodec wrapS2CPacketCodec(PacketCodec original) { - return new WrappedPacketCodec(original, NetworkSide.CLIENTBOUND); + @ModifyExpressionValue(method = "", at = @At(value = "INVOKE", target = "Lnet/minecraft/network/protocol/common/custom/CustomPacketPayload;codec(Lnet/minecraft/network/protocol/common/custom/CustomPacketPayload$FallbackProvider;Ljava/util/List;)Lnet/minecraft/network/codec/StreamCodec;")) + private static StreamCodec wrapS2CPacketCodec(StreamCodec original) { + return new WrappedPacketCodec(original, PacketFlow.CLIENTBOUND); } - @Inject(method = "apply", at = @At("HEAD"), cancellable = true) + @Inject(method = "handle", at = @At("HEAD"), cancellable = true) private void onApplication(ClientCommonPacketListener clientCommonPacketListener, CallbackInfo ci) { if (payload() instanceof HijackedCustomPayload hijacked) { - new CustomPayloadS2CPacket(hijacked.original()).apply(clientCommonPacketListener); - new CustomPayloadS2CPacket(hijacked.hijacked()).apply(clientCommonPacketListener); + new ClientboundCustomPayloadPacket(hijacked.original()).handle(clientCommonPacketListener); + new ClientboundCustomPayloadPacket(hijacked.hijacked()).handle(clientCommonPacketListener); ci.cancel(); } diff --git a/src/main/java/net/azureaaron/hmapi/network/HijackedCustomPayload.java b/src/main/java/net/azureaaron/hmapi/network/HijackedCustomPayload.java index db1f1e7..2946b23 100644 --- a/src/main/java/net/azureaaron/hmapi/network/HijackedCustomPayload.java +++ b/src/main/java/net/azureaaron/hmapi/network/HijackedCustomPayload.java @@ -1,16 +1,15 @@ package net.azureaaron.hmapi.network; +import net.minecraft.network.protocol.common.custom.CustomPacketPayload; +import net.minecraft.resources.ResourceLocation; import org.jetbrains.annotations.ApiStatus; -import net.minecraft.network.packet.CustomPayload; -import net.minecraft.util.Identifier; - @ApiStatus.Internal -public record HijackedCustomPayload(CustomPayload original, CustomPayload hijacked) implements CustomPayload { - private static final CustomPayload.Id ID = new CustomPayload.Id(Identifier.of("hmapi", "hijacked")); +public record HijackedCustomPayload(CustomPacketPayload original, CustomPacketPayload hijacked) implements CustomPacketPayload { + private static final CustomPacketPayload.Type ID = new CustomPacketPayload.Type(ResourceLocation.fromNamespaceAndPath("hmapi", "hijacked")); @Override - public Id getId() { + public Type type() { return ID; } } diff --git a/src/main/java/net/azureaaron/hmapi/network/HypixelCustomPayloadCodecs.java b/src/main/java/net/azureaaron/hmapi/network/HypixelCustomPayloadCodecs.java index b1b0df7..ee724e3 100644 --- a/src/main/java/net/azureaaron/hmapi/network/HypixelCustomPayloadCodecs.java +++ b/src/main/java/net/azureaaron/hmapi/network/HypixelCustomPayloadCodecs.java @@ -15,22 +15,22 @@ import net.azureaaron.hmapi.network.packet.v1.s2c.PlayerInfoS2CPacket; import net.azureaaron.hmapi.network.packet.v2.s2c.PartyInfoS2CPacket; import net.azureaaron.hmapi.utils.PacketCodecUtils; -import net.minecraft.network.NetworkSide; -import net.minecraft.network.PacketByteBuf; -import net.minecraft.network.codec.PacketCodec; -import net.minecraft.network.packet.CustomPayload; -import net.minecraft.util.Util; +import net.minecraft.Util; +import net.minecraft.network.FriendlyByteBuf; +import net.minecraft.network.codec.StreamCodec; +import net.minecraft.network.protocol.PacketFlow; +import net.minecraft.network.protocol.common.custom.CustomPacketPayload; @ApiStatus.Internal public class HypixelCustomPayloadCodecs { - private static final PacketCodec C2S_PACKET_CODEC = CustomPayload.createCodec( + private static final StreamCodec C2S_PACKET_CODEC = CustomPacketPayload.codec( HypixelPacket.Unknown::createPacketCodec, Lists.newArrayList( createType(PartyInfoC2SPacket.ID, PartyInfoC2SPacket.PACKET_CODEC), createType(PlayerInfoC2SPacket.ID, PlayerInfoC2SPacket.PACKET_CODEC), createType(RegisterC2SPacket.ID, RegisterC2SPacket.PACKET_CODEC)) ); - private static final PacketCodec S2C_PACKET_CODEC = CustomPayload.createCodec( + private static final StreamCodec S2C_PACKET_CODEC = CustomPacketPayload.codec( HypixelPacket.Unknown::createPacketCodec, Lists.newArrayList( createType(PartyInfoS2CPacket.ID, PacketCodecUtils.dispatchHypixel( Util.make(new Int2ObjectOpenHashMap<>(), map -> { @@ -47,11 +47,11 @@ public class HypixelCustomPayloadCodecs { ); @SuppressWarnings("unchecked") - private static CustomPayload.Type createType(CustomPayload.Id id, PacketCodec packetCodec) { - return new CustomPayload.Type<>(id, PacketCodec.class.cast(packetCodec)); + private static CustomPacketPayload.TypeAndCodec createType(CustomPacketPayload.Type id, StreamCodec packetCodec) { + return new CustomPacketPayload.TypeAndCodec<>(id, StreamCodec.class.cast(packetCodec)); } - static PacketCodec get4Direction(NetworkSide direction) { + static StreamCodec get4Direction(PacketFlow direction) { return switch (direction) { case SERVERBOUND -> C2S_PACKET_CODEC; case CLIENTBOUND -> S2C_PACKET_CODEC; diff --git a/src/main/java/net/azureaaron/hmapi/network/HypixelNetworking.java b/src/main/java/net/azureaaron/hmapi/network/HypixelNetworking.java index e6d2757..25eeaa2 100644 --- a/src/main/java/net/azureaaron/hmapi/network/HypixelNetworking.java +++ b/src/main/java/net/azureaaron/hmapi/network/HypixelNetworking.java @@ -15,9 +15,9 @@ import net.azureaaron.hmapi.network.packet.v1.s2c.LocationUpdateS2CPacket; import net.azureaaron.hmapi.utils.PacketSendResult; import net.azureaaron.hmapi.utils.Utils; -import net.minecraft.network.packet.CustomPayload; -import net.minecraft.util.Identifier; -import net.minecraft.util.Util; +import net.minecraft.Util; +import net.minecraft.network.protocol.common.custom.CustomPacketPayload; +import net.minecraft.resources.ResourceLocation; /** * Public interface for interacting with the networking component (sending packets) of the Mod API. @@ -25,8 +25,8 @@ * @implNote There is a global cooldown of 1 second between trying send a specific packet type. Additionally, all packet send methods should be called from the {@code Render Thread}. */ public class HypixelNetworking { - private static final Object2ObjectMap, IntList> VALID_EVENTS = Util.make(new Object2ObjectOpenHashMap<>(), map -> map.put(LocationUpdateS2CPacket.ID, Util.make(new IntArrayList(), list -> list.add(1)))); - static final Object2IntMap> REGISTERED_EVENTS = new Object2IntOpenHashMap<>(); + private static final Object2ObjectMap, IntList> VALID_EVENTS = Util.make(new Object2ObjectOpenHashMap<>(), map -> map.put(LocationUpdateS2CPacket.ID, Util.make(new IntArrayList(), list -> list.add(1)))); + static final Object2IntMap> REGISTERED_EVENTS = new Object2IntOpenHashMap<>(); private HypixelNetworking() {} @@ -65,11 +65,11 @@ public static PacketSendResult sendPlayerInfoC2SPacket(int version) { * to avoid any unexpected behavior it is important to keep up to date with this library and the Mod API at large. Note that this is a limitation of the Mod API * and not the library itself. */ - public static void registerToEvents(Object2IntMap> requestedEvents) { - Object2IntMap> newEventRegistrations = new Object2IntOpenHashMap<>(); + public static void registerToEvents(Object2IntMap> requestedEvents) { + Object2IntMap> newEventRegistrations = new Object2IntOpenHashMap<>(); - for (Object2IntMap.Entry> entry : requestedEvents.object2IntEntrySet()) { - CustomPayload.Id id = entry.getKey(); + for (Object2IntMap.Entry> entry : requestedEvents.object2IntEntrySet()) { + CustomPacketPayload.Type id = entry.getKey(); int version = entry.getIntValue(); //Require that the requested event is actually an event and that the version is supported @@ -90,7 +90,7 @@ public static void registerToEvents(Object2IntMap packetsToRegisterFor = REGISTERED_EVENTS.object2IntEntrySet().stream() + Object2IntMap packetsToRegisterFor = REGISTERED_EVENTS.object2IntEntrySet().stream() .collect(Collectors.toMap(e -> e.getKey().id(), Object2IntMap.Entry::getIntValue, (a, b) -> a > b ? a : b, Object2IntOpenHashMap::new)); HypixelNetworkingImpl.sendPacket(new RegisterC2SPacket(1, packetsToRegisterFor), true); diff --git a/src/main/java/net/azureaaron/hmapi/network/HypixelNetworkingImpl.java b/src/main/java/net/azureaaron/hmapi/network/HypixelNetworkingImpl.java index 0e8d630..56ce2fb 100644 --- a/src/main/java/net/azureaaron/hmapi/network/HypixelNetworkingImpl.java +++ b/src/main/java/net/azureaaron/hmapi/network/HypixelNetworkingImpl.java @@ -23,34 +23,34 @@ import net.azureaaron.hmapi.network.packet.v1.s2c.PlayerInfoS2CPacket; import net.azureaaron.hmapi.network.packet.v2.s2c.PartyInfoS2CPacket; import net.azureaaron.hmapi.utils.PacketSendResult; -import net.minecraft.client.MinecraftClient; -import net.minecraft.network.packet.CustomPayload; -import net.minecraft.network.packet.c2s.common.CustomPayloadC2SPacket; -import net.minecraft.util.Identifier; +import net.minecraft.client.Minecraft; +import net.minecraft.network.protocol.common.ServerboundCustomPayloadPacket; +import net.minecraft.network.protocol.common.custom.CustomPacketPayload; +import net.minecraft.resources.ResourceLocation; @ApiStatus.Internal public class HypixelNetworkingImpl { private static final Logger LOGGER = LogUtils.getLogger(); - private static final MinecraftClient CLIENT = MinecraftClient.getInstance(); + private static final Minecraft CLIENT = Minecraft.getInstance(); private static final long COOLDOWN = 1000L; - private static final Object2LongMap> COOLDOWNS = Object2LongMaps.synchronize(new Object2LongOpenHashMap<>()); + private static final Object2LongMap> COOLDOWNS = Object2LongMaps.synchronize(new Object2LongOpenHashMap<>()); static PacketSendResult sendPacket(T payload, boolean bypassCooldown) { - if ((System.currentTimeMillis() + COOLDOWN > COOLDOWNS.computeIfAbsent(payload.getId(), _id -> 0L)) || bypassCooldown) { + if ((System.currentTimeMillis() + COOLDOWN > COOLDOWNS.computeIfAbsent(payload.type(), _id -> 0L)) || bypassCooldown) { //TODO log if its null with fatal - Objects.requireNonNull(CLIENT.getNetworkHandler(), "Cannot send packet while not in game!").sendPacket(new CustomPayloadC2SPacket(payload)); - COOLDOWNS.put(payload.getId(), System.currentTimeMillis()); + Objects.requireNonNull(CLIENT.getConnection(), "Cannot send packet while not in game!").send(new ServerboundCustomPayloadPacket(payload)); + COOLDOWNS.put(payload.type(), System.currentTimeMillis()); return PacketSendResult.success(); } - return PacketSendResult.onCooldown(COOLDOWNS.getLong(payload.getId()) - System.currentTimeMillis()); + return PacketSendResult.onCooldown(COOLDOWNS.getLong(payload.type()) - System.currentTimeMillis()); } //TODO unify this and the logic in the non-impl class as its the same - rename to just sendEventRegistrations? private static void sendInitialEventRegistrations() { if (!HypixelNetworking.REGISTERED_EVENTS.isEmpty()) { - Object2IntMap packetsToRegisterFor = HypixelNetworking.REGISTERED_EVENTS.object2IntEntrySet().stream() + Object2IntMap packetsToRegisterFor = HypixelNetworking.REGISTERED_EVENTS.object2IntEntrySet().stream() .collect(Collectors.toMap(e -> e.getKey().id(), Object2IntMap.Entry::getIntValue, (a, b) -> a > b ? a : b, Object2IntOpenHashMap::new)); sendPacket(new RegisterC2SPacket(1, packetsToRegisterFor), true); diff --git a/src/main/java/net/azureaaron/hmapi/network/WrappedPacketCodec.java b/src/main/java/net/azureaaron/hmapi/network/WrappedPacketCodec.java index 69a05b2..0e54480 100644 --- a/src/main/java/net/azureaaron/hmapi/network/WrappedPacketCodec.java +++ b/src/main/java/net/azureaaron/hmapi/network/WrappedPacketCodec.java @@ -4,26 +4,26 @@ import net.azureaaron.hmapi.network.packet.HypixelPacket; import net.azureaaron.hmapi.network.packet.c2s.HypixelC2SPacket; -import net.minecraft.network.NetworkSide; -import net.minecraft.network.PacketByteBuf; -import net.minecraft.network.codec.PacketCodec; -import net.minecraft.network.packet.CustomPayload; +import net.minecraft.network.FriendlyByteBuf; +import net.minecraft.network.codec.StreamCodec; +import net.minecraft.network.protocol.PacketFlow; +import net.minecraft.network.protocol.common.custom.CustomPacketPayload; @ApiStatus.Internal -public record WrappedPacketCodec(PacketCodec wrappedPacketCodec, NetworkSide direction) implements PacketCodec { +public record WrappedPacketCodec(StreamCodec wrappedPacketCodec, PacketFlow direction) implements StreamCodec { @Override - public CustomPayload decode(PacketByteBuf buf) { - PacketByteBuf copiedBuf = new PacketByteBuf(buf.slice()); + public CustomPacketPayload decode(FriendlyByteBuf buf) { + FriendlyByteBuf copiedBuf = new FriendlyByteBuf(buf.slice()); - CustomPayload original = this.wrappedPacketCodec.decode(buf); - CustomPayload hijacked = HypixelCustomPayloadCodecs.get4Direction(this.direction).decode(copiedBuf); + CustomPacketPayload original = this.wrappedPacketCodec.decode(buf); + CustomPacketPayload hijacked = HypixelCustomPayloadCodecs.get4Direction(this.direction).decode(copiedBuf); return hijacked instanceof HypixelPacket.Unknown ? original : new HijackedCustomPayload(original, hijacked); } @Override - public void encode(PacketByteBuf buf, CustomPayload payload) { + public void encode(FriendlyByteBuf buf, CustomPacketPayload payload) { if (payload instanceof HypixelC2SPacket) { HypixelCustomPayloadCodecs.get4Direction(this.direction).encode(buf, payload); } else { diff --git a/src/main/java/net/azureaaron/hmapi/network/packet/HypixelPacket.java b/src/main/java/net/azureaaron/hmapi/network/packet/HypixelPacket.java index 2ab6a4c..b081a5b 100644 --- a/src/main/java/net/azureaaron/hmapi/network/packet/HypixelPacket.java +++ b/src/main/java/net/azureaaron/hmapi/network/packet/HypixelPacket.java @@ -1,37 +1,36 @@ package net.azureaaron.hmapi.network.packet; +import net.minecraft.network.FriendlyByteBuf; +import net.minecraft.network.codec.StreamCodec; +import net.minecraft.network.protocol.common.custom.CustomPacketPayload; +import net.minecraft.resources.ResourceLocation; import org.jetbrains.annotations.ApiStatus; -import net.minecraft.network.PacketByteBuf; -import net.minecraft.network.codec.PacketCodec; -import net.minecraft.network.packet.CustomPayload; -import net.minecraft.util.Identifier; - @ApiStatus.Internal -public interface HypixelPacket extends CustomPayload { +public interface HypixelPacket extends CustomPacketPayload { @ApiStatus.Internal - public record Unknown(Identifier id) implements HypixelPacket { + public record Unknown(ResourceLocation id) implements HypixelPacket { - public static PacketCodec createPacketCodec(Identifier id) { - return new PacketCodec<>() { + public static StreamCodec createPacketCodec(ResourceLocation id) { + return new StreamCodec<>() { @Override - public Unknown decode(PacketByteBuf buf) { + public Unknown decode(FriendlyByteBuf buf) { //Since we duplicate the buffer we don't need to read all bytes return new Unknown(id); } @Override - public void encode(PacketByteBuf buf, Unknown value) { + public void encode(FriendlyByteBuf buf, Unknown value) { //We will never encode this } }; } @Override - public Id getId() { - return new CustomPayload.Id<>(this.id); + public Type type() { + return new CustomPacketPayload.Type<>(this.id); } } } diff --git a/src/main/java/net/azureaaron/hmapi/network/packet/c2s/PartyInfoC2SPacket.java b/src/main/java/net/azureaaron/hmapi/network/packet/c2s/PartyInfoC2SPacket.java index cdfd682..0116ca3 100644 --- a/src/main/java/net/azureaaron/hmapi/network/packet/c2s/PartyInfoC2SPacket.java +++ b/src/main/java/net/azureaaron/hmapi/network/packet/c2s/PartyInfoC2SPacket.java @@ -1,17 +1,17 @@ package net.azureaaron.hmapi.network.packet.c2s; -import net.minecraft.network.RegistryByteBuf; -import net.minecraft.network.codec.PacketCodec; -import net.minecraft.network.codec.PacketCodecs; -import net.minecraft.network.packet.CustomPayload; -import net.minecraft.util.Identifier; +import net.minecraft.network.RegistryFriendlyByteBuf; +import net.minecraft.network.codec.ByteBufCodecs; +import net.minecraft.network.codec.StreamCodec; +import net.minecraft.network.protocol.common.custom.CustomPacketPayload; +import net.minecraft.resources.ResourceLocation; public record PartyInfoC2SPacket(int version) implements HypixelC2SPacket { - public static final CustomPayload.Id ID = new CustomPayload.Id<>(Identifier.of("hypixel", "party_info")); - public static final PacketCodec PACKET_CODEC = PacketCodec.tuple(PacketCodecs.VAR_INT, PartyInfoC2SPacket::version, PartyInfoC2SPacket::new); + public static final CustomPacketPayload.Type ID = new CustomPacketPayload.Type<>(ResourceLocation.fromNamespaceAndPath("hypixel", "party_info")); + public static final StreamCodec PACKET_CODEC = StreamCodec.composite(ByteBufCodecs.VAR_INT, PartyInfoC2SPacket::version, PartyInfoC2SPacket::new); @Override - public Id getId() { + public Type type() { return ID; } } diff --git a/src/main/java/net/azureaaron/hmapi/network/packet/c2s/PlayerInfoC2SPacket.java b/src/main/java/net/azureaaron/hmapi/network/packet/c2s/PlayerInfoC2SPacket.java index beed038..c1e4ca9 100644 --- a/src/main/java/net/azureaaron/hmapi/network/packet/c2s/PlayerInfoC2SPacket.java +++ b/src/main/java/net/azureaaron/hmapi/network/packet/c2s/PlayerInfoC2SPacket.java @@ -1,17 +1,17 @@ package net.azureaaron.hmapi.network.packet.c2s; -import net.minecraft.network.RegistryByteBuf; -import net.minecraft.network.codec.PacketCodec; -import net.minecraft.network.codec.PacketCodecs; -import net.minecraft.network.packet.CustomPayload; -import net.minecraft.util.Identifier; +import net.minecraft.network.RegistryFriendlyByteBuf; +import net.minecraft.network.codec.ByteBufCodecs; +import net.minecraft.network.codec.StreamCodec; +import net.minecraft.network.protocol.common.custom.CustomPacketPayload; +import net.minecraft.resources.ResourceLocation; public record PlayerInfoC2SPacket(int version) implements HypixelC2SPacket { - public static final CustomPayload.Id ID = new CustomPayload.Id<>(Identifier.of("hypixel", "player_info")); - public static final PacketCodec PACKET_CODEC = PacketCodec.tuple(PacketCodecs.VAR_INT, PlayerInfoC2SPacket::version, PlayerInfoC2SPacket::new); + public static final CustomPacketPayload.Type ID = new CustomPacketPayload.Type<>(ResourceLocation.fromNamespaceAndPath("hypixel", "player_info")); + public static final StreamCodec PACKET_CODEC = StreamCodec.composite(ByteBufCodecs.VAR_INT, PlayerInfoC2SPacket::version, PlayerInfoC2SPacket::new); @Override - public Id getId() { + public Type type() { return ID; } } diff --git a/src/main/java/net/azureaaron/hmapi/network/packet/c2s/RegisterC2SPacket.java b/src/main/java/net/azureaaron/hmapi/network/packet/c2s/RegisterC2SPacket.java index c75c74e..0c3f318 100644 --- a/src/main/java/net/azureaaron/hmapi/network/packet/c2s/RegisterC2SPacket.java +++ b/src/main/java/net/azureaaron/hmapi/network/packet/c2s/RegisterC2SPacket.java @@ -2,19 +2,19 @@ import it.unimi.dsi.fastutil.objects.Object2IntMap; import it.unimi.dsi.fastutil.objects.Object2IntOpenHashMap; -import net.minecraft.network.RegistryByteBuf; -import net.minecraft.network.codec.PacketCodec; -import net.minecraft.network.codec.PacketCodecs; -import net.minecraft.network.packet.CustomPayload; -import net.minecraft.util.Identifier; +import net.minecraft.network.RegistryFriendlyByteBuf; +import net.minecraft.network.codec.ByteBufCodecs; +import net.minecraft.network.codec.StreamCodec; +import net.minecraft.network.protocol.common.custom.CustomPacketPayload; +import net.minecraft.resources.ResourceLocation; -public record RegisterC2SPacket(int version, Object2IntMap eventsToRegister) implements HypixelC2SPacket { - public static final CustomPayload.Id ID = new CustomPayload.Id<>(Identifier.of("hypixel", "register")); - public static final PacketCodec PACKET_CODEC = PacketCodec.tuple(PacketCodecs.VAR_INT, RegisterC2SPacket::version, - PacketCodecs.map(Object2IntOpenHashMap::new, Identifier.PACKET_CODEC, PacketCodecs.VAR_INT, 5), RegisterC2SPacket::eventsToRegister, RegisterC2SPacket::new); +public record RegisterC2SPacket(int version, Object2IntMap eventsToRegister) implements HypixelC2SPacket { + public static final CustomPacketPayload.Type ID = new CustomPacketPayload.Type<>(ResourceLocation.fromNamespaceAndPath("hypixel", "register")); + public static final StreamCodec PACKET_CODEC = StreamCodec.composite(ByteBufCodecs.VAR_INT, RegisterC2SPacket::version, + ByteBufCodecs.map(Object2IntOpenHashMap::new, ResourceLocation.STREAM_CODEC, ByteBufCodecs.VAR_INT, 5), RegisterC2SPacket::eventsToRegister, RegisterC2SPacket::new); @Override - public Id getId() { + public Type type() { return ID; } } diff --git a/src/main/java/net/azureaaron/hmapi/network/packet/s2c/ErrorS2CPacket.java b/src/main/java/net/azureaaron/hmapi/network/packet/s2c/ErrorS2CPacket.java index 3feb6dd..9ec990a 100644 --- a/src/main/java/net/azureaaron/hmapi/network/packet/s2c/ErrorS2CPacket.java +++ b/src/main/java/net/azureaaron/hmapi/network/packet/s2c/ErrorS2CPacket.java @@ -4,10 +4,10 @@ import net.azureaaron.hmapi.data.error.ErrorReason; import net.azureaaron.hmapi.data.error.ModApiErrorReason; -import net.minecraft.network.RegistryByteBuf; -import net.minecraft.network.codec.PacketCodec; -import net.minecraft.network.codec.PacketCodecs; -import net.minecraft.network.packet.CustomPayload; +import net.minecraft.network.RegistryFriendlyByteBuf; +import net.minecraft.network.codec.ByteBufCodecs; +import net.minecraft.network.codec.StreamCodec; +import net.minecraft.network.protocol.common.custom.CustomPacketPayload; /** * This packet is used to communicate when Hypixel returned an error instead of a successful packet. @@ -18,12 +18,12 @@ * @see {@link ModApiErrorReason} * @see {@link net.azureaaron.hmapi.data.error.InternalErrorReason InternalErrorReason} */ -public record ErrorS2CPacket(CustomPayload.Id id, ErrorReason reason) implements HypixelS2CPacket { - public static final Function, PacketCodec> PACKET_CODEC = payloadId -> PacketCodec.tuple(PacketCodecs.indexed(ModApiErrorReason::tryResolveReason, ErrorReason::id), ErrorS2CPacket::reason, +public record ErrorS2CPacket(CustomPacketPayload.Type id, ErrorReason reason) implements HypixelS2CPacket { + public static final Function, StreamCodec> PACKET_CODEC = payloadId -> StreamCodec.composite(ByteBufCodecs.idMapper(ModApiErrorReason::tryResolveReason, ErrorReason::id), ErrorS2CPacket::reason, errorId -> new ErrorS2CPacket(payloadId, errorId)); @Override - public Id getId() { + public Type type() { return this.id; } } diff --git a/src/main/java/net/azureaaron/hmapi/network/packet/s2c/HelloS2CPacket.java b/src/main/java/net/azureaaron/hmapi/network/packet/s2c/HelloS2CPacket.java index f05d409..b7c36e3 100644 --- a/src/main/java/net/azureaaron/hmapi/network/packet/s2c/HelloS2CPacket.java +++ b/src/main/java/net/azureaaron/hmapi/network/packet/s2c/HelloS2CPacket.java @@ -1,11 +1,11 @@ package net.azureaaron.hmapi.network.packet.s2c; import net.azureaaron.hmapi.data.server.Environment; -import net.minecraft.network.RegistryByteBuf; -import net.minecraft.network.codec.PacketCodec; -import net.minecraft.network.codec.PacketCodecs; -import net.minecraft.network.packet.CustomPayload; -import net.minecraft.util.Identifier; +import net.minecraft.network.RegistryFriendlyByteBuf; +import net.minecraft.network.codec.ByteBufCodecs; +import net.minecraft.network.codec.StreamCodec; +import net.minecraft.network.protocol.common.custom.CustomPacketPayload; +import net.minecraft.resources.ResourceLocation; /** * This packet is sent each time upon logging into Hypixel, currently it only communicates the server's environment. @@ -16,11 +16,11 @@ * @implSpec This record/packet is subject to potentially breaking changes in the future without notice as specified by Hypixel. */ public record HelloS2CPacket(Environment environment) implements HypixelS2CPacket { - public static final CustomPayload.Id ID = new CustomPayload.Id<>(Identifier.of("hypixel", "hello")); - public static final PacketCodec PACKET_CODEC = PacketCodec.tuple(PacketCodecs.indexed(i -> Environment.values()[i], Environment::ordinal), HelloS2CPacket::environment, HelloS2CPacket::new); + public static final CustomPacketPayload.Type ID = new CustomPacketPayload.Type<>(ResourceLocation.fromNamespaceAndPath("hypixel", "hello")); + public static final StreamCodec PACKET_CODEC = StreamCodec.composite(ByteBufCodecs.idMapper(i -> Environment.values()[i], Environment::ordinal), HelloS2CPacket::environment, HelloS2CPacket::new); @Override - public Id getId() { + public Type type() { return ID; } } diff --git a/src/main/java/net/azureaaron/hmapi/network/packet/s2c/HypixelS2CPacket.java b/src/main/java/net/azureaaron/hmapi/network/packet/s2c/HypixelS2CPacket.java index 14c406d..a2061d5 100644 --- a/src/main/java/net/azureaaron/hmapi/network/packet/s2c/HypixelS2CPacket.java +++ b/src/main/java/net/azureaaron/hmapi/network/packet/s2c/HypixelS2CPacket.java @@ -3,8 +3,8 @@ import org.jetbrains.annotations.ApiStatus; import net.azureaaron.hmapi.network.packet.HypixelPacket; -import net.minecraft.network.packet.CustomPayload; -import net.minecraft.util.Identifier; +import net.minecraft.network.protocol.common.custom.CustomPacketPayload; +import net.minecraft.resources.ResourceLocation; /** * Used to establish a basic record-compatible inheritance model for each S2C packet. In order to get the original type you @@ -19,9 +19,9 @@ public interface HypixelS2CPacket extends HypixelPacket { HypixelS2CPacket NOP = new HypixelS2CPacket() { @Override - public Id getId() { + public Type type() { //This needs to return something non null that is a packet channel we're registered to - return new CustomPayload.Id(Identifier.of("hypixel", "location")); + return new CustomPacketPayload.Type(ResourceLocation.fromNamespaceAndPath("hypixel", "location")); } }; } diff --git a/src/main/java/net/azureaaron/hmapi/network/packet/v1/s2c/LocationUpdateS2CPacket.java b/src/main/java/net/azureaaron/hmapi/network/packet/v1/s2c/LocationUpdateS2CPacket.java index 47a0080..6a66499 100644 --- a/src/main/java/net/azureaaron/hmapi/network/packet/v1/s2c/LocationUpdateS2CPacket.java +++ b/src/main/java/net/azureaaron/hmapi/network/packet/v1/s2c/LocationUpdateS2CPacket.java @@ -3,11 +3,11 @@ import java.util.Optional; import net.azureaaron.hmapi.network.packet.s2c.HypixelS2CPacket; -import net.minecraft.network.RegistryByteBuf; -import net.minecraft.network.codec.PacketCodec; -import net.minecraft.network.codec.PacketCodecs; -import net.minecraft.network.packet.CustomPayload; -import net.minecraft.util.Identifier; +import net.minecraft.network.RegistryFriendlyByteBuf; +import net.minecraft.network.codec.ByteBufCodecs; +import net.minecraft.network.codec.StreamCodec; +import net.minecraft.network.protocol.common.custom.CustomPacketPayload; +import net.minecraft.resources.ResourceLocation; /** * When subscribed to this event packet it's sent every time the player swaps servers and it gives information on their new location on Hypixel. @@ -21,15 +21,15 @@ * @see Hypixel Data ServerType varient enum constant names for possible {@link #serverType} values. */ public record LocationUpdateS2CPacket(String serverName, Optional serverType, Optional lobbyName, Optional mode, Optional map) implements HypixelS2CPacket { - public static final CustomPayload.Id ID = new CustomPayload.Id<>(Identifier.of("hyevent", "location")); - public static final PacketCodec PACKET_CODEC = PacketCodec.tuple(PacketCodecs.STRING, LocationUpdateS2CPacket::serverName, - PacketCodecs.optional(PacketCodecs.STRING), LocationUpdateS2CPacket::serverType, - PacketCodecs.optional(PacketCodecs.STRING), LocationUpdateS2CPacket::lobbyName, - PacketCodecs.optional(PacketCodecs.STRING), LocationUpdateS2CPacket::mode, - PacketCodecs.optional(PacketCodecs.STRING), LocationUpdateS2CPacket::map, LocationUpdateS2CPacket::new); + public static final CustomPacketPayload.Type ID = new CustomPacketPayload.Type<>(ResourceLocation.fromNamespaceAndPath("hyevent", "location")); + public static final StreamCodec PACKET_CODEC = StreamCodec.composite(ByteBufCodecs.STRING_UTF8, LocationUpdateS2CPacket::serverName, + ByteBufCodecs.optional(ByteBufCodecs.STRING_UTF8), LocationUpdateS2CPacket::serverType, + ByteBufCodecs.optional(ByteBufCodecs.STRING_UTF8), LocationUpdateS2CPacket::lobbyName, + ByteBufCodecs.optional(ByteBufCodecs.STRING_UTF8), LocationUpdateS2CPacket::mode, + ByteBufCodecs.optional(ByteBufCodecs.STRING_UTF8), LocationUpdateS2CPacket::map, LocationUpdateS2CPacket::new); @Override - public Id getId() { + public Type type() { return ID; } } diff --git a/src/main/java/net/azureaaron/hmapi/network/packet/v1/s2c/PlayerInfoS2CPacket.java b/src/main/java/net/azureaaron/hmapi/network/packet/v1/s2c/PlayerInfoS2CPacket.java index 26e4acc..6462b91 100644 --- a/src/main/java/net/azureaaron/hmapi/network/packet/v1/s2c/PlayerInfoS2CPacket.java +++ b/src/main/java/net/azureaaron/hmapi/network/packet/v1/s2c/PlayerInfoS2CPacket.java @@ -6,11 +6,11 @@ import net.azureaaron.hmapi.data.rank.PackageRank; import net.azureaaron.hmapi.data.rank.PlayerRank; import net.azureaaron.hmapi.network.packet.s2c.HypixelS2CPacket; -import net.minecraft.network.RegistryByteBuf; -import net.minecraft.network.codec.PacketCodec; -import net.minecraft.network.codec.PacketCodecs; -import net.minecraft.network.packet.CustomPayload; -import net.minecraft.util.Identifier; +import net.minecraft.network.RegistryFriendlyByteBuf; +import net.minecraft.network.codec.ByteBufCodecs; +import net.minecraft.network.codec.StreamCodec; +import net.minecraft.network.protocol.common.custom.CustomPacketPayload; +import net.minecraft.resources.ResourceLocation; /** * This packet gives information about the player's rank and how its displayed. @@ -21,15 +21,15 @@ * @param prefix the player's rank prefix override (Note: this may contain formatting codes) */ public record PlayerInfoS2CPacket(PlayerRank playerRank, PackageRank packageRank, MonthlyPackageRank monthlyPackageRank, Optional prefix) implements HypixelS2CPacket { - public static final CustomPayload.Id ID = new CustomPayload.Id<>(Identifier.of("hypixel", "player_info")); - public static final PacketCodec PACKET_CODEC = PacketCodec.tuple(PacketCodecs.indexed(PlayerRank.BY_ID, PlayerRank::id), PlayerInfoS2CPacket::playerRank, - PacketCodecs.indexed(PackageRank.BY_ID, PackageRank::id), PlayerInfoS2CPacket::packageRank, - PacketCodecs.indexed(MonthlyPackageRank.BY_ID, MonthlyPackageRank::id), PlayerInfoS2CPacket::monthlyPackageRank, - PacketCodecs.optional(PacketCodecs.STRING), PlayerInfoS2CPacket::prefix, + public static final CustomPacketPayload.Type ID = new CustomPacketPayload.Type<>(ResourceLocation.fromNamespaceAndPath("hypixel", "player_info")); + public static final StreamCodec PACKET_CODEC = StreamCodec.composite(ByteBufCodecs.idMapper(PlayerRank.BY_ID, PlayerRank::id), PlayerInfoS2CPacket::playerRank, + ByteBufCodecs.idMapper(PackageRank.BY_ID, PackageRank::id), PlayerInfoS2CPacket::packageRank, + ByteBufCodecs.idMapper(MonthlyPackageRank.BY_ID, MonthlyPackageRank::id), PlayerInfoS2CPacket::monthlyPackageRank, + ByteBufCodecs.optional(ByteBufCodecs.STRING_UTF8), PlayerInfoS2CPacket::prefix, PlayerInfoS2CPacket::new); @Override - public Id getId() { + public Type type() { return ID; } } diff --git a/src/main/java/net/azureaaron/hmapi/network/packet/v2/s2c/PartyInfoS2CPacket.java b/src/main/java/net/azureaaron/hmapi/network/packet/v2/s2c/PartyInfoS2CPacket.java index 048dd04..21d9537 100644 --- a/src/main/java/net/azureaaron/hmapi/network/packet/v2/s2c/PartyInfoS2CPacket.java +++ b/src/main/java/net/azureaaron/hmapi/network/packet/v2/s2c/PartyInfoS2CPacket.java @@ -11,12 +11,12 @@ import net.azureaaron.hmapi.data.party.PartyRole; import net.azureaaron.hmapi.network.packet.s2c.HypixelS2CPacket; import net.azureaaron.hmapi.utils.PacketCodecUtils; -import net.minecraft.network.RegistryByteBuf; -import net.minecraft.network.codec.PacketCodec; -import net.minecraft.network.codec.PacketCodecs; -import net.minecraft.network.packet.CustomPayload; -import net.minecraft.util.Identifier; -import net.minecraft.util.Uuids; +import net.minecraft.core.UUIDUtil; +import net.minecraft.network.RegistryFriendlyByteBuf; +import net.minecraft.network.codec.ByteBufCodecs; +import net.minecraft.network.codec.StreamCodec; +import net.minecraft.network.protocol.common.custom.CustomPacketPayload; +import net.minecraft.resources.ResourceLocation; /** * This packet gives information about whether the player is in a party, and if they are the {@link #members} map is populated with each party member and their role. @@ -25,16 +25,16 @@ * @param members a mapping of player {@link UUID}s to {@link PartyRole}s, this field will not be null when {@link #inParty} returns true */ public record PartyInfoS2CPacket(boolean inParty, @Nullable @Unmodifiable Map members) implements HypixelS2CPacket { - public static final CustomPayload.Id ID = new CustomPayload.Id<>(Identifier.of("hypixel", "party_info")); - private static final PacketCodec IN_PARTY_PACKET_CODEC = PacketCodec.tuple(PacketCodecs.map(Object2ReferenceOpenHashMap::new, Uuids.PACKET_CODEC, PacketCodecs.indexed(i -> PartyRole.values()[i], PartyRole::ordinal)), PartyInfoS2CPacket::members, PartyInfoS2CPacket::new); - public static final PacketCodec PACKET_CODEC = PacketCodecUtils.dispatchConditionally(IN_PARTY_PACKET_CODEC, PacketCodec.unit(new PartyInfoS2CPacket(false, null))); + public static final CustomPacketPayload.Type ID = new CustomPacketPayload.Type<>(ResourceLocation.fromNamespaceAndPath("hypixel", "party_info")); + private static final StreamCodec IN_PARTY_PACKET_CODEC = StreamCodec.composite(ByteBufCodecs.map(Object2ReferenceOpenHashMap::new, UUIDUtil.STREAM_CODEC, ByteBufCodecs.idMapper(i -> PartyRole.values()[i], PartyRole::ordinal)), PartyInfoS2CPacket::members, PartyInfoS2CPacket::new); + public static final StreamCodec PACKET_CODEC = PacketCodecUtils.dispatchConditionally(IN_PARTY_PACKET_CODEC, StreamCodec.unit(new PartyInfoS2CPacket(false, null))); private PartyInfoS2CPacket(Map members) { this(true, Collections.unmodifiableMap(members)); } @Override - public Id getId() { + public Type type() { return ID; } } diff --git a/src/main/java/net/azureaaron/hmapi/utils/PacketCodecUtils.java b/src/main/java/net/azureaaron/hmapi/utils/PacketCodecUtils.java index f8f8732..c99a840 100644 --- a/src/main/java/net/azureaaron/hmapi/utils/PacketCodecUtils.java +++ b/src/main/java/net/azureaaron/hmapi/utils/PacketCodecUtils.java @@ -7,21 +7,21 @@ import it.unimi.dsi.fastutil.ints.Int2ObjectMap; import net.azureaaron.hmapi.network.packet.s2c.HypixelS2CPacket; -import net.minecraft.network.PacketByteBuf; -import net.minecraft.network.codec.PacketCodec; +import net.minecraft.network.FriendlyByteBuf; +import net.minecraft.network.codec.StreamCodec; /** - * Utilities class for {@link PacketCodec PacketCodecs}. + * Utilities class for {@link StreamCodec PacketCodecs}. */ @ApiStatus.Internal public class PacketCodecUtils { private static final Logger LOGGER = LogUtils.getLogger(); /** - * @return A codec that decodes the {@link PacketByteBuf} in line with the packet format of Hypixel's Mod API and the requirements of my implementation. + * @return A codec that decodes the {@link FriendlyByteBuf} in line with the packet format of Hypixel's Mod API and the requirements of my implementation. */ - public static PacketCodec dispatchHypixel(Int2ObjectMap> primaryPacketCodecs, PacketCodec errorCodec) { - return new PacketCodec() { + public static StreamCodec dispatchHypixel(Int2ObjectMap> primaryPacketCodecs, StreamCodec errorCodec) { + return new StreamCodec() { @Override public HypixelS2CPacket decode(B buf) { @@ -36,7 +36,7 @@ public HypixelS2CPacket decode(B buf) { }; } - private HypixelS2CPacket decodeInternal(B buf, PacketCodec packetCodec) { + private HypixelS2CPacket decodeInternal(B buf, StreamCodec packetCodec) { HypixelS2CPacket packet = packetCodec.decode(buf); //There was a bug where Hypixel would send a bunch of extra bytes with a value of 0 so this was a work around to avoid being kicked from the server @@ -56,8 +56,8 @@ public void encode(B buf, HypixelS2CPacket value) { }; } - public static PacketCodec dispatchConditionally(PacketCodec ifTrue, PacketCodec ifFalse) { - return new PacketCodec() { + public static StreamCodec dispatchConditionally(StreamCodec ifTrue, StreamCodec ifFalse) { + return new StreamCodec() { @Override public T decode(B buf) { @@ -72,8 +72,8 @@ public void encode(B buf, T value) { }; } - public static PacketCodec dispatchSafely(PacketCodec packetCodec, PacketCodec errorCodec) { - return new PacketCodec() { + public static StreamCodec dispatchSafely(StreamCodec packetCodec, StreamCodec errorCodec) { + return new StreamCodec() { @Override public HypixelS2CPacket decode(B buf) { @@ -109,7 +109,7 @@ public void encode(B buf, HypixelS2CPacket value) { }; } - private static void readAllBytes(PacketByteBuf buf, boolean logWarning) { + private static void readAllBytes(FriendlyByteBuf buf, boolean logWarning) { buf.readerIndex(buf.writerIndex()); //TODO restore logging maybe } diff --git a/src/main/java/net/azureaaron/hmapi/utils/Utils.java b/src/main/java/net/azureaaron/hmapi/utils/Utils.java index 5611153..d48b825 100644 --- a/src/main/java/net/azureaaron/hmapi/utils/Utils.java +++ b/src/main/java/net/azureaaron/hmapi/utils/Utils.java @@ -1,9 +1,8 @@ package net.azureaaron.hmapi.utils; +import net.minecraft.client.Minecraft; import org.jetbrains.annotations.ApiStatus; -import net.minecraft.client.MinecraftClient; - @ApiStatus.Internal public class Utils { /** @@ -12,9 +11,9 @@ public class Utils { private static final String HYPIXEL_ADDRESS_OVERRIDE = System.getProperty("hmapi.alternateHypixelAddress", ""); public static boolean isOnHypixel() { - MinecraftClient client = MinecraftClient.getInstance(); - String serverAddress = client.getCurrentServerEntry() != null ? client.getCurrentServerEntry().address.toLowerCase() : ""; - String serverBrand = client.player != null && client.player.networkHandler != null && client.player.networkHandler.getBrand() != null ? client.player.networkHandler.getBrand() : ""; + Minecraft client = Minecraft.getInstance(); + String serverAddress = client.getCurrentServer() != null ? client.getCurrentServer().ip.toLowerCase() : ""; + String serverBrand = client.player != null && client.player.connection != null && client.player.connection.serverBrand() != null ? client.player.connection.serverBrand() : ""; return (!serverAddress.isEmpty() && HYPIXEL_ADDRESS_OVERRIDE.equalsIgnoreCase(serverAddress)) || serverAddress.contains("hypixel.net") || serverAddress.contains("hypixel.io") || serverBrand.contains("Hypixel BungeeCord"); } From 1b75dd079db868477bd280ab360c9268af5f1a62 Mon Sep 17 00:00:00 2001 From: alex <8379108+Alex33856@users.noreply.github.com> Date: Fri, 23 Jan 2026 14:26:41 -0500 Subject: [PATCH 03/11] Migrate Test Sources to Mojang Mappings --- .../java/net/azureaaron/hmapi/Example.java | 2 +- .../java/net/azureaaron/hmapi/MixinsTest.java | 6 ++--- .../packet/c2s/RegisterC2SPacketTest.java | 24 ++++++++--------- .../packet/s2c/ErrorS2CPacketTest.java | 12 ++++----- .../packet/s2c/HelloS2CPacketTest.java | 12 ++++----- .../v1/s2c/DispatchedCodecPacketTest.java | 26 +++++++++---------- .../v1/s2c/LocationUpdateS2CPacketTest.java | 24 ++++++++--------- .../v1/s2c/PlayerInfoS2CPacketTest.java | 16 ++++++------ .../packet/v2/s2c/PartyInfoS2CPacketTest.java | 26 +++++++++---------- 9 files changed, 74 insertions(+), 74 deletions(-) diff --git a/src/test/java/net/azureaaron/hmapi/Example.java b/src/test/java/net/azureaaron/hmapi/Example.java index c60c0ba..21233ce 100644 --- a/src/test/java/net/azureaaron/hmapi/Example.java +++ b/src/test/java/net/azureaaron/hmapi/Example.java @@ -6,7 +6,7 @@ import net.azureaaron.hmapi.network.packet.s2c.ErrorS2CPacket; import net.azureaaron.hmapi.network.packet.s2c.HypixelS2CPacket; import net.azureaaron.hmapi.network.packet.v1.s2c.LocationUpdateS2CPacket; -import net.minecraft.util.Util; +import net.minecraft.Util; public class Example { diff --git a/src/test/java/net/azureaaron/hmapi/MixinsTest.java b/src/test/java/net/azureaaron/hmapi/MixinsTest.java index 337a706..e1ab438 100644 --- a/src/test/java/net/azureaaron/hmapi/MixinsTest.java +++ b/src/test/java/net/azureaaron/hmapi/MixinsTest.java @@ -5,15 +5,15 @@ import org.spongepowered.asm.mixin.MixinEnvironment; import org.spongepowered.asm.mixin.transformer.IMixinTransformer; -import net.minecraft.Bootstrap; +import net.minecraft.server.Bootstrap; import net.minecraft.SharedConstants; public class MixinsTest { @BeforeAll public static void setupEnvironment() { - SharedConstants.createGameVersion(); - Bootstrap.initialize(); + SharedConstants.tryDetectVersion(); + Bootstrap.bootStrap(); } @Test diff --git a/src/test/java/net/azureaaron/hmapi/network/packet/c2s/RegisterC2SPacketTest.java b/src/test/java/net/azureaaron/hmapi/network/packet/c2s/RegisterC2SPacketTest.java index 30d64f9..cf4b14d 100644 --- a/src/test/java/net/azureaaron/hmapi/network/packet/c2s/RegisterC2SPacketTest.java +++ b/src/test/java/net/azureaaron/hmapi/network/packet/c2s/RegisterC2SPacketTest.java @@ -8,32 +8,32 @@ import it.unimi.dsi.fastutil.objects.Object2IntOpenHashMap; import net.azureaaron.hmapi.network.packet.v1.s2c.LocationUpdateS2CPacket; import net.fabricmc.fabric.api.networking.v1.PacketByteBufs; -import net.minecraft.Bootstrap; +import net.minecraft.server.Bootstrap; import net.minecraft.SharedConstants; -import net.minecraft.network.RegistryByteBuf; -import net.minecraft.network.codec.PacketCodecs; -import net.minecraft.registry.DynamicRegistryManager; -import net.minecraft.util.Identifier; -import net.minecraft.util.Util; +import net.minecraft.network.RegistryFriendlyByteBuf; +import net.minecraft.network.codec.ByteBufCodecs; +import net.minecraft.core.RegistryAccess; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.Util; public class RegisterC2SPacketTest { @BeforeAll public static void setupEnvironment() { - SharedConstants.createGameVersion(); - Bootstrap.initialize(); + SharedConstants.tryDetectVersion(); + Bootstrap.bootStrap(); } @Test void testSerializeByteBuf() { - RegistryByteBuf expected = RegistryByteBuf.makeFactory(DynamicRegistryManager.EMPTY).apply(PacketByteBufs.create()); - RegistryByteBuf actual = RegistryByteBuf.makeFactory(DynamicRegistryManager.EMPTY).apply(PacketByteBufs.create()); + RegistryFriendlyByteBuf expected = RegistryFriendlyByteBuf.decorator(RegistryAccess.EMPTY).apply(PacketByteBufs.create()); + RegistryFriendlyByteBuf actual = RegistryFriendlyByteBuf.decorator(RegistryAccess.EMPTY).apply(PacketByteBufs.create()); - Object2IntMap wantedPackets = Util.make(new Object2IntOpenHashMap<>(), map -> map.put(LocationUpdateS2CPacket.ID.id(), 1)); + Object2IntMap wantedPackets = Util.make(new Object2IntOpenHashMap<>(), map -> map.put(LocationUpdateS2CPacket.ID.id(), 1)); expected .writeVarInt(1) - .writeMap(wantedPackets, Identifier.PACKET_CODEC, PacketCodecs.VAR_INT); + .writeMap(wantedPackets, ResourceLocation.STREAM_CODEC, ByteBufCodecs.VAR_INT); RegisterC2SPacket.PACKET_CODEC.encode(actual, new RegisterC2SPacket(1, wantedPackets)); diff --git a/src/test/java/net/azureaaron/hmapi/network/packet/s2c/ErrorS2CPacketTest.java b/src/test/java/net/azureaaron/hmapi/network/packet/s2c/ErrorS2CPacketTest.java index 490a5ad..6113bf3 100644 --- a/src/test/java/net/azureaaron/hmapi/network/packet/s2c/ErrorS2CPacketTest.java +++ b/src/test/java/net/azureaaron/hmapi/network/packet/s2c/ErrorS2CPacketTest.java @@ -6,22 +6,22 @@ import net.azureaaron.hmapi.data.error.ModApiErrorReason; import net.fabricmc.fabric.api.networking.v1.PacketByteBufs; -import net.minecraft.Bootstrap; +import net.minecraft.server.Bootstrap; import net.minecraft.SharedConstants; -import net.minecraft.network.RegistryByteBuf; -import net.minecraft.registry.DynamicRegistryManager; +import net.minecraft.network.RegistryFriendlyByteBuf; +import net.minecraft.core.RegistryAccess; public class ErrorS2CPacketTest { @BeforeAll public static void setupEnvironment() { - SharedConstants.createGameVersion(); - Bootstrap.initialize(); + SharedConstants.tryDetectVersion(); + Bootstrap.bootStrap(); } @Test void testDeserializeByteBuf() { - RegistryByteBuf buf = RegistryByteBuf.makeFactory(DynamicRegistryManager.EMPTY).apply(PacketByteBufs.create()); + RegistryFriendlyByteBuf buf = RegistryFriendlyByteBuf.decorator(RegistryAccess.EMPTY).apply(PacketByteBufs.create()); buf.writeVarInt(2); diff --git a/src/test/java/net/azureaaron/hmapi/network/packet/s2c/HelloS2CPacketTest.java b/src/test/java/net/azureaaron/hmapi/network/packet/s2c/HelloS2CPacketTest.java index ec2d26f..ee047dc 100644 --- a/src/test/java/net/azureaaron/hmapi/network/packet/s2c/HelloS2CPacketTest.java +++ b/src/test/java/net/azureaaron/hmapi/network/packet/s2c/HelloS2CPacketTest.java @@ -6,22 +6,22 @@ import net.azureaaron.hmapi.data.server.Environment; import net.fabricmc.fabric.api.networking.v1.PacketByteBufs; -import net.minecraft.Bootstrap; +import net.minecraft.server.Bootstrap; import net.minecraft.SharedConstants; -import net.minecraft.network.RegistryByteBuf; -import net.minecraft.registry.DynamicRegistryManager; +import net.minecraft.network.RegistryFriendlyByteBuf; +import net.minecraft.core.RegistryAccess; public class HelloS2CPacketTest { @BeforeAll public static void setupEnvironment() { - SharedConstants.createGameVersion(); - Bootstrap.initialize(); + SharedConstants.tryDetectVersion(); + Bootstrap.bootStrap(); } @Test void testDeserializeByteBuf() { - RegistryByteBuf buf = RegistryByteBuf.makeFactory(DynamicRegistryManager.EMPTY).apply(PacketByteBufs.create()); + RegistryFriendlyByteBuf buf = RegistryFriendlyByteBuf.decorator(RegistryAccess.EMPTY).apply(PacketByteBufs.create()); buf.writeVarInt(0); diff --git a/src/test/java/net/azureaaron/hmapi/network/packet/v1/s2c/DispatchedCodecPacketTest.java b/src/test/java/net/azureaaron/hmapi/network/packet/v1/s2c/DispatchedCodecPacketTest.java index d46e349..a6f973e 100644 --- a/src/test/java/net/azureaaron/hmapi/network/packet/v1/s2c/DispatchedCodecPacketTest.java +++ b/src/test/java/net/azureaaron/hmapi/network/packet/v1/s2c/DispatchedCodecPacketTest.java @@ -15,34 +15,34 @@ import net.azureaaron.hmapi.network.packet.s2c.HypixelS2CPacket; import net.azureaaron.hmapi.utils.PacketCodecUtils; import net.fabricmc.fabric.api.networking.v1.PacketByteBufs; -import net.minecraft.Bootstrap; +import net.minecraft.server.Bootstrap; import net.minecraft.SharedConstants; -import net.minecraft.network.PacketByteBuf; -import net.minecraft.network.RegistryByteBuf; -import net.minecraft.network.codec.PacketCodec; -import net.minecraft.registry.DynamicRegistryManager; -import net.minecraft.util.Util; +import net.minecraft.network.FriendlyByteBuf; +import net.minecraft.network.RegistryFriendlyByteBuf; +import net.minecraft.network.codec.StreamCodec; +import net.minecraft.core.RegistryAccess; +import net.minecraft.Util; public class DispatchedCodecPacketTest { @BeforeAll public static void setupEnvironment() { - SharedConstants.createGameVersion(); - Bootstrap.initialize(); + SharedConstants.tryDetectVersion(); + Bootstrap.bootStrap(); } @Test void testNormalPacket() { - RegistryByteBuf buf = RegistryByteBuf.makeFactory(DynamicRegistryManager.EMPTY).apply(PacketByteBufs.create()); + RegistryFriendlyByteBuf buf = RegistryFriendlyByteBuf.decorator(RegistryAccess.EMPTY).apply(PacketByteBufs.create()); buf.writeBoolean(true) .writeVarInt(1) .writeVarInt(1) .writeVarInt(5) .writeVarInt(2) - .writeOptional(Optional.empty(), PacketByteBuf::writeString); + .writeOptional(Optional.empty(), FriendlyByteBuf::writeUtf); - Int2ObjectOpenHashMap> playerInfoPacketCodecs = Util.make(new Int2ObjectOpenHashMap<>(), map -> map.put(1, PlayerInfoS2CPacket.PACKET_CODEC)); + Int2ObjectOpenHashMap> playerInfoPacketCodecs = Util.make(new Int2ObjectOpenHashMap<>(), map -> map.put(1, PlayerInfoS2CPacket.PACKET_CODEC)); PlayerInfoS2CPacket expected = new PlayerInfoS2CPacket(PlayerRank.NORMAL, PackageRank.MVP_PLUS, MonthlyPackageRank.SUPERSTAR, Optional.empty()); HypixelS2CPacket actual = PacketCodecUtils.dispatchHypixel(playerInfoPacketCodecs, ErrorS2CPacket.PACKET_CODEC.apply(PlayerInfoS2CPacket.ID)).decode(buf); @@ -53,7 +53,7 @@ void testNormalPacket() { @Test void testUnknownVersionPacket() { - RegistryByteBuf buf = RegistryByteBuf.makeFactory(DynamicRegistryManager.EMPTY).apply(PacketByteBufs.create()); + RegistryFriendlyByteBuf buf = RegistryFriendlyByteBuf.decorator(RegistryAccess.EMPTY).apply(PacketByteBufs.create()); buf.writeBoolean(true) .writeVarInt(256); @@ -65,7 +65,7 @@ void testUnknownVersionPacket() { @Test void testErrorPacket() { - RegistryByteBuf buf = RegistryByteBuf.makeFactory(DynamicRegistryManager.EMPTY).apply(PacketByteBufs.create()); + RegistryFriendlyByteBuf buf = RegistryFriendlyByteBuf.decorator(RegistryAccess.EMPTY).apply(PacketByteBufs.create()); buf.writeBoolean(false) .writeVarInt(2); diff --git a/src/test/java/net/azureaaron/hmapi/network/packet/v1/s2c/LocationUpdateS2CPacketTest.java b/src/test/java/net/azureaaron/hmapi/network/packet/v1/s2c/LocationUpdateS2CPacketTest.java index 89daf42..4de0235 100644 --- a/src/test/java/net/azureaaron/hmapi/network/packet/v1/s2c/LocationUpdateS2CPacketTest.java +++ b/src/test/java/net/azureaaron/hmapi/network/packet/v1/s2c/LocationUpdateS2CPacketTest.java @@ -7,30 +7,30 @@ import org.junit.jupiter.api.Test; import net.fabricmc.fabric.api.networking.v1.PacketByteBufs; -import net.minecraft.Bootstrap; +import net.minecraft.server.Bootstrap; import net.minecraft.SharedConstants; -import net.minecraft.network.PacketByteBuf; -import net.minecraft.network.RegistryByteBuf; -import net.minecraft.registry.DynamicRegistryManager; +import net.minecraft.network.FriendlyByteBuf; +import net.minecraft.network.RegistryFriendlyByteBuf; +import net.minecraft.core.RegistryAccess; public class LocationUpdateS2CPacketTest { @BeforeAll public static void setupEnvironment() { - SharedConstants.createGameVersion(); - Bootstrap.initialize(); + SharedConstants.tryDetectVersion(); + Bootstrap.bootStrap(); } @Test void testDeserializeByteBuf() { - RegistryByteBuf buf = RegistryByteBuf.makeFactory(DynamicRegistryManager.EMPTY).apply(PacketByteBufs.create()); + RegistryFriendlyByteBuf buf = RegistryFriendlyByteBuf.decorator(RegistryAccess.EMPTY).apply(PacketByteBufs.create()); - buf.writeString("mini88H") - .writeOptional(Optional.of("SKYBLOCK"), PacketByteBuf::writeString); + buf.writeUtf("mini88H") + .writeOptional(Optional.of("SKYBLOCK"), FriendlyByteBuf::writeUtf); - buf.writeOptional(Optional.empty(), PacketByteBuf::writeString); - buf.writeOptional(Optional.of("dynamic"), PacketByteBuf::writeString); - buf.writeOptional(Optional.of("Private Island"), PacketByteBuf::writeString); + buf.writeOptional(Optional.empty(), FriendlyByteBuf::writeUtf); + buf.writeOptional(Optional.of("dynamic"), FriendlyByteBuf::writeUtf); + buf.writeOptional(Optional.of("Private Island"), FriendlyByteBuf::writeUtf); LocationUpdateS2CPacket expected = new LocationUpdateS2CPacket("mini88H", Optional.of("SKYBLOCK"), Optional.empty(), Optional.of("dynamic"), Optional.of("Private Island")); LocationUpdateS2CPacket actual = LocationUpdateS2CPacket.PACKET_CODEC.decode(buf); diff --git a/src/test/java/net/azureaaron/hmapi/network/packet/v1/s2c/PlayerInfoS2CPacketTest.java b/src/test/java/net/azureaaron/hmapi/network/packet/v1/s2c/PlayerInfoS2CPacketTest.java index 6b86b49..91c982b 100644 --- a/src/test/java/net/azureaaron/hmapi/network/packet/v1/s2c/PlayerInfoS2CPacketTest.java +++ b/src/test/java/net/azureaaron/hmapi/network/packet/v1/s2c/PlayerInfoS2CPacketTest.java @@ -10,28 +10,28 @@ import net.azureaaron.hmapi.data.rank.PackageRank; import net.azureaaron.hmapi.data.rank.PlayerRank; import net.fabricmc.fabric.api.networking.v1.PacketByteBufs; -import net.minecraft.Bootstrap; +import net.minecraft.server.Bootstrap; import net.minecraft.SharedConstants; -import net.minecraft.network.PacketByteBuf; -import net.minecraft.network.RegistryByteBuf; -import net.minecraft.registry.DynamicRegistryManager; +import net.minecraft.network.FriendlyByteBuf; +import net.minecraft.network.RegistryFriendlyByteBuf; +import net.minecraft.core.RegistryAccess; public class PlayerInfoS2CPacketTest { @BeforeAll public static void setupEnvironment() { - SharedConstants.createGameVersion(); - Bootstrap.initialize(); + SharedConstants.tryDetectVersion(); + Bootstrap.bootStrap(); } @Test void testDeserializeByteBuf() { - RegistryByteBuf buf = RegistryByteBuf.makeFactory(DynamicRegistryManager.EMPTY).apply(PacketByteBufs.create()); + RegistryFriendlyByteBuf buf = RegistryFriendlyByteBuf.decorator(RegistryAccess.EMPTY).apply(PacketByteBufs.create()); buf.writeVarInt(1) .writeVarInt(5) .writeVarInt(2) - .writeOptional(Optional.empty(), PacketByteBuf::writeString); + .writeOptional(Optional.empty(), FriendlyByteBuf::writeUtf); PlayerInfoS2CPacket expected = new PlayerInfoS2CPacket(PlayerRank.NORMAL, PackageRank.MVP_PLUS, MonthlyPackageRank.SUPERSTAR, Optional.empty()); PlayerInfoS2CPacket actual = PlayerInfoS2CPacket.PACKET_CODEC.decode(buf); diff --git a/src/test/java/net/azureaaron/hmapi/network/packet/v2/s2c/PartyInfoS2CPacketTest.java b/src/test/java/net/azureaaron/hmapi/network/packet/v2/s2c/PartyInfoS2CPacketTest.java index a54b02d..f7af4d2 100644 --- a/src/test/java/net/azureaaron/hmapi/network/packet/v2/s2c/PartyInfoS2CPacketTest.java +++ b/src/test/java/net/azureaaron/hmapi/network/packet/v2/s2c/PartyInfoS2CPacketTest.java @@ -10,36 +10,36 @@ import it.unimi.dsi.fastutil.objects.Object2ReferenceOpenHashMap; import net.azureaaron.hmapi.data.party.PartyRole; import net.fabricmc.fabric.api.networking.v1.PacketByteBufs; -import net.minecraft.Bootstrap; +import net.minecraft.server.Bootstrap; import net.minecraft.SharedConstants; -import net.minecraft.network.RegistryByteBuf; -import net.minecraft.network.codec.PacketCodecs; -import net.minecraft.registry.DynamicRegistryManager; -import net.minecraft.util.Util; -import net.minecraft.util.Uuids; -import net.minecraft.util.math.random.Xoroshiro128PlusPlusRandom; +import net.minecraft.network.RegistryFriendlyByteBuf; +import net.minecraft.network.codec.ByteBufCodecs; +import net.minecraft.core.RegistryAccess; +import net.minecraft.Util; +import net.minecraft.core.UUIDUtil; +import net.minecraft.world.level.levelgen.XoroshiroRandomSource; public class PartyInfoS2CPacketTest { @BeforeAll public static void setupEnvironment() { - SharedConstants.createGameVersion(); - Bootstrap.initialize(); + SharedConstants.tryDetectVersion(); + Bootstrap.bootStrap(); } @Test void testDeserializeByteBuf() { - RegistryByteBuf buf = RegistryByteBuf.makeFactory(DynamicRegistryManager.EMPTY).apply(PacketByteBufs.create()); - Xoroshiro128PlusPlusRandom rand = new Xoroshiro128PlusPlusRandom(0x88888888L); + RegistryFriendlyByteBuf buf = RegistryFriendlyByteBuf.decorator(RegistryAccess.EMPTY).apply(PacketByteBufs.create()); + XoroshiroRandomSource rand = new XoroshiroRandomSource(0x88888888L); Map members = Util.make(new Object2ReferenceOpenHashMap<>(), map -> { for (int i = 0; i < 8; i++) { - map.put(UUID.randomUUID(), PartyRole.values()[Math.clamp(rand.nextBetween(0, 2), 0, 2)]); + map.put(UUID.randomUUID(), PartyRole.values()[Math.clamp(rand.nextIntBetweenInclusive(0, 2), 0, 2)]); } }); buf.writeBoolean(true); - buf.writeMap(members, Uuids.PACKET_CODEC, PacketCodecs.indexed(i -> PartyRole.values()[i], PartyRole::ordinal)); + buf.writeMap(members, UUIDUtil.STREAM_CODEC, ByteBufCodecs.idMapper(i -> PartyRole.values()[i], PartyRole::ordinal)); PartyInfoS2CPacket expected = new PartyInfoS2CPacket(true, members); PartyInfoS2CPacket actual = PartyInfoS2CPacket.PACKET_CODEC.decode(buf); From 341ad27172de8570c8ce4bb088c0e6b5bff072a0 Mon Sep 17 00:00:00 2001 From: alex <8379108+Alex33856@users.noreply.github.com> Date: Fri, 23 Jan 2026 14:26:51 -0500 Subject: [PATCH 04/11] Update build.gradle --- build.gradle | 2 +- gradle.properties | 1 - 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/build.gradle b/build.gradle index f76e5c1..634d9f0 100644 --- a/build.gradle +++ b/build.gradle @@ -21,7 +21,7 @@ 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" + mappings loom.officialMojangMappings() modImplementation "net.fabricmc:fabric-loader:${project.loader_version}" // Fabric API. This is technically optional, but you probably want it anyway. diff --git a/gradle.properties b/gradle.properties index ab0d79a..872e214 100644 --- a/gradle.properties +++ b/gradle.properties @@ -5,7 +5,6 @@ org.gradle.parallel=true # Fabric Properties # check these on https://fabricmc.net/develop minecraft_version=1.21.2 -yarn_mappings=1.21.2+build.1 loader_version=0.16.7 # Mod Properties From 62849be5dc0490040bb112fd944b6e6b21826b9d Mon Sep 17 00:00:00 2001 From: alex <8379108+Alex33856@users.noreply.github.com> Date: Fri, 23 Jan 2026 14:33:29 -0500 Subject: [PATCH 05/11] Update to 1.21.11 --- gradle.properties | 6 +++--- src/main/java/net/azureaaron/hmapi/HMApi.java | 4 ++-- .../azureaaron/hmapi/network/HijackedCustomPayload.java | 4 ++-- .../hmapi/network/HypixelCustomPayloadCodecs.java | 2 +- .../net/azureaaron/hmapi/network/HypixelNetworking.java | 6 +++--- .../azureaaron/hmapi/network/HypixelNetworkingImpl.java | 4 ++-- .../azureaaron/hmapi/network/packet/HypixelPacket.java | 6 +++--- .../hmapi/network/packet/c2s/PartyInfoC2SPacket.java | 4 ++-- .../hmapi/network/packet/c2s/PlayerInfoC2SPacket.java | 4 ++-- .../hmapi/network/packet/c2s/RegisterC2SPacket.java | 8 ++++---- .../hmapi/network/packet/s2c/HelloS2CPacket.java | 4 ++-- .../hmapi/network/packet/s2c/HypixelS2CPacket.java | 4 ++-- .../network/packet/v1/s2c/LocationUpdateS2CPacket.java | 4 ++-- .../hmapi/network/packet/v1/s2c/PlayerInfoS2CPacket.java | 4 ++-- .../hmapi/network/packet/v2/s2c/PartyInfoS2CPacket.java | 4 ++-- src/test/java/net/azureaaron/hmapi/Example.java | 2 +- .../hmapi/network/packet/c2s/RegisterC2SPacketTest.java | 8 ++++---- .../network/packet/v1/s2c/DispatchedCodecPacketTest.java | 2 +- .../network/packet/v2/s2c/PartyInfoS2CPacketTest.java | 2 +- 19 files changed, 41 insertions(+), 41 deletions(-) diff --git a/gradle.properties b/gradle.properties index 872e214..cb738ac 100644 --- a/gradle.properties +++ b/gradle.properties @@ -4,8 +4,8 @@ org.gradle.parallel=true # Fabric Properties # check these on https://fabricmc.net/develop -minecraft_version=1.21.2 -loader_version=0.16.7 +minecraft_version=1.21.11 +loader_version=0.18.4 # Mod Properties mod_version=1.0.1 @@ -13,4 +13,4 @@ maven_group=net.azureaaron.hmapi archives_base_name=hm-api # Dependencies -fabric_api_version=0.106.0+1.21.2 +fabric_api_version=0.141.1+1.21.11 diff --git a/src/main/java/net/azureaaron/hmapi/HMApi.java b/src/main/java/net/azureaaron/hmapi/HMApi.java index 82aebf5..a35a14f 100644 --- a/src/main/java/net/azureaaron/hmapi/HMApi.java +++ b/src/main/java/net/azureaaron/hmapi/HMApi.java @@ -16,7 +16,7 @@ import net.fabricmc.fabric.api.client.command.v2.ClientCommandRegistrationCallback; import net.fabricmc.fabric.api.client.command.v2.FabricClientCommandSource; import net.fabricmc.loader.api.FabricLoader; -import net.minecraft.Util; +import net.minecraft.util.Util; import net.minecraft.client.Minecraft; import net.minecraft.client.player.LocalPlayer; import net.minecraft.commands.CommandBuildContext; @@ -86,4 +86,4 @@ private static void logPacket(HypixelS2CPacket packet) { player.displayClientMessage(Component.nullToEmpty(packet.toString()), false); } } -} \ No newline at end of file +} diff --git a/src/main/java/net/azureaaron/hmapi/network/HijackedCustomPayload.java b/src/main/java/net/azureaaron/hmapi/network/HijackedCustomPayload.java index 2946b23..19e1f3c 100644 --- a/src/main/java/net/azureaaron/hmapi/network/HijackedCustomPayload.java +++ b/src/main/java/net/azureaaron/hmapi/network/HijackedCustomPayload.java @@ -1,12 +1,12 @@ package net.azureaaron.hmapi.network; import net.minecraft.network.protocol.common.custom.CustomPacketPayload; -import net.minecraft.resources.ResourceLocation; +import net.minecraft.resources.Identifier; import org.jetbrains.annotations.ApiStatus; @ApiStatus.Internal public record HijackedCustomPayload(CustomPacketPayload original, CustomPacketPayload hijacked) implements CustomPacketPayload { - private static final CustomPacketPayload.Type ID = new CustomPacketPayload.Type(ResourceLocation.fromNamespaceAndPath("hmapi", "hijacked")); + private static final CustomPacketPayload.Type ID = new CustomPacketPayload.Type(Identifier.fromNamespaceAndPath("hmapi", "hijacked")); @Override public Type type() { diff --git a/src/main/java/net/azureaaron/hmapi/network/HypixelCustomPayloadCodecs.java b/src/main/java/net/azureaaron/hmapi/network/HypixelCustomPayloadCodecs.java index ee724e3..f3a0690 100644 --- a/src/main/java/net/azureaaron/hmapi/network/HypixelCustomPayloadCodecs.java +++ b/src/main/java/net/azureaaron/hmapi/network/HypixelCustomPayloadCodecs.java @@ -15,7 +15,7 @@ import net.azureaaron.hmapi.network.packet.v1.s2c.PlayerInfoS2CPacket; import net.azureaaron.hmapi.network.packet.v2.s2c.PartyInfoS2CPacket; import net.azureaaron.hmapi.utils.PacketCodecUtils; -import net.minecraft.Util; +import net.minecraft.util.Util; import net.minecraft.network.FriendlyByteBuf; import net.minecraft.network.codec.StreamCodec; import net.minecraft.network.protocol.PacketFlow; diff --git a/src/main/java/net/azureaaron/hmapi/network/HypixelNetworking.java b/src/main/java/net/azureaaron/hmapi/network/HypixelNetworking.java index 25eeaa2..41104e6 100644 --- a/src/main/java/net/azureaaron/hmapi/network/HypixelNetworking.java +++ b/src/main/java/net/azureaaron/hmapi/network/HypixelNetworking.java @@ -15,9 +15,9 @@ import net.azureaaron.hmapi.network.packet.v1.s2c.LocationUpdateS2CPacket; import net.azureaaron.hmapi.utils.PacketSendResult; import net.azureaaron.hmapi.utils.Utils; -import net.minecraft.Util; +import net.minecraft.util.Util; import net.minecraft.network.protocol.common.custom.CustomPacketPayload; -import net.minecraft.resources.ResourceLocation; +import net.minecraft.resources.Identifier; /** * Public interface for interacting with the networking component (sending packets) of the Mod API. @@ -90,7 +90,7 @@ public static void registerToEvents(Object2IntMap packetsToRegisterFor = REGISTERED_EVENTS.object2IntEntrySet().stream() + Object2IntMap packetsToRegisterFor = REGISTERED_EVENTS.object2IntEntrySet().stream() .collect(Collectors.toMap(e -> e.getKey().id(), Object2IntMap.Entry::getIntValue, (a, b) -> a > b ? a : b, Object2IntOpenHashMap::new)); HypixelNetworkingImpl.sendPacket(new RegisterC2SPacket(1, packetsToRegisterFor), true); diff --git a/src/main/java/net/azureaaron/hmapi/network/HypixelNetworkingImpl.java b/src/main/java/net/azureaaron/hmapi/network/HypixelNetworkingImpl.java index 56ce2fb..b481a2a 100644 --- a/src/main/java/net/azureaaron/hmapi/network/HypixelNetworkingImpl.java +++ b/src/main/java/net/azureaaron/hmapi/network/HypixelNetworkingImpl.java @@ -26,7 +26,7 @@ import net.minecraft.client.Minecraft; import net.minecraft.network.protocol.common.ServerboundCustomPayloadPacket; import net.minecraft.network.protocol.common.custom.CustomPacketPayload; -import net.minecraft.resources.ResourceLocation; +import net.minecraft.resources.Identifier; @ApiStatus.Internal public class HypixelNetworkingImpl { @@ -50,7 +50,7 @@ static PacketSendResult sendPacket(T payload, boole //TODO unify this and the logic in the non-impl class as its the same - rename to just sendEventRegistrations? private static void sendInitialEventRegistrations() { if (!HypixelNetworking.REGISTERED_EVENTS.isEmpty()) { - Object2IntMap packetsToRegisterFor = HypixelNetworking.REGISTERED_EVENTS.object2IntEntrySet().stream() + Object2IntMap packetsToRegisterFor = HypixelNetworking.REGISTERED_EVENTS.object2IntEntrySet().stream() .collect(Collectors.toMap(e -> e.getKey().id(), Object2IntMap.Entry::getIntValue, (a, b) -> a > b ? a : b, Object2IntOpenHashMap::new)); sendPacket(new RegisterC2SPacket(1, packetsToRegisterFor), true); diff --git a/src/main/java/net/azureaaron/hmapi/network/packet/HypixelPacket.java b/src/main/java/net/azureaaron/hmapi/network/packet/HypixelPacket.java index b081a5b..4b54feb 100644 --- a/src/main/java/net/azureaaron/hmapi/network/packet/HypixelPacket.java +++ b/src/main/java/net/azureaaron/hmapi/network/packet/HypixelPacket.java @@ -3,16 +3,16 @@ import net.minecraft.network.FriendlyByteBuf; import net.minecraft.network.codec.StreamCodec; import net.minecraft.network.protocol.common.custom.CustomPacketPayload; -import net.minecraft.resources.ResourceLocation; +import net.minecraft.resources.Identifier; import org.jetbrains.annotations.ApiStatus; @ApiStatus.Internal public interface HypixelPacket extends CustomPacketPayload { @ApiStatus.Internal - public record Unknown(ResourceLocation id) implements HypixelPacket { + public record Unknown(Identifier id) implements HypixelPacket { - public static StreamCodec createPacketCodec(ResourceLocation id) { + public static StreamCodec createPacketCodec(Identifier id) { return new StreamCodec<>() { @Override diff --git a/src/main/java/net/azureaaron/hmapi/network/packet/c2s/PartyInfoC2SPacket.java b/src/main/java/net/azureaaron/hmapi/network/packet/c2s/PartyInfoC2SPacket.java index 0116ca3..73f1d3a 100644 --- a/src/main/java/net/azureaaron/hmapi/network/packet/c2s/PartyInfoC2SPacket.java +++ b/src/main/java/net/azureaaron/hmapi/network/packet/c2s/PartyInfoC2SPacket.java @@ -4,10 +4,10 @@ import net.minecraft.network.codec.ByteBufCodecs; import net.minecraft.network.codec.StreamCodec; import net.minecraft.network.protocol.common.custom.CustomPacketPayload; -import net.minecraft.resources.ResourceLocation; +import net.minecraft.resources.Identifier; public record PartyInfoC2SPacket(int version) implements HypixelC2SPacket { - public static final CustomPacketPayload.Type ID = new CustomPacketPayload.Type<>(ResourceLocation.fromNamespaceAndPath("hypixel", "party_info")); + public static final CustomPacketPayload.Type ID = new CustomPacketPayload.Type<>(Identifier.fromNamespaceAndPath("hypixel", "party_info")); public static final StreamCodec PACKET_CODEC = StreamCodec.composite(ByteBufCodecs.VAR_INT, PartyInfoC2SPacket::version, PartyInfoC2SPacket::new); @Override diff --git a/src/main/java/net/azureaaron/hmapi/network/packet/c2s/PlayerInfoC2SPacket.java b/src/main/java/net/azureaaron/hmapi/network/packet/c2s/PlayerInfoC2SPacket.java index c1e4ca9..2e2873d 100644 --- a/src/main/java/net/azureaaron/hmapi/network/packet/c2s/PlayerInfoC2SPacket.java +++ b/src/main/java/net/azureaaron/hmapi/network/packet/c2s/PlayerInfoC2SPacket.java @@ -4,10 +4,10 @@ import net.minecraft.network.codec.ByteBufCodecs; import net.minecraft.network.codec.StreamCodec; import net.minecraft.network.protocol.common.custom.CustomPacketPayload; -import net.minecraft.resources.ResourceLocation; +import net.minecraft.resources.Identifier; public record PlayerInfoC2SPacket(int version) implements HypixelC2SPacket { - public static final CustomPacketPayload.Type ID = new CustomPacketPayload.Type<>(ResourceLocation.fromNamespaceAndPath("hypixel", "player_info")); + public static final CustomPacketPayload.Type ID = new CustomPacketPayload.Type<>(Identifier.fromNamespaceAndPath("hypixel", "player_info")); public static final StreamCodec PACKET_CODEC = StreamCodec.composite(ByteBufCodecs.VAR_INT, PlayerInfoC2SPacket::version, PlayerInfoC2SPacket::new); @Override diff --git a/src/main/java/net/azureaaron/hmapi/network/packet/c2s/RegisterC2SPacket.java b/src/main/java/net/azureaaron/hmapi/network/packet/c2s/RegisterC2SPacket.java index 0c3f318..15a29b9 100644 --- a/src/main/java/net/azureaaron/hmapi/network/packet/c2s/RegisterC2SPacket.java +++ b/src/main/java/net/azureaaron/hmapi/network/packet/c2s/RegisterC2SPacket.java @@ -6,12 +6,12 @@ import net.minecraft.network.codec.ByteBufCodecs; import net.minecraft.network.codec.StreamCodec; import net.minecraft.network.protocol.common.custom.CustomPacketPayload; -import net.minecraft.resources.ResourceLocation; +import net.minecraft.resources.Identifier; -public record RegisterC2SPacket(int version, Object2IntMap eventsToRegister) implements HypixelC2SPacket { - public static final CustomPacketPayload.Type ID = new CustomPacketPayload.Type<>(ResourceLocation.fromNamespaceAndPath("hypixel", "register")); +public record RegisterC2SPacket(int version, Object2IntMap eventsToRegister) implements HypixelC2SPacket { + public static final CustomPacketPayload.Type ID = new CustomPacketPayload.Type<>(Identifier.fromNamespaceAndPath("hypixel", "register")); public static final StreamCodec PACKET_CODEC = StreamCodec.composite(ByteBufCodecs.VAR_INT, RegisterC2SPacket::version, - ByteBufCodecs.map(Object2IntOpenHashMap::new, ResourceLocation.STREAM_CODEC, ByteBufCodecs.VAR_INT, 5), RegisterC2SPacket::eventsToRegister, RegisterC2SPacket::new); + ByteBufCodecs.map(Object2IntOpenHashMap::new, Identifier.STREAM_CODEC, ByteBufCodecs.VAR_INT, 5), RegisterC2SPacket::eventsToRegister, RegisterC2SPacket::new); @Override public Type type() { diff --git a/src/main/java/net/azureaaron/hmapi/network/packet/s2c/HelloS2CPacket.java b/src/main/java/net/azureaaron/hmapi/network/packet/s2c/HelloS2CPacket.java index b7c36e3..1b17e83 100644 --- a/src/main/java/net/azureaaron/hmapi/network/packet/s2c/HelloS2CPacket.java +++ b/src/main/java/net/azureaaron/hmapi/network/packet/s2c/HelloS2CPacket.java @@ -5,7 +5,7 @@ import net.minecraft.network.codec.ByteBufCodecs; import net.minecraft.network.codec.StreamCodec; import net.minecraft.network.protocol.common.custom.CustomPacketPayload; -import net.minecraft.resources.ResourceLocation; +import net.minecraft.resources.Identifier; /** * This packet is sent each time upon logging into Hypixel, currently it only communicates the server's environment. @@ -16,7 +16,7 @@ * @implSpec This record/packet is subject to potentially breaking changes in the future without notice as specified by Hypixel. */ public record HelloS2CPacket(Environment environment) implements HypixelS2CPacket { - public static final CustomPacketPayload.Type ID = new CustomPacketPayload.Type<>(ResourceLocation.fromNamespaceAndPath("hypixel", "hello")); + public static final CustomPacketPayload.Type ID = new CustomPacketPayload.Type<>(Identifier.fromNamespaceAndPath("hypixel", "hello")); public static final StreamCodec PACKET_CODEC = StreamCodec.composite(ByteBufCodecs.idMapper(i -> Environment.values()[i], Environment::ordinal), HelloS2CPacket::environment, HelloS2CPacket::new); @Override diff --git a/src/main/java/net/azureaaron/hmapi/network/packet/s2c/HypixelS2CPacket.java b/src/main/java/net/azureaaron/hmapi/network/packet/s2c/HypixelS2CPacket.java index a2061d5..7210fdc 100644 --- a/src/main/java/net/azureaaron/hmapi/network/packet/s2c/HypixelS2CPacket.java +++ b/src/main/java/net/azureaaron/hmapi/network/packet/s2c/HypixelS2CPacket.java @@ -4,7 +4,7 @@ import net.azureaaron.hmapi.network.packet.HypixelPacket; import net.minecraft.network.protocol.common.custom.CustomPacketPayload; -import net.minecraft.resources.ResourceLocation; +import net.minecraft.resources.Identifier; /** * Used to establish a basic record-compatible inheritance model for each S2C packet. In order to get the original type you @@ -21,7 +21,7 @@ public interface HypixelS2CPacket extends HypixelPacket { @Override public Type type() { //This needs to return something non null that is a packet channel we're registered to - return new CustomPacketPayload.Type(ResourceLocation.fromNamespaceAndPath("hypixel", "location")); + return new CustomPacketPayload.Type(Identifier.fromNamespaceAndPath("hypixel", "location")); } }; } diff --git a/src/main/java/net/azureaaron/hmapi/network/packet/v1/s2c/LocationUpdateS2CPacket.java b/src/main/java/net/azureaaron/hmapi/network/packet/v1/s2c/LocationUpdateS2CPacket.java index 6a66499..599b83d 100644 --- a/src/main/java/net/azureaaron/hmapi/network/packet/v1/s2c/LocationUpdateS2CPacket.java +++ b/src/main/java/net/azureaaron/hmapi/network/packet/v1/s2c/LocationUpdateS2CPacket.java @@ -7,7 +7,7 @@ import net.minecraft.network.codec.ByteBufCodecs; import net.minecraft.network.codec.StreamCodec; import net.minecraft.network.protocol.common.custom.CustomPacketPayload; -import net.minecraft.resources.ResourceLocation; +import net.minecraft.resources.Identifier; /** * When subscribed to this event packet it's sent every time the player swaps servers and it gives information on their new location on Hypixel. @@ -21,7 +21,7 @@ * @see Hypixel Data ServerType varient enum constant names for possible {@link #serverType} values. */ public record LocationUpdateS2CPacket(String serverName, Optional serverType, Optional lobbyName, Optional mode, Optional map) implements HypixelS2CPacket { - public static final CustomPacketPayload.Type ID = new CustomPacketPayload.Type<>(ResourceLocation.fromNamespaceAndPath("hyevent", "location")); + public static final CustomPacketPayload.Type ID = new CustomPacketPayload.Type<>(Identifier.fromNamespaceAndPath("hyevent", "location")); public static final StreamCodec PACKET_CODEC = StreamCodec.composite(ByteBufCodecs.STRING_UTF8, LocationUpdateS2CPacket::serverName, ByteBufCodecs.optional(ByteBufCodecs.STRING_UTF8), LocationUpdateS2CPacket::serverType, ByteBufCodecs.optional(ByteBufCodecs.STRING_UTF8), LocationUpdateS2CPacket::lobbyName, diff --git a/src/main/java/net/azureaaron/hmapi/network/packet/v1/s2c/PlayerInfoS2CPacket.java b/src/main/java/net/azureaaron/hmapi/network/packet/v1/s2c/PlayerInfoS2CPacket.java index 6462b91..7e186a2 100644 --- a/src/main/java/net/azureaaron/hmapi/network/packet/v1/s2c/PlayerInfoS2CPacket.java +++ b/src/main/java/net/azureaaron/hmapi/network/packet/v1/s2c/PlayerInfoS2CPacket.java @@ -10,7 +10,7 @@ import net.minecraft.network.codec.ByteBufCodecs; import net.minecraft.network.codec.StreamCodec; import net.minecraft.network.protocol.common.custom.CustomPacketPayload; -import net.minecraft.resources.ResourceLocation; +import net.minecraft.resources.Identifier; /** * This packet gives information about the player's rank and how its displayed. @@ -21,7 +21,7 @@ * @param prefix the player's rank prefix override (Note: this may contain formatting codes) */ public record PlayerInfoS2CPacket(PlayerRank playerRank, PackageRank packageRank, MonthlyPackageRank monthlyPackageRank, Optional prefix) implements HypixelS2CPacket { - public static final CustomPacketPayload.Type ID = new CustomPacketPayload.Type<>(ResourceLocation.fromNamespaceAndPath("hypixel", "player_info")); + public static final CustomPacketPayload.Type ID = new CustomPacketPayload.Type<>(Identifier.fromNamespaceAndPath("hypixel", "player_info")); public static final StreamCodec PACKET_CODEC = StreamCodec.composite(ByteBufCodecs.idMapper(PlayerRank.BY_ID, PlayerRank::id), PlayerInfoS2CPacket::playerRank, ByteBufCodecs.idMapper(PackageRank.BY_ID, PackageRank::id), PlayerInfoS2CPacket::packageRank, ByteBufCodecs.idMapper(MonthlyPackageRank.BY_ID, MonthlyPackageRank::id), PlayerInfoS2CPacket::monthlyPackageRank, diff --git a/src/main/java/net/azureaaron/hmapi/network/packet/v2/s2c/PartyInfoS2CPacket.java b/src/main/java/net/azureaaron/hmapi/network/packet/v2/s2c/PartyInfoS2CPacket.java index 21d9537..f018311 100644 --- a/src/main/java/net/azureaaron/hmapi/network/packet/v2/s2c/PartyInfoS2CPacket.java +++ b/src/main/java/net/azureaaron/hmapi/network/packet/v2/s2c/PartyInfoS2CPacket.java @@ -16,7 +16,7 @@ import net.minecraft.network.codec.ByteBufCodecs; import net.minecraft.network.codec.StreamCodec; import net.minecraft.network.protocol.common.custom.CustomPacketPayload; -import net.minecraft.resources.ResourceLocation; +import net.minecraft.resources.Identifier; /** * This packet gives information about whether the player is in a party, and if they are the {@link #members} map is populated with each party member and their role. @@ -25,7 +25,7 @@ * @param members a mapping of player {@link UUID}s to {@link PartyRole}s, this field will not be null when {@link #inParty} returns true */ public record PartyInfoS2CPacket(boolean inParty, @Nullable @Unmodifiable Map members) implements HypixelS2CPacket { - public static final CustomPacketPayload.Type ID = new CustomPacketPayload.Type<>(ResourceLocation.fromNamespaceAndPath("hypixel", "party_info")); + public static final CustomPacketPayload.Type ID = new CustomPacketPayload.Type<>(Identifier.fromNamespaceAndPath("hypixel", "party_info")); private static final StreamCodec IN_PARTY_PACKET_CODEC = StreamCodec.composite(ByteBufCodecs.map(Object2ReferenceOpenHashMap::new, UUIDUtil.STREAM_CODEC, ByteBufCodecs.idMapper(i -> PartyRole.values()[i], PartyRole::ordinal)), PartyInfoS2CPacket::members, PartyInfoS2CPacket::new); public static final StreamCodec PACKET_CODEC = PacketCodecUtils.dispatchConditionally(IN_PARTY_PACKET_CODEC, StreamCodec.unit(new PartyInfoS2CPacket(false, null))); diff --git a/src/test/java/net/azureaaron/hmapi/Example.java b/src/test/java/net/azureaaron/hmapi/Example.java index 21233ce..c60c0ba 100644 --- a/src/test/java/net/azureaaron/hmapi/Example.java +++ b/src/test/java/net/azureaaron/hmapi/Example.java @@ -6,7 +6,7 @@ import net.azureaaron.hmapi.network.packet.s2c.ErrorS2CPacket; import net.azureaaron.hmapi.network.packet.s2c.HypixelS2CPacket; import net.azureaaron.hmapi.network.packet.v1.s2c.LocationUpdateS2CPacket; -import net.minecraft.Util; +import net.minecraft.util.Util; public class Example { diff --git a/src/test/java/net/azureaaron/hmapi/network/packet/c2s/RegisterC2SPacketTest.java b/src/test/java/net/azureaaron/hmapi/network/packet/c2s/RegisterC2SPacketTest.java index cf4b14d..38b7cce 100644 --- a/src/test/java/net/azureaaron/hmapi/network/packet/c2s/RegisterC2SPacketTest.java +++ b/src/test/java/net/azureaaron/hmapi/network/packet/c2s/RegisterC2SPacketTest.java @@ -13,8 +13,8 @@ import net.minecraft.network.RegistryFriendlyByteBuf; import net.minecraft.network.codec.ByteBufCodecs; import net.minecraft.core.RegistryAccess; -import net.minecraft.resources.ResourceLocation; -import net.minecraft.Util; +import net.minecraft.resources.Identifier; +import net.minecraft.util.Util; public class RegisterC2SPacketTest { @@ -29,11 +29,11 @@ void testSerializeByteBuf() { RegistryFriendlyByteBuf expected = RegistryFriendlyByteBuf.decorator(RegistryAccess.EMPTY).apply(PacketByteBufs.create()); RegistryFriendlyByteBuf actual = RegistryFriendlyByteBuf.decorator(RegistryAccess.EMPTY).apply(PacketByteBufs.create()); - Object2IntMap wantedPackets = Util.make(new Object2IntOpenHashMap<>(), map -> map.put(LocationUpdateS2CPacket.ID.id(), 1)); + Object2IntMap wantedPackets = Util.make(new Object2IntOpenHashMap<>(), map -> map.put(LocationUpdateS2CPacket.ID.id(), 1)); expected .writeVarInt(1) - .writeMap(wantedPackets, ResourceLocation.STREAM_CODEC, ByteBufCodecs.VAR_INT); + .writeMap(wantedPackets, Identifier.STREAM_CODEC, ByteBufCodecs.VAR_INT); RegisterC2SPacket.PACKET_CODEC.encode(actual, new RegisterC2SPacket(1, wantedPackets)); diff --git a/src/test/java/net/azureaaron/hmapi/network/packet/v1/s2c/DispatchedCodecPacketTest.java b/src/test/java/net/azureaaron/hmapi/network/packet/v1/s2c/DispatchedCodecPacketTest.java index a6f973e..62e09a9 100644 --- a/src/test/java/net/azureaaron/hmapi/network/packet/v1/s2c/DispatchedCodecPacketTest.java +++ b/src/test/java/net/azureaaron/hmapi/network/packet/v1/s2c/DispatchedCodecPacketTest.java @@ -21,7 +21,7 @@ import net.minecraft.network.RegistryFriendlyByteBuf; import net.minecraft.network.codec.StreamCodec; import net.minecraft.core.RegistryAccess; -import net.minecraft.Util; +import net.minecraft.util.Util; public class DispatchedCodecPacketTest { diff --git a/src/test/java/net/azureaaron/hmapi/network/packet/v2/s2c/PartyInfoS2CPacketTest.java b/src/test/java/net/azureaaron/hmapi/network/packet/v2/s2c/PartyInfoS2CPacketTest.java index f7af4d2..370309e 100644 --- a/src/test/java/net/azureaaron/hmapi/network/packet/v2/s2c/PartyInfoS2CPacketTest.java +++ b/src/test/java/net/azureaaron/hmapi/network/packet/v2/s2c/PartyInfoS2CPacketTest.java @@ -15,7 +15,7 @@ import net.minecraft.network.RegistryFriendlyByteBuf; import net.minecraft.network.codec.ByteBufCodecs; import net.minecraft.core.RegistryAccess; -import net.minecraft.Util; +import net.minecraft.util.Util; import net.minecraft.core.UUIDUtil; import net.minecraft.world.level.levelgen.XoroshiroRandomSource; From faf5ae52a46248fc0150398da95421d61e5723f6 Mon Sep 17 00:00:00 2001 From: alex <8379108+Alex33856@users.noreply.github.com> Date: Fri, 23 Jan 2026 14:38:12 -0500 Subject: [PATCH 06/11] Update to 26.1 + Fabric API renames --- build.gradle | 13 ++++++------- gradle.properties | 4 ++-- src/main/java/net/azureaaron/hmapi/HMApi.java | 14 +++++++------- .../network/packet/c2s/RegisterC2SPacketTest.java | 6 +++--- .../network/packet/s2c/ErrorS2CPacketTest.java | 4 ++-- .../network/packet/s2c/HelloS2CPacketTest.java | 4 ++-- .../packet/v1/s2c/DispatchedCodecPacketTest.java | 8 ++++---- .../packet/v1/s2c/LocationUpdateS2CPacketTest.java | 4 ++-- .../packet/v1/s2c/PlayerInfoS2CPacketTest.java | 4 ++-- .../packet/v2/s2c/PartyInfoS2CPacketTest.java | 4 ++-- 10 files changed, 32 insertions(+), 33 deletions(-) diff --git a/build.gradle b/build.gradle index 634d9f0..edff9f7 100644 --- a/build.gradle +++ b/build.gradle @@ -1,5 +1,5 @@ plugins { - id 'net.fabricmc.fabric-loom-remap' version '1.15-SNAPSHOT' + id 'net.fabricmc.fabric-loom' version '1.15-SNAPSHOT' id 'maven-publish' } @@ -21,11 +21,10 @@ repositories { dependencies { // To change the versions see the gradle.properties file minecraft "com.mojang:minecraft:${project.minecraft_version}" - mappings loom.officialMojangMappings() - modImplementation "net.fabricmc:fabric-loader:${project.loader_version}" + implementation "net.fabricmc:fabric-loader:${project.loader_version}" // Fabric API. This is technically optional, but you probably want it anyway. - modImplementation "net.fabricmc.fabric-api:fabric-api:${project.fabric_api_version}" + implementation "net.fabricmc.fabric-api:fabric-api:${project.fabric_api_version}" testImplementation "net.fabricmc:fabric-loader-junit:${project.loader_version}" } @@ -45,7 +44,7 @@ processResources { } tasks.withType(JavaCompile).configureEach { - it.options.release = 21 + it.options.release = 25 } java { @@ -54,8 +53,8 @@ java { // If you remove this line, sources will not be generated. withSourcesJar() - sourceCompatibility = JavaVersion.VERSION_21 - targetCompatibility = JavaVersion.VERSION_21 + sourceCompatibility = JavaVersion.VERSION_25 + targetCompatibility = JavaVersion.VERSION_25 } test { diff --git a/gradle.properties b/gradle.properties index cb738ac..7807106 100644 --- a/gradle.properties +++ b/gradle.properties @@ -4,7 +4,7 @@ org.gradle.parallel=true # Fabric Properties # check these on https://fabricmc.net/develop -minecraft_version=1.21.11 +minecraft_version=26.1-snapshot-4 loader_version=0.18.4 # Mod Properties @@ -13,4 +13,4 @@ maven_group=net.azureaaron.hmapi archives_base_name=hm-api # Dependencies -fabric_api_version=0.141.1+1.21.11 +fabric_api_version=0.142.1+26.1 diff --git a/src/main/java/net/azureaaron/hmapi/HMApi.java b/src/main/java/net/azureaaron/hmapi/HMApi.java index a35a14f..1edf591 100644 --- a/src/main/java/net/azureaaron/hmapi/HMApi.java +++ b/src/main/java/net/azureaaron/hmapi/HMApi.java @@ -12,7 +12,7 @@ import net.azureaaron.hmapi.network.packet.s2c.HypixelS2CPacket; import net.azureaaron.hmapi.network.packet.v1.s2c.LocationUpdateS2CPacket; import net.fabricmc.api.ClientModInitializer; -import net.fabricmc.fabric.api.client.command.v2.ClientCommandManager; +import net.fabricmc.fabric.api.client.command.v2.ClientCommands; import net.fabricmc.fabric.api.client.command.v2.ClientCommandRegistrationCallback; import net.fabricmc.fabric.api.client.command.v2.FabricClientCommandSource; import net.fabricmc.loader.api.FabricLoader; @@ -46,21 +46,21 @@ public void onInitializeClient() { } private static void registerCommands(CommandDispatcher dispatcher, CommandBuildContext registryAccess) { - dispatcher.register(ClientCommandManager.literal("hmapi") - .then(ClientCommandManager.literal("sendPacket") - .then(ClientCommandManager.literal("partyInfo2") + dispatcher.register(ClientCommands.literal("hmapi") + .then(ClientCommands.literal("sendPacket") + .then(ClientCommands.literal("partyInfo2") .executes(context -> { HypixelNetworking.sendPartyInfoC2SPacket(2); return Command.SINGLE_SUCCESS; })) - .then(ClientCommandManager.literal("playerInfo") + .then(ClientCommands.literal("playerInfo") .executes(context -> { HypixelNetworking.sendPlayerInfoC2SPacket(1); return Command.SINGLE_SUCCESS; })) - .then(ClientCommandManager.literal("register4LocationUpdates") + .then(ClientCommands.literal("register4LocationUpdates") .executes(context -> { HypixelNetworking.registerToEvents(Util.make(new Object2IntOpenHashMap<>(), map -> { map.put(LocationUpdateS2CPacket.ID, 1); @@ -69,7 +69,7 @@ private static void registerCommands(CommandDispatcher { sendPacketsInChat = true; diff --git a/src/test/java/net/azureaaron/hmapi/network/packet/c2s/RegisterC2SPacketTest.java b/src/test/java/net/azureaaron/hmapi/network/packet/c2s/RegisterC2SPacketTest.java index 38b7cce..2970667 100644 --- a/src/test/java/net/azureaaron/hmapi/network/packet/c2s/RegisterC2SPacketTest.java +++ b/src/test/java/net/azureaaron/hmapi/network/packet/c2s/RegisterC2SPacketTest.java @@ -7,7 +7,7 @@ import it.unimi.dsi.fastutil.objects.Object2IntMap; import it.unimi.dsi.fastutil.objects.Object2IntOpenHashMap; import net.azureaaron.hmapi.network.packet.v1.s2c.LocationUpdateS2CPacket; -import net.fabricmc.fabric.api.networking.v1.PacketByteBufs; +import net.fabricmc.fabric.api.networking.v1.FriendlyByteBufs; import net.minecraft.server.Bootstrap; import net.minecraft.SharedConstants; import net.minecraft.network.RegistryFriendlyByteBuf; @@ -26,8 +26,8 @@ public static void setupEnvironment() { @Test void testSerializeByteBuf() { - RegistryFriendlyByteBuf expected = RegistryFriendlyByteBuf.decorator(RegistryAccess.EMPTY).apply(PacketByteBufs.create()); - RegistryFriendlyByteBuf actual = RegistryFriendlyByteBuf.decorator(RegistryAccess.EMPTY).apply(PacketByteBufs.create()); + RegistryFriendlyByteBuf expected = RegistryFriendlyByteBuf.decorator(RegistryAccess.EMPTY).apply(FriendlyByteBufs.create()); + RegistryFriendlyByteBuf actual = RegistryFriendlyByteBuf.decorator(RegistryAccess.EMPTY).apply(FriendlyByteBufs.create()); Object2IntMap wantedPackets = Util.make(new Object2IntOpenHashMap<>(), map -> map.put(LocationUpdateS2CPacket.ID.id(), 1)); diff --git a/src/test/java/net/azureaaron/hmapi/network/packet/s2c/ErrorS2CPacketTest.java b/src/test/java/net/azureaaron/hmapi/network/packet/s2c/ErrorS2CPacketTest.java index 6113bf3..1b6ac0f 100644 --- a/src/test/java/net/azureaaron/hmapi/network/packet/s2c/ErrorS2CPacketTest.java +++ b/src/test/java/net/azureaaron/hmapi/network/packet/s2c/ErrorS2CPacketTest.java @@ -5,7 +5,7 @@ import org.junit.jupiter.api.Test; import net.azureaaron.hmapi.data.error.ModApiErrorReason; -import net.fabricmc.fabric.api.networking.v1.PacketByteBufs; +import net.fabricmc.fabric.api.networking.v1.FriendlyByteBufs; import net.minecraft.server.Bootstrap; import net.minecraft.SharedConstants; import net.minecraft.network.RegistryFriendlyByteBuf; @@ -21,7 +21,7 @@ public static void setupEnvironment() { @Test void testDeserializeByteBuf() { - RegistryFriendlyByteBuf buf = RegistryFriendlyByteBuf.decorator(RegistryAccess.EMPTY).apply(PacketByteBufs.create()); + RegistryFriendlyByteBuf buf = RegistryFriendlyByteBuf.decorator(RegistryAccess.EMPTY).apply(FriendlyByteBufs.create()); buf.writeVarInt(2); diff --git a/src/test/java/net/azureaaron/hmapi/network/packet/s2c/HelloS2CPacketTest.java b/src/test/java/net/azureaaron/hmapi/network/packet/s2c/HelloS2CPacketTest.java index ee047dc..7bf567e 100644 --- a/src/test/java/net/azureaaron/hmapi/network/packet/s2c/HelloS2CPacketTest.java +++ b/src/test/java/net/azureaaron/hmapi/network/packet/s2c/HelloS2CPacketTest.java @@ -5,7 +5,7 @@ import org.junit.jupiter.api.Test; import net.azureaaron.hmapi.data.server.Environment; -import net.fabricmc.fabric.api.networking.v1.PacketByteBufs; +import net.fabricmc.fabric.api.networking.v1.FriendlyByteBufs; import net.minecraft.server.Bootstrap; import net.minecraft.SharedConstants; import net.minecraft.network.RegistryFriendlyByteBuf; @@ -21,7 +21,7 @@ public static void setupEnvironment() { @Test void testDeserializeByteBuf() { - RegistryFriendlyByteBuf buf = RegistryFriendlyByteBuf.decorator(RegistryAccess.EMPTY).apply(PacketByteBufs.create()); + RegistryFriendlyByteBuf buf = RegistryFriendlyByteBuf.decorator(RegistryAccess.EMPTY).apply(FriendlyByteBufs.create()); buf.writeVarInt(0); diff --git a/src/test/java/net/azureaaron/hmapi/network/packet/v1/s2c/DispatchedCodecPacketTest.java b/src/test/java/net/azureaaron/hmapi/network/packet/v1/s2c/DispatchedCodecPacketTest.java index 62e09a9..26d1d49 100644 --- a/src/test/java/net/azureaaron/hmapi/network/packet/v1/s2c/DispatchedCodecPacketTest.java +++ b/src/test/java/net/azureaaron/hmapi/network/packet/v1/s2c/DispatchedCodecPacketTest.java @@ -14,7 +14,7 @@ import net.azureaaron.hmapi.network.packet.s2c.ErrorS2CPacket; import net.azureaaron.hmapi.network.packet.s2c.HypixelS2CPacket; import net.azureaaron.hmapi.utils.PacketCodecUtils; -import net.fabricmc.fabric.api.networking.v1.PacketByteBufs; +import net.fabricmc.fabric.api.networking.v1.FriendlyByteBufs; import net.minecraft.server.Bootstrap; import net.minecraft.SharedConstants; import net.minecraft.network.FriendlyByteBuf; @@ -33,7 +33,7 @@ public static void setupEnvironment() { @Test void testNormalPacket() { - RegistryFriendlyByteBuf buf = RegistryFriendlyByteBuf.decorator(RegistryAccess.EMPTY).apply(PacketByteBufs.create()); + RegistryFriendlyByteBuf buf = RegistryFriendlyByteBuf.decorator(RegistryAccess.EMPTY).apply(FriendlyByteBufs.create()); buf.writeBoolean(true) .writeVarInt(1) @@ -53,7 +53,7 @@ void testNormalPacket() { @Test void testUnknownVersionPacket() { - RegistryFriendlyByteBuf buf = RegistryFriendlyByteBuf.decorator(RegistryAccess.EMPTY).apply(PacketByteBufs.create()); + RegistryFriendlyByteBuf buf = RegistryFriendlyByteBuf.decorator(RegistryAccess.EMPTY).apply(FriendlyByteBufs.create()); buf.writeBoolean(true) .writeVarInt(256); @@ -65,7 +65,7 @@ void testUnknownVersionPacket() { @Test void testErrorPacket() { - RegistryFriendlyByteBuf buf = RegistryFriendlyByteBuf.decorator(RegistryAccess.EMPTY).apply(PacketByteBufs.create()); + RegistryFriendlyByteBuf buf = RegistryFriendlyByteBuf.decorator(RegistryAccess.EMPTY).apply(FriendlyByteBufs.create()); buf.writeBoolean(false) .writeVarInt(2); diff --git a/src/test/java/net/azureaaron/hmapi/network/packet/v1/s2c/LocationUpdateS2CPacketTest.java b/src/test/java/net/azureaaron/hmapi/network/packet/v1/s2c/LocationUpdateS2CPacketTest.java index 4de0235..79a661f 100644 --- a/src/test/java/net/azureaaron/hmapi/network/packet/v1/s2c/LocationUpdateS2CPacketTest.java +++ b/src/test/java/net/azureaaron/hmapi/network/packet/v1/s2c/LocationUpdateS2CPacketTest.java @@ -6,7 +6,7 @@ import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.Test; -import net.fabricmc.fabric.api.networking.v1.PacketByteBufs; +import net.fabricmc.fabric.api.networking.v1.FriendlyByteBufs; import net.minecraft.server.Bootstrap; import net.minecraft.SharedConstants; import net.minecraft.network.FriendlyByteBuf; @@ -23,7 +23,7 @@ public static void setupEnvironment() { @Test void testDeserializeByteBuf() { - RegistryFriendlyByteBuf buf = RegistryFriendlyByteBuf.decorator(RegistryAccess.EMPTY).apply(PacketByteBufs.create()); + RegistryFriendlyByteBuf buf = RegistryFriendlyByteBuf.decorator(RegistryAccess.EMPTY).apply(FriendlyByteBufs.create()); buf.writeUtf("mini88H") .writeOptional(Optional.of("SKYBLOCK"), FriendlyByteBuf::writeUtf); diff --git a/src/test/java/net/azureaaron/hmapi/network/packet/v1/s2c/PlayerInfoS2CPacketTest.java b/src/test/java/net/azureaaron/hmapi/network/packet/v1/s2c/PlayerInfoS2CPacketTest.java index 91c982b..bb8d432 100644 --- a/src/test/java/net/azureaaron/hmapi/network/packet/v1/s2c/PlayerInfoS2CPacketTest.java +++ b/src/test/java/net/azureaaron/hmapi/network/packet/v1/s2c/PlayerInfoS2CPacketTest.java @@ -9,7 +9,7 @@ import net.azureaaron.hmapi.data.rank.MonthlyPackageRank; import net.azureaaron.hmapi.data.rank.PackageRank; import net.azureaaron.hmapi.data.rank.PlayerRank; -import net.fabricmc.fabric.api.networking.v1.PacketByteBufs; +import net.fabricmc.fabric.api.networking.v1.FriendlyByteBufs; import net.minecraft.server.Bootstrap; import net.minecraft.SharedConstants; import net.minecraft.network.FriendlyByteBuf; @@ -26,7 +26,7 @@ public static void setupEnvironment() { @Test void testDeserializeByteBuf() { - RegistryFriendlyByteBuf buf = RegistryFriendlyByteBuf.decorator(RegistryAccess.EMPTY).apply(PacketByteBufs.create()); + RegistryFriendlyByteBuf buf = RegistryFriendlyByteBuf.decorator(RegistryAccess.EMPTY).apply(FriendlyByteBufs.create()); buf.writeVarInt(1) .writeVarInt(5) diff --git a/src/test/java/net/azureaaron/hmapi/network/packet/v2/s2c/PartyInfoS2CPacketTest.java b/src/test/java/net/azureaaron/hmapi/network/packet/v2/s2c/PartyInfoS2CPacketTest.java index 370309e..3d3df41 100644 --- a/src/test/java/net/azureaaron/hmapi/network/packet/v2/s2c/PartyInfoS2CPacketTest.java +++ b/src/test/java/net/azureaaron/hmapi/network/packet/v2/s2c/PartyInfoS2CPacketTest.java @@ -9,7 +9,7 @@ import it.unimi.dsi.fastutil.objects.Object2ReferenceOpenHashMap; import net.azureaaron.hmapi.data.party.PartyRole; -import net.fabricmc.fabric.api.networking.v1.PacketByteBufs; +import net.fabricmc.fabric.api.networking.v1.FriendlyByteBufs; import net.minecraft.server.Bootstrap; import net.minecraft.SharedConstants; import net.minecraft.network.RegistryFriendlyByteBuf; @@ -29,7 +29,7 @@ public static void setupEnvironment() { @Test void testDeserializeByteBuf() { - RegistryFriendlyByteBuf buf = RegistryFriendlyByteBuf.decorator(RegistryAccess.EMPTY).apply(PacketByteBufs.create()); + RegistryFriendlyByteBuf buf = RegistryFriendlyByteBuf.decorator(RegistryAccess.EMPTY).apply(FriendlyByteBufs.create()); XoroshiroRandomSource rand = new XoroshiroRandomSource(0x88888888L); Map members = Util.make(new Object2ReferenceOpenHashMap<>(), map -> { From 9a6fbf0566dc844724b23367e4235d72c81dc6b2 Mon Sep 17 00:00:00 2001 From: alex <8379108+Alex33856@users.noreply.github.com> Date: Fri, 23 Jan 2026 14:38:39 -0500 Subject: [PATCH 07/11] Bump FMJ dependencies --- src/main/resources/fabric.mod.json | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/main/resources/fabric.mod.json b/src/main/resources/fabric.mod.json index f8fe69f..598615e 100644 --- a/src/main/resources/fabric.mod.json +++ b/src/main/resources/fabric.mod.json @@ -26,10 +26,10 @@ "hm-api.mixins.json" ], "depends": { - "fabricloader": ">=0.16.7", - "minecraft": "~1.21.2", - "java": ">=21", - "fabric-api": ">=0.106.0+1.21.2" + "fabricloader": ">=0.18.4", + "minecraft": ">1.21.11", + "java": ">=25", + "fabric-api": ">=0.142.1+26.1" }, "custom": { "modmenu": { From f8fee9556ea54a68f5bf52d25ffc2ae42f8ee39a Mon Sep 17 00:00:00 2001 From: alex <8379108+Alex33856@users.noreply.github.com> Date: Thu, 5 Mar 2026 14:40:35 -0500 Subject: [PATCH 08/11] snapshot 11 + fabric api renames --- gradle.properties | 4 ++-- src/main/java/net/azureaaron/hmapi/HMApi.java | 16 ++++++++-------- .../packet/c2s/RegisterC2SPacketTest.java | 6 +++--- .../network/packet/s2c/ErrorS2CPacketTest.java | 4 ++-- .../network/packet/s2c/HelloS2CPacketTest.java | 4 ++-- .../packet/v1/s2c/DispatchedCodecPacketTest.java | 2 +- .../v1/s2c/LocationUpdateS2CPacketTest.java | 4 ++-- .../packet/v1/s2c/PlayerInfoS2CPacketTest.java | 4 ++-- .../packet/v2/s2c/PartyInfoS2CPacketTest.java | 4 ++-- 9 files changed, 24 insertions(+), 24 deletions(-) diff --git a/gradle.properties b/gradle.properties index 50248c2..f2b3a89 100644 --- a/gradle.properties +++ b/gradle.properties @@ -5,7 +5,7 @@ org.gradle.configuration-cache=false # Fabric Properties # check these on https://fabricmc.net/develop -minecraft_version=26.1-snapshot-4 +minecraft_version=26.1-snapshot-11 loader_version=0.18.4 # Mod Properties @@ -14,4 +14,4 @@ maven_group=net.azureaaron.hmapi archives_base_name=hm-api # Dependencies -fabric_api_version=0.142.1+26.1 +fabric_api_version=0.143.11+26.1 diff --git a/src/main/java/net/azureaaron/hmapi/HMApi.java b/src/main/java/net/azureaaron/hmapi/HMApi.java index 8827aff..5f1e7b9 100644 --- a/src/main/java/net/azureaaron/hmapi/HMApi.java +++ b/src/main/java/net/azureaaron/hmapi/HMApi.java @@ -12,7 +12,7 @@ import net.azureaaron.hmapi.network.packet.s2c.HypixelS2CPacket; import net.azureaaron.hmapi.network.packet.v1.s2c.LocationUpdateS2CPacket; import net.fabricmc.api.ClientModInitializer; -import net.fabricmc.fabric.api.client.command.v2.ClientCommandManager; +import net.fabricmc.fabric.api.client.command.v2.ClientCommands; import net.fabricmc.fabric.api.client.command.v2.ClientCommandRegistrationCallback; import net.fabricmc.fabric.api.client.command.v2.FabricClientCommandSource; import net.fabricmc.loader.api.FabricLoader; @@ -46,21 +46,21 @@ public void onInitializeClient() { } private static void registerCommands(CommandDispatcher dispatcher, CommandBuildContext registryAccess) { - dispatcher.register(ClientCommandManager.literal("hmapi") - .then(ClientCommandManager.literal("sendPacket") - .then(ClientCommandManager.literal("partyInfo2") + dispatcher.register(ClientCommands.literal("hmapi") + .then(ClientCommands.literal("sendPacket") + .then(ClientCommands.literal("partyInfo2") .executes(context -> { HypixelNetworking.sendPartyInfoC2SPacket(2); return Command.SINGLE_SUCCESS; })) - .then(ClientCommandManager.literal("playerInfo") + .then(ClientCommands.literal("playerInfo") .executes(context -> { HypixelNetworking.sendPlayerInfoC2SPacket(1); return Command.SINGLE_SUCCESS; })) - .then(ClientCommandManager.literal("register4LocationUpdates") + .then(ClientCommands.literal("register4LocationUpdates") .executes(context -> { HypixelNetworking.registerToEvents(Util.make(new Object2IntOpenHashMap<>(), map -> { map.put(LocationUpdateS2CPacket.ID, 1); @@ -69,7 +69,7 @@ private static void registerCommands(CommandDispatcher { sendPacketsInChat = true; @@ -83,7 +83,7 @@ private static void logPacket(HypixelS2CPacket packet) { LOGGER.info("[HM API] Received Packet: {}", packet); if (player != null && sendPacketsInChat) { - player.displayClientMessage(Component.nullToEmpty(packet.toString()), false); + player.sendSystemMessage(Component.nullToEmpty(packet.toString())); } } } \ No newline at end of file diff --git a/src/test/java/net/azureaaron/hmapi/network/packet/c2s/RegisterC2SPacketTest.java b/src/test/java/net/azureaaron/hmapi/network/packet/c2s/RegisterC2SPacketTest.java index 8908172..1c63acc 100644 --- a/src/test/java/net/azureaaron/hmapi/network/packet/c2s/RegisterC2SPacketTest.java +++ b/src/test/java/net/azureaaron/hmapi/network/packet/c2s/RegisterC2SPacketTest.java @@ -7,7 +7,7 @@ import it.unimi.dsi.fastutil.objects.Object2IntMap; import it.unimi.dsi.fastutil.objects.Object2IntOpenHashMap; import net.azureaaron.hmapi.network.packet.v1.s2c.LocationUpdateS2CPacket; -import net.fabricmc.fabric.api.networking.v1.PacketByteBufs; +import net.fabricmc.fabric.api.networking.v1.FriendlyByteBufs; import net.minecraft.SharedConstants; import net.minecraft.core.RegistryAccess; import net.minecraft.network.RegistryFriendlyByteBuf; @@ -26,8 +26,8 @@ public static void setupEnvironment() { @Test void testSerializeByteBuf() { - RegistryFriendlyByteBuf expected = RegistryFriendlyByteBuf.decorator(RegistryAccess.EMPTY).apply(PacketByteBufs.create()); - RegistryFriendlyByteBuf actual = RegistryFriendlyByteBuf.decorator(RegistryAccess.EMPTY).apply(PacketByteBufs.create()); + RegistryFriendlyByteBuf expected = RegistryFriendlyByteBuf.decorator(RegistryAccess.EMPTY).apply(FriendlyByteBufs.create()); + RegistryFriendlyByteBuf actual = RegistryFriendlyByteBuf.decorator(RegistryAccess.EMPTY).apply(FriendlyByteBufs.create()); Object2IntMap wantedPackets = Util.make(new Object2IntOpenHashMap<>(), map -> map.put(LocationUpdateS2CPacket.ID.id(), 1)); diff --git a/src/test/java/net/azureaaron/hmapi/network/packet/s2c/ErrorS2CPacketTest.java b/src/test/java/net/azureaaron/hmapi/network/packet/s2c/ErrorS2CPacketTest.java index da114ac..1a498b4 100644 --- a/src/test/java/net/azureaaron/hmapi/network/packet/s2c/ErrorS2CPacketTest.java +++ b/src/test/java/net/azureaaron/hmapi/network/packet/s2c/ErrorS2CPacketTest.java @@ -5,7 +5,7 @@ import org.junit.jupiter.api.Test; import net.azureaaron.hmapi.data.error.ModApiErrorReason; -import net.fabricmc.fabric.api.networking.v1.PacketByteBufs; +import net.fabricmc.fabric.api.networking.v1.FriendlyByteBufs; import net.minecraft.SharedConstants; import net.minecraft.core.RegistryAccess; import net.minecraft.network.RegistryFriendlyByteBuf; @@ -21,7 +21,7 @@ public static void setupEnvironment() { @Test void testDeserializeByteBuf() { - RegistryFriendlyByteBuf buf = RegistryFriendlyByteBuf.decorator(RegistryAccess.EMPTY).apply(PacketByteBufs.create()); + RegistryFriendlyByteBuf buf = RegistryFriendlyByteBuf.decorator(RegistryAccess.EMPTY).apply(FriendlyByteBufs.create()); buf.writeVarInt(2); diff --git a/src/test/java/net/azureaaron/hmapi/network/packet/s2c/HelloS2CPacketTest.java b/src/test/java/net/azureaaron/hmapi/network/packet/s2c/HelloS2CPacketTest.java index f01636f..b10610d 100644 --- a/src/test/java/net/azureaaron/hmapi/network/packet/s2c/HelloS2CPacketTest.java +++ b/src/test/java/net/azureaaron/hmapi/network/packet/s2c/HelloS2CPacketTest.java @@ -5,7 +5,7 @@ import org.junit.jupiter.api.Test; import net.azureaaron.hmapi.data.server.Environment; -import net.fabricmc.fabric.api.networking.v1.PacketByteBufs; +import net.fabricmc.fabric.api.networking.v1.FriendlyByteBufs; import net.minecraft.SharedConstants; import net.minecraft.core.RegistryAccess; import net.minecraft.network.RegistryFriendlyByteBuf; @@ -21,7 +21,7 @@ public static void setupEnvironment() { @Test void testDeserializeByteBuf() { - RegistryFriendlyByteBuf buf = RegistryFriendlyByteBuf.decorator(RegistryAccess.EMPTY).apply(PacketByteBufs.create()); + RegistryFriendlyByteBuf buf = RegistryFriendlyByteBuf.decorator(RegistryAccess.EMPTY).apply(FriendlyByteBufs.create()); buf.writeVarInt(0); diff --git a/src/test/java/net/azureaaron/hmapi/network/packet/v1/s2c/DispatchedCodecPacketTest.java b/src/test/java/net/azureaaron/hmapi/network/packet/v1/s2c/DispatchedCodecPacketTest.java index 4daef17..372a4b6 100644 --- a/src/test/java/net/azureaaron/hmapi/network/packet/v1/s2c/DispatchedCodecPacketTest.java +++ b/src/test/java/net/azureaaron/hmapi/network/packet/v1/s2c/DispatchedCodecPacketTest.java @@ -14,7 +14,7 @@ import net.azureaaron.hmapi.network.packet.s2c.ErrorS2CPacket; import net.azureaaron.hmapi.network.packet.s2c.HypixelS2CPacket; import net.azureaaron.hmapi.utils.PacketCodecUtils; -import net.fabricmc.fabric.api.networking.v1.PacketByteBufs; +import net.fabricmc.fabric.api.networking.v1.FriendlyByteBufs; import net.minecraft.SharedConstants; import net.minecraft.core.RegistryAccess; import net.minecraft.network.FriendlyByteBuf; diff --git a/src/test/java/net/azureaaron/hmapi/network/packet/v1/s2c/LocationUpdateS2CPacketTest.java b/src/test/java/net/azureaaron/hmapi/network/packet/v1/s2c/LocationUpdateS2CPacketTest.java index da4b00a..f388ba8 100644 --- a/src/test/java/net/azureaaron/hmapi/network/packet/v1/s2c/LocationUpdateS2CPacketTest.java +++ b/src/test/java/net/azureaaron/hmapi/network/packet/v1/s2c/LocationUpdateS2CPacketTest.java @@ -6,7 +6,7 @@ import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.Test; -import net.fabricmc.fabric.api.networking.v1.PacketByteBufs; +import net.fabricmc.fabric.api.networking.v1.FriendlyByteBufs; import net.minecraft.SharedConstants; import net.minecraft.core.RegistryAccess; import net.minecraft.network.FriendlyByteBuf; @@ -23,7 +23,7 @@ public static void setupEnvironment() { @Test void testDeserializeByteBuf() { - RegistryFriendlyByteBuf buf = RegistryFriendlyByteBuf.decorator(RegistryAccess.EMPTY).apply(PacketByteBufs.create()); + RegistryFriendlyByteBuf buf = RegistryFriendlyByteBuf.decorator(RegistryAccess.EMPTY).apply(FriendlyByteBufs.create()); buf.writeUtf("mini88H") .writeOptional(Optional.of("SKYBLOCK"), FriendlyByteBuf::writeUtf); diff --git a/src/test/java/net/azureaaron/hmapi/network/packet/v1/s2c/PlayerInfoS2CPacketTest.java b/src/test/java/net/azureaaron/hmapi/network/packet/v1/s2c/PlayerInfoS2CPacketTest.java index 9d1cf89..825e6e1 100644 --- a/src/test/java/net/azureaaron/hmapi/network/packet/v1/s2c/PlayerInfoS2CPacketTest.java +++ b/src/test/java/net/azureaaron/hmapi/network/packet/v1/s2c/PlayerInfoS2CPacketTest.java @@ -9,7 +9,7 @@ import net.azureaaron.hmapi.data.rank.MonthlyPackageRank; import net.azureaaron.hmapi.data.rank.PackageRank; import net.azureaaron.hmapi.data.rank.PlayerRank; -import net.fabricmc.fabric.api.networking.v1.PacketByteBufs; +import net.fabricmc.fabric.api.networking.v1.FriendlyByteBufs; import net.minecraft.SharedConstants; import net.minecraft.core.RegistryAccess; import net.minecraft.network.FriendlyByteBuf; @@ -26,7 +26,7 @@ public static void setupEnvironment() { @Test void testDeserializeByteBuf() { - RegistryFriendlyByteBuf buf = RegistryFriendlyByteBuf.decorator(RegistryAccess.EMPTY).apply(PacketByteBufs.create()); + RegistryFriendlyByteBuf buf = RegistryFriendlyByteBuf.decorator(RegistryAccess.EMPTY).apply(FriendlyByteBufs.create()); buf.writeVarInt(1) .writeVarInt(5) diff --git a/src/test/java/net/azureaaron/hmapi/network/packet/v2/s2c/PartyInfoS2CPacketTest.java b/src/test/java/net/azureaaron/hmapi/network/packet/v2/s2c/PartyInfoS2CPacketTest.java index 4994973..83950a2 100644 --- a/src/test/java/net/azureaaron/hmapi/network/packet/v2/s2c/PartyInfoS2CPacketTest.java +++ b/src/test/java/net/azureaaron/hmapi/network/packet/v2/s2c/PartyInfoS2CPacketTest.java @@ -9,7 +9,7 @@ import it.unimi.dsi.fastutil.objects.Object2ReferenceOpenHashMap; import net.azureaaron.hmapi.data.party.PartyRole; -import net.fabricmc.fabric.api.networking.v1.PacketByteBufs; +import net.fabricmc.fabric.api.networking.v1.FriendlyByteBufs; import net.minecraft.SharedConstants; import net.minecraft.core.RegistryAccess; import net.minecraft.core.UUIDUtil; @@ -29,7 +29,7 @@ public static void setupEnvironment() { @Test void testDeserializeByteBuf() { - RegistryFriendlyByteBuf buf = RegistryFriendlyByteBuf.decorator(RegistryAccess.EMPTY).apply(PacketByteBufs.create()); + RegistryFriendlyByteBuf buf = RegistryFriendlyByteBuf.decorator(RegistryAccess.EMPTY).apply(FriendlyByteBufs.create()); XoroshiroRandomSource rand = new XoroshiroRandomSource(0x88888888L); Map members = Util.make(new Object2ReferenceOpenHashMap<>(), map -> { From 9e1d43cbc9f2dc3139c0c1c82274b28f856e570b Mon Sep 17 00:00:00 2001 From: alex <8379108+Alex33856@users.noreply.github.com> Date: Thu, 5 Mar 2026 14:41:11 -0500 Subject: [PATCH 09/11] add .editorconfig --- .editorconfig | 4 ++++ build.gradle | 2 +- gradle.properties | 2 +- src/main/resources/fabric.mod.json | 2 +- 4 files changed, 7 insertions(+), 3 deletions(-) create mode 100644 .editorconfig diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 0000000..4dd5986 --- /dev/null +++ b/.editorconfig @@ -0,0 +1,4 @@ +root=true + +[*] +insert_final_newline = false diff --git a/build.gradle b/build.gradle index 693dcd0..6d776e6 100644 --- a/build.gradle +++ b/build.gradle @@ -89,4 +89,4 @@ publishing { } } } -} +} \ No newline at end of file diff --git a/gradle.properties b/gradle.properties index f2b3a89..ab10d73 100644 --- a/gradle.properties +++ b/gradle.properties @@ -14,4 +14,4 @@ maven_group=net.azureaaron.hmapi archives_base_name=hm-api # Dependencies -fabric_api_version=0.143.11+26.1 +fabric_api_version=0.143.11+26.1 \ No newline at end of file diff --git a/src/main/resources/fabric.mod.json b/src/main/resources/fabric.mod.json index 58b284f..598615e 100644 --- a/src/main/resources/fabric.mod.json +++ b/src/main/resources/fabric.mod.json @@ -39,4 +39,4 @@ "update_checker": false } } -} +} \ No newline at end of file From 23bb7261b2acdcdba89a28673734a462712e844c Mon Sep 17 00:00:00 2001 From: alex <8379108+Alex33856@users.noreply.github.com> Date: Thu, 5 Mar 2026 14:43:14 -0500 Subject: [PATCH 10/11] minor changes --- build.gradle | 2 +- gradle.properties | 1 + src/main/resources/fabric.mod.json | 2 +- 3 files changed, 3 insertions(+), 2 deletions(-) diff --git a/build.gradle b/build.gradle index 6d776e6..170b63c 100644 --- a/build.gradle +++ b/build.gradle @@ -1,5 +1,5 @@ plugins { - id 'net.fabricmc.fabric-loom' version '1.15-SNAPSHOT' + id 'net.fabricmc.fabric-loom' version "${loom_version}" id 'maven-publish' } diff --git a/gradle.properties b/gradle.properties index ab10d73..cc0a05f 100644 --- a/gradle.properties +++ b/gradle.properties @@ -7,6 +7,7 @@ org.gradle.configuration-cache=false # check these on https://fabricmc.net/develop minecraft_version=26.1-snapshot-11 loader_version=0.18.4 +loom_version=1.15-SNAPSHOT # Mod Properties mod_version=1.0.2 diff --git a/src/main/resources/fabric.mod.json b/src/main/resources/fabric.mod.json index 598615e..f6a535a 100644 --- a/src/main/resources/fabric.mod.json +++ b/src/main/resources/fabric.mod.json @@ -27,7 +27,7 @@ ], "depends": { "fabricloader": ">=0.18.4", - "minecraft": ">1.21.11", + "minecraft": "~26.1", "java": ">=25", "fabric-api": ">=0.142.1+26.1" }, From 082003b5665b83ba9f121a8f6bb08c837fc31d67 Mon Sep 17 00:00:00 2001 From: alex <8379108+Alex33856@users.noreply.github.com> Date: Sat, 14 Mar 2026 13:07:51 -0400 Subject: [PATCH 11/11] 26.1 pre 2 --- gradle.properties | 4 ++-- src/main/resources/fabric.mod.json | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/gradle.properties b/gradle.properties index cc0a05f..2333c49 100644 --- a/gradle.properties +++ b/gradle.properties @@ -5,7 +5,7 @@ org.gradle.configuration-cache=false # Fabric Properties # check these on https://fabricmc.net/develop -minecraft_version=26.1-snapshot-11 +minecraft_version=26.1-pre-2 loader_version=0.18.4 loom_version=1.15-SNAPSHOT @@ -15,4 +15,4 @@ maven_group=net.azureaaron.hmapi archives_base_name=hm-api # Dependencies -fabric_api_version=0.143.11+26.1 \ No newline at end of file +fabric_api_version=0.143.14+26.1 \ No newline at end of file diff --git a/src/main/resources/fabric.mod.json b/src/main/resources/fabric.mod.json index f6a535a..2458980 100644 --- a/src/main/resources/fabric.mod.json +++ b/src/main/resources/fabric.mod.json @@ -27,7 +27,7 @@ ], "depends": { "fabricloader": ">=0.18.4", - "minecraft": "~26.1", + "minecraft": "~26.1-", "java": ">=25", "fabric-api": ">=0.142.1+26.1" },