- Compatible API Versions
- 1.0.0-1.0.12
Broke on Nukkit API Update 1.0.13 and I dont have the sourcecode anymore
Some plugins need some data from another Servers. Bukkit has an API to get the data. Nukkit does not.
Thats why I made ServerCommunicator.
It gets this data from another Nukkit Server. The called server have to install this Plugin.
How to use as consumer:
Download the file and put it in your plugin folder. Thats it
How to use as developer:
First of all, you should add ServerCommunicator to your dependencies in your plugin.yml
To build a connection to another Server, create a NukkitConnection:
To get the data, use the following API:
I would prefer to check if a connection is possible:
Some plugins need some data from another Servers. Bukkit has an API to get the data. Nukkit does not.
Thats why I made ServerCommunicator.
It gets this data from another Nukkit Server. The called server have to install this Plugin.
How to use as consumer:
Download the file and put it in your plugin folder. Thats it
How to use as developer:
First of all, you should add ServerCommunicator to your dependencies in your plugin.yml
To build a connection to another Server, create a NukkitConnection:
Java:
NukkitConnection example = new NukkitConnection("127.0.0.1", 19132);
NukkitConnection example2 = new NukkitConnection();
example2.setAddress("127.0.0.1");
example2.setPort(19132);
Java:
NukkitConnection con = new NukkitConnection("127.0.0.1", 19132);
int onlineplayers = con.getOnlinePlayers();
int maxplayers = con.getMaxPlayers();
String motd = con.getMotd();
Java:
NukkitConnection con = new NukkitConnection("127.0.0.1", 19132);
if(con.canConnect()){
//do code
} else Server.getInstance().getLogger().critical("Connection to " + con.address + ":" + con.port + " not possible");
But the servers where you want to get the data from still need to install this plugin
Java:
package your.package;
import java.io.IOException;
import java.net.MalformedURLException;
import java.net.URL;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import org.w3c.dom.DOMException;
import org.w3c.dom.Document;
import org.xml.sax.SAXException;
import net.minidev.json.JSONObject;
import net.minidev.json.parser.JSONParser;
import net.minidev.json.parser.ParseException;
public class NukkitConnection {
//Code from ServerConnector
String address;
Integer port;
public NukkitConnection() {
}
public NukkitConnection(String address, Integer port) {
this.address = address;
this.port = port;
}
public void setAddress(String address) {
this.address = address;
}
public void setPort(Integer port) {
this.port = port;
}
public int getOnlinePlayers() {
net.minidev.json.JSONObject data;
try {
data = getDataPack();
if(data.containsKey("OnlinePlayers")) {
return Integer.parseInt(data.get("OnlinePlayers").toString());
} else return -1;
} catch (DOMException | ParserConfigurationException | ParseException | SAXException | IOException e) {
e.printStackTrace();
return -1;
}
}
public int getMaxPlayers() {
net.minidev.json.JSONObject data;
try {
data = getDataPack();
if(data.containsKey("MaxPlayers")) {
return Integer.parseInt(data.get("MaxPlayers").toString());
} else return -1;
} catch (DOMException | ParserConfigurationException | ParseException | SAXException | IOException e) {
e.printStackTrace();
return -1;
}
}
public String getMotd() {
net.minidev.json.JSONObject data;
try {
data = getDataPack();
if(data.containsKey("Motd")) {
return data.get("Motd").toString();
} else return "-1";
} catch (DOMException | ParserConfigurationException | ParseException | SAXException | IOException e) {
e.printStackTrace();
return "-1";
}
}
public JSONObject getDataPack() throws ParserConfigurationException, DOMException, ParseException, MalformedURLException, SAXException, IOException {
String url = "http://" + this.address + ":" + this.port;
JSONObject data = new JSONObject();
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
DocumentBuilder db = dbf.newDocumentBuilder();
Document doc = db.parse(new URL(url).openStream());
data = (JSONObject) new JSONParser().parse(doc.getDocumentElement().getTextContent());
return data;
}
public boolean canConnect() {
try {
getDataPack();
return true;
} catch (DOMException | ParserConfigurationException | ParseException | SAXException | IOException e) {
return false;
}
}
}