forked from git-mirrors/GeyserConnect
Add support for bedrock server forwarding
This commit is contained in:
parent
a47b395471
commit
1ecc9dcc6a
5 changed files with 28 additions and 7 deletions
|
@ -26,4 +26,4 @@ GeyserConnect is a server that Minecraft: Bedrock Edition clients can connect to
|
|||
- [x] Config file
|
||||
- [x] Fix server images not loading straight away on Win10
|
||||
- [ ] Per server online/offline mode (50%)
|
||||
- [ ] Add option to add a bedrock server
|
||||
- [x] Add option to add a bedrock server
|
||||
|
|
|
@ -73,6 +73,10 @@ public class PacketHandler implements BedrockPacketHandler {
|
|||
if (player != null) {
|
||||
masterServer.getLogger().info(player.getDisplayName() + " has disconnected from the master server (" + reason + ")");
|
||||
masterServer.getStorageManager().saveServers(player);
|
||||
|
||||
if (player.getCurrentServer() != null && player.getCurrentServer().isBedrock()) {
|
||||
masterServer.getPlayers().remove(player);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -133,6 +133,7 @@ public class UIHandler {
|
|||
.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;
|
||||
}
|
||||
|
@ -181,6 +182,7 @@ public class UIHandler {
|
|||
.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;
|
||||
}
|
||||
|
@ -282,6 +284,7 @@ public class UIHandler {
|
|||
String address = data.getInputResponses().get(0);
|
||||
int port = Integer.valueOf(data.getInputResponses().get(1));
|
||||
boolean online = data.getToggleResponses().get(2);
|
||||
boolean bedrock = data.getToggleResponses().get(3);
|
||||
|
||||
// Make sure we got an address and port
|
||||
if (address == null || "".equals(address) || port <= 0 || port >= 65535) {
|
||||
|
@ -289,7 +292,7 @@ public class UIHandler {
|
|||
return;
|
||||
}
|
||||
|
||||
player.getServers().add(new Server(address, port, online));
|
||||
player.getServers().add(new Server(address, port, online, bedrock));
|
||||
|
||||
// Send them back to the edit screen
|
||||
player.sendWindow(FormID.EDIT_SERVERS, getEditServerList(player.getServers()));
|
||||
|
@ -389,6 +392,7 @@ public class UIHandler {
|
|||
String address = data.getInputResponses().get(1);
|
||||
int port = Integer.valueOf(data.getInputResponses().get(2));
|
||||
boolean online = data.getToggleResponses().get(3);
|
||||
boolean bedrock = data.getToggleResponses().get(4);
|
||||
|
||||
// Make sure we got an address and port
|
||||
if (address == null || "".equals(address) || port <= 0 || port >= 65535) {
|
||||
|
@ -396,7 +400,7 @@ public class UIHandler {
|
|||
return;
|
||||
}
|
||||
|
||||
player.getServers().set(serverIndex, new Server(address, port, online));
|
||||
player.getServers().set(serverIndex, new Server(address, port, online, bedrock));
|
||||
|
||||
// Send them back to the edit screen
|
||||
player.sendWindow(FormID.EDIT_SERVERS, getEditServerList(player.getServers()));
|
||||
|
|
|
@ -189,12 +189,20 @@ public class Player {
|
|||
}
|
||||
|
||||
/**
|
||||
* Send the player to the Geyser proxy server
|
||||
* Send the player to the Geyser proxy server or straight to the bedrock server if it is
|
||||
*/
|
||||
public void connectToProxy() {
|
||||
String address = MasterServer.getInstance().getGeyserConnectConfig().getRemoteAddress();
|
||||
int port = MasterServer.getInstance().getGeyserConnectConfig().getGeyser().getPort();
|
||||
|
||||
if (currentServer.isBedrock()) {
|
||||
address = currentServer.getAddress();
|
||||
port = currentServer.getPort();
|
||||
}
|
||||
|
||||
TransferPacket transferPacket = new TransferPacket();
|
||||
transferPacket.setAddress(MasterServer.getInstance().getGeyserConnectConfig().getRemoteAddress());
|
||||
transferPacket.setPort(MasterServer.getInstance().getGeyserConnectConfig().getGeyser().getPort());
|
||||
transferPacket.setAddress(address);
|
||||
transferPacket.setPort(port);
|
||||
session.sendPacket(transferPacket);
|
||||
}
|
||||
|
||||
|
|
|
@ -38,15 +38,20 @@ public class Server {
|
|||
private String address;
|
||||
private int port = 25565;
|
||||
private boolean online = true;
|
||||
private boolean bedrock = false;
|
||||
|
||||
public Server(String address) {
|
||||
this(address, 25565, true);
|
||||
this(address, 25565);
|
||||
}
|
||||
|
||||
public Server(String address, int port) {
|
||||
this(address, port, true);
|
||||
}
|
||||
|
||||
public Server(String address, int port, boolean online) {
|
||||
this(address, port, online, false);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return address + (port != 25565 ? ":" + port : "");
|
||||
|
|
Loading…
Add table
Reference in a new issue