Feature Plan: Resource Pack Pipeline โ
Summary โ
- Owner: Freddi
- Status: Delivery
- Target Release: Rolling
- Backlog Entry: Projects/Uebliche/agendas.md โธ ๐ฆ Backlog โธ Resource pack automation
Goals โ
- Build and ship a unified resource pack for all network servers from server-managed assets.
- Allow designers to manage textures, models, and metadata from the desktop editor.
- Keep pack generation deterministic, versioned, and compatible with runtime asset loading.
Scope โ
- Compile assets through
ResourcePackBuilderand coordinate distribution viaResourcePackManager. - Bootstrap default assets with
features/resourcepack/support/AssetsBootstrapper. - Serve resource pack metadata to game clients through Minestom hooks.
- Integrate with the desktop app editors for textures and model uploads.
- Exclude in-game editing tools beyond what the desktop app already offers.
Implementation Outline โ
- Asset ingestion: REST endpoints in
EditorWebServicewrite to storage and notifyResourcePackManager. - Build pipeline:
ResourcePackBuilderassembles pack zip, applying overrides and version stamping. - Distribution: Minestom handshake advertises the latest pack URL and hash to connecting players.
- Tooling: Desktop app editors (
Textures.vue,ItemModels.vue) upload assets with validation. - Ops: Document packaging steps and release commands here and in the vault mirror.
- Server automation:
ResourcePackBuilderruns PackSquash, uploads artifacts to Spaces, and upsertsResourcepackmetadata after each commit.
Dependencies โ
- File storage (S3-compatible) mounted via Docker secrets for pack artifacts.
- Minestom resource pack API for client delivery.
- Desktop app asset editors and REST endpoints exposed by the server.
Risks & Mitigations โ
- Large packs: Implement differential rebuilds and monitor build times via
features/monitoring. - Broken assets: Add lint checks and staging previews in the desktop editor before publishing.
- Hash drift: Version pack outputs and store metadata in Mongo to avoid stale cache issues.
Validation Plan โ
- Automated tests for builder utilities (e.g., JSON merging, hash calculation).
- Manual smoke test by connecting a client to
dev-composeand verifying pack download. - Track build success metrics and failures in monitoring dashboards.
Notes & Decisions โ
- Document major asset pipeline changes (file structure, pack format) under agenda
โ๏ธ Decisions. - Keep this plan mirrored in
/Projects/Uebliche/docs/gameserver/features/resourcepack/plan.md. - Environment contract:
RESOURCEPACK_S3_BUCKET, optionalRESOURCEPACK_S3_PREFIX,RESOURCEPACK_PUBLIC_BASE_URL, andRESOURCEPACK_S3_REGIONmust be provided alongsides3_access_id/s3_secret_keysecrets for automated publishing.
References โ
services/gameserver/src/main/java/net/uebliche/features/resourcepack/ResourcePackBuilder.javaservices/gameserver/src/main/java/net/uebliche/features/resourcepack/ResourcePackManager.javaservices/gameserver/src/main/java/net/uebliche/features/resourcepack/support/AssetsBootstrapper.java- Desktop textures and model editors under
app/dashboard/src/views/home