mirror of
https://github.com/pmmp/PocketMine-MP.git
synced 2025-07-03 16:49:53 +00:00
Move player creation out of NetworkSession
This commit is contained in:
parent
6f09d472e2
commit
c0438f1ddb
@ -35,6 +35,7 @@ use pocketmine\command\SimpleCommandMap;
|
|||||||
use pocketmine\crafting\CraftingManager;
|
use pocketmine\crafting\CraftingManager;
|
||||||
use pocketmine\crafting\CraftingManagerFromDataHelper;
|
use pocketmine\crafting\CraftingManagerFromDataHelper;
|
||||||
use pocketmine\event\HandlerListManager;
|
use pocketmine\event\HandlerListManager;
|
||||||
|
use pocketmine\event\player\PlayerCreationEvent;
|
||||||
use pocketmine\event\player\PlayerDataSaveEvent;
|
use pocketmine\event\player\PlayerDataSaveEvent;
|
||||||
use pocketmine\event\server\CommandEvent;
|
use pocketmine\event\server\CommandEvent;
|
||||||
use pocketmine\event\server\DataPacketSendEvent;
|
use pocketmine\event\server\DataPacketSendEvent;
|
||||||
@ -67,6 +68,7 @@ use pocketmine\permission\DefaultPermissions;
|
|||||||
use pocketmine\player\GameMode;
|
use pocketmine\player\GameMode;
|
||||||
use pocketmine\player\OfflinePlayer;
|
use pocketmine\player\OfflinePlayer;
|
||||||
use pocketmine\player\Player;
|
use pocketmine\player\Player;
|
||||||
|
use pocketmine\player\PlayerInfo;
|
||||||
use pocketmine\plugin\PharPluginLoader;
|
use pocketmine\plugin\PharPluginLoader;
|
||||||
use pocketmine\plugin\Plugin;
|
use pocketmine\plugin\Plugin;
|
||||||
use pocketmine\plugin\PluginEnableOrder;
|
use pocketmine\plugin\PluginEnableOrder;
|
||||||
@ -575,6 +577,23 @@ class Server{
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function createPlayer(NetworkSession $session, PlayerInfo $playerInfo, bool $authenticated) : Player{
|
||||||
|
$ev = new PlayerCreationEvent($session);
|
||||||
|
$ev->call();
|
||||||
|
$class = $ev->getPlayerClass();
|
||||||
|
|
||||||
|
//TODO: make this async
|
||||||
|
//TODO: what about allowing this to be provided by PlayerCreationEvent?
|
||||||
|
$namedtag = $this->getOfflinePlayerData($playerInfo->getUsername());
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @see Player::__construct()
|
||||||
|
* @var Player $player
|
||||||
|
*/
|
||||||
|
$player = new $class($this, $session, $playerInfo, $authenticated, $namedtag);
|
||||||
|
return $player;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns an online player whose name begins with or equals the given string (case insensitive).
|
* Returns an online player whose name begins with or equals the given string (case insensitive).
|
||||||
* The closest match will be returned, or null if there are no online matches.
|
* The closest match will be returned, or null if there are no online matches.
|
||||||
|
@ -31,7 +31,6 @@ use pocketmine\entity\effect\EffectInstance;
|
|||||||
use pocketmine\entity\Entity;
|
use pocketmine\entity\Entity;
|
||||||
use pocketmine\entity\Human;
|
use pocketmine\entity\Human;
|
||||||
use pocketmine\entity\Living;
|
use pocketmine\entity\Living;
|
||||||
use pocketmine\event\player\PlayerCreationEvent;
|
|
||||||
use pocketmine\event\server\DataPacketReceiveEvent;
|
use pocketmine\event\server\DataPacketReceiveEvent;
|
||||||
use pocketmine\event\server\DataPacketSendEvent;
|
use pocketmine\event\server\DataPacketSendEvent;
|
||||||
use pocketmine\form\Form;
|
use pocketmine\form\Form;
|
||||||
@ -230,16 +229,7 @@ class NetworkSession{
|
|||||||
}
|
}
|
||||||
|
|
||||||
protected function createPlayer() : void{
|
protected function createPlayer() : void{
|
||||||
$ev = new PlayerCreationEvent($this);
|
$this->player = $this->server->createPlayer($this, $this->info, $this->authenticated);
|
||||||
$ev->call();
|
|
||||||
$class = $ev->getPlayerClass();
|
|
||||||
|
|
||||||
//TODO: make this async
|
|
||||||
//TODO: this really has no business being in NetworkSession at all - what about allowing it to be provided by PlayerCreationEvent?
|
|
||||||
$namedtag = $this->server->getOfflinePlayerData($this->info->getUsername());
|
|
||||||
|
|
||||||
/** @see Player::__construct() */
|
|
||||||
$this->player = new $class($this->server, $this, $this->info, $this->authenticated, $namedtag);
|
|
||||||
|
|
||||||
$this->invManager = new InventoryManager($this->player, $this);
|
$this->invManager = new InventoryManager($this->player, $this);
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user