Archived
0

реорганизация работы Player manager

(cherry picked from commit f92b80d0ae10c329477ce39e41147a320301c2d5)
This commit is contained in:
2018-04-26 21:26:56 +03:00
parent 95a0f98e8e
commit fc59185922
7 changed files with 58 additions and 67 deletions

View File

@@ -1,23 +0,0 @@
/*
* DmitriyMX <dimon550@gmail.com>
* 2018-04-15
*/
package mc.core.network.proto_125.netty;
import lombok.Getter;
import lombok.Setter;
import mc.core.Location;
import mc.core.Look;
import mc.core.Player;
import mc.core.network.NetChannel;
@Getter
@Setter
public class NettyPlayer implements Player {
private int id;
private String name;
private boolean online;
private NetChannel channel;
private Location location;
private Look look;
}

View File

@@ -6,6 +6,7 @@
package mc.core.network.proto_125.netty;
import io.netty.channel.Channel;
import io.netty.channel.ChannelFutureListener;
import io.netty.channel.ChannelHandlerContext;
import io.netty.channel.SimpleChannelInboundHandler;
import io.netty.util.AttributeKey;
@@ -19,11 +20,9 @@ import org.springframework.beans.factory.annotation.Autowired;
import java.lang.reflect.Method;
import java.util.Arrays;
import java.util.Optional;
import java.util.Random;
@Slf4j
public class PacketHandler extends SimpleChannelInboundHandler<CSPacket> {
private static final Random random = new Random();
private static final AttributeKey<Player> ATTR_PLAYER = AttributeKey.newInstance("ATTR_PLAYER");
@Autowired
private Config config;
@@ -35,7 +34,8 @@ public class PacketHandler extends SimpleChannelInboundHandler<CSPacket> {
super.channelInactive(context);
Player player = context.channel().attr(ATTR_PLAYER).get();
if (player != null) {
playerManager.removePlayer(player);
playerManager.leftServer(player);
player.setChannel(null);
}
context.channel().attr(ATTR_PLAYER).set(null);
}
@@ -72,16 +72,16 @@ public class PacketHandler extends SimpleChannelInboundHandler<CSPacket> {
Optional<Player> optPlayer = playerManager.getPlayer(packet.getPlayerName());
if (optPlayer.isPresent()) {
player = optPlayer.get();
} else {
int pId = random.nextInt(9999);
player = new NettyPlayer();
player.setId(pId);
player.setName(packet.getPlayerName());
if (player.isOnline()) {
channel.writeAndFlush(new KickPacket("Player is exists in server"))
.addListener(ChannelFutureListener.CLOSE);
return;
}
} else {
player = playerManager.createPlayer(packet.getPlayerName());
player.setLocation(spawnLoc);
player.setLook(new Look(0f, 0f));
player.setOnline(true);
playerManager.addPlayer(player);
}
// Response login
@@ -165,7 +165,7 @@ public class PacketHandler extends SimpleChannelInboundHandler<CSPacket> {
channel.attr(ATTR_PLAYER).set(player);
player.setChannel(new WrapperNetChannel(channel));
player.setOnline(true);
playerManager.joinServer(player);
channel.flush();
}