PHPackages                             aternos/sherlock - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Utility &amp; Helpers](/categories/utility)
4. /
5. aternos/sherlock

ActiveLibrary[Utility &amp; Helpers](/categories/utility)

aternos/sherlock
================

PHP library to apply minecraft mappings to log files

v1.1.3(4mo ago)43802[1 issues](https://github.com/aternosorg/sherlock/issues)MITPHPPHP &gt;=8.0CI passing

Since Mar 29Pushed 4mo ago2 watchersCompare

[ Source](https://github.com/aternosorg/sherlock)[ Packagist](https://packagist.org/packages/aternos/sherlock)[ RSS](/packages/aternos-sherlock/feed)WikiDiscussions master Synced 3w ago

READMEChangelog (7)Dependencies (1)Versions (8)Used By (0)

Sherlock
========

[](#sherlock)

### About

[](#about)

Sherlock is a PHP library that investigates obscure Minecraft logs and makes them more readable by replacing obfuscated stacktraces with useful names using Mappings provided by Mojang (or FabricMC).

### Installation

[](#installation)

```
composer require aternos/sherlock

```

Usage
-----

[](#usage)

### Getting an Obfuscation Map

[](#getting-an-obfuscation-map)

To process a log you need the correct Obfuscation Map. You can get the url of a Vanilla Obfuscation Map for any Minecraft version (including snapshots) using the LauncherMetaMapLocator:

```
$url = new \Aternos\Sherlock\MapLocator\LauncherMetaMapLocator("1.18.2-pre1", "server");
$map = new \Aternos\Sherlock\Maps\URLVanillaObfuscationMap($url)
```

The second parameter in this example is the mapping type. Mojang releases both server and client Obfuscation Maps, so you will have to pick the one that matches your environment.

#### Fabric

[](#fabric)

Fabric logs are already mapped from Vanilla's obfuscated names to Intermediary. These are different mappings that aim to keep names consistent across multiple versions. To process such a log you need the corresponding Yarn mappings. You can get the URL to a gzip map file from the Fabric Maven repository like this:

```
$url = new \Aternos\Sherlock\MapLocator\FabricMavenMapLocator("1.18.2-pre1");
$map = new \Aternos\Sherlock\Maps\GZURLYarnMap($url);
```

Yarn mappings are not environment dependent since Intermediary already takes care of the differences.

#### Caching Map contents

[](#caching-map-contents)

When you have created an Obfuscation Map you can get the raw content using the getContent() method. You can cache that to reduce requests to the APIs that are used to retrieve them. When you want to create an Obfuscation Map from a string directly you can create an instance of VanillaObfuscationMap and YarnMap directly.

### Remapping a log using the Obfuscation Map

[](#remapping-a-log-using-the-obfuscation-map)

```
$log = new \Aternos\Sherlock\ObfuscatedString(file_get_contents("test.log"), $map);
$remappedContent = $log->getMappedContent();
file_put_contents("test.mapped.log", $remappedContent)
```

The content will only be mapped once you try to retrieve it and will be stored from then on.

###  Health Score

43

—

FairBetter than 90% of packages

Maintenance70

Regular maintenance activity

Popularity21

Limited adoption so far

Community13

Small or concentrated contributor base

Maturity59

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 89.2% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~235 days

Recently: every ~344 days

Total

7

Last Release

135d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/182e603c02f308d1036a1ecaba0b994665e87d13a86ff4550a96c9189a92c544?d=identicon)[aternos](/maintainers/aternos)

---

Top Contributors

[![JulianVennen](https://avatars.githubusercontent.com/u/45244473?v=4)](https://github.com/JulianVennen "JulianVennen (33 commits)")[![pavog](https://avatars.githubusercontent.com/u/4786628?v=4)](https://github.com/pavog "pavog (2 commits)")[![qitry](https://avatars.githubusercontent.com/u/193598559?v=4)](https://github.com/qitry "qitry (2 commits)")

###  Code Quality

TestsPHPUnit

### Embed Badge

![Health badge](/badges/aternos-sherlock/health.svg)

```
[![Health](https://phpackages.com/badges/aternos-sherlock/health.svg)](https://phpackages.com/packages/aternos-sherlock)
```

###  Alternatives

[bircher/php-merge

A PHP merge utility using the Diff php library or the command line git.

3729.2k](/packages/bircher-php-merge)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
