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.Setter;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import mc.core.Config; import mc.core.Config;
import mc.core.Location;
import mc.core.network.BroadcastNetChannel; import mc.core.network.BroadcastNetChannel;
import mc.core.network.NetChannel; import mc.core.network.NetChannel;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
@@ -30,10 +31,12 @@ public class InMemoryPlayerManager implements PlayerManager, Runnable {
} }
@Override @Override
public Player createPlayer(String name) { public Player createPlayer(String name, Location defaultLocation, Look defaultLook) {
SimplePlayer player = new SimplePlayer(); SimplePlayer player = new SimplePlayer();
player.setId(rand.nextInt(10000)); player.setId(rand.nextInt(10000));
player.setName(name); player.setName(name);
player.setLocation(defaultLocation);
player.setLook(defaultLook);
synchronized (lock) { synchronized (lock) {
players.add(player); players.add(player);

View File

@@ -4,13 +4,14 @@
*/ */
package mc.core.player; package mc.core.player;
import mc.core.Location;
import mc.core.network.NetChannel; import mc.core.network.NetChannel;
import java.util.List; import java.util.List;
import java.util.Optional; import java.util.Optional;
public interface PlayerManager { public interface PlayerManager {
Player createPlayer(String name); Player createPlayer(String name, Location defaultLocation, Look defaultLook);
void joinServer(Player player); void joinServer(Player player);
void leftServer(Player player); void leftServer(Player player);
Optional<Player> getPlayer(String name); Optional<Player> getPlayer(String name);

View File

@@ -101,9 +101,11 @@ public class PacketHandler extends SimpleChannelInboundHandler<CSPacket> {
channel.writeAndFlush(new KickPacket(event.getDenyReason())) channel.writeAndFlush(new KickPacket(event.getDenyReason()))
.addListener(ChannelFutureListener.CLOSE); .addListener(ChannelFutureListener.CLOSE);
} else { } else {
Player player = playerManager.createPlayer(packet.getPlayerName()); Player player = playerManager.getPlayer(packet.getPlayerName())
player.setLocation(world.getSpawn()); .orElseGet(() -> playerManager.createPlayer(
player.setLook(new Look(0f, 0f)); packet.getPlayerName(),
world.getSpawn(),
new Look(0f, 0f)));
// Response login // Response login
packet.setPlayerId(player.getId()); packet.setPlayerId(player.getId());