diff --git a/src/main/java/net/hypixel/modapi/handler/ClientboundPacketHandler.java b/src/main/java/net/hypixel/modapi/handler/ClientboundPacketHandler.java index 670fceb..9edb007 100644 --- a/src/main/java/net/hypixel/modapi/handler/ClientboundPacketHandler.java +++ b/src/main/java/net/hypixel/modapi/handler/ClientboundPacketHandler.java @@ -1,6 +1,5 @@ package net.hypixel.modapi.handler; -import net.hypixel.modapi.packet.HypixelPacket; import net.hypixel.modapi.packet.impl.clientbound.ClientboundLocationPacket; import net.hypixel.modapi.packet.impl.clientbound.ClientboundPartyInfoPacket; import net.hypixel.modapi.packet.impl.clientbound.ClientboundPingPacket; @@ -8,24 +7,6 @@ public interface ClientboundPacketHandler extends PacketHandler { - default void handle(HypixelPacket packet) { - if (packet instanceof ClientboundPingPacket) { - onPingPacket((ClientboundPingPacket) packet); - } - - if (packet instanceof ClientboundLocationPacket) { - onLocationPacket((ClientboundLocationPacket) packet); - } - - if (packet instanceof ClientboundPartyInfoPacket) { - onPartyInfoPacket((ClientboundPartyInfoPacket) packet); - } - - if (packet instanceof ClientboundPlayerInfoPacket) { - onPlayerInfoPacket((ClientboundPlayerInfoPacket) packet); - } - } - default void onPingPacket(ClientboundPingPacket packet) { } diff --git a/src/main/java/net/hypixel/modapi/packet/ClientboundHypixelPacket.java b/src/main/java/net/hypixel/modapi/packet/ClientboundHypixelPacket.java new file mode 100644 index 0000000..338455b --- /dev/null +++ b/src/main/java/net/hypixel/modapi/packet/ClientboundHypixelPacket.java @@ -0,0 +1,9 @@ +package net.hypixel.modapi.packet; + +import net.hypixel.modapi.handler.ClientboundPacketHandler; + +public interface ClientboundHypixelPacket extends HypixelPacket { + + void handle(ClientboundPacketHandler handler); + +} diff --git a/src/main/java/net/hypixel/modapi/packet/PacketRegistry.java b/src/main/java/net/hypixel/modapi/packet/PacketRegistry.java index 8161015..6fc9bb6 100644 --- a/src/main/java/net/hypixel/modapi/packet/PacketRegistry.java +++ b/src/main/java/net/hypixel/modapi/packet/PacketRegistry.java @@ -14,7 +14,7 @@ public class PacketRegistry { private final Map, String> classToIdentifier = new ConcurrentHashMap<>(); public void registerPacketType(String identifier, - Class clientboundClazz, Function clientPacketFactory, + Class clientboundClazz, Function clientPacketFactory, Class serverboundClazz, Function serverPacketFactory) { registrations.put(identifier, new RegisteredType(clientboundClazz, clientPacketFactory, serverboundClazz, serverPacketFactory)); classToIdentifier.put(clientboundClazz, identifier); @@ -33,7 +33,7 @@ public boolean isRegistered(String identifier) { return registrations.containsKey(identifier); } - public HypixelPacket createClientboundPacket(String identifier, PacketSerializer serializer) { + public ClientboundHypixelPacket createClientboundPacket(String identifier, PacketSerializer serializer) { return getRegisteredType(identifier).clientPacketFactory.apply(serializer); } @@ -51,12 +51,12 @@ public Set getIdentifiers() { private static final class RegisteredType { - private final Class clientboundClazz; - private final Function clientPacketFactory; + private final Class clientboundClazz; + private final Function clientPacketFactory; private final Class serverboundClazz; private final Function serverPacketFactory; - public RegisteredType(Class clientboundClazz, Function clientPacketFactory, + public RegisteredType(Class clientboundClazz, Function clientPacketFactory, Class serverboundClazz, Function serverPacketFactory) { this.clientboundClazz = clientboundClazz; this.clientPacketFactory = clientPacketFactory; diff --git a/src/main/java/net/hypixel/modapi/packet/impl/clientbound/ClientboundLocationPacket.java b/src/main/java/net/hypixel/modapi/packet/impl/clientbound/ClientboundLocationPacket.java index 8fd44fc..b81d18c 100644 --- a/src/main/java/net/hypixel/modapi/packet/impl/clientbound/ClientboundLocationPacket.java +++ b/src/main/java/net/hypixel/modapi/packet/impl/clientbound/ClientboundLocationPacket.java @@ -2,13 +2,15 @@ import net.hypixel.data.region.Environment; import net.hypixel.data.type.ServerType; +import net.hypixel.modapi.handler.ClientboundPacketHandler; +import net.hypixel.modapi.packet.ClientboundHypixelPacket; import net.hypixel.modapi.packet.impl.VersionedPacket; import net.hypixel.modapi.serializer.PacketSerializer; import org.jetbrains.annotations.Nullable; import java.util.Optional; -public class ClientboundLocationPacket extends VersionedPacket { +public class ClientboundLocationPacket extends VersionedPacket implements ClientboundHypixelPacket { private static final int CURRENT_VERSION = 1; private final Environment environment; @@ -73,6 +75,11 @@ public void write(PacketSerializer serializer) { } } + @Override + public void handle(ClientboundPacketHandler handler) { + handler.handle(this); + } + public Environment getEnvironment() { return environment; } diff --git a/src/main/java/net/hypixel/modapi/packet/impl/clientbound/ClientboundPartyInfoPacket.java b/src/main/java/net/hypixel/modapi/packet/impl/clientbound/ClientboundPartyInfoPacket.java index bbb5cb5..16ddc65 100644 --- a/src/main/java/net/hypixel/modapi/packet/impl/clientbound/ClientboundPartyInfoPacket.java +++ b/src/main/java/net/hypixel/modapi/packet/impl/clientbound/ClientboundPartyInfoPacket.java @@ -1,12 +1,14 @@ package net.hypixel.modapi.packet.impl.clientbound; +import net.hypixel.modapi.handler.ClientboundPacketHandler; +import net.hypixel.modapi.packet.ClientboundHypixelPacket; import net.hypixel.modapi.packet.impl.VersionedPacket; import net.hypixel.modapi.serializer.PacketSerializer; import org.jetbrains.annotations.Nullable; import java.util.*; -public class ClientboundPartyInfoPacket extends VersionedPacket { +public class ClientboundPartyInfoPacket extends VersionedPacket implements ClientboundHypixelPacket { private static final int CURRENT_VERSION = 1; private final boolean inParty; @@ -54,6 +56,11 @@ public void write(PacketSerializer serializer) { } } + @Override + public void handle(ClientboundPacketHandler handler) { + handler.handle(this); + } + public boolean isInParty() { return inParty; } diff --git a/src/main/java/net/hypixel/modapi/packet/impl/clientbound/ClientboundPingPacket.java b/src/main/java/net/hypixel/modapi/packet/impl/clientbound/ClientboundPingPacket.java index 5079612..adbea8f 100644 --- a/src/main/java/net/hypixel/modapi/packet/impl/clientbound/ClientboundPingPacket.java +++ b/src/main/java/net/hypixel/modapi/packet/impl/clientbound/ClientboundPingPacket.java @@ -1,9 +1,11 @@ package net.hypixel.modapi.packet.impl.clientbound; +import net.hypixel.modapi.handler.ClientboundPacketHandler; +import net.hypixel.modapi.packet.ClientboundHypixelPacket; import net.hypixel.modapi.packet.impl.VersionedPacket; import net.hypixel.modapi.serializer.PacketSerializer; -public class ClientboundPingPacket extends VersionedPacket { +public class ClientboundPingPacket extends VersionedPacket implements ClientboundHypixelPacket { private static final int CURRENT_VERSION = 1; private final String response; @@ -24,6 +26,11 @@ public void write(PacketSerializer serializer) { serializer.writeString(response); } + @Override + public void handle(ClientboundPacketHandler handler) { + handler.handle(this); + } + public String getResponse() { return response; } diff --git a/src/main/java/net/hypixel/modapi/packet/impl/clientbound/ClientboundPlayerInfoPacket.java b/src/main/java/net/hypixel/modapi/packet/impl/clientbound/ClientboundPlayerInfoPacket.java index 85215f1..131b4e2 100644 --- a/src/main/java/net/hypixel/modapi/packet/impl/clientbound/ClientboundPlayerInfoPacket.java +++ b/src/main/java/net/hypixel/modapi/packet/impl/clientbound/ClientboundPlayerInfoPacket.java @@ -3,13 +3,15 @@ import net.hypixel.data.rank.MonthlyPackageRank; import net.hypixel.data.rank.PackageRank; import net.hypixel.data.rank.PlayerRank; +import net.hypixel.modapi.handler.ClientboundPacketHandler; +import net.hypixel.modapi.packet.ClientboundHypixelPacket; import net.hypixel.modapi.packet.impl.VersionedPacket; import net.hypixel.modapi.serializer.PacketSerializer; import org.jetbrains.annotations.Nullable; import java.util.Optional; -public class ClientboundPlayerInfoPacket extends VersionedPacket { +public class ClientboundPlayerInfoPacket extends VersionedPacket implements ClientboundHypixelPacket { private static final int CURRENT_VERSION = 1; private final PlayerRank playerRank; @@ -46,6 +48,11 @@ public void write(PacketSerializer serializer) { } } + @Override + public void handle(ClientboundPacketHandler handler) { + handler.handle(this); + } + public PlayerRank getPlayerRank() { return playerRank; }