Add MSA support; fix up whatever IntelliJ complained about

This commit is contained in:
Camotoy 2021-01-11 10:47:14 -05:00
parent c4b1faaaf6
commit c40f9764ec
No known key found for this signature in database
GPG key ID: 7EEFB66FE798081F
6 changed files with 37 additions and 23 deletions

View file

@ -85,7 +85,7 @@
<dependency>
<groupId>com.github.CloudburstMC.Protocol</groupId>
<artifactId>bedrock-v422</artifactId>
<version>87d862d69d</version>
<version>d41b84e86c</version>
<scope>compile</scope>
<exclusions>
<!-- Stay on the older version of Network while it's rewritten -->

View file

@ -49,7 +49,6 @@ import java.util.concurrent.ScheduledExecutorService;
public class MasterServer {
private final Timer timer;
private BedrockServer bdServer;
private BedrockPong bdPong;
@ -79,10 +78,10 @@ public class MasterServer {
@Setter
@Getter
private long lastDisconnectTime = 0l;
private long lastDisconnectTime = 0L;
public MasterServer() {
this.instance = this;
instance = this;
logger = new Logger();
@ -101,7 +100,7 @@ public class MasterServer {
this.generalThreadPool = Executors.newScheduledThreadPool(32);
// Start a timer to keep the thread running
timer = new Timer();
Timer timer = new Timer();
TimerTask task = new TimerTask() { public void run() { } };
timer.scheduleAtFixedRate(task, 0L, 1000L);
@ -165,6 +164,7 @@ public class MasterServer {
public void shutdown() {
shuttingDown = true;
bdServer.close();
shutdownGeyserProxy();

View file

@ -58,8 +58,8 @@ import java.util.concurrent.TimeUnit;
public class PacketHandler implements BedrockPacketHandler {
private BedrockServerSession session;
private MasterServer masterServer;
private final BedrockServerSession session;
private final MasterServer masterServer;
private Player player;
@ -69,7 +69,7 @@ public class PacketHandler implements BedrockPacketHandler {
this.session = session;
this.masterServer = masterServer;
session.addDisconnectHandler((reason) -> disconnect(reason));
session.addDisconnectHandler(this::disconnect);
}
public void disconnect(DisconnectReason reason) {
@ -78,7 +78,7 @@ public class PacketHandler implements BedrockPacketHandler {
masterServer.getStorageManager().saveServers(player);
if (player.getCurrentServer() != null && player.getCurrentServer().isBedrock()) {
masterServer.getPlayers().remove(player);
masterServer.getPlayers().remove(player.getXuid(), player);
}
}
}

View file

@ -56,7 +56,25 @@ public class GeyserProxySession extends GeyserSession {
connector.setAuthType(player.getCurrentServer().isOnline() ? AuthType.ONLINE : AuthType.OFFLINE);
super.authenticate(username, password);
}else{
} else {
// Disconnect the player if they haven't picked a server on the master server list
bedrockServerSession.disconnect("Please connect to the master server and pick a server first!");
}
}
@Override
public void authenticateWithMicrosoftCode() {
// Get the player based on the connection address
Player player = MasterServer.getInstance().getPlayers().get(getAuthData().getXboxUUID());
if (player != null && player.getCurrentServer() != null) {
// Set the remote server info for the player
connector.getRemoteServer().setAddress(player.getCurrentServer().getAddress());
connector.getRemoteServer().setPort(player.getCurrentServer().getPort());
connector.setAuthType(player.getCurrentServer().isOnline() ? AuthType.ONLINE : AuthType.OFFLINE);
super.authenticateWithMicrosoftCode();
} else {
// Disconnect the player if they haven't picked a server on the master server list
bedrockServerSession.disconnect("Please connect to the master server and pick a server first!");
}
@ -77,7 +95,6 @@ public class GeyserProxySession extends GeyserSession {
Player player = MasterServer.getInstance().getPlayers().get(authData.getXboxUUID());
if (player == null) {
bedrockServerSession.disconnect("Please connect to the master server and pick a server first!");
return;
}
}
}

View file

@ -83,8 +83,7 @@ public class UIHandler {
* @return A {@link SimpleFormWindow} object
*/
public static FormWindow getWaitingScreen(Server server) {
SimpleFormWindow window = new SimpleFormWindow("Connecting", "Please wait while we connect you to " + server.toString());
return window;
return new SimpleFormWindow("Connecting", "Please wait while we connect you to " + server.toString());
}
/**
@ -93,13 +92,12 @@ public class UIHandler {
* @return A {@link CustomFormWindow} object
*/
public static FormWindow getDirectConnect() {
CustomFormWindow window = new CustomFormBuilder("Direct Connect")
return new CustomFormBuilder("Direct Connect")
.addComponent(new InputComponent("IP", "play.cubecraft.net", ""))
.addComponent(new InputComponent("Port", "25565", "25565"))
.addComponent(new ToggleComponent("Online mode", true))
.addComponent(new ToggleComponent("Bedrock server", false))
.build();
return window;
}
/**
@ -128,13 +126,12 @@ public class UIHandler {
* @return A {@link CustomFormWindow} object
*/
public static FormWindow getAddServer() {
CustomFormWindow window = new CustomFormBuilder("Add Server")
return new CustomFormBuilder("Add Server")
.addComponent(new InputComponent("IP", "play.cubecraft.net", ""))
.addComponent(new InputComponent("Port", "25565", "25565"))
.addComponent(new ToggleComponent("Online mode", true))
.addComponent(new ToggleComponent("Bedrock server", false))
.build();
return window;
}
/**
@ -176,14 +173,13 @@ public class UIHandler {
*/
public static FormWindow getEditServer(int serverIndex, Server server) {
String port = String.valueOf(server.getPort());
CustomFormWindow window = new CustomFormBuilder("Edit Server")
return new CustomFormBuilder("Edit Server")
.addComponent(new LabelComponent("Server at index: " + serverIndex))
.addComponent(new InputComponent("IP", server.getAddress(), server.getAddress()))
.addComponent(new InputComponent("Port", port, port))
.addComponent(new ToggleComponent("Online mode", server.isOnline()))
.addComponent(new ToggleComponent("Bedrock server", server.isBedrock()))
.build();
return window;
}
/**
@ -227,7 +223,7 @@ public class UIHandler {
try {
String address = data.getInputResponses().get(0);
int port = Integer.valueOf(data.getInputResponses().get(1));
int port = Integer.parseInt(data.getInputResponses().get(1));
boolean online = data.getToggleResponses().get(2);
boolean bedrock = data.getToggleResponses().get(3);
@ -288,7 +284,7 @@ public class UIHandler {
try {
String address = data.getInputResponses().get(0);
int port = Integer.valueOf(data.getInputResponses().get(1));
int port = Integer.parseInt(data.getInputResponses().get(1));
boolean online = data.getToggleResponses().get(2);
boolean bedrock = data.getToggleResponses().get(3);
@ -399,10 +395,10 @@ public class UIHandler {
}
try {
int serverIndex = Integer.valueOf(data.getLabelResponses().get(0).split(":")[1].trim());
int serverIndex = Integer.parseInt(data.getLabelResponses().get(0).split(":")[1].trim());
String address = data.getInputResponses().get(1);
int port = Integer.valueOf(data.getInputResponses().get(2));
int port = Integer.parseInt(data.getInputResponses().get(2));
boolean online = data.getToggleResponses().get(3);
boolean bedrock = data.getToggleResponses().get(4);

View file

@ -32,6 +32,7 @@ remote:
port: 25565
# Authentication type. Can be offline, online, or floodgate (see https://github.com/GeyserMC/Geyser/wiki/Floodgate).
auth-type: online
allow-password-authentication: false
# Floodgate uses encryption to ensure use from authorised sources.
# This should point to the public key generated by Floodgate (Bungee or CraftBukkit)