summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMatthew <pugmatt@gmail.com>2020-11-05 21:48:13 -0500
committerMatthew <pugmatt@gmail.com>2020-11-05 21:48:13 -0500
commit82855f48a3e7fea5e9418435279fe9dd53d6e608 (patch)
treedf4a18bb16c87ed6858d5d1a4bba0757c6f30afb
parent1f0c15135fc1e4741645c35528164a8978e3b1b1 (diff)
downloadBedrockConnect-bc-2.tar.gz
BedrockConnect-bc-2.tar.bz2
BedrockConnect-bc-2.zip
New menu when clicking a serverbc-2
-rw-r--r--serverlist-server/BedrockConnect.iml51
-rw-r--r--serverlist-server/src/main/com/pyratron/pugmatt/bedrockconnect/gui/UIForms.java69
-rw-r--r--serverlist-server/src/main/com/pyratron/pugmatt/bedrockconnect/listeners/PacketHandler.java95
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;
}