diff options
| author | Matthew <pugmatt@gmail.com> | 2020-12-19 00:24:43 -0500 |
|---|---|---|
| committer | Matthew <pugmatt@gmail.com> | 2020-12-19 00:24:43 -0500 |
| commit | 0a4410bff023d374942659bb4b76a4ccece55230 (patch) | |
| tree | 086eba44e5598dc8cb0b8cab588515e3e6730774 | |
| parent | 769d12db455c60178f6f3a879900df12ac5fef74 (diff) | |
| download | BedrockConnect-0a4410bff023d374942659bb4b76a4ccece55230.tar.gz BedrockConnect-0a4410bff023d374942659bb4b76a4ccece55230.tar.bz2 BedrockConnect-0a4410bff023d374942659bb4b76a4ccece55230.zip | |
Add setting to disable user server options1.6.1
4 files changed, 110 insertions, 77 deletions
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<String> 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<servers.size();i++) { buttons.add(UIComponents.createButton(servers.get(i), "https://i.imgur.com/3BmFZRE.png", "url")); } + for (CustomServer cs : customServers) { buttons.add(UIComponents.createButton(cs.getName(), cs.getIconUrl(), "url")); } + buttons.add(UIComponents.createButton("The Hive", "https://forum.playhive.com/uploads/default/original/1X/0d05e3240037f7592a0f16b11b57c08eba76f19c.png", "url")); buttons.add(UIComponents.createButton("Mineplex", "https://www.mineplex.com/assets/www-mp/img/footer/footer_smalllogo.png", "url")); buttons.add(UIComponents.createButton("CubeCraft Games", "https://i.imgur.com/aFH1NUr.png", "url")); @@ -51,6 +61,43 @@ public class UIForms { return mf; } + public static int getServerIndex(int btnId, CustomServer[] customServers, List<String> 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<String> 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<String> 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<String> 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); |
