Design Minecraft rank tags that look sharp in-game.
TagForge is a client-side web app for Minecraft Java server owners to create pixel-art rank tags, export PNGs, and package them into a ready-to-use resource pack font. It helps admins make chat prefixes, TAB entries, holograms, NPC labels, and menu text look polished without editing assets manually.
Server Owner Dimas, 29 - Runs a mid-sized Java Edition survival server and manages ranks, chat formatting, and cosmetic consistency. He wants a fast way to create premium-looking tags without hiring a designer.
Community Admin Rina, 22 - Moderates a large public server and frequently changes event badges, helper ranks, and temporary tags. She needs batch creation and consistency across multiple ranks.
Plugin Setup Maker Fajar, 34 - Maintains multiple server plugins and cares about compatibility, version differences, and deployment speed. He wants a tool that reduces guesswork around ascent, height, and pack format.
Dimas runs a Minecraft survival server with a growing staff team. Every time he wants a new rank tag, he previously had to ask a designer for a PNG, then manually wire it into a resource pack and hope the font alignment worked in game.
With TagForge, Dimas types the rank name, picks a rounded template and a blue-to-cyan gradient, and immediately sees the result in a mock chat preview. He exports a ZIP resource pack, copies the character snippet into TAB, and adjusts ascent by a single click until the tag sits perfectly in chat.
What used to take hours now takes minutes, and the server gets a more polished visual identity without custom design work. For the business, that means faster adoption, repeat usage for new seasonal ranks, and a tool that becomes part of the server admin workflow.
Team & resourcing - Small team - 2 frontend engineers, 1 designer, part-time PM, optional QA support.
Paste this into Cursor, Bolt, Lovable, or v0 to start building.
Build a client-side web app called TagForge for Minecraft Java server owners to create pixel-art rank tags and export them as PNGs plus a ready-to-use resource pack ZIP. Use Vite, React, TypeScript, and Tailwind CSS. Keep everything statically hostable with no backend. Use Canvas API for rendering and JSZip for ZIP generation. Core product requirements: 1. Generator page where users type rank text, auto-uppercase it, and validate supported characters. 2. Controls for template shape: Square, Rounded, Bevel, Outline. 3. Style controls for primary color, secondary color, gradient toggle, gradient direction, border toggle, border color, border thickness, shadow toggle, font size normal or big, and optional icon before/after text. 4. Live pixelated preview with integer zoom, plus a Minecraft-like mock chat preview and nametag preview. 5. Single PNG download and batch list support for add, edit, delete, duplicate, reorder. 6. Resource pack export that generates pack.mcmeta, font JSON providers, and PNG assets in a ZIP. 7. Private-use Unicode character allocator starting at U+E000 with persistent slug-to-character mapping in localStorage and a configurable offset to avoid collisions. 8. Copyable JSON snippet for use with LuckPerms, TAB, or similar plugins. 9. Optional custom namespace pack output so generated font files do not overwrite default.json from other packs. 10. Preset save/load in localStorage and export/import of preset JSON. 11. Custom 7x7 icon set plus user icon upload with nearest-neighbor resizing. 12. Tutorial and FAQ pages explaining install steps, resource pack activation, and ascent/height calibration. Data model: TagSpec should include text, template, font, bgStart, bgEnd, bgGradient, gradientDir, textColor, shadowEnabled, borderEnabled, borderColor, borderThickness, icon, customIcon, ascent, height, minecraftVersion, namespaceMode, and slug. Architecture: Use a clean folder structure with core rendering, measure logic, templates, icons, pack generation, sanitize utilities, and UI components. Implement original pixel font glyph data in the app and generate the atlas at runtime; do not depend on third-party font artwork. UX expectations: Make the app fast, touch-friendly, and visually crisp. Prevent blurry scaling. Show validation errors inline. Make exports deterministic and safe. Add accessibility labels, keyboard navigation, and clear empty states. Deliver a polished MVP first, then extend to gradient, border, shadow, batch export, ZIP packaging, presets, icons, and tutorial content. Seed the app with sensible defaults so a first-time user can create and download a tag in under 2 minutes.
# Planning Lengkap: Minecraft Rank Tags Generator ## 1. Ringkasan **Tujuan:** website (client-side) untuk membuat tag rank pixel-art (PNG) dan langsung menghasilkan resource pack font bitmap siap pakai di server Java Edition. **Target pengguna:** owner/admin server Minecraft yang ingin prefix rank, hologram, NPC, dan menu terlihat modern. **Di luar scope (awal):** Bedrock, akun/login, penyimpanan di server, pembayaran. ## 2. Alur pengguna 1. Buka halaman generator, ketik teks rank 2. Pilih template, warna, gradient, ikon, border, shadow 3. Lihat live preview (zoom pixelated) dan mockup chat 4. Tambah ke daftar (batch) atau langsung download PNG 5. Export ZIP resource pack lengkap 6. Baca tutorial pasang (resource pack → LuckPerms/TAB/hologram) ## 3. Fitur **Wajib (MVP)** - Input teks (otomatis uppercase), validasi karakter yang didukung - Template: Rounded, Square, Bevel, Outline - Warna utama + kedua, toggle gradient, arah gradient - Warna dan toggle border, toggle shadow teks - Download PNG - Snippet JSON + tombol copy **Lanjutan** - Batch list (tambah, edit, hapus, urutkan, duplikat) - Export ZIP berisi `pack.mcmeta`, `font/*.json`, dan semua PNG - Ikon 7x7 bawaan + upload ikon custom (otomatis di-resize nearest-neighbor) - Preset warna, simpan/muat konfigurasi (localStorage + export JSON) - Mockup chat dan nametag Minecraft - Pengaturan karakter unik: kode mulai, mode otomatis/manual - Pilihan ukuran: normal dan besar ## 4. Arsitektur teknis **Stack:** Vite + React (atau vanilla) + TypeScript + Tailwind + JSZip. Tanpa backend, jadi bisa di-host statis (Vercel/Netlify/Cloudflare Pages). **Struktur folder** ``` src/ core/ spec.ts // tipe + default TagSpec font/ // data pixel font sendiri + loader atlas measure.ts // hitung ukuran tag render.ts // gambar ke canvas (layer) templates.ts // bentuk: rounded/square/bevel/outline icons.ts // ikon bawaan (grid 7x7) pack/ charAllocator.ts // karakter unik PUA fontJson.ts // bikin provider bitmap zip.ts // pack.mcmeta + assets + zip sanitize.ts // slug nama file ui/ // komponen, halaman, state public/ // aset landing ``` **Model data (`TagSpec`)** ``` text, template, font(normal|big), bgStart, bgEnd, bgGradient, gradientDir, textColor, shadowEnabled, borderEnabled, borderColor, borderThickness, icon | customIcon ``` ## 5. Pipeline render 1. **spec** → gabung dengan default 2. **measure** → hitung lebar/tinggi dari: ikon + padding + panjang teks (letterWidth, spacing) + border 3. **render** per layer, berurutan: plate (solid/gradient) → ikon → teks (glyph bitmap) → shadow → border → pemangkasan sudut sesuai template 4. **preview** → canvas ditampilkan dengan `image-rendering: pixelated` dan scale integer (x4 / x8) 5. **export** → `canvas.toBlob('image/png')` **Pixel font:** buat sendiri set glyph (misal 5x7, A–Z, 0–9, simbol umum) sebagai array bit. Saat load, generate atlas ke canvas kecil per karakter, versi normal dan versi shadow. Ini bagian orisinal yang harus kamu miliki; jangan pakai atlas dari situs lain. **Template:** definisikan sebagai mask sudut (pixel yang dibuang) plus aturan border, jadi mudah menambah bentuk baru. ## 6. Sistem resource pack **Alokasi karakter:** counter mulai `U+E000` (rentang Private Use sampai `U+F8FF`), `String.fromCodePoint(n)`. Di JSON ditulis escape `\ue000`. Simpan mapping `slug → karakter` di state/localStorage supaya konsisten antar sesi. Beri opsi offset agar tidak bentrok dengan pack lain. **Provider per tag** ```json { "type": "bitmap", "file": "minecraft:sb/<slug>.png", "ascent": 8, "height": 9, "chars": ["\ue000"] } ``` - `height` default = tinggi PNG hasil export (1:1), `ascent` default = height − 1, dengan slider penyesuaian (karena posisi vertikal perlu dicek di game) - Nama file: lowercase, hanya `a-z 0-9 _ - .`; spasi dan `#` diganti, cegah duplikat - Teks di game sebaiknya putih (`&f`) agar warna PNG tidak tercampur **Struktur ZIP** ``` pack.mcmeta // pack_format sesuai versi target assets/minecraft/font/default.json // {"providers":[ ... ]} assets/minecraft/textures/sb/*.png ``` Tambahkan opsi: pakai font custom (namespace sendiri) agar tidak menimpa `default.json` milik pack lain. Nilai `pack_format` berbeda tiap versi Minecraft, jadi sediakan dropdown versi target dan cek ke dokumentasi resmi. ## 7. Halaman dan UI - **Landing:** hero, 3 kartu fitur, CTA - **Generator:** panel kontrol, preview, daftar batch, snippet, download - **Tutorial:** pasang pack, pakai di LuckPerms (prefix), TAB, hologram/NPC/menu, troubleshooting - **FAQ/Support** - Desain visual sendiri (tema, warna, tipografi); ambil konsep saja dari referensi, jangan meniru tampilannya ## 8. Roadmap | Fase | Isi | Hasil | |---|---|---| | 1 | Setup project, pixel font + atlas, measure, render, template Square, solid color | Teks jadi PNG, download | | 2 | Gradient, border, shadow, template Rounded/Bevel/Outline | Variasi tampilan lengkap | | 3 | Alokator karakter, snippet JSON, sanitize nama | JSON siap copy | | 4 | Batch list, export ZIP | Resource pack utuh | | 5 | Ikon, upload ikon custom, preset, simpan config | Kustomisasi penuh | | 6 | Mockup chat, landing, tutorial, FAQ, responsive | Siap rilis | | 7 | Testing di game, deploy, analytics ringan | Versi publik | ## 9. Testing - **Unit:** `measure` (lebar/tinggi tiap kombinasi), alokator karakter (tidak duplikat), sanitize, JSON valid - **Visual:** snapshot PNG untuk beberapa spec - **Uji nyata di game (wajib):** pasang pack di Java 1.21.x, cek chat, tab list, hologram, menu; sesuaikan `ascent/height` - **Browser:** Chrome, Firefox, Safari, mobile ## 10. Risiko dan mitigasi - **Posisi vertikal tag meleset** → slider ascent + panduan kalibrasi - **Bentrok karakter unik antar pack** → offset kode dan custom font namespace - **Pixel font tidak cukup lengkap** (simbol/karakter non-latin) → batasi set karakter, tampilkan peringatan - **Pelanggaran hak cipta** → font, ikon, template, dan UI dibuat sendiri atau berlisensi bebas ## 11. Kriteria selesai (MVP) - Tag dengan teks, warna, dan gradient bisa dibuat dan di-download - JSON snippet valid dan karakternya unik - ZIP bisa dipasang di Minecraft Java dan semua tag tampil benar di chat - Berjalan lancar di desktop dan mobile
Design by The Resonance | Powered by GPC – The AI Transformation Company