aternos/sherlock

PHP 库,用于将 Minecraft 映射应用到日志文件

v1.0.2 2022-05-04 15:13 UTC

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)

内容只有在尝试检索时才会映射,并且从那时起将存储。