From bfc245c59b9a403eb347015026afbcdc43fb8aa5 Mon Sep 17 00:00:00 2001 From: supercrafter333 Date: Sat, 7 May 2022 16:36:09 +0200 Subject: [PATCH 1/7] Added support for PlayedTime --- PlayedTimeScore/README.md | 6 +++ PlayedTimeScore/plugin.yml | 8 +++ PlayedTimeScore/src/Main.php | 17 +++++++ .../src/listeners/EventListener.php | 51 +++++++++++++++++++ .../src/listeners/TagResolveListener.php | 38 ++++++++++++++ README.md | 1 + 6 files changed, 121 insertions(+) create mode 100644 PlayedTimeScore/README.md create mode 100644 PlayedTimeScore/plugin.yml create mode 100644 PlayedTimeScore/src/Main.php create mode 100644 PlayedTimeScore/src/listeners/EventListener.php create mode 100644 PlayedTimeScore/src/listeners/TagResolveListener.php diff --git a/PlayedTimeScore/README.md b/PlayedTimeScore/README.md new file mode 100644 index 0000000..684e8de --- /dev/null +++ b/PlayedTimeScore/README.md @@ -0,0 +1,6 @@ +### Available Tags: + +| Tag | Description | +|:--:|:--:| +|`{ptscore.total_time}`|Totally played time of the player| +|`{ptscore.session_time}`|Played time while the player-session| \ No newline at end of file diff --git a/PlayedTimeScore/plugin.yml b/PlayedTimeScore/plugin.yml new file mode 100644 index 0000000..1d0049e --- /dev/null +++ b/PlayedTimeScore/plugin.yml @@ -0,0 +1,8 @@ +name: PlayedTimeScore +main: supercrafter333\PlayedTimeScore\Main +src-namespace-prefix: supercrafter333\PlayedTimeScore +api: 4.0.0 +version: 1.0.0 +author: supercrafter333 +description: A plugin implementing some basic tags for ScoreHud. +depend: ["PlayedTime", "ScoreHud"] \ No newline at end of file diff --git a/PlayedTimeScore/src/Main.php b/PlayedTimeScore/src/Main.php new file mode 100644 index 0000000..e57583a --- /dev/null +++ b/PlayedTimeScore/src/Main.php @@ -0,0 +1,17 @@ +getServer()->getPluginManager()->registerEvents(new EventListener(), $this); + $this->getServer()->getPluginManager()->registerEvents(new TagResolveListener($this), $this); + } +} \ No newline at end of file diff --git a/PlayedTimeScore/src/listeners/EventListener.php b/PlayedTimeScore/src/listeners/EventListener.php new file mode 100644 index 0000000..af0dc29 --- /dev/null +++ b/PlayedTimeScore/src/listeners/EventListener.php @@ -0,0 +1,51 @@ +getPlayer(); + + if (is_null($player) || !$player->isOnline()) { + return; + } + + $this->sendUpdate($player); + } + + // no better way to detect when the suffix or prefix of a player changes + public function onPlayerChat(PlayerChatEvent $event) + { + $this->sendUpdate($event->getPlayer()); + } + + private function sendUpdate(Player $player): void + { + $time = function (DateInterval $dt): string { + $str = ""; + if ($dt->y > 0) $str .= "§e" . $dt->y . "y§7, "; + if ($dt->m > 0) $str .= "§e" . $dt->m . "m§7, "; + if ($dt->d > 0) $str .= "§e" . $dt->d . "d§7, "; + if ($dt->h > 0) $str .= "§e" . $dt->h . "h§7, "; + if ($dt->i > 0) $str .= "§e" . $dt->i . "i§7, "; + if ($dt->s > 0) $str .= "§e" . $dt->s . "s"; + return $str; + }; + (new PlayerTagsUpdateEvent($player, [ + new ScoreTag("ptscore.total_time", $time(PlayedTimeLoader::getInstance()->getPlayedTimeManager()->getTotalTime($player))), + new ScoreTag("ptscore.session_time", $time(PlayedTimeLoader::getInstance()->getPlayedTimeManager()->getSessionTime($player))) + ]))->call(); + } +} \ No newline at end of file diff --git a/PlayedTimeScore/src/listeners/TagResolveListener.php b/PlayedTimeScore/src/listeners/TagResolveListener.php new file mode 100644 index 0000000..163953b --- /dev/null +++ b/PlayedTimeScore/src/listeners/TagResolveListener.php @@ -0,0 +1,38 @@ +getPlayer(); + $tag = $ev->getTag(); + $tags = explode('.', $tag->getName(), 2); + $value = ""; + + if ($tags[0] !== 'ptscore' || count($tags) < 2) { + return; + } + + switch ($tags[1]) { + case "total_time": + $value = PlayedTimeLoader::getInstance()->getPlayedTimeManager()->getTotalTime($player); + break; + + case "session_time": + $value = PlayedTimeLoader::getInstance()->getPlayedTimeManager()->getSessionTime($player); + break; + } + + $tag->setValue($value); + } +} \ No newline at end of file diff --git a/README.md b/README.md index cda9bcf..a44170d 100644 --- a/README.md +++ b/README.md @@ -12,6 +12,7 @@ A repository containing plugins implementing tags for ScoreHud. |CombatScore|[CombatLogger](https://github.com/JackNoordhuis/PocketMine-Plugins/tree/master/CombatLogger)|[Download](https://poggit.pmmp.io/ci/Ifera/ScoreHudX/CombatScore)| |FactionsProScore|[FactionsPro](https://github.com/poggit-orphanage/FactionsPro)|[Download](https://poggit.pmmp.io/ci/Ifera/ScoreHudX/FactionsProScore)| |PurePermsScore|[PurePerms](https://github.com/poggit-orphanage/PurePerms)|[Download](https://poggit.pmmp.io/ci/Ifera/ScoreHudX/PurePermsScore)| +|PlayedTimeScore|[PlayedTime](https://github.com/supercrafter333/PlayedTime)|[Download](https://poggit.pmmp.io/ci/Ifera/ScoreHudX/PlayedTimeScore)| ## More plugins From 41002b45590a51b4612683ede765b75994b72ad8 Mon Sep 17 00:00:00 2001 From: poggit-bot Date: Sat, 7 May 2022 16:37:49 +0200 Subject: [PATCH 2/7] Create .poggit.yml Poggit-CI is enabled for this repo by @supercrafter333 Visit the Poggit-CI page for this repo at https://poggit.pmmp.io/ci/supercrafter333/ScoreHudX --- .poggit.yml | 18 ++---------------- 1 file changed, 2 insertions(+), 16 deletions(-) diff --git a/.poggit.yml b/.poggit.yml index 70d59b5..be89e65 100644 --- a/.poggit.yml +++ b/.poggit.yml @@ -3,20 +3,6 @@ build-by-default: true branches: - main projects: - EcoAPIScore: - path: EcoAPIScore - lint: - phpstan: false - CombatScore: - path: CombatScore - lint: - phpstan: false - FactionsProScore: - path: FactionsProScore - lint: - phpstan: false - PurePermsScore: - path: PurePermsScore - lint: - phpstan: false + PlayedTimeScore: + path: PlayedTimeScore ... From abf5812cbec197225a7f1594b9adbe1d34f90f44 Mon Sep 17 00:00:00 2001 From: supercrafter333 <53967726+supercrafter333@users.noreply.github.com> Date: Sat, 7 May 2022 16:40:16 +0200 Subject: [PATCH 3/7] Update .poggit.yml --- .poggit.yml | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/.poggit.yml b/.poggit.yml index be89e65..fe50f38 100644 --- a/.poggit.yml +++ b/.poggit.yml @@ -5,4 +5,22 @@ branches: projects: PlayedTimeScore: path: PlayedTimeScore + lint: + phpstan: false + EcoAPIScore: + path: EcoAPIScore + lint: + phpstan: false + CombatScore: + path: CombatScore + lint: + phpstan: false + FactionsProScore: + path: FactionsProScore + lint: + phpstan: false + PurePermsScore: + path: PurePermsScore + lint: + phpstan: false ... From 1276e2a8791167da327bb106a9aee00afb76edaa Mon Sep 17 00:00:00 2001 From: supercrafter333 Date: Sat, 7 May 2022 16:59:04 +0200 Subject: [PATCH 4/7] Whoups --- .../src/listeners/TagResolveListener.php | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/PlayedTimeScore/src/listeners/TagResolveListener.php b/PlayedTimeScore/src/listeners/TagResolveListener.php index 163953b..23d6af5 100644 --- a/PlayedTimeScore/src/listeners/TagResolveListener.php +++ b/PlayedTimeScore/src/listeners/TagResolveListener.php @@ -2,6 +2,7 @@ namespace supercrafter333\PlayedTimeScore\listeners; +use DateInterval; use Ifera\ScoreHud\event\TagsResolveEvent; use pocketmine\event\Listener; use supercrafter333\PlayedTime\PlayedTimeLoader; @@ -23,13 +24,24 @@ public function onTagResolve(TagsResolveEvent $ev) return; } + $time = function (DateInterval $dt): string { + $str = ""; + if ($dt->y > 0) $str .= "§e" . $dt->y . "y§7, "; + if ($dt->m > 0) $str .= "§e" . $dt->m . "m§7, "; + if ($dt->d > 0) $str .= "§e" . $dt->d . "d§7, "; + if ($dt->h > 0) $str .= "§e" . $dt->h . "h§7, "; + if ($dt->i > 0) $str .= "§e" . $dt->i . "i§7, "; + if ($dt->s > 0) $str .= "§e" . $dt->s . "s"; + return $str; + }; + switch ($tags[1]) { case "total_time": - $value = PlayedTimeLoader::getInstance()->getPlayedTimeManager()->getTotalTime($player); + $value = $time(PlayedTimeLoader::getInstance()->getPlayedTimeManager()->getTotalTime($player)); break; case "session_time": - $value = PlayedTimeLoader::getInstance()->getPlayedTimeManager()->getSessionTime($player); + $value = $time(PlayedTimeLoader::getInstance()->getPlayedTimeManager()->getSessionTime($player)); break; } From 665cd14df1a372e0bdf1ee1a63055cd64cb2d428 Mon Sep 17 00:00:00 2001 From: supercrafter333 Date: Tue, 10 May 2022 19:54:30 +0200 Subject: [PATCH 5/7] Fixed a bug and added auto-tag-updates - also bumped version to 1.1.0 --- PlayedTimeScore/plugin.yml | 2 +- PlayedTimeScore/src/Main.php | 9 +++++++++ PlayedTimeScore/src/ScorehudUpdateTask.php | 16 ++++++++++++++++ PlayedTimeScore/src/listeners/EventListener.php | 3 ++- .../src/listeners/TagResolveListener.php | 3 ++- 5 files changed, 30 insertions(+), 3 deletions(-) create mode 100644 PlayedTimeScore/src/ScorehudUpdateTask.php diff --git a/PlayedTimeScore/plugin.yml b/PlayedTimeScore/plugin.yml index 1d0049e..fdf7124 100644 --- a/PlayedTimeScore/plugin.yml +++ b/PlayedTimeScore/plugin.yml @@ -2,7 +2,7 @@ name: PlayedTimeScore main: supercrafter333\PlayedTimeScore\Main src-namespace-prefix: supercrafter333\PlayedTimeScore api: 4.0.0 -version: 1.0.0 +version: 1.1.0 author: supercrafter333 description: A plugin implementing some basic tags for ScoreHud. depend: ["PlayedTime", "ScoreHud"] \ No newline at end of file diff --git a/PlayedTimeScore/src/Main.php b/PlayedTimeScore/src/Main.php index e57583a..fc8d86f 100644 --- a/PlayedTimeScore/src/Main.php +++ b/PlayedTimeScore/src/Main.php @@ -3,15 +3,24 @@ namespace supercrafter333\PlayedTimeScore; use pocketmine\plugin\PluginBase; +use pocketmine\utils\SingletonTrait; use supercrafter333\PlayedTimeScore\listeners\EventListener; use supercrafter333\PlayedTimeScore\listeners\TagResolveListener; class Main extends PluginBase { + use SingletonTrait; + + protected function onLoad(): void + { + self::setInstance($this); + } protected function onEnable(): void { $this->getServer()->getPluginManager()->registerEvents(new EventListener(), $this); $this->getServer()->getPluginManager()->registerEvents(new TagResolveListener($this), $this); + + $this->getScheduler()->scheduleRepeatingTask(new ScorehudUpdateTask(), 20); } } \ No newline at end of file diff --git a/PlayedTimeScore/src/ScorehudUpdateTask.php b/PlayedTimeScore/src/ScorehudUpdateTask.php new file mode 100644 index 0000000..a50b92b --- /dev/null +++ b/PlayedTimeScore/src/ScorehudUpdateTask.php @@ -0,0 +1,16 @@ +getServer()->getOnlinePlayers() as $player) + (new EventListener())->sendUpdate($player); + } +} \ No newline at end of file diff --git a/PlayedTimeScore/src/listeners/EventListener.php b/PlayedTimeScore/src/listeners/EventListener.php index af0dc29..6930abb 100644 --- a/PlayedTimeScore/src/listeners/EventListener.php +++ b/PlayedTimeScore/src/listeners/EventListener.php @@ -31,9 +31,10 @@ public function onPlayerChat(PlayerChatEvent $event) $this->sendUpdate($event->getPlayer()); } - private function sendUpdate(Player $player): void + public function sendUpdate(Player $player): void { $time = function (DateInterval $dt): string { + if ($dt === null) return "§cNOT FOUND"; $str = ""; if ($dt->y > 0) $str .= "§e" . $dt->y . "y§7, "; if ($dt->m > 0) $str .= "§e" . $dt->m . "m§7, "; diff --git a/PlayedTimeScore/src/listeners/TagResolveListener.php b/PlayedTimeScore/src/listeners/TagResolveListener.php index 23d6af5..c0aa33c 100644 --- a/PlayedTimeScore/src/listeners/TagResolveListener.php +++ b/PlayedTimeScore/src/listeners/TagResolveListener.php @@ -24,7 +24,8 @@ public function onTagResolve(TagsResolveEvent $ev) return; } - $time = function (DateInterval $dt): string { + $time = function (DateInterval|null $dt): string { + if ($dt === null) return "§cNOT FOUND"; $str = ""; if ($dt->y > 0) $str .= "§e" . $dt->y . "y§7, "; if ($dt->m > 0) $str .= "§e" . $dt->m . "m§7, "; From 6750d230b0dbd92c628295d0ec6254f83f13f865 Mon Sep 17 00:00:00 2001 From: supercrafter333 Date: Wed, 11 May 2022 21:07:47 +0200 Subject: [PATCH 6/7] Whoups --- PlayedTimeScore/src/listeners/EventListener.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/PlayedTimeScore/src/listeners/EventListener.php b/PlayedTimeScore/src/listeners/EventListener.php index 6930abb..5da4e7e 100644 --- a/PlayedTimeScore/src/listeners/EventListener.php +++ b/PlayedTimeScore/src/listeners/EventListener.php @@ -33,7 +33,7 @@ public function onPlayerChat(PlayerChatEvent $event) public function sendUpdate(Player $player): void { - $time = function (DateInterval $dt): string { + $time = function (DateInterval|null $dt): string { if ($dt === null) return "§cNOT FOUND"; $str = ""; if ($dt->y > 0) $str .= "§e" . $dt->y . "y§7, "; From 6a2926bb1ef317e86853b5d609bf0b46ae84d3f3 Mon Sep 17 00:00:00 2001 From: supercrafter333 Date: Thu, 12 May 2022 17:49:32 +0200 Subject: [PATCH 7/7] Implemented configuration --- PlayedTimeScore/resources/config.yml | 7 +++++++ PlayedTimeScore/src/Main.php | 2 ++ PlayedTimeScore/src/listeners/EventListener.php | 14 ++++++++------ .../src/listeners/TagResolveListener.php | 13 +++++++------ 4 files changed, 24 insertions(+), 12 deletions(-) create mode 100644 PlayedTimeScore/resources/config.yml diff --git a/PlayedTimeScore/resources/config.yml b/PlayedTimeScore/resources/config.yml new file mode 100644 index 0000000..43a7125 --- /dev/null +++ b/PlayedTimeScore/resources/config.yml @@ -0,0 +1,7 @@ +dateformat-letters: + year: 'y' + month: 'mo' + day: 'd' + hour: 'h' + minute: 'm' + second: 's' \ No newline at end of file diff --git a/PlayedTimeScore/src/Main.php b/PlayedTimeScore/src/Main.php index fc8d86f..86e2a46 100644 --- a/PlayedTimeScore/src/Main.php +++ b/PlayedTimeScore/src/Main.php @@ -18,6 +18,8 @@ protected function onLoad(): void protected function onEnable(): void { + $this->saveResource("config.yml"); + $this->getServer()->getPluginManager()->registerEvents(new EventListener(), $this); $this->getServer()->getPluginManager()->registerEvents(new TagResolveListener($this), $this); diff --git a/PlayedTimeScore/src/listeners/EventListener.php b/PlayedTimeScore/src/listeners/EventListener.php index 5da4e7e..c452e25 100644 --- a/PlayedTimeScore/src/listeners/EventListener.php +++ b/PlayedTimeScore/src/listeners/EventListener.php @@ -10,6 +10,7 @@ use pocketmine\event\player\PlayerJoinEvent; use pocketmine\player\Player; use supercrafter333\PlayedTime\PlayedTimeLoader; +use supercrafter333\PlayedTimeScore\Main; class EventListener implements Listener { @@ -36,12 +37,13 @@ public function sendUpdate(Player $player): void $time = function (DateInterval|null $dt): string { if ($dt === null) return "§cNOT FOUND"; $str = ""; - if ($dt->y > 0) $str .= "§e" . $dt->y . "y§7, "; - if ($dt->m > 0) $str .= "§e" . $dt->m . "m§7, "; - if ($dt->d > 0) $str .= "§e" . $dt->d . "d§7, "; - if ($dt->h > 0) $str .= "§e" . $dt->h . "h§7, "; - if ($dt->i > 0) $str .= "§e" . $dt->i . "i§7, "; - if ($dt->s > 0) $str .= "§e" . $dt->s . "s"; + $cfg = Main::getInstance()->getConfig()->get("dateformat-letters", []); + if ($dt->y > 0) $str .= "§e" . $dt->y . $cfg["year"] . "§7, "; + if ($dt->m > 0) $str .= "§e" . $dt->m . $cfg["month"] . "§7, "; + if ($dt->d > 0) $str .= "§e" . $dt->d . $cfg["day"] . "§7, "; + if ($dt->h > 0) $str .= "§e" . $dt->h . $cfg["hour"] . "§7, "; + if ($dt->i > 0) $str .= "§e" . $dt->i . $cfg["minute"] . "§7, "; + if ($dt->s > 0) $str .= "§e" . $dt->s . $cfg["second"]; return $str; }; (new PlayerTagsUpdateEvent($player, [ diff --git a/PlayedTimeScore/src/listeners/TagResolveListener.php b/PlayedTimeScore/src/listeners/TagResolveListener.php index c0aa33c..1aa2a67 100644 --- a/PlayedTimeScore/src/listeners/TagResolveListener.php +++ b/PlayedTimeScore/src/listeners/TagResolveListener.php @@ -27,12 +27,13 @@ public function onTagResolve(TagsResolveEvent $ev) $time = function (DateInterval|null $dt): string { if ($dt === null) return "§cNOT FOUND"; $str = ""; - if ($dt->y > 0) $str .= "§e" . $dt->y . "y§7, "; - if ($dt->m > 0) $str .= "§e" . $dt->m . "m§7, "; - if ($dt->d > 0) $str .= "§e" . $dt->d . "d§7, "; - if ($dt->h > 0) $str .= "§e" . $dt->h . "h§7, "; - if ($dt->i > 0) $str .= "§e" . $dt->i . "i§7, "; - if ($dt->s > 0) $str .= "§e" . $dt->s . "s"; + $cfg = Main::getInstance()->getConfig()->get("dateformat-letters", []); + if ($dt->y > 0) $str .= "§e" . $dt->y . $cfg["year"] . "§7, "; + if ($dt->m > 0) $str .= "§e" . $dt->m . $cfg["month"] . "§7, "; + if ($dt->d > 0) $str .= "§e" . $dt->d . $cfg["day"] . "§7, "; + if ($dt->h > 0) $str .= "§e" . $dt->h . $cfg["hour"] . "§7, "; + if ($dt->i > 0) $str .= "§e" . $dt->i . $cfg["minute"] . "§7, "; + if ($dt->s > 0) $str .= "§e" . $dt->s . $cfg["second"]; return $str; };