Merge branch 'master' into api3/network

This commit is contained in:
Dylan K. Taylor
2017-03-08 20:35:41 +00:00
12 changed files with 197 additions and 38 deletions

View File

@ -64,6 +64,7 @@ use pocketmine\event\player\PlayerRespawnEvent;
use pocketmine\event\player\PlayerToggleFlightEvent;
use pocketmine\event\player\PlayerToggleSneakEvent;
use pocketmine\event\player\PlayerToggleSprintEvent;
use pocketmine\event\player\PlayerTransferEvent;
use pocketmine\event\server\DataPacketReceiveEvent;
use pocketmine\event\server\DataPacketSendEvent;
use pocketmine\event\TextContainer;
@ -503,6 +504,9 @@ class Player extends Human implements CommandSender, InventoryHolder, ChunkLoade
public function setViewDistance(int $distance){
$this->viewDistance = $this->server->getAllowedViewDistance($distance);
$this->spawnThreshold = (int) (min($this->viewDistance, $this->server->getProperty("chunk-sending.spawn-radius", 4)) ** 2 * M_PI);
$pk = new ChunkRadiusUpdatedPacket();
$pk->radius = $this->viewDistance;
$this->dataPacket($pk);
@ -3329,6 +3333,31 @@ class Player extends Human implements CommandSender, InventoryHolder, ChunkLoade
$timings->stopTiming();
}
/**
* Transfers a player to another server.
*
* @param string $address The IP address or hostname of the destination server
* @param int $port The destination port, defaults to 19132
* @param string $message Message to show in the console when closing the player
*
* @return bool if transfer was successful.
*/
public function transfer(string $address, int $port = 19132, string $message = "transfer") : bool{
$this->server->getPluginManager()->callEvent($ev = new PlayerTransferEvent($this, $address, $port, $message));
if(!$ev->isCancelled()){
$pk = new TransferPacket();
$pk->address = $ev->getAddress();
$pk->port = $ev->getPort();
$this->dataPacket($pk);
$this->close("", $ev->getMessage(), false);
return true;
}
return false;
}
/**
* Kicks a player from the server
*