Archived
0

fix spawn joining players

This commit is contained in:
2018-05-11 23:16:23 +03:00
parent fa2909b38d
commit b915b50cd8
3 changed files with 11 additions and 5 deletions

View File

@@ -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);

View File

@@ -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<Player> getPlayer(String name);

View File

@@ -101,9 +101,11 @@ public class PacketHandler extends SimpleChannelInboundHandler<CSPacket> {
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());