From 0a4410bff023d374942659bb4b76a4ccece55230 Mon Sep 17 00:00:00 2001 From: Matthew Date: Sat, 19 Dec 2020 00:24:43 -0500 Subject: Add setting to disable user server options --- .../pugmatt/bedrockconnect/BedrockConnect.java | 24 ++---- .../pugmatt/bedrockconnect/gui/MainFormButton.java | 5 ++ .../pugmatt/bedrockconnect/gui/UIForms.java | 59 +++++++++++-- .../bedrockconnect/listeners/PacketHandler.java | 99 ++++++++++------------ 4 files changed, 110 insertions(+), 77 deletions(-) create mode 100644 serverlist-server/src/main/com/pyratron/pugmatt/bedrockconnect/gui/MainFormButton.java diff --git a/serverlist-server/src/main/com/pyratron/pugmatt/bedrockconnect/BedrockConnect.java b/serverlist-server/src/main/com/pyratron/pugmatt/bedrockconnect/BedrockConnect.java index 85b286e..f953cf5 100644 --- a/serverlist-server/src/main/com/pyratron/pugmatt/bedrockconnect/BedrockConnect.java +++ b/serverlist-server/src/main/com/pyratron/pugmatt/bedrockconnect/BedrockConnect.java @@ -25,6 +25,7 @@ public class BedrockConnect { public static boolean noDB = false; public static String customServers = null; public static boolean kickInactive = true; + public static boolean userServers = true; public static void main(String[] args) { System.out.println("-= BedrockConnect =-"); @@ -39,12 +40,6 @@ public class BedrockConnect { String serverLimit = "100"; - String localIP = null; - String publicIP = null; - String localIPV6 = null; - String publicIPV6 = null; - boolean enableDNS = false; - for(String str : args) { if(str.startsWith("mysql_host=")) hostname = getArgValue(str, "mysql_host"); @@ -110,20 +105,11 @@ public class BedrockConnect { throw new RuntimeException(e); } } - if(str.startsWith("localipv4=")) { - localIP = getArgValue(str, "localipv4"); - } - if(str.startsWith("localipv6=")) { - localIPV6 = getArgValue(str, "localipv6"); - } - if(str.startsWith("publicipv4=")) { - publicIP = getArgValue(str, "publicipv4"); - } - if(str.startsWith("publicipv6=")) { - publicIPV6 = getArgValue(str, "publicipv6"); - } if(str.startsWith("kick_inactive=")) { - kickInactive = getArgValue(str, "kick_inactive").equals("true"); + kickInactive = getArgValue(str, "kick_inactive").toLowerCase().equals("true"); + } + if(str.startsWith("user_servers=")) { + userServers = getArgValue(str, "user_servers").toLowerCase().equals("true"); } } diff --git a/serverlist-server/src/main/com/pyratron/pugmatt/bedrockconnect/gui/MainFormButton.java b/serverlist-server/src/main/com/pyratron/pugmatt/bedrockconnect/gui/MainFormButton.java new file mode 100644 index 0000000..7c53cc5 --- /dev/null +++ b/serverlist-server/src/main/com/pyratron/pugmatt/bedrockconnect/gui/MainFormButton.java @@ -0,0 +1,5 @@ +package main.com.pyratron.pugmatt.bedrockconnect.gui; + +public enum MainFormButton { + CONNECT, REMOVE, EXIT, USER_SERVER, CUSTOM_SERVER, FEATURED_SERVER +} diff --git a/serverlist-server/src/main/com/pyratron/pugmatt/bedrockconnect/gui/UIForms.java b/serverlist-server/src/main/com/pyratron/pugmatt/bedrockconnect/gui/UIForms.java index 455450b..a62cb78 100644 --- a/serverlist-server/src/main/com/pyratron/pugmatt/bedrockconnect/gui/UIForms.java +++ b/serverlist-server/src/main/com/pyratron/pugmatt/bedrockconnect/gui/UIForms.java @@ -2,13 +2,13 @@ package main.com.pyratron.pugmatt.bedrockconnect.gui; import com.google.gson.JsonArray; import com.google.gson.JsonObject; +import com.nukkitx.protocol.bedrock.Bedrock; import com.nukkitx.protocol.bedrock.packet.ModalFormRequestPacket; +import main.com.pyratron.pugmatt.bedrockconnect.BedrockConnect; import main.com.pyratron.pugmatt.bedrockconnect.CustomServer; import main.com.pyratron.pugmatt.bedrockconnect.CustomServerHandler; -import java.lang.reflect.Array; -import java.util.ArrayList; import java.util.List; public class UIForms { @@ -16,7 +16,13 @@ public class UIForms { public static int currentForm = 0; - public static final char ESCAPE = '\u00a7'; + public static JsonArray mainMenuButtons = new JsonArray(); + + static { + mainMenuButtons.add(UIComponents.createButton("Connect to a Server")); + mainMenuButtons.add(UIComponents.createButton("Remove a Server")); + mainMenuButtons.add(UIComponents.createButton("Exit Server List")); + } public static ModalFormRequestPacket createMain(List servers) { currentForm = MAIN; @@ -29,15 +35,19 @@ public class UIForms { JsonArray buttons = new JsonArray(); CustomServer[] customServers = CustomServerHandler.getServers(); - buttons.add(UIComponents.createButton("Connect to a Server")); - buttons.add(UIComponents.createButton("Remove a Server")); - buttons.add(UIComponents.createButton("Exit Server List")); + if(BedrockConnect.userServers) + buttons.addAll(mainMenuButtons); + else + buttons.add(UIComponents.createButton("Exit Server List")); + for(int i=0;i playerServers) { + int serverIndex; + + if(BedrockConnect.userServers) { + // Set server index if button selected is not a menu option + serverIndex = btnId - mainMenuButtons.size(); + } else { + serverIndex = btnId - 1; + } + + return serverIndex; + } + public static MainFormButton getMainFormButton(int btnId, CustomServer[] customServers, List playerServers) { + int serverIndex = getServerIndex(btnId, customServers, playerServers); + + if(BedrockConnect.userServers) { + switch (btnId) { + case 0: + return MainFormButton.CONNECT; + case 1: + return MainFormButton.REMOVE; + case 2: + return MainFormButton.EXIT; + } + } + + if(btnId == 0) { + return MainFormButton.EXIT; + } else if(serverIndex + 1 > playerServers.size() + customServers.length) { + return MainFormButton.FEATURED_SERVER; + } else if (serverIndex + 1 > playerServers.size() && serverIndex - playerServers.size() < customServers.length) { + return MainFormButton.CUSTOM_SERVER; + } else { + return MainFormButton.USER_SERVER; + } + } + public static ModalFormRequestPacket createDirectConnect() { currentForm = DIRECT_CONNECT; ModalFormRequestPacket mf = new ModalFormRequestPacket(); diff --git a/serverlist-server/src/main/com/pyratron/pugmatt/bedrockconnect/listeners/PacketHandler.java b/serverlist-server/src/main/com/pyratron/pugmatt/bedrockconnect/listeners/PacketHandler.java index 9260522..a50307a 100644 --- a/serverlist-server/src/main/com/pyratron/pugmatt/bedrockconnect/listeners/PacketHandler.java +++ b/serverlist-server/src/main/com/pyratron/pugmatt/bedrockconnect/listeners/PacketHandler.java @@ -27,6 +27,7 @@ import main.com.pyratron.pugmatt.bedrockconnect.BedrockConnect; import main.com.pyratron.pugmatt.bedrockconnect.CustomServer; import main.com.pyratron.pugmatt.bedrockconnect.CustomServerHandler; import main.com.pyratron.pugmatt.bedrockconnect.Server; +import main.com.pyratron.pugmatt.bedrockconnect.gui.MainFormButton; import main.com.pyratron.pugmatt.bedrockconnect.gui.UIComponents; import main.com.pyratron.pugmatt.bedrockconnect.gui.UIForms; import net.minidev.json.JSONObject; @@ -55,17 +56,12 @@ public class PacketHandler implements BedrockPacketHandler { private JSONObject extraData; - private boolean print = false; - public void setPlayer(BCPlayer player) { this.player = player; } @Override public boolean handle(RequestChunkRadiusPacket packet) { - if(print) - System.out.println(packet.toString()); - ChunkRadiusUpdatedPacket chunkRadiusUpdatePacket = new ChunkRadiusUpdatedPacket(); chunkRadiusUpdatePacket.setRadius(packet.getRadius()); session.sendPacketImmediately(chunkRadiusUpdatePacket); @@ -79,31 +75,53 @@ public class PacketHandler implements BedrockPacketHandler { @Override public boolean handle(ModalFormResponsePacket packet) { player.setActive(); - if(print) - System.out.println(packet.toString()); - switch (packet.getFormId()) { + switch (packet.getFormId()) { case UIForms.MAIN: if(UIForms.currentForm == UIForms.MAIN) { - // If exiting main window - System.out.println(packet.getFormData()); + // Re-open window if closed if (packet.getFormData().contains("null")) { session.sendPacketImmediately(UIForms.createMain(player.getServerList())); } else { // If selecting button int chosen = Integer.parseInt(packet.getFormData().replaceAll("\\s+","")); - if (chosen == 0) { // Add Server - session.sendPacketImmediately(UIForms.createDirectConnect()); - } else if (chosen == 1) { // Remove Server - session.sendPacketImmediately(UIForms.createRemoveServer(player.getServerList())); - } else if (chosen == 2) { // Exit Server List - player.disconnect("Exiting Server List", server); - } else { // Choosing Server - - CustomServer[] customServers = CustomServerHandler.getServers(); - List playerServers = server.getPlayer(uuid).getServerList(); - int serverIndex = chosen - 3; - - // If server chosen is a featued server - if(serverIndex + 1 > playerServers.size() + customServers.length) { + + CustomServer[] customServers = CustomServerHandler.getServers(); + List playerServers = server.getPlayer(uuid).getServerList(); + + MainFormButton button = UIForms.getMainFormButton(chosen, customServers, playerServers); + + int serverIndex = UIForms.getServerIndex(chosen, customServers, playerServers); + + switch(button) { + case CONNECT: + session.sendPacketImmediately(UIForms.createDirectConnect()); + break; + case REMOVE: + session.sendPacketImmediately(UIForms.createRemoveServer(player.getServerList())); + break; + case EXIT: + player.disconnect("Exiting Server List", server); + break; + case USER_SERVER: + String address = server.getPlayer(uuid).getServerList().get(serverIndex); + + if (address.split(":").length > 1) { + String ip = address.split(":")[0]; + String port = address.split(":")[1]; + + try { + transfer(ip, Integer.parseInt(port)); + } catch (Exception e) { + session.sendPacketImmediately(UIForms.createError("Error connecting to server. Invalid address.")); + } + } else { + session.sendPacketImmediately(UIForms.createError("Invalid server address")); + } + break; + case CUSTOM_SERVER: + CustomServer server = customServers[serverIndex - playerServers.size()]; + transfer(server.getAddress(), server.getPort()); + break; + case FEATURED_SERVER: int featuredServer = serverIndex - playerServers.size() - customServers.length; switch (featuredServer) { @@ -117,35 +135,16 @@ public class PacketHandler implements BedrockPacketHandler { transfer("play.cubecraft.net", 19132); break; case 3: // Lifeboat - transfer("63.143.40.66", 19132); + transfer("51.222.26.28", 19132); break; case 4: // Mineville - transfer("play.cubecraft.net", 19132); + transfer("168.62.164.235", 19132); break; case 5: // Galaxite - transfer("51.89.152.241", 19132); + transfer("51.222.8.223", 19132); break; } - } else if (serverIndex + 1 > playerServers.size() && serverIndex - playerServers.size() < customServers.length) { // if server is a custom server - CustomServer server = customServers[serverIndex - playerServers.size()]; - transfer(server.getAddress(), server.getPort()); - - } else { // if server is a player server - String address = server.getPlayer(uuid).getServerList().get(chosen-3); - - if (address.split(":").length > 1) { - String ip = address.split(":")[0]; - String port = address.split(":")[1]; - - try { - transfer(ip, Integer.parseInt(port)); - } catch (Exception e) { - session.sendPacketImmediately(UIForms.createError("Error connecting to server. Invalid address.")); - } - } else { - session.sendPacketImmediately(UIForms.createError("Invalid server address")); - } - } + break; } } } @@ -219,7 +218,7 @@ public class PacketHandler implements BedrockPacketHandler { case UIForms.DONATION: session.sendPacketImmediately(UIForms.createMain(player.getServerList())); break; - } + } return false; } @@ -232,8 +231,6 @@ public class PacketHandler implements BedrockPacketHandler { @Override public boolean handle(SetLocalPlayerAsInitializedPacket packet) { - if(print) - System.out.println(packet.toString()); session.sendPacketImmediately(UIForms.createMain(player.getServerList())); return false; } @@ -285,8 +282,6 @@ public class PacketHandler implements BedrockPacketHandler { @Override public boolean handle(ResourcePackClientResponsePacket packet) { - if(print) - System.out.println(packet.toString()); switch (packet.getStatus()) { case COMPLETED: BedrockConnect.data.userExists(uuid, name, session, this); -- cgit v1.2.1