Halvern Works
04 — Case study

LOOM Engine

SystemsDigital
Discipline
Engine · Web tooling
Year
2026
Status
Live
Team
01
Overview

LOOM is the proof-carrying merge engine behind the Minecraft Resource Pack Merger. It combines many Minecraft Java Edition resource packs into a single clean, optimized pack — entirely in the browser, with nothing ever uploaded to a server.

AThe difference

Naïve merge vs LOOM

Conflicts
Naïve merger
Last pack wins — files are overwritten by priority.
◆ LOOM
Emulates Minecraft’s own stack and merges only when it can prove the result is equivalent.
Awareness
Naïve merger
Treats every file as opaque bytes.
◆ LOOM
Understands models, blockstates, OptiFine/CIT/CEM and PBR normal/specular maps, languages and fonts.
Correctness
Naïve merger
Unverified — you find breakage in-game.
◆ LOOM
Proof-carrying — every merged asset is audited before it ships.
Versions
Naïve merger
Manual re-export per version.
◆ LOOM
Ports pack_format and legacy files across 1.6.1–1.21.5.
Privacy
Naïve merger
Often uploaded to a server.
◆ LOOM
100% local — packs never leave your browser.
BInside a merge

The pipeline

Where a naive merger simply overwrites files by priority, LOOM emulates how Minecraft's own resource-pack stack resolves each file and merges only when it can prove the result is equivalent. It understands the structure of a pack — 3D models, blockstates, OptiFine/CIT/CEM references and PBR normal/specular maps, languages and fonts — and can port a pack's pack_format and legacy files across Minecraft versions from 1.6.1 to 1.21.5.

  1. 01
    Ingest
    Unzip & hash packs
  2. 02
    Analyze
    Detect every conflict
  3. 03
    Stack Oracle
    Prove equivalence
  4. 04
    Merge
    Resolve & combine
  5. 05
    Optimize
    Lossless slimming
  6. 06
    Package
    Fast custom .zip

The Stack Oracle is what makes the merge proof-carrying.

CArchitecture

Off the main thread

The engine runs off the main thread in a Web Worker, holding pack bytes in a vault so the interface only ever touches byte-free projections — even large multi-pack merges stay responsive. Conflict resolution, lossless optimization and a fast custom .zip packager all run locally; there is no install and no account.

UI · main thread
Interface

Holds only byte-free projections (PackSummary). Stays responsive — it never touches raw pack bytes.

postMessage · transferable buffers
Web Worker · LOOM engine
Engine + vault

A PackVault keeps the real bytes here. Analyze, Stack Oracle, merge, optimize and the .zip packager all run off-thread.

DCapabilities

What it does

01

Proof-carrying merges, verified against Minecraft’s own resource-pack stacking

02

3D-model, OptiFine/CIT/CEM and PBR (normal/specular) aware

03

Version porting across Minecraft Java 1.6.1–1.21.5 (pack_format 1–46)

04

100% local — resource packs never leave your browser

05

Off-thread engine architecture for responsive, large multi-pack merges

1.6.1–1.21.5
Minecraft Java range
1–46
pack_format supported
0
files uploaded
1 : 1
proof per merged asset
Try it in your browser

Free, no account, nothing uploaded. Drop your packs and build a single merged, optimized resource pack.

Open the Minecraft Resource Pack Merger →
Process imagery
Mark study
Accent texture