F2+F3

Screenshot manager for technical Minecraft

Every screenshot remembers where it was taken

F2+F3 reads the coordinates, biome, mobs and builds behind each screenshot and keeps them one click away. Its Fabric mod puts the same gallery, your map plans and a materials list inside the game.

Download

v1.0.2
Free and open source · MIT

F2+F3 gallery showing a grid of Minecraft screenshots with biome and coordinate labels
The gallery, with the data of every capture read from the game.

In practice

Three keys you already know

There is nothing to learn. You keep taking screenshots the way you always have.

  1. Press F2

    Take the screenshot as usual. With the mod installed, the exact game data is saved next to it. Without the mod, leave F3 open and the app reads it from the image.

  2. Open F2+F3

    Your captures appear sorted by world and folder. Search by biome, dimension or mob, and copy the coordinates or a /tp command with one click.

  3. Go back there

    Press F6 in the game, pick a capture and follow the arrow. Or pin the materials of a build to the HUD and gather them.

The desktop app

A launcher for your screenshots

It looks like the Minecraft Launcher on purpose, so it feels like part of the game. It works with the official launcher and with instance launchers, several game folders at once.

Everything about one capture

Position, chunk, facing, light, weather, game mode, the block and entity at the crosshair, nearby mobs and structures. Every value shows where it came from.

  • Copy XYZ or a ready /tp command
  • Technical panel: TPS and MSPT, mob caps, gamerules, redstone signal, container contents
  • Villager trades of the villager you were looking at
Screenshot viewer with a details panel listing coordinates, biome, light and technical data

Map and planners

Every capture is a point on a map per world and dimension. Switch between Overworld and Nether coordinates, see chunk and region borders, and the slime chunks of your seed.

  • AFK planner: the 24 and 128 block spawn spheres around a spot, and which farms stay loaded
  • Portal planner: where a portal will actually link
  • Export waypoints for Xaero and JourneyMap
Map view with captures as points, chunk grid, slime chunks and the AFK planner spheres

Builds you can take with you

Hold Shift and press F2 to capture a build with its photo. The app shows its size and materials in stacks, exports the .nbt, or pastes it into another world.

  • Standard vanilla structure format
  • Material list ready to copy
  • Place it back from the in-game gallery, rotated to where you face
Build section listing the materials of a captured build in stacks

Gallery

Folders, favourites, notes and tags on top of your real screenshots folder. Nothing is copied or locked in a database.

Backup to your own Google Drive

Sign in with Google and the captures and their data go to a folder in your account. The app only sees the files it created.

English and Spanish

One button switches the whole interface. The mod follows the language of the game.

Linux and Windows

AppImage and Windows installer. It can start with the system and stay in the tray watching for new captures.

F2+F3 Companion · Fabric

The app, inside the game

A client-side mod for Minecraft 26.3, 1.21.1 and 1.20.1. It needs no other mod, not even Fabric API.

In-game gallery

In-game gallery

F6

Your captures of this world with their data, notes and favourites from the app. Copy the coordinates or ask to be guided there.

Pinned materials list

M

Pin the materials of a build to the right of the HUD. It counts your inventory as you gather and ticks off each line until you have everything.

Your map plans in the world

J+Shift+J

The AFK spot with its 24 and 128 block spheres, your farms, linked portals and slime chunks, drawn where they are.

Capture and place builds

Capture and place builds

Shift+F2

Mark depth, width and height with the wheel, name it and it is saved. Placing it shows a box you can rotate and move before confirming, with undo.

Guide

Guide

H

An arrow on the HUD with the distance and how far up or down. Between the Overworld and the Nether it points to the matching coordinates.

{
  "format": "f2f3-companion", "schema": 1,
  "world": { "name": "Technical", "seed": "-1844849896984713791",
             "dimension": "minecraft:overworld", "day": 12, "weather": "clear" },
  "player": { "block": { "x": -1374, "y": 67, "z": -2035 },
              "facing": { "direction": "north", "yaw": -151.8 } },
  "biome": "minecraft:desert", "light": { "sky": 15, "block": 0 },
  "target": { "entity": { "id": "minecraft:villager", "distance": 3.2 } },
  "entities": [ { "id": "minecraft:camel", "count": 2, "nearest": 12.5 } ],
  "structures": { "inside": [ "minecraft:village_desert" ] },
  "game": { "tick": { "rate": 20.0, "mspt": 3.06 } }
}

