From 51f01f84cf79e5c39ef9f12132454532e2263583 Mon Sep 17 00:00:00 2001 From: DmitriyMX Date: Mon, 12 Jul 2021 19:10:21 +0300 Subject: [PATCH 1/3] add Vector --- .../main/java/mc/utils/vector/Vector2f.java | 49 +++++++++++++++++ .../main/java/mc/utils/vector/Vector3d.java | 53 +++++++++++++++++++ .../main/java/mc/utils/vector/Vector3i.java | 53 +++++++++++++++++++ 3 files changed, 155 insertions(+) create mode 100644 utils/src/main/java/mc/utils/vector/Vector2f.java create mode 100644 utils/src/main/java/mc/utils/vector/Vector3d.java create mode 100644 utils/src/main/java/mc/utils/vector/Vector3i.java diff --git a/utils/src/main/java/mc/utils/vector/Vector2f.java b/utils/src/main/java/mc/utils/vector/Vector2f.java new file mode 100644 index 0000000..40b20bf --- /dev/null +++ b/utils/src/main/java/mc/utils/vector/Vector2f.java @@ -0,0 +1,49 @@ +package mc.utils.vector; + +import lombok.EqualsAndHashCode; +import lombok.Getter; +import lombok.ToString; + +@Getter +@EqualsAndHashCode +@ToString +public class Vector2f { + + private float x; + private float y; + + public Vector2f(float x, float y) { + this.x = x; + this.y = y; + } + + public Vector2f(Vector2f vector2f) { + this(vector2f.getX(), vector2f.getY()); + } + + public Vector2f() { + this(0f, 0f); + } + + public void set(float x, float y) { + this.x = x; + this.y = y; + } + + public void set(Vector2f vector2f) { + this.set(vector2f.getX(), vector2f.getY()); + } + + public void add(float x, float y) { + this.x += x; + this.y += y; + } + + public void add(Vector2f vector2f) { + this.add(vector2f.getX(), vector2f.getY()); + } + + public Vector2f copy() { + return new Vector2f(this); + } +} diff --git a/utils/src/main/java/mc/utils/vector/Vector3d.java b/utils/src/main/java/mc/utils/vector/Vector3d.java new file mode 100644 index 0000000..364c780 --- /dev/null +++ b/utils/src/main/java/mc/utils/vector/Vector3d.java @@ -0,0 +1,53 @@ +package mc.utils.vector; + +import lombok.EqualsAndHashCode; +import lombok.Getter; +import lombok.ToString; + +@Getter +@EqualsAndHashCode +@ToString +public class Vector3d { + + private double x; + private double y; + private double z; + + public Vector3d(double x, double y, double z) { + this.x = x; + this.y = y; + this.z = z; + } + + public Vector3d(Vector3d vector3d) { + this(vector3d.getX(), vector3d.getY(), vector3d.getZ()); + } + + public Vector3d() { + this(0d, 0d, 0d); + } + + public void set(double x, double y, double z) { + this.x = x; + this.y = y; + this.z = z; + } + + public void set(Vector3d vector3d) { + this.set(vector3d.getX(), vector3d.getY(), vector3d.getZ()); + } + + public void add(double x, double y, double z) { + this.x += x; + this.y += y; + this.z += z; + } + + public void add(Vector3d vector3d) { + this.add(vector3d.getX(), vector3d.getY(), vector3d.getZ()); + } + + public Vector3d copy() { + return new Vector3d(this); + } +} diff --git a/utils/src/main/java/mc/utils/vector/Vector3i.java b/utils/src/main/java/mc/utils/vector/Vector3i.java new file mode 100644 index 0000000..2560481 --- /dev/null +++ b/utils/src/main/java/mc/utils/vector/Vector3i.java @@ -0,0 +1,53 @@ +package mc.utils.vector; + +import lombok.EqualsAndHashCode; +import lombok.Getter; +import lombok.ToString; + +@Getter +@EqualsAndHashCode +@ToString +public class Vector3i { + + private int x; + private int y; + private int z; + + public Vector3i(int x, int y, int z) { + this.x = x; + this.y = y; + this.z = z; + } + + public Vector3i(Vector3i vector3i) { + this(vector3i.getX(), vector3i.getY(), vector3i.getZ()); + } + + public Vector3i() { + this(0, 0, 0); + } + + public void set(int x, int y, int z) { + this.x = x; + this.y = y; + this.z = z; + } + + public void set(Vector3i vector3i) { + this.set(vector3i.getX(), vector3i.getY(), vector3i.getZ()); + } + + public void add(int x, int y, int z) { + this.x += x; + this.y += y; + this.z += z; + } + + public void add(Vector3i vector3i) { + this.add(vector3i.getX(), vector3i.getY(), vector3i.getZ()); + } + + public Vector3i copy() { + return new Vector3i(this); + } +} From 9c9523d629d320a0bc527333e097a192ed051704 Mon Sep 17 00:00:00 2001 From: DmitriyMX Date: Mon, 12 Jul 2021 19:10:40 +0300 Subject: [PATCH 2/3] used Vector --- .../main/java/mc/protocol/model/Location.java | 20 ++++--------- .../src/main/java/mc/protocol/model/Look.java | 28 +++++++++++++------ .../client/CPlayerPositionAndLookPacket.java | 10 +++++-- .../packets/play/client/PlayerLookPacket.java | 5 +++- .../play/client/PlayerPositionPacket.java | 5 +++- 5 files changed, 41 insertions(+), 27 deletions(-) diff --git a/protocol/src/main/java/mc/protocol/model/Location.java b/protocol/src/main/java/mc/protocol/model/Location.java index 293ad86..c1d2d7d 100644 --- a/protocol/src/main/java/mc/protocol/model/Location.java +++ b/protocol/src/main/java/mc/protocol/model/Location.java @@ -1,18 +1,10 @@ package mc.protocol.model; -import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.ToString; +import mc.utils.vector.Vector3d; -@Data -public class Location { - private double x = 0d; - private double y = 0d; - private double z = 0d; - - public Location set(double x, double y, double z) { - this.x = x; - this.y = y; - this.z = z; - - return this; - } +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +public class Location extends Vector3d { } diff --git a/protocol/src/main/java/mc/protocol/model/Look.java b/protocol/src/main/java/mc/protocol/model/Look.java index 334ad10..1551b95 100644 --- a/protocol/src/main/java/mc/protocol/model/Look.java +++ b/protocol/src/main/java/mc/protocol/model/Look.java @@ -1,16 +1,26 @@ package mc.protocol.model; -import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.ToString; +import mc.utils.vector.Vector2f; -@Data -public class Look { - private float yaw; - private float pitch; +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +public class Look extends Vector2f { - public Look set(float yaw, float pitch) { - this.yaw = yaw; - this.pitch = pitch; + /** + * Equal X + * @return X + */ + public float getYaw() { + return this.getX(); + } - return this; + /** + * Equal Y + * @return Y + */ + public float getPitch() { + return this.getY(); } } diff --git a/protocol/src/main/java/mc/protocol/packets/play/client/CPlayerPositionAndLookPacket.java b/protocol/src/main/java/mc/protocol/packets/play/client/CPlayerPositionAndLookPacket.java index 3e9b3b6..37624a6 100644 --- a/protocol/src/main/java/mc/protocol/packets/play/client/CPlayerPositionAndLookPacket.java +++ b/protocol/src/main/java/mc/protocol/packets/play/client/CPlayerPositionAndLookPacket.java @@ -43,21 +43,27 @@ public class CPlayerPositionAndLookPacket implements ClientSidePacket { double x = netByteBuf.readDouble(); double y = netByteBuf.readDouble(); double z = netByteBuf.readDouble(); - this.position = ProtocolObjectPool.getLocationPool().borrowObject().set(x, y, z); + this.position = ProtocolObjectPool.getLocationPool().borrowObject(); + position.set(x, y, z); float yaw = netByteBuf.readFloat(); float pitch = netByteBuf.readFloat(); - this.look = ProtocolObjectPool.getLookPool().borrowObject().set(yaw, pitch); + this.look = ProtocolObjectPool.getLookPool().borrowObject(); + this.look.set(yaw, pitch); this.onGround = netByteBuf.readBoolean(); } @Override public void passivate() { + this.position.set(0, 0, 0); ProtocolObjectPool.getLocationPool().returnObject(this.position); this.position = null; + + this.look.set(0, 0); ProtocolObjectPool.getLookPool().returnObject(this.look); this.look = null; + this.onGround = false; } diff --git a/protocol/src/main/java/mc/protocol/packets/play/client/PlayerLookPacket.java b/protocol/src/main/java/mc/protocol/packets/play/client/PlayerLookPacket.java index cff9cbf..de664c8 100644 --- a/protocol/src/main/java/mc/protocol/packets/play/client/PlayerLookPacket.java +++ b/protocol/src/main/java/mc/protocol/packets/play/client/PlayerLookPacket.java @@ -36,15 +36,18 @@ public class PlayerLookPacket implements ClientSidePacket { public void readSelf(NetByteBuf netByteBuf) { float yaw = netByteBuf.readFloat(); float pitch = netByteBuf.readFloat(); - this.look = ProtocolObjectPool.getLookPool().borrowObject().set(yaw, pitch); + this.look = ProtocolObjectPool.getLookPool().borrowObject(); + this.look.set(yaw, pitch); this.onGround = netByteBuf.readBoolean(); } @Override public void passivate() { + this.look.set(0, 0); ProtocolObjectPool.getLookPool().returnObject(this.look); this.look = null; + this.onGround = false; } } diff --git a/protocol/src/main/java/mc/protocol/packets/play/client/PlayerPositionPacket.java b/protocol/src/main/java/mc/protocol/packets/play/client/PlayerPositionPacket.java index 0a8bf1d..429afb1 100644 --- a/protocol/src/main/java/mc/protocol/packets/play/client/PlayerPositionPacket.java +++ b/protocol/src/main/java/mc/protocol/packets/play/client/PlayerPositionPacket.java @@ -39,15 +39,18 @@ public class PlayerPositionPacket implements ClientSidePacket { double x = netByteBuf.readDouble(); double y = netByteBuf.readDouble(); double z = netByteBuf.readDouble(); - this.position = ProtocolObjectPool.getLocationPool().borrowObject().set(x, y, z); + this.position = ProtocolObjectPool.getLocationPool().borrowObject(); + this.position.set(x, y, z); this.onGround = netByteBuf.readBoolean(); } @Override public void passivate() { + this.position.set(0, 0, 0); ProtocolObjectPool.getLocationPool().returnObject(this.position); this.position = null; + this.onGround = false; } From ee394bf183dd87ab35a45d8edbdb2e4aa8e64502 Mon Sep 17 00:00:00 2001 From: DmitriyMX Date: Mon, 12 Jul 2021 19:10:57 +0300 Subject: [PATCH 3/3] add BlockLocation, ChunkSectionLocation --- .../main/java/mc/protocol/model/BlockLocation.java | 11 +++++++++++ .../java/mc/protocol/model/ChunkSectionLocation.java | 10 ++++++++++ 2 files changed, 21 insertions(+) create mode 100644 protocol/src/main/java/mc/protocol/model/BlockLocation.java create mode 100644 protocol/src/main/java/mc/protocol/model/ChunkSectionLocation.java diff --git a/protocol/src/main/java/mc/protocol/model/BlockLocation.java b/protocol/src/main/java/mc/protocol/model/BlockLocation.java new file mode 100644 index 0000000..b6bedb3 --- /dev/null +++ b/protocol/src/main/java/mc/protocol/model/BlockLocation.java @@ -0,0 +1,11 @@ +package mc.protocol.model; + +import lombok.EqualsAndHashCode; +import lombok.ToString; +import mc.utils.vector.Vector3i; + +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +public class BlockLocation extends Vector3i { + +} diff --git a/protocol/src/main/java/mc/protocol/model/ChunkSectionLocation.java b/protocol/src/main/java/mc/protocol/model/ChunkSectionLocation.java new file mode 100644 index 0000000..a14ebef --- /dev/null +++ b/protocol/src/main/java/mc/protocol/model/ChunkSectionLocation.java @@ -0,0 +1,10 @@ +package mc.protocol.model; + +import lombok.EqualsAndHashCode; +import lombok.ToString; +import mc.utils.vector.Vector3i; + +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +public class ChunkSectionLocation extends Vector3i { +}