perf(common): 优化代码
This commit is contained in:
@@ -47,9 +47,9 @@ public abstract class BallAPI {
|
|||||||
*/
|
*/
|
||||||
protected static BallAPI instance;
|
protected static BallAPI instance;
|
||||||
@NotNull
|
@NotNull
|
||||||
protected final ConcurrentHashMap<String, BallServerInfo> serverInfo;
|
protected final Map<String, BallServerInfo> serverInfo;
|
||||||
@NotNull
|
@NotNull
|
||||||
protected final ConcurrentHashMap<UUID, BallPlayerInfo> playerInfo;
|
protected final Map<UUID, BallPlayerInfo> playerInfo;
|
||||||
|
|
||||||
@NotNull
|
@NotNull
|
||||||
private final BallConfig config;
|
private final BallConfig config;
|
||||||
@@ -99,28 +99,51 @@ public abstract class BallAPI {
|
|||||||
public void onServerOnline(@NotNull ServerOnlineEvent event) {
|
public void onServerOnline(@NotNull ServerOnlineEvent event) {
|
||||||
BallServerInfo info = event.getServerInfo();
|
BallServerInfo info = event.getServerInfo();
|
||||||
serverInfo.put(info.getId(), info);
|
serverInfo.put(info.getId(), info);
|
||||||
playerInfo.forEachValue(1, playerInfo -> {
|
switch (info.getType()) {
|
||||||
if (playerInfo.getGameServer().equals(info.getId())) {
|
case GAME: {
|
||||||
playerInfo.setOnline(false);
|
playerInfo.forEach((uuid, playerInfo) -> {
|
||||||
|
if (playerInfo.getGameServer().equals(info.getId())) {
|
||||||
|
playerInfo.setOnline(false);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
if (playerInfo.getProxyServer().equals(info.getId())) {
|
case PROXY: {
|
||||||
playerInfo.setOnline(false);
|
playerInfo.forEach((uuid, playerInfo) -> {
|
||||||
|
if (playerInfo.getProxyServer().equals(info.getId())) {
|
||||||
|
playerInfo.setOnline(false);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
});
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onServerOffline(@NotNull ServerOfflineEvent event) {
|
public void onServerOffline(@NotNull ServerOfflineEvent event) {
|
||||||
String serverID = event.getServerID();
|
String serverID = event.getServerID();
|
||||||
serverInfo.remove(serverID);
|
BallServerInfo info = serverInfo.remove(serverID);
|
||||||
playerInfo.forEachValue(1, playerInfo -> {
|
if (info == null) {
|
||||||
if (playerInfo.getGameServer().equals(serverID)) {
|
return;
|
||||||
playerInfo.setOnline(false);
|
}
|
||||||
|
switch (info.getType()) {
|
||||||
|
case GAME: {
|
||||||
|
playerInfo.forEach((uuid, playerInfo) -> {
|
||||||
|
if (playerInfo.getGameServer().equals(info.getId())) {
|
||||||
|
playerInfo.setOnline(false);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
if (playerInfo.getProxyServer().equals(serverID)) {
|
case PROXY: {
|
||||||
playerInfo.setOnline(false);
|
playerInfo.forEach((uuid, playerInfo) -> {
|
||||||
|
if (playerInfo.getProxyServer().equals(info.getId())) {
|
||||||
|
playerInfo.setOnline(false);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
});
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
@@ -706,12 +729,12 @@ public abstract class BallAPI {
|
|||||||
* @return 玩家信息
|
* @return 玩家信息
|
||||||
*/
|
*/
|
||||||
public BallPlayerInfo getPlayerInfo(@NotNull String playerName) {
|
public BallPlayerInfo getPlayerInfo(@NotNull String playerName) {
|
||||||
return playerInfo.searchValues(Long.MAX_VALUE, info -> {
|
for (BallPlayerInfo info : playerInfo.values()) {
|
||||||
if (info.getName().equalsIgnoreCase(playerName)) {
|
if (info.getName().equalsIgnoreCase(playerName)) {
|
||||||
return info;
|
return info;
|
||||||
}
|
}
|
||||||
return null;
|
}
|
||||||
});
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -730,12 +753,12 @@ public abstract class BallAPI {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@NotNull
|
@NotNull
|
||||||
public ConcurrentHashMap<String, BallServerInfo> getAllServerInfo() {
|
public Map<String, BallServerInfo> getAllServerInfo() {
|
||||||
return serverInfo;
|
return serverInfo;
|
||||||
}
|
}
|
||||||
|
|
||||||
@NotNull
|
@NotNull
|
||||||
public ConcurrentHashMap<UUID, BallPlayerInfo> getAllPlayerInfo() {
|
public Map<UUID, BallPlayerInfo> getAllPlayerInfo() {
|
||||||
return playerInfo;
|
return playerInfo;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user