summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMatthew <pugmatt@gmail.com>2020-12-19 00:24:43 -0500
committerMatthew <pugmatt@gmail.com>2020-12-19 00:24:43 -0500
commit0a4410bff023d374942659bb4b76a4ccece55230 (patch)
tree086eba44e5598dc8cb0b8cab588515e3e6730774
parent769d12db455c60178f6f3a879900df12ac5fef74 (diff)
downloadBedrockConnect-1.6.1.tar.gz
BedrockConnect-1.6.1.tar.bz2
BedrockConnect-1.6.1.zip
Add setting to disable user server options1.6.1
-rw-r--r--serverlist-server/src/main/com/pyratron/pugmatt/bedrockconnect/BedrockConnect.java24
-rw-r--r--serverlist-server/src/main/com/pyratron/pugmatt/bedrockconnect/gui/MainFormButton.java5
-rw-r--r--serverlist-server/src/main/com/pyratron/pugmatt/bedrockconnect/gui/UIForms.java59
-rw-r--r--serverlist-server/src/main/com/pyratron/pugmatt/bedrockconnect/listeners/PacketHandler.java99
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);