diff --git a/src/API/ServerAPI.php b/src/API/ServerAPI.php index 6c3374fb3..b4923f40c 100644 --- a/src/API/ServerAPI.php +++ b/src/API/ServerAPI.php @@ -86,6 +86,7 @@ class ServerAPI{ "description" => "Server made using PocketMine-MP", "motd" => "Welcome @username to this server!", "invisible" => false, + "server-ip" => "0.0.0.0", "port" => 19132, "memory-limit" => "256M", "last-update" => false, @@ -106,7 +107,7 @@ class ServerAPI{ )); $this->parseProperties(); define("DEBUG", $this->getProperty("debug")); - $this->server = new PocketMinecraftServer($this->getProperty("server-name"), $this->getProperty("gamemode"), false, $this->getProperty("port"), $this->getProperty("server-id")); + $this->server = new PocketMinecraftServer($this->getProperty("server-name"), $this->getProperty("gamemode"), false, $this->getProperty("port"), $this->getProperty("server-id"), $this->getProperty("server-ip")); $this->setProperty("server-id", $this->server->serverID); $this->server->api = $this; if($this->getProperty("upnp-forwarding") === true){ diff --git a/src/classes/PocketMinecraftServer.php b/src/classes/PocketMinecraftServer.php index 4ce371d31..3338a7327 100644 --- a/src/classes/PocketMinecraftServer.php +++ b/src/classes/PocketMinecraftServer.php @@ -28,7 +28,7 @@ the Free Software Foundation, either version 3 of the License, or class PocketMinecraftServer{ public $tCnt; var $version, $invisible, $api, $tickMeasure, $preparedSQL, $seed, $gamemode, $name, $maxClients, $clients, $eidCnt, $custom, $description, $motd, $timePerSecond, $spawn, $entities, $mapDir, $mapName, $map, $levelData, $tileEntities; - private $database, $interface, $evCnt, $handCnt, $events, $eventsID, $handlers, $serverType, $lastTick, $ticker; + private $serverip, $database, $interface, $evCnt, $handCnt, $events, $eventsID, $handlers, $serverType, $lastTick, $ticker; private function load(){ $this->version = new VersionString(); @@ -37,7 +37,7 @@ class PocketMinecraftServer{ if($this->version->isDev()){ console("[INFO] \x1b[31;1mThis is a Development version"); } - console("[INFO] Starting Minecraft PE Server at *:".$this->port); + console("[INFO] Starting Minecraft PE Server at ".$this->serverip.":".$this->port); if($this->port < 19132 or $this->port > 19135){ console("[WARNING] You've selected a not-standard port. Normal port range is from 19132 to 19135 included"); } @@ -81,13 +81,14 @@ class PocketMinecraftServer{ $this->stop = false; } - function __construct($name, $gamemode = 1, $seed = false, $port = 19132, $serverID = false){ + function __construct($name, $gamemode = 1, $seed = false, $port = 19132, $serverID = false, $serverip = "0.0.0.0"){ $this->port = (int) $port; //19132 - 19135 $this->gamemode = (int) $gamemode; $this->name = $name; $this->motd = "Welcome to ".$name; $this->serverID = $serverID; $this->seed = $seed; + $this->serverip = $serverip; $this->load(); } diff --git a/src/classes/network/MinecraftInterface.php b/src/classes/network/MinecraftInterface.php index 46eb32cbd..40478612f 100644 --- a/src/classes/network/MinecraftInterface.php +++ b/src/classes/network/MinecraftInterface.php @@ -32,8 +32,8 @@ class MinecraftInterface{ var $dataName; private $socket; private $data; - function __construct($server, $port = 25565, $listen = false, $client = true){ - $this->socket = new UDPSocket($server, $port, (bool) $listen); + function __construct($server, $port = 25565, $listen = false, $client = false, $serverip = "0.0.0.0"){ + $this->socket = new UDPSocket($server, $port, (bool) $listen, $serverip); require("protocol/RakNet.php"); require("protocol/packetName.php"); require("protocol/current.php"); diff --git a/src/classes/network/UDPSocket.php b/src/classes/network/UDPSocket.php index 886ba7205..9c65f3d70 100644 --- a/src/classes/network/UDPSocket.php +++ b/src/classes/network/UDPSocket.php @@ -30,7 +30,7 @@ the Free Software Foundation, either version 3 of the License, or class UDPSocket{ private $encrypt; var $buffer, $connected, $errors, $sock, $server; - function __construct($server, $port, $listen = false){ + function __construct($server, $port, $listen = false, $serverip = "0.0.0.0"){ $this->errors = array_fill(88,(125 - 88) + 1, true); $this->server = $server; $this->port = $port; @@ -41,10 +41,10 @@ class UDPSocket{ $this->buffer = array(); $this->unblock(); }else{ - if(socket_bind($this->sock, "0.0.0.0", $port) === true){ + if(socket_bind($this->sock, $serverip, $port) === true){ $this->unblock(); }else{ - console("[ERROR] Couldn't bind to 0.0.0.0:".$port, true, true, 0); + console("[ERROR] Couldn't bind to $serverip:".$port, true, true, 0); die(); } }