mirror of
https://github.com/pmmp/PocketMine-MP.git
synced 2025-06-27 21:59:52 +00:00
Implemented QueryRegenerateEvent as base for other interfaces
This commit is contained in:
parent
66435d4f6a
commit
51062940c5
@ -2733,6 +2733,9 @@ class Player extends Human implements CommandSender, InventoryHolder, ChunkLoade
|
||||
}
|
||||
|
||||
/**
|
||||
* Note for plugin developers: use kick() with the isAdmin
|
||||
* flag set to kick without the "Kicked by admin" part instead of this method.
|
||||
*
|
||||
* @param string $message Message to be broadcasted
|
||||
* @param string $reason Reason showed in console
|
||||
* @param bool $notify
|
||||
|
@ -45,6 +45,7 @@ use pocketmine\entity\Zombie;
|
||||
use pocketmine\event\HandlerList;
|
||||
use pocketmine\event\level\LevelInitEvent;
|
||||
use pocketmine\event\level\LevelLoadEvent;
|
||||
use pocketmine\event\server\QueryRegenerateEvent;
|
||||
use pocketmine\event\server\ServerCommandEvent;
|
||||
use pocketmine\event\Timings;
|
||||
use pocketmine\event\TimingsHandler;
|
||||
@ -232,6 +233,9 @@ class Server{
|
||||
/** @var QueryHandler */
|
||||
private $queryHandler;
|
||||
|
||||
/** @var QueryRegenerateEvent */
|
||||
private $queryRegenerateTask = null;
|
||||
|
||||
/** @var Config */
|
||||
private $properties;
|
||||
|
||||
@ -1656,7 +1660,6 @@ class Server{
|
||||
|
||||
$this->network = new Network($this);
|
||||
$this->network->setName($this->getMotd());
|
||||
$this->network->registerInterface(new RakLibInterface($this));
|
||||
|
||||
|
||||
$this->logger->info($this->getLanguage()->translateString("pocketmine.server.info", [
|
||||
@ -1694,6 +1697,10 @@ class Server{
|
||||
set_exception_handler([$this, "exceptionHandler"]);
|
||||
register_shutdown_function([$this, "crashDump"]);
|
||||
|
||||
$this->queryRegenerateTask = new QueryRegenerateEvent($this, 5);
|
||||
|
||||
$this->network->registerInterface(new RakLibInterface($this));
|
||||
|
||||
$this->pluginManager->loadPlugins($this->pluginPath);
|
||||
|
||||
$this->updater = new AutoUpdater($this, $this->getProperty("auto-updater.host", "www.pocketmine.net"));
|
||||
@ -2111,6 +2118,10 @@ class Server{
|
||||
|
||||
}
|
||||
|
||||
public function getQueryInformation(){
|
||||
return $this->queryRegenerateTask;
|
||||
}
|
||||
|
||||
/**
|
||||
* Starts the PocketMine-MP server and starts processing ticks and packets
|
||||
*/
|
||||
@ -2123,7 +2134,7 @@ class Server{
|
||||
$this->network->blockAddress($entry->getName(), -1);
|
||||
}
|
||||
|
||||
if($this->getProperty("settings.send-usage", true) !== false){
|
||||
if($this->getProperty("settings.send-usage", true)){
|
||||
$this->sendUsageTicker = 6000;
|
||||
$this->sendUsage(SendUsageTask::TYPE_OPEN);
|
||||
}
|
||||
@ -2471,9 +2482,12 @@ class Server{
|
||||
$this->maxTick = 20;
|
||||
$this->maxUse = 0;
|
||||
|
||||
if($this->queryHandler !== null and ($this->tickCounter & 0b111111111) === 0){
|
||||
if(($this->tickCounter & 0b111111111) === 0){
|
||||
try{
|
||||
$this->queryHandler->regenerateInfo();
|
||||
$this->getPluginManager()->callEvent($this->queryRegenerateTask = new QueryRegenerateEvent($this, 5));
|
||||
if($this->queryHandler !== null){
|
||||
$this->queryHandler->regenerateInfo();
|
||||
}
|
||||
}catch(\Exception $e){
|
||||
if($this->logger instanceof MainLogger){
|
||||
$this->logger->logException($e);
|
||||
|
@ -58,7 +58,7 @@ class QueryRegenerateEvent extends ServerEvent{
|
||||
$this->plugins = $server->getPluginManager()->getPlugins();
|
||||
$this->players = [];
|
||||
foreach($server->getOnlinePlayers() as $player){
|
||||
if($player->getName() != "" and $player->isConnected()){
|
||||
if($player->isOnline()){
|
||||
$this->players[] = $player;
|
||||
}
|
||||
}
|
||||
|
@ -172,12 +172,14 @@ class RakLibInterface implements ServerInstance, AdvancedSourceInterface{
|
||||
}
|
||||
|
||||
public function setName($name){
|
||||
$info = $this->server->getQueryInformation();
|
||||
|
||||
$this->interface->sendOption("name",
|
||||
"MCPE;".addcslashes($name, ";") .";".
|
||||
Info::CURRENT_PROTOCOL.";".
|
||||
\pocketmine\MINECRAFT_VERSION_NETWORK.";".
|
||||
count($this->server->getOnlinePlayers()).";".
|
||||
$this->server->getMaxPlayers()
|
||||
$info->getPlayerCount().";".
|
||||
$info->getMaxPlayerCount()
|
||||
);
|
||||
}
|
||||
|
||||
|
@ -25,7 +25,6 @@
|
||||
*/
|
||||
namespace pocketmine\network\query;
|
||||
|
||||
use pocketmine\event\server\QueryRegenerateEvent;
|
||||
use pocketmine\Server;
|
||||
use pocketmine\utils\Binary;
|
||||
use pocketmine\utils\Utils;
|
||||
@ -58,7 +57,7 @@ class QueryHandler{
|
||||
}
|
||||
|
||||
public function regenerateInfo(){
|
||||
$this->server->getPluginManager()->callEvent($ev = new QueryRegenerateEvent($this->server, 5));
|
||||
$ev = $this->server->getQueryInformation();
|
||||
$this->longData = $ev->getLongQuery();
|
||||
$this->shortData = $ev->getShortQuery();
|
||||
$this->timeout = microtime(true) + $ev->getTimeout();
|
||||
|
Loading…
x
Reference in New Issue
Block a user