Skip to content

Commit

Permalink
PM4 compatibility + PHP8 compatiblity (#188)
Browse files Browse the repository at this point in the history
  • Loading branch information
alvin0319 committed Feb 12, 2022
1 parent ba94100 commit 270ea71
Show file tree
Hide file tree
Showing 16 changed files with 70 additions and 87 deletions.
15 changes: 9 additions & 6 deletions .poggit.yml
Original file line number Diff line number Diff line change
@@ -1,17 +1,20 @@
--- # Poggit-CI Manifest. Open the CI at https://poggit.pmmp.io/ci/Ifera/ScoreHud
branches:
- master
- master
- PM4
projects:
ScoreHud:
icon: meta/ScoreHud.PNG
libs:
- src: buchwasa/ScoreFactory/ScoreFactory
version: ^4.0.0
branch: pm3
- src: Ifera/ScoreFactory/ScoreFactory
version: ^3.0.2
branch: pm4
- src: ifera-mc/UpdateNotifier/UpdateNotifier
version: ^2.0.0
- src: Ifera/ConfigUpdater/ConfigUpdater
version: ^1.1.0
branch: API-4.0.0
- src: ifera-mc/ConfigUpdater/ConfigUpdater
version: ^1.2.1
branch: PM4
lint:
phpstan: false
...
4 changes: 2 additions & 2 deletions plugin.yml
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
name: ScoreHud
main: Ifera\ScoreHud\ScoreHud
api: 3.0.0
api: 4.0.0
version: 6.3.1
author: Ifera
description: Add fully customizable scoreboards to your server.

extensions:
Core: '>=7.4'
Core: '>=8.0'

virions:
- ScoreFactory
Expand Down
22 changes: 17 additions & 5 deletions src/Ifera/ScoreHud/EventListener.php
Original file line number Diff line number Diff line change
Expand Up @@ -39,9 +39,10 @@
use Ifera\ScoreHud\event\ServerTagUpdateEvent;
use Ifera\ScoreHud\scoreboard\ScoreTag;
use Ifera\ScoreHud\session\PlayerManager;
use pocketmine\event\entity\EntityLevelChangeEvent;
use pocketmine\event\entity\EntityTeleportEvent;
use pocketmine\event\Listener;
use pocketmine\Player;
use pocketmine\player\Player;
use pocketmine\world\Position;
use function is_null;

class EventListener implements Listener{
Expand All @@ -53,18 +54,29 @@ public function __construct(ScoreHud $plugin){
$this->plugin = $plugin;
}

public function onWorldChange(EntityLevelChangeEvent $event){
public function onWorldChange(EntityTeleportEvent $event){
if(!ScoreHudSettings::isMultiWorld()){
return;
}

$from = $event->getFrom();
$to = $event->getTo();

if(!($from instanceof Position and $to instanceof Position)){
return;
}

if($from->getWorld()->getFolderName() === $to->getWorld()->getFolderName()){
return;
}

$player = $event->getEntity();

if(!$player instanceof Player or !$player->spawned){
return;
}

PlayerManager::getNonNull($player)->handle($event->getTarget()->getFolderName());
PlayerManager::getNonNull($player)->handle($to->getWorld()->getFolderName());
}

public function onServerTagUpdate(ServerTagUpdateEvent $event){
Expand Down Expand Up @@ -96,7 +108,7 @@ private function updateServerTag(ScoreTag $tag){
private function updateTag(Player $player, ScoreTag $newTag): void{
if(
!$player->isOnline() ||
ScoreHudSettings::isInDisabledWorld($player->getLevelNonNull()->getFolderName()) ||
ScoreHudSettings::isInDisabledWorld($player->getWorld()->getFolderName()) ||
is_null($session = PlayerManager::get($player)) ||
is_null($scoreboard = $session->getScoreboard()) ||
is_null($scoreTag = $scoreboard->getTag($newTag->getName()))
Expand Down
11 changes: 5 additions & 6 deletions src/Ifera/ScoreHud/ScoreHud.php
Original file line number Diff line number Diff line change
Expand Up @@ -43,19 +43,18 @@
use Ifera\ScoreHud\utils\Utils;
use jackmd\scorefactory\ScoreFactory;
use JackMD\UpdateNotifier\UpdateNotifier;
use pocketmine\Player;
use pocketmine\player\Player;
use pocketmine\plugin\PluginBase;
use pocketmine\utils\Config;
use pocketmine\utils\SingletonTrait;
use function is_array;

class ScoreHud extends PluginBase{
use SingletonTrait;

private const CONFIG_VERSION = 10;
private const SCOREHUD_VERSION = 2;

/** @var ScoreHud|null */
private static $instance = null;

private ?Config $scoreConfig;

/**
Expand All @@ -66,7 +65,7 @@ public static function getInstance(): ?ScoreHud{
}

public function onLoad(): void{
self::$instance = $this;
self::setInstance($this);
}

public function onEnable(): void{
Expand Down Expand Up @@ -182,7 +181,7 @@ public function setScore(Player $player, bool $calledFromTask): void{
return;
}

if(HelperUtils::isDisabled($player) || ScoreHudSettings::isInDisabledWorld($player->getLevelNonNull()->getFolderName())){
if(HelperUtils::isDisabled($player) || ScoreHudSettings::isInDisabledWorld($player->getWorld()->getFolderName())){
ScoreFactory::removeScore($player);

return;
Expand Down
18 changes: 9 additions & 9 deletions src/Ifera/ScoreHud/commands/ScoreHudCommand.php
Original file line number Diff line number Diff line change
Expand Up @@ -38,28 +38,28 @@
use Ifera\ScoreHud\session\PlayerManager;
use Ifera\ScoreHud\utils\HelperUtils;
use jackmd\scorefactory\ScoreFactory;
use pocketmine\command\Command;
use pocketmine\command\CommandSender;
use pocketmine\command\PluginCommand;
use pocketmine\Player;
use pocketmine\player\Player;
use pocketmine\plugin\PluginOwned;
use pocketmine\plugin\PluginOwnedTrait;

class ScoreHudCommand extends PluginCommand{

/** @var ScoreHud */
private $plugin;
class ScoreHudCommand extends Command implements PluginOwned{
use PluginOwnedTrait;

/**
* ScoreHudCommand constructor.
*
* @param ScoreHud $plugin
*/
public function __construct(ScoreHud $plugin){
parent::__construct("scorehud", $plugin);
parent::__construct("scorehud");
$this->setDescription("Shows ScoreHud Commands");
$this->setUsage("/scorehud <on|off|about|help>");
$this->setAliases(["sh"]);
$this->setPermission("sh.command.sh");

$this->plugin = $plugin;
$this->owningPlugin = $plugin;
}

/**
Expand Down Expand Up @@ -87,7 +87,7 @@ public function execute(CommandSender $sender, string $commandLabel, array $args

switch($args[0]){
case "about":
$sender->sendMessage(ScoreHudSettings::PREFIX . "§6Score§eHud §av" . $this->plugin->getDescription()->getVersion() . "§a. Plugin by §dIfera§a. Contact on §bTwitter: @ifera_tr §aor §bDiscord: Ifera#3717§a.");
$sender->sendMessage(ScoreHudSettings::PREFIX . "§6Score§eHud §av" . $this->owningPlugin->getDescription()->getVersion() . "§a. Plugin by §dIfera§a. Contact on §bTwitter: @ifera_tr §aor §bDiscord: Ifera#3717§a.");
break;

case "on":
Expand Down
9 changes: 2 additions & 7 deletions src/Ifera/ScoreHud/event/PlayerEvent.php
Original file line number Diff line number Diff line change
Expand Up @@ -3,16 +3,11 @@

namespace Ifera\ScoreHud\event;

use pocketmine\Player;
use pocketmine\player\Player;

abstract class PlayerEvent extends ScoreHudEvent{

/** @var Player */
protected $player;

public function __construct(Player $player){
$this->player = $player;

public function __construct(private Player $player){
parent::__construct();
}

Expand Down
4 changes: 2 additions & 2 deletions src/Ifera/ScoreHud/event/PlayerScoreTagEvent.php
Original file line number Diff line number Diff line change
Expand Up @@ -4,12 +4,12 @@
namespace Ifera\ScoreHud\event;

use Ifera\ScoreHud\scoreboard\ScoreTag;
use pocketmine\Player;
use pocketmine\player\Player;

abstract class PlayerScoreTagEvent extends PlayerEvent{

/** @var ScoreTag */
protected $tag;
protected ScoreTag $tag;

public function __construct(Player $player, ScoreTag $tag){
$this->tag = $tag;
Expand Down
4 changes: 2 additions & 2 deletions src/Ifera/ScoreHud/event/PlayerTagsUpdateEvent.php
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@
namespace Ifera\ScoreHud\event;

use Ifera\ScoreHud\scoreboard\ScoreTag;
use pocketmine\Player;
use pocketmine\player\Player;

/**
* Same as PlayerTagUpdateEvent but provides an easier way
Expand All @@ -45,7 +45,7 @@
class PlayerTagsUpdateEvent extends PlayerEvent{

/** @var ScoreTag[] */
private $tags = [];
private array $tags = [];

/**
* @param ScoreTag[] $tags
Expand Down
2 changes: 1 addition & 1 deletion src/Ifera/ScoreHud/event/ScoreHudEvent.php
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@
abstract class ScoreHudEvent extends Event{

/** @var ScoreHud|null */
protected $plugin = null;
protected ?ScoreHud $plugin = null;

public function __construct(){
$this->plugin = ScoreHud::getInstance();
Expand Down
7 changes: 1 addition & 6 deletions src/Ifera/ScoreHud/event/ServerTagUpdateEvent.php
Original file line number Diff line number Diff line change
Expand Up @@ -48,12 +48,7 @@
*/
class ServerTagUpdateEvent extends ScoreHudEvent{

/** @var ScoreTag */
protected $tag;

public function __construct(ScoreTag $tag){
$this->tag = $tag;

public function __construct(private ScoreTag $tag){
parent::__construct();
}

Expand Down
2 changes: 1 addition & 1 deletion src/Ifera/ScoreHud/event/ServerTagsUpdateEvent.php
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,7 @@
class ServerTagsUpdateEvent extends ScoreHudEvent{

/** @var ScoreTag[] */
private $tags = [];
private array $tags = [];

/**
* @param ScoreTag[] $tags
Expand Down
19 changes: 3 additions & 16 deletions src/Ifera/ScoreHud/scoreboard/Scoreboard.php
Original file line number Diff line number Diff line change
Expand Up @@ -47,14 +47,6 @@
use function strlen;

class Scoreboard{

/** @var PlayerSession */
private $session;
/** @var string[] */
private $lines = [];
/** @var ScoreTag[] */
private $tags = [];

/** @var string[] */
private $formattedLines = [];

Expand All @@ -65,10 +57,7 @@ class Scoreboard{
* @param string[] $lines
* @param ScoreTag[] $tags
*/
public function __construct(PlayerSession $session, array $lines = [], array $tags = []){
$this->session = $session;
$this->lines = $lines;
$this->tags = $tags;
public function __construct(private PlayerSession $session, private array $lines = [], private array $tags = []){
}

public function getSession(): PlayerSession{
Expand Down Expand Up @@ -128,7 +117,7 @@ public function getProcessedTags(): array{
public function update(): self{
$player = $this->session->getPlayer();

if(!$player->isOnline() || HelperUtils::isDisabled($player) || ScoreHudSettings::isInDisabledWorld($player->getLevelNonNull()->getFolderName())){
if(!$player->isOnline() || HelperUtils::isDisabled($player) || ScoreHudSettings::isInDisabledWorld($player->getWorld()->getFolderName())){
return $this;
}

Expand Down Expand Up @@ -168,7 +157,7 @@ public function update(): self{
public function display(): self{
$player = $this->session->getPlayer();

if(!$player->isOnline() || HelperUtils::isDisabled($player) || ScoreHudSettings::isInDisabledWorld($player->getLevelNonNull()->getFolderName())){
if(!$player->isOnline() || HelperUtils::isDisabled($player) || ScoreHudSettings::isInDisabledWorld($player->getWorld()->getFolderName())){
return $this;
}

Expand All @@ -184,8 +173,6 @@ public function display(): self{
ScoreFactory::setScoreLine($player, $i, $formattedLine);
}

ScoreFactory::send($player);

return $this;
}
}
10 changes: 5 additions & 5 deletions src/Ifera/ScoreHud/session/PlayerManager.php
Original file line number Diff line number Diff line change
Expand Up @@ -33,15 +33,15 @@

namespace Ifera\ScoreHud\session;

use pocketmine\Player;
use pocketmine\player\Player;

class PlayerManager{

/** @var PlayerSession[] */
private static $sessions = [];

public static function create(Player $player): void{
self::$sessions[$player->getRawUniqueId()] = $session = new PlayerSession($player);
self::$sessions[$player->getUniqueId()->toString()] = $session = new PlayerSession($player);
$session->handle();
}

Expand All @@ -50,7 +50,7 @@ public static function destroy(Player $player): void{
return;
}

if(!isset(self::$sessions[$uuid = $player->getRawUniqueId()])){
if(!isset(self::$sessions[$uuid = $player->getUniqueId()->toString()])){
return;
}

Expand All @@ -59,11 +59,11 @@ public static function destroy(Player $player): void{
}

public static function get(Player $player): ?PlayerSession{
return self::$sessions[$player->getRawUniqueId()] ?? null;
return self::$sessions[$player->getUniqueId()->toString()] ?? null;
}

public static function getNonNull(Player $player): PlayerSession{
return self::$sessions[$player->getRawUniqueId()];
return self::$sessions[$player->getUniqueId()->toString()];
}

/**
Expand Down
13 changes: 5 additions & 8 deletions src/Ifera/ScoreHud/session/PlayerSession.php
Original file line number Diff line number Diff line change
Expand Up @@ -39,21 +39,18 @@
use Ifera\ScoreHud\ScoreHudSettings;
use Ifera\ScoreHud\utils\HelperUtils;
use jackmd\scorefactory\ScoreFactory;
use pocketmine\Player;
use pocketmine\player\Player;
use function is_null;

class PlayerSession{

/** @var ScoreHud */
private $plugin;
/** @var Player */
private $player;
private ScoreHud $plugin;
/** @var Scoreboard|null */
private $scoreboard;
private ?Scoreboard $scoreboard;

public function __construct(Player $player){
public function __construct(private Player $player){
$this->plugin = ScoreHud::getInstance();
$this->player = $player;
$this->scoreboard = null;
}

Expand All @@ -76,7 +73,7 @@ public function handle(string $world = null, bool $calledFromTask = false): void
return;
}

$world = $world ?? $player->getLevelNonNull()->getFolderName();
$world = $world ?? $player->getWorld()->getFolderName();

// remove scoreboard if player is in a world where scoreboard is disabled
if(ScoreHudSettings::isInDisabledWorld($world)){
Expand Down
Loading

0 comments on commit 270ea71

Please sign in to comment.