aternos / sherlock
PHP 库,用于将 Minecraft 映射应用到日志文件
v1.0.2
2022-05-04 15:13 UTC
Requires
- php: >=8.0
- ext-curl: *
- ext-simplexml: *
- ext-zlib: *
- phpunit/phpunit: ^9.5
This package is auto-updated.
Last update: 2024-09-09 18:46:26 UTC
README
关于
Sherlock 是一个 PHP 库,用于调查难以理解的 Minecraft 日志,并通过使用 Mojang(或 FabricMC)提供的映射,将混淆的堆栈跟踪替换为有用的名称,从而使日志更易于阅读。
安装
composer require aternos/sherlock
使用方法
获取混淆映射
要处理日志,您需要正确的混淆映射。您可以使用 LauncherMetaMapLocator 获取任何 Minecraft 版本(包括快照)的 Vanilla 混淆映射的 URL。
$url = new \Aternos\Sherlock\MapLocator\LauncherMetaMapLocator("1.18.2-pre1", "server"); $map = new \Aternos\Sherlock\Maps\URLVanillaObfuscationMap($url)
此示例中的第二个参数是映射类型。Mojang 发布了服务器和客户端的混淆映射,因此您将需要选择与您的环境匹配的映射。
Fabric
Fabric 日志已经从 Vanilla 的混淆名称映射到中间名称。这些是不同的映射,旨在在多个版本之间保持名称一致性。要处理此类日志,您需要相应的 Yarn 映射。您可以从 Fabric Maven 存储库获取 gzip 映射文件的 URL,如下所示:
$url = new \Aternos\Sherlock\MapLocator\FabricMavenMapLocator("1.18.2-pre1"); $map = new \Aternos\Sherlock\Maps\GZURLYarnMap($url);
Yarn 映射不受环境依赖,因为中间名称已经处理了这些差异。
缓存映射内容
当您创建了混淆映射后,您可以使用 getContent() 方法获取其原始内容。您可以将它缓存起来以减少对检索它们的 API 的请求。当您想直接从字符串创建混淆映射时,您可以创建 VanillaObfuscationMap 和 YarnMap 的实例。
使用混淆映射重新映射日志
$log = new \Aternos\Sherlock\ObfuscatedString(file_get_contents("test.log"), $map); $remappedContent = $log->getMappedContent(); file_put_contents("test.mapped.log", $remappedContent)
内容只有在尝试检索时才会映射,并且从那时起将存储。