Exact data with every F2

F2

A small JSON file next to the image with what the game knows: seed, biome, structures you are inside, visible mobs, gamerules and tick rate.

Under the hood

How it knows

A capture can be described by up to five sources. Each is stored separately, and the app always shows the most reliable one available, labelled with its origin.

  1. Mod

    The companion file written by the mod at the moment of the capture. Read straight from the game, including things F3 never shows.

    Exact
  2. F3

    OCR of the debug screen. No machine learning: the app loads the game font from your installed version and matches its glyphs pixel by pixel.

    Exact
  3. Advanced AI

    Optional, with your own key or a local Ollama. A vision model describes the scene, including structures.

    Estimated
  4. Local model

    Optional 170 MB download that runs offline on your CPU. Biome and the mob at the crosshair, and only when it is confident.

    Local
  5. Colours

    Always available. Dimension and a rough scene guess from the colours of the image.

    Approximate

A value you set by hand beats all of them. Re-analysing a capture keeps the AI and manual results, so nothing is paid for twice.

Reading F3 without guessing

Minecraft draws its debug screen with a bitmap font, so every character is an exact pattern of pixels. F2+F3 extracts that font from the jar of your installed version, finds the GUI scale of the capture and compares glyphs directly. The result is the number the game printed, not an approximation of it.

The parser then understands the layout of each version: position, chunk, facing, light, the targeted block with its state and tags, server TPS and MSPT, /tick state, day, and the mob cap counters by category.

Reading F3 without guessing

One small contract between mod and app

The mod and the app never talk to each other. They share four files, validated with a schema where each section fails on its own: a malformed block of data is dropped and the rest is kept.

FileDirectionContents
NAME.f2f3.jsonmod → appExact data of one capture
NAME.f2f3.nbtmod → appThe build, as a vanilla structure
f2f3/app-index.jsonapp → modNotes, tags and sheets for the in-game gallery
f2f3/plans.jsonapp → modAFK and portal plans per world

Architecture

Electron, React and TypeScript, split so that the logic that matters has no dependency on Electron and is tested on its own.

core/Pure logic: font and OCR, F3 parser, NBT reader, local vision, analysis resolution. No Electron.
main/Services: library, analysis worker pool, thumbnails, capture watcher, Drive backup, AI providers.
shared/Typed IPC contract, catalogs, slime chunks, planners, placement maths, translations.
renderer/React and Zustand. It cannot import core: it only sees the typed bridge.
  • Analysis runs in worker threads and is cached by file size and modification time
  • Context isolation, sandbox and a strict CSP; API keys never leave the main process and are encrypted with the system keychain
  • 172 automated tests, with real fixtures: F3 screenshots, mod files and .nbt builds from each supported version

Game mechanics, checked against the game

The planners do not rely on wiki folklore. The rules were read from the game bytecode and the slime chunk formula is validated against the game own random generator.

  • Mobs spawn between 24 and 128 blocks from the player, in a 3D sphere
  • A chunk spawns mobs only if its centre is within 128 horizontal blocks
  • Portals search a ±16 block square in the Nether and ±128 in the Overworld, over the full height, picking the closest in 3D
  • Slime chunks computed from the seed with 64-bit arithmetic
Game mechanics, checked against the game

One mod, three Minecraft versions

The mod is written once against 26.3, which ships unobfuscated. The 1.21.1 and 1.20.1 ports keep the same code and add a thin compatibility layer that imitates the newer classes, so a feature is ported by copying it.

  • Every hook is a mixin: screenshot, tick, HUD, keyboard and mouse wheel
  • Files are written off the game thread, to a temporary file and then moved, so the app never reads half a file
  • Builds are placed through the integrated server, not with commands, so it works without cheats
MinecraftJavaMappingsRendering of world shapes
26.325None neededGame gizmos API
1.21.121Official MojangOwn layer over Tesselator
1.20.117Official MojangOwn layer, PoseStack

