From 212c8f2d417ca4b7df9d0356cfca1dff7a787413 Mon Sep 17 00:00:00 2001 From: LOOHP Date: Tue, 4 Aug 2020 00:19:38 +0800 Subject: [PATCH] Use file to handle packet id mappings --- src/com/loohp/limbo/Limbo.java | 110 ++++++++++-------- .../loohp/limbo/Server/Packets/Packet.java | 48 ++++---- .../Server/Packets/PacketHandshakingIn.java | 2 +- .../loohp/limbo/Server/Packets/PacketIn.java | 5 + .../Packets/PacketLoginInLoginStart.java | 2 +- .../Packets/PacketLoginOutLoginSuccess.java | 3 +- .../loohp/limbo/Server/Packets/PacketOut.java | 9 ++ .../Server/Packets/PacketPlayInChat.java | 2 +- .../Server/Packets/PacketPlayInKeepAlive.java | 2 +- .../Server/Packets/PacketPlayInPosition.java | 2 +- .../Packets/PacketPlayInPositionAndLook.java | 2 +- .../Server/Packets/PacketPlayOutChat.java | 3 +- .../Packets/PacketPlayOutKeepAlive.java | 3 +- .../Server/Packets/PacketPlayOutLogin.java | 3 +- .../Server/Packets/PacketPlayOutMapChunk.java | 3 +- .../Packets/PacketPlayOutPlayerAbilities.java | 3 +- .../Packets/PacketPlayOutPlayerInfo.java | 3 +- .../Packets/PacketPlayOutPositionAndLook.java | 3 +- .../Packets/PacketPlayOutShowPlayerSkins.java | 3 +- .../Packets/PacketPlayOutSpawnPosition.java | 2 +- .../PacketPlayOutUpdateViewPosition.java | 3 +- .../Server/Packets/PacketStatusInPing.java | 2 +- .../Server/Packets/PacketStatusInRequest.java | 2 +- .../Server/Packets/PacketStatusOutPong.java | 3 +- .../Packets/PacketStatusOutResponse.java | 3 +- src/mapping.json | 37 ++++++ 26 files changed, 164 insertions(+), 99 deletions(-) create mode 100644 src/com/loohp/limbo/Server/Packets/PacketIn.java create mode 100644 src/com/loohp/limbo/Server/Packets/PacketOut.java create mode 100644 src/mapping.json diff --git a/src/com/loohp/limbo/Limbo.java b/src/com/loohp/limbo/Limbo.java index 65fc3ee..e19a828 100644 --- a/src/com/loohp/limbo/Limbo.java +++ b/src/com/loohp/limbo/Limbo.java @@ -1,6 +1,7 @@ package com.loohp.limbo; import java.io.File; +import java.io.FileReader; import java.io.IOException; import java.io.InputStream; import java.nio.file.Files; @@ -9,31 +10,16 @@ import java.util.HashMap; import java.util.List; import java.util.Map; +import org.json.simple.JSONObject; +import org.json.simple.parser.JSONParser; +import org.json.simple.parser.ParseException; + import com.loohp.limbo.File.ServerProperties; import com.loohp.limbo.Location.Location; import com.loohp.limbo.Server.ServerConnection; import com.loohp.limbo.Server.Packets.Packet; -import com.loohp.limbo.Server.Packets.PacketHandshakingIn; -import com.loohp.limbo.Server.Packets.PacketLoginInLoginStart; -import com.loohp.limbo.Server.Packets.PacketLoginOutLoginSuccess; -import com.loohp.limbo.Server.Packets.PacketPlayInChat; -import com.loohp.limbo.Server.Packets.PacketPlayInKeepAlive; -import com.loohp.limbo.Server.Packets.PacketPlayInPosition; -import com.loohp.limbo.Server.Packets.PacketPlayInPositionAndLook; -import com.loohp.limbo.Server.Packets.PacketPlayOutChat; -import com.loohp.limbo.Server.Packets.PacketPlayOutKeepAlive; -import com.loohp.limbo.Server.Packets.PacketPlayOutLogin; -import com.loohp.limbo.Server.Packets.PacketPlayOutMapChunk; -import com.loohp.limbo.Server.Packets.PacketPlayOutPlayerAbilities; -import com.loohp.limbo.Server.Packets.PacketPlayOutPlayerInfo; -import com.loohp.limbo.Server.Packets.PacketPlayOutPositionAndLook; -import com.loohp.limbo.Server.Packets.PacketPlayOutShowPlayerSkins; -import com.loohp.limbo.Server.Packets.PacketPlayOutSpawnPosition; -import com.loohp.limbo.Server.Packets.PacketPlayOutUpdateViewPosition; -import com.loohp.limbo.Server.Packets.PacketStatusInPing; -import com.loohp.limbo.Server.Packets.PacketStatusInRequest; -import com.loohp.limbo.Server.Packets.PacketStatusOutPong; -import com.loohp.limbo.Server.Packets.PacketStatusOutResponse; +import com.loohp.limbo.Server.Packets.PacketIn; +import com.loohp.limbo.Server.Packets.PacketOut; import com.loohp.limbo.Utils.ImageUtils; import com.loohp.limbo.World.Schematic; import com.loohp.limbo.World.World; @@ -45,7 +31,7 @@ public class Limbo { private static Limbo instance; - public static void main(String args[]) throws IOException { + public static void main(String args[]) throws IOException, ParseException, NumberFormatException, ClassNotFoundException { new Limbo(); } @@ -62,7 +48,8 @@ public class Limbo { private ServerProperties properties; - public Limbo() throws IOException { + @SuppressWarnings("unchecked") + public Limbo() throws IOException, ParseException, NumberFormatException, ClassNotFoundException { instance = this; console = new Console(System.in, System.out); @@ -78,46 +65,67 @@ public class Limbo { } properties = new ServerProperties(sp); - Map> HandshakeIn = new HashMap<>(); - HandshakeIn.put(0x00, PacketHandshakingIn.class); + String mappingName = "mapping.json"; + File mappingFile = new File(mappingName); + if (!mappingFile.exists()) { + try (InputStream in = getClass().getClassLoader().getResourceAsStream(mappingName)) { + Files.copy(in, mappingFile.toPath()); + } catch (IOException e) { + e.printStackTrace(); + } + } + + JSONObject json = (JSONObject) new JSONParser().parse(new FileReader(mappingFile)); + + String classPrefix = Packet.class.getName().substring(0, Packet.class.getName().lastIndexOf(".") + 1); + + Map> HandshakeIn = new HashMap<>(); + for (Object key : ((JSONObject) json.get("HandshakeIn")).keySet()) { + int packetId = Integer.decode((String) key); + HandshakeIn.put(packetId, (Class) Class.forName(classPrefix + (String) ((JSONObject) json.get("HandshakeIn")).get(key))); + } Packet.setHandshakeIn(HandshakeIn); - Map> StatusIn = new HashMap<>(); - StatusIn.put(0x00, PacketStatusInRequest.class); - StatusIn.put(0x01, PacketStatusInPing.class); + Map> StatusIn = new HashMap<>(); + for (Object key : ((JSONObject) json.get("StatusIn")).keySet()) { + int packetId = Integer.decode((String) key); + StatusIn.put(packetId, (Class) Class.forName(classPrefix + (String) ((JSONObject) json.get("StatusIn")).get(key))); + } Packet.setStatusIn(StatusIn); - Map, Integer> StatusOut = new HashMap<>(); - StatusOut.put(PacketStatusOutResponse.class, 0x00); - StatusOut.put(PacketStatusOutPong.class, 0x01); + Map, Integer> StatusOut = new HashMap<>(); + for (Object key : ((JSONObject) json.get("StatusOut")).keySet()) { + Class packetClass = (Class) Class.forName(classPrefix + (String) key); + StatusOut.put(packetClass, Integer.decode((String) ((JSONObject) json.get("StatusOut")).get(key))); + } Packet.setStatusOut(StatusOut); - Map> LoginIn = new HashMap<>(); - LoginIn.put(0x00, PacketLoginInLoginStart.class); + Map> LoginIn = new HashMap<>(); + for (Object key : ((JSONObject) json.get("LoginIn")).keySet()) { + int packetId = Integer.decode((String) key); + LoginIn.put(packetId, (Class) Class.forName(classPrefix + (String) ((JSONObject) json.get("LoginIn")).get(key))); + } Packet.setLoginIn(LoginIn); - Map, Integer> LoginOut = new HashMap<>(); - LoginOut.put(PacketLoginOutLoginSuccess.class, 0x02); + Map, Integer> LoginOut = new HashMap<>(); + for (Object key : ((JSONObject) json.get("LoginOut")).keySet()) { + Class packetClass = (Class) Class.forName(classPrefix + (String) key); + LoginOut.put(packetClass, Integer.decode((String) ((JSONObject) json.get("LoginOut")).get(key))); + } Packet.setLoginOut(LoginOut); - Map> PlayIn = new HashMap<>(); - PlayIn.put(0x10, PacketPlayInKeepAlive.class); - PlayIn.put(0x12, PacketPlayInPosition.class); - PlayIn.put(0x13, PacketPlayInPositionAndLook.class); - PlayIn.put(0x03, PacketPlayInChat.class); + Map> PlayIn = new HashMap<>(); + for (Object key : ((JSONObject) json.get("PlayIn")).keySet()) { + int packetId = Integer.decode((String) key); + PlayIn.put(packetId, (Class) Class.forName(classPrefix + (String) ((JSONObject) json.get("PlayIn")).get(key))); + } Packet.setPlayIn(PlayIn); - Map, Integer> PlayOut = new HashMap<>(); - PlayOut.put(PacketPlayOutLogin.class, 0x25); - PlayOut.put(PacketPlayOutSpawnPosition.class, 0x42); - PlayOut.put(PacketPlayOutPositionAndLook.class, 0x35); - PlayOut.put(PacketPlayOutMapChunk.class, 0x21); - PlayOut.put(PacketPlayOutKeepAlive.class, 0x20); - PlayOut.put(PacketPlayOutUpdateViewPosition.class, 0x40); - PlayOut.put(PacketPlayOutPlayerInfo.class, 0x33); - PlayOut.put(PacketPlayOutShowPlayerSkins.class, 0x44); - PlayOut.put(PacketPlayOutPlayerAbilities.class, 0x31); - PlayOut.put(PacketPlayOutChat.class, 0x0E); + Map, Integer> PlayOut = new HashMap<>(); + for (Object key : ((JSONObject) json.get("PlayOut")).keySet()) { + Class packetClass = (Class) Class.forName(classPrefix + (String) key); + PlayOut.put(packetClass, Integer.decode((String) ((JSONObject) json.get("PlayOut")).get(key))); + } Packet.setPlayOut(PlayOut); worlds.add(loadDefaultWorld()); diff --git a/src/com/loohp/limbo/Server/Packets/Packet.java b/src/com/loohp/limbo/Server/Packets/Packet.java index 21b8796..291a20b 100644 --- a/src/com/loohp/limbo/Server/Packets/Packet.java +++ b/src/com/loohp/limbo/Server/Packets/Packet.java @@ -4,77 +4,71 @@ import java.util.Map; public class Packet { - private static Map> HandshakeIn; + private static Map> HandshakeIn; - private static Map> StatusIn; - private static Map, Integer> StatusOut; + private static Map> StatusIn; + private static Map, Integer> StatusOut; - private static Map> LoginIn; - private static Map, Integer> LoginOut; + private static Map> LoginIn; + private static Map, Integer> LoginOut; - private static Map> PlayIn; - private static Map, Integer> PlayOut; + private static Map> PlayIn; + private static Map, Integer> PlayOut; - public static Map> getHandshakeIn() { + public static Map> getHandshakeIn() { return HandshakeIn; } - public static void setHandshakeIn(Map> handshakeIn) { + public static void setHandshakeIn(Map> handshakeIn) { HandshakeIn = handshakeIn; } - public static Map> getStatusIn() { + public static Map> getStatusIn() { return StatusIn; } - public static void setStatusIn(Map> statusIn) { + public static void setStatusIn(Map> statusIn) { StatusIn = statusIn; } - public static Map, Integer> getStatusOut() { + public static Map, Integer> getStatusOut() { return StatusOut; } - public static void setStatusOut(Map, Integer> statusOut) { + public static void setStatusOut(Map, Integer> statusOut) { StatusOut = statusOut; } - public static Map> getLoginIn() { + public static Map> getLoginIn() { return LoginIn; } - public static void setLoginIn(Map> loginIn) { + public static void setLoginIn(Map> loginIn) { LoginIn = loginIn; } - public static Map, Integer> getLoginOut() { + public static Map, Integer> getLoginOut() { return LoginOut; } - public static void setLoginOut(Map, Integer> loginOut) { + public static void setLoginOut(Map, Integer> loginOut) { LoginOut = loginOut; } - public static Map> getPlayIn() { + public static Map> getPlayIn() { return PlayIn; } - public static void setPlayIn(Map> playIn) { + public static void setPlayIn(Map> playIn) { PlayIn = playIn; } - public static Map, Integer> getPlayOut() { + public static Map, Integer> getPlayOut() { return PlayOut; } - public static void setPlayOut(Map, Integer> playOut) { + public static void setPlayOut(Map, Integer> playOut) { PlayOut = playOut; } - //=========================================== - - public Packet() { - - } - } diff --git a/src/com/loohp/limbo/Server/Packets/PacketHandshakingIn.java b/src/com/loohp/limbo/Server/Packets/PacketHandshakingIn.java index 5819879..988cc0a 100644 --- a/src/com/loohp/limbo/Server/Packets/PacketHandshakingIn.java +++ b/src/com/loohp/limbo/Server/Packets/PacketHandshakingIn.java @@ -5,7 +5,7 @@ import java.io.IOException; import com.loohp.limbo.Utils.DataTypeIO; -public class PacketHandshakingIn extends Packet { +public class PacketHandshakingIn extends PacketIn { public static enum HandshakeType { STATUS(1), diff --git a/src/com/loohp/limbo/Server/Packets/PacketIn.java b/src/com/loohp/limbo/Server/Packets/PacketIn.java new file mode 100644 index 0000000..32f946a --- /dev/null +++ b/src/com/loohp/limbo/Server/Packets/PacketIn.java @@ -0,0 +1,5 @@ +package com.loohp.limbo.Server.Packets; + +public abstract class PacketIn extends Packet { + +} diff --git a/src/com/loohp/limbo/Server/Packets/PacketLoginInLoginStart.java b/src/com/loohp/limbo/Server/Packets/PacketLoginInLoginStart.java index e158283..14dd958 100644 --- a/src/com/loohp/limbo/Server/Packets/PacketLoginInLoginStart.java +++ b/src/com/loohp/limbo/Server/Packets/PacketLoginInLoginStart.java @@ -5,7 +5,7 @@ import java.io.IOException; import com.loohp.limbo.Utils.DataTypeIO; -public class PacketLoginInLoginStart extends Packet { +public class PacketLoginInLoginStart extends PacketIn { private String username; diff --git a/src/com/loohp/limbo/Server/Packets/PacketLoginOutLoginSuccess.java b/src/com/loohp/limbo/Server/Packets/PacketLoginOutLoginSuccess.java index 8ac0392..1294d73 100644 --- a/src/com/loohp/limbo/Server/Packets/PacketLoginOutLoginSuccess.java +++ b/src/com/loohp/limbo/Server/Packets/PacketLoginOutLoginSuccess.java @@ -8,7 +8,7 @@ import java.util.UUID; import com.loohp.limbo.Utils.DataTypeIO; -public class PacketLoginOutLoginSuccess extends Packet { +public class PacketLoginOutLoginSuccess extends PacketOut { private UUID uuid; private String username; @@ -26,6 +26,7 @@ public class PacketLoginOutLoginSuccess extends Packet { return username; } + @Override public byte[] getBytes() throws IOException { ByteArrayOutputStream buffer = new ByteArrayOutputStream(); diff --git a/src/com/loohp/limbo/Server/Packets/PacketOut.java b/src/com/loohp/limbo/Server/Packets/PacketOut.java new file mode 100644 index 0000000..984b518 --- /dev/null +++ b/src/com/loohp/limbo/Server/Packets/PacketOut.java @@ -0,0 +1,9 @@ +package com.loohp.limbo.Server.Packets; + +import java.io.IOException; + +public abstract class PacketOut extends Packet { + + public abstract byte[] getBytes() throws IOException; + +} diff --git a/src/com/loohp/limbo/Server/Packets/PacketPlayInChat.java b/src/com/loohp/limbo/Server/Packets/PacketPlayInChat.java index b446ff4..4d4a268 100644 --- a/src/com/loohp/limbo/Server/Packets/PacketPlayInChat.java +++ b/src/com/loohp/limbo/Server/Packets/PacketPlayInChat.java @@ -5,7 +5,7 @@ import java.io.IOException; import com.loohp.limbo.Utils.DataTypeIO; -public class PacketPlayInChat extends Packet { +public class PacketPlayInChat extends PacketIn { private String message; diff --git a/src/com/loohp/limbo/Server/Packets/PacketPlayInKeepAlive.java b/src/com/loohp/limbo/Server/Packets/PacketPlayInKeepAlive.java index e9ef830..40476e2 100644 --- a/src/com/loohp/limbo/Server/Packets/PacketPlayInKeepAlive.java +++ b/src/com/loohp/limbo/Server/Packets/PacketPlayInKeepAlive.java @@ -3,7 +3,7 @@ package com.loohp.limbo.Server.Packets; import java.io.DataInputStream; import java.io.IOException; -public class PacketPlayInKeepAlive extends Packet { +public class PacketPlayInKeepAlive extends PacketIn { long payload; diff --git a/src/com/loohp/limbo/Server/Packets/PacketPlayInPosition.java b/src/com/loohp/limbo/Server/Packets/PacketPlayInPosition.java index 6da8a44..79ef149 100644 --- a/src/com/loohp/limbo/Server/Packets/PacketPlayInPosition.java +++ b/src/com/loohp/limbo/Server/Packets/PacketPlayInPosition.java @@ -3,7 +3,7 @@ package com.loohp.limbo.Server.Packets; import java.io.DataInputStream; import java.io.IOException; -public class PacketPlayInPosition extends Packet { +public class PacketPlayInPosition extends PacketIn { private double x; private double y; diff --git a/src/com/loohp/limbo/Server/Packets/PacketPlayInPositionAndLook.java b/src/com/loohp/limbo/Server/Packets/PacketPlayInPositionAndLook.java index 678ece0..32ee94b 100644 --- a/src/com/loohp/limbo/Server/Packets/PacketPlayInPositionAndLook.java +++ b/src/com/loohp/limbo/Server/Packets/PacketPlayInPositionAndLook.java @@ -3,7 +3,7 @@ package com.loohp.limbo.Server.Packets; import java.io.DataInputStream; import java.io.IOException; -public class PacketPlayInPositionAndLook extends Packet { +public class PacketPlayInPositionAndLook extends PacketIn { private double x; private double y; diff --git a/src/com/loohp/limbo/Server/Packets/PacketPlayOutChat.java b/src/com/loohp/limbo/Server/Packets/PacketPlayOutChat.java index a0198d4..fd5b487 100644 --- a/src/com/loohp/limbo/Server/Packets/PacketPlayOutChat.java +++ b/src/com/loohp/limbo/Server/Packets/PacketPlayOutChat.java @@ -8,7 +8,7 @@ import java.util.UUID; import com.loohp.limbo.Utils.DataTypeIO; -public class PacketPlayOutChat extends Packet { +public class PacketPlayOutChat extends PacketOut { private String json; private int position; @@ -32,6 +32,7 @@ public class PacketPlayOutChat extends Packet { return sender; } + @Override public byte[] getBytes() throws IOException { ByteArrayOutputStream buffer = new ByteArrayOutputStream(); diff --git a/src/com/loohp/limbo/Server/Packets/PacketPlayOutKeepAlive.java b/src/com/loohp/limbo/Server/Packets/PacketPlayOutKeepAlive.java index 6cf77c3..be0118e 100644 --- a/src/com/loohp/limbo/Server/Packets/PacketPlayOutKeepAlive.java +++ b/src/com/loohp/limbo/Server/Packets/PacketPlayOutKeepAlive.java @@ -4,7 +4,7 @@ import java.io.ByteArrayOutputStream; import java.io.DataOutputStream; import java.io.IOException; -public class PacketPlayOutKeepAlive extends Packet { +public class PacketPlayOutKeepAlive extends PacketOut { long payload; @@ -16,6 +16,7 @@ public class PacketPlayOutKeepAlive extends Packet { return payload; } + @Override public byte[] getBytes() throws IOException { ByteArrayOutputStream buffer = new ByteArrayOutputStream(); diff --git a/src/com/loohp/limbo/Server/Packets/PacketPlayOutLogin.java b/src/com/loohp/limbo/Server/Packets/PacketPlayOutLogin.java index 7ecf918..be7b771 100644 --- a/src/com/loohp/limbo/Server/Packets/PacketPlayOutLogin.java +++ b/src/com/loohp/limbo/Server/Packets/PacketPlayOutLogin.java @@ -10,7 +10,7 @@ import com.loohp.limbo.Utils.GameMode; import net.querz.nbt.tag.CompoundTag; -public class PacketPlayOutLogin extends Packet { +public class PacketPlayOutLogin extends PacketOut { private int entityId; private boolean isHardcore; @@ -103,6 +103,7 @@ public class PacketPlayOutLogin extends Packet { return isFlat; } + @Override public byte[] getBytes() throws IOException { ByteArrayOutputStream buffer = new ByteArrayOutputStream(); diff --git a/src/com/loohp/limbo/Server/Packets/PacketPlayOutMapChunk.java b/src/com/loohp/limbo/Server/Packets/PacketPlayOutMapChunk.java index 7f8ad66..a0baa9b 100644 --- a/src/com/loohp/limbo/Server/Packets/PacketPlayOutMapChunk.java +++ b/src/com/loohp/limbo/Server/Packets/PacketPlayOutMapChunk.java @@ -14,7 +14,7 @@ import net.querz.mca.Section; import net.querz.nbt.tag.CompoundTag; import net.querz.nbt.tag.ListTag; -public class PacketPlayOutMapChunk extends Packet { +public class PacketPlayOutMapChunk extends PacketOut { private int chunkX; private int chunkZ; @@ -38,6 +38,7 @@ public class PacketPlayOutMapChunk extends Packet { return chunkZ; } + @Override public byte[] getBytes() throws IOException { ByteArrayOutputStream buffer = new ByteArrayOutputStream(); diff --git a/src/com/loohp/limbo/Server/Packets/PacketPlayOutPlayerAbilities.java b/src/com/loohp/limbo/Server/Packets/PacketPlayOutPlayerAbilities.java index 701f300..39f1f5f 100644 --- a/src/com/loohp/limbo/Server/Packets/PacketPlayOutPlayerAbilities.java +++ b/src/com/loohp/limbo/Server/Packets/PacketPlayOutPlayerAbilities.java @@ -4,7 +4,7 @@ import java.io.ByteArrayOutputStream; import java.io.DataOutputStream; import java.io.IOException; -public class PacketPlayOutPlayerAbilities extends Packet { +public class PacketPlayOutPlayerAbilities extends PacketOut { public enum PlayerAbilityFlags { INVULNERABLE(0x01), @@ -45,6 +45,7 @@ public class PacketPlayOutPlayerAbilities extends Packet { return fieldOfField; } + @Override public byte[] getBytes() throws IOException { ByteArrayOutputStream buffer = new ByteArrayOutputStream(); diff --git a/src/com/loohp/limbo/Server/Packets/PacketPlayOutPlayerInfo.java b/src/com/loohp/limbo/Server/Packets/PacketPlayOutPlayerInfo.java index e310486..8d15fe0 100644 --- a/src/com/loohp/limbo/Server/Packets/PacketPlayOutPlayerInfo.java +++ b/src/com/loohp/limbo/Server/Packets/PacketPlayOutPlayerInfo.java @@ -11,7 +11,7 @@ import com.loohp.limbo.Server.Packets.PacketPlayOutPlayerInfo.PlayerInfoData.Pla import com.loohp.limbo.Utils.DataTypeIO; import com.loohp.limbo.Utils.GameMode; -public class PacketPlayOutPlayerInfo extends Packet { +public class PacketPlayOutPlayerInfo extends PacketOut { public enum PlayerInfoAction { ADD_PLAYER(0), UPDATE_GAMEMODE(1), UPDATE_LATENCY(2), UPDATE_DISPLAY_NAME(3), REMOVE_PLAYER(4); @@ -49,6 +49,7 @@ public class PacketPlayOutPlayerInfo extends Packet { return data; } + @Override public byte[] getBytes() throws IOException { ByteArrayOutputStream buffer = new ByteArrayOutputStream(); diff --git a/src/com/loohp/limbo/Server/Packets/PacketPlayOutPositionAndLook.java b/src/com/loohp/limbo/Server/Packets/PacketPlayOutPositionAndLook.java index 1d6545f..f574fad 100644 --- a/src/com/loohp/limbo/Server/Packets/PacketPlayOutPositionAndLook.java +++ b/src/com/loohp/limbo/Server/Packets/PacketPlayOutPositionAndLook.java @@ -9,7 +9,7 @@ import java.util.stream.Collectors; import com.loohp.limbo.Utils.DataTypeIO; -public class PacketPlayOutPositionAndLook extends Packet { +public class PacketPlayOutPositionAndLook extends PacketOut { public enum PlayerTeleportFlags { X((byte) 0x01), @@ -75,6 +75,7 @@ public class PacketPlayOutPositionAndLook extends Packet { return teleportId; } + @Override public byte[] getBytes() throws IOException { ByteArrayOutputStream buffer = new ByteArrayOutputStream(); diff --git a/src/com/loohp/limbo/Server/Packets/PacketPlayOutShowPlayerSkins.java b/src/com/loohp/limbo/Server/Packets/PacketPlayOutShowPlayerSkins.java index 383cdfb..68b9d6a 100644 --- a/src/com/loohp/limbo/Server/Packets/PacketPlayOutShowPlayerSkins.java +++ b/src/com/loohp/limbo/Server/Packets/PacketPlayOutShowPlayerSkins.java @@ -6,7 +6,7 @@ import java.io.IOException; import com.loohp.limbo.Utils.DataTypeIO; -public class PacketPlayOutShowPlayerSkins extends Packet { +public class PacketPlayOutShowPlayerSkins extends PacketOut { private int entityId; @@ -18,6 +18,7 @@ public class PacketPlayOutShowPlayerSkins extends Packet { return entityId; } + @Override public byte[] getBytes() throws IOException { ByteArrayOutputStream buffer = new ByteArrayOutputStream(); diff --git a/src/com/loohp/limbo/Server/Packets/PacketPlayOutSpawnPosition.java b/src/com/loohp/limbo/Server/Packets/PacketPlayOutSpawnPosition.java index 668adbb..8faf348 100644 --- a/src/com/loohp/limbo/Server/Packets/PacketPlayOutSpawnPosition.java +++ b/src/com/loohp/limbo/Server/Packets/PacketPlayOutSpawnPosition.java @@ -6,7 +6,7 @@ import java.io.IOException; import com.loohp.limbo.World.BlockPosition; -public class PacketPlayOutSpawnPosition extends Packet { +public class PacketPlayOutSpawnPosition extends PacketOut { private BlockPosition position; diff --git a/src/com/loohp/limbo/Server/Packets/PacketPlayOutUpdateViewPosition.java b/src/com/loohp/limbo/Server/Packets/PacketPlayOutUpdateViewPosition.java index d5aab7f..ada5ac6 100644 --- a/src/com/loohp/limbo/Server/Packets/PacketPlayOutUpdateViewPosition.java +++ b/src/com/loohp/limbo/Server/Packets/PacketPlayOutUpdateViewPosition.java @@ -6,7 +6,7 @@ import java.io.IOException; import com.loohp.limbo.Utils.DataTypeIO; -public class PacketPlayOutUpdateViewPosition extends Packet { +public class PacketPlayOutUpdateViewPosition extends PacketOut { private int chunkX; private int chunkZ; @@ -24,6 +24,7 @@ public class PacketPlayOutUpdateViewPosition extends Packet { return chunkZ; } + @Override public byte[] getBytes() throws IOException { ByteArrayOutputStream buffer = new ByteArrayOutputStream(); diff --git a/src/com/loohp/limbo/Server/Packets/PacketStatusInPing.java b/src/com/loohp/limbo/Server/Packets/PacketStatusInPing.java index 147481e..bc02893 100644 --- a/src/com/loohp/limbo/Server/Packets/PacketStatusInPing.java +++ b/src/com/loohp/limbo/Server/Packets/PacketStatusInPing.java @@ -3,7 +3,7 @@ package com.loohp.limbo.Server.Packets; import java.io.DataInputStream; import java.io.IOException; -public class PacketStatusInPing extends Packet { +public class PacketStatusInPing extends PacketIn { private long payload; diff --git a/src/com/loohp/limbo/Server/Packets/PacketStatusInRequest.java b/src/com/loohp/limbo/Server/Packets/PacketStatusInRequest.java index 897651f..bbf764c 100644 --- a/src/com/loohp/limbo/Server/Packets/PacketStatusInRequest.java +++ b/src/com/loohp/limbo/Server/Packets/PacketStatusInRequest.java @@ -2,7 +2,7 @@ package com.loohp.limbo.Server.Packets; import java.io.DataInputStream; -public class PacketStatusInRequest extends Packet { +public class PacketStatusInRequest extends PacketIn { public PacketStatusInRequest() { diff --git a/src/com/loohp/limbo/Server/Packets/PacketStatusOutPong.java b/src/com/loohp/limbo/Server/Packets/PacketStatusOutPong.java index c7361c4..70fa914 100644 --- a/src/com/loohp/limbo/Server/Packets/PacketStatusOutPong.java +++ b/src/com/loohp/limbo/Server/Packets/PacketStatusOutPong.java @@ -4,7 +4,7 @@ import java.io.ByteArrayOutputStream; import java.io.DataOutputStream; import java.io.IOException; -public class PacketStatusOutPong extends Packet { +public class PacketStatusOutPong extends PacketOut { private long payload; @@ -16,6 +16,7 @@ public class PacketStatusOutPong extends Packet { return payload; } + @Override public byte[] getBytes() throws IOException { ByteArrayOutputStream buffer = new ByteArrayOutputStream(); diff --git a/src/com/loohp/limbo/Server/Packets/PacketStatusOutResponse.java b/src/com/loohp/limbo/Server/Packets/PacketStatusOutResponse.java index cb82e78..ec2cbb0 100644 --- a/src/com/loohp/limbo/Server/Packets/PacketStatusOutResponse.java +++ b/src/com/loohp/limbo/Server/Packets/PacketStatusOutResponse.java @@ -7,7 +7,7 @@ import java.nio.charset.StandardCharsets; import com.loohp.limbo.Utils.DataTypeIO; -public class PacketStatusOutResponse extends Packet { +public class PacketStatusOutResponse extends PacketOut { private String json; @@ -19,6 +19,7 @@ public class PacketStatusOutResponse extends Packet { return json; } + @Override public byte[] getBytes() throws IOException { ByteArrayOutputStream buffer = new ByteArrayOutputStream(); diff --git a/src/mapping.json b/src/mapping.json new file mode 100644 index 0000000..f7a9d94 --- /dev/null +++ b/src/mapping.json @@ -0,0 +1,37 @@ +{ + "HandshakeIn": { + "0x00": "PacketHandshakingIn" + }, + "LoginIn": { + "0x00": "PacketLoginInLoginStart" + }, + "LoginOut": { + "PacketLoginOutLoginSuccess": "0x02" + }, + "PlayIn": { + "0x10": "PacketPlayInKeepAlive", + "0x03": "PacketPlayInChat", + "0x13": "PacketPlayInPositionAndLook", + "0x12": "PacketPlayInPosition" + }, + "PlayOut": { + "PacketPlayOutLogin": "0x25", + "PacketPlayOutPositionAndLook": "0x35", + "PacketPlayOutSpawnPosition": "0x42", + "PacketPlayOutChat": "0x0E", + "PacketPlayOutPlayerAbilities": "0x31", + "PacketPlayOutMapChunk": "0x21", + "PacketPlayOutKeepAlive": "0x20", + "PacketPlayOutPlayerInfo": "0x33", + "PacketPlayOutUpdateViewPosition": "0x40", + "PacketPlayOutShowPlayerSkins": "0x44" + }, + "StatusIn": { + "0x01": "PacketStatusInPing", + "0x00": "PacketStatusInRequest" + }, + "StatusOut": { + "PacketStatusOutResponse": "0x00", + "PacketStatusOutPong": "0x01" + } +} \ No newline at end of file