Хелп с наиграным временем

Поставил плагин, захожу для теста наигрываю где-то минут 5, выхожу, выключаю сервер, а в конфиг нечего не записывает:

[] // data.json
EventHandler.php
<?php


declare(strict_types=1);

namespace timurkaundefined\gametimer;

use pocketmine\event\Listener;
use pocketmine\event\player\PlayerJoinEvent;
use pocketmine\event\player\PlayerQuitEvent;

class EventHandler implements Listener{

	/**
	 * @param PlayerJoinEvent $event
	 * @noinspection PhpUnused
	 * @priority LOWEST
	 */
	function handlePlayerJoin(PlayerJoinEvent $event){
		GameTimer::writeJoinTime($event->getPlayer());
	}

	/** @noinspection PhpUnused */
	function handlePlayerQuit(PlayerQuitEvent $event){
		GameTimer::updateGameTime($event->getPlayer(), true);
	}
}
GameTimer.php
<?php


declare(strict_types=1);

namespace timurkaundefined\gametimer;

use pocketmine\Player;
use pocketmine\plugin\PluginBase;
use pocketmine\Server;
use pocketmine\utils\Config;
use function is_dir;
use function mkdir;
use function strtolower;
use function substr;
use function time;

class GameTimer extends PluginBase{

	/** @var GameTimer */
	private static $instance;
	/** @var Config */
	private static $data;

	private static $joinTime = [];

	function onEnable(){
		self::$instance = $this;

		if(!is_dir($directoryPath = $this->getDataFolder())){
			mkdir($directoryPath, 0777, true);
		}
		Server::getInstance()->getPluginManager()->registerEvents(new EventHandler(), $this);

		self::$data = new Config($directoryPath . "data.json", Config::JSON);
	}

	public static function getInstance() : GameTimer{
		return self::$instance;
	}

	private static function getData() : Config{
		return self::$data;
	}

	public static function writeJoinTime(Player $player) : void{
		$name = $player->getLowerCaseName();
		self::$joinTime[$name] = time();
	}

	public static function updateGameTime($player, bool $remove = false) : int{
		$name = $player instanceof Player ? $player->getLowerCaseName() : strtolower((string)$player);
		if(!isset(self::$joinTime[$name])){
			return (int)self::$data->get($name, 0);
		}
		$currentTime = time();
		$joinTime = self::$joinTime[$name];
		$difference = $currentTime - $joinTime;
		self::$data->set($name, (int)self::$data->get($name, 0) + $difference);
		if($remove){
			unset(self::$joinTime[$name]);
		}
		self::$joinTime[$name] = $currentTime;
		return $value ?? $difference;
	}

	public static function getGameTime($player) : int{
		self::updateGameTime($player);
		$name = $player instanceof Player ? $player->getLowerCaseName() : strtolower((string)$player);
		return (int)self::$data->get($name, 0);
	}

	public static function convertTimeOptimized(int $diff) : string{
		$days = (int)($diff / 86400);
		$diff -= $days * 86400;
		$hours = (int)($diff / 3600);
		$diff -= $hours * 3600;
		$minutes = (int)($diff / 60);

		if($days === 0 and $hours === 0 and $minutes === 0){
			return '§fменее минуты';
		}

		$result = "";
		$array = ["д." => $days, "ч." => $hours, "м." => $minutes];
		foreach($array as $key => $value){
			if($value > 0){
				$result .= "§c" . $value . " §f" . $key . " ";
			}
		}
		return $result !== "" ? substr($result, 0, -1) : "n/a";
	}

	public function dataToArray() : array{
		foreach(self::$joinTime as $playerName => $_){
			self::updateGameTime($playerName);
		}
		return self::$data->getAll();
	}

	public function onDisable(){
		self::$data->save();
	}
}

Я могу тебе норм плагин дать

го

Тебе под какую версию надо

1.1.5, LiteCore 1.0.9

А ок щас дам

1 лайк

Всё вроде написал

Timer.zip (1,5 КБ)

Проверяй если что фото кин если работает
Долго как то плагин писал 6 минут

Не мог не чекнуть код.


Гениально


Зачем

гениально, гениально! ГЕНИАЛЬНО

А марусель пишет акуамарине на телефоне

Обижаешь, я никогда не пишу код на телефоне


Там в глубинах форума есть ещё плагин, найти не смог

1 лайк

Особая блогаларность @Master_Podkatov и @qq_BCEM

Эта тема была автоматически закрыта через 12 часов после последнего ответа. В ней больше нельзя отвечать.