Added capability to get/set screen height in lines for each CommandSender to alter page sizes of command output such as /help (#1144)

This commit is contained in:
Dylan K. Taylor 2017-07-13 10:57:10 +01:00 committed by GitHub
parent 6b773dc04d
commit a7f5ee2f3e
4 changed files with 42 additions and 5 deletions

View File

@ -325,6 +325,9 @@ class Player extends Human implements CommandSender, InventoryHolder, ChunkLoade
/** @var PermissibleBase */
private $perm = null;
/** @var int|null */
protected $lineHeight = null;
public function getLeaveMessage(){
return new TranslationContainer(TextFormat::YELLOW . "%multiplayer.player.left", [
$this->getDisplayName()
@ -461,6 +464,17 @@ class Player extends Human implements CommandSender, InventoryHolder, ChunkLoade
$this->removeFormat = (bool) $remove;
}
public function getScreenLineHeight() : int{
return $this->lineHeight ?? 7;
}
public function setScreenLineHeight(int $height = null){
if($height !== null and $height < 1){
throw new \InvalidArgumentException("Line height must be at least 1");
}
$this->lineHeight = $height;
}
/**
* @param Player $player
*

View File

@ -44,5 +44,17 @@ interface CommandSender extends Permissible{
*/
public function getName();
/**
* Returns the line height of the command-sender's screen. Used for determining sizes for command output pagination
* such as in the /help command.
*
* @return int
*/
public function getScreenLineHeight() : int;
/**
* Sets the line height used for command output pagination for this command sender. `null` will reset it to default.
* @param int|null $height
*/
public function setScreenLineHeight(int $height = null);
}

View File

@ -31,11 +31,15 @@ use pocketmine\permission\PermissionAttachmentInfo;
use pocketmine\plugin\Plugin;
use pocketmine\Server;
use pocketmine\utils\MainLogger;
use pocketmine\utils\Terminal;
class ConsoleCommandSender implements CommandSender{
private $perm;
/** @var int|null */
protected $lineHeight = null;
public function __construct(){
$this->perm = new PermissibleBase($this);
}
@ -139,4 +143,15 @@ class ConsoleCommandSender implements CommandSender{
}
public function getScreenLineHeight() : int{
return $this->lineHeight ?? PHP_INT_MAX;
}
public function setScreenLineHeight(int $height = null){
if($height !== null and $height < 1){
throw new \InvalidArgumentException("Line height must be at least 1");
}
$this->lineHeight = $height;
}
}

View File

@ -60,11 +60,7 @@ class HelpCommand extends VanillaCommand{
$pageNumber = 1;
}
if($sender instanceof ConsoleCommandSender){
$pageHeight = PHP_INT_MAX;
}else{
$pageHeight = 7;
}
$pageHeight = $sender->getScreenLineHeight();
if($command === ""){
/** @var Command[][] $commands */