Artificial intelligence

AI, with the numbers on the table

When there is no mod and no F3 on screen, the image is all there is. F2+F3 has two AI levels for that case. Both are optional, both are labelled as estimates, and we measured how often the local one is right.

The local model

A CLIP ViT-B/32 vision model in half precision, run with ONNX on your CPU. Nothing is uploaded. It works zero-shot: instead of training a classifier, the image is compared with text descriptions of each biome and mob.

Those descriptions are embedded once, when the app is built, and shipped as a small JSON file. That is why you only download the vision half of the model: 170 MB instead of the full pair.

  • Two crops per capture: the scene without the F3 columns and the hotbar for the biome, and the area around the crosshair for the mob
  • Candidates are limited to the dimension: no ghasts in the Overworld
  • It answers only above a confidence threshold and with a clear margin over the runner-up
  • Colour checks veto impossible answers: a cherry grove needs pink, a desert needs sand
  • Structures are left to the advanced level: local zero-shot models could not tell them apart in our tests

Measured, not promised

We built a labelled set in the game: the mod wrote the real biome of every capture and we summoned each mob at the crosshair. Then the local model analysed the images without that data.

85%mob precision17 of the 20 answers it gave were right
42.3%biome precision30 of the 71 answers it gave were right
2false mob alarms2 of 177 captures without a mob at the crosshair
54 msper captureon CPU, both crops included

What it did with each capture

Biomes it knows124 captures · 30 / 41 / 53
Biomes it has no label for53 captures · 0 / 28 / 25
Mob at the crosshair71 captures · 17 / 3 / 51

RightWrongDid not answer

With mobs the model does what it was designed for: it stays quiet most of the time, and when it speaks it is usually right. Biomes are its weak point. A general-purpose model confuses neighbouring biomes and has no label for many of them, which is why the app shows its biome as an estimate you can correct, and why the exact sources always win.

Method

  • 248 captures taken in Minecraft 26.3 at 1918×1078, default resource pack, by a script that teleports to each biome
  • Five captures per biome site from different points and angles, four at midday and one at dusk; each mob three to five blocks away, in three settings per dimension, one of them at night
  • Ground truth: the biome reported by the game at the player position and the mob that was summoned
  • The dimension was given, as F3 provides it; the F3 overlay itself was hidden
  • Underground biomes were not sampled, and the biome is the one where the player stands, which near a border is not always the one in view

Xenova/clip-vit-base-patch32 (fp16)

Results by biome
CapturesRightWrongNo answer
badlands2002
basalt_deltas3021
beach1100
cherry_grove2002
crimson_forest7322
dark_forest7142
desert6033
end_highlands2110
forest6024
jungle3111
meadow2110
mushroom_fields1010
nether_wastes11722
ocean3201
plains13193
river13256
savanna8026
snowy_plains10406
soul_sand_valley2011
stony_peaks3012
swamp2002
taiga9036
the_end6510
warped_forest2101
Results by mob
CapturesRightWrongNo answer
blaze3003
chicken3003
cow3003
creeper3102
enderman8701
ghast3003
hoglin3003
horse3003
iron_golem3003
pig3111
piglin3012
sheep3102
skeleton6006
slime3300
spider3201
strider3003
villager3012
witch3102
wolf3003
zombie3003
zombified_piglin3102

The advanced level

For the captures that matter, a large vision model can describe what a small one cannot: structures, weather, time of day, every mob in the frame. You choose the provider and use your own key.

  • Claude, OpenAI or any compatible endpoint, Gemini, or Ollama running on your machine
  • The answer must follow a fixed schema and is validated before it is stored
  • What F3 already read is passed as context, and the model is told to ignore the debug text
  • Batch analysis asks for confirmation with the number of requests before spending anything
  • Keys are stored encrypted on your computer and never reach the interface code
The advanced level

Built with AI, too

F2+F3 was developed in pair with Claude Code: the app, the mod and its ports, the tests and this evaluation. Every commit in both repositories says so.

Download

Get F2+F3

Free and open source. The app includes the mod: Settings › Save the mod puts the right jar in your mods folder.