diff --git a/src/Log/Minecraft/Vanilla/Bukkit/CraftBukkit/CraftBukkitLog.php b/src/Log/Minecraft/Vanilla/Bukkit/CraftBukkit/CraftBukkitLog.php index 5e0dc507..880055c7 100644 --- a/src/Log/Minecraft/Vanilla/Bukkit/CraftBukkit/CraftBukkitLog.php +++ b/src/Log/Minecraft/Vanilla/Bukkit/CraftBukkit/CraftBukkitLog.php @@ -2,21 +2,28 @@ namespace Aternos\Codex\Minecraft\Log\Minecraft\Vanilla\Bukkit\CraftBukkit; -use Aternos\Codex\Detective\SinglePatternDetector; use Aternos\Codex\Minecraft\Log\Minecraft\Vanilla\Bukkit\BukkitLog; +use Aternos\Codex\Minecraft\Log\Minecraft\Vanilla\Bukkit\VersionLineDetectorTrait; abstract class CraftBukkitLog extends BukkitLog { - protected static string $logIdentifier = "CraftBukkit version git-Bukkit"; + use VersionLineDetectorTrait; + + /** + * Patterns for the server version that follows "This server is running " in the startup line, + * each one gets its own detector, e.g. + * [18:14:48] [Server thread/INFO]: This server is running CraftBukkit version git-Bukkit-8b1588e (MC: 1.13.2) + * + * @var string[] + */ + protected static array $logIdentifiers = ["CraftBukkit version git-Bukkit"]; /** * @inheritDoc */ public static function getDetectors(): array { - return array_merge(parent::getDetectors(), [ - (new SinglePatternDetector())->setPattern('/' . static::$prefixPattern . 'This server is running ' . static::$logIdentifier . '/') - ]); + return [...parent::getDetectors(), ...static::getVersionLineDetectors()]; } /** diff --git a/src/Log/Minecraft/Vanilla/Bukkit/CraftBukkit/OldCraftBukkitLog.php b/src/Log/Minecraft/Vanilla/Bukkit/CraftBukkit/OldCraftBukkitLog.php index c6359e7c..79851369 100644 --- a/src/Log/Minecraft/Vanilla/Bukkit/CraftBukkit/OldCraftBukkitLog.php +++ b/src/Log/Minecraft/Vanilla/Bukkit/CraftBukkit/OldCraftBukkitLog.php @@ -2,13 +2,22 @@ namespace Aternos\Codex\Minecraft\Log\Minecraft\Vanilla\Bukkit\CraftBukkit; -use Aternos\Codex\Detective\SinglePatternDetector; use Aternos\Codex\Minecraft\Analyser\BukkitAnalyser; +use Aternos\Codex\Minecraft\Log\Minecraft\Vanilla\Bukkit\VersionLineDetectorTrait; use Aternos\Codex\Minecraft\Log\Minecraft\Vanilla\OldVanillaLog; abstract class OldCraftBukkitLog extends OldVanillaLog { - protected static string $logIdentifier = "CraftBukkit version git-Bukkit"; + use VersionLineDetectorTrait; + + /** + * Patterns for the server version that follows "This server is running " in the startup line, + * each one gets its own detector, e.g. + * 2019-02-08 23:33:20 [INFO] This server is running CraftBukkit version git-Bukkit-1.1-R6-b1988jnks (MC: 1.1) + * + * @var string[] + */ + protected static array $logIdentifiers = ["CraftBukkit version git-Bukkit"]; /** * @return BukkitAnalyser @@ -23,9 +32,7 @@ public static function getDefaultAnalyser(): BukkitAnalyser */ public static function getDetectors(): array { - return array_merge(parent::getDetectors(), [ - (new SinglePatternDetector())->setPattern('/' . static::$prefixPattern . 'This server is running ' . static::$logIdentifier . '/') - ]); + return [...parent::getDetectors(), ...static::getVersionLineDetectors()]; } /** diff --git a/src/Log/Minecraft/Vanilla/Bukkit/Folia/FoliaLog.php b/src/Log/Minecraft/Vanilla/Bukkit/Folia/FoliaLog.php index 2298aa35..18290e9c 100644 --- a/src/Log/Minecraft/Vanilla/Bukkit/Folia/FoliaLog.php +++ b/src/Log/Minecraft/Vanilla/Bukkit/Folia/FoliaLog.php @@ -8,8 +8,17 @@ abstract class FoliaLog extends PaperLog { - protected static string $logIdentifier = "(?:Folia|CraftBukkit) version git-Folia" - . "|This server is running Folia version"; + /** + * Matches the CraftBukkit name used by old versions as well as the Folia name, e.g. + * This server is running Folia version git-Folia-"d113346" (MC: 1.19.4) + * This server is running Folia version 1.20.6-5-master@d797082 (2024-06-19T22:19:29Z) + * + * @inheritDoc + */ + protected static array $logIdentifiers = [ + "CraftBukkit version git-Folia", + "Folia version" + ]; /** * @return AnalyserInterface diff --git a/src/Log/Minecraft/Vanilla/Bukkit/Paper/PaperLog.php b/src/Log/Minecraft/Vanilla/Bukkit/Paper/PaperLog.php index d7337fa3..5df7aea2 100644 --- a/src/Log/Minecraft/Vanilla/Bukkit/Paper/PaperLog.php +++ b/src/Log/Minecraft/Vanilla/Bukkit/Paper/PaperLog.php @@ -8,8 +8,18 @@ abstract class PaperLog extends SpigotLog { - protected static string $logIdentifier = "(?:Paper|CraftBukkit) version git-Paper" - . "|This server is running Paper version"; + /** + * PaperSpigot reported itself as CraftBukkit, later versions as Paper: + * This server is running CraftBukkit version git-PaperSpigot-"4c7641d" (MC: 1.8.8) + * This server is running Paper version git-Paper-794 (MC: 1.16.5) + * This server is running Paper version 1.21.1-116-master@e7e1ab5 (2024-09-30T23:17:54Z) + * + * @inheritDoc + */ + protected static array $logIdentifiers = [ + "CraftBukkit version git-Paper", + "Paper version" + ]; /** * @return AnalyserInterface diff --git a/src/Log/Minecraft/Vanilla/Bukkit/Purpur/PurpurLog.php b/src/Log/Minecraft/Vanilla/Bukkit/Purpur/PurpurLog.php index 6bbd49b6..c3626dde 100644 --- a/src/Log/Minecraft/Vanilla/Bukkit/Purpur/PurpurLog.php +++ b/src/Log/Minecraft/Vanilla/Bukkit/Purpur/PurpurLog.php @@ -6,8 +6,17 @@ abstract class PurpurLog extends PaperLog { - protected static string $logIdentifier = "(?:Purpur|CraftBukkit) version git-Purpur" - . "|This server is running Purpur version"; + /** + * Matches the CraftBukkit name used by old versions as well as the Purpur name, e.g. + * This server is running Purpur version git-Purpur-1857 (MC: 1.19.2) + * This server is running Purpur version 1.20.6-2233-ver/1.20.6@0d6766e (2024-06-18T04:01:10Z) + * + * @inheritDoc + */ + protected static array $logIdentifiers = [ + "CraftBukkit version git-Purpur", + "Purpur version" + ]; /** * @return string diff --git a/src/Log/Minecraft/Vanilla/Bukkit/Spigot/OldSpigotLog.php b/src/Log/Minecraft/Vanilla/Bukkit/Spigot/OldSpigotLog.php index 3228efd0..b6c20a95 100644 --- a/src/Log/Minecraft/Vanilla/Bukkit/Spigot/OldSpigotLog.php +++ b/src/Log/Minecraft/Vanilla/Bukkit/Spigot/OldSpigotLog.php @@ -6,7 +6,10 @@ abstract class OldSpigotLog extends OldCraftBukkitLog { - protected static string $logIdentifier = "CraftBukkit version git-Spigot"; + /** + * @inheritDoc + */ + protected static array $logIdentifiers = ["CraftBukkit version git-Spigot"]; /** * @return string diff --git a/src/Log/Minecraft/Vanilla/Bukkit/Spigot/SpigotLog.php b/src/Log/Minecraft/Vanilla/Bukkit/Spigot/SpigotLog.php index d20f07bc..9b789b9e 100644 --- a/src/Log/Minecraft/Vanilla/Bukkit/Spigot/SpigotLog.php +++ b/src/Log/Minecraft/Vanilla/Bukkit/Spigot/SpigotLog.php @@ -6,7 +6,10 @@ abstract class SpigotLog extends CraftBukkitLog { - protected static string $logIdentifier = "(?:CraftBukkit|Spigot) version (?:git|\d+(?:-[a-zA-Z]+)?)-Spigot"; + /** + * @inheritDoc + */ + protected static array $logIdentifiers = ["(?:CraftBukkit|Spigot) version (?:git|\d+(?:-[a-zA-Z]+)?)-Spigot"]; /** * @return string diff --git a/src/Log/Minecraft/Vanilla/Bukkit/VersionLineDetectorTrait.php b/src/Log/Minecraft/Vanilla/Bukkit/VersionLineDetectorTrait.php new file mode 100644 index 00000000..e0bf8eac --- /dev/null +++ b/src/Log/Minecraft/Vanilla/Bukkit/VersionLineDetectorTrait.php @@ -0,0 +1,28 @@ +setPattern($pattern); + } + return $detectors; + } +}