diff options
| author | Matthew <pugmatt@gmail.com> | 2020-11-05 21:48:13 -0500 |
|---|---|---|
| committer | Matthew <pugmatt@gmail.com> | 2020-11-05 21:48:13 -0500 |
| commit | 82855f48a3e7fea5e9418435279fe9dd53d6e608 (patch) | |
| tree | df4a18bb16c87ed6858d5d1a4bba0757c6f30afb | |
| parent | 1f0c15135fc1e4741645c35528164a8978e3b1b1 (diff) | |
| download | BedrockConnect-bc-2.tar.gz BedrockConnect-bc-2.tar.bz2 BedrockConnect-bc-2.zip | |
New menu when clicking a serverbc-2
3 files changed, 160 insertions, 55 deletions
diff --git a/serverlist-server/BedrockConnect.iml b/serverlist-server/BedrockConnect.iml index 52fad66..46c6a7a 100644 --- a/serverlist-server/BedrockConnect.iml +++ b/serverlist-server/BedrockConnect.iml @@ -10,9 +10,50 @@ <orderEntry type="inheritedJdk" /> <orderEntry type="sourceFolder" forTests="false" /> <orderEntry type="library" name="Maven: mysql:mysql-connector-java:5.1.17" level="project" /> + <orderEntry type="library" name="Maven: dnsjava:dnsjava:3.0.2" level="project" /> + <orderEntry type="library" name="Maven: org.slf4j:slf4j-api:1.7.30" level="project" /> + <orderEntry type="library" name="Maven: io.netty:netty-resolver-dns:4.1.43.Final" level="project" /> + <orderEntry type="library" name="Maven: io.netty:netty-codec-dns:4.1.43.Final" level="project" /> <orderEntry type="library" name="Maven: net.minidev:json-smart:2.3" level="project" /> <orderEntry type="library" name="Maven: net.minidev:accessors-smart:1.2" level="project" /> <orderEntry type="library" name="Maven: org.ow2.asm:asm:5.0.4" level="project" /> + <orderEntry type="library" name="Maven: com.nukkitx.protocol:bedrock-v408:2.6.0-SNAPSHOT" level="project" /> + <orderEntry type="library" name="Maven: com.nukkitx.protocol:bedrock-v407:2.6.0-SNAPSHOT" level="project" /> + <orderEntry type="library" name="Maven: com.nukkitx.protocol:bedrock-v390:2.6.0-SNAPSHOT" level="project" /> + <orderEntry type="library" name="Maven: com.nukkitx.protocol:bedrock-v389:2.6.0-SNAPSHOT" level="project" /> + <orderEntry type="library" name="Maven: com.nukkitx.protocol:bedrock-v388:2.6.0-SNAPSHOT" level="project" /> + <orderEntry type="library" name="Maven: com.nukkitx.protocol:bedrock-v361:2.6.0-SNAPSHOT" level="project" /> + <orderEntry type="library" name="Maven: com.nukkitx.protocol:bedrock-v354:2.6.0-SNAPSHOT" level="project" /> + <orderEntry type="library" name="Maven: com.nukkitx.protocol:bedrock-v340:2.6.0-SNAPSHOT" level="project" /> + <orderEntry type="library" name="Maven: com.nukkitx.protocol:bedrock-v332:2.6.0-SNAPSHOT" level="project" /> + <orderEntry type="library" name="Maven: com.nukkitx.protocol:bedrock-v313:2.6.0-SNAPSHOT" level="project" /> + <orderEntry type="library" name="Maven: com.nukkitx.protocol:bedrock-v291:2.6.0-SNAPSHOT" level="project" /> + <orderEntry type="library" name="Maven: com.nukkitx.protocol:bedrock-common:2.6.0-SNAPSHOT" level="project" /> + <orderEntry type="library" name="Maven: com.nukkitx.protocol:common:2.6.0-SNAPSHOT" level="project" /> + <orderEntry type="library" name="Maven: com.nukkitx.network:common:1.6.22" level="project" /> + <orderEntry type="library" name="Maven: io.netty:netty-buffer:4.1.43.Final" level="project" /> + <orderEntry type="library" name="Maven: io.netty:netty-transport-native-epoll:linux-x86_64:4.1.43.Final" level="project" /> + <orderEntry type="library" name="Maven: io.netty:netty-transport-native-unix-common:4.1.43.Final" level="project" /> + <orderEntry type="library" name="Maven: io.netty:netty-transport-native-kqueue:osx-x86_64:4.1.43.Final" level="project" /> + <orderEntry type="library" name="Maven: com.nukkitx:natives:1.0.2" level="project" /> + <orderEntry type="library" name="Maven: com.nukkitx:nbt:2.0.1" level="project" /> + <orderEntry type="library" name="Maven: com.nukkitx:math:1.1.0" level="project" /> + <orderEntry type="library" name="Maven: com.nukkitx.fastutil:fastutil-int-object-maps:8.3.1" level="project" /> + <orderEntry type="library" name="Maven: com.nukkitx.fastutil:fastutil-int-sets:8.3.1" level="project" /> + <orderEntry type="library" name="Maven: com.nukkitx.fastutil:fastutil-int-common:8.3.1" level="project" /> + <orderEntry type="library" name="Maven: com.nukkitx.fastutil:fastutil-object-int-maps:8.3.1" level="project" /> + <orderEntry type="library" name="Maven: com.nukkitx.network:raknet:1.6.22" level="project" /> + <orderEntry type="library" name="Maven: io.netty:netty-handler:4.1.43.Final" level="project" /> + <orderEntry type="library" name="Maven: io.netty:netty-common:4.1.43.Final" level="project" /> + <orderEntry type="library" name="Maven: io.netty:netty-transport:4.1.43.Final" level="project" /> + <orderEntry type="library" name="Maven: io.netty:netty-resolver:4.1.43.Final" level="project" /> + <orderEntry type="library" name="Maven: io.netty:netty-codec:4.1.43.Final" level="project" /> + <orderEntry type="library" name="Maven: com.nukkitx.fastutil:fastutil-long-common:8.3.1" level="project" /> + <orderEntry type="library" name="Maven: com.nukkitx.fastutil:fastutil-common:8.3.1" level="project" /> + <orderEntry type="library" name="Maven: com.nukkitx.fastutil:fastutil-long-object-maps:8.3.1" level="project" /> + <orderEntry type="library" name="Maven: com.nukkitx.fastutil:fastutil-long-sets:8.3.1" level="project" /> + <orderEntry type="library" name="Maven: com.nukkitx.fastutil:fastutil-object-sets:8.3.1" level="project" /> + <orderEntry type="library" name="Maven: com.nukkitx.fastutil:fastutil-object-common:8.3.1" level="project" /> <orderEntry type="library" scope="PROVIDED" name="Maven: com.google.code.findbugs:jsr305:1.3.9" level="project" /> <orderEntry type="library" name="Maven: com.google.code.gson:gson:2.5" level="project" /> <orderEntry type="library" name="Maven: com.nimbusds:nimbus-jose-jwt:4.39.2" level="project" /> @@ -29,15 +70,7 @@ <orderEntry type="library" name="Maven: net.sf.trove4j:trove-generator:3.1.0-SNAPSHOT" level="project" /> <orderEntry type="library" name="Maven: mysql:mysql-connector-java:8.0.19" level="project" /> <orderEntry type="library" name="Maven: com.google.protobuf:protobuf-java:3.6.1" level="project" /> - <orderEntry type="library" name="Maven: dnsjava:dnsjava:3.0.2" level="project" /> - <orderEntry type="library" name="Maven: org.slf4j:slf4j-api:1.7.30" level="project" /> <orderEntry type="library" name="Maven: org.slf4j:slf4j-simple:1.7.21" level="project" /> - <orderEntry type="library" name="Maven: io.netty:netty-resolver-dns:4.1.43.Final" level="project" /> - <orderEntry type="library" name="Maven: io.netty:netty-common:4.1.43.Final" level="project" /> - <orderEntry type="library" name="Maven: io.netty:netty-buffer:4.1.43.Final" level="project" /> - <orderEntry type="library" name="Maven: io.netty:netty-resolver:4.1.43.Final" level="project" /> - <orderEntry type="library" name="Maven: io.netty:netty-transport:4.1.43.Final" level="project" /> - <orderEntry type="library" name="Maven: io.netty:netty-codec:4.1.43.Final" level="project" /> - <orderEntry type="library" name="Maven: io.netty:netty-codec-dns:4.1.43.Final" level="project" /> + <orderEntry type="library" name="Maven: org.slf4j:slf4j-api:1.7.21" level="project" /> </component> </module>
\ No newline at end of file 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 ff6c10d..62bc108 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 @@ -3,20 +3,19 @@ package main.com.pyratron.pugmatt.bedrockconnect.gui; import com.google.gson.JsonArray; import com.google.gson.JsonObject; import com.nukkitx.protocol.bedrock.packet.ModalFormRequestPacket; +import main.com.pyratron.pugmatt.bedrockconnect.listeners.PacketHandler; import java.lang.reflect.Array; import java.util.ArrayList; import java.util.List; public class UIForms { - public static final int ERROR = 2, MAIN = 0, DIRECT_CONNECT = 1, REMOVE_SERVER = 3, DONATION = 4; - - public static int currentForm = 0; + public static final int ERROR = 2, MAIN = 0, DIRECT_CONNECT = 1, OPEN_SERVER = 3, DONATION = 4, MODIFY_SERVER = 5, REMOVE_SERVER = 6; public static final char ESCAPE = '\u00a7'; - public static ModalFormRequestPacket createMain(List<String> servers) { - currentForm = MAIN; + public static ModalFormRequestPacket createMain(List<String> servers, PacketHandler handler) { + handler.setForm(UIForms.MAIN); ModalFormRequestPacket mf = new ModalFormRequestPacket(); mf.setFormId(UIForms.MAIN); @@ -26,7 +25,6 @@ public class UIForms { JsonArray buttons = new JsonArray(); buttons.add(UIComponents.createButton("Connect to a Server")); - buttons.add(UIComponents.createButton("Remove a Server")); for(int i=0;i<servers.size();i++) { buttons.add(UIComponents.createButton(servers.get(i), "https://i.imgur.com/3BmFZRE.png", "url")); } @@ -43,8 +41,8 @@ public class UIForms { return mf; } - public static ModalFormRequestPacket createDirectConnect() { - currentForm = DIRECT_CONNECT; + public static ModalFormRequestPacket createDirectConnect(PacketHandler handler) { + handler.setForm(DIRECT_CONNECT); ModalFormRequestPacket mf = new ModalFormRequestPacket(); mf.setFormId(UIForms.DIRECT_CONNECT); JsonObject out = UIComponents.createForm("custom_form", "Connect to a Server"); @@ -61,11 +59,50 @@ public class UIForms { return mf; } - public static ModalFormRequestPacket createRemoveServer(List<String> servers) { - currentForm = REMOVE_SERVER; + public static ModalFormRequestPacket createOpenServer(String server, PacketHandler handler) { + handler.setForm(UIForms.OPEN_SERVER); + ModalFormRequestPacket mf = new ModalFormRequestPacket(); + mf.setFormId(OPEN_SERVER); + + JsonObject out = UIComponents.createForm("form", server); + out.addProperty("content", ""); + + JsonArray buttons = new JsonArray(); + + buttons.add(UIComponents.createButton("Connect")); + buttons.add(UIComponents.createButton("Modify Server")); + buttons.add(UIComponents.createButton("Remove Server")); + out.add("buttons", buttons); + + mf.setFormData(out.toString()); + + return mf; + } + + public static ModalFormRequestPacket createRemoveServer(PacketHandler handler) { + handler.setForm(UIForms.REMOVE_SERVER); + ModalFormRequestPacket mf = new ModalFormRequestPacket(); + mf.setFormId(REMOVE_SERVER); + + JsonObject out = UIComponents.createForm("form", "Are you sure?"); + out.addProperty("content", ""); + + JsonArray buttons = new JsonArray(); + + buttons.add(UIComponents.createButton("Yes, remove")); + buttons.add(UIComponents.createButton("No")); + out.add("buttons", buttons); + + mf.setFormData(out.toString()); + + return mf; + } + + /** public static ModalFormRequestPacket createModifyServer() { + currentForm = MODIFY_SERVER; ModalFormRequestPacket mf = new ModalFormRequestPacket(); mf.setFormId(UIForms.REMOVE_SERVER); - JsonObject out = UIComponents.createForm("custom_form", "Remove Server"); + JsonObject out = UIComponents.createForm("custom_form", "Modify Server"); JsonArray inputs = new JsonArray(); @@ -75,10 +112,10 @@ public class UIForms { mf.setFormData(out.toString()); return mf; - } + } **/ - public static ModalFormRequestPacket createError(String text) { - currentForm = ERROR; + public static ModalFormRequestPacket createError(String text, PacketHandler handler) { + handler.setForm(UIForms.ERROR); ModalFormRequestPacket mf = new ModalFormRequestPacket(); mf.setFormId(UIForms.ERROR); JsonObject form = new JsonObject(); @@ -91,8 +128,8 @@ public class UIForms { return mf; } - public static ModalFormRequestPacket createDonatelink() { - currentForm = DONATION; + public static ModalFormRequestPacket createDonatelink(PacketHandler handler) { + handler.setForm(UIForms.DONATION); ModalFormRequestPacket mf = new ModalFormRequestPacket(); mf.setFormId(UIForms.DONATION); JsonObject form = new JsonObject(); 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 cf68236..113f24e 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 @@ -52,6 +52,13 @@ public class PacketHandler implements BedrockPacketHandler { private JSONObject skinData; private ArrayNode chainData; + private String selectedServer; + private int currentForm; + + public void setForm(int form) { + currentForm = form; + } + private boolean print = false; private boolean packetListening; @@ -928,21 +935,19 @@ public class PacketHandler implements BedrockPacketHandler { System.out.println(packet.toString()); switch (packet.getFormId()) { case UIForms.MAIN: - if(UIForms.currentForm == UIForms.MAIN) { + if(currentForm == UIForms.MAIN) { // If exiting main window if (packet.getFormData().contains("null")) { session.disconnect("Exiting Server List"); } 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(server.getPlayer(uuid).getServerList())); + session.sendPacketImmediately(UIForms.createDirectConnect(this)); } else { // Choosing Server // If server chosen is a featued server - if(chosen-2 > server.getPlayer(uuid).getServerList().size()-1) { - int featuredServer = (chosen - 2) - (server.getPlayer(uuid).getServerList().size() - 1); + if(chosen-1 > server.getPlayer(uuid).getServerList().size()-1) { + int featuredServer = (chosen - 1) - (server.getPlayer(uuid).getServerList().size() - 1); switch (featuredServer) { case 1: // Hive @@ -965,19 +970,21 @@ public class PacketHandler implements BedrockPacketHandler { break; } } else { // If server chosen is not a featured server - String address = server.getPlayer(uuid).getServerList().get(chosen-2); + + String address = server.getPlayer(uuid).getServerList().get(chosen-1); if (address.split(":").length > 1) { String ip = address.split(":")[0]; String port = address.split(":")[1]; try { - transfer(ip, Integer.parseInt(port)); + selectedServer = address; + session.sendPacketImmediately(UIForms.createOpenServer(address, this)); } catch (Exception e) { - session.sendPacketImmediately(UIForms.createError("Error connecting to server. Invalid address.")); + session.sendPacketImmediately(UIForms.createError("Error opening server. Invalid address.", this)); } } else { - session.sendPacketImmediately(UIForms.createError("Invalid server address")); + session.sendPacketImmediately(UIForms.createError("Invalid server address", this)); } } } @@ -987,7 +994,7 @@ public class PacketHandler implements BedrockPacketHandler { case UIForms.DIRECT_CONNECT: try { if(packet.getFormData().contains("null")) - session.sendPacketImmediately(UIForms.createMain(server.getPlayer(uuid).getServerList())); + session.sendPacketImmediately(UIForms.createMain(server.getPlayer(uuid).getServerList(), this)); else { ArrayList<String> data = UIComponents.getFormData(packet.getFormData()); if(data.size() > 1) { @@ -996,19 +1003,19 @@ public class PacketHandler implements BedrockPacketHandler { data.set(1, data.get(1).replaceAll("\\s","")); if(data.get(0).length() >= 253) - session.sendPacketImmediately(UIForms.createError("Address is too large. (Must be less than 253)")); + session.sendPacketImmediately(UIForms.createError("Address is too large. (Must be less than 253)", this)); else if(data.get(1).length() >= 10) - session.sendPacketImmediately(UIForms.createError("Port is too large. (Must be less than 10)")); + session.sendPacketImmediately(UIForms.createError("Port is too large. (Must be less than 10)", this)); else if (!data.get(0).matches("^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$") && !data.get(0).matches("^((?!-)[A-Za-z0-9-]{1,63}(?<!-)\\.)+[A-Za-z]{2,6}$")) - session.sendPacketImmediately(UIForms.createError("Enter a valid address. (E.g. play.example.net, 172.16.254.1)")); + session.sendPacketImmediately(UIForms.createError("Enter a valid address. (E.g. play.example.net, 172.16.254.1)", this)); else if (!data.get(1).matches("[0-9]+")) - session.sendPacketImmediately(UIForms.createError("Enter a valid port that contains only numbers")); + session.sendPacketImmediately(UIForms.createError("Enter a valid port that contains only numbers", this)); else { boolean addServer = Boolean.parseBoolean(data.get(2)); if (addServer) { List<String> serverList = server.getPlayer(uuid).getServerList(); if (serverList.size() >= server.getPlayer(uuid).getServerLimit()) - session.sendPacketImmediately(UIForms.createError("You have hit your serverlist limit of " + server.getPlayer(uuid).getServerLimit() + " servers. Remove some to add more.")); + session.sendPacketImmediately(UIForms.createError("You have hit your serverlist limit of " + server.getPlayer(uuid).getServerLimit() + " servers. Remove some to add more.", this)); else { serverList.add(data.get(0) + ":" + data.get(1)); server.getPlayer(uuid).setServerList(serverList); @@ -1024,34 +1031,62 @@ public class PacketHandler implements BedrockPacketHandler { } } } catch(Exception e) { - session.sendPacketImmediately(UIForms.createError("Please enter a valid IP/Address and port that contains only numbers.")); + session.sendPacketImmediately(UIForms.createError("Please enter a valid IP/Address and port that contains only numbers.", this)); + } + break; + case UIForms.OPEN_SERVER: + if(packet.getFormData().contains("null")) { + session.sendPacketImmediately(UIForms.createMain(server.getPlayer(uuid).getServerList(), this)); + } + else { + int chosen = Integer.parseInt(packet.getFormData().replaceAll("\\s+", "")); + if (chosen == 0) { // Connect + + if (selectedServer != null && selectedServer.split(":").length > 1) { + String ip = selectedServer.split(":")[0]; + String port = selectedServer.split(":")[1]; + + try { + transfer(ip, Integer.parseInt(port)); + } catch (Exception e) { + session.sendPacketImmediately(UIForms.createError("Error opening server. Invalid address.", this)); + } + } else { + session.sendPacketImmediately(UIForms.createError("Invalid server address", this)); + } + } else if (chosen == 1) { // Modify Server + // session.sendPacketImmediately(UIForms.createRemoveServer(server.getPlayer(uuid).getServerList())); + } else if (chosen == 2) { // Remove Server + session.sendPacketImmediately(UIForms.createRemoveServer(this)); + } } break; case UIForms.REMOVE_SERVER: try { if(packet.getFormData().contains("null")) - session.sendPacketImmediately(UIForms.createMain(server.getPlayer(uuid).getServerList())); + session.sendPacketImmediately(UIForms.createOpenServer(selectedServer, this)); else { - ArrayList<String> data = UIComponents.getFormData(packet.getFormData()); + int chosen = Integer.parseInt(packet.getFormData().replaceAll("\\s+", "")); + if (chosen == 0) { // Yes, remove + List<String> serverList = server.getPlayer(uuid).getServerList(); + serverList.remove(serverList.indexOf(selectedServer)); - int chosen = Integer.parseInt(data.get(0)); + server.getPlayer(uuid).setServerList(serverList); - List<String> serverList = server.getPlayer(uuid).getServerList(); - serverList.remove(chosen); - - server.getPlayer(uuid).setServerList(serverList); - - session.sendPacketImmediately(UIForms.createMain(serverList)); + session.sendPacketImmediately(UIForms.createMain(serverList, this)); + } else if (chosen == 1) { // No + session.sendPacketImmediately(UIForms.createOpenServer(selectedServer, this)); + } } } catch(Exception e) { - session.sendPacketImmediately(UIForms.createError("Invalid server to remove")); + session.sendPacketImmediately(UIForms.createError("Invalid server to remove", this)); } break; case UIForms.ERROR: - session.sendPacketImmediately(UIForms.createMain(server.getPlayer(uuid).getServerList())); + session.sendPacketImmediately(UIForms.createMain(server.getPlayer(uuid).getServerList(), this)); break; case UIForms.DONATION: - session.sendPacketImmediately(UIForms.createMain(server.getPlayer(uuid).getServerList())); + session.sendPacketImmediately(UIForms.createMain(server.getPlayer(uuid).getServerList(), this)); break; } return false; @@ -1068,7 +1103,7 @@ public class PacketHandler implements BedrockPacketHandler { public boolean handle(SetLocalPlayerAsInitializedPacket packet) { if(print) System.out.println(packet.toString()); - session.sendPacketImmediately(UIForms.createMain(server.getPlayer(uuid).getServerList())); + session.sendPacketImmediately(UIForms.createMain(server.getPlayer(uuid).getServerList(), this)); return false; } |
