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> <dependency>
<groupId>com.github.CloudburstMC.Protocol</groupId> <groupId>com.github.CloudburstMC.Protocol</groupId>
<artifactId>bedrock-v422</artifactId> <artifactId>bedrock-v422</artifactId>
<version>87d862d69d</version> <version>d41b84e86c</version>
<scope>compile</scope> <scope>compile</scope>
<exclusions> <exclusions>
<!-- Stay on the older version of Network while it's rewritten --> <!-- 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 { public class MasterServer {
private final Timer timer;
private BedrockServer bdServer; private BedrockServer bdServer;
private BedrockPong bdPong; private BedrockPong bdPong;
@ -79,10 +78,10 @@ public class MasterServer {
@Setter @Setter
@Getter @Getter
private long lastDisconnectTime = 0l; private long lastDisconnectTime = 0L;
public MasterServer() { public MasterServer() {
this.instance = this; instance = this;
logger = new Logger(); logger = new Logger();
@ -101,7 +100,7 @@ public class MasterServer {
this.generalThreadPool = Executors.newScheduledThreadPool(32); this.generalThreadPool = Executors.newScheduledThreadPool(32);
// Start a timer to keep the thread running // Start a timer to keep the thread running
timer = new Timer(); Timer timer = new Timer();
TimerTask task = new TimerTask() { public void run() { } }; TimerTask task = new TimerTask() { public void run() { } };
timer.scheduleAtFixedRate(task, 0L, 1000L); timer.scheduleAtFixedRate(task, 0L, 1000L);
@ -165,6 +164,7 @@ public class MasterServer {
public void shutdown() { public void shutdown() {
shuttingDown = true; shuttingDown = true;
bdServer.close();
shutdownGeyserProxy(); shutdownGeyserProxy();

View file

@ -58,8 +58,8 @@ import java.util.concurrent.TimeUnit;
public class PacketHandler implements BedrockPacketHandler { public class PacketHandler implements BedrockPacketHandler {
private BedrockServerSession session; private final BedrockServerSession session;
private MasterServer masterServer; private final MasterServer masterServer;
private Player player; private Player player;
@ -69,7 +69,7 @@ public class PacketHandler implements BedrockPacketHandler {
this.session = session; this.session = session;
this.masterServer = masterServer; this.masterServer = masterServer;
session.addDisconnectHandler((reason) -> disconnect(reason)); session.addDisconnectHandler(this::disconnect);
} }
public void disconnect(DisconnectReason reason) { public void disconnect(DisconnectReason reason) {
@ -78,7 +78,7 @@ public class PacketHandler implements BedrockPacketHandler {
masterServer.getStorageManager().saveServers(player); masterServer.getStorageManager().saveServers(player);
if (player.getCurrentServer() != null && player.getCurrentServer().isBedrock()) { 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); connector.setAuthType(player.getCurrentServer().isOnline() ? AuthType.ONLINE : AuthType.OFFLINE);
super.authenticate(username, password); 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 // 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!"); 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()); Player player = MasterServer.getInstance().getPlayers().get(authData.getXboxUUID());
if (player == null) { if (player == null) {
bedrockServerSession.disconnect("Please connect to the master server and pick a server first!"); 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 * @return A {@link SimpleFormWindow} object
*/ */
public static FormWindow getWaitingScreen(Server server) { public static FormWindow getWaitingScreen(Server server) {
SimpleFormWindow window = new SimpleFormWindow("Connecting", "Please wait while we connect you to " + server.toString()); return new SimpleFormWindow("Connecting", "Please wait while we connect you to " + server.toString());
return window;
} }
/** /**
@ -93,13 +92,12 @@ public class UIHandler {
* @return A {@link CustomFormWindow} object * @return A {@link CustomFormWindow} object
*/ */
public static FormWindow getDirectConnect() { 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("IP", "play.cubecraft.net", ""))
.addComponent(new InputComponent("Port", "25565", "25565")) .addComponent(new InputComponent("Port", "25565", "25565"))
.addComponent(new ToggleComponent("Online mode", true)) .addComponent(new ToggleComponent("Online mode", true))
.addComponent(new ToggleComponent("Bedrock server", false)) .addComponent(new ToggleComponent("Bedrock server", false))
.build(); .build();
return window;
} }
/** /**
@ -128,13 +126,12 @@ public class UIHandler {
* @return A {@link CustomFormWindow} object * @return A {@link CustomFormWindow} object
*/ */
public static FormWindow getAddServer() { 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("IP", "play.cubecraft.net", ""))
.addComponent(new InputComponent("Port", "25565", "25565")) .addComponent(new InputComponent("Port", "25565", "25565"))
.addComponent(new ToggleComponent("Online mode", true)) .addComponent(new ToggleComponent("Online mode", true))
.addComponent(new ToggleComponent("Bedrock server", false)) .addComponent(new ToggleComponent("Bedrock server", false))
.build(); .build();
return window;
} }
/** /**
@ -176,14 +173,13 @@ public class UIHandler {
*/ */
public static FormWindow getEditServer(int serverIndex, Server server) { public static FormWindow getEditServer(int serverIndex, Server server) {
String port = String.valueOf(server.getPort()); 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 LabelComponent("Server at index: " + serverIndex))
.addComponent(new InputComponent("IP", server.getAddress(), server.getAddress())) .addComponent(new InputComponent("IP", server.getAddress(), server.getAddress()))
.addComponent(new InputComponent("Port", port, port)) .addComponent(new InputComponent("Port", port, port))
.addComponent(new ToggleComponent("Online mode", server.isOnline())) .addComponent(new ToggleComponent("Online mode", server.isOnline()))
.addComponent(new ToggleComponent("Bedrock server", server.isBedrock())) .addComponent(new ToggleComponent("Bedrock server", server.isBedrock()))
.build(); .build();
return window;
} }
/** /**
@ -227,7 +223,7 @@ public class UIHandler {
try { try {
String address = data.getInputResponses().get(0); 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 online = data.getToggleResponses().get(2);
boolean bedrock = data.getToggleResponses().get(3); boolean bedrock = data.getToggleResponses().get(3);
@ -288,7 +284,7 @@ public class UIHandler {
try { try {
String address = data.getInputResponses().get(0); 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 online = data.getToggleResponses().get(2);
boolean bedrock = data.getToggleResponses().get(3); boolean bedrock = data.getToggleResponses().get(3);
@ -399,10 +395,10 @@ public class UIHandler {
} }
try { 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); 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 online = data.getToggleResponses().get(3);
boolean bedrock = data.getToggleResponses().get(4); boolean bedrock = data.getToggleResponses().get(4);

View file

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