diff --git a/src/Analysis/Problem/Bukkit/AmbiguousPluginNameProblem.php b/src/Analysis/Problem/Bukkit/AmbiguousPluginNameProblem.php index cc43d335..f3f74f4a 100644 --- a/src/Analysis/Problem/Bukkit/AmbiguousPluginNameProblem.php +++ b/src/Analysis/Problem/Bukkit/AmbiguousPluginNameProblem.php @@ -11,11 +11,10 @@ * * @package Aternos\Codex\Minecraft\Analysis\Problem\Bukkit */ -class AmbiguousPluginNameProblem extends BukkitProblem +class AmbiguousPluginNameProblem extends PluginProblem { protected ?string $firstPluginPath = null; protected ?string $secondPluginPath = null; - protected ?string $pluginName = null; /** * Get a human-readable message @@ -62,8 +61,8 @@ public static function getPatterns(): array public function setMatches(array $matches, mixed $patternKey): void { $this->pluginName = $matches[1]; - $this->firstPluginPath = $matches[2]; - $this->secondPluginPath = $matches[3]; + $this->firstPluginPath = $this->correctPluginPath($matches[2]); + $this->secondPluginPath = $this->correctPluginPath($matches[3]); $this->addSolution((new FileDeleteSolution())->setRelativePath($this->getFirstPluginPath())); $this->addSolution((new FileDeleteSolution())->setRelativePath($this->getSecondPluginPath())); @@ -85,14 +84,6 @@ public function getSecondPluginPath(): string return $this->secondPluginPath; } - /** - * @return string - */ - public function getPluginName(): string - { - return $this->pluginName; - } - /** * @param InsightInterface $insight * @return bool diff --git a/src/Analysis/Problem/Bukkit/PluginDependenciesProblem.php b/src/Analysis/Problem/Bukkit/PluginDependenciesProblem.php index f48c20c4..61868107 100644 --- a/src/Analysis/Problem/Bukkit/PluginDependenciesProblem.php +++ b/src/Analysis/Problem/Bukkit/PluginDependenciesProblem.php @@ -3,6 +3,7 @@ namespace Aternos\Codex\Minecraft\Analysis\Problem\Bukkit; use Aternos\Codex\Analysis\InsightInterface; +use Aternos\Codex\Minecraft\Analysis\Solution\Bukkit\PluginInstallDifferentVersionSolution; use Aternos\Codex\Minecraft\Analysis\Solution\Bukkit\PluginInstallSolution; use Aternos\Codex\Minecraft\Analysis\Solution\File\FileDeleteSolution; use Aternos\Codex\Minecraft\Translator\Translator; @@ -12,32 +13,13 @@ * * @package Aternos\Codex\Minecraft\Analysis\Problem\Bukkit */ -class PluginDependenciesProblem extends BukkitProblem +class PluginDependenciesProblem extends PluginFileProblem { - protected ?string $pluginPath = null; - protected ?string $pluginName = null; - /** * @var string[] */ protected array $dependencyPluginNames = []; - /** - * @return string|null - */ - public function getPluginPath(): ?string - { - return $this->pluginPath; - } - - /** - * @return string|null - */ - public function getPluginName(): ?string - { - return $this->pluginName; - } - /** * get a list of missing dependencies * @return string[] @@ -89,8 +71,9 @@ public function getMessage(): string public static function getPatterns(): array { return [ - '/Could not load \'(plugins[\/\\\]((?!\.jar).*)\.jar)\' in (?:folder )?\'[^\']+\'' - . '\norg\.bukkit\.plugin\.UnknownDependencyException\: Unknown\/missing dependency plugins: \[([\w ,]+)\]/']; + '/Could not load \'(plugins[\/\\\][^\']+\.jar)\' in (?:folder )?\'([^\']+)\'' + . '\norg\.bukkit\.plugin\.UnknownDependencyException\: Unknown\/missing dependency plugins: \[([\w ,]+)\](?:\. Please download and install these plugins to run \'([^\']+)\')?/' + ]; } /** @@ -102,14 +85,19 @@ public static function getPatterns(): array */ public function setMatches(array $matches, mixed $patternKey): void { - $this->pluginPath = $matches[1]; - $this->pluginName = $matches[2]; - $this->dependencyPluginNames = preg_split("/, ?/", $matches[3]); + if ($matches[4]) { + $this->pluginName = $matches[4]; + $this->pluginFilePath = $this->correctPluginPath($matches[1]); + $this->addSolution((new PluginInstallDifferentVersionSolution())->setPluginName($this->getPluginName())); + $this->addSolution((new FileDeleteSolution())->setRelativePath($this->getPluginFilePath())); + } else { + parent::setMatches($matches, $patternKey); + } + $this->dependencyPluginNames = preg_split("/, ?/", $matches[3]); foreach ($this->dependencyPluginNames as $name) { $this->addSolution((new PluginInstallSolution())->setPluginName($name)); } - $this->addSolution((new FileDeleteSolution())->setRelativePath($this->getPluginPath())); } /** @@ -122,7 +110,7 @@ public function isEqual(InsightInterface $insight): bool return false; } - if ($this->getPluginName() !== $insight->getPluginName() || $this->getPluginPath() !== $insight->getPluginPath()) { + if ($this->getPluginName() !== $insight->getPluginName()) { return false; } diff --git a/src/Analysis/Problem/Bukkit/PluginDependencyProblem.php b/src/Analysis/Problem/Bukkit/PluginDependencyProblem.php index 6fd5fdce..828c7425 100644 --- a/src/Analysis/Problem/Bukkit/PluginDependencyProblem.php +++ b/src/Analysis/Problem/Bukkit/PluginDependencyProblem.php @@ -4,7 +4,6 @@ use Aternos\Codex\Analysis\InsightInterface; use Aternos\Codex\Minecraft\Analysis\Solution\Bukkit\PluginInstallSolution; -use Aternos\Codex\Minecraft\Analysis\Solution\File\FileDeleteSolution; use Aternos\Codex\Minecraft\Translator\Translator; /** @@ -12,28 +11,10 @@ * * @package Aternos\Codex\Minecraft\Analysis\Problem\Bukkit */ -class PluginDependencyProblem extends BukkitProblem +class PluginDependencyProblem extends PluginFileProblem { - protected ?string $pluginPath = null; - protected ?string $pluginName = null; protected ?string $dependencyPluginName = null; - /** - * @return string|null - */ - public function getPluginPath(): ?string - { - return $this->pluginPath; - } - - /** - * @return string|null - */ - public function getPluginName(): ?string - { - return $this->pluginName; - } - /** * @return string|null */ @@ -65,7 +46,7 @@ public function getMessage(): string public static function getPatterns(): array { return [ - '/Could not load \'(plugins[\/\\\]((?!\.jar).*)\.jar)\' in (?:folder )?\'[^\']+\'' + '/Could not load \'(plugins[\/\\\][^\']+\.jar)\' in (?:folder )?\'([^\']+)\'' . '\norg\.bukkit\.plugin\.UnknownDependencyException\: (?:(\w+)\n|Unknown dependency (\w+)\.)/']; } @@ -78,12 +59,10 @@ public static function getPatterns(): array */ public function setMatches(array $matches, mixed $patternKey): void { - $this->pluginPath = $matches[1]; - $this->pluginName = $matches[2]; - $this->dependencyPluginName = $matches[3] ?: $matches[4]; + parent::setMatches($matches, $patternKey); + $this->dependencyPluginName = $matches[3] ?: $matches[4]; $this->addSolution((new PluginInstallSolution())->setPluginName($this->getDependencyPluginName())); - $this->addSolution((new FileDeleteSolution())->setRelativePath($this->getPluginPath())); } /** @@ -94,7 +73,6 @@ public function isEqual(InsightInterface $insight): bool { return $insight instanceof static && $this->getPluginName() === $insight->getPluginName() - && $this->getPluginPath() === $insight->getPluginPath() && $this->getDependencyPluginName() === $insight->getDependencyPluginName(); } } \ No newline at end of file diff --git a/src/Analysis/Problem/Bukkit/PluginFileProblem.php b/src/Analysis/Problem/Bukkit/PluginFileProblem.php new file mode 100644 index 00000000..296b3d99 --- /dev/null +++ b/src/Analysis/Problem/Bukkit/PluginFileProblem.php @@ -0,0 +1,63 @@ +pluginFilePath; + } + + /** + * Apply the matches from the pattern + * + * @param array $matches + * @param mixed $patternKey + * @return void + */ + public function setMatches(array $matches, mixed $patternKey): void + { + // worldedit-bukkit-7.3.4-beta-01.jar OR .paper-remapped/worldedit-bukkit-7.3.4-beta-01.jar + $pluginFileName = $this->extractPluginFileName($matches[1]); + // plugins OR plugins/.paper-remapped + $folderPath = $this->correctPluginPath($matches[2]); + + $this->pluginFilePath = $folderPath . '/' . $pluginFileName; + $this->pluginName = $this->extractPluginName($matches[1]); + + $this->addSolution((new PluginInstallDifferentVersionSolution())->setPluginName($this->getPluginName())); + $this->addSolution((new FileDeleteSolution())->setRelativePath($this->getPluginFilePath())); + } + + /** + * @param InsightInterface $insight + * @return bool + */ + public function isEqual(InsightInterface $insight): bool + { + return parent::isEqual($insight) + && $insight instanceof static + && $this->getPluginFilePath() === $insight->getPluginFilePath(); + } + +} \ No newline at end of file diff --git a/src/Analysis/Problem/Bukkit/PluginLoadProblem.php b/src/Analysis/Problem/Bukkit/PluginLoadProblem.php index 64b5a816..043fd0dd 100644 --- a/src/Analysis/Problem/Bukkit/PluginLoadProblem.php +++ b/src/Analysis/Problem/Bukkit/PluginLoadProblem.php @@ -2,9 +2,6 @@ namespace Aternos\Codex\Minecraft\Analysis\Problem\Bukkit; -use Aternos\Codex\Analysis\InsightInterface; -use Aternos\Codex\Minecraft\Analysis\Solution\Bukkit\PluginInstallDifferentVersionSolution; -use Aternos\Codex\Minecraft\Analysis\Solution\File\FileDeleteSolution; use Aternos\Codex\Minecraft\Translator\Translator; /** @@ -12,10 +9,8 @@ * * @package Aternos\Codex\Minecraft\Analysis\Problem\Bukkit */ -class PluginLoadProblem extends PluginProblem +class PluginLoadProblem extends PluginFileProblem { - protected ?string $pluginPath = null; - /** * Get a human-readable message * @@ -36,43 +31,8 @@ public function getMessage(): string public static function getPatterns(): array { return [ - '/Could not load \'(plugins[\/\\\]((?!\.jar).*)\.jar)\' in folder \'[^\']+\'' + '/Could not load \'(plugins[\/\\\][^\']+\.jar)\' in (?:folder )?\'([^\']+)\'' . '(?!\n(org.bukkit.plugin.UnknownDependencyException|org.bukkit.plugin.InvalidPluginException\: (Unsupported API version|java\.lang\.UnsupportedClassVersionError)))/' ]; } - - /** - * Apply the matches from the pattern - * - * @param array $matches - * @param mixed $patternKey - * @return void - */ - public function setMatches(array $matches, mixed $patternKey): void - { - $this->pluginPath = $matches[1]; - $this->pluginName = $matches[2]; - - $this->addSolution((new PluginInstallDifferentVersionSolution())->setPluginName($this->getPluginName())); - $this->addSolution((new FileDeleteSolution())->setRelativePath($this->getPluginPath())); - } - - /** - * @return string|null - */ - public function getPluginPath(): ?string - { - return $this->pluginPath; - } - - /** - * @param InsightInterface $insight - * @return bool - */ - public function isEqual(InsightInterface $insight): bool - { - return $insight instanceof static - && $this->getPluginPath() === $insight->getPluginPath() - && parent::isEqual($insight); - } } \ No newline at end of file diff --git a/src/Analysis/Problem/Bukkit/PluginProblem.php b/src/Analysis/Problem/Bukkit/PluginProblem.php index bdde4b84..bebd1f62 100644 --- a/src/Analysis/Problem/Bukkit/PluginProblem.php +++ b/src/Analysis/Problem/Bukkit/PluginProblem.php @@ -9,6 +9,13 @@ /** * Class PluginProblem * + * Represents a problem with a Bukkit plugin and provides: + * - The plugin name {@see PluginProblem::getPluginName()} + * - {@link PluginInstallDifferentVersionSolution} and {@link PluginRemoveSolution} + * - Utility function to correct the plugin path {@see PluginProblem::correctPluginPath()} + * - Utility function to extract the plugin name (without the file extension) from a plugin path {@see PluginProblem::extractPluginName()} + * - Utility function to extract the file name (with the file extension) from a plugin path {@see PluginProblem::extractPluginFileName()} + * * @package Aternos\Codex\Minecraft\Analysis\Problem\Bukkit */ abstract class PluginProblem extends BukkitProblem @@ -32,7 +39,7 @@ public function getPluginName(): ?string */ public function setMatches(array $matches, mixed $patternKey): void { - $this->pluginName = $matches[1]; + $this->pluginName = $this->extractPluginName($matches[1]); $this->addSolution((new PluginInstallDifferentVersionSolution())->setPluginName($this->getPluginName())); $this->addSolution((new PluginRemoveSolution())->setPluginName($this->getPluginName())); @@ -44,6 +51,40 @@ public function setMatches(array $matches, mixed $patternKey): void */ public function isEqual(InsightInterface $insight): bool { - return $insight instanceof static && $this->getPluginName() === $insight->getPluginName(); + return $insight instanceof static + && $this->getPluginName() === $insight->getPluginName(); + } + + /** + * Corrects the plugin path by removing the ".paper-remapped" part + * + * @param string $pluginPath + * @return string + */ + protected function correctPluginPath(string $pluginPath): string + { + return str_replace("plugins/.paper-remapped", "plugins", $pluginPath); + } + + /** + * Extracts the plugin name without the file extension (usually .jar) from a plugin path + * + * @param string $pluginPath + * @return string + */ + protected function extractPluginName(string $pluginPath): string + { + return pathinfo($pluginPath, PATHINFO_FILENAME); + } + + /** + * Extracts the plugin file name including the file extension (usually .jar) from a plugin path + * + * @param string $pluginPath + * @return string + */ + protected function extractPluginFileName(string $pluginPath): string + { + return pathinfo($pluginPath, PATHINFO_BASENAME); } } \ No newline at end of file diff --git a/src/Analysis/Problem/Bukkit/UnsupportedApiVersionProblem.php b/src/Analysis/Problem/Bukkit/UnsupportedApiVersionProblem.php index f7ac99be..e7945618 100644 --- a/src/Analysis/Problem/Bukkit/UnsupportedApiVersionProblem.php +++ b/src/Analysis/Problem/Bukkit/UnsupportedApiVersionProblem.php @@ -2,25 +2,13 @@ namespace Aternos\Codex\Minecraft\Analysis\Problem\Bukkit; -use Aternos\Codex\Minecraft\Analysis\Solution\Bukkit\PluginInstallDifferentVersionSolution; use Aternos\Codex\Minecraft\Analysis\Solution\Bukkit\ServerInstallDifferentVersionSolution; -use Aternos\Codex\Minecraft\Analysis\Solution\File\FileDeleteSolution; use Aternos\Codex\Minecraft\Translator\Translator; -class UnsupportedApiVersionProblem extends PluginProblem +class UnsupportedApiVersionProblem extends PluginFileProblem { - protected ?string $pluginPath = null; - protected ?string $apiVersion = null; - /** - * @return string|null - */ - public function getPluginPath(): ?string - { - return $this->pluginPath; - } - /** * @return string|null */ @@ -51,17 +39,9 @@ public function getMessage(): string */ public function setMatches(array $matches, mixed $patternKey): void { - $pluginFileName = $matches[1]; // worldedit-bukkit-7.3.4-beta-01.jar - $pluginName = $matches[2]; // worldedit-bukkit-7.3.4-beta-01 - $folderName = $matches[3]; // plugins - - $this->pluginPath = $folderName . '/' . $pluginFileName; - $this->pluginName = $pluginName; - $this->apiVersion = $matches[4]; - + parent::setMatches($matches, $patternKey); - $this->addSolution((new PluginInstallDifferentVersionSolution())->setPluginName($this->getPluginName())); - $this->addSolution((new FileDeleteSolution())->setRelativePath($this->getPluginPath())); + $this->apiVersion = $matches[3]; $this->addSolution((new ServerInstallDifferentVersionSolution())->setSoftwareVersion($this->getApiVersion())); } @@ -76,9 +56,11 @@ public function setMatches(array $matches, mixed $patternKey): void public static function getPatterns(): array { return [ - '/Could not load \'plugins[\/\\\](((?!\.jar).*)\.jar)\' in folder \'([^\']+)\'' + // < 1.20 + '/Could not load \'plugins[\/\\\]([^\']+\.jar)\' in (?:folder )?\'([^\']+)\'' . '\norg\.bukkit\.plugin\.InvalidPluginException\: Unsupported API version ([0-9]+\.[0-9]+)/', - '/Could not load plugin \'(((?!\.jar).*)\.jar)\' in folder \'([^\']+)\'' + // >= 1.20 + '/Could not load plugin \'((?!\.jar).*\.jar)\' in folder \'([^\']+)\'' . '\norg\.bukkit\.plugin\.InvalidPluginException\: Unsupported API version ([0-9]+\.[0-9]+)/', ]; } diff --git a/src/Analysis/Problem/Bukkit/UnsupportedClassVersionProblem.php b/src/Analysis/Problem/Bukkit/UnsupportedClassVersionProblem.php index 428766c0..a5f070f4 100644 --- a/src/Analysis/Problem/Bukkit/UnsupportedClassVersionProblem.php +++ b/src/Analysis/Problem/Bukkit/UnsupportedClassVersionProblem.php @@ -2,24 +2,13 @@ namespace Aternos\Codex\Minecraft\Analysis\Problem\Bukkit; -use Aternos\Codex\Minecraft\Analysis\Solution\File\FileDeleteSolution; use Aternos\Codex\Minecraft\Analysis\Solution\UpdateJavaSolution; use Aternos\Codex\Minecraft\Translator\Translator; -class UnsupportedClassVersionProblem extends PluginProblem +class UnsupportedClassVersionProblem extends PluginFileProblem { - protected ?string $pluginPath = null; - protected ?string $classFileVersion = null; - /** - * @return string|null - */ - public function getPluginPath(): ?string - { - return $this->pluginPath; - } - /** * @return string|null */ @@ -50,15 +39,9 @@ public function getMessage(): string */ public function setMatches(array $matches, mixed $patternKey): void { - $pluginFileName = $matches[1]; // worldedit-bukkit-7.3.4-beta-01.jar - $pluginName = $matches[2]; // worldedit-bukkit-7.3.4-beta-01 - $folderName = $matches[3]; // plugins - - $this->pluginPath = $folderName . '/' . $pluginFileName; - $this->pluginName = $pluginName; - $this->classFileVersion = $matches[4]; + parent::setMatches($matches, $patternKey); - $this->addSolution((new FileDeleteSolution())->setRelativePath($this->getPluginPath())); + $this->classFileVersion = $matches[3]; $this->addSolution((new UpdateJavaSolution())->setVersion($this->getJavaVersion())); } @@ -73,9 +56,11 @@ public function setMatches(array $matches, mixed $patternKey): void public static function getPatterns(): array { return [ - '/Could not load \'plugins[\/\\\](((?!\.jar).*)\.jar)\' in folder \'([^\']+)\'' + // < 1.20 + '/Could not load \'plugins[\/\\\]([^\']+\.jar)\' in (?:folder )?\'([^\']+)\'' . '\norg\.bukkit\.plugin\.InvalidPluginException\: java\.lang\.UnsupportedClassVersionError: .+ \(class file version (\d+)\.\d+\)/', - '/Could not load plugin \'(((?!\.jar).*)\.jar)\' in folder \'([^\']+)\'' + // >= 1.20 + '/Could not load plugin \'((?!\.jar).*\.jar)\' in folder \'([^\']+)\'' . '\norg\.bukkit\.plugin\.InvalidPluginException\: java\.lang\.UnsupportedClassVersionError: .+ \(class file version (\d+)\.\d+\)/' ]; } diff --git a/src/Analysis/Problem/Folia/PluginRegionalTickingProblem.php b/src/Analysis/Problem/Folia/PluginRegionalTickingProblem.php index 7d3c4f11..c7bf5a0d 100644 --- a/src/Analysis/Problem/Folia/PluginRegionalTickingProblem.php +++ b/src/Analysis/Problem/Folia/PluginRegionalTickingProblem.php @@ -2,6 +2,8 @@ namespace Aternos\Codex\Minecraft\Analysis\Problem\Folia; +use Aternos\Codex\Minecraft\Analysis\Problem\Bukkit\PluginFileProblem; +use Aternos\Codex\Minecraft\Analysis\Solution\Bukkit\PluginInstallDifferentVersionSolution; use Aternos\Codex\Minecraft\Analysis\Solution\File\FileDeleteSolution; use Aternos\Codex\Minecraft\Analysis\Solution\Folia\InstallNonRegionalTickingSoftwareSolution; use Aternos\Codex\Minecraft\Translator\Translator; @@ -11,10 +13,8 @@ * * @package Aternos\Codex\Minecraft\Analysis\Problem\Folia */ -class PluginRegionalTickingProblem extends FoliaProblem +class PluginRegionalTickingProblem extends PluginFileProblem { - protected ?string $pluginName = null; - protected ?string $pluginPath = null; /** * Get a human-readable message @@ -34,7 +34,8 @@ public function getMessage(): string public static function getPatterns(): array { return [ - '/Could not load plugin \'(.*\.jar)\' in folder \'[^\']+\'\norg.bukkit.plugin.InvalidPluginException: Plugin (\w+) v(?:[^\n]*) is not marked as supporting regionised multithreading/' + '/Could not load plugin \'((?!\.jar).*\.jar)\' in folder \'([^\']+)\'' + . '\norg.bukkit.plugin.InvalidPluginException: Plugin (\w+) v(?:[^\n]*) is not marked as supporting regionised multithreading/' ]; } @@ -43,26 +44,17 @@ public static function getPatterns(): array */ public function setMatches(array $matches, mixed $patternKey): void { - $this->pluginPath = $matches[1]; - $this->pluginName = $matches[2]; + // worldedit-bukkit-7.3.4-beta-01.jar OR .paper-remapped/worldedit-bukkit-7.3.4-beta-01.jar + $pluginFileName = $this->extractPluginFileName($matches[1]); + // plugins OR plugins/.paper-remapped + $folderPath = $this->correctPluginPath($matches[2]); - $this->addSolution((new FileDeleteSolution())->setRelativePath($this->getPluginPath())); - $this->addSolution(new InstallNonRegionalTickingSoftwareSolution()); - } + $this->pluginFilePath = $folderPath . '/' . $pluginFileName; + $this->pluginName = $matches[3]; - /** - * @return string|null - */ - public function getPluginName(): ?string - { - return $this->pluginName; + $this->addSolution((new PluginInstallDifferentVersionSolution())->setPluginName($this->getPluginName())); + $this->addSolution((new FileDeleteSolution())->setRelativePath($this->getPluginFilePath())); + $this->addSolution(new InstallNonRegionalTickingSoftwareSolution()); } - /** - * @return string|null - */ - public function getPluginPath(): ?string - { - return $this->pluginPath; - } } \ No newline at end of file diff --git a/src/Analysis/Problem/Paper/ApiVersionLowerThanAllowedProblem.php b/src/Analysis/Problem/Paper/ApiVersionLowerThanAllowedProblem.php index ff82feaa..3c72bed3 100644 --- a/src/Analysis/Problem/Paper/ApiVersionLowerThanAllowedProblem.php +++ b/src/Analysis/Problem/Paper/ApiVersionLowerThanAllowedProblem.php @@ -2,8 +2,7 @@ namespace Aternos\Codex\Minecraft\Analysis\Problem\Paper; -use Aternos\Codex\Minecraft\Analysis\Solution\Bukkit\PluginInstallDifferentVersionSolution; -use Aternos\Codex\Minecraft\Analysis\Solution\Bukkit\PluginRemoveSolution; +use Aternos\Codex\Minecraft\Analysis\Problem\Bukkit\PluginFileProblem; use Aternos\Codex\Minecraft\Analysis\Solution\Paper\ChangeMinimumAllowedApiVersionSolution; use Aternos\Codex\Minecraft\Translator\Translator; @@ -12,9 +11,8 @@ * * @package Aternos\Codex\Minecraft\Analysis\Problem\Paper */ -class ApiVersionLowerThanAllowedProblem extends PaperProblem +class ApiVersionLowerThanAllowedProblem extends PluginFileProblem { - protected ?string $pluginName = null; protected ?string $pluginApiVersion = null; /** @@ -35,7 +33,7 @@ public function getMessage(): string public static function getPatterns(): array { return [ - '/Could not load plugin \'((?!\.jar).*)\.jar\' in folder \'[^\']+\'' + '/Could not load plugin \'((?!\.jar).*\.jar)\' in folder \'([^\']+)\'' . '\norg.bukkit.plugin.InvalidPluginException: Plugin API version (\d+\.\d+) is lower than the minimum allowed version\. Please update or replace it\./' ]; } @@ -45,22 +43,12 @@ public static function getPatterns(): array */ public function setMatches(array $matches, mixed $patternKey): void { - $this->pluginName = $matches[1]; - $this->pluginApiVersion = $matches[2]; + parent::setMatches($matches, $patternKey); - $this->addSolution((new PluginRemoveSolution())->setPluginName($this->getPluginName())); - $this->addSolution((new PluginInstallDifferentVersionSolution())->setPluginName($this->getPluginName())); + $this->pluginApiVersion = $matches[3]; $this->addSolution((new ChangeMinimumAllowedApiVersionSolution())->setApiVersion($this->getPluginApiVersion())); } - /** - * @return string|null - */ - public function getPluginName(): ?string - { - return $this->pluginName; - } - /** * @return string|null */ diff --git a/test/data/Vanilla/Bukkit/Folia/folia-1-19-4-unsupported-plugin.json b/test/data/Vanilla/Bukkit/Folia/folia-1-19-4-unsupported-plugin.json index d39b463d..e81b68a3 100644 --- a/test/data/Vanilla/Bukkit/Folia/folia-1-19-4-unsupported-plugin.json +++ b/test/data/Vanilla/Bukkit/Folia/folia-1-19-4-unsupported-plugin.json @@ -2034,7 +2034,10 @@ }, "solutions": [ { - "message": "Delete the file 'motdgg-bukkit-1.2.0.jar'." + "message": "Install a different version of the plugin 'motdgg'." + }, + { + "message": "Delete the file 'plugins\/motdgg-bukkit-1.2.0.jar'." }, { "message": "Install a software without regional ticking, like Paper." diff --git a/test/data/Vanilla/Bukkit/Paper/paper-ambiguous-plugin-name-1-21-1.json b/test/data/Vanilla/Bukkit/Paper/paper-ambiguous-plugin-name-1-21-1.json index a6231169..f97da324 100644 --- a/test/data/Vanilla/Bukkit/Paper/paper-ambiguous-plugin-name-1-21-1.json +++ b/test/data/Vanilla/Bukkit/Paper/paper-ambiguous-plugin-name-1-21-1.json @@ -688,10 +688,10 @@ }, "solutions": [ { - "message": "Delete the file 'plugins\/.paper-remapped\/worldedit-bukkit-7.3.6.jar'." + "message": "Delete the file 'plugins\/worldedit-bukkit-7.3.6.jar'." }, { - "message": "Delete the file 'plugins\/.paper-remapped\/worldedit-bukkit-7.3.4.jar'." + "message": "Delete the file 'plugins\/worldedit-bukkit-7.3.4.jar'." } ] } diff --git a/test/data/Vanilla/Bukkit/Paper/paper-multiple-dependencies-1-18-2.json b/test/data/Vanilla/Bukkit/Paper/paper-multiple-dependencies-1-18-2.json index e8d82555..ac59d755 100644 --- a/test/data/Vanilla/Bukkit/Paper/paper-multiple-dependencies-1-18-2.json +++ b/test/data/Vanilla/Bukkit/Paper/paper-multiple-dependencies-1-18-2.json @@ -356,7 +356,7 @@ "analysis": { "problems": [ { - "message": "The plugin 'mclogs-bukkit-2.3.1' is missing the required plugins 'example2', 'example1'.", + "message": "The plugin 'Mclogs' is missing the required plugins 'example2', 'example1'.", "counter": 1, "entry": { "level": 3, @@ -399,13 +399,16 @@ }, "solutions": [ { - "message": "Install the plugin 'example2'." + "message": "Install a different version of the plugin 'Mclogs'." }, { - "message": "Install the plugin 'example1'." + "message": "Delete the file 'plugins\/mclogs-bukkit-2.3.1.jar'." }, { - "message": "Delete the file 'plugins\/mclogs-bukkit-2.3.1.jar'." + "message": "Install the plugin 'example2'." + }, + { + "message": "Install the plugin 'example1'." } ] } diff --git a/test/data/Vanilla/Bukkit/Paper/paper-multiple-dependencies-1-20-4.json b/test/data/Vanilla/Bukkit/Paper/paper-multiple-dependencies-1-20-4.json index 022d755e..6dc1d10b 100644 --- a/test/data/Vanilla/Bukkit/Paper/paper-multiple-dependencies-1-20-4.json +++ b/test/data/Vanilla/Bukkit/Paper/paper-multiple-dependencies-1-20-4.json @@ -405,7 +405,7 @@ "analysis": { "problems": [ { - "message": "The plugin 'mclogs-bukkit-2.3.1' is missing the required plugins 'example1', 'example2'.", + "message": "The plugin 'Mclogs' is missing the required plugins 'example1', 'example2'.", "counter": 1, "entry": { "level": 3, @@ -456,13 +456,16 @@ }, "solutions": [ { - "message": "Install the plugin 'example1'." + "message": "Install a different version of the plugin 'Mclogs'." }, { - "message": "Install the plugin 'example2'." + "message": "Delete the file 'plugins\/mclogs-bukkit-2.3.1.jar'." }, { - "message": "Delete the file 'plugins\/mclogs-bukkit-2.3.1.jar'." + "message": "Install the plugin 'example1'." + }, + { + "message": "Install the plugin 'example2'." } ] } diff --git a/test/data/Vanilla/Bukkit/Paper/paper-multiple-dependencies-1-21-1.json b/test/data/Vanilla/Bukkit/Paper/paper-multiple-dependencies-1-21-1.json new file mode 100644 index 00000000..ffd8a540 --- /dev/null +++ b/test/data/Vanilla/Bukkit/Paper/paper-multiple-dependencies-1-21-1.json @@ -0,0 +1,566 @@ +{ + "id": "paper\/server", + "name": "Paper", + "type": "Server Log", + "version": "1.21.1", + "title": "Paper 1.21.1 Server Log", + "entries": [ + { + "level": 6, + "time": null, + "prefix": "[12:47:34] [ServerMain\/INFO]:", + "lines": [ + { + "number": 1, + "content": "[12:47:34] [ServerMain\/INFO]: [bootstrap] Running Java 21 (OpenJDK 64-Bit Server VM 21.0.4+7-LTS; Eclipse Adoptium Temurin-21.0.4+7) on Linux 5.15.0-117-generic (amd64)" + } + ] + }, + { + "level": 6, + "time": null, + "prefix": "[12:47:34] [ServerMain\/INFO]:", + "lines": [ + { + "number": 2, + "content": "[12:47:34] [ServerMain\/INFO]: [bootstrap] Loading Paper 1.21.1-116-master@e7e1ab5 (2024-09-30T23:17:54Z) for Minecraft 1.21.1" + } + ] + }, + { + "level": 6, + "time": null, + "prefix": "[12:47:35] [ServerMain\/INFO]:", + "lines": [ + { + "number": 3, + "content": "[12:47:35] [ServerMain\/INFO]: [PluginInitializerManager] Initializing plugins..." + } + ] + }, + { + "level": 6, + "time": null, + "prefix": "[12:47:35] [ServerMain\/INFO]:", + "lines": [ + { + "number": 4, + "content": "[12:47:35] [ServerMain\/INFO]: [PluginInitializerManager] Initialized 1 plugin" + } + ] + }, + { + "level": 6, + "time": null, + "prefix": "[12:47:35] [ServerMain\/INFO]:", + "lines": [ + { + "number": 5, + "content": "[12:47:35] [ServerMain\/INFO]: [PluginInitializerManager] Bukkit plugins (1):" + }, + { + "number": 6, + "content": " - Mclogs (2.6.3)" + } + ] + }, + { + "level": 6, + "time": null, + "prefix": "[12:47:39] [ServerMain\/INFO]:", + "lines": [ + { + "number": 7, + "content": "[12:47:39] [ServerMain\/INFO]: Environment: Environment[sessionHost=https:\/\/sessionserver.mojang.com, servicesHost=https:\/\/api.minecraftservices.com, name=PROD]" + } + ] + }, + { + "level": 6, + "time": null, + "prefix": "[12:47:40] [ServerMain\/INFO]:", + "lines": [ + { + "number": 8, + "content": "[12:47:40] [ServerMain\/INFO]: Loaded 1290 recipes" + } + ] + }, + { + "level": 6, + "time": null, + "prefix": "[12:47:41] [ServerMain\/INFO]:", + "lines": [ + { + "number": 9, + "content": "[12:47:41] [ServerMain\/INFO]: Loaded 1399 advancements" + } + ] + }, + { + "level": 6, + "time": null, + "prefix": "[12:47:41] [Server thread\/INFO]:", + "lines": [ + { + "number": 10, + "content": "[12:47:41] [Server thread\/INFO]: Starting minecraft server version 1.21.1" + } + ] + }, + { + "level": 6, + "time": null, + "prefix": "[12:47:41] [Server thread\/INFO]:", + "lines": [ + { + "number": 11, + "content": "[12:47:41] [Server thread\/INFO]: Loading properties" + } + ] + }, + { + "level": 6, + "time": null, + "prefix": "[12:47:41] [Server thread\/INFO]:", + "lines": [ + { + "number": 12, + "content": "[12:47:41] [Server thread\/INFO]: This server is running Paper version 1.21.1-116-master@e7e1ab5 (2024-09-30T23:17:54Z) (Implementing API version 1.21.1-R0.1-SNAPSHOT)" + } + ] + }, + { + "level": 6, + "time": null, + "prefix": "[12:47:41] [Server thread\/INFO]:", + "lines": [ + { + "number": 13, + "content": "[12:47:41] [Server thread\/INFO]: [spark] This server bundles the spark profiler. For more information please visit https:\/\/docs.papermc.io\/paper\/profiling" + } + ] + }, + { + "level": 6, + "time": null, + "prefix": "[12:47:41] [Server thread\/INFO]:", + "lines": [ + { + "number": 14, + "content": "[12:47:41] [Server thread\/INFO]: Server Ping Player Sample Count: 12" + } + ] + }, + { + "level": 6, + "time": null, + "prefix": "[12:47:41] [Server thread\/INFO]:", + "lines": [ + { + "number": 15, + "content": "[12:47:41] [Server thread\/INFO]: Using 4 threads for Netty based IO" + } + ] + }, + { + "level": 6, + "time": null, + "prefix": "[12:47:42] [Server thread\/INFO]:", + "lines": [ + { + "number": 16, + "content": "[12:47:42] [Server thread\/INFO]: [ChunkTaskScheduler] Chunk system is using 1 I\/O threads, 1 worker threads, and population gen parallelism of 1 threads" + } + ] + }, + { + "level": 6, + "time": null, + "prefix": "[12:47:43] [Server thread\/INFO]:", + "lines": [ + { + "number": 17, + "content": "[12:47:43] [Server thread\/INFO]: Default game type: SURVIVAL" + } + ] + }, + { + "level": 6, + "time": null, + "prefix": "[12:47:43] [Server thread\/INFO]:", + "lines": [ + { + "number": 18, + "content": "[12:47:43] [Server thread\/INFO]: Generating keypair" + } + ] + }, + { + "level": 6, + "time": null, + "prefix": "[12:47:43] [Server thread\/INFO]:", + "lines": [ + { + "number": 19, + "content": "[12:47:43] [Server thread\/INFO]: Starting Minecraft server on *:16754" + } + ] + }, + { + "level": 6, + "time": null, + "prefix": "[12:47:43] [Server thread\/INFO]:", + "lines": [ + { + "number": 20, + "content": "[12:47:43] [Server thread\/INFO]: Using epoll channel type" + } + ] + }, + { + "level": 6, + "time": null, + "prefix": "[12:47:43] [Server thread\/INFO]:", + "lines": [ + { + "number": 21, + "content": "[12:47:43] [Server thread\/INFO]: Paper: Using libdeflate (Linux x86_64) compression from Velocity." + } + ] + }, + { + "level": 6, + "time": null, + "prefix": "[12:47:43] [Server thread\/INFO]:", + "lines": [ + { + "number": 22, + "content": "[12:47:43] [Server thread\/INFO]: Paper: Using OpenSSL 3.x.x (Linux x86_64) cipher from Velocity." + } + ] + }, + { + "level": 3, + "time": null, + "prefix": "[12:47:43] [Server thread\/ERROR]:", + "lines": [ + { + "number": 23, + "content": "[12:47:43] [Server thread\/ERROR]: [ModernPluginLoadingStrategy] Could not load 'plugins\/.paper-remapped\/mclogs-bukkit-2.6.3.jar' in 'plugins\/.paper-remapped'" + }, + { + "number": 24, + "content": "org.bukkit.plugin.UnknownDependencyException: Unknown\/missing dependency plugins: [example1, example2]. Please download and install these plugins to run 'Mclogs'." + }, + { + "number": 25, + "content": "\tat io.papermc.paper.plugin.entrypoint.strategy.modern.ModernPluginLoadingStrategy.loadProviders(ModernPluginLoadingStrategy.java:82) ~[paper-1.21.1.jar:1.21.1-116-e7e1ab5]" + }, + { + "number": 26, + "content": "\tat io.papermc.paper.plugin.storage.SimpleProviderStorage.enter(SimpleProviderStorage.java:38) ~[paper-1.21.1.jar:1.21.1-116-e7e1ab5]" + }, + { + "number": 27, + "content": "\tat io.papermc.paper.plugin.entrypoint.LaunchEntryPointHandler.enter(LaunchEntryPointHandler.java:40) ~[paper-1.21.1.jar:1.21.1-116-e7e1ab5]" + }, + { + "number": 28, + "content": "\tat org.bukkit.craftbukkit.CraftServer.loadPlugins(CraftServer.java:546) ~[paper-1.21.1.jar:1.21.1-116-e7e1ab5]" + }, + { + "number": 29, + "content": "\tat net.minecraft.server.dedicated.DedicatedServer.initServer(DedicatedServer.java:292) ~[paper-1.21.1.jar:1.21.1-116-e7e1ab5]" + }, + { + "number": 30, + "content": "\tat net.minecraft.server.MinecraftServer.runServer(MinecraftServer.java:1214) ~[paper-1.21.1.jar:1.21.1-116-e7e1ab5]" + }, + { + "number": 31, + "content": "\tat net.minecraft.server.MinecraftServer.lambda$spin$0(MinecraftServer.java:329) ~[paper-1.21.1.jar:1.21.1-116-e7e1ab5]" + }, + { + "number": 32, + "content": "\tat java.base\/java.lang.Thread.run(Thread.java:1583) ~[?:?]" + } + ] + }, + { + "level": 6, + "time": null, + "prefix": "[12:47:43] [Server thread\/INFO]:", + "lines": [ + { + "number": 33, + "content": "[12:47:43] [Server thread\/INFO]: Server permissions file permissions.yml is empty, ignoring it" + } + ] + }, + { + "level": 6, + "time": null, + "prefix": "[12:47:43] [Server thread\/INFO]:", + "lines": [ + { + "number": 34, + "content": "[12:47:43] [Server thread\/INFO]: Preparing level \"world\"" + } + ] + }, + { + "level": 6, + "time": null, + "prefix": "[12:47:43] [Server thread\/INFO]:", + "lines": [ + { + "number": 35, + "content": "[12:47:43] [Server thread\/INFO]: Preparing start region for dimension minecraft:overworld" + } + ] + }, + { + "level": 6, + "time": null, + "prefix": "[12:47:44] [Server thread\/INFO]:", + "lines": [ + { + "number": 36, + "content": "[12:47:44] [Server thread\/INFO]: Time elapsed: 1191 ms" + } + ] + }, + { + "level": 6, + "time": null, + "prefix": "[12:47:44] [Server thread\/INFO]:", + "lines": [ + { + "number": 37, + "content": "[12:47:44] [Server thread\/INFO]: Preparing start region for dimension minecraft:the_nether" + } + ] + }, + { + "level": 6, + "time": null, + "prefix": "[12:47:45] [Server thread\/INFO]:", + "lines": [ + { + "number": 38, + "content": "[12:47:45] [Server thread\/INFO]: Time elapsed: 144 ms" + } + ] + }, + { + "level": 6, + "time": null, + "prefix": "[12:47:45] [Server thread\/INFO]:", + "lines": [ + { + "number": 39, + "content": "[12:47:45] [Server thread\/INFO]: Preparing start region for dimension minecraft:the_end" + } + ] + }, + { + "level": 6, + "time": null, + "prefix": "[12:47:45] [Server thread\/INFO]:", + "lines": [ + { + "number": 40, + "content": "[12:47:45] [Server thread\/INFO]: Time elapsed: 161 ms" + } + ] + }, + { + "level": 6, + "time": null, + "prefix": "[12:47:45] [Server thread\/INFO]:", + "lines": [ + { + "number": 41, + "content": "[12:47:45] [Server thread\/INFO]: [spark] Starting background profiler..." + } + ] + }, + { + "level": 6, + "time": null, + "prefix": "[12:47:45] [Server thread\/INFO]:", + "lines": [ + { + "number": 42, + "content": "[12:47:45] [Server thread\/INFO]: Done preparing level \"world\" (2.234s)" + } + ] + }, + { + "level": 6, + "time": null, + "prefix": "[12:47:45] [Server thread\/INFO]:", + "lines": [ + { + "number": 43, + "content": "[12:47:45] [Server thread\/INFO]: Starting GS4 status listener" + } + ] + }, + { + "level": 6, + "time": null, + "prefix": "[12:47:45] [Server thread\/INFO]:", + "lines": [ + { + "number": 44, + "content": "[12:47:45] [Server thread\/INFO]: Thread Query Listener started" + } + ] + }, + { + "level": 6, + "time": null, + "prefix": "[12:47:45] [Query Listener #1\/INFO]:", + "lines": [ + { + "number": 45, + "content": "[12:47:45] [Query Listener #1\/INFO]: Query running on 0.0.0.0:9898" + } + ] + }, + { + "level": 6, + "time": null, + "prefix": "[12:47:45] [Server thread\/INFO]:", + "lines": [ + { + "number": 46, + "content": "[12:47:45] [Server thread\/INFO]: JMX monitoring enabled" + } + ] + }, + { + "level": 6, + "time": null, + "prefix": "[12:47:45] [Server thread\/INFO]:", + "lines": [ + { + "number": 47, + "content": "[12:47:45] [Server thread\/INFO]: Running delayed init tasks" + } + ] + }, + { + "level": 6, + "time": null, + "prefix": "[12:47:45] [Server thread\/INFO]:", + "lines": [ + { + "number": 48, + "content": "[12:47:45] [Server thread\/INFO]: Done (11.257s)! For help, type \"help\"" + } + ] + }, + { + "level": 6, + "time": null, + "prefix": "[12:47:45] [Server thread\/INFO]:", + "lines": [ + { + "number": 49, + "content": "[12:47:45] [Server thread\/INFO]: Timings Reset" + } + ] + } + ], + "analysis": { + "problems": [ + { + "message": "The plugin 'Mclogs' is missing the required plugins 'example1', 'example2'.", + "counter": 1, + "entry": { + "level": 3, + "time": null, + "prefix": "[12:47:43] [Server thread\/ERROR]:", + "lines": [ + { + "number": 23, + "content": "[12:47:43] [Server thread\/ERROR]: [ModernPluginLoadingStrategy] Could not load 'plugins\/.paper-remapped\/mclogs-bukkit-2.6.3.jar' in 'plugins\/.paper-remapped'" + }, + { + "number": 24, + "content": "org.bukkit.plugin.UnknownDependencyException: Unknown\/missing dependency plugins: [example1, example2]. Please download and install these plugins to run 'Mclogs'." + }, + { + "number": 25, + "content": "\tat io.papermc.paper.plugin.entrypoint.strategy.modern.ModernPluginLoadingStrategy.loadProviders(ModernPluginLoadingStrategy.java:82) ~[paper-1.21.1.jar:1.21.1-116-e7e1ab5]" + }, + { + "number": 26, + "content": "\tat io.papermc.paper.plugin.storage.SimpleProviderStorage.enter(SimpleProviderStorage.java:38) ~[paper-1.21.1.jar:1.21.1-116-e7e1ab5]" + }, + { + "number": 27, + "content": "\tat io.papermc.paper.plugin.entrypoint.LaunchEntryPointHandler.enter(LaunchEntryPointHandler.java:40) ~[paper-1.21.1.jar:1.21.1-116-e7e1ab5]" + }, + { + "number": 28, + "content": "\tat org.bukkit.craftbukkit.CraftServer.loadPlugins(CraftServer.java:546) ~[paper-1.21.1.jar:1.21.1-116-e7e1ab5]" + }, + { + "number": 29, + "content": "\tat net.minecraft.server.dedicated.DedicatedServer.initServer(DedicatedServer.java:292) ~[paper-1.21.1.jar:1.21.1-116-e7e1ab5]" + }, + { + "number": 30, + "content": "\tat net.minecraft.server.MinecraftServer.runServer(MinecraftServer.java:1214) ~[paper-1.21.1.jar:1.21.1-116-e7e1ab5]" + }, + { + "number": 31, + "content": "\tat net.minecraft.server.MinecraftServer.lambda$spin$0(MinecraftServer.java:329) ~[paper-1.21.1.jar:1.21.1-116-e7e1ab5]" + }, + { + "number": 32, + "content": "\tat java.base\/java.lang.Thread.run(Thread.java:1583) ~[?:?]" + } + ] + }, + "solutions": [ + { + "message": "Install a different version of the plugin 'Mclogs'." + }, + { + "message": "Delete the file 'plugins\/mclogs-bukkit-2.6.3.jar'." + }, + { + "message": "Install the plugin 'example1'." + }, + { + "message": "Install the plugin 'example2'." + } + ] + } + ], + "information": [ + { + "message": "Minecraft version: 1.21.1", + "counter": 1, + "entry": { + "level": 6, + "time": null, + "prefix": "[12:47:41] [Server thread\/INFO]:", + "lines": [ + { + "number": 10, + "content": "[12:47:41] [Server thread\/INFO]: Starting minecraft server version 1.21.1" + } + ] + }, + "label": "Minecraft version", + "value": "1.21.1" + } + ] + } +} \ No newline at end of file diff --git a/test/data/Vanilla/Bukkit/Paper/paper-multiple-dependencies-1-21-1.log b/test/data/Vanilla/Bukkit/Paper/paper-multiple-dependencies-1-21-1.log new file mode 100644 index 00000000..3db2ca38 --- /dev/null +++ b/test/data/Vanilla/Bukkit/Paper/paper-multiple-dependencies-1-21-1.log @@ -0,0 +1,49 @@ +[12:47:34] [ServerMain/INFO]: [bootstrap] Running Java 21 (OpenJDK 64-Bit Server VM 21.0.4+7-LTS; Eclipse Adoptium Temurin-21.0.4+7) on Linux 5.15.0-117-generic (amd64) +[12:47:34] [ServerMain/INFO]: [bootstrap] Loading Paper 1.21.1-116-master@e7e1ab5 (2024-09-30T23:17:54Z) for Minecraft 1.21.1 +[12:47:35] [ServerMain/INFO]: [PluginInitializerManager] Initializing plugins... +[12:47:35] [ServerMain/INFO]: [PluginInitializerManager] Initialized 1 plugin +[12:47:35] [ServerMain/INFO]: [PluginInitializerManager] Bukkit plugins (1): + - Mclogs (2.6.3) +[12:47:39] [ServerMain/INFO]: Environment: Environment[sessionHost=https://sessionserver.mojang.com, servicesHost=https://api.minecraftservices.com, name=PROD] +[12:47:40] [ServerMain/INFO]: Loaded 1290 recipes +[12:47:41] [ServerMain/INFO]: Loaded 1399 advancements +[12:47:41] [Server thread/INFO]: Starting minecraft server version 1.21.1 +[12:47:41] [Server thread/INFO]: Loading properties +[12:47:41] [Server thread/INFO]: This server is running Paper version 1.21.1-116-master@e7e1ab5 (2024-09-30T23:17:54Z) (Implementing API version 1.21.1-R0.1-SNAPSHOT) +[12:47:41] [Server thread/INFO]: [spark] This server bundles the spark profiler. For more information please visit https://docs.papermc.io/paper/profiling +[12:47:41] [Server thread/INFO]: Server Ping Player Sample Count: 12 +[12:47:41] [Server thread/INFO]: Using 4 threads for Netty based IO +[12:47:42] [Server thread/INFO]: [ChunkTaskScheduler] Chunk system is using 1 I/O threads, 1 worker threads, and population gen parallelism of 1 threads +[12:47:43] [Server thread/INFO]: Default game type: SURVIVAL +[12:47:43] [Server thread/INFO]: Generating keypair +[12:47:43] [Server thread/INFO]: Starting Minecraft server on *:16754 +[12:47:43] [Server thread/INFO]: Using epoll channel type +[12:47:43] [Server thread/INFO]: Paper: Using libdeflate (Linux x86_64) compression from Velocity. +[12:47:43] [Server thread/INFO]: Paper: Using OpenSSL 3.x.x (Linux x86_64) cipher from Velocity. +[12:47:43] [Server thread/ERROR]: [ModernPluginLoadingStrategy] Could not load 'plugins/.paper-remapped/mclogs-bukkit-2.6.3.jar' in 'plugins/.paper-remapped' +org.bukkit.plugin.UnknownDependencyException: Unknown/missing dependency plugins: [example1, example2]. Please download and install these plugins to run 'Mclogs'. + at io.papermc.paper.plugin.entrypoint.strategy.modern.ModernPluginLoadingStrategy.loadProviders(ModernPluginLoadingStrategy.java:82) ~[paper-1.21.1.jar:1.21.1-116-e7e1ab5] + at io.papermc.paper.plugin.storage.SimpleProviderStorage.enter(SimpleProviderStorage.java:38) ~[paper-1.21.1.jar:1.21.1-116-e7e1ab5] + at io.papermc.paper.plugin.entrypoint.LaunchEntryPointHandler.enter(LaunchEntryPointHandler.java:40) ~[paper-1.21.1.jar:1.21.1-116-e7e1ab5] + at org.bukkit.craftbukkit.CraftServer.loadPlugins(CraftServer.java:546) ~[paper-1.21.1.jar:1.21.1-116-e7e1ab5] + at net.minecraft.server.dedicated.DedicatedServer.initServer(DedicatedServer.java:292) ~[paper-1.21.1.jar:1.21.1-116-e7e1ab5] + at net.minecraft.server.MinecraftServer.runServer(MinecraftServer.java:1214) ~[paper-1.21.1.jar:1.21.1-116-e7e1ab5] + at net.minecraft.server.MinecraftServer.lambda$spin$0(MinecraftServer.java:329) ~[paper-1.21.1.jar:1.21.1-116-e7e1ab5] + at java.base/java.lang.Thread.run(Thread.java:1583) ~[?:?] +[12:47:43] [Server thread/INFO]: Server permissions file permissions.yml is empty, ignoring it +[12:47:43] [Server thread/INFO]: Preparing level "world" +[12:47:43] [Server thread/INFO]: Preparing start region for dimension minecraft:overworld +[12:47:44] [Server thread/INFO]: Time elapsed: 1191 ms +[12:47:44] [Server thread/INFO]: Preparing start region for dimension minecraft:the_nether +[12:47:45] [Server thread/INFO]: Time elapsed: 144 ms +[12:47:45] [Server thread/INFO]: Preparing start region for dimension minecraft:the_end +[12:47:45] [Server thread/INFO]: Time elapsed: 161 ms +[12:47:45] [Server thread/INFO]: [spark] Starting background profiler... +[12:47:45] [Server thread/INFO]: Done preparing level "world" (2.234s) +[12:47:45] [Server thread/INFO]: Starting GS4 status listener +[12:47:45] [Server thread/INFO]: Thread Query Listener started +[12:47:45] [Query Listener #1/INFO]: Query running on 0.0.0.0:9898 +[12:47:45] [Server thread/INFO]: JMX monitoring enabled +[12:47:45] [Server thread/INFO]: Running delayed init tasks +[12:47:45] [Server thread/INFO]: Done (11.257s)! For help, type "help" +[12:47:45] [Server thread/INFO]: Timings Reset \ No newline at end of file diff --git a/test/data/Vanilla/Bukkit/Paper/paper-plugin-api-version-too-low-1-20-6.json b/test/data/Vanilla/Bukkit/Paper/paper-plugin-api-version-too-low-1-20-6.json index d75acb8e..6439a595 100644 --- a/test/data/Vanilla/Bukkit/Paper/paper-plugin-api-version-too-low-1-20-6.json +++ b/test/data/Vanilla/Bukkit/Paper/paper-plugin-api-version-too-low-1-20-6.json @@ -484,10 +484,10 @@ }, "solutions": [ { - "message": "Remove the plugin 'worldedit-bukkit-7.3.4-beta-01'." + "message": "Install a different version of the plugin 'worldedit-bukkit-7.3.4-beta-01'." }, { - "message": "Install a different version of the plugin 'worldedit-bukkit-7.3.4-beta-01'." + "message": "Delete the file 'plugins\/worldedit-bukkit-7.3.4-beta-01.jar'." }, { "message": "Change 'minimum-api' in bukkit.yml to 1.20, lower or even 'none'." diff --git a/test/data/Vanilla/Bukkit/Paper/paper-plugin-api-version-too-low-1-21-1.json b/test/data/Vanilla/Bukkit/Paper/paper-plugin-api-version-too-low-1-21-1.json new file mode 100644 index 00000000..ebdad3aa --- /dev/null +++ b/test/data/Vanilla/Bukkit/Paper/paper-plugin-api-version-too-low-1-21-1.json @@ -0,0 +1,862 @@ +{ + "id": "paper\/server", + "name": "Paper", + "type": "Server Log", + "version": "1.21.1", + "title": "Paper 1.21.1 Server Log", + "entries": [ + { + "level": 6, + "time": null, + "prefix": "[14:46:58] [ServerMain\/INFO]:", + "lines": [ + { + "number": 1, + "content": "[14:46:58] [ServerMain\/INFO]: [bootstrap] Running Java 21 (OpenJDK 64-Bit Server VM 21.0.3+9-LTS; Eclipse Adoptium Temurin-21.0.3+9) on Linux 5.15.0-117-generic (amd64)" + } + ] + }, + { + "level": 6, + "time": null, + "prefix": "[14:46:58] [ServerMain\/INFO]:", + "lines": [ + { + "number": 2, + "content": "[14:46:58] [ServerMain\/INFO]: [bootstrap] Loading Paper 1.21.1-116-master@e7e1ab5 (2024-09-30T23:17:54Z) for Minecraft 1.21.1" + } + ] + }, + { + "level": 6, + "time": null, + "prefix": "[14:46:59] [ServerMain\/INFO]:", + "lines": [ + { + "number": 3, + "content": "[14:46:59] [ServerMain\/INFO]: [PluginInitializerManager] Initializing plugins..." + } + ] + }, + { + "level": 6, + "time": null, + "prefix": "[14:46:59] [Paper Plugin Remapper Thread - 2\/INFO]:", + "lines": [ + { + "number": 4, + "content": "[14:46:59] [Paper Plugin Remapper Thread - 2\/INFO]: [PluginRemapper] Remapping plugin 'plugins\/mclogs-bukkit-dev.jar'..." + } + ] + }, + { + "level": 6, + "time": null, + "prefix": "[14:47:00] [Paper Plugin Remapper Thread - 2\/INFO]:", + "lines": [ + { + "number": 5, + "content": "[14:47:00] [Paper Plugin Remapper Thread - 2\/INFO]: [PluginRemapper] Done remapping plugin 'plugins\/mclogs-bukkit-dev.jar' in 991ms." + } + ] + }, + { + "level": 6, + "time": null, + "prefix": "[14:47:00] [ServerMain\/INFO]:", + "lines": [ + { + "number": 6, + "content": "[14:47:00] [ServerMain\/INFO]: [PluginInitializerManager] Initialized 1 plugin" + } + ] + }, + { + "level": 6, + "time": null, + "prefix": "[14:47:00] [ServerMain\/INFO]:", + "lines": [ + { + "number": 7, + "content": "[14:47:00] [ServerMain\/INFO]: [PluginInitializerManager] Bukkit plugins (1):" + }, + { + "number": 8, + "content": " - Mclogs (dev)" + } + ] + }, + { + "level": 6, + "time": null, + "prefix": "[14:47:04] [ServerMain\/INFO]:", + "lines": [ + { + "number": 9, + "content": "[14:47:04] [ServerMain\/INFO]: Environment: Environment[sessionHost=https:\/\/sessionserver.mojang.com, servicesHost=https:\/\/api.minecraftservices.com, name=PROD]" + } + ] + }, + { + "level": 6, + "time": null, + "prefix": "[14:47:06] [ServerMain\/INFO]:", + "lines": [ + { + "number": 10, + "content": "[14:47:06] [ServerMain\/INFO]: Loaded 1290 recipes" + } + ] + }, + { + "level": 6, + "time": null, + "prefix": "[14:47:06] [ServerMain\/INFO]:", + "lines": [ + { + "number": 11, + "content": "[14:47:06] [ServerMain\/INFO]: Loaded 1399 advancements" + } + ] + }, + { + "level": 6, + "time": null, + "prefix": "[14:47:06] [Server thread\/INFO]:", + "lines": [ + { + "number": 12, + "content": "[14:47:06] [Server thread\/INFO]: Starting minecraft server version 1.21.1" + } + ] + }, + { + "level": 6, + "time": null, + "prefix": "[14:47:06] [Server thread\/INFO]:", + "lines": [ + { + "number": 13, + "content": "[14:47:06] [Server thread\/INFO]: Loading properties" + } + ] + }, + { + "level": 6, + "time": null, + "prefix": "[14:47:06] [Server thread\/INFO]:", + "lines": [ + { + "number": 14, + "content": "[14:47:06] [Server thread\/INFO]: This server is running Paper version 1.21.1-116-master@e7e1ab5 (2024-09-30T23:17:54Z) (Implementing API version 1.21.1-R0.1-SNAPSHOT)" + } + ] + }, + { + "level": 6, + "time": null, + "prefix": "[14:47:07] [Server thread\/INFO]:", + "lines": [ + { + "number": 15, + "content": "[14:47:07] [Server thread\/INFO]: [spark] This server bundles the spark profiler. For more information please visit https:\/\/docs.papermc.io\/paper\/profiling" + } + ] + }, + { + "level": 6, + "time": null, + "prefix": "[14:47:07] [Server thread\/INFO]:", + "lines": [ + { + "number": 16, + "content": "[14:47:07] [Server thread\/INFO]: Server Ping Player Sample Count: 12" + } + ] + }, + { + "level": 6, + "time": null, + "prefix": "[14:47:07] [Server thread\/INFO]:", + "lines": [ + { + "number": 17, + "content": "[14:47:07] [Server thread\/INFO]: Using 4 threads for Netty based IO" + } + ] + }, + { + "level": 6, + "time": null, + "prefix": "[14:47:08] [Server thread\/INFO]:", + "lines": [ + { + "number": 18, + "content": "[14:47:08] [Server thread\/INFO]: [ChunkTaskScheduler] Chunk system is using 1 I\/O threads, 1 worker threads, and population gen parallelism of 1 threads" + } + ] + }, + { + "level": 6, + "time": null, + "prefix": "[14:47:08] [Server thread\/INFO]:", + "lines": [ + { + "number": 19, + "content": "[14:47:08] [Server thread\/INFO]: Default game type: SURVIVAL" + } + ] + }, + { + "level": 6, + "time": null, + "prefix": "[14:47:08] [Server thread\/INFO]:", + "lines": [ + { + "number": 20, + "content": "[14:47:08] [Server thread\/INFO]: Generating keypair" + } + ] + }, + { + "level": 6, + "time": null, + "prefix": "[14:47:08] [Server thread\/INFO]:", + "lines": [ + { + "number": 21, + "content": "[14:47:08] [Server thread\/INFO]: Starting Minecraft server on *:16754" + } + ] + }, + { + "level": 6, + "time": null, + "prefix": "[14:47:09] [Server thread\/INFO]:", + "lines": [ + { + "number": 22, + "content": "[14:47:09] [Server thread\/INFO]: Using epoll channel type" + } + ] + }, + { + "level": 6, + "time": null, + "prefix": "[14:47:09] [Server thread\/INFO]:", + "lines": [ + { + "number": 23, + "content": "[14:47:09] [Server thread\/INFO]: Paper: Using libdeflate (Linux x86_64) compression from Velocity." + } + ] + }, + { + "level": 6, + "time": null, + "prefix": "[14:47:09] [Server thread\/INFO]:", + "lines": [ + { + "number": 24, + "content": "[14:47:09] [Server thread\/INFO]: Paper: Using OpenSSL 3.x.x (Linux x86_64) cipher from Velocity." + } + ] + }, + { + "level": 3, + "time": null, + "prefix": "[14:47:09] [Server thread\/ERROR]:", + "lines": [ + { + "number": 25, + "content": "[14:47:09] [Server thread\/ERROR]: [ModernPluginLoadingStrategy] Could not load plugin 'mclogs-bukkit-dev.jar' in folder 'plugins\/.paper-remapped'" + }, + { + "number": 26, + "content": "org.bukkit.plugin.InvalidPluginException: Plugin API version 1.20 is lower than the minimum allowed version. Please update or replace it." + }, + { + "number": 27, + "content": "\tat org.bukkit.craftbukkit.util.CraftMagicNumbers.checkSupported(CraftMagicNumbers.java:374) ~[paper-1.21.1.jar:1.21.1-116-e7e1ab5]" + }, + { + "number": 28, + "content": "\tat io.papermc.paper.plugin.provider.type.spigot.SpigotPluginProvider.createInstance(SpigotPluginProvider.java:121) ~[paper-1.21.1.jar:1.21.1-116-e7e1ab5]" + }, + { + "number": 29, + "content": "\tat io.papermc.paper.plugin.provider.type.spigot.SpigotPluginProvider.createInstance(SpigotPluginProvider.java:35) ~[paper-1.21.1.jar:1.21.1-116-e7e1ab5]" + }, + { + "number": 30, + "content": "\tat io.papermc.paper.plugin.entrypoint.strategy.modern.ModernPluginLoadingStrategy.loadProviders(ModernPluginLoadingStrategy.java:116) ~[paper-1.21.1.jar:1.21.1-116-e7e1ab5]" + }, + { + "number": 31, + "content": "\tat io.papermc.paper.plugin.storage.SimpleProviderStorage.enter(SimpleProviderStorage.java:38) ~[paper-1.21.1.jar:1.21.1-116-e7e1ab5]" + }, + { + "number": 32, + "content": "\tat io.papermc.paper.plugin.entrypoint.LaunchEntryPointHandler.enter(LaunchEntryPointHandler.java:40) ~[paper-1.21.1.jar:1.21.1-116-e7e1ab5]" + }, + { + "number": 33, + "content": "\tat org.bukkit.craftbukkit.CraftServer.loadPlugins(CraftServer.java:546) ~[paper-1.21.1.jar:1.21.1-116-e7e1ab5]" + }, + { + "number": 34, + "content": "\tat net.minecraft.server.dedicated.DedicatedServer.initServer(DedicatedServer.java:292) ~[paper-1.21.1.jar:1.21.1-116-e7e1ab5]" + }, + { + "number": 35, + "content": "\tat net.minecraft.server.MinecraftServer.runServer(MinecraftServer.java:1214) ~[paper-1.21.1.jar:1.21.1-116-e7e1ab5]" + }, + { + "number": 36, + "content": "\tat net.minecraft.server.MinecraftServer.lambda$spin$0(MinecraftServer.java:329) ~[paper-1.21.1.jar:1.21.1-116-e7e1ab5]" + }, + { + "number": 37, + "content": "\tat java.base\/java.lang.Thread.run(Thread.java:1583) ~[?:?]" + } + ] + }, + { + "level": 6, + "time": null, + "prefix": "[14:47:09] [Server thread\/INFO]:", + "lines": [ + { + "number": 38, + "content": "[14:47:09] [Server thread\/INFO]: Server permissions file permissions.yml is empty, ignoring it" + } + ] + }, + { + "level": 6, + "time": null, + "prefix": "[14:47:09] [Server thread\/INFO]:", + "lines": [ + { + "number": 39, + "content": "[14:47:09] [Server thread\/INFO]: Preparing level \"world\"" + } + ] + }, + { + "level": 6, + "time": null, + "prefix": "[14:47:09] [Server thread\/INFO]:", + "lines": [ + { + "number": 40, + "content": "[14:47:09] [Server thread\/INFO]: Preparing start region for dimension minecraft:overworld" + } + ] + }, + { + "level": 6, + "time": null, + "prefix": "[14:47:11] [Server thread\/INFO]:", + "lines": [ + { + "number": 41, + "content": "[14:47:11] [Server thread\/INFO]: Time elapsed: 1513 ms" + } + ] + }, + { + "level": 6, + "time": null, + "prefix": "[14:47:11] [Server thread\/INFO]:", + "lines": [ + { + "number": 42, + "content": "[14:47:11] [Server thread\/INFO]: Preparing start region for dimension minecraft:the_nether" + } + ] + }, + { + "level": 6, + "time": null, + "prefix": "[14:47:11] [Server thread\/INFO]:", + "lines": [ + { + "number": 43, + "content": "[14:47:11] [Server thread\/INFO]: Time elapsed: 203 ms" + } + ] + }, + { + "level": 6, + "time": null, + "prefix": "[14:47:11] [Server thread\/INFO]:", + "lines": [ + { + "number": 44, + "content": "[14:47:11] [Server thread\/INFO]: Preparing start region for dimension minecraft:the_end" + } + ] + }, + { + "level": 6, + "time": null, + "prefix": "[14:47:11] [Server thread\/INFO]:", + "lines": [ + { + "number": 45, + "content": "[14:47:11] [Server thread\/INFO]: Time elapsed: 208 ms" + } + ] + }, + { + "level": 6, + "time": null, + "prefix": "[14:47:11] [Server thread\/INFO]:", + "lines": [ + { + "number": 46, + "content": "[14:47:11] [Server thread\/INFO]: [spark] Starting background profiler..." + } + ] + }, + { + "level": 6, + "time": null, + "prefix": "[14:47:12] [Server thread\/INFO]:", + "lines": [ + { + "number": 47, + "content": "[14:47:12] [Server thread\/INFO]: Done preparing level \"world\" (3.015s)" + } + ] + }, + { + "level": 6, + "time": null, + "prefix": "[14:47:12] [Server thread\/INFO]:", + "lines": [ + { + "number": 48, + "content": "[14:47:12] [Server thread\/INFO]: Starting GS4 status listener" + } + ] + }, + { + "level": 6, + "time": null, + "prefix": "[14:47:12] [Server thread\/INFO]:", + "lines": [ + { + "number": 49, + "content": "[14:47:12] [Server thread\/INFO]: Thread Query Listener started" + } + ] + }, + { + "level": 6, + "time": null, + "prefix": "[14:47:12] [Query Listener #1\/INFO]:", + "lines": [ + { + "number": 50, + "content": "[14:47:12] [Query Listener #1\/INFO]: Query running on 0.0.0.0:9898" + } + ] + }, + { + "level": 6, + "time": null, + "prefix": "[14:47:12] [Server thread\/INFO]:", + "lines": [ + { + "number": 51, + "content": "[14:47:12] [Server thread\/INFO]: JMX monitoring enabled" + } + ] + }, + { + "level": 6, + "time": null, + "prefix": "[14:47:12] [Server thread\/INFO]:", + "lines": [ + { + "number": 52, + "content": "[14:47:12] [Server thread\/INFO]: Running delayed init tasks" + } + ] + }, + { + "level": 6, + "time": null, + "prefix": "[14:47:12] [Server thread\/INFO]:", + "lines": [ + { + "number": 53, + "content": "[14:47:12] [Server thread\/INFO]: Done (13.897s)! For help, type \"help\"" + } + ] + }, + { + "level": 6, + "time": null, + "prefix": "[14:47:12] [Server thread\/INFO]:", + "lines": [ + { + "number": 54, + "content": "[14:47:12] [Server thread\/INFO]: Timings Reset" + } + ] + }, + { + "level": 6, + "time": null, + "prefix": "[14:47:29] [Server thread\/INFO]:", + "lines": [ + { + "number": 55, + "content": "[14:47:29] [Server thread\/INFO]: Stopping the server" + } + ] + }, + { + "level": 6, + "time": null, + "prefix": "[14:47:29] [Server thread\/INFO]:", + "lines": [ + { + "number": 56, + "content": "[14:47:29] [Server thread\/INFO]: Stopping server" + } + ] + }, + { + "level": 6, + "time": null, + "prefix": "[14:47:29] [Server thread\/INFO]:", + "lines": [ + { + "number": 57, + "content": "[14:47:29] [Server thread\/INFO]: Saving players" + } + ] + }, + { + "level": 6, + "time": null, + "prefix": "[14:47:29] [Server thread\/INFO]:", + "lines": [ + { + "number": 58, + "content": "[14:47:29] [Server thread\/INFO]: Saving worlds" + } + ] + }, + { + "level": 6, + "time": null, + "prefix": "[14:47:29] [Server thread\/INFO]:", + "lines": [ + { + "number": 59, + "content": "[14:47:29] [Server thread\/INFO]: Saving chunks for level 'ServerLevel[world]'\/minecraft:overworld" + } + ] + }, + { + "level": 6, + "time": null, + "prefix": "[14:47:29] [Server thread\/INFO]:", + "lines": [ + { + "number": 60, + "content": "[14:47:29] [Server thread\/INFO]: [ChunkHolderManager] Waiting 60s for chunk system to halt for world 'world'" + } + ] + }, + { + "level": 6, + "time": null, + "prefix": "[14:47:29] [Server thread\/INFO]:", + "lines": [ + { + "number": 61, + "content": "[14:47:29] [Server thread\/INFO]: [ChunkHolderManager] Halted chunk system for world 'world'" + } + ] + }, + { + "level": 6, + "time": null, + "prefix": "[14:47:29] [Server thread\/INFO]:", + "lines": [ + { + "number": 62, + "content": "[14:47:29] [Server thread\/INFO]: [ChunkHolderManager] Saving all chunkholders for world 'world'" + } + ] + }, + { + "level": 6, + "time": null, + "prefix": "[14:47:30] [Server thread\/INFO]:", + "lines": [ + { + "number": 63, + "content": "[14:47:30] [Server thread\/INFO]: [ChunkHolderManager] Saved 49 block chunks, 49 entity chunks, 0 poi chunks in world 'world' in 0.39s" + } + ] + }, + { + "level": 6, + "time": null, + "prefix": "[14:47:30] [Server thread\/INFO]:", + "lines": [ + { + "number": 64, + "content": "[14:47:30] [Server thread\/INFO]: Saving chunks for level 'ServerLevel[world_nether]'\/minecraft:the_nether" + } + ] + }, + { + "level": 6, + "time": null, + "prefix": "[14:47:30] [Server thread\/INFO]:", + "lines": [ + { + "number": 65, + "content": "[14:47:30] [Server thread\/INFO]: [ChunkHolderManager] Waiting 60s for chunk system to halt for world 'world_nether'" + } + ] + }, + { + "level": 6, + "time": null, + "prefix": "[14:47:30] [Server thread\/INFO]:", + "lines": [ + { + "number": 66, + "content": "[14:47:30] [Server thread\/INFO]: [ChunkHolderManager] Halted chunk system for world 'world_nether'" + } + ] + }, + { + "level": 6, + "time": null, + "prefix": "[14:47:30] [Server thread\/INFO]:", + "lines": [ + { + "number": 67, + "content": "[14:47:30] [Server thread\/INFO]: [ChunkHolderManager] Saving all chunkholders for world 'world_nether'" + } + ] + }, + { + "level": 6, + "time": null, + "prefix": "[14:47:30] [Server thread\/INFO]:", + "lines": [ + { + "number": 68, + "content": "[14:47:30] [Server thread\/INFO]: [ChunkHolderManager] Saved 49 block chunks, 49 entity chunks, 0 poi chunks in world 'world_nether' in 0.08s" + } + ] + }, + { + "level": 6, + "time": null, + "prefix": "[14:47:30] [Server thread\/INFO]:", + "lines": [ + { + "number": 69, + "content": "[14:47:30] [Server thread\/INFO]: Saving chunks for level 'ServerLevel[world_the_end]'\/minecraft:the_end" + } + ] + }, + { + "level": 6, + "time": null, + "prefix": "[14:47:30] [Server thread\/INFO]:", + "lines": [ + { + "number": 70, + "content": "[14:47:30] [Server thread\/INFO]: [ChunkHolderManager] Waiting 60s for chunk system to halt for world 'world_the_end'" + } + ] + }, + { + "level": 6, + "time": null, + "prefix": "[14:47:30] [Server thread\/INFO]:", + "lines": [ + { + "number": 71, + "content": "[14:47:30] [Server thread\/INFO]: [ChunkHolderManager] Halted chunk system for world 'world_the_end'" + } + ] + }, + { + "level": 6, + "time": null, + "prefix": "[14:47:30] [Server thread\/INFO]:", + "lines": [ + { + "number": 72, + "content": "[14:47:30] [Server thread\/INFO]: [ChunkHolderManager] Saving all chunkholders for world 'world_the_end'" + } + ] + }, + { + "level": 6, + "time": null, + "prefix": "[14:47:30] [Server thread\/INFO]:", + "lines": [ + { + "number": 73, + "content": "[14:47:30] [Server thread\/INFO]: [ChunkHolderManager] Saved 49 block chunks, 49 entity chunks, 0 poi chunks in world 'world_the_end' in 0.03s" + } + ] + }, + { + "level": 6, + "time": null, + "prefix": "[14:47:30] [Server thread\/INFO]:", + "lines": [ + { + "number": 74, + "content": "[14:47:30] [Server thread\/INFO]: ThreadedAnvilChunkStorage (world): All chunks are saved" + } + ] + }, + { + "level": 6, + "time": null, + "prefix": "[14:47:30] [Server thread\/INFO]:", + "lines": [ + { + "number": 75, + "content": "[14:47:30] [Server thread\/INFO]: ThreadedAnvilChunkStorage (DIM-1): All chunks are saved" + } + ] + }, + { + "level": 6, + "time": null, + "prefix": "[14:47:30] [Server thread\/INFO]:", + "lines": [ + { + "number": 76, + "content": "[14:47:30] [Server thread\/INFO]: ThreadedAnvilChunkStorage (DIM1): All chunks are saved" + } + ] + }, + { + "level": 6, + "time": null, + "prefix": "[14:47:30] [Server thread\/INFO]:", + "lines": [ + { + "number": 77, + "content": "[14:47:30] [Server thread\/INFO]: ThreadedAnvilChunkStorage: All dimensions are saved" + } + ] + } + ], + "analysis": { + "problems": [ + { + "message": "The plugin 'mclogs-bukkit-dev' has an API version specified that is lower than the minimum allowed version.", + "counter": 1, + "entry": { + "level": 3, + "time": null, + "prefix": "[14:47:09] [Server thread\/ERROR]:", + "lines": [ + { + "number": 25, + "content": "[14:47:09] [Server thread\/ERROR]: [ModernPluginLoadingStrategy] Could not load plugin 'mclogs-bukkit-dev.jar' in folder 'plugins\/.paper-remapped'" + }, + { + "number": 26, + "content": "org.bukkit.plugin.InvalidPluginException: Plugin API version 1.20 is lower than the minimum allowed version. Please update or replace it." + }, + { + "number": 27, + "content": "\tat org.bukkit.craftbukkit.util.CraftMagicNumbers.checkSupported(CraftMagicNumbers.java:374) ~[paper-1.21.1.jar:1.21.1-116-e7e1ab5]" + }, + { + "number": 28, + "content": "\tat io.papermc.paper.plugin.provider.type.spigot.SpigotPluginProvider.createInstance(SpigotPluginProvider.java:121) ~[paper-1.21.1.jar:1.21.1-116-e7e1ab5]" + }, + { + "number": 29, + "content": "\tat io.papermc.paper.plugin.provider.type.spigot.SpigotPluginProvider.createInstance(SpigotPluginProvider.java:35) ~[paper-1.21.1.jar:1.21.1-116-e7e1ab5]" + }, + { + "number": 30, + "content": "\tat io.papermc.paper.plugin.entrypoint.strategy.modern.ModernPluginLoadingStrategy.loadProviders(ModernPluginLoadingStrategy.java:116) ~[paper-1.21.1.jar:1.21.1-116-e7e1ab5]" + }, + { + "number": 31, + "content": "\tat io.papermc.paper.plugin.storage.SimpleProviderStorage.enter(SimpleProviderStorage.java:38) ~[paper-1.21.1.jar:1.21.1-116-e7e1ab5]" + }, + { + "number": 32, + "content": "\tat io.papermc.paper.plugin.entrypoint.LaunchEntryPointHandler.enter(LaunchEntryPointHandler.java:40) ~[paper-1.21.1.jar:1.21.1-116-e7e1ab5]" + }, + { + "number": 33, + "content": "\tat org.bukkit.craftbukkit.CraftServer.loadPlugins(CraftServer.java:546) ~[paper-1.21.1.jar:1.21.1-116-e7e1ab5]" + }, + { + "number": 34, + "content": "\tat net.minecraft.server.dedicated.DedicatedServer.initServer(DedicatedServer.java:292) ~[paper-1.21.1.jar:1.21.1-116-e7e1ab5]" + }, + { + "number": 35, + "content": "\tat net.minecraft.server.MinecraftServer.runServer(MinecraftServer.java:1214) ~[paper-1.21.1.jar:1.21.1-116-e7e1ab5]" + }, + { + "number": 36, + "content": "\tat net.minecraft.server.MinecraftServer.lambda$spin$0(MinecraftServer.java:329) ~[paper-1.21.1.jar:1.21.1-116-e7e1ab5]" + }, + { + "number": 37, + "content": "\tat java.base\/java.lang.Thread.run(Thread.java:1583) ~[?:?]" + } + ] + }, + "solutions": [ + { + "message": "Install a different version of the plugin 'mclogs-bukkit-dev'." + }, + { + "message": "Delete the file 'plugins\/mclogs-bukkit-dev.jar'." + }, + { + "message": "Change 'minimum-api' in bukkit.yml to 1.20, lower or even 'none'." + } + ] + } + ], + "information": [ + { + "message": "Minecraft version: 1.21.1", + "counter": 1, + "entry": { + "level": 6, + "time": null, + "prefix": "[14:47:06] [Server thread\/INFO]:", + "lines": [ + { + "number": 12, + "content": "[14:47:06] [Server thread\/INFO]: Starting minecraft server version 1.21.1" + } + ] + }, + "label": "Minecraft version", + "value": "1.21.1" + } + ] + } +} \ No newline at end of file diff --git a/test/data/Vanilla/Bukkit/Paper/paper-plugin-api-version-too-low-1-21-1.log b/test/data/Vanilla/Bukkit/Paper/paper-plugin-api-version-too-low-1-21-1.log new file mode 100644 index 00000000..3e5222e0 --- /dev/null +++ b/test/data/Vanilla/Bukkit/Paper/paper-plugin-api-version-too-low-1-21-1.log @@ -0,0 +1,77 @@ +[14:46:58] [ServerMain/INFO]: [bootstrap] Running Java 21 (OpenJDK 64-Bit Server VM 21.0.3+9-LTS; Eclipse Adoptium Temurin-21.0.3+9) on Linux 5.15.0-117-generic (amd64) +[14:46:58] [ServerMain/INFO]: [bootstrap] Loading Paper 1.21.1-116-master@e7e1ab5 (2024-09-30T23:17:54Z) for Minecraft 1.21.1 +[14:46:59] [ServerMain/INFO]: [PluginInitializerManager] Initializing plugins... +[14:46:59] [Paper Plugin Remapper Thread - 2/INFO]: [PluginRemapper] Remapping plugin 'plugins/mclogs-bukkit-dev.jar'... +[14:47:00] [Paper Plugin Remapper Thread - 2/INFO]: [PluginRemapper] Done remapping plugin 'plugins/mclogs-bukkit-dev.jar' in 991ms. +[14:47:00] [ServerMain/INFO]: [PluginInitializerManager] Initialized 1 plugin +[14:47:00] [ServerMain/INFO]: [PluginInitializerManager] Bukkit plugins (1): + - Mclogs (dev) +[14:47:04] [ServerMain/INFO]: Environment: Environment[sessionHost=https://sessionserver.mojang.com, servicesHost=https://api.minecraftservices.com, name=PROD] +[14:47:06] [ServerMain/INFO]: Loaded 1290 recipes +[14:47:06] [ServerMain/INFO]: Loaded 1399 advancements +[14:47:06] [Server thread/INFO]: Starting minecraft server version 1.21.1 +[14:47:06] [Server thread/INFO]: Loading properties +[14:47:06] [Server thread/INFO]: This server is running Paper version 1.21.1-116-master@e7e1ab5 (2024-09-30T23:17:54Z) (Implementing API version 1.21.1-R0.1-SNAPSHOT) +[14:47:07] [Server thread/INFO]: [spark] This server bundles the spark profiler. For more information please visit https://docs.papermc.io/paper/profiling +[14:47:07] [Server thread/INFO]: Server Ping Player Sample Count: 12 +[14:47:07] [Server thread/INFO]: Using 4 threads for Netty based IO +[14:47:08] [Server thread/INFO]: [ChunkTaskScheduler] Chunk system is using 1 I/O threads, 1 worker threads, and population gen parallelism of 1 threads +[14:47:08] [Server thread/INFO]: Default game type: SURVIVAL +[14:47:08] [Server thread/INFO]: Generating keypair +[14:47:08] [Server thread/INFO]: Starting Minecraft server on *:16754 +[14:47:09] [Server thread/INFO]: Using epoll channel type +[14:47:09] [Server thread/INFO]: Paper: Using libdeflate (Linux x86_64) compression from Velocity. +[14:47:09] [Server thread/INFO]: Paper: Using OpenSSL 3.x.x (Linux x86_64) cipher from Velocity. +[14:47:09] [Server thread/ERROR]: [ModernPluginLoadingStrategy] Could not load plugin 'mclogs-bukkit-dev.jar' in folder 'plugins/.paper-remapped' +org.bukkit.plugin.InvalidPluginException: Plugin API version 1.20 is lower than the minimum allowed version. Please update or replace it. + at org.bukkit.craftbukkit.util.CraftMagicNumbers.checkSupported(CraftMagicNumbers.java:374) ~[paper-1.21.1.jar:1.21.1-116-e7e1ab5] + at io.papermc.paper.plugin.provider.type.spigot.SpigotPluginProvider.createInstance(SpigotPluginProvider.java:121) ~[paper-1.21.1.jar:1.21.1-116-e7e1ab5] + at io.papermc.paper.plugin.provider.type.spigot.SpigotPluginProvider.createInstance(SpigotPluginProvider.java:35) ~[paper-1.21.1.jar:1.21.1-116-e7e1ab5] + at io.papermc.paper.plugin.entrypoint.strategy.modern.ModernPluginLoadingStrategy.loadProviders(ModernPluginLoadingStrategy.java:116) ~[paper-1.21.1.jar:1.21.1-116-e7e1ab5] + at io.papermc.paper.plugin.storage.SimpleProviderStorage.enter(SimpleProviderStorage.java:38) ~[paper-1.21.1.jar:1.21.1-116-e7e1ab5] + at io.papermc.paper.plugin.entrypoint.LaunchEntryPointHandler.enter(LaunchEntryPointHandler.java:40) ~[paper-1.21.1.jar:1.21.1-116-e7e1ab5] + at org.bukkit.craftbukkit.CraftServer.loadPlugins(CraftServer.java:546) ~[paper-1.21.1.jar:1.21.1-116-e7e1ab5] + at net.minecraft.server.dedicated.DedicatedServer.initServer(DedicatedServer.java:292) ~[paper-1.21.1.jar:1.21.1-116-e7e1ab5] + at net.minecraft.server.MinecraftServer.runServer(MinecraftServer.java:1214) ~[paper-1.21.1.jar:1.21.1-116-e7e1ab5] + at net.minecraft.server.MinecraftServer.lambda$spin$0(MinecraftServer.java:329) ~[paper-1.21.1.jar:1.21.1-116-e7e1ab5] + at java.base/java.lang.Thread.run(Thread.java:1583) ~[?:?] +[14:47:09] [Server thread/INFO]: Server permissions file permissions.yml is empty, ignoring it +[14:47:09] [Server thread/INFO]: Preparing level "world" +[14:47:09] [Server thread/INFO]: Preparing start region for dimension minecraft:overworld +[14:47:11] [Server thread/INFO]: Time elapsed: 1513 ms +[14:47:11] [Server thread/INFO]: Preparing start region for dimension minecraft:the_nether +[14:47:11] [Server thread/INFO]: Time elapsed: 203 ms +[14:47:11] [Server thread/INFO]: Preparing start region for dimension minecraft:the_end +[14:47:11] [Server thread/INFO]: Time elapsed: 208 ms +[14:47:11] [Server thread/INFO]: [spark] Starting background profiler... +[14:47:12] [Server thread/INFO]: Done preparing level "world" (3.015s) +[14:47:12] [Server thread/INFO]: Starting GS4 status listener +[14:47:12] [Server thread/INFO]: Thread Query Listener started +[14:47:12] [Query Listener #1/INFO]: Query running on 0.0.0.0:9898 +[14:47:12] [Server thread/INFO]: JMX monitoring enabled +[14:47:12] [Server thread/INFO]: Running delayed init tasks +[14:47:12] [Server thread/INFO]: Done (13.897s)! For help, type "help" +[14:47:12] [Server thread/INFO]: Timings Reset +[14:47:29] [Server thread/INFO]: Stopping the server +[14:47:29] [Server thread/INFO]: Stopping server +[14:47:29] [Server thread/INFO]: Saving players +[14:47:29] [Server thread/INFO]: Saving worlds +[14:47:29] [Server thread/INFO]: Saving chunks for level 'ServerLevel[world]'/minecraft:overworld +[14:47:29] [Server thread/INFO]: [ChunkHolderManager] Waiting 60s for chunk system to halt for world 'world' +[14:47:29] [Server thread/INFO]: [ChunkHolderManager] Halted chunk system for world 'world' +[14:47:29] [Server thread/INFO]: [ChunkHolderManager] Saving all chunkholders for world 'world' +[14:47:30] [Server thread/INFO]: [ChunkHolderManager] Saved 49 block chunks, 49 entity chunks, 0 poi chunks in world 'world' in 0.39s +[14:47:30] [Server thread/INFO]: Saving chunks for level 'ServerLevel[world_nether]'/minecraft:the_nether +[14:47:30] [Server thread/INFO]: [ChunkHolderManager] Waiting 60s for chunk system to halt for world 'world_nether' +[14:47:30] [Server thread/INFO]: [ChunkHolderManager] Halted chunk system for world 'world_nether' +[14:47:30] [Server thread/INFO]: [ChunkHolderManager] Saving all chunkholders for world 'world_nether' +[14:47:30] [Server thread/INFO]: [ChunkHolderManager] Saved 49 block chunks, 49 entity chunks, 0 poi chunks in world 'world_nether' in 0.08s +[14:47:30] [Server thread/INFO]: Saving chunks for level 'ServerLevel[world_the_end]'/minecraft:the_end +[14:47:30] [Server thread/INFO]: [ChunkHolderManager] Waiting 60s for chunk system to halt for world 'world_the_end' +[14:47:30] [Server thread/INFO]: [ChunkHolderManager] Halted chunk system for world 'world_the_end' +[14:47:30] [Server thread/INFO]: [ChunkHolderManager] Saving all chunkholders for world 'world_the_end' +[14:47:30] [Server thread/INFO]: [ChunkHolderManager] Saved 49 block chunks, 49 entity chunks, 0 poi chunks in world 'world_the_end' in 0.03s +[14:47:30] [Server thread/INFO]: ThreadedAnvilChunkStorage (world): All chunks are saved +[14:47:30] [Server thread/INFO]: ThreadedAnvilChunkStorage (DIM-1): All chunks are saved +[14:47:30] [Server thread/INFO]: ThreadedAnvilChunkStorage (DIM1): All chunks are saved +[14:47:30] [Server thread/INFO]: ThreadedAnvilChunkStorage: All dimensions are saved \ No newline at end of file diff --git a/test/data/Vanilla/Bukkit/Paper/paper-plugin-dependency-1-18-2-duplicate.json b/test/data/Vanilla/Bukkit/Paper/paper-plugin-dependency-1-18-2-duplicate.json index 2d35eff6..cbc16eb5 100644 --- a/test/data/Vanilla/Bukkit/Paper/paper-plugin-dependency-1-18-2-duplicate.json +++ b/test/data/Vanilla/Bukkit/Paper/paper-plugin-dependency-1-18-2-duplicate.json @@ -373,7 +373,7 @@ "analysis": { "problems": [ { - "message": "The plugin 'ViaBackwards-4.2.1' is missing the required plugin 'ViaVersion'.", + "message": "The plugin 'ViaBackwards' is missing the required plugin 'ViaVersion'.", "counter": 2, "entry": { "level": 3, @@ -416,10 +416,13 @@ }, "solutions": [ { - "message": "Install the plugin 'ViaVersion'." + "message": "Install a different version of the plugin 'ViaBackwards'." }, { "message": "Delete the file 'plugins\/ViaBackwards-4.2.1.jar'." + }, + { + "message": "Install the plugin 'ViaVersion'." } ] } diff --git a/test/data/Vanilla/Bukkit/Paper/paper-plugin-dependency-1-18-2.json b/test/data/Vanilla/Bukkit/Paper/paper-plugin-dependency-1-18-2.json index c8adcab8..b4e684e7 100644 --- a/test/data/Vanilla/Bukkit/Paper/paper-plugin-dependency-1-18-2.json +++ b/test/data/Vanilla/Bukkit/Paper/paper-plugin-dependency-1-18-2.json @@ -334,7 +334,7 @@ "analysis": { "problems": [ { - "message": "The plugin 'ViaBackwards-4.2.1' is missing the required plugin 'ViaVersion'.", + "message": "The plugin 'ViaBackwards' is missing the required plugin 'ViaVersion'.", "counter": 1, "entry": { "level": 3, @@ -377,10 +377,13 @@ }, "solutions": [ { - "message": "Install the plugin 'ViaVersion'." + "message": "Install a different version of the plugin 'ViaBackwards'." }, { "message": "Delete the file 'plugins\/ViaBackwards-4.2.1.jar'." + }, + { + "message": "Install the plugin 'ViaVersion'." } ] } diff --git a/test/data/Vanilla/Bukkit/Paper/paper-plugin-dependency-1-20-4.json b/test/data/Vanilla/Bukkit/Paper/paper-plugin-dependency-1-20-4.json index 32a78b14..4e32e9e6 100644 --- a/test/data/Vanilla/Bukkit/Paper/paper-plugin-dependency-1-20-4.json +++ b/test/data/Vanilla/Bukkit/Paper/paper-plugin-dependency-1-20-4.json @@ -471,7 +471,7 @@ "analysis": { "problems": [ { - "message": "The plugin 'worldguard-bukkit-7.0.9-dist' is missing the required plugin 'WorldEdit'.", + "message": "The plugin 'WorldGuard' is missing the required plugin 'WorldEdit'.", "counter": 1, "entry": { "level": 3, @@ -522,10 +522,13 @@ }, "solutions": [ { - "message": "Install the plugin 'WorldEdit'." + "message": "Install a different version of the plugin 'WorldGuard'." }, { "message": "Delete the file 'plugins\/worldguard-bukkit-7.0.9-dist.jar'." + }, + { + "message": "Install the plugin 'WorldEdit'." } ] } diff --git a/test/data/Vanilla/Bukkit/Paper/paper-plugin-dependency-1-21-1.json b/test/data/Vanilla/Bukkit/Paper/paper-plugin-dependency-1-21-1.json new file mode 100644 index 00000000..5c7570b5 --- /dev/null +++ b/test/data/Vanilla/Bukkit/Paper/paper-plugin-dependency-1-21-1.json @@ -0,0 +1,838 @@ +{ + "id": "paper\/server", + "name": "Paper", + "type": "Server Log", + "version": "1.21.1", + "title": "Paper 1.21.1 Server Log", + "entries": [ + { + "level": 6, + "time": null, + "prefix": "[19:03:01] [ServerMain\/INFO]:", + "lines": [ + { + "number": 1, + "content": "[19:03:01] [ServerMain\/INFO]: [bootstrap] Running Java 21 (OpenJDK 64-Bit Server VM 21.0.3+9-LTS; Eclipse Adoptium Temurin-21.0.3+9) on Linux 5.15.0-117-generic (amd64)" + } + ] + }, + { + "level": 6, + "time": null, + "prefix": "[19:03:01] [ServerMain\/INFO]:", + "lines": [ + { + "number": 2, + "content": "[19:03:01] [ServerMain\/INFO]: [bootstrap] Loading Paper 1.21.1-115-master@ba3c29b (2024-09-30T02:19:06Z) for Minecraft 1.21.1" + } + ] + }, + { + "level": 6, + "time": null, + "prefix": "[19:03:01] [ServerMain\/INFO]:", + "lines": [ + { + "number": 3, + "content": "[19:03:01] [ServerMain\/INFO]: [PluginInitializerManager] Initializing plugins..." + } + ] + }, + { + "level": 6, + "time": null, + "prefix": "[19:03:01] [Paper Plugin Remapper Thread - 2\/INFO]:", + "lines": [ + { + "number": 4, + "content": "[19:03:01] [Paper Plugin Remapper Thread - 2\/INFO]: [PluginRemapper] Remapping plugin 'plugins\/worldguard-bukkit-7.0.12-dist.jar'..." + } + ] + }, + { + "level": 6, + "time": null, + "prefix": "[19:03:02] [Paper Plugin Remapper Thread - 2\/INFO]:", + "lines": [ + { + "number": 5, + "content": "[19:03:02] [Paper Plugin Remapper Thread - 2\/INFO]: [PluginRemapper] Done remapping plugin 'plugins\/worldguard-bukkit-7.0.12-dist.jar' in 1581ms." + } + ] + }, + { + "level": 6, + "time": null, + "prefix": "[19:03:03] [ServerMain\/INFO]:", + "lines": [ + { + "number": 6, + "content": "[19:03:03] [ServerMain\/INFO]: [PluginInitializerManager] Initialized 1 plugin" + } + ] + }, + { + "level": 6, + "time": null, + "prefix": "[19:03:03] [ServerMain\/INFO]:", + "lines": [ + { + "number": 7, + "content": "[19:03:03] [ServerMain\/INFO]: [PluginInitializerManager] Bukkit plugins (1):" + }, + { + "number": 8, + "content": " - WorldGuard (7.0.12+829a4a4)" + } + ] + }, + { + "level": 6, + "time": null, + "prefix": "[19:03:07] [ServerMain\/INFO]:", + "lines": [ + { + "number": 9, + "content": "[19:03:07] [ServerMain\/INFO]: Environment: Environment[sessionHost=https:\/\/sessionserver.mojang.com, servicesHost=https:\/\/api.minecraftservices.com, name=PROD]" + } + ] + }, + { + "level": 6, + "time": null, + "prefix": "[19:03:08] [ServerMain\/INFO]:", + "lines": [ + { + "number": 10, + "content": "[19:03:08] [ServerMain\/INFO]: Loaded 1290 recipes" + } + ] + }, + { + "level": 6, + "time": null, + "prefix": "[19:03:09] [ServerMain\/INFO]:", + "lines": [ + { + "number": 11, + "content": "[19:03:09] [ServerMain\/INFO]: Loaded 1399 advancements" + } + ] + }, + { + "level": 6, + "time": null, + "prefix": "[19:03:09] [Server thread\/INFO]:", + "lines": [ + { + "number": 12, + "content": "[19:03:09] [Server thread\/INFO]: Starting minecraft server version 1.21.1" + } + ] + }, + { + "level": 6, + "time": null, + "prefix": "[19:03:09] [Server thread\/INFO]:", + "lines": [ + { + "number": 13, + "content": "[19:03:09] [Server thread\/INFO]: Loading properties" + } + ] + }, + { + "level": 6, + "time": null, + "prefix": "[19:03:09] [Server thread\/INFO]:", + "lines": [ + { + "number": 14, + "content": "[19:03:09] [Server thread\/INFO]: This server is running Paper version 1.21.1-115-master@ba3c29b (2024-09-30T02:19:06Z) (Implementing API version 1.21.1-R0.1-SNAPSHOT)" + } + ] + }, + { + "level": 6, + "time": null, + "prefix": "[19:03:10] [Server thread\/INFO]:", + "lines": [ + { + "number": 15, + "content": "[19:03:10] [Server thread\/INFO]: [spark] This server bundles the spark profiler. For more information please visit https:\/\/docs.papermc.io\/paper\/profiling" + } + ] + }, + { + "level": 6, + "time": null, + "prefix": "[19:03:10] [Server thread\/INFO]:", + "lines": [ + { + "number": 16, + "content": "[19:03:10] [Server thread\/INFO]: Server Ping Player Sample Count: 12" + } + ] + }, + { + "level": 6, + "time": null, + "prefix": "[19:03:10] [Server thread\/INFO]:", + "lines": [ + { + "number": 17, + "content": "[19:03:10] [Server thread\/INFO]: Using 4 threads for Netty based IO" + } + ] + }, + { + "level": 6, + "time": null, + "prefix": "[19:03:11] [Server thread\/INFO]:", + "lines": [ + { + "number": 18, + "content": "[19:03:11] [Server thread\/INFO]: [ChunkTaskScheduler] Chunk system is using 1 I\/O threads, 1 worker threads, and population gen parallelism of 1 threads" + } + ] + }, + { + "level": 6, + "time": null, + "prefix": "[19:03:11] [Server thread\/INFO]:", + "lines": [ + { + "number": 19, + "content": "[19:03:11] [Server thread\/INFO]: Default game type: SURVIVAL" + } + ] + }, + { + "level": 6, + "time": null, + "prefix": "[19:03:11] [Server thread\/INFO]:", + "lines": [ + { + "number": 20, + "content": "[19:03:11] [Server thread\/INFO]: Generating keypair" + } + ] + }, + { + "level": 6, + "time": null, + "prefix": "[19:03:11] [Server thread\/INFO]:", + "lines": [ + { + "number": 21, + "content": "[19:03:11] [Server thread\/INFO]: Starting Minecraft server on *:16754" + } + ] + }, + { + "level": 6, + "time": null, + "prefix": "[19:03:11] [Server thread\/INFO]:", + "lines": [ + { + "number": 22, + "content": "[19:03:11] [Server thread\/INFO]: Using epoll channel type" + } + ] + }, + { + "level": 6, + "time": null, + "prefix": "[19:03:11] [Server thread\/INFO]:", + "lines": [ + { + "number": 23, + "content": "[19:03:11] [Server thread\/INFO]: Paper: Using libdeflate (Linux x86_64) compression from Velocity." + } + ] + }, + { + "level": 6, + "time": null, + "prefix": "[19:03:11] [Server thread\/INFO]:", + "lines": [ + { + "number": 24, + "content": "[19:03:11] [Server thread\/INFO]: Paper: Using OpenSSL 3.x.x (Linux x86_64) cipher from Velocity." + } + ] + }, + { + "level": 3, + "time": null, + "prefix": "[19:03:11] [Server thread\/ERROR]:", + "lines": [ + { + "number": 25, + "content": "[19:03:11] [Server thread\/ERROR]: [ModernPluginLoadingStrategy] Could not load 'plugins\/.paper-remapped\/worldguard-bukkit-7.0.12-dist.jar' in 'plugins\/.paper-remapped'" + }, + { + "number": 26, + "content": "org.bukkit.plugin.UnknownDependencyException: Unknown\/missing dependency plugins: [WorldEdit]. Please download and install these plugins to run 'WorldGuard'." + }, + { + "number": 27, + "content": "\tat io.papermc.paper.plugin.entrypoint.strategy.modern.ModernPluginLoadingStrategy.loadProviders(ModernPluginLoadingStrategy.java:82) ~[paper-1.21.1.jar:1.21.1-115-ba3c29b]" + }, + { + "number": 28, + "content": "\tat io.papermc.paper.plugin.storage.SimpleProviderStorage.enter(SimpleProviderStorage.java:38) ~[paper-1.21.1.jar:1.21.1-115-ba3c29b]" + }, + { + "number": 29, + "content": "\tat io.papermc.paper.plugin.entrypoint.LaunchEntryPointHandler.enter(LaunchEntryPointHandler.java:40) ~[paper-1.21.1.jar:1.21.1-115-ba3c29b]" + }, + { + "number": 30, + "content": "\tat org.bukkit.craftbukkit.CraftServer.loadPlugins(CraftServer.java:546) ~[paper-1.21.1.jar:1.21.1-115-ba3c29b]" + }, + { + "number": 31, + "content": "\tat net.minecraft.server.dedicated.DedicatedServer.initServer(DedicatedServer.java:292) ~[paper-1.21.1.jar:1.21.1-115-ba3c29b]" + }, + { + "number": 32, + "content": "\tat net.minecraft.server.MinecraftServer.runServer(MinecraftServer.java:1214) ~[paper-1.21.1.jar:1.21.1-115-ba3c29b]" + }, + { + "number": 33, + "content": "\tat net.minecraft.server.MinecraftServer.lambda$spin$0(MinecraftServer.java:329) ~[paper-1.21.1.jar:1.21.1-115-ba3c29b]" + }, + { + "number": 34, + "content": "\tat java.base\/java.lang.Thread.run(Thread.java:1583) ~[?:?]" + } + ] + }, + { + "level": 6, + "time": null, + "prefix": "[19:03:11] [Server thread\/INFO]:", + "lines": [ + { + "number": 35, + "content": "[19:03:11] [Server thread\/INFO]: Server permissions file permissions.yml is empty, ignoring it" + } + ] + }, + { + "level": 6, + "time": null, + "prefix": "[19:03:11] [Server thread\/INFO]:", + "lines": [ + { + "number": 36, + "content": "[19:03:11] [Server thread\/INFO]: Preparing level \"world\"" + } + ] + }, + { + "level": 6, + "time": null, + "prefix": "[19:03:12] [Server thread\/INFO]:", + "lines": [ + { + "number": 37, + "content": "[19:03:12] [Server thread\/INFO]: Preparing start region for dimension minecraft:overworld" + } + ] + }, + { + "level": 6, + "time": null, + "prefix": "[19:03:13] [Server thread\/INFO]:", + "lines": [ + { + "number": 38, + "content": "[19:03:13] [Server thread\/INFO]: Time elapsed: 875 ms" + } + ] + }, + { + "level": 6, + "time": null, + "prefix": "[19:03:13] [Server thread\/INFO]:", + "lines": [ + { + "number": 39, + "content": "[19:03:13] [Server thread\/INFO]: Preparing start region for dimension minecraft:the_nether" + } + ] + }, + { + "level": 6, + "time": null, + "prefix": "[19:03:14] [Server thread\/INFO]:", + "lines": [ + { + "number": 40, + "content": "[19:03:14] [Server thread\/INFO]: Time elapsed: 947 ms" + } + ] + }, + { + "level": 6, + "time": null, + "prefix": "[19:03:14] [Server thread\/INFO]:", + "lines": [ + { + "number": 41, + "content": "[19:03:14] [Server thread\/INFO]: Preparing start region for dimension minecraft:the_end" + } + ] + }, + { + "level": 6, + "time": null, + "prefix": "[19:03:14] [Server thread\/INFO]:", + "lines": [ + { + "number": 42, + "content": "[19:03:14] [Server thread\/INFO]: Time elapsed: 159 ms" + } + ] + }, + { + "level": 6, + "time": null, + "prefix": "[19:03:14] [Server thread\/INFO]:", + "lines": [ + { + "number": 43, + "content": "[19:03:14] [Server thread\/INFO]: [spark] Starting background profiler..." + } + ] + }, + { + "level": 6, + "time": null, + "prefix": "[19:03:14] [Server thread\/INFO]:", + "lines": [ + { + "number": 44, + "content": "[19:03:14] [Server thread\/INFO]: Done preparing level \"world\" (2.869s)" + } + ] + }, + { + "level": 6, + "time": null, + "prefix": "[19:03:14] [Server thread\/INFO]:", + "lines": [ + { + "number": 45, + "content": "[19:03:14] [Server thread\/INFO]: Starting GS4 status listener" + } + ] + }, + { + "level": 6, + "time": null, + "prefix": "[19:03:14] [Server thread\/INFO]:", + "lines": [ + { + "number": 46, + "content": "[19:03:14] [Server thread\/INFO]: Thread Query Listener started" + } + ] + }, + { + "level": 6, + "time": null, + "prefix": "[19:03:14] [Query Listener #1\/INFO]:", + "lines": [ + { + "number": 47, + "content": "[19:03:14] [Query Listener #1\/INFO]: Query running on 0.0.0.0:9898" + } + ] + }, + { + "level": 6, + "time": null, + "prefix": "[19:03:14] [Server thread\/INFO]:", + "lines": [ + { + "number": 48, + "content": "[19:03:14] [Server thread\/INFO]: JMX monitoring enabled" + } + ] + }, + { + "level": 6, + "time": null, + "prefix": "[19:03:14] [Server thread\/INFO]:", + "lines": [ + { + "number": 49, + "content": "[19:03:14] [Server thread\/INFO]: Running delayed init tasks" + } + ] + }, + { + "level": 6, + "time": null, + "prefix": "[19:03:14] [Server thread\/INFO]:", + "lines": [ + { + "number": 50, + "content": "[19:03:14] [Server thread\/INFO]: Done (14.448s)! For help, type \"help\"" + } + ] + }, + { + "level": 6, + "time": null, + "prefix": "[19:03:14] [Server thread\/INFO]:", + "lines": [ + { + "number": 51, + "content": "[19:03:14] [Server thread\/INFO]: Timings Reset" + } + ] + }, + { + "level": 6, + "time": null, + "prefix": "[19:13:19] [Server thread\/INFO]:", + "lines": [ + { + "number": 52, + "content": "[19:13:19] [Server thread\/INFO]: Stopping the server" + } + ] + }, + { + "level": 6, + "time": null, + "prefix": "[19:13:19] [Server thread\/INFO]:", + "lines": [ + { + "number": 53, + "content": "[19:13:19] [Server thread\/INFO]: Stopping server" + } + ] + }, + { + "level": 6, + "time": null, + "prefix": "[19:13:19] [Server thread\/INFO]:", + "lines": [ + { + "number": 54, + "content": "[19:13:19] [Server thread\/INFO]: Saving players" + } + ] + }, + { + "level": 6, + "time": null, + "prefix": "[19:13:19] [Server thread\/INFO]:", + "lines": [ + { + "number": 55, + "content": "[19:13:19] [Server thread\/INFO]: Saving worlds" + } + ] + }, + { + "level": 6, + "time": null, + "prefix": "[19:13:19] [Server thread\/INFO]:", + "lines": [ + { + "number": 56, + "content": "[19:13:19] [Server thread\/INFO]: Saving chunks for level 'ServerLevel[world]'\/minecraft:overworld" + } + ] + }, + { + "level": 6, + "time": null, + "prefix": "[19:13:19] [Server thread\/INFO]:", + "lines": [ + { + "number": 57, + "content": "[19:13:19] [Server thread\/INFO]: [ChunkHolderManager] Waiting 60s for chunk system to halt for world 'world'" + } + ] + }, + { + "level": 6, + "time": null, + "prefix": "[19:13:19] [Server thread\/INFO]:", + "lines": [ + { + "number": 58, + "content": "[19:13:19] [Server thread\/INFO]: [ChunkHolderManager] Halted chunk system for world 'world'" + } + ] + }, + { + "level": 6, + "time": null, + "prefix": "[19:13:19] [Server thread\/INFO]:", + "lines": [ + { + "number": 59, + "content": "[19:13:19] [Server thread\/INFO]: [ChunkHolderManager] Saving all chunkholders for world 'world'" + } + ] + }, + { + "level": 6, + "time": null, + "prefix": "[19:13:19] [Server thread\/INFO]:", + "lines": [ + { + "number": 60, + "content": "[19:13:19] [Server thread\/INFO]: [ChunkHolderManager] Saved 0 block chunks, 0 entity chunks, 0 poi chunks in world 'world' in 0.00s" + } + ] + }, + { + "level": 6, + "time": null, + "prefix": "[19:13:19] [Server thread\/INFO]:", + "lines": [ + { + "number": 61, + "content": "[19:13:19] [Server thread\/INFO]: Saving chunks for level 'ServerLevel[world_nether]'\/minecraft:the_nether" + } + ] + }, + { + "level": 6, + "time": null, + "prefix": "[19:13:19] [Server thread\/INFO]:", + "lines": [ + { + "number": 62, + "content": "[19:13:19] [Server thread\/INFO]: [ChunkHolderManager] Waiting 60s for chunk system to halt for world 'world_nether'" + } + ] + }, + { + "level": 6, + "time": null, + "prefix": "[19:13:19] [Server thread\/INFO]:", + "lines": [ + { + "number": 63, + "content": "[19:13:19] [Server thread\/INFO]: [ChunkHolderManager] Halted chunk system for world 'world_nether'" + } + ] + }, + { + "level": 6, + "time": null, + "prefix": "[19:13:19] [Server thread\/INFO]:", + "lines": [ + { + "number": 64, + "content": "[19:13:19] [Server thread\/INFO]: [ChunkHolderManager] Saving all chunkholders for world 'world_nether'" + } + ] + }, + { + "level": 6, + "time": null, + "prefix": "[19:13:19] [Server thread\/INFO]:", + "lines": [ + { + "number": 65, + "content": "[19:13:19] [Server thread\/INFO]: [ChunkHolderManager] Saved 0 block chunks, 1 entity chunks, 0 poi chunks in world 'world_nether' in 0.00s" + } + ] + }, + { + "level": 6, + "time": null, + "prefix": "[19:13:19] [Server thread\/INFO]:", + "lines": [ + { + "number": 66, + "content": "[19:13:19] [Server thread\/INFO]: Saving chunks for level 'ServerLevel[world_the_end]'\/minecraft:the_end" + } + ] + }, + { + "level": 6, + "time": null, + "prefix": "[19:13:19] [Server thread\/INFO]:", + "lines": [ + { + "number": 67, + "content": "[19:13:19] [Server thread\/INFO]: [ChunkHolderManager] Waiting 60s for chunk system to halt for world 'world_the_end'" + } + ] + }, + { + "level": 6, + "time": null, + "prefix": "[19:13:19] [Server thread\/INFO]:", + "lines": [ + { + "number": 68, + "content": "[19:13:19] [Server thread\/INFO]: [ChunkHolderManager] Halted chunk system for world 'world_the_end'" + } + ] + }, + { + "level": 6, + "time": null, + "prefix": "[19:13:19] [Server thread\/INFO]:", + "lines": [ + { + "number": 69, + "content": "[19:13:19] [Server thread\/INFO]: [ChunkHolderManager] Saving all chunkholders for world 'world_the_end'" + } + ] + }, + { + "level": 6, + "time": null, + "prefix": "[19:13:19] [Server thread\/INFO]:", + "lines": [ + { + "number": 70, + "content": "[19:13:19] [Server thread\/INFO]: [ChunkHolderManager] Saved 0 block chunks, 10 entity chunks, 0 poi chunks in world 'world_the_end' in 0.01s" + } + ] + }, + { + "level": 6, + "time": null, + "prefix": "[19:13:19] [Server thread\/INFO]:", + "lines": [ + { + "number": 71, + "content": "[19:13:19] [Server thread\/INFO]: ThreadedAnvilChunkStorage (world): All chunks are saved" + } + ] + }, + { + "level": 6, + "time": null, + "prefix": "[19:13:19] [Server thread\/INFO]:", + "lines": [ + { + "number": 72, + "content": "[19:13:19] [Server thread\/INFO]: ThreadedAnvilChunkStorage (DIM-1): All chunks are saved" + } + ] + }, + { + "level": 6, + "time": null, + "prefix": "[19:13:19] [Server thread\/INFO]:", + "lines": [ + { + "number": 73, + "content": "[19:13:19] [Server thread\/INFO]: ThreadedAnvilChunkStorage (DIM1): All chunks are saved" + } + ] + }, + { + "level": 6, + "time": null, + "prefix": "[19:13:19] [Server thread\/INFO]:", + "lines": [ + { + "number": 74, + "content": "[19:13:19] [Server thread\/INFO]: ThreadedAnvilChunkStorage: All dimensions are saved" + } + ] + } + ], + "analysis": { + "problems": [ + { + "message": "The plugin 'WorldGuard' is missing the required plugin 'WorldEdit'.", + "counter": 1, + "entry": { + "level": 3, + "time": null, + "prefix": "[19:03:11] [Server thread\/ERROR]:", + "lines": [ + { + "number": 25, + "content": "[19:03:11] [Server thread\/ERROR]: [ModernPluginLoadingStrategy] Could not load 'plugins\/.paper-remapped\/worldguard-bukkit-7.0.12-dist.jar' in 'plugins\/.paper-remapped'" + }, + { + "number": 26, + "content": "org.bukkit.plugin.UnknownDependencyException: Unknown\/missing dependency plugins: [WorldEdit]. Please download and install these plugins to run 'WorldGuard'." + }, + { + "number": 27, + "content": "\tat io.papermc.paper.plugin.entrypoint.strategy.modern.ModernPluginLoadingStrategy.loadProviders(ModernPluginLoadingStrategy.java:82) ~[paper-1.21.1.jar:1.21.1-115-ba3c29b]" + }, + { + "number": 28, + "content": "\tat io.papermc.paper.plugin.storage.SimpleProviderStorage.enter(SimpleProviderStorage.java:38) ~[paper-1.21.1.jar:1.21.1-115-ba3c29b]" + }, + { + "number": 29, + "content": "\tat io.papermc.paper.plugin.entrypoint.LaunchEntryPointHandler.enter(LaunchEntryPointHandler.java:40) ~[paper-1.21.1.jar:1.21.1-115-ba3c29b]" + }, + { + "number": 30, + "content": "\tat org.bukkit.craftbukkit.CraftServer.loadPlugins(CraftServer.java:546) ~[paper-1.21.1.jar:1.21.1-115-ba3c29b]" + }, + { + "number": 31, + "content": "\tat net.minecraft.server.dedicated.DedicatedServer.initServer(DedicatedServer.java:292) ~[paper-1.21.1.jar:1.21.1-115-ba3c29b]" + }, + { + "number": 32, + "content": "\tat net.minecraft.server.MinecraftServer.runServer(MinecraftServer.java:1214) ~[paper-1.21.1.jar:1.21.1-115-ba3c29b]" + }, + { + "number": 33, + "content": "\tat net.minecraft.server.MinecraftServer.lambda$spin$0(MinecraftServer.java:329) ~[paper-1.21.1.jar:1.21.1-115-ba3c29b]" + }, + { + "number": 34, + "content": "\tat java.base\/java.lang.Thread.run(Thread.java:1583) ~[?:?]" + } + ] + }, + "solutions": [ + { + "message": "Install a different version of the plugin 'WorldGuard'." + }, + { + "message": "Delete the file 'plugins\/worldguard-bukkit-7.0.12-dist.jar'." + }, + { + "message": "Install the plugin 'WorldEdit'." + } + ] + } + ], + "information": [ + { + "message": "Minecraft version: 1.21.1", + "counter": 1, + "entry": { + "level": 6, + "time": null, + "prefix": "[19:03:09] [Server thread\/INFO]:", + "lines": [ + { + "number": 12, + "content": "[19:03:09] [Server thread\/INFO]: Starting minecraft server version 1.21.1" + } + ] + }, + "label": "Minecraft version", + "value": "1.21.1" + } + ] + } +} \ No newline at end of file diff --git a/test/data/Vanilla/Bukkit/Paper/paper-plugin-dependency-1-21-1.log b/test/data/Vanilla/Bukkit/Paper/paper-plugin-dependency-1-21-1.log new file mode 100644 index 00000000..c5b3614b --- /dev/null +++ b/test/data/Vanilla/Bukkit/Paper/paper-plugin-dependency-1-21-1.log @@ -0,0 +1,74 @@ +[19:03:01] [ServerMain/INFO]: [bootstrap] Running Java 21 (OpenJDK 64-Bit Server VM 21.0.3+9-LTS; Eclipse Adoptium Temurin-21.0.3+9) on Linux 5.15.0-117-generic (amd64) +[19:03:01] [ServerMain/INFO]: [bootstrap] Loading Paper 1.21.1-115-master@ba3c29b (2024-09-30T02:19:06Z) for Minecraft 1.21.1 +[19:03:01] [ServerMain/INFO]: [PluginInitializerManager] Initializing plugins... +[19:03:01] [Paper Plugin Remapper Thread - 2/INFO]: [PluginRemapper] Remapping plugin 'plugins/worldguard-bukkit-7.0.12-dist.jar'... +[19:03:02] [Paper Plugin Remapper Thread - 2/INFO]: [PluginRemapper] Done remapping plugin 'plugins/worldguard-bukkit-7.0.12-dist.jar' in 1581ms. +[19:03:03] [ServerMain/INFO]: [PluginInitializerManager] Initialized 1 plugin +[19:03:03] [ServerMain/INFO]: [PluginInitializerManager] Bukkit plugins (1): + - WorldGuard (7.0.12+829a4a4) +[19:03:07] [ServerMain/INFO]: Environment: Environment[sessionHost=https://sessionserver.mojang.com, servicesHost=https://api.minecraftservices.com, name=PROD] +[19:03:08] [ServerMain/INFO]: Loaded 1290 recipes +[19:03:09] [ServerMain/INFO]: Loaded 1399 advancements +[19:03:09] [Server thread/INFO]: Starting minecraft server version 1.21.1 +[19:03:09] [Server thread/INFO]: Loading properties +[19:03:09] [Server thread/INFO]: This server is running Paper version 1.21.1-115-master@ba3c29b (2024-09-30T02:19:06Z) (Implementing API version 1.21.1-R0.1-SNAPSHOT) +[19:03:10] [Server thread/INFO]: [spark] This server bundles the spark profiler. For more information please visit https://docs.papermc.io/paper/profiling +[19:03:10] [Server thread/INFO]: Server Ping Player Sample Count: 12 +[19:03:10] [Server thread/INFO]: Using 4 threads for Netty based IO +[19:03:11] [Server thread/INFO]: [ChunkTaskScheduler] Chunk system is using 1 I/O threads, 1 worker threads, and population gen parallelism of 1 threads +[19:03:11] [Server thread/INFO]: Default game type: SURVIVAL +[19:03:11] [Server thread/INFO]: Generating keypair +[19:03:11] [Server thread/INFO]: Starting Minecraft server on *:16754 +[19:03:11] [Server thread/INFO]: Using epoll channel type +[19:03:11] [Server thread/INFO]: Paper: Using libdeflate (Linux x86_64) compression from Velocity. +[19:03:11] [Server thread/INFO]: Paper: Using OpenSSL 3.x.x (Linux x86_64) cipher from Velocity. +[19:03:11] [Server thread/ERROR]: [ModernPluginLoadingStrategy] Could not load 'plugins/.paper-remapped/worldguard-bukkit-7.0.12-dist.jar' in 'plugins/.paper-remapped' +org.bukkit.plugin.UnknownDependencyException: Unknown/missing dependency plugins: [WorldEdit]. Please download and install these plugins to run 'WorldGuard'. + at io.papermc.paper.plugin.entrypoint.strategy.modern.ModernPluginLoadingStrategy.loadProviders(ModernPluginLoadingStrategy.java:82) ~[paper-1.21.1.jar:1.21.1-115-ba3c29b] + at io.papermc.paper.plugin.storage.SimpleProviderStorage.enter(SimpleProviderStorage.java:38) ~[paper-1.21.1.jar:1.21.1-115-ba3c29b] + at io.papermc.paper.plugin.entrypoint.LaunchEntryPointHandler.enter(LaunchEntryPointHandler.java:40) ~[paper-1.21.1.jar:1.21.1-115-ba3c29b] + at org.bukkit.craftbukkit.CraftServer.loadPlugins(CraftServer.java:546) ~[paper-1.21.1.jar:1.21.1-115-ba3c29b] + at net.minecraft.server.dedicated.DedicatedServer.initServer(DedicatedServer.java:292) ~[paper-1.21.1.jar:1.21.1-115-ba3c29b] + at net.minecraft.server.MinecraftServer.runServer(MinecraftServer.java:1214) ~[paper-1.21.1.jar:1.21.1-115-ba3c29b] + at net.minecraft.server.MinecraftServer.lambda$spin$0(MinecraftServer.java:329) ~[paper-1.21.1.jar:1.21.1-115-ba3c29b] + at java.base/java.lang.Thread.run(Thread.java:1583) ~[?:?] +[19:03:11] [Server thread/INFO]: Server permissions file permissions.yml is empty, ignoring it +[19:03:11] [Server thread/INFO]: Preparing level "world" +[19:03:12] [Server thread/INFO]: Preparing start region for dimension minecraft:overworld +[19:03:13] [Server thread/INFO]: Time elapsed: 875 ms +[19:03:13] [Server thread/INFO]: Preparing start region for dimension minecraft:the_nether +[19:03:14] [Server thread/INFO]: Time elapsed: 947 ms +[19:03:14] [Server thread/INFO]: Preparing start region for dimension minecraft:the_end +[19:03:14] [Server thread/INFO]: Time elapsed: 159 ms +[19:03:14] [Server thread/INFO]: [spark] Starting background profiler... +[19:03:14] [Server thread/INFO]: Done preparing level "world" (2.869s) +[19:03:14] [Server thread/INFO]: Starting GS4 status listener +[19:03:14] [Server thread/INFO]: Thread Query Listener started +[19:03:14] [Query Listener #1/INFO]: Query running on 0.0.0.0:9898 +[19:03:14] [Server thread/INFO]: JMX monitoring enabled +[19:03:14] [Server thread/INFO]: Running delayed init tasks +[19:03:14] [Server thread/INFO]: Done (14.448s)! For help, type "help" +[19:03:14] [Server thread/INFO]: Timings Reset +[19:13:19] [Server thread/INFO]: Stopping the server +[19:13:19] [Server thread/INFO]: Stopping server +[19:13:19] [Server thread/INFO]: Saving players +[19:13:19] [Server thread/INFO]: Saving worlds +[19:13:19] [Server thread/INFO]: Saving chunks for level 'ServerLevel[world]'/minecraft:overworld +[19:13:19] [Server thread/INFO]: [ChunkHolderManager] Waiting 60s for chunk system to halt for world 'world' +[19:13:19] [Server thread/INFO]: [ChunkHolderManager] Halted chunk system for world 'world' +[19:13:19] [Server thread/INFO]: [ChunkHolderManager] Saving all chunkholders for world 'world' +[19:13:19] [Server thread/INFO]: [ChunkHolderManager] Saved 0 block chunks, 0 entity chunks, 0 poi chunks in world 'world' in 0.00s +[19:13:19] [Server thread/INFO]: Saving chunks for level 'ServerLevel[world_nether]'/minecraft:the_nether +[19:13:19] [Server thread/INFO]: [ChunkHolderManager] Waiting 60s for chunk system to halt for world 'world_nether' +[19:13:19] [Server thread/INFO]: [ChunkHolderManager] Halted chunk system for world 'world_nether' +[19:13:19] [Server thread/INFO]: [ChunkHolderManager] Saving all chunkholders for world 'world_nether' +[19:13:19] [Server thread/INFO]: [ChunkHolderManager] Saved 0 block chunks, 1 entity chunks, 0 poi chunks in world 'world_nether' in 0.00s +[19:13:19] [Server thread/INFO]: Saving chunks for level 'ServerLevel[world_the_end]'/minecraft:the_end +[19:13:19] [Server thread/INFO]: [ChunkHolderManager] Waiting 60s for chunk system to halt for world 'world_the_end' +[19:13:19] [Server thread/INFO]: [ChunkHolderManager] Halted chunk system for world 'world_the_end' +[19:13:19] [Server thread/INFO]: [ChunkHolderManager] Saving all chunkholders for world 'world_the_end' +[19:13:19] [Server thread/INFO]: [ChunkHolderManager] Saved 0 block chunks, 10 entity chunks, 0 poi chunks in world 'world_the_end' in 0.01s +[19:13:19] [Server thread/INFO]: ThreadedAnvilChunkStorage (world): All chunks are saved +[19:13:19] [Server thread/INFO]: ThreadedAnvilChunkStorage (DIM-1): All chunks are saved +[19:13:19] [Server thread/INFO]: ThreadedAnvilChunkStorage (DIM1): All chunks are saved +[19:13:19] [Server thread/INFO]: ThreadedAnvilChunkStorage: All dimensions are saved \ No newline at end of file diff --git a/test/data/Vanilla/Bukkit/Paper/paper-plugin-dependency-1161.json b/test/data/Vanilla/Bukkit/Paper/paper-plugin-dependency-1161.json index abf01987..d64e12f3 100644 --- a/test/data/Vanilla/Bukkit/Paper/paper-plugin-dependency-1161.json +++ b/test/data/Vanilla/Bukkit/Paper/paper-plugin-dependency-1161.json @@ -432,10 +432,13 @@ }, "solutions": [ { - "message": "Install the plugin 'LuckPerms'." + "message": "Install a different version of the plugin 'LuckPermsChat-2.0.2'." }, { "message": "Delete the file 'plugins\/LuckPermsChat-2.0.2.jar'." + }, + { + "message": "Install the plugin 'LuckPerms'." } ] } diff --git a/test/data/Vanilla/Bukkit/Paper/paper-plugin-unsupported-class-version-1-16-5.json b/test/data/Vanilla/Bukkit/Paper/paper-plugin-unsupported-class-version-1-16-5.json index 3fb7aa4f..85d07875 100644 --- a/test/data/Vanilla/Bukkit/Paper/paper-plugin-unsupported-class-version-1-16-5.json +++ b/test/data/Vanilla/Bukkit/Paper/paper-plugin-unsupported-class-version-1-16-5.json @@ -570,6 +570,9 @@ ] }, "solutions": [ + { + "message": "Install a different version of the plugin 'Slimefun4-1027'." + }, { "message": "Delete the file 'plugins\/Slimefun4-1027.jar'." }, diff --git a/test/data/Vanilla/Bukkit/Paper/paper-plugin-unsupported-class-version-1-20-4.json b/test/data/Vanilla/Bukkit/Paper/paper-plugin-unsupported-class-version-1-20-4.json index 313fb702..eb27c44a 100644 --- a/test/data/Vanilla/Bukkit/Paper/paper-plugin-unsupported-class-version-1-20-4.json +++ b/test/data/Vanilla/Bukkit/Paper/paper-plugin-unsupported-class-version-1-20-4.json @@ -649,6 +649,9 @@ ] }, "solutions": [ + { + "message": "Install a different version of the plugin 'worldedit-bukkit-7.3.4-beta-01'." + }, { "message": "Delete the file 'plugins\/worldedit-bukkit-7.3.4-beta-01.jar'." }, diff --git a/test/data/Vanilla/Bukkit/Paper/paper-plugin-unsupported-class-version-1-21-1.json b/test/data/Vanilla/Bukkit/Paper/paper-plugin-unsupported-class-version-1-21-1.json new file mode 100644 index 00000000..b0bd5227 --- /dev/null +++ b/test/data/Vanilla/Bukkit/Paper/paper-plugin-unsupported-class-version-1-21-1.json @@ -0,0 +1,974 @@ +{ + "id": "paper\/server", + "name": "Paper", + "type": "Server Log", + "version": "1.21.1", + "title": "Paper 1.21.1 Server Log", + "entries": [ + { + "level": 6, + "time": null, + "prefix": "[13:02:51] [ServerMain\/INFO]:", + "lines": [ + { + "number": 1, + "content": "[13:02:51] [ServerMain\/INFO]: [bootstrap] Running Java 21 (OpenJDK 64-Bit Server VM 21.0.3+9-LTS; Eclipse Adoptium Temurin-21.0.3+9) on Linux 5.15.0-117-generic (amd64)" + } + ] + }, + { + "level": 6, + "time": null, + "prefix": "[13:02:51] [ServerMain\/INFO]:", + "lines": [ + { + "number": 2, + "content": "[13:02:51] [ServerMain\/INFO]: [bootstrap] Loading Paper 1.21.1-116-master@e7e1ab5 (2024-09-30T23:17:54Z) for Minecraft 1.21.1" + } + ] + }, + { + "level": 6, + "time": null, + "prefix": "[13:02:52] [ServerMain\/INFO]:", + "lines": [ + { + "number": 3, + "content": "[13:02:52] [ServerMain\/INFO]: [PluginInitializerManager] Initializing plugins..." + } + ] + }, + { + "level": 6, + "time": null, + "prefix": "[13:02:52] [Paper Plugin Remapper Thread - 2\/INFO]:", + "lines": [ + { + "number": 4, + "content": "[13:02:52] [Paper Plugin Remapper Thread - 2\/INFO]: [PluginRemapper] Remapping plugin 'plugins\/mclogs-bukkit-dev.jar'..." + } + ] + }, + { + "level": 6, + "time": null, + "prefix": "[13:02:53] [Paper Plugin Remapper Thread - 2\/INFO]:", + "lines": [ + { + "number": 5, + "content": "[13:02:53] [Paper Plugin Remapper Thread - 2\/INFO]: [PluginRemapper] Done remapping plugin 'plugins\/mclogs-bukkit-dev.jar' in 1015ms." + } + ] + }, + { + "level": 6, + "time": null, + "prefix": "[13:02:53] [ServerMain\/INFO]:", + "lines": [ + { + "number": 6, + "content": "[13:02:53] [ServerMain\/INFO]: [PluginInitializerManager] Initialized 1 plugin" + } + ] + }, + { + "level": 6, + "time": null, + "prefix": "[13:02:53] [ServerMain\/INFO]:", + "lines": [ + { + "number": 7, + "content": "[13:02:53] [ServerMain\/INFO]: [PluginInitializerManager] Bukkit plugins (1):" + }, + { + "number": 8, + "content": " - Mclogs (dev)" + } + ] + }, + { + "level": 6, + "time": null, + "prefix": "[13:02:57] [ServerMain\/INFO]:", + "lines": [ + { + "number": 9, + "content": "[13:02:57] [ServerMain\/INFO]: Environment: Environment[sessionHost=https:\/\/sessionserver.mojang.com, servicesHost=https:\/\/api.minecraftservices.com, name=PROD]" + } + ] + }, + { + "level": 6, + "time": null, + "prefix": "[13:02:58] [ServerMain\/INFO]:", + "lines": [ + { + "number": 10, + "content": "[13:02:58] [ServerMain\/INFO]: Loaded 1290 recipes" + } + ] + }, + { + "level": 6, + "time": null, + "prefix": "[13:02:58] [ServerMain\/INFO]:", + "lines": [ + { + "number": 11, + "content": "[13:02:58] [ServerMain\/INFO]: Loaded 1399 advancements" + } + ] + }, + { + "level": 6, + "time": null, + "prefix": "[13:02:59] [Server thread\/INFO]:", + "lines": [ + { + "number": 12, + "content": "[13:02:59] [Server thread\/INFO]: Starting minecraft server version 1.21.1" + } + ] + }, + { + "level": 6, + "time": null, + "prefix": "[13:02:59] [Server thread\/INFO]:", + "lines": [ + { + "number": 13, + "content": "[13:02:59] [Server thread\/INFO]: Loading properties" + } + ] + }, + { + "level": 6, + "time": null, + "prefix": "[13:02:59] [Server thread\/INFO]:", + "lines": [ + { + "number": 14, + "content": "[13:02:59] [Server thread\/INFO]: This server is running Paper version 1.21.1-116-master@e7e1ab5 (2024-09-30T23:17:54Z) (Implementing API version 1.21.1-R0.1-SNAPSHOT)" + } + ] + }, + { + "level": 6, + "time": null, + "prefix": "[13:02:59] [Server thread\/INFO]:", + "lines": [ + { + "number": 15, + "content": "[13:02:59] [Server thread\/INFO]: [spark] This server bundles the spark profiler. For more information please visit https:\/\/docs.papermc.io\/paper\/profiling" + } + ] + }, + { + "level": 6, + "time": null, + "prefix": "[13:02:59] [Server thread\/INFO]:", + "lines": [ + { + "number": 16, + "content": "[13:02:59] [Server thread\/INFO]: Server Ping Player Sample Count: 12" + } + ] + }, + { + "level": 6, + "time": null, + "prefix": "[13:02:59] [Server thread\/INFO]:", + "lines": [ + { + "number": 17, + "content": "[13:02:59] [Server thread\/INFO]: Using 4 threads for Netty based IO" + } + ] + }, + { + "level": 6, + "time": null, + "prefix": "[13:03:00] [Server thread\/INFO]:", + "lines": [ + { + "number": 18, + "content": "[13:03:00] [Server thread\/INFO]: [ChunkTaskScheduler] Chunk system is using 1 I\/O threads, 1 worker threads, and population gen parallelism of 1 threads" + } + ] + }, + { + "level": 6, + "time": null, + "prefix": "[13:03:01] [Server thread\/INFO]:", + "lines": [ + { + "number": 19, + "content": "[13:03:01] [Server thread\/INFO]: Default game type: SURVIVAL" + } + ] + }, + { + "level": 6, + "time": null, + "prefix": "[13:03:01] [Server thread\/INFO]:", + "lines": [ + { + "number": 20, + "content": "[13:03:01] [Server thread\/INFO]: Generating keypair" + } + ] + }, + { + "level": 6, + "time": null, + "prefix": "[13:03:01] [Server thread\/INFO]:", + "lines": [ + { + "number": 21, + "content": "[13:03:01] [Server thread\/INFO]: Starting Minecraft server on *:16754" + } + ] + }, + { + "level": 6, + "time": null, + "prefix": "[13:03:01] [Server thread\/INFO]:", + "lines": [ + { + "number": 22, + "content": "[13:03:01] [Server thread\/INFO]: Using epoll channel type" + } + ] + }, + { + "level": 6, + "time": null, + "prefix": "[13:03:01] [Server thread\/INFO]:", + "lines": [ + { + "number": 23, + "content": "[13:03:01] [Server thread\/INFO]: Paper: Using libdeflate (Linux x86_64) compression from Velocity." + } + ] + }, + { + "level": 6, + "time": null, + "prefix": "[13:03:01] [Server thread\/INFO]:", + "lines": [ + { + "number": 24, + "content": "[13:03:01] [Server thread\/INFO]: Paper: Using OpenSSL 3.x.x (Linux x86_64) cipher from Velocity." + } + ] + }, + { + "level": 3, + "time": null, + "prefix": "[13:03:01] [Server thread\/ERROR]:", + "lines": [ + { + "number": 25, + "content": "[13:03:01] [Server thread\/ERROR]: [ModernPluginLoadingStrategy] Could not load plugin 'mclogs-bukkit-dev.jar' in folder 'plugins\/.paper-remapped'" + }, + { + "number": 26, + "content": "org.bukkit.plugin.InvalidPluginException: java.lang.UnsupportedClassVersionError: gs\/mclo\/bukkit\/MclogsPlugin has been compiled by a more recent version of the Java Runtime (class file version 66.0), this version of the Java Runtime only recognizes class file versions up to 65.0" + }, + { + "number": 27, + "content": "\tat io.papermc.paper.plugin.provider.type.spigot.SpigotPluginProvider.createInstance(SpigotPluginProvider.java:129) ~[paper-1.21.1.jar:1.21.1-116-e7e1ab5]" + }, + { + "number": 28, + "content": "\tat io.papermc.paper.plugin.provider.type.spigot.SpigotPluginProvider.createInstance(SpigotPluginProvider.java:35) ~[paper-1.21.1.jar:1.21.1-116-e7e1ab5]" + }, + { + "number": 29, + "content": "\tat io.papermc.paper.plugin.entrypoint.strategy.modern.ModernPluginLoadingStrategy.loadProviders(ModernPluginLoadingStrategy.java:116) ~[paper-1.21.1.jar:1.21.1-116-e7e1ab5]" + }, + { + "number": 30, + "content": "\tat io.papermc.paper.plugin.storage.SimpleProviderStorage.enter(SimpleProviderStorage.java:38) ~[paper-1.21.1.jar:1.21.1-116-e7e1ab5]" + }, + { + "number": 31, + "content": "\tat io.papermc.paper.plugin.entrypoint.LaunchEntryPointHandler.enter(LaunchEntryPointHandler.java:40) ~[paper-1.21.1.jar:1.21.1-116-e7e1ab5]" + }, + { + "number": 32, + "content": "\tat org.bukkit.craftbukkit.CraftServer.loadPlugins(CraftServer.java:546) ~[paper-1.21.1.jar:1.21.1-116-e7e1ab5]" + }, + { + "number": 33, + "content": "\tat net.minecraft.server.dedicated.DedicatedServer.initServer(DedicatedServer.java:292) ~[paper-1.21.1.jar:1.21.1-116-e7e1ab5]" + }, + { + "number": 34, + "content": "\tat net.minecraft.server.MinecraftServer.runServer(MinecraftServer.java:1214) ~[paper-1.21.1.jar:1.21.1-116-e7e1ab5]" + }, + { + "number": 35, + "content": "\tat net.minecraft.server.MinecraftServer.lambda$spin$0(MinecraftServer.java:329) ~[paper-1.21.1.jar:1.21.1-116-e7e1ab5]" + }, + { + "number": 36, + "content": "\tat java.base\/java.lang.Thread.run(Thread.java:1583) ~[?:?]" + }, + { + "number": 37, + "content": "Caused by: java.lang.UnsupportedClassVersionError: gs\/mclo\/bukkit\/MclogsPlugin has been compiled by a more recent version of the Java Runtime (class file version 66.0), this version of the Java Runtime only recognizes class file versions up to 65.0" + }, + { + "number": 38, + "content": "\tat java.base\/java.lang.ClassLoader.defineClass1(Native Method) ~[?:?]" + }, + { + "number": 39, + "content": "\tat java.base\/java.lang.ClassLoader.defineClass(ClassLoader.java:1027) ~[?:?]" + }, + { + "number": 40, + "content": "\tat java.base\/java.security.SecureClassLoader.defineClass(SecureClassLoader.java:150) ~[?:?]" + }, + { + "number": 41, + "content": "\tat org.bukkit.plugin.java.PluginClassLoader.findClass(PluginClassLoader.java:243) ~[paper-mojangapi-1.21.1-R0.1-SNAPSHOT.jar:?]" + }, + { + "number": 42, + "content": "\tat java.base\/java.lang.ClassLoader.loadClass(ClassLoader.java:593) ~[?:?]" + }, + { + "number": 43, + "content": "\tat org.bukkit.plugin.java.PluginClassLoader.loadClass0(PluginClassLoader.java:169) ~[paper-mojangapi-1.21.1-R0.1-SNAPSHOT.jar:?]" + }, + { + "number": 44, + "content": "\tat org.bukkit.plugin.java.PluginClassLoader.loadClass(PluginClassLoader.java:164) ~[paper-mojangapi-1.21.1-R0.1-SNAPSHOT.jar:?]" + }, + { + "number": 45, + "content": "\tat java.base\/java.lang.ClassLoader.loadClass(ClassLoader.java:526) ~[?:?]" + }, + { + "number": 46, + "content": "\tat java.base\/java.lang.Class.forName0(Native Method) ~[?:?]" + }, + { + "number": 47, + "content": "\tat java.base\/java.lang.Class.forName(Class.java:534) ~[?:?]" + }, + { + "number": 48, + "content": "\tat java.base\/java.lang.Class.forName(Class.java:513) ~[?:?]" + }, + { + "number": 49, + "content": "\tat org.bukkit.plugin.java.PluginClassLoader.(PluginClassLoader.java:78) ~[paper-mojangapi-1.21.1-R0.1-SNAPSHOT.jar:?]" + }, + { + "number": 50, + "content": "\tat io.papermc.paper.plugin.provider.type.spigot.SpigotPluginProvider.createInstance(SpigotPluginProvider.java:125) ~[paper-1.21.1.jar:1.21.1-116-e7e1ab5]" + }, + { + "number": 51, + "content": "\t... 9 more" + } + ] + }, + { + "level": 6, + "time": null, + "prefix": "[13:03:01] [Server thread\/INFO]:", + "lines": [ + { + "number": 52, + "content": "[13:03:01] [Server thread\/INFO]: Server permissions file permissions.yml is empty, ignoring it" + } + ] + }, + { + "level": 6, + "time": null, + "prefix": "[13:03:01] [Server thread\/INFO]:", + "lines": [ + { + "number": 53, + "content": "[13:03:01] [Server thread\/INFO]: Preparing level \"world\"" + } + ] + }, + { + "level": 6, + "time": null, + "prefix": "[13:03:02] [Server thread\/INFO]:", + "lines": [ + { + "number": 54, + "content": "[13:03:02] [Server thread\/INFO]: Preparing start region for dimension minecraft:overworld" + } + ] + }, + { + "level": 6, + "time": null, + "prefix": "[13:03:03] [Server thread\/INFO]:", + "lines": [ + { + "number": 55, + "content": "[13:03:03] [Server thread\/INFO]: Time elapsed: 1387 ms" + } + ] + }, + { + "level": 6, + "time": null, + "prefix": "[13:03:03] [Server thread\/INFO]:", + "lines": [ + { + "number": 56, + "content": "[13:03:03] [Server thread\/INFO]: Preparing start region for dimension minecraft:the_nether" + } + ] + }, + { + "level": 6, + "time": null, + "prefix": "[13:03:03] [Server thread\/INFO]:", + "lines": [ + { + "number": 57, + "content": "[13:03:03] [Server thread\/INFO]: Time elapsed: 155 ms" + } + ] + }, + { + "level": 6, + "time": null, + "prefix": "[13:03:03] [Server thread\/INFO]:", + "lines": [ + { + "number": 58, + "content": "[13:03:03] [Server thread\/INFO]: Preparing start region for dimension minecraft:the_end" + } + ] + }, + { + "level": 6, + "time": null, + "prefix": "[13:03:03] [Server thread\/INFO]:", + "lines": [ + { + "number": 59, + "content": "[13:03:03] [Server thread\/INFO]: Time elapsed: 200 ms" + } + ] + }, + { + "level": 6, + "time": null, + "prefix": "[13:03:03] [Server thread\/INFO]:", + "lines": [ + { + "number": 60, + "content": "[13:03:03] [Server thread\/INFO]: [spark] Starting background profiler..." + } + ] + }, + { + "level": 6, + "time": null, + "prefix": "[13:03:04] [Server thread\/INFO]:", + "lines": [ + { + "number": 61, + "content": "[13:03:04] [Server thread\/INFO]: Done preparing level \"world\" (2.650s)" + } + ] + }, + { + "level": 6, + "time": null, + "prefix": "[13:03:04] [Server thread\/INFO]:", + "lines": [ + { + "number": 62, + "content": "[13:03:04] [Server thread\/INFO]: Starting GS4 status listener" + } + ] + }, + { + "level": 6, + "time": null, + "prefix": "[13:03:04] [Server thread\/INFO]:", + "lines": [ + { + "number": 63, + "content": "[13:03:04] [Server thread\/INFO]: Thread Query Listener started" + } + ] + }, + { + "level": 6, + "time": null, + "prefix": "[13:03:04] [Query Listener #1\/INFO]:", + "lines": [ + { + "number": 64, + "content": "[13:03:04] [Query Listener #1\/INFO]: Query running on 0.0.0.0:9898" + } + ] + }, + { + "level": 6, + "time": null, + "prefix": "[13:03:04] [Server thread\/INFO]:", + "lines": [ + { + "number": 65, + "content": "[13:03:04] [Server thread\/INFO]: JMX monitoring enabled" + } + ] + }, + { + "level": 6, + "time": null, + "prefix": "[13:03:04] [Server thread\/INFO]:", + "lines": [ + { + "number": 66, + "content": "[13:03:04] [Server thread\/INFO]: Running delayed init tasks" + } + ] + }, + { + "level": 6, + "time": null, + "prefix": "[13:03:04] [Server thread\/INFO]:", + "lines": [ + { + "number": 67, + "content": "[13:03:04] [Server thread\/INFO]: Done (12.908s)! For help, type \"help\"" + } + ] + }, + { + "level": 6, + "time": null, + "prefix": "[13:03:04] [Server thread\/INFO]:", + "lines": [ + { + "number": 68, + "content": "[13:03:04] [Server thread\/INFO]: Timings Reset" + } + ] + }, + { + "level": 6, + "time": null, + "prefix": "[13:03:21] [Server thread\/INFO]:", + "lines": [ + { + "number": 69, + "content": "[13:03:21] [Server thread\/INFO]: Stopping the server" + } + ] + }, + { + "level": 6, + "time": null, + "prefix": "[13:03:21] [Server thread\/INFO]:", + "lines": [ + { + "number": 70, + "content": "[13:03:21] [Server thread\/INFO]: Stopping server" + } + ] + }, + { + "level": 6, + "time": null, + "prefix": "[13:03:21] [Server thread\/INFO]:", + "lines": [ + { + "number": 71, + "content": "[13:03:21] [Server thread\/INFO]: Saving players" + } + ] + }, + { + "level": 6, + "time": null, + "prefix": "[13:03:21] [Server thread\/INFO]:", + "lines": [ + { + "number": 72, + "content": "[13:03:21] [Server thread\/INFO]: Saving worlds" + } + ] + }, + { + "level": 6, + "time": null, + "prefix": "[13:03:21] [Server thread\/INFO]:", + "lines": [ + { + "number": 73, + "content": "[13:03:21] [Server thread\/INFO]: Saving chunks for level 'ServerLevel[world]'\/minecraft:overworld" + } + ] + }, + { + "level": 6, + "time": null, + "prefix": "[13:03:21] [Server thread\/INFO]:", + "lines": [ + { + "number": 74, + "content": "[13:03:21] [Server thread\/INFO]: [ChunkHolderManager] Waiting 60s for chunk system to halt for world 'world'" + } + ] + }, + { + "level": 6, + "time": null, + "prefix": "[13:03:21] [Server thread\/INFO]:", + "lines": [ + { + "number": 75, + "content": "[13:03:21] [Server thread\/INFO]: [ChunkHolderManager] Halted chunk system for world 'world'" + } + ] + }, + { + "level": 6, + "time": null, + "prefix": "[13:03:21] [Server thread\/INFO]:", + "lines": [ + { + "number": 76, + "content": "[13:03:21] [Server thread\/INFO]: [ChunkHolderManager] Saving all chunkholders for world 'world'" + } + ] + }, + { + "level": 6, + "time": null, + "prefix": "[13:03:21] [Server thread\/INFO]:", + "lines": [ + { + "number": 77, + "content": "[13:03:21] [Server thread\/INFO]: [ChunkHolderManager] Saved 49 block chunks, 49 entity chunks, 0 poi chunks in world 'world' in 0.35s" + } + ] + }, + { + "level": 6, + "time": null, + "prefix": "[13:03:21] [Server thread\/INFO]:", + "lines": [ + { + "number": 78, + "content": "[13:03:21] [Server thread\/INFO]: Saving chunks for level 'ServerLevel[world_nether]'\/minecraft:the_nether" + } + ] + }, + { + "level": 6, + "time": null, + "prefix": "[13:03:21] [Server thread\/INFO]:", + "lines": [ + { + "number": 79, + "content": "[13:03:21] [Server thread\/INFO]: [ChunkHolderManager] Waiting 60s for chunk system to halt for world 'world_nether'" + } + ] + }, + { + "level": 6, + "time": null, + "prefix": "[13:03:21] [Server thread\/INFO]:", + "lines": [ + { + "number": 80, + "content": "[13:03:21] [Server thread\/INFO]: [ChunkHolderManager] Halted chunk system for world 'world_nether'" + } + ] + }, + { + "level": 6, + "time": null, + "prefix": "[13:03:21] [Server thread\/INFO]:", + "lines": [ + { + "number": 81, + "content": "[13:03:21] [Server thread\/INFO]: [ChunkHolderManager] Saving all chunkholders for world 'world_nether'" + } + ] + }, + { + "level": 6, + "time": null, + "prefix": "[13:03:21] [Server thread\/INFO]:", + "lines": [ + { + "number": 82, + "content": "[13:03:21] [Server thread\/INFO]: [ChunkHolderManager] Saved 49 block chunks, 49 entity chunks, 0 poi chunks in world 'world_nether' in 0.08s" + } + ] + }, + { + "level": 6, + "time": null, + "prefix": "[13:03:21] [Server thread\/INFO]:", + "lines": [ + { + "number": 83, + "content": "[13:03:21] [Server thread\/INFO]: Saving chunks for level 'ServerLevel[world_the_end]'\/minecraft:the_end" + } + ] + }, + { + "level": 6, + "time": null, + "prefix": "[13:03:21] [Server thread\/INFO]:", + "lines": [ + { + "number": 84, + "content": "[13:03:21] [Server thread\/INFO]: [ChunkHolderManager] Waiting 60s for chunk system to halt for world 'world_the_end'" + } + ] + }, + { + "level": 6, + "time": null, + "prefix": "[13:03:21] [Server thread\/INFO]:", + "lines": [ + { + "number": 85, + "content": "[13:03:21] [Server thread\/INFO]: [ChunkHolderManager] Halted chunk system for world 'world_the_end'" + } + ] + }, + { + "level": 6, + "time": null, + "prefix": "[13:03:21] [Server thread\/INFO]:", + "lines": [ + { + "number": 86, + "content": "[13:03:21] [Server thread\/INFO]: [ChunkHolderManager] Saving all chunkholders for world 'world_the_end'" + } + ] + }, + { + "level": 6, + "time": null, + "prefix": "[13:03:21] [Server thread\/INFO]:", + "lines": [ + { + "number": 87, + "content": "[13:03:21] [Server thread\/INFO]: [ChunkHolderManager] Saved 49 block chunks, 49 entity chunks, 0 poi chunks in world 'world_the_end' in 0.03s" + } + ] + }, + { + "level": 6, + "time": null, + "prefix": "[13:03:21] [Server thread\/INFO]:", + "lines": [ + { + "number": 88, + "content": "[13:03:21] [Server thread\/INFO]: ThreadedAnvilChunkStorage (world): All chunks are saved" + } + ] + }, + { + "level": 6, + "time": null, + "prefix": "[13:03:21] [Server thread\/INFO]:", + "lines": [ + { + "number": 89, + "content": "[13:03:21] [Server thread\/INFO]: ThreadedAnvilChunkStorage (DIM-1): All chunks are saved" + } + ] + }, + { + "level": 6, + "time": null, + "prefix": "[13:03:21] [Server thread\/INFO]:", + "lines": [ + { + "number": 90, + "content": "[13:03:21] [Server thread\/INFO]: ThreadedAnvilChunkStorage (DIM1): All chunks are saved" + } + ] + }, + { + "level": 6, + "time": null, + "prefix": "[13:03:21] [Server thread\/INFO]:", + "lines": [ + { + "number": 91, + "content": "[13:03:21] [Server thread\/INFO]: ThreadedAnvilChunkStorage: All dimensions are saved" + } + ] + } + ], + "analysis": { + "problems": [ + { + "message": "The plugin 'mclogs-bukkit-dev' requires Java version 22 or later to run.", + "counter": 1, + "entry": { + "level": 3, + "time": null, + "prefix": "[13:03:01] [Server thread\/ERROR]:", + "lines": [ + { + "number": 25, + "content": "[13:03:01] [Server thread\/ERROR]: [ModernPluginLoadingStrategy] Could not load plugin 'mclogs-bukkit-dev.jar' in folder 'plugins\/.paper-remapped'" + }, + { + "number": 26, + "content": "org.bukkit.plugin.InvalidPluginException: java.lang.UnsupportedClassVersionError: gs\/mclo\/bukkit\/MclogsPlugin has been compiled by a more recent version of the Java Runtime (class file version 66.0), this version of the Java Runtime only recognizes class file versions up to 65.0" + }, + { + "number": 27, + "content": "\tat io.papermc.paper.plugin.provider.type.spigot.SpigotPluginProvider.createInstance(SpigotPluginProvider.java:129) ~[paper-1.21.1.jar:1.21.1-116-e7e1ab5]" + }, + { + "number": 28, + "content": "\tat io.papermc.paper.plugin.provider.type.spigot.SpigotPluginProvider.createInstance(SpigotPluginProvider.java:35) ~[paper-1.21.1.jar:1.21.1-116-e7e1ab5]" + }, + { + "number": 29, + "content": "\tat io.papermc.paper.plugin.entrypoint.strategy.modern.ModernPluginLoadingStrategy.loadProviders(ModernPluginLoadingStrategy.java:116) ~[paper-1.21.1.jar:1.21.1-116-e7e1ab5]" + }, + { + "number": 30, + "content": "\tat io.papermc.paper.plugin.storage.SimpleProviderStorage.enter(SimpleProviderStorage.java:38) ~[paper-1.21.1.jar:1.21.1-116-e7e1ab5]" + }, + { + "number": 31, + "content": "\tat io.papermc.paper.plugin.entrypoint.LaunchEntryPointHandler.enter(LaunchEntryPointHandler.java:40) ~[paper-1.21.1.jar:1.21.1-116-e7e1ab5]" + }, + { + "number": 32, + "content": "\tat org.bukkit.craftbukkit.CraftServer.loadPlugins(CraftServer.java:546) ~[paper-1.21.1.jar:1.21.1-116-e7e1ab5]" + }, + { + "number": 33, + "content": "\tat net.minecraft.server.dedicated.DedicatedServer.initServer(DedicatedServer.java:292) ~[paper-1.21.1.jar:1.21.1-116-e7e1ab5]" + }, + { + "number": 34, + "content": "\tat net.minecraft.server.MinecraftServer.runServer(MinecraftServer.java:1214) ~[paper-1.21.1.jar:1.21.1-116-e7e1ab5]" + }, + { + "number": 35, + "content": "\tat net.minecraft.server.MinecraftServer.lambda$spin$0(MinecraftServer.java:329) ~[paper-1.21.1.jar:1.21.1-116-e7e1ab5]" + }, + { + "number": 36, + "content": "\tat java.base\/java.lang.Thread.run(Thread.java:1583) ~[?:?]" + }, + { + "number": 37, + "content": "Caused by: java.lang.UnsupportedClassVersionError: gs\/mclo\/bukkit\/MclogsPlugin has been compiled by a more recent version of the Java Runtime (class file version 66.0), this version of the Java Runtime only recognizes class file versions up to 65.0" + }, + { + "number": 38, + "content": "\tat java.base\/java.lang.ClassLoader.defineClass1(Native Method) ~[?:?]" + }, + { + "number": 39, + "content": "\tat java.base\/java.lang.ClassLoader.defineClass(ClassLoader.java:1027) ~[?:?]" + }, + { + "number": 40, + "content": "\tat java.base\/java.security.SecureClassLoader.defineClass(SecureClassLoader.java:150) ~[?:?]" + }, + { + "number": 41, + "content": "\tat org.bukkit.plugin.java.PluginClassLoader.findClass(PluginClassLoader.java:243) ~[paper-mojangapi-1.21.1-R0.1-SNAPSHOT.jar:?]" + }, + { + "number": 42, + "content": "\tat java.base\/java.lang.ClassLoader.loadClass(ClassLoader.java:593) ~[?:?]" + }, + { + "number": 43, + "content": "\tat org.bukkit.plugin.java.PluginClassLoader.loadClass0(PluginClassLoader.java:169) ~[paper-mojangapi-1.21.1-R0.1-SNAPSHOT.jar:?]" + }, + { + "number": 44, + "content": "\tat org.bukkit.plugin.java.PluginClassLoader.loadClass(PluginClassLoader.java:164) ~[paper-mojangapi-1.21.1-R0.1-SNAPSHOT.jar:?]" + }, + { + "number": 45, + "content": "\tat java.base\/java.lang.ClassLoader.loadClass(ClassLoader.java:526) ~[?:?]" + }, + { + "number": 46, + "content": "\tat java.base\/java.lang.Class.forName0(Native Method) ~[?:?]" + }, + { + "number": 47, + "content": "\tat java.base\/java.lang.Class.forName(Class.java:534) ~[?:?]" + }, + { + "number": 48, + "content": "\tat java.base\/java.lang.Class.forName(Class.java:513) ~[?:?]" + }, + { + "number": 49, + "content": "\tat org.bukkit.plugin.java.PluginClassLoader.(PluginClassLoader.java:78) ~[paper-mojangapi-1.21.1-R0.1-SNAPSHOT.jar:?]" + }, + { + "number": 50, + "content": "\tat io.papermc.paper.plugin.provider.type.spigot.SpigotPluginProvider.createInstance(SpigotPluginProvider.java:125) ~[paper-1.21.1.jar:1.21.1-116-e7e1ab5]" + }, + { + "number": 51, + "content": "\t... 9 more" + } + ] + }, + "solutions": [ + { + "message": "Install a different version of the plugin 'mclogs-bukkit-dev'." + }, + { + "message": "Delete the file 'plugins\/mclogs-bukkit-dev.jar'." + }, + { + "message": "Change your Java version to 22 or later." + } + ] + } + ], + "information": [ + { + "message": "Minecraft version: 1.21.1", + "counter": 1, + "entry": { + "level": 6, + "time": null, + "prefix": "[13:02:59] [Server thread\/INFO]:", + "lines": [ + { + "number": 12, + "content": "[13:02:59] [Server thread\/INFO]: Starting minecraft server version 1.21.1" + } + ] + }, + "label": "Minecraft version", + "value": "1.21.1" + } + ] + } +} \ No newline at end of file diff --git a/test/data/Vanilla/Bukkit/Paper/paper-plugin-unsupported-class-version-1-21-1.log b/test/data/Vanilla/Bukkit/Paper/paper-plugin-unsupported-class-version-1-21-1.log new file mode 100644 index 00000000..f2801957 --- /dev/null +++ b/test/data/Vanilla/Bukkit/Paper/paper-plugin-unsupported-class-version-1-21-1.log @@ -0,0 +1,91 @@ +[13:02:51] [ServerMain/INFO]: [bootstrap] Running Java 21 (OpenJDK 64-Bit Server VM 21.0.3+9-LTS; Eclipse Adoptium Temurin-21.0.3+9) on Linux 5.15.0-117-generic (amd64) +[13:02:51] [ServerMain/INFO]: [bootstrap] Loading Paper 1.21.1-116-master@e7e1ab5 (2024-09-30T23:17:54Z) for Minecraft 1.21.1 +[13:02:52] [ServerMain/INFO]: [PluginInitializerManager] Initializing plugins... +[13:02:52] [Paper Plugin Remapper Thread - 2/INFO]: [PluginRemapper] Remapping plugin 'plugins/mclogs-bukkit-dev.jar'... +[13:02:53] [Paper Plugin Remapper Thread - 2/INFO]: [PluginRemapper] Done remapping plugin 'plugins/mclogs-bukkit-dev.jar' in 1015ms. +[13:02:53] [ServerMain/INFO]: [PluginInitializerManager] Initialized 1 plugin +[13:02:53] [ServerMain/INFO]: [PluginInitializerManager] Bukkit plugins (1): + - Mclogs (dev) +[13:02:57] [ServerMain/INFO]: Environment: Environment[sessionHost=https://sessionserver.mojang.com, servicesHost=https://api.minecraftservices.com, name=PROD] +[13:02:58] [ServerMain/INFO]: Loaded 1290 recipes +[13:02:58] [ServerMain/INFO]: Loaded 1399 advancements +[13:02:59] [Server thread/INFO]: Starting minecraft server version 1.21.1 +[13:02:59] [Server thread/INFO]: Loading properties +[13:02:59] [Server thread/INFO]: This server is running Paper version 1.21.1-116-master@e7e1ab5 (2024-09-30T23:17:54Z) (Implementing API version 1.21.1-R0.1-SNAPSHOT) +[13:02:59] [Server thread/INFO]: [spark] This server bundles the spark profiler. For more information please visit https://docs.papermc.io/paper/profiling +[13:02:59] [Server thread/INFO]: Server Ping Player Sample Count: 12 +[13:02:59] [Server thread/INFO]: Using 4 threads for Netty based IO +[13:03:00] [Server thread/INFO]: [ChunkTaskScheduler] Chunk system is using 1 I/O threads, 1 worker threads, and population gen parallelism of 1 threads +[13:03:01] [Server thread/INFO]: Default game type: SURVIVAL +[13:03:01] [Server thread/INFO]: Generating keypair +[13:03:01] [Server thread/INFO]: Starting Minecraft server on *:16754 +[13:03:01] [Server thread/INFO]: Using epoll channel type +[13:03:01] [Server thread/INFO]: Paper: Using libdeflate (Linux x86_64) compression from Velocity. +[13:03:01] [Server thread/INFO]: Paper: Using OpenSSL 3.x.x (Linux x86_64) cipher from Velocity. +[13:03:01] [Server thread/ERROR]: [ModernPluginLoadingStrategy] Could not load plugin 'mclogs-bukkit-dev.jar' in folder 'plugins/.paper-remapped' +org.bukkit.plugin.InvalidPluginException: java.lang.UnsupportedClassVersionError: gs/mclo/bukkit/MclogsPlugin has been compiled by a more recent version of the Java Runtime (class file version 66.0), this version of the Java Runtime only recognizes class file versions up to 65.0 + at io.papermc.paper.plugin.provider.type.spigot.SpigotPluginProvider.createInstance(SpigotPluginProvider.java:129) ~[paper-1.21.1.jar:1.21.1-116-e7e1ab5] + at io.papermc.paper.plugin.provider.type.spigot.SpigotPluginProvider.createInstance(SpigotPluginProvider.java:35) ~[paper-1.21.1.jar:1.21.1-116-e7e1ab5] + at io.papermc.paper.plugin.entrypoint.strategy.modern.ModernPluginLoadingStrategy.loadProviders(ModernPluginLoadingStrategy.java:116) ~[paper-1.21.1.jar:1.21.1-116-e7e1ab5] + at io.papermc.paper.plugin.storage.SimpleProviderStorage.enter(SimpleProviderStorage.java:38) ~[paper-1.21.1.jar:1.21.1-116-e7e1ab5] + at io.papermc.paper.plugin.entrypoint.LaunchEntryPointHandler.enter(LaunchEntryPointHandler.java:40) ~[paper-1.21.1.jar:1.21.1-116-e7e1ab5] + at org.bukkit.craftbukkit.CraftServer.loadPlugins(CraftServer.java:546) ~[paper-1.21.1.jar:1.21.1-116-e7e1ab5] + at net.minecraft.server.dedicated.DedicatedServer.initServer(DedicatedServer.java:292) ~[paper-1.21.1.jar:1.21.1-116-e7e1ab5] + at net.minecraft.server.MinecraftServer.runServer(MinecraftServer.java:1214) ~[paper-1.21.1.jar:1.21.1-116-e7e1ab5] + at net.minecraft.server.MinecraftServer.lambda$spin$0(MinecraftServer.java:329) ~[paper-1.21.1.jar:1.21.1-116-e7e1ab5] + at java.base/java.lang.Thread.run(Thread.java:1583) ~[?:?] +Caused by: java.lang.UnsupportedClassVersionError: gs/mclo/bukkit/MclogsPlugin has been compiled by a more recent version of the Java Runtime (class file version 66.0), this version of the Java Runtime only recognizes class file versions up to 65.0 + at java.base/java.lang.ClassLoader.defineClass1(Native Method) ~[?:?] + at java.base/java.lang.ClassLoader.defineClass(ClassLoader.java:1027) ~[?:?] + at java.base/java.security.SecureClassLoader.defineClass(SecureClassLoader.java:150) ~[?:?] + at org.bukkit.plugin.java.PluginClassLoader.findClass(PluginClassLoader.java:243) ~[paper-mojangapi-1.21.1-R0.1-SNAPSHOT.jar:?] + at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:593) ~[?:?] + at org.bukkit.plugin.java.PluginClassLoader.loadClass0(PluginClassLoader.java:169) ~[paper-mojangapi-1.21.1-R0.1-SNAPSHOT.jar:?] + at org.bukkit.plugin.java.PluginClassLoader.loadClass(PluginClassLoader.java:164) ~[paper-mojangapi-1.21.1-R0.1-SNAPSHOT.jar:?] + at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:526) ~[?:?] + at java.base/java.lang.Class.forName0(Native Method) ~[?:?] + at java.base/java.lang.Class.forName(Class.java:534) ~[?:?] + at java.base/java.lang.Class.forName(Class.java:513) ~[?:?] + at org.bukkit.plugin.java.PluginClassLoader.(PluginClassLoader.java:78) ~[paper-mojangapi-1.21.1-R0.1-SNAPSHOT.jar:?] + at io.papermc.paper.plugin.provider.type.spigot.SpigotPluginProvider.createInstance(SpigotPluginProvider.java:125) ~[paper-1.21.1.jar:1.21.1-116-e7e1ab5] + ... 9 more +[13:03:01] [Server thread/INFO]: Server permissions file permissions.yml is empty, ignoring it +[13:03:01] [Server thread/INFO]: Preparing level "world" +[13:03:02] [Server thread/INFO]: Preparing start region for dimension minecraft:overworld +[13:03:03] [Server thread/INFO]: Time elapsed: 1387 ms +[13:03:03] [Server thread/INFO]: Preparing start region for dimension minecraft:the_nether +[13:03:03] [Server thread/INFO]: Time elapsed: 155 ms +[13:03:03] [Server thread/INFO]: Preparing start region for dimension minecraft:the_end +[13:03:03] [Server thread/INFO]: Time elapsed: 200 ms +[13:03:03] [Server thread/INFO]: [spark] Starting background profiler... +[13:03:04] [Server thread/INFO]: Done preparing level "world" (2.650s) +[13:03:04] [Server thread/INFO]: Starting GS4 status listener +[13:03:04] [Server thread/INFO]: Thread Query Listener started +[13:03:04] [Query Listener #1/INFO]: Query running on 0.0.0.0:9898 +[13:03:04] [Server thread/INFO]: JMX monitoring enabled +[13:03:04] [Server thread/INFO]: Running delayed init tasks +[13:03:04] [Server thread/INFO]: Done (12.908s)! For help, type "help" +[13:03:04] [Server thread/INFO]: Timings Reset +[13:03:21] [Server thread/INFO]: Stopping the server +[13:03:21] [Server thread/INFO]: Stopping server +[13:03:21] [Server thread/INFO]: Saving players +[13:03:21] [Server thread/INFO]: Saving worlds +[13:03:21] [Server thread/INFO]: Saving chunks for level 'ServerLevel[world]'/minecraft:overworld +[13:03:21] [Server thread/INFO]: [ChunkHolderManager] Waiting 60s for chunk system to halt for world 'world' +[13:03:21] [Server thread/INFO]: [ChunkHolderManager] Halted chunk system for world 'world' +[13:03:21] [Server thread/INFO]: [ChunkHolderManager] Saving all chunkholders for world 'world' +[13:03:21] [Server thread/INFO]: [ChunkHolderManager] Saved 49 block chunks, 49 entity chunks, 0 poi chunks in world 'world' in 0.35s +[13:03:21] [Server thread/INFO]: Saving chunks for level 'ServerLevel[world_nether]'/minecraft:the_nether +[13:03:21] [Server thread/INFO]: [ChunkHolderManager] Waiting 60s for chunk system to halt for world 'world_nether' +[13:03:21] [Server thread/INFO]: [ChunkHolderManager] Halted chunk system for world 'world_nether' +[13:03:21] [Server thread/INFO]: [ChunkHolderManager] Saving all chunkholders for world 'world_nether' +[13:03:21] [Server thread/INFO]: [ChunkHolderManager] Saved 49 block chunks, 49 entity chunks, 0 poi chunks in world 'world_nether' in 0.08s +[13:03:21] [Server thread/INFO]: Saving chunks for level 'ServerLevel[world_the_end]'/minecraft:the_end +[13:03:21] [Server thread/INFO]: [ChunkHolderManager] Waiting 60s for chunk system to halt for world 'world_the_end' +[13:03:21] [Server thread/INFO]: [ChunkHolderManager] Halted chunk system for world 'world_the_end' +[13:03:21] [Server thread/INFO]: [ChunkHolderManager] Saving all chunkholders for world 'world_the_end' +[13:03:21] [Server thread/INFO]: [ChunkHolderManager] Saved 49 block chunks, 49 entity chunks, 0 poi chunks in world 'world_the_end' in 0.03s +[13:03:21] [Server thread/INFO]: ThreadedAnvilChunkStorage (world): All chunks are saved +[13:03:21] [Server thread/INFO]: ThreadedAnvilChunkStorage (DIM-1): All chunks are saved +[13:03:21] [Server thread/INFO]: ThreadedAnvilChunkStorage (DIM1): All chunks are saved +[13:03:21] [Server thread/INFO]: ThreadedAnvilChunkStorage: All dimensions are saved \ No newline at end of file diff --git a/test/data/Vanilla/Bukkit/Paper/paper-unsupported-api-version-1-21-1.json b/test/data/Vanilla/Bukkit/Paper/paper-unsupported-api-version-1-21-1.json new file mode 100644 index 00000000..7191ba46 --- /dev/null +++ b/test/data/Vanilla/Bukkit/Paper/paper-unsupported-api-version-1-21-1.json @@ -0,0 +1,862 @@ +{ + "id": "paper\/server", + "name": "Paper", + "type": "Server Log", + "version": "1.21.1", + "title": "Paper 1.21.1 Server Log", + "entries": [ + { + "level": 6, + "time": null, + "prefix": "[13:16:33] [ServerMain\/INFO]:", + "lines": [ + { + "number": 1, + "content": "[13:16:33] [ServerMain\/INFO]: [bootstrap] Running Java 21 (OpenJDK 64-Bit Server VM 21.0.3+9-LTS; Eclipse Adoptium Temurin-21.0.3+9) on Linux 5.15.0-117-generic (amd64)" + } + ] + }, + { + "level": 6, + "time": null, + "prefix": "[13:16:33] [ServerMain\/INFO]:", + "lines": [ + { + "number": 2, + "content": "[13:16:33] [ServerMain\/INFO]: [bootstrap] Loading Paper 1.21.1-116-master@e7e1ab5 (2024-09-30T23:17:54Z) for Minecraft 1.21.1" + } + ] + }, + { + "level": 6, + "time": null, + "prefix": "[13:16:34] [ServerMain\/INFO]:", + "lines": [ + { + "number": 3, + "content": "[13:16:34] [ServerMain\/INFO]: [PluginInitializerManager] Initializing plugins..." + } + ] + }, + { + "level": 6, + "time": null, + "prefix": "[13:16:34] [Paper Plugin Remapper Thread - 2\/INFO]:", + "lines": [ + { + "number": 4, + "content": "[13:16:34] [Paper Plugin Remapper Thread - 2\/INFO]: [PluginRemapper] Remapping plugin 'plugins\/mclogs-bukkit-dev.jar'..." + } + ] + }, + { + "level": 6, + "time": null, + "prefix": "[13:16:35] [Paper Plugin Remapper Thread - 2\/INFO]:", + "lines": [ + { + "number": 5, + "content": "[13:16:35] [Paper Plugin Remapper Thread - 2\/INFO]: [PluginRemapper] Done remapping plugin 'plugins\/mclogs-bukkit-dev.jar' in 971ms." + } + ] + }, + { + "level": 6, + "time": null, + "prefix": "[13:16:35] [ServerMain\/INFO]:", + "lines": [ + { + "number": 6, + "content": "[13:16:35] [ServerMain\/INFO]: [PluginInitializerManager] Initialized 1 plugin" + } + ] + }, + { + "level": 6, + "time": null, + "prefix": "[13:16:35] [ServerMain\/INFO]:", + "lines": [ + { + "number": 7, + "content": "[13:16:35] [ServerMain\/INFO]: [PluginInitializerManager] Bukkit plugins (1):" + }, + { + "number": 8, + "content": " - Mclogs (dev)" + } + ] + }, + { + "level": 6, + "time": null, + "prefix": "[13:16:39] [ServerMain\/INFO]:", + "lines": [ + { + "number": 9, + "content": "[13:16:39] [ServerMain\/INFO]: Environment: Environment[sessionHost=https:\/\/sessionserver.mojang.com, servicesHost=https:\/\/api.minecraftservices.com, name=PROD]" + } + ] + }, + { + "level": 6, + "time": null, + "prefix": "[13:16:40] [ServerMain\/INFO]:", + "lines": [ + { + "number": 10, + "content": "[13:16:40] [ServerMain\/INFO]: Loaded 1290 recipes" + } + ] + }, + { + "level": 6, + "time": null, + "prefix": "[13:16:41] [ServerMain\/INFO]:", + "lines": [ + { + "number": 11, + "content": "[13:16:41] [ServerMain\/INFO]: Loaded 1399 advancements" + } + ] + }, + { + "level": 6, + "time": null, + "prefix": "[13:16:41] [Server thread\/INFO]:", + "lines": [ + { + "number": 12, + "content": "[13:16:41] [Server thread\/INFO]: Starting minecraft server version 1.21.1" + } + ] + }, + { + "level": 6, + "time": null, + "prefix": "[13:16:41] [Server thread\/INFO]:", + "lines": [ + { + "number": 13, + "content": "[13:16:41] [Server thread\/INFO]: Loading properties" + } + ] + }, + { + "level": 6, + "time": null, + "prefix": "[13:16:41] [Server thread\/INFO]:", + "lines": [ + { + "number": 14, + "content": "[13:16:41] [Server thread\/INFO]: This server is running Paper version 1.21.1-116-master@e7e1ab5 (2024-09-30T23:17:54Z) (Implementing API version 1.21.1-R0.1-SNAPSHOT)" + } + ] + }, + { + "level": 6, + "time": null, + "prefix": "[13:16:42] [Server thread\/INFO]:", + "lines": [ + { + "number": 15, + "content": "[13:16:42] [Server thread\/INFO]: [spark] This server bundles the spark profiler. For more information please visit https:\/\/docs.papermc.io\/paper\/profiling" + } + ] + }, + { + "level": 6, + "time": null, + "prefix": "[13:16:42] [Server thread\/INFO]:", + "lines": [ + { + "number": 16, + "content": "[13:16:42] [Server thread\/INFO]: Server Ping Player Sample Count: 12" + } + ] + }, + { + "level": 6, + "time": null, + "prefix": "[13:16:42] [Server thread\/INFO]:", + "lines": [ + { + "number": 17, + "content": "[13:16:42] [Server thread\/INFO]: Using 4 threads for Netty based IO" + } + ] + }, + { + "level": 6, + "time": null, + "prefix": "[13:16:43] [Server thread\/INFO]:", + "lines": [ + { + "number": 18, + "content": "[13:16:43] [Server thread\/INFO]: [ChunkTaskScheduler] Chunk system is using 1 I\/O threads, 1 worker threads, and population gen parallelism of 1 threads" + } + ] + }, + { + "level": 6, + "time": null, + "prefix": "[13:16:43] [Server thread\/INFO]:", + "lines": [ + { + "number": 19, + "content": "[13:16:43] [Server thread\/INFO]: Default game type: SURVIVAL" + } + ] + }, + { + "level": 6, + "time": null, + "prefix": "[13:16:43] [Server thread\/INFO]:", + "lines": [ + { + "number": 20, + "content": "[13:16:43] [Server thread\/INFO]: Generating keypair" + } + ] + }, + { + "level": 6, + "time": null, + "prefix": "[13:16:43] [Server thread\/INFO]:", + "lines": [ + { + "number": 21, + "content": "[13:16:43] [Server thread\/INFO]: Starting Minecraft server on *:16754" + } + ] + }, + { + "level": 6, + "time": null, + "prefix": "[13:16:43] [Server thread\/INFO]:", + "lines": [ + { + "number": 22, + "content": "[13:16:43] [Server thread\/INFO]: Using epoll channel type" + } + ] + }, + { + "level": 6, + "time": null, + "prefix": "[13:16:43] [Server thread\/INFO]:", + "lines": [ + { + "number": 23, + "content": "[13:16:43] [Server thread\/INFO]: Paper: Using libdeflate (Linux x86_64) compression from Velocity." + } + ] + }, + { + "level": 6, + "time": null, + "prefix": "[13:16:43] [Server thread\/INFO]:", + "lines": [ + { + "number": 24, + "content": "[13:16:43] [Server thread\/INFO]: Paper: Using OpenSSL 3.x.x (Linux x86_64) cipher from Velocity." + } + ] + }, + { + "level": 3, + "time": null, + "prefix": "[13:16:43] [Server thread\/ERROR]:", + "lines": [ + { + "number": 25, + "content": "[13:16:43] [Server thread\/ERROR]: [ModernPluginLoadingStrategy] Could not load plugin 'mclogs-bukkit-dev.jar' in folder 'plugins\/.paper-remapped'" + }, + { + "number": 26, + "content": "org.bukkit.plugin.InvalidPluginException: Unsupported API version 1.25" + }, + { + "number": 27, + "content": "\tat org.bukkit.craftbukkit.util.CraftMagicNumbers.checkSupported(CraftMagicNumbers.java:369) ~[paper-1.21.1.jar:1.21.1-116-e7e1ab5]" + }, + { + "number": 28, + "content": "\tat io.papermc.paper.plugin.provider.type.spigot.SpigotPluginProvider.createInstance(SpigotPluginProvider.java:121) ~[paper-1.21.1.jar:1.21.1-116-e7e1ab5]" + }, + { + "number": 29, + "content": "\tat io.papermc.paper.plugin.provider.type.spigot.SpigotPluginProvider.createInstance(SpigotPluginProvider.java:35) ~[paper-1.21.1.jar:1.21.1-116-e7e1ab5]" + }, + { + "number": 30, + "content": "\tat io.papermc.paper.plugin.entrypoint.strategy.modern.ModernPluginLoadingStrategy.loadProviders(ModernPluginLoadingStrategy.java:116) ~[paper-1.21.1.jar:1.21.1-116-e7e1ab5]" + }, + { + "number": 31, + "content": "\tat io.papermc.paper.plugin.storage.SimpleProviderStorage.enter(SimpleProviderStorage.java:38) ~[paper-1.21.1.jar:1.21.1-116-e7e1ab5]" + }, + { + "number": 32, + "content": "\tat io.papermc.paper.plugin.entrypoint.LaunchEntryPointHandler.enter(LaunchEntryPointHandler.java:40) ~[paper-1.21.1.jar:1.21.1-116-e7e1ab5]" + }, + { + "number": 33, + "content": "\tat org.bukkit.craftbukkit.CraftServer.loadPlugins(CraftServer.java:546) ~[paper-1.21.1.jar:1.21.1-116-e7e1ab5]" + }, + { + "number": 34, + "content": "\tat net.minecraft.server.dedicated.DedicatedServer.initServer(DedicatedServer.java:292) ~[paper-1.21.1.jar:1.21.1-116-e7e1ab5]" + }, + { + "number": 35, + "content": "\tat net.minecraft.server.MinecraftServer.runServer(MinecraftServer.java:1214) ~[paper-1.21.1.jar:1.21.1-116-e7e1ab5]" + }, + { + "number": 36, + "content": "\tat net.minecraft.server.MinecraftServer.lambda$spin$0(MinecraftServer.java:329) ~[paper-1.21.1.jar:1.21.1-116-e7e1ab5]" + }, + { + "number": 37, + "content": "\tat java.base\/java.lang.Thread.run(Thread.java:1583) ~[?:?]" + } + ] + }, + { + "level": 6, + "time": null, + "prefix": "[13:16:43] [Server thread\/INFO]:", + "lines": [ + { + "number": 38, + "content": "[13:16:43] [Server thread\/INFO]: Server permissions file permissions.yml is empty, ignoring it" + } + ] + }, + { + "level": 6, + "time": null, + "prefix": "[13:16:43] [Server thread\/INFO]:", + "lines": [ + { + "number": 39, + "content": "[13:16:43] [Server thread\/INFO]: Preparing level \"world\"" + } + ] + }, + { + "level": 6, + "time": null, + "prefix": "[13:16:44] [Server thread\/INFO]:", + "lines": [ + { + "number": 40, + "content": "[13:16:44] [Server thread\/INFO]: Preparing start region for dimension minecraft:overworld" + } + ] + }, + { + "level": 6, + "time": null, + "prefix": "[13:16:45] [Server thread\/INFO]:", + "lines": [ + { + "number": 41, + "content": "[13:16:45] [Server thread\/INFO]: Time elapsed: 1395 ms" + } + ] + }, + { + "level": 6, + "time": null, + "prefix": "[13:16:45] [Server thread\/INFO]:", + "lines": [ + { + "number": 42, + "content": "[13:16:45] [Server thread\/INFO]: Preparing start region for dimension minecraft:the_nether" + } + ] + }, + { + "level": 6, + "time": null, + "prefix": "[13:16:45] [Server thread\/INFO]:", + "lines": [ + { + "number": 43, + "content": "[13:16:45] [Server thread\/INFO]: Time elapsed: 204 ms" + } + ] + }, + { + "level": 6, + "time": null, + "prefix": "[13:16:45] [Server thread\/INFO]:", + "lines": [ + { + "number": 44, + "content": "[13:16:45] [Server thread\/INFO]: Preparing start region for dimension minecraft:the_end" + } + ] + }, + { + "level": 6, + "time": null, + "prefix": "[13:16:45] [Server thread\/INFO]:", + "lines": [ + { + "number": 45, + "content": "[13:16:45] [Server thread\/INFO]: Time elapsed: 124 ms" + } + ] + }, + { + "level": 6, + "time": null, + "prefix": "[13:16:45] [Server thread\/INFO]:", + "lines": [ + { + "number": 46, + "content": "[13:16:45] [Server thread\/INFO]: [spark] Starting background profiler..." + } + ] + }, + { + "level": 6, + "time": null, + "prefix": "[13:16:46] [Server thread\/INFO]:", + "lines": [ + { + "number": 47, + "content": "[13:16:46] [Server thread\/INFO]: Done preparing level \"world\" (2.566s)" + } + ] + }, + { + "level": 6, + "time": null, + "prefix": "[13:16:46] [Server thread\/INFO]:", + "lines": [ + { + "number": 48, + "content": "[13:16:46] [Server thread\/INFO]: Starting GS4 status listener" + } + ] + }, + { + "level": 6, + "time": null, + "prefix": "[13:16:46] [Server thread\/INFO]:", + "lines": [ + { + "number": 49, + "content": "[13:16:46] [Server thread\/INFO]: Thread Query Listener started" + } + ] + }, + { + "level": 6, + "time": null, + "prefix": "[13:16:46] [Query Listener #1\/INFO]:", + "lines": [ + { + "number": 50, + "content": "[13:16:46] [Query Listener #1\/INFO]: Query running on 0.0.0.0:9898" + } + ] + }, + { + "level": 6, + "time": null, + "prefix": "[13:16:46] [Server thread\/INFO]:", + "lines": [ + { + "number": 51, + "content": "[13:16:46] [Server thread\/INFO]: JMX monitoring enabled" + } + ] + }, + { + "level": 6, + "time": null, + "prefix": "[13:16:46] [Server thread\/INFO]:", + "lines": [ + { + "number": 52, + "content": "[13:16:46] [Server thread\/INFO]: Running delayed init tasks" + } + ] + }, + { + "level": 6, + "time": null, + "prefix": "[13:16:46] [Server thread\/INFO]:", + "lines": [ + { + "number": 53, + "content": "[13:16:46] [Server thread\/INFO]: Done (12.888s)! For help, type \"help\"" + } + ] + }, + { + "level": 6, + "time": null, + "prefix": "[13:16:46] [Server thread\/INFO]:", + "lines": [ + { + "number": 54, + "content": "[13:16:46] [Server thread\/INFO]: Timings Reset" + } + ] + }, + { + "level": 6, + "time": null, + "prefix": "[13:17:27] [Server thread\/INFO]:", + "lines": [ + { + "number": 55, + "content": "[13:17:27] [Server thread\/INFO]: Stopping the server" + } + ] + }, + { + "level": 6, + "time": null, + "prefix": "[13:17:27] [Server thread\/INFO]:", + "lines": [ + { + "number": 56, + "content": "[13:17:27] [Server thread\/INFO]: Stopping server" + } + ] + }, + { + "level": 6, + "time": null, + "prefix": "[13:17:27] [Server thread\/INFO]:", + "lines": [ + { + "number": 57, + "content": "[13:17:27] [Server thread\/INFO]: Saving players" + } + ] + }, + { + "level": 6, + "time": null, + "prefix": "[13:17:27] [Server thread\/INFO]:", + "lines": [ + { + "number": 58, + "content": "[13:17:27] [Server thread\/INFO]: Saving worlds" + } + ] + }, + { + "level": 6, + "time": null, + "prefix": "[13:17:27] [Server thread\/INFO]:", + "lines": [ + { + "number": 59, + "content": "[13:17:27] [Server thread\/INFO]: Saving chunks for level 'ServerLevel[world]'\/minecraft:overworld" + } + ] + }, + { + "level": 6, + "time": null, + "prefix": "[13:17:27] [Server thread\/INFO]:", + "lines": [ + { + "number": 60, + "content": "[13:17:27] [Server thread\/INFO]: [ChunkHolderManager] Waiting 60s for chunk system to halt for world 'world'" + } + ] + }, + { + "level": 6, + "time": null, + "prefix": "[13:17:27] [Server thread\/INFO]:", + "lines": [ + { + "number": 61, + "content": "[13:17:27] [Server thread\/INFO]: [ChunkHolderManager] Halted chunk system for world 'world'" + } + ] + }, + { + "level": 6, + "time": null, + "prefix": "[13:17:27] [Server thread\/INFO]:", + "lines": [ + { + "number": 62, + "content": "[13:17:27] [Server thread\/INFO]: [ChunkHolderManager] Saving all chunkholders for world 'world'" + } + ] + }, + { + "level": 6, + "time": null, + "prefix": "[13:17:27] [Server thread\/INFO]:", + "lines": [ + { + "number": 63, + "content": "[13:17:27] [Server thread\/INFO]: [ChunkHolderManager] Saved 49 block chunks, 49 entity chunks, 0 poi chunks in world 'world' in 0.33s" + } + ] + }, + { + "level": 6, + "time": null, + "prefix": "[13:17:27] [Server thread\/INFO]:", + "lines": [ + { + "number": 64, + "content": "[13:17:27] [Server thread\/INFO]: Saving chunks for level 'ServerLevel[world_nether]'\/minecraft:the_nether" + } + ] + }, + { + "level": 6, + "time": null, + "prefix": "[13:17:27] [Server thread\/INFO]:", + "lines": [ + { + "number": 65, + "content": "[13:17:27] [Server thread\/INFO]: [ChunkHolderManager] Waiting 60s for chunk system to halt for world 'world_nether'" + } + ] + }, + { + "level": 6, + "time": null, + "prefix": "[13:17:27] [Server thread\/INFO]:", + "lines": [ + { + "number": 66, + "content": "[13:17:27] [Server thread\/INFO]: [ChunkHolderManager] Halted chunk system for world 'world_nether'" + } + ] + }, + { + "level": 6, + "time": null, + "prefix": "[13:17:27] [Server thread\/INFO]:", + "lines": [ + { + "number": 67, + "content": "[13:17:27] [Server thread\/INFO]: [ChunkHolderManager] Saving all chunkholders for world 'world_nether'" + } + ] + }, + { + "level": 6, + "time": null, + "prefix": "[13:17:27] [Server thread\/INFO]:", + "lines": [ + { + "number": 68, + "content": "[13:17:27] [Server thread\/INFO]: [ChunkHolderManager] Saved 49 block chunks, 49 entity chunks, 0 poi chunks in world 'world_nether' in 0.06s" + } + ] + }, + { + "level": 6, + "time": null, + "prefix": "[13:17:27] [Server thread\/INFO]:", + "lines": [ + { + "number": 69, + "content": "[13:17:27] [Server thread\/INFO]: Saving chunks for level 'ServerLevel[world_the_end]'\/minecraft:the_end" + } + ] + }, + { + "level": 6, + "time": null, + "prefix": "[13:17:27] [Server thread\/INFO]:", + "lines": [ + { + "number": 70, + "content": "[13:17:27] [Server thread\/INFO]: [ChunkHolderManager] Waiting 60s for chunk system to halt for world 'world_the_end'" + } + ] + }, + { + "level": 6, + "time": null, + "prefix": "[13:17:27] [Server thread\/INFO]:", + "lines": [ + { + "number": 71, + "content": "[13:17:27] [Server thread\/INFO]: [ChunkHolderManager] Halted chunk system for world 'world_the_end'" + } + ] + }, + { + "level": 6, + "time": null, + "prefix": "[13:17:27] [Server thread\/INFO]:", + "lines": [ + { + "number": 72, + "content": "[13:17:27] [Server thread\/INFO]: [ChunkHolderManager] Saving all chunkholders for world 'world_the_end'" + } + ] + }, + { + "level": 6, + "time": null, + "prefix": "[13:17:27] [Server thread\/INFO]:", + "lines": [ + { + "number": 73, + "content": "[13:17:27] [Server thread\/INFO]: [ChunkHolderManager] Saved 49 block chunks, 49 entity chunks, 0 poi chunks in world 'world_the_end' in 0.05s" + } + ] + }, + { + "level": 6, + "time": null, + "prefix": "[13:17:27] [Server thread\/INFO]:", + "lines": [ + { + "number": 74, + "content": "[13:17:27] [Server thread\/INFO]: ThreadedAnvilChunkStorage (world): All chunks are saved" + } + ] + }, + { + "level": 6, + "time": null, + "prefix": "[13:17:27] [Server thread\/INFO]:", + "lines": [ + { + "number": 75, + "content": "[13:17:27] [Server thread\/INFO]: ThreadedAnvilChunkStorage (DIM-1): All chunks are saved" + } + ] + }, + { + "level": 6, + "time": null, + "prefix": "[13:17:27] [Server thread\/INFO]:", + "lines": [ + { + "number": 76, + "content": "[13:17:27] [Server thread\/INFO]: ThreadedAnvilChunkStorage (DIM1): All chunks are saved" + } + ] + }, + { + "level": 6, + "time": null, + "prefix": "[13:17:27] [Server thread\/INFO]:", + "lines": [ + { + "number": 77, + "content": "[13:17:27] [Server thread\/INFO]: ThreadedAnvilChunkStorage: All dimensions are saved" + } + ] + } + ], + "analysis": { + "problems": [ + { + "message": "The plugin 'mclogs-bukkit-dev' needs version '1.25' of your server software.", + "counter": 1, + "entry": { + "level": 3, + "time": null, + "prefix": "[13:16:43] [Server thread\/ERROR]:", + "lines": [ + { + "number": 25, + "content": "[13:16:43] [Server thread\/ERROR]: [ModernPluginLoadingStrategy] Could not load plugin 'mclogs-bukkit-dev.jar' in folder 'plugins\/.paper-remapped'" + }, + { + "number": 26, + "content": "org.bukkit.plugin.InvalidPluginException: Unsupported API version 1.25" + }, + { + "number": 27, + "content": "\tat org.bukkit.craftbukkit.util.CraftMagicNumbers.checkSupported(CraftMagicNumbers.java:369) ~[paper-1.21.1.jar:1.21.1-116-e7e1ab5]" + }, + { + "number": 28, + "content": "\tat io.papermc.paper.plugin.provider.type.spigot.SpigotPluginProvider.createInstance(SpigotPluginProvider.java:121) ~[paper-1.21.1.jar:1.21.1-116-e7e1ab5]" + }, + { + "number": 29, + "content": "\tat io.papermc.paper.plugin.provider.type.spigot.SpigotPluginProvider.createInstance(SpigotPluginProvider.java:35) ~[paper-1.21.1.jar:1.21.1-116-e7e1ab5]" + }, + { + "number": 30, + "content": "\tat io.papermc.paper.plugin.entrypoint.strategy.modern.ModernPluginLoadingStrategy.loadProviders(ModernPluginLoadingStrategy.java:116) ~[paper-1.21.1.jar:1.21.1-116-e7e1ab5]" + }, + { + "number": 31, + "content": "\tat io.papermc.paper.plugin.storage.SimpleProviderStorage.enter(SimpleProviderStorage.java:38) ~[paper-1.21.1.jar:1.21.1-116-e7e1ab5]" + }, + { + "number": 32, + "content": "\tat io.papermc.paper.plugin.entrypoint.LaunchEntryPointHandler.enter(LaunchEntryPointHandler.java:40) ~[paper-1.21.1.jar:1.21.1-116-e7e1ab5]" + }, + { + "number": 33, + "content": "\tat org.bukkit.craftbukkit.CraftServer.loadPlugins(CraftServer.java:546) ~[paper-1.21.1.jar:1.21.1-116-e7e1ab5]" + }, + { + "number": 34, + "content": "\tat net.minecraft.server.dedicated.DedicatedServer.initServer(DedicatedServer.java:292) ~[paper-1.21.1.jar:1.21.1-116-e7e1ab5]" + }, + { + "number": 35, + "content": "\tat net.minecraft.server.MinecraftServer.runServer(MinecraftServer.java:1214) ~[paper-1.21.1.jar:1.21.1-116-e7e1ab5]" + }, + { + "number": 36, + "content": "\tat net.minecraft.server.MinecraftServer.lambda$spin$0(MinecraftServer.java:329) ~[paper-1.21.1.jar:1.21.1-116-e7e1ab5]" + }, + { + "number": 37, + "content": "\tat java.base\/java.lang.Thread.run(Thread.java:1583) ~[?:?]" + } + ] + }, + "solutions": [ + { + "message": "Install a different version of the plugin 'mclogs-bukkit-dev'." + }, + { + "message": "Delete the file 'plugins\/mclogs-bukkit-dev.jar'." + }, + { + "message": "Install the version '1.25' of your server software." + } + ] + } + ], + "information": [ + { + "message": "Minecraft version: 1.21.1", + "counter": 1, + "entry": { + "level": 6, + "time": null, + "prefix": "[13:16:41] [Server thread\/INFO]:", + "lines": [ + { + "number": 12, + "content": "[13:16:41] [Server thread\/INFO]: Starting minecraft server version 1.21.1" + } + ] + }, + "label": "Minecraft version", + "value": "1.21.1" + } + ] + } +} \ No newline at end of file diff --git a/test/data/Vanilla/Bukkit/Paper/paper-unsupported-api-version-1-21-1.log b/test/data/Vanilla/Bukkit/Paper/paper-unsupported-api-version-1-21-1.log new file mode 100644 index 00000000..8fe8a043 --- /dev/null +++ b/test/data/Vanilla/Bukkit/Paper/paper-unsupported-api-version-1-21-1.log @@ -0,0 +1,77 @@ +[13:16:33] [ServerMain/INFO]: [bootstrap] Running Java 21 (OpenJDK 64-Bit Server VM 21.0.3+9-LTS; Eclipse Adoptium Temurin-21.0.3+9) on Linux 5.15.0-117-generic (amd64) +[13:16:33] [ServerMain/INFO]: [bootstrap] Loading Paper 1.21.1-116-master@e7e1ab5 (2024-09-30T23:17:54Z) for Minecraft 1.21.1 +[13:16:34] [ServerMain/INFO]: [PluginInitializerManager] Initializing plugins... +[13:16:34] [Paper Plugin Remapper Thread - 2/INFO]: [PluginRemapper] Remapping plugin 'plugins/mclogs-bukkit-dev.jar'... +[13:16:35] [Paper Plugin Remapper Thread - 2/INFO]: [PluginRemapper] Done remapping plugin 'plugins/mclogs-bukkit-dev.jar' in 971ms. +[13:16:35] [ServerMain/INFO]: [PluginInitializerManager] Initialized 1 plugin +[13:16:35] [ServerMain/INFO]: [PluginInitializerManager] Bukkit plugins (1): + - Mclogs (dev) +[13:16:39] [ServerMain/INFO]: Environment: Environment[sessionHost=https://sessionserver.mojang.com, servicesHost=https://api.minecraftservices.com, name=PROD] +[13:16:40] [ServerMain/INFO]: Loaded 1290 recipes +[13:16:41] [ServerMain/INFO]: Loaded 1399 advancements +[13:16:41] [Server thread/INFO]: Starting minecraft server version 1.21.1 +[13:16:41] [Server thread/INFO]: Loading properties +[13:16:41] [Server thread/INFO]: This server is running Paper version 1.21.1-116-master@e7e1ab5 (2024-09-30T23:17:54Z) (Implementing API version 1.21.1-R0.1-SNAPSHOT) +[13:16:42] [Server thread/INFO]: [spark] This server bundles the spark profiler. For more information please visit https://docs.papermc.io/paper/profiling +[13:16:42] [Server thread/INFO]: Server Ping Player Sample Count: 12 +[13:16:42] [Server thread/INFO]: Using 4 threads for Netty based IO +[13:16:43] [Server thread/INFO]: [ChunkTaskScheduler] Chunk system is using 1 I/O threads, 1 worker threads, and population gen parallelism of 1 threads +[13:16:43] [Server thread/INFO]: Default game type: SURVIVAL +[13:16:43] [Server thread/INFO]: Generating keypair +[13:16:43] [Server thread/INFO]: Starting Minecraft server on *:16754 +[13:16:43] [Server thread/INFO]: Using epoll channel type +[13:16:43] [Server thread/INFO]: Paper: Using libdeflate (Linux x86_64) compression from Velocity. +[13:16:43] [Server thread/INFO]: Paper: Using OpenSSL 3.x.x (Linux x86_64) cipher from Velocity. +[13:16:43] [Server thread/ERROR]: [ModernPluginLoadingStrategy] Could not load plugin 'mclogs-bukkit-dev.jar' in folder 'plugins/.paper-remapped' +org.bukkit.plugin.InvalidPluginException: Unsupported API version 1.25 + at org.bukkit.craftbukkit.util.CraftMagicNumbers.checkSupported(CraftMagicNumbers.java:369) ~[paper-1.21.1.jar:1.21.1-116-e7e1ab5] + at io.papermc.paper.plugin.provider.type.spigot.SpigotPluginProvider.createInstance(SpigotPluginProvider.java:121) ~[paper-1.21.1.jar:1.21.1-116-e7e1ab5] + at io.papermc.paper.plugin.provider.type.spigot.SpigotPluginProvider.createInstance(SpigotPluginProvider.java:35) ~[paper-1.21.1.jar:1.21.1-116-e7e1ab5] + at io.papermc.paper.plugin.entrypoint.strategy.modern.ModernPluginLoadingStrategy.loadProviders(ModernPluginLoadingStrategy.java:116) ~[paper-1.21.1.jar:1.21.1-116-e7e1ab5] + at io.papermc.paper.plugin.storage.SimpleProviderStorage.enter(SimpleProviderStorage.java:38) ~[paper-1.21.1.jar:1.21.1-116-e7e1ab5] + at io.papermc.paper.plugin.entrypoint.LaunchEntryPointHandler.enter(LaunchEntryPointHandler.java:40) ~[paper-1.21.1.jar:1.21.1-116-e7e1ab5] + at org.bukkit.craftbukkit.CraftServer.loadPlugins(CraftServer.java:546) ~[paper-1.21.1.jar:1.21.1-116-e7e1ab5] + at net.minecraft.server.dedicated.DedicatedServer.initServer(DedicatedServer.java:292) ~[paper-1.21.1.jar:1.21.1-116-e7e1ab5] + at net.minecraft.server.MinecraftServer.runServer(MinecraftServer.java:1214) ~[paper-1.21.1.jar:1.21.1-116-e7e1ab5] + at net.minecraft.server.MinecraftServer.lambda$spin$0(MinecraftServer.java:329) ~[paper-1.21.1.jar:1.21.1-116-e7e1ab5] + at java.base/java.lang.Thread.run(Thread.java:1583) ~[?:?] +[13:16:43] [Server thread/INFO]: Server permissions file permissions.yml is empty, ignoring it +[13:16:43] [Server thread/INFO]: Preparing level "world" +[13:16:44] [Server thread/INFO]: Preparing start region for dimension minecraft:overworld +[13:16:45] [Server thread/INFO]: Time elapsed: 1395 ms +[13:16:45] [Server thread/INFO]: Preparing start region for dimension minecraft:the_nether +[13:16:45] [Server thread/INFO]: Time elapsed: 204 ms +[13:16:45] [Server thread/INFO]: Preparing start region for dimension minecraft:the_end +[13:16:45] [Server thread/INFO]: Time elapsed: 124 ms +[13:16:45] [Server thread/INFO]: [spark] Starting background profiler... +[13:16:46] [Server thread/INFO]: Done preparing level "world" (2.566s) +[13:16:46] [Server thread/INFO]: Starting GS4 status listener +[13:16:46] [Server thread/INFO]: Thread Query Listener started +[13:16:46] [Query Listener #1/INFO]: Query running on 0.0.0.0:9898 +[13:16:46] [Server thread/INFO]: JMX monitoring enabled +[13:16:46] [Server thread/INFO]: Running delayed init tasks +[13:16:46] [Server thread/INFO]: Done (12.888s)! For help, type "help" +[13:16:46] [Server thread/INFO]: Timings Reset +[13:17:27] [Server thread/INFO]: Stopping the server +[13:17:27] [Server thread/INFO]: Stopping server +[13:17:27] [Server thread/INFO]: Saving players +[13:17:27] [Server thread/INFO]: Saving worlds +[13:17:27] [Server thread/INFO]: Saving chunks for level 'ServerLevel[world]'/minecraft:overworld +[13:17:27] [Server thread/INFO]: [ChunkHolderManager] Waiting 60s for chunk system to halt for world 'world' +[13:17:27] [Server thread/INFO]: [ChunkHolderManager] Halted chunk system for world 'world' +[13:17:27] [Server thread/INFO]: [ChunkHolderManager] Saving all chunkholders for world 'world' +[13:17:27] [Server thread/INFO]: [ChunkHolderManager] Saved 49 block chunks, 49 entity chunks, 0 poi chunks in world 'world' in 0.33s +[13:17:27] [Server thread/INFO]: Saving chunks for level 'ServerLevel[world_nether]'/minecraft:the_nether +[13:17:27] [Server thread/INFO]: [ChunkHolderManager] Waiting 60s for chunk system to halt for world 'world_nether' +[13:17:27] [Server thread/INFO]: [ChunkHolderManager] Halted chunk system for world 'world_nether' +[13:17:27] [Server thread/INFO]: [ChunkHolderManager] Saving all chunkholders for world 'world_nether' +[13:17:27] [Server thread/INFO]: [ChunkHolderManager] Saved 49 block chunks, 49 entity chunks, 0 poi chunks in world 'world_nether' in 0.06s +[13:17:27] [Server thread/INFO]: Saving chunks for level 'ServerLevel[world_the_end]'/minecraft:the_end +[13:17:27] [Server thread/INFO]: [ChunkHolderManager] Waiting 60s for chunk system to halt for world 'world_the_end' +[13:17:27] [Server thread/INFO]: [ChunkHolderManager] Halted chunk system for world 'world_the_end' +[13:17:27] [Server thread/INFO]: [ChunkHolderManager] Saving all chunkholders for world 'world_the_end' +[13:17:27] [Server thread/INFO]: [ChunkHolderManager] Saved 49 block chunks, 49 entity chunks, 0 poi chunks in world 'world_the_end' in 0.05s +[13:17:27] [Server thread/INFO]: ThreadedAnvilChunkStorage (world): All chunks are saved +[13:17:27] [Server thread/INFO]: ThreadedAnvilChunkStorage (DIM-1): All chunks are saved +[13:17:27] [Server thread/INFO]: ThreadedAnvilChunkStorage (DIM1): All chunks are saved +[13:17:27] [Server thread/INFO]: ThreadedAnvilChunkStorage: All dimensions are saved \ No newline at end of file diff --git a/test/data/Vanilla/Bukkit/Spigot/spigot-plugin-dependency.json b/test/data/Vanilla/Bukkit/Spigot/spigot-plugin-dependency.json index 54e9b656..b10b7aaf 100644 --- a/test/data/Vanilla/Bukkit/Spigot/spigot-plugin-dependency.json +++ b/test/data/Vanilla/Bukkit/Spigot/spigot-plugin-dependency.json @@ -265,10 +265,13 @@ }, "solutions": [ { - "message": "Install the plugin 'Vault'." + "message": "Install a different version of the plugin 'FactionsShop'." }, { "message": "Delete the file 'plugins\/FactionsShop.jar'." + }, + { + "message": "Install the plugin 'Vault'." } ] }, @@ -312,10 +315,13 @@ }, "solutions": [ { - "message": "Install the plugin 'ProtocolLib'." + "message": "Install a different version of the plugin 'BasicTab'." }, { "message": "Delete the file 'plugins\/BasicTab.jar'." + }, + { + "message": "Install the plugin 'ProtocolLib'." } ] } diff --git a/test/data/Vanilla/Bukkit/plugin/spigot-authme-shutdown.json b/test/data/Vanilla/Bukkit/plugin/spigot-authme-shutdown.json index 9c86e028..9ab4dcdf 100644 --- a/test/data/Vanilla/Bukkit/plugin/spigot-authme-shutdown.json +++ b/test/data/Vanilla/Bukkit/plugin/spigot-authme-shutdown.json @@ -6100,10 +6100,13 @@ }, "solutions": [ { - "message": "Install the plugin 'Languagy'." + "message": "Install a different version of the plugin 'AnvilLogin'." }, { "message": "Delete the file 'plugins\/AnvilLogin.jar'." + }, + { + "message": "Install the plugin 'Languagy'." } ] }, diff --git a/test/data/Vanilla/Bukkit/plugin/spigot-permissionsex-config.json b/test/data/Vanilla/Bukkit/plugin/spigot-permissionsex-config.json index 4da762b6..665d34e3 100644 --- a/test/data/Vanilla/Bukkit/plugin/spigot-permissionsex-config.json +++ b/test/data/Vanilla/Bukkit/plugin/spigot-permissionsex-config.json @@ -14817,10 +14817,13 @@ }, "solutions": [ { - "message": "Install the plugin 'WorldGuard'." + "message": "Install a different version of the plugin 'AreaShop'." }, { "message": "Delete the file 'plugins\/AreaShop.jar'." + }, + { + "message": "Install the plugin 'WorldGuard'." } ] }, diff --git a/test/data/Vanilla/Forge/Magma/magma-plugin-dependency.json b/test/data/Vanilla/Forge/Magma/magma-plugin-dependency.json index 71053c4e..0b299941 100644 --- a/test/data/Vanilla/Forge/Magma/magma-plugin-dependency.json +++ b/test/data/Vanilla/Forge/Magma/magma-plugin-dependency.json @@ -276,10 +276,13 @@ }, "solutions": [ { - "message": "Install the plugin 'Vault'." + "message": "Install a different version of the plugin 'FactionsShop'." }, { "message": "Delete the file 'plugins\/FactionsShop.jar'." + }, + { + "message": "Install the plugin 'Vault'." } ] }, @@ -323,10 +326,13 @@ }, "solutions": [ { - "message": "Install the plugin 'ProtocolLib'." + "message": "Install a different version of the plugin 'BasicTab'." }, { "message": "Delete the file 'plugins\/BasicTab.jar'." + }, + { + "message": "Install the plugin 'ProtocolLib'." } ] } diff --git a/test/tests/Logs/AutoLogsTest.php b/test/tests/Logs/AutoLogsTest.php index 1c2ef9a0..352a287d 100644 --- a/test/tests/Logs/AutoLogsTest.php +++ b/test/tests/Logs/AutoLogsTest.php @@ -404,6 +404,16 @@ public function test_paper_multiple_dependencies_1_20_4(): void $this->assertStringEqualsFile($log->getExpectedPath(), $log->getOutput(), $log->getLogPath()); } + /** + * @return void + * @throws Exception + */ + public function test_paper_multiple_dependencies_1_21_1(): void + { + $log = new TestLog('Vanilla/Bukkit/Paper/paper-multiple-dependencies-1-21-1.log'); + $this->assertStringEqualsFile($log->getExpectedPath(), $log->getOutput(), $log->getLogPath()); + } + /** * @return void * @throws Exception @@ -414,6 +424,16 @@ public function test_paper_plugin_api_version_too_low_1_20_6(): void $this->assertStringEqualsFile($log->getExpectedPath(), $log->getOutput(), $log->getLogPath()); } + /** + * @return void + * @throws Exception + */ + public function test_paper_plugin_api_version_too_low_1_21_1(): void + { + $log = new TestLog('Vanilla/Bukkit/Paper/paper-plugin-api-version-too-low-1-21-1.log'); + $this->assertStringEqualsFile($log->getExpectedPath(), $log->getOutput(), $log->getLogPath()); + } + /** * @return void * @throws Exception @@ -444,6 +464,16 @@ public function test_paper_plugin_dependency_1_20_4(): void $this->assertStringEqualsFile($log->getExpectedPath(), $log->getOutput(), $log->getLogPath()); } + /** + * @return void + * @throws Exception + */ + public function test_paper_plugin_dependency_1_21_1(): void + { + $log = new TestLog('Vanilla/Bukkit/Paper/paper-plugin-dependency-1-21-1.log'); + $this->assertStringEqualsFile($log->getExpectedPath(), $log->getOutput(), $log->getLogPath()); + } + /** * @return void * @throws Exception @@ -484,6 +514,16 @@ public function test_paper_plugin_unsupported_class_version_1_20_4(): void $this->assertStringEqualsFile($log->getExpectedPath(), $log->getOutput(), $log->getLogPath()); } + /** + * @return void + * @throws Exception + */ + public function test_paper_plugin_unsupported_class_version_1_21_1(): void + { + $log = new TestLog('Vanilla/Bukkit/Paper/paper-plugin-unsupported-class-version-1-21-1.log'); + $this->assertStringEqualsFile($log->getExpectedPath(), $log->getOutput(), $log->getLogPath()); + } + /** * @return void * @throws Exception @@ -534,6 +574,16 @@ public function test_paper_unsupported_api_version_1_20_4(): void $this->assertStringEqualsFile($log->getExpectedPath(), $log->getOutput(), $log->getLogPath()); } + /** + * @return void + * @throws Exception + */ + public function test_paper_unsupported_api_version_1_21_1(): void + { + $log = new TestLog('Vanilla/Bukkit/Paper/paper-unsupported-api-version-1-21-1.log'); + $this->assertStringEqualsFile($log->getExpectedPath(), $log->getOutput(), $log->getLogPath()); + } + /** * @return void * @throws Exception