From 3d88f03a4531916dfeb5e38a7047af035a52be85 Mon Sep 17 00:00:00 2001 From: DmitriyMX Date: Thu, 2 Aug 2018 12:54:27 +0300 Subject: [PATCH] Remove LocationSerializer --- core/src/main/java/mc/core/Location.java | 21 +++++++++++++++ .../packets/SpawnPositionPacket.java | 3 +-- .../packets/TabCompletePacket.java | 3 +-- .../serializers/LocationSerializer.java | 27 ------------------- 4 files changed, 23 insertions(+), 31 deletions(-) delete mode 100644 proto_1.12.2/src/main/java/mc/core/network/proto_1_12_2/serializers/LocationSerializer.java diff --git a/core/src/main/java/mc/core/Location.java b/core/src/main/java/mc/core/Location.java index fa1e00b..cefec64 100644 --- a/core/src/main/java/mc/core/Location.java +++ b/core/src/main/java/mc/core/Location.java @@ -12,6 +12,11 @@ import lombok.Data; public class Location { private double x, y, z; + private static int floor_double(double value) { + int i = (int)value; + return value < (double)i ? i - 1 : i; + } + public static Location copyOf(Location location) { return new Location( location.x, @@ -20,12 +25,22 @@ public class Location { ); } + public Location(long compactValue) { + set(compactValue); + } + public void set(Location location) { this.x = location.x; this.y = location.y; this.z = location.z; } + public void set(long compactValue) { + this.x = compactValue >> 38; + this.y = (compactValue >> 26) & 0xFFF; + this.z = compactValue << 38 >> 38; // is normal? + } + public Location diff(Location location) { return new Location( this.x - location.x, @@ -45,4 +60,10 @@ public class Location { public int getBlockZ() { return (int) z; } + + public long toLong() { + return ((floor_double(x) & 0x3FFFFFF) << 38) + | ((floor_double(y) & 0xFFF) << 26) + | (floor_double(z) & 0x3FFFFFF); + } } diff --git a/proto_1.12.2/src/main/java/mc/core/network/proto_1_12_2/packets/SpawnPositionPacket.java b/proto_1.12.2/src/main/java/mc/core/network/proto_1_12_2/packets/SpawnPositionPacket.java index aa0ab3a..8b11502 100644 --- a/proto_1.12.2/src/main/java/mc/core/network/proto_1_12_2/packets/SpawnPositionPacket.java +++ b/proto_1.12.2/src/main/java/mc/core/network/proto_1_12_2/packets/SpawnPositionPacket.java @@ -11,7 +11,6 @@ import lombok.ToString; import mc.core.Location; import mc.core.network.NetOutputStream; import mc.core.network.SCPacket; -import mc.core.network.proto_1_12_2.serializers.LocationSerializer; @AllArgsConstructor @NoArgsConstructor @@ -22,6 +21,6 @@ public class SpawnPositionPacket implements SCPacket { @Override public void writeSelf(NetOutputStream netStream) { - netStream.writeLong(LocationSerializer.serialize(location)); + netStream.writeLong(location.toLong()); } } diff --git a/proto_1.12.2/src/main/java/mc/core/network/proto_1_12_2/packets/TabCompletePacket.java b/proto_1.12.2/src/main/java/mc/core/network/proto_1_12_2/packets/TabCompletePacket.java index 1c86920..3251bbb 100644 --- a/proto_1.12.2/src/main/java/mc/core/network/proto_1_12_2/packets/TabCompletePacket.java +++ b/proto_1.12.2/src/main/java/mc/core/network/proto_1_12_2/packets/TabCompletePacket.java @@ -7,7 +7,6 @@ package mc.core.network.proto_1_12_2.packets; import mc.core.Location; import mc.core.network.CSPacket; import mc.core.network.NetInputStream; -import mc.core.network.proto_1_12_2.serializers.LocationSerializer; public class TabCompletePacket implements CSPacket { private String text; @@ -22,7 +21,7 @@ public class TabCompletePacket implements CSPacket { this.hasPosition = netStream.readBoolean(); if (this.hasPosition) { - this.location = LocationSerializer.deserialize(netStream.readLong()); + this.location = new Location(netStream.readLong()); } } } diff --git a/proto_1.12.2/src/main/java/mc/core/network/proto_1_12_2/serializers/LocationSerializer.java b/proto_1.12.2/src/main/java/mc/core/network/proto_1_12_2/serializers/LocationSerializer.java deleted file mode 100644 index 3fd1318..0000000 --- a/proto_1.12.2/src/main/java/mc/core/network/proto_1_12_2/serializers/LocationSerializer.java +++ /dev/null @@ -1,27 +0,0 @@ -/* - * DmitriyMX - * 2018-06-11 - */ -package mc.core.network.proto_1_12_2.serializers; - -import mc.core.Location; - -public class LocationSerializer { - private static int floor_double(double value) { - int i = (int)value; - return value < (double)i ? i - 1 : i; - } - - public static long serialize(Location location) { - return ((floor_double(location.getX()) & 0x3FFFFFF) << 38) - | ((floor_double(location.getY()) & 0xFFF) << 26) - | (floor_double(location.getZ()) & 0x3FFFFFF); - } - - public static Location deserialize(long location) { - return new Location( - location >> 38, - (location >> 26) & 0xFFF, - location << 38 >> 38); - } -}