реорганизация работы Player manager
(cherry picked from commit f92b80d0ae10c329477ce39e41147a320301c2d5)
This commit is contained in:
@@ -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;
|
||||
}
|
||||
@@ -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();
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user