From 993d9a82934027786246f4e519481a12a7bbcb42 Mon Sep 17 00:00:00 2001 From: Daniil Date: Mon, 6 Aug 2018 00:07:57 +0700 Subject: [PATCH 1/2] WarpPosition structure rework --- core/src/main/java/mc/core/WarpPosition.java | 90 ++++++++++++++++++-- core/src/main/java/mc/core/player/ILook.java | 15 ++++ core/src/main/java/mc/core/player/Look.java | 5 +- 3 files changed, 100 insertions(+), 10 deletions(-) create mode 100644 core/src/main/java/mc/core/player/ILook.java diff --git a/core/src/main/java/mc/core/WarpPosition.java b/core/src/main/java/mc/core/WarpPosition.java index 6e1aacf..4a0e501 100644 --- a/core/src/main/java/mc/core/WarpPosition.java +++ b/core/src/main/java/mc/core/WarpPosition.java @@ -1,14 +1,90 @@ package mc.core; -import lombok.AllArgsConstructor; -import lombok.Data; +import mc.core.player.ILook; import mc.core.player.Look; +import mc.core.world.World; import java.io.Serializable; +import java.util.Objects; -@Data -@AllArgsConstructor -public class WarpPosition implements Serializable { - private Location location; - private Look look; +public class WarpPosition extends Location implements Serializable, ILook { + private ILook look; + + public WarpPosition(double x, double y, double z, World world) { + super(x, y, z, world); + } + + public WarpPosition(double x, double y, double z, float yaw, float pitch, World world) { + super(x, y, z, world); + this.look = new Look(yaw, pitch); + } + + public WarpPosition(double x, double y, double z) { + super(x, y, z); + } + + public WarpPosition(double x, double y, double z, float yaw, float pitch) { + super(x, y, z); + this.look = new Look(yaw, pitch); + } + + public WarpPosition(long compactValue) { + super(compactValue); + } + + public WarpPosition(Location location) { + super(location.getX(), location.getY(), location.getZ()); + } + + public WarpPosition(Location location, Look look) { + super(location.getX(), location.getY(), location.getZ()); + this.look = look; + } + + public WarpPosition(long compactValue, World world) { + super(compactValue, world); + } + + @Override + public void set(Look look) { + this.look = look; + } + + @Override + public float getYaw() { + return this.look.getYaw(); + } + + @Override + public void setYaw(float yaw) { + this.look.setYaw(yaw); + } + + @Override + public float getPitch() { + return this.look.getPitch(); + } + + @Override + public void setPitch(float pitch) { + this.look.setPitch(pitch); + } + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + if (!super.equals(o)) return false; + WarpPosition that = (WarpPosition) o; + return Objects.equals(look, that.look); + } + + @Override + public int hashCode() { + return Objects.hash(super.hashCode(), look); + } + + public boolean hasLook() { + return look != null; + } } diff --git a/core/src/main/java/mc/core/player/ILook.java b/core/src/main/java/mc/core/player/ILook.java new file mode 100644 index 0000000..fdebd51 --- /dev/null +++ b/core/src/main/java/mc/core/player/ILook.java @@ -0,0 +1,15 @@ +package mc.core.player; + +import java.io.Serializable; + +public interface ILook extends Serializable { + void set(Look look); + + float getYaw(); + + float getPitch(); + + void setYaw(float yaw); + + void setPitch(float pitch); +} diff --git a/core/src/main/java/mc/core/player/Look.java b/core/src/main/java/mc/core/player/Look.java index 1c0f7f4..f15f6f7 100644 --- a/core/src/main/java/mc/core/player/Look.java +++ b/core/src/main/java/mc/core/player/Look.java @@ -7,13 +7,12 @@ package mc.core.player; import lombok.AllArgsConstructor; import lombok.Data; -import java.io.Serializable; - @Data @AllArgsConstructor -public class Look implements Serializable{ +public class Look implements ILook { private float yaw, pitch; + @Override public void set(Look look) { this.yaw = look.yaw; this.pitch = look.pitch; From 0ca3e4db6f975ba23c1cc4260e615684be5dea46 Mon Sep 17 00:00:00 2001 From: Daniil Date: Mon, 6 Aug 2018 00:23:28 +0700 Subject: [PATCH 2/2] Proper Look structure refactoring --- core/src/main/java/mc/core/WarpPosition.java | 4 ++-- core/src/main/java/mc/core/embedded/FakePlayerManager.java | 4 ++-- core/src/main/java/mc/core/events/PlayerLookEvent.java | 4 ++-- core/src/main/java/mc/core/player/ILook.java | 6 ++---- .../main/java/mc/core/player/InMemoryPlayerManager.java | 2 +- core/src/main/java/mc/core/player/Look.java | 6 +++--- core/src/main/java/mc/core/player/Player.java | 2 +- core/src/main/java/mc/core/player/PlayerManager.java | 2 +- core/src/main/java/mc/core/player/SimplePlayer.java | 4 ++-- .../proto_1_12_2/packets/PlayerPositionAndLookPacket.java | 3 ++- .../network/proto_1_12_2/netty/handlers/LoginHandler.java | 7 +++---- 11 files changed, 21 insertions(+), 23 deletions(-) diff --git a/core/src/main/java/mc/core/WarpPosition.java b/core/src/main/java/mc/core/WarpPosition.java index 4a0e501..c23325e 100644 --- a/core/src/main/java/mc/core/WarpPosition.java +++ b/core/src/main/java/mc/core/WarpPosition.java @@ -36,7 +36,7 @@ public class WarpPosition extends Location implements Serializable, ILook { super(location.getX(), location.getY(), location.getZ()); } - public WarpPosition(Location location, Look look) { + public WarpPosition(Location location, ILook look) { super(location.getX(), location.getY(), location.getZ()); this.look = look; } @@ -46,7 +46,7 @@ public class WarpPosition extends Location implements Serializable, ILook { } @Override - public void set(Look look) { + public void set(ILook look) { this.look = look; } diff --git a/core/src/main/java/mc/core/embedded/FakePlayerManager.java b/core/src/main/java/mc/core/embedded/FakePlayerManager.java index 10a8ea5..061497a 100644 --- a/core/src/main/java/mc/core/embedded/FakePlayerManager.java +++ b/core/src/main/java/mc/core/embedded/FakePlayerManager.java @@ -8,7 +8,7 @@ import mc.core.Location; import mc.core.chat.MessageType; import mc.core.network.NetChannel; import mc.core.network.SCPacket; -import mc.core.player.Look; +import mc.core.player.ILook; import mc.core.player.Player; import mc.core.player.PlayerManager; import mc.core.text.Text; @@ -52,7 +52,7 @@ public class FakePlayerManager implements PlayerManager { private static final NetChannel FAKE_NET_CHANNEL = new FakeNetChannet(); @Override - public Player createPlayer(String name, Location defaultLocation, Look defaultLook) { + public Player createPlayer(String name, Location defaultLocation, ILook defaultLook) { return null; } diff --git a/core/src/main/java/mc/core/events/PlayerLookEvent.java b/core/src/main/java/mc/core/events/PlayerLookEvent.java index 2d03b0b..fc4734f 100644 --- a/core/src/main/java/mc/core/events/PlayerLookEvent.java +++ b/core/src/main/java/mc/core/events/PlayerLookEvent.java @@ -7,7 +7,7 @@ package mc.core.events; import lombok.Getter; import lombok.RequiredArgsConstructor; import lombok.Setter; -import mc.core.player.Look; +import mc.core.player.ILook; import mc.core.player.Player; @RequiredArgsConstructor @@ -15,5 +15,5 @@ import mc.core.player.Player; @Setter public class PlayerLookEvent extends EventBase { private final Player player; - private Look newLook; + private ILook newLook; } diff --git a/core/src/main/java/mc/core/player/ILook.java b/core/src/main/java/mc/core/player/ILook.java index fdebd51..e0981bf 100644 --- a/core/src/main/java/mc/core/player/ILook.java +++ b/core/src/main/java/mc/core/player/ILook.java @@ -1,9 +1,7 @@ package mc.core.player; -import java.io.Serializable; - -public interface ILook extends Serializable { - void set(Look look); +public interface ILook { + void set(ILook look); float getYaw(); diff --git a/core/src/main/java/mc/core/player/InMemoryPlayerManager.java b/core/src/main/java/mc/core/player/InMemoryPlayerManager.java index 0ba717c..bf62814 100644 --- a/core/src/main/java/mc/core/player/InMemoryPlayerManager.java +++ b/core/src/main/java/mc/core/player/InMemoryPlayerManager.java @@ -31,7 +31,7 @@ public class InMemoryPlayerManager implements PlayerManager, Runnable { } @Override - public Player createPlayer(String name, Location defaultLocation, Look defaultLook) { + public Player createPlayer(String name, Location defaultLocation, ILook defaultLook) { SimplePlayer player = new SimplePlayer(); player.setId(rand.nextInt(10000)); player.setUUID(UUID.nameUUIDFromBytes(name.getBytes())); diff --git a/core/src/main/java/mc/core/player/Look.java b/core/src/main/java/mc/core/player/Look.java index f15f6f7..a13da39 100644 --- a/core/src/main/java/mc/core/player/Look.java +++ b/core/src/main/java/mc/core/player/Look.java @@ -13,8 +13,8 @@ public class Look implements ILook { private float yaw, pitch; @Override - public void set(Look look) { - this.yaw = look.yaw; - this.pitch = look.pitch; + public void set(ILook look) { + this.yaw = look.getYaw(); + this.pitch = look.getPitch(); } } diff --git a/core/src/main/java/mc/core/player/Player.java b/core/src/main/java/mc/core/player/Player.java index 0b0e2c2..ababfb0 100644 --- a/core/src/main/java/mc/core/player/Player.java +++ b/core/src/main/java/mc/core/player/Player.java @@ -20,7 +20,7 @@ public interface Player { Location getLocation(); - Look getLook(); + ILook getLook(); boolean isFlying(); void setFlying(boolean value); diff --git a/core/src/main/java/mc/core/player/PlayerManager.java b/core/src/main/java/mc/core/player/PlayerManager.java index 8dd1c7a..aa63e66 100644 --- a/core/src/main/java/mc/core/player/PlayerManager.java +++ b/core/src/main/java/mc/core/player/PlayerManager.java @@ -11,7 +11,7 @@ import java.util.List; import java.util.Optional; public interface PlayerManager { - Player createPlayer(String name, Location defaultLocation, Look defaultLook); + Player createPlayer(String name, Location defaultLocation, ILook defaultLook); void joinServer(Player player); void leftServer(Player player); Optional getPlayer(String name); diff --git a/core/src/main/java/mc/core/player/SimplePlayer.java b/core/src/main/java/mc/core/player/SimplePlayer.java index f841595..a918971 100644 --- a/core/src/main/java/mc/core/player/SimplePlayer.java +++ b/core/src/main/java/mc/core/player/SimplePlayer.java @@ -18,7 +18,7 @@ public class SimplePlayer implements Player { private boolean online = false; private NetChannel channel; private Location location = new Location(0, 0, 0); - private Look look = new Look(0, 0); + private ILook look = new Look(0, 0); private boolean flying = false; private PlayerSettings settings; @@ -26,7 +26,7 @@ public class SimplePlayer implements Player { this.location.set(location); } - public void setLook(Look look) { + public void setLook(ILook look) { this.look.set(look); } diff --git a/proto_1.12.2/src/main/java/mc/core/network/proto_1_12_2/packets/PlayerPositionAndLookPacket.java b/proto_1.12.2/src/main/java/mc/core/network/proto_1_12_2/packets/PlayerPositionAndLookPacket.java index 4133bbe..1255e0c 100644 --- a/proto_1.12.2/src/main/java/mc/core/network/proto_1_12_2/packets/PlayerPositionAndLookPacket.java +++ b/proto_1.12.2/src/main/java/mc/core/network/proto_1_12_2/packets/PlayerPositionAndLookPacket.java @@ -10,6 +10,7 @@ import lombok.Setter; import lombok.ToString; import mc.core.Location; import mc.core.network.*; +import mc.core.player.ILook; import mc.core.player.Look; @NoArgsConstructor @@ -18,7 +19,7 @@ import mc.core.player.Look; @ToString public class PlayerPositionAndLookPacket implements SCPacket, CSPacket { private Location location; - private Look look; + private ILook look; private int teleportId; private boolean onGround = false; diff --git a/proto_1.12.2_netty/src/main/java/mc/core/network/proto_1_12_2/netty/handlers/LoginHandler.java b/proto_1.12.2_netty/src/main/java/mc/core/network/proto_1_12_2/netty/handlers/LoginHandler.java index bbbbb6d..a136bd2 100644 --- a/proto_1.12.2_netty/src/main/java/mc/core/network/proto_1_12_2/netty/handlers/LoginHandler.java +++ b/proto_1.12.2_netty/src/main/java/mc/core/network/proto_1_12_2/netty/handlers/LoginHandler.java @@ -10,7 +10,6 @@ import mc.core.network.proto_1_12_2.State; import mc.core.network.proto_1_12_2.TeleportManager; import mc.core.network.proto_1_12_2.netty.wrappers.WrapperNetChannel; import mc.core.network.proto_1_12_2.packets.*; -import mc.core.player.Look; import mc.core.player.Player; import mc.core.player.PlayerManager; import mc.core.player.PlayerMode; @@ -48,8 +47,8 @@ public class LoginHandler extends AbstractStateHandler implements LoginStateHand Player player = playerManager.getPlayer(packet.getPlayerName()) .orElseGet(() -> playerManager.createPlayer( packet.getPlayerName(), - world.getSpawn().getLocation(), - world.getSpawn().getLook())); + world.getSpawn(), + world.getSpawn())); channel.writeAndFlush(new LoginSuccessPacket( player.getUUID(), @@ -68,7 +67,7 @@ public class LoginHandler extends AbstractStateHandler implements LoginStateHand // Spawn Position SpawnPositionPacket pkt2 = new SpawnPositionPacket(); - pkt2.setLocation(world.getSpawn().getLocation()); + pkt2.setLocation(world.getSpawn()); channel.write(pkt2); // Player Abilities