summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--serverlist-server/src/main/com/pyratron/pugmatt/bedrockconnect/BedrockConnect.java47
-rw-r--r--serverlist-server/src/main/com/pyratron/pugmatt/bedrockconnect/listeners/PacketHandler.java14
2 files changed, 55 insertions, 6 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 8cea6ca..86ac199 100644
--- a/serverlist-server/src/main/com/pyratron/pugmatt/bedrockconnect/BedrockConnect.java
+++ b/serverlist-server/src/main/com/pyratron/pugmatt/bedrockconnect/BedrockConnect.java
@@ -3,6 +3,9 @@ package main.com.pyratron.pugmatt.bedrockconnect;
import main.com.pyratron.pugmatt.bedrockconnect.sql.Data;
import main.com.pyratron.pugmatt.bedrockconnect.sql.MySQL;
import main.com.pyratron.pugmatt.bedrockconnect.utils.PaletteManager;
+import org.json.simple.JSONArray;
+import org.json.simple.JSONObject;
+import org.json.simple.parser.JSONParser;
import java.io.*;
import java.net.*;
@@ -29,8 +32,11 @@ public class BedrockConnect {
public static boolean kickInactive = true;
public static boolean userServers = true;
public static boolean featuredServers = true;
+ public static boolean fetchFeaturedIps = true;
public static File whitelistfile;
+ public static HashMap<String, String> featuredServerIps;
+
public static void main(String[] args) {
System.out.println("-= BedrockConnect =-");
paletteManager = new PaletteManager();
@@ -117,6 +123,9 @@ public class BedrockConnect {
if (str.startsWith("featured_servers=")) {
featuredServers = getArgValue(str, "featured_servers").toLowerCase().equals("true");
}
+ if (str.startsWith("fetch_featured_ips=")) {
+ fetchFeaturedIps = getArgValue(str, "fetch_featured_ips").toLowerCase().equals("true");
+ }
if (str.startsWith("whitelist=")) {
try {
whitelistfile = new File(getArgValue(str, "whitelist"));
@@ -142,6 +151,44 @@ public class BedrockConnect {
if (Whitelist.hasWhitelist()) {
System.out.printf("There are %d whitelisted players\n", Whitelist.getWhitelist().size());
}
+
+ if(!fetchFeaturedIps) {
+ try {
+ featuredServerIps = new HashMap<>();
+
+ // If the file doesn't already exist, create a configuration file containing the hard-coded IPs
+ // for the featured servers if fetching the featured ips is set to disabled
+ File ipFile = new File("featured_server_ips.json");
+ if (ipFile.createNewFile()) {
+ featuredServerIps.put("hivebedrock.network", "167.114.81.89");
+ featuredServerIps.put("mco.mineplex.com", "108.178.12.125");
+ featuredServerIps.put("mco.lbsg.net", "142.44.240.96");
+ featuredServerIps.put("play.inpvp.net", "52.234.130.241");
+ featuredServerIps.put("play.galaxite.net", "51.222.8.223");
+ featuredServerIps.put("play.pixelparadise.gg", "40.87.84.106");
+
+ JSONObject jo = new JSONObject();
+ for (Map.Entry server : featuredServerIps.entrySet()) {
+ jo.put(server.getKey(), server.getValue());
+ }
+
+ PrintWriter pw = new PrintWriter("featured_server_ips.json");
+ pw.write(jo.toJSONString());
+ pw.flush();
+ pw.close();
+ } else {
+ Object obj = new JSONParser().parse(new FileReader("featured_server_ips.json"));
+
+ JSONObject jo = (JSONObject) obj;
+ for (Object server : jo.keySet()) {
+ featuredServerIps.put((String) server, (String) jo.get(server));
+ }
+ }
+ } catch (Exception e) {
+ System.out.println("An error occurred.");
+ e.printStackTrace();
+ }
+ }
if(!noDB) {
MySQL = new MySQL(hostname, database, username, password);
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 ef28bda..56c4d81 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
@@ -8,6 +8,7 @@ import com.nimbusds.jwt.SignedJWT;
import com.nukkitx.math.vector.Vector3f;
import com.nukkitx.nbt.NbtUtils;
import com.nukkitx.network.util.Preconditions;
+import com.nukkitx.protocol.bedrock.Bedrock;
import com.nukkitx.protocol.bedrock.BedrockClient;
import com.nukkitx.protocol.bedrock.BedrockPacketCodec;
import com.nukkitx.protocol.bedrock.data.AttributeData;
@@ -66,15 +67,16 @@ public class PacketHandler implements BedrockPacketHandler {
public static String getIP(String hostname) {
try {
- InetAddress host = InetAddress.getByName(hostname);
- String IP = host.getHostAddress().toString();
- //System.out.println(IP);
- return IP;
+ if(BedrockConnect.fetchFeaturedIps) {
+ InetAddress host = InetAddress.getByName(hostname);
+ return host.getHostAddress();
+ } else {
+ return BedrockConnect.featuredServerIps.get(hostname);
+ }
} catch (UnknownHostException ex) {
ex.printStackTrace();
- String IP = "0.0.0.0";
- return IP;
}
+ return "0.0.0.0";
}
@Override