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);
}