From 5089b9495b04d035020edb929a3fa85092c8995e Mon Sep 17 00:00:00 2001 From: Szymon Polny Date: Fri, 27 Feb 2026 23:49:42 +0100 Subject: [PATCH 1/3] feat(player-counter): add support for Arma 3 and Arma Reforger --- player-counter/plugin.json | 2 +- .../Query/Schemas/Arma3QueryTypeSchema.php | 16 ++++++++++++++++ .../Schemas/ArmaReforgerQueryTypeSchema.php | 16 ++++++++++++++++ .../Providers/PlayerCounterPluginProvider.php | 4 ++++ 4 files changed, 37 insertions(+), 1 deletion(-) create mode 100644 player-counter/src/Extensions/Query/Schemas/Arma3QueryTypeSchema.php create mode 100644 player-counter/src/Extensions/Query/Schemas/ArmaReforgerQueryTypeSchema.php diff --git a/player-counter/plugin.json b/player-counter/plugin.json index 20fedb77..609be6c0 100644 --- a/player-counter/plugin.json +++ b/player-counter/plugin.json @@ -2,7 +2,7 @@ "id": "player-counter", "name": "Player Counter", "author": "Boy132", - "version": "1.0.0", + "version": "1.1.0", "description": "Show the amount of connected players to the server", "category": "plugin", "url": "https://github.com/pelican-dev/plugins/tree/main/player-counter", diff --git a/player-counter/src/Extensions/Query/Schemas/Arma3QueryTypeSchema.php b/player-counter/src/Extensions/Query/Schemas/Arma3QueryTypeSchema.php new file mode 100644 index 00000000..a1abe620 --- /dev/null +++ b/player-counter/src/Extensions/Query/Schemas/Arma3QueryTypeSchema.php @@ -0,0 +1,16 @@ +register(new MinecraftJavaQueryTypeSchema()); $service->register(new MinecraftBedrockQueryTypeSchema()); $service->register(new CitizenFXQueryTypeSchema()); + $service->register(new Arma3QueryTypeSchema()); + $service->register(new ArmaReforgerQueryTypeSchema()); return $service; }); From d749ee4625f598e4faafa3e7a1df9e917fb68f7a Mon Sep 17 00:00:00 2001 From: Szymon Polny Date: Sat, 28 Feb 2026 00:05:37 +0100 Subject: [PATCH 2/3] fix(player-counter): make Source query more robust to avoid crashes --- .../Query/Schemas/SourceQueryTypeSchema.php | 20 +++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) diff --git a/player-counter/src/Extensions/Query/Schemas/SourceQueryTypeSchema.php b/player-counter/src/Extensions/Query/Schemas/SourceQueryTypeSchema.php index 0a20cee0..758e2388 100644 --- a/player-counter/src/Extensions/Query/Schemas/SourceQueryTypeSchema.php +++ b/player-counter/src/Extensions/Query/Schemas/SourceQueryTypeSchema.php @@ -33,14 +33,22 @@ protected function run(string $ip, int $port, int $engine): ?array $query->Connect($ip, $port, 5, $engine); $info = $query->GetInfo(); - $players = $query->GetPlayers(); + + if ($info === false) { + return null; + } + + $players = $query->GetPlayers() ?: []; return [ - 'hostname' => $info['HostName'], - 'map' => $info['Map'], - 'current_players' => $info['Players'], - 'max_players' => $info['MaxPlayers'], - 'players' => array_map(fn ($player) => ['id' => (string) $player['Id'], 'name' => (string) $player['Name']], $players), + 'hostname' => (string) ($info['HostName'] ?? 'Unknown'), + 'map' => (string) ($info['Map'] ?? 'Unknown'), + 'current_players' => (int) ($info['Players'] ?? 0), + 'max_players' => (int) ($info['MaxPlayers'] ?? 0), + 'players' => array_map(fn ($player) => [ + 'id' => (string) ($player['Id'] ?? ''), + 'name' => (string) ($player['Name'] ?? 'Unknown'), + ], $players), ]; } catch (Exception $exception) { report($exception); From 43f16be2d09c9e0bbecbf818382b87805be3d5db Mon Sep 17 00:00:00 2001 From: Szymon Polny Date: Sat, 28 Feb 2026 00:44:16 +0100 Subject: [PATCH 3/3] fix(player-counter): satisfy PHPStan comparison check in Source query --- .../src/Extensions/Query/Schemas/SourceQueryTypeSchema.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/player-counter/src/Extensions/Query/Schemas/SourceQueryTypeSchema.php b/player-counter/src/Extensions/Query/Schemas/SourceQueryTypeSchema.php index 758e2388..2271c11d 100644 --- a/player-counter/src/Extensions/Query/Schemas/SourceQueryTypeSchema.php +++ b/player-counter/src/Extensions/Query/Schemas/SourceQueryTypeSchema.php @@ -34,7 +34,7 @@ protected function run(string $ip, int $port, int $engine): ?array $info = $query->GetInfo(); - if ($info === false) { + if (!$info) { return null; }