diff --git a/pom.xml b/pom.xml index a889daf..e25092c 100644 --- a/pom.xml +++ b/pom.xml @@ -6,7 +6,7 @@ net.hypixel mod-api - 0.1.7 + dev-SNAPSHOT 8 @@ -35,10 +35,9 @@ provided - org.junit.jupiter - junit-jupiter-engine - 5.9.2 - test + net.hypixel + hypixel-data + 0.1.2 @@ -47,13 +46,26 @@ org.apache.maven.plugins maven-compiler-plugin - 2.3.2 + 3.13.0 UTF-8 1.8 1.8 + + org.apache.maven.plugins + maven-shade-plugin + 3.2.0 + + + package + + shade + + + + diff --git a/src/main/java/net/hypixel/modapi/data/Environment.java b/src/main/java/net/hypixel/modapi/data/Environment.java deleted file mode 100644 index f1f4ac6..0000000 --- a/src/main/java/net/hypixel/modapi/data/Environment.java +++ /dev/null @@ -1,10 +0,0 @@ -package net.hypixel.modapi.data; - -public enum Environment { - PRODUCTION, // The Production Hypixel Network - "mc.hypixel.net" - BETA, // The Alpha Hypixel Network - "alpha.hypixel.net" - TEST, // The Test Hypixel Network - For Hypixel Developers - ; - - public static final Environment[] VALUES = values(); -} diff --git a/src/main/java/net/hypixel/modapi/packet/HypixelPacketType.java b/src/main/java/net/hypixel/modapi/packet/HypixelPacketType.java index 711fe3c..fff4652 100644 --- a/src/main/java/net/hypixel/modapi/packet/HypixelPacketType.java +++ b/src/main/java/net/hypixel/modapi/packet/HypixelPacketType.java @@ -3,6 +3,7 @@ import net.hypixel.modapi.packet.impl.clientbound.ClientboundLocationPacket; import net.hypixel.modapi.packet.impl.clientbound.ClientboundPartyInfoPacket; import net.hypixel.modapi.packet.impl.clientbound.ClientboundPingPacket; +import net.hypixel.modapi.packet.impl.clientbound.ClientboundPlayerInfoPacket; import net.hypixel.modapi.serializer.PacketSerializer; import org.jetbrains.annotations.Nullable; @@ -15,6 +16,7 @@ public enum HypixelPacketType { PING(ClientboundPingPacket::new), LOCATION(ClientboundLocationPacket::new), PARTY_INFO(ClientboundPartyInfoPacket::new), + PLAYER_INFO(ClientboundPlayerInfoPacket::new), ; private static final String IDENTIFIER_PREFIX = "hypixel:"; private static final Map BY_IDENTIFIER = Arrays.stream(values()).collect(HashMap::new, (map, type) -> map.put(type.getIdentifier(), type), HashMap::putAll); diff --git a/src/main/java/net/hypixel/modapi/packet/impl/VersionedPacket.java b/src/main/java/net/hypixel/modapi/packet/impl/VersionedPacket.java index a5124da..01680fd 100644 --- a/src/main/java/net/hypixel/modapi/packet/impl/VersionedPacket.java +++ b/src/main/java/net/hypixel/modapi/packet/impl/VersionedPacket.java @@ -4,22 +4,22 @@ import net.hypixel.modapi.serializer.PacketSerializer; public abstract class VersionedPacket implements HypixelPacket { - private final byte version; + private final int version; - public VersionedPacket(byte version) { + public VersionedPacket(int version) { this.version = version; } public VersionedPacket(PacketSerializer byteBuf) { - this.version = byteBuf.readByte(); + this.version = byteBuf.readVarInt(); } @Override public void write(PacketSerializer serializer) { - serializer.writeByte(version); + serializer.writeVarInt(version); } - public byte getVersion() { + public int getVersion() { return version; } 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 a5186e8..e607fa1 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 @@ -1,6 +1,7 @@ package net.hypixel.modapi.packet.impl.clientbound; -import net.hypixel.modapi.data.Environment; +import net.hypixel.data.region.Environment; +import net.hypixel.data.type.ServerType; import net.hypixel.modapi.packet.HypixelPacketType; import net.hypixel.modapi.packet.impl.VersionedPacket; import net.hypixel.modapi.serializer.PacketSerializer; @@ -9,13 +10,13 @@ import java.util.Optional; public class ClientboundLocationPacket extends VersionedPacket { - private static final byte CURRENT_VERSION = 1; + private static final int CURRENT_VERSION = 1; private final Environment environment; private final String proxyName; private final String serverName; @Nullable - private final String serverType; + private final ServerType serverType; @Nullable private final String lobbyName; @Nullable @@ -23,7 +24,7 @@ public class ClientboundLocationPacket extends VersionedPacket { @Nullable private final String map; - public ClientboundLocationPacket(Environment environment, String proxyName, String serverName, @Nullable String serverType, @Nullable String lobbyName, @Nullable String mode, @Nullable String map) { + public ClientboundLocationPacket(Environment environment, String proxyName, String serverName, @Nullable ServerType serverType, @Nullable String lobbyName, @Nullable String mode, @Nullable String map) { super(CURRENT_VERSION); this.environment = environment; this.proxyName = proxyName; @@ -36,10 +37,10 @@ public ClientboundLocationPacket(Environment environment, String proxyName, Stri public ClientboundLocationPacket(PacketSerializer serializer) { super(serializer); - this.environment = Environment.VALUES[serializer.readVarInt()]; + this.environment = Environment.getById(serializer.readVarInt()).orElseThrow(() -> new IllegalArgumentException("Invalid environment ID")); this.proxyName = serializer.readString(); this.serverName = serializer.readString(); - this.serverType = serializer.readBoolean() ? serializer.readString() : null; + this.serverType = serializer.readBoolean() ? ServerType.valueOf(serializer.readString()).orElse(null) : null; this.lobbyName = serializer.readBoolean() ? serializer.readString() : null; this.mode = serializer.readBoolean() ? serializer.readString() : null; this.map = serializer.readBoolean() ? serializer.readString() : null; @@ -59,7 +60,7 @@ public void write(PacketSerializer serializer) { serializer.writeBoolean(serverType != null); if (serverType != null) { - serializer.writeString(serverType); + serializer.writeString(serverType.name()); } serializer.writeBoolean(lobbyName != null); @@ -90,7 +91,7 @@ public String getServerName() { return serverName; } - public Optional getServerType() { + public Optional getServerType() { return Optional.ofNullable(serverType); } 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 713ca40..a716523 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 @@ -8,7 +8,7 @@ import java.util.*; public class ClientboundPartyInfoPacket extends VersionedPacket { - private static final byte CURRENT_VERSION = 1; + private static final int CURRENT_VERSION = 1; private final boolean inParty; private final UUID leader; 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 3a61ff1..ef694ef 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 @@ -5,7 +5,7 @@ import net.hypixel.modapi.serializer.PacketSerializer; public class ClientboundPingPacket extends VersionedPacket { - private static final byte CURRENT_VERSION = 1; + private static final int CURRENT_VERSION = 1; private final String 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 new file mode 100644 index 0000000..e13f5de --- /dev/null +++ b/src/main/java/net/hypixel/modapi/packet/impl/clientbound/ClientboundPlayerInfoPacket.java @@ -0,0 +1,80 @@ +package net.hypixel.modapi.packet.impl.clientbound; + +import net.hypixel.data.rank.MonthlyPackageRank; +import net.hypixel.data.rank.PackageRank; +import net.hypixel.data.rank.PlayerRank; +import net.hypixel.modapi.packet.HypixelPacketType; +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 { + private static final int CURRENT_VERSION = 1; + + private final PlayerRank playerRank; + private final PackageRank packageRank; + private final MonthlyPackageRank monthlyPackageRank; + @Nullable + private final String prefix; + + public ClientboundPlayerInfoPacket(PlayerRank playerRank, PackageRank packageRank, MonthlyPackageRank monthlyPackageRank, @Nullable String prefix) { + super(CURRENT_VERSION); + this.playerRank = playerRank; + this.packageRank = packageRank; + this.monthlyPackageRank = monthlyPackageRank; + this.prefix = prefix; + } + + public ClientboundPlayerInfoPacket(PacketSerializer serializer) { + super(serializer); + this.playerRank = PlayerRank.getById(serializer.readVarInt()).orElseThrow(() -> new IllegalArgumentException("Invalid player rank ID")); + this.packageRank = PackageRank.getById(serializer.readVarInt()).orElseThrow(() -> new IllegalArgumentException("Invalid package rank ID")); + this.monthlyPackageRank = MonthlyPackageRank.getById(serializer.readVarInt()).orElseThrow(() -> new IllegalArgumentException("Invalid monthly package rank ID")); + this.prefix = serializer.readBoolean() ? serializer.readString() : null; + } + + @Override + public HypixelPacketType getType() { + return HypixelPacketType.PLAYER_INFO; + } + + @Override + public void write(PacketSerializer serializer) { + super.write(serializer); + serializer.writeVarInt(playerRank.getId()); + serializer.writeVarInt(packageRank.getId()); + serializer.writeVarInt(monthlyPackageRank.getId()); + serializer.writeBoolean(prefix != null); + if (prefix != null) { + serializer.writeString(prefix); + } + } + + public PlayerRank getPlayerRank() { + return playerRank; + } + + public PackageRank getPackageRank() { + return packageRank; + } + + public MonthlyPackageRank getMonthlyPackageRank() { + return monthlyPackageRank; + } + + public Optional getPrefix() { + return Optional.ofNullable(prefix); + } + + @Override + public String toString() { + return "ClientboundPlayerInfoPacket{" + + "playerRank=" + playerRank + + ", packageRank=" + packageRank + + ", monthlyPackageRank=" + monthlyPackageRank + + ", prefix='" + prefix + '\'' + + "} " + super.toString(); + } +} diff --git a/src/main/java/net/hypixel/modapi/packet/impl/serverbound/ServerboundLocationPacket.java b/src/main/java/net/hypixel/modapi/packet/impl/serverbound/ServerboundLocationPacket.java index 58bc9b0..77b1978 100644 --- a/src/main/java/net/hypixel/modapi/packet/impl/serverbound/ServerboundLocationPacket.java +++ b/src/main/java/net/hypixel/modapi/packet/impl/serverbound/ServerboundLocationPacket.java @@ -5,7 +5,7 @@ import net.hypixel.modapi.serializer.PacketSerializer; public class ServerboundLocationPacket extends VersionedPacket { - private static final byte CURRENT_VERSION = 1; + private static final int CURRENT_VERSION = 1; public ServerboundLocationPacket() { super(CURRENT_VERSION); diff --git a/src/main/java/net/hypixel/modapi/packet/impl/serverbound/ServerboundPartyInfoPacket.java b/src/main/java/net/hypixel/modapi/packet/impl/serverbound/ServerboundPartyInfoPacket.java index fe9157e..e980283 100644 --- a/src/main/java/net/hypixel/modapi/packet/impl/serverbound/ServerboundPartyInfoPacket.java +++ b/src/main/java/net/hypixel/modapi/packet/impl/serverbound/ServerboundPartyInfoPacket.java @@ -5,7 +5,7 @@ import net.hypixel.modapi.serializer.PacketSerializer; public class ServerboundPartyInfoPacket extends VersionedPacket { - private static final byte CURRENT_VERSION = 1; + private static final int CURRENT_VERSION = 1; public ServerboundPartyInfoPacket() { super(CURRENT_VERSION); diff --git a/src/main/java/net/hypixel/modapi/packet/impl/serverbound/ServerboundPingPacket.java b/src/main/java/net/hypixel/modapi/packet/impl/serverbound/ServerboundPingPacket.java index 24a6c7e..fbd31e0 100644 --- a/src/main/java/net/hypixel/modapi/packet/impl/serverbound/ServerboundPingPacket.java +++ b/src/main/java/net/hypixel/modapi/packet/impl/serverbound/ServerboundPingPacket.java @@ -5,7 +5,7 @@ import net.hypixel.modapi.serializer.PacketSerializer; public class ServerboundPingPacket extends VersionedPacket { - private static final byte CURRENT_VERSION = 1; + private static final int CURRENT_VERSION = 1; public ServerboundPingPacket() { super(CURRENT_VERSION); diff --git a/src/main/java/net/hypixel/modapi/packet/impl/serverbound/ServerboundPlayerInfoPacket.java b/src/main/java/net/hypixel/modapi/packet/impl/serverbound/ServerboundPlayerInfoPacket.java new file mode 100644 index 0000000..71454d9 --- /dev/null +++ b/src/main/java/net/hypixel/modapi/packet/impl/serverbound/ServerboundPlayerInfoPacket.java @@ -0,0 +1,22 @@ +package net.hypixel.modapi.packet.impl.serverbound; + +import net.hypixel.modapi.packet.HypixelPacketType; +import net.hypixel.modapi.packet.impl.VersionedPacket; +import net.hypixel.modapi.serializer.PacketSerializer; + +public class ServerboundPlayerInfoPacket extends VersionedPacket { + private static final int CURRENT_VERSION = 1; + + public ServerboundPlayerInfoPacket() { + super(CURRENT_VERSION); + } + + public ServerboundPlayerInfoPacket(PacketSerializer serializer) { + super(serializer); + } + + @Override + public HypixelPacketType getType() { + return HypixelPacketType.PLAYER_INFO; + } +} diff --git a/src/main/java/net/hypixel/modapi/serializer/PacketSerializer.java b/src/main/java/net/hypixel/modapi/serializer/PacketSerializer.java index 91f543f..cfe49b3 100644 --- a/src/main/java/net/hypixel/modapi/serializer/PacketSerializer.java +++ b/src/main/java/net/hypixel/modapi/serializer/PacketSerializer.java @@ -51,15 +51,6 @@ public void writeVarInt(int i) { this.buf.writeByte(i); } - public byte readByte() { - return this.buf.readByte(); - } - - public PacketSerializer writeByte(int value) { - this.buf.writeByte(value); - return this; - } - public String readString() { return this.readString(MAX_STRING_LENGTH); }