From a3880f49ec36e3698cd1ad686a5c23cb1e0eb6f4 Mon Sep 17 00:00:00 2001 From: DmitriyMX Date: Sat, 11 Aug 2018 11:59:33 +0300 Subject: [PATCH] added packets PlayerPosition & PlayerLook --- .../mc/core/network/proto_1_12_2/State.java | 2 ++ .../packets/PlayerLookPacket.java | 18 ++++++++++++++++++ .../packets/PlayerPositionPacket.java | 19 +++++++++++++++++++ .../netty/handlers/PlayHandler.java | 17 +++++++++++++---- 4 files changed, 52 insertions(+), 4 deletions(-) create mode 100644 proto_1.12.2/src/main/java/mc/core/network/proto_1_12_2/packets/PlayerLookPacket.java create mode 100644 proto_1.12.2/src/main/java/mc/core/network/proto_1_12_2/packets/PlayerPositionPacket.java diff --git a/proto_1.12.2/src/main/java/mc/core/network/proto_1_12_2/State.java b/proto_1.12.2/src/main/java/mc/core/network/proto_1_12_2/State.java index feb4f26..d963a59 100644 --- a/proto_1.12.2/src/main/java/mc/core/network/proto_1_12_2/State.java +++ b/proto_1.12.2/src/main/java/mc/core/network/proto_1_12_2/State.java @@ -77,7 +77,9 @@ public enum State { .put(0x04, ClientSettingsPacket.class) .put(0x09, PluginMessagePacket.class) .put(0x0B, KeepAlivePacket.class) + .put(0x0D, PlayerPositionPacket.class) .put(0x0E, PlayerPositionAndLookPacket.class) + .put(0x0F, PlayerLookPacket.class) .put(0x1A, HeldItemChangePacket.class) .put(0x1D, AnimationPacket.class) .build(), diff --git a/proto_1.12.2/src/main/java/mc/core/network/proto_1_12_2/packets/PlayerLookPacket.java b/proto_1.12.2/src/main/java/mc/core/network/proto_1_12_2/packets/PlayerLookPacket.java new file mode 100644 index 0000000..b21e14b --- /dev/null +++ b/proto_1.12.2/src/main/java/mc/core/network/proto_1_12_2/packets/PlayerLookPacket.java @@ -0,0 +1,18 @@ +package mc.core.network.proto_1_12_2.packets; + +import lombok.Getter; +import mc.core.network.CSPacket; +import mc.core.network.NetInputStream; + +@Getter +public class PlayerLookPacket implements CSPacket { + private float yaw, pitch; + private boolean onGround; // True if the client is on the ground, false otherwise + + @Override + public void readSelf(NetInputStream netStream) { + this.yaw = netStream.readFloat(); + this.pitch = netStream.readFloat(); + this.onGround = netStream.readBoolean(); + } +} diff --git a/proto_1.12.2/src/main/java/mc/core/network/proto_1_12_2/packets/PlayerPositionPacket.java b/proto_1.12.2/src/main/java/mc/core/network/proto_1_12_2/packets/PlayerPositionPacket.java new file mode 100644 index 0000000..986af29 --- /dev/null +++ b/proto_1.12.2/src/main/java/mc/core/network/proto_1_12_2/packets/PlayerPositionPacket.java @@ -0,0 +1,19 @@ +package mc.core.network.proto_1_12_2.packets; + +import lombok.Getter; +import mc.core.network.CSPacket; +import mc.core.network.NetInputStream; + +@Getter +public class PlayerPositionPacket implements CSPacket { + private double x, y, z; // Y - is feet position. Normally Head Y - +1.62d + private boolean onGround; // True if the client is on the ground, false otherwise + + @Override + public void readSelf(NetInputStream netStream) { + this.x = netStream.readDouble(); + this.y = netStream.readDouble(); + this.z = netStream.readDouble(); + this.onGround = netStream.readBoolean(); + } +} diff --git a/proto_1.12.2_netty/src/main/java/mc/core/network/proto_1_12_2/netty/handlers/PlayHandler.java b/proto_1.12.2_netty/src/main/java/mc/core/network/proto_1_12_2/netty/handlers/PlayHandler.java index 4c5d96f..f7cffb0 100644 --- a/proto_1.12.2_netty/src/main/java/mc/core/network/proto_1_12_2/netty/handlers/PlayHandler.java +++ b/proto_1.12.2_netty/src/main/java/mc/core/network/proto_1_12_2/netty/handlers/PlayHandler.java @@ -7,10 +7,7 @@ package mc.core.network.proto_1_12_2.netty.handlers; import io.netty.channel.Channel; import mc.core.chat.ChatProcessor; import mc.core.network.proto_1_12_2.TeleportManager; -import mc.core.network.proto_1_12_2.packets.ChatMessageClientPacket; -import mc.core.network.proto_1_12_2.packets.ClientSettingsPacket; -import mc.core.network.proto_1_12_2.packets.PlayerPositionAndLookPacket; -import mc.core.network.proto_1_12_2.packets.TeleportConfirmPacket; +import mc.core.network.proto_1_12_2.packets.*; import mc.core.player.Player; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; @@ -63,4 +60,16 @@ public class PlayHandler extends AbstractStateHandler implements PlayStateHandle packet.getMessage() ); } + + @Handler + public void onPlayerMove(Channel channel, PlayerPositionPacket packet) { + Player player = channel.attr(ATTR_PLAYER).get(); + player.getLocation().setXYZ(packet.getX(), packet.getY(), packet.getZ()); + } + + @Handler + public void onPlayerLook(Channel channel, PlayerLookPacket packet) { + Player player = channel.attr(ATTR_PLAYER).get(); + player.getLocation().setYawPitch(packet.getYaw(), packet.getPitch()); + } }