diff --git a/core/src/main/java/mc/core/player/InMemoryPlayerManager.java b/core/src/main/java/mc/core/player/InMemoryPlayerManager.java index 01240f7..91b487a 100644 --- a/core/src/main/java/mc/core/player/InMemoryPlayerManager.java +++ b/core/src/main/java/mc/core/player/InMemoryPlayerManager.java @@ -7,6 +7,7 @@ package mc.core.player; import lombok.Setter; import lombok.extern.slf4j.Slf4j; import mc.core.Config; +import mc.core.Location; import mc.core.network.BroadcastNetChannel; import mc.core.network.NetChannel; import org.springframework.beans.factory.annotation.Autowired; @@ -30,10 +31,12 @@ public class InMemoryPlayerManager implements PlayerManager, Runnable { } @Override - public Player createPlayer(String name) { + public Player createPlayer(String name, Location defaultLocation, Look defaultLook) { SimplePlayer player = new SimplePlayer(); player.setId(rand.nextInt(10000)); player.setName(name); + player.setLocation(defaultLocation); + player.setLook(defaultLook); synchronized (lock) { players.add(player); diff --git a/core/src/main/java/mc/core/player/PlayerManager.java b/core/src/main/java/mc/core/player/PlayerManager.java index a3458a7..42e1182 100644 --- a/core/src/main/java/mc/core/player/PlayerManager.java +++ b/core/src/main/java/mc/core/player/PlayerManager.java @@ -4,13 +4,14 @@ */ package mc.core.player; +import mc.core.Location; import mc.core.network.NetChannel; import java.util.List; import java.util.Optional; public interface PlayerManager { - Player createPlayer(String name); + Player createPlayer(String name, Location defaultLocation, Look defaultLook); void joinServer(Player player); void leftServer(Player player); Optional getPlayer(String name); diff --git a/proto125_netty/src/main/java/mc/core/network/proto_125/netty/PacketHandler.java b/proto125_netty/src/main/java/mc/core/network/proto_125/netty/PacketHandler.java index 0a0b455..89f8e1f 100644 --- a/proto125_netty/src/main/java/mc/core/network/proto_125/netty/PacketHandler.java +++ b/proto125_netty/src/main/java/mc/core/network/proto_125/netty/PacketHandler.java @@ -101,9 +101,11 @@ public class PacketHandler extends SimpleChannelInboundHandler { channel.writeAndFlush(new KickPacket(event.getDenyReason())) .addListener(ChannelFutureListener.CLOSE); } else { - Player player = playerManager.createPlayer(packet.getPlayerName()); - player.setLocation(world.getSpawn()); - player.setLook(new Look(0f, 0f)); + Player player = playerManager.getPlayer(packet.getPlayerName()) + .orElseGet(() -> playerManager.createPlayer( + packet.getPlayerName(), + world.getSpawn(), + new Look(0f, 0f))); // Response login packet.setPlayerId(player.getId());