mirror of
https://github.com/Melledy/LunarCore.git
synced 2025-12-16 23:34:50 +01:00
Dont let people log on to the same player at the same time
This commit is contained in:
@@ -24,7 +24,7 @@ public class ChatService extends BaseGameService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Get target
|
// Get target
|
||||||
Player target = getServer().getPlayerByUid(targetUid);
|
Player target = getServer().getOnlinePlayerByUid(targetUid);
|
||||||
|
|
||||||
if (target == null) {
|
if (target == null) {
|
||||||
return;
|
return;
|
||||||
@@ -35,7 +35,7 @@ public class ChatService extends BaseGameService {
|
|||||||
|
|
||||||
public void sendPrivChat(Player player, int targetUid, int emote) {
|
public void sendPrivChat(Player player, int targetUid, int emote) {
|
||||||
// Get target
|
// Get target
|
||||||
Player target = getServer().getPlayerByUid(targetUid);
|
Player target = getServer().getOnlinePlayerByUid(targetUid);
|
||||||
|
|
||||||
if (target == null) {
|
if (target == null) {
|
||||||
return;
|
return;
|
||||||
|
|||||||
@@ -24,6 +24,7 @@ public class GameServer extends KcpServer {
|
|||||||
private final RegionInfo info;
|
private final RegionInfo info;
|
||||||
private final InetSocketAddress address;
|
private final InetSocketAddress address;
|
||||||
|
|
||||||
|
@Getter
|
||||||
private final GameServerPacketHandler packetHandler;
|
private final GameServerPacketHandler packetHandler;
|
||||||
private final Int2ObjectMap<Player> players;
|
private final Int2ObjectMap<Player> players;
|
||||||
|
|
||||||
@@ -41,7 +42,7 @@ public class GameServer extends KcpServer {
|
|||||||
this.address = new InetSocketAddress(serverConfig.bindAddress, serverConfig.getPort());
|
this.address = new InetSocketAddress(serverConfig.bindAddress, serverConfig.getPort());
|
||||||
this.packetHandler = new GameServerPacketHandler();
|
this.packetHandler = new GameServerPacketHandler();
|
||||||
|
|
||||||
this.players = Int2ObjectMaps.synchronize(new Int2ObjectOpenHashMap<>());
|
this.players = new Int2ObjectOpenHashMap<>();
|
||||||
|
|
||||||
// Setup managers
|
// Setup managers
|
||||||
this.battleService = new BattleService(this);
|
this.battleService = new BattleService(this);
|
||||||
@@ -58,20 +59,25 @@ public class GameServer extends KcpServer {
|
|||||||
return this.serverConfig;
|
return this.serverConfig;
|
||||||
}
|
}
|
||||||
|
|
||||||
public GameServerPacketHandler getPacketHandler() {
|
|
||||||
return this.packetHandler;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void registerPlayer(Player player) {
|
public void registerPlayer(Player player) {
|
||||||
players.put(player.getUid(), player);
|
synchronized (this.players) {
|
||||||
|
this.players.put(player.getUid(), player);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void deregisterPlayer(int uid) {
|
public void deregisterPlayer(Player player) {
|
||||||
players.remove(uid);
|
synchronized (this.players) {
|
||||||
|
Player check = this.players.get(player.getUid());
|
||||||
|
if (check == player) {
|
||||||
|
this.players.remove(player.getUid());
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public Player getPlayerByUid(int uid) {
|
public Player getOnlinePlayerByUid(int uid) {
|
||||||
return players.get(uid);
|
synchronized (this.players) {
|
||||||
|
return this.players.get(uid);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void start() {
|
public void start() {
|
||||||
@@ -96,6 +102,9 @@ public class GameServer extends KcpServer {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void onShutdown() {
|
private void onShutdown() {
|
||||||
|
// Close server socket
|
||||||
|
this.stop();
|
||||||
|
|
||||||
// Set region info
|
// Set region info
|
||||||
this.info.setUp(false);
|
this.info.setUp(false);
|
||||||
this.info.save();
|
this.info.save();
|
||||||
|
|||||||
@@ -77,7 +77,7 @@ public class GameSession {
|
|||||||
// Save first
|
// Save first
|
||||||
player.save();
|
player.save();
|
||||||
// Deregister
|
// Deregister
|
||||||
this.getServer().deregisterPlayer(player.getUid());
|
this.getServer().deregisterPlayer(player);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -36,6 +36,12 @@ public class HandlerPlayerGetTokenCsReq extends PacketHandler {
|
|||||||
LunarRail.getGameDatabase().save(player);
|
LunarRail.getGameDatabase().save(player);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Dont let people log on to the same player at the same time
|
||||||
|
Player prevPlayer = session.getServer().getOnlinePlayerByUid(player.getUid());
|
||||||
|
if (prevPlayer != null) {
|
||||||
|
prevPlayer.getSession().close();
|
||||||
|
}
|
||||||
|
|
||||||
// Set player object for session
|
// Set player object for session
|
||||||
session.setPlayer(player);
|
session.setPlayer(player);
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user