|
2 | 2 |
|
3 | 3 | <p align="center"><img src="public/kitsune-paint-hero.png" width="300" height="300" alt="KitsunePaint" /></p> |
4 | 4 |
|
5 | | -> A web-based custom paint pack creator for 7 Days to Die. |
| 5 | +<p align="center"> |
| 6 | + <strong>A web-based custom paint pack creator for 7 Days to Die.</strong><br/> |
| 7 | + <a href="https://paint.kitsuneden.net">paint.kitsuneden.net</a> |
| 8 | +</p> |
6 | 9 |
|
7 | | -Upload your textures, preview how they tile on a wall, download a ready-to-install modlet. No Unity knowledge required. |
| 10 | +Upload your textures, preview how they tile on a wall, download a ready-to-install modlet. No Unity installation required. |
8 | 11 |
|
9 | 12 | ## What it does |
10 | 13 |
|
11 | | -1. **Upload** — drag and drop your PNG textures (diffuse required, normal/specular optional) |
12 | | -2. **Preview** — see how your texture tiles on a simulated block wall before you commit |
13 | | -3. **Configure** — name your paint, pick a group, tweak tiling |
14 | | -4. **Download** — get a complete `.zip` modlet ready to drop into your `Mods/` folder |
| 14 | +1. **Upload** — drag and drop PNG/JPG textures in Simple mode (diffuse only) or PBR mode (diffuse + normal + specular) |
| 15 | +2. **Preview** — see exactly how your texture tiles on a simulated block wall before you commit |
| 16 | +3. **Configure** — name your paint, pick a group (Masonry, Wallpaper, Tiles etc), tweak tiling |
| 17 | +4. **Download** — get a complete `.zip` modlet with painting.xml, Localization.txt, ModInfo.xml, and all source textures |
| 18 | +5. **Build bundles** — run the included Python script to generate `Atlas_XXX.unity3d` asset bundles — one per paint, scales to 20+ paints |
| 19 | + |
| 20 | +## Bundle Builder |
| 21 | + |
| 22 | +The web tool generates the modlet zip. To get textures rendering in-game you also need to run the Python bundle builder: |
| 23 | + |
| 24 | +```bash |
| 25 | +pip install UnityPy Pillow |
| 26 | +python scripts/build_bundle.py "path/to/your/modlet/Resources" |
| 27 | +``` |
| 28 | + |
| 29 | +This generates per-paint Unity asset bundles with proper mipmap data, DXTnm normals, and unique CAB names. No Unity installation needed. |
15 | 30 |
|
16 | 31 | ## Dependencies |
17 | 32 |
|
18 | | -- [OCBCustomTextures](https://www.nexusmods.com/7daystodie/mods/2788) core mod (EAC must be off) |
| 33 | +- [OCBCustomTextures](https://www.nexusmods.com/7daystodie/mods/2788) v0.8.0+ — must be installed on server and client |
| 34 | +- EAC must be disabled on both server and client |
19 | 35 | - 7 Days to Die V2.0+ |
| 36 | +- Python + `pip install UnityPy Pillow` (for bundle builder only) |
20 | 37 |
|
21 | 38 | ## Tech Stack |
22 | 39 |
|
23 | 40 | - Vite + React + TypeScript |
24 | 41 | - Tailwind CSS |
| 42 | +- JSZip (modlet packaging) |
| 43 | +- UnityPy + Pillow (bundle builder) |
25 | 44 |
|
26 | 45 | ## Project Structure |
27 | 46 |
|
28 | 47 | ``` |
29 | 48 | src/ |
30 | | - components/ # Reusable UI components |
31 | | - pages/ # Route-level page components |
32 | | - hooks/ # Custom React hooks |
33 | | - types/ # TypeScript type definitions |
34 | | - utils/ # Helper functions |
35 | | - stores/ # State management |
| 49 | + components/ # TextureUploader, WallPreview, PaintTray, PackMeta |
| 50 | + pages/ # LandingPage, routed via App.tsx |
| 51 | + types/ # TypeScript type definitions |
| 52 | + utils/ # buildModlet.ts — zip generation |
| 53 | +scripts/ |
| 54 | + build_bundle.py # Python bundle builder |
| 55 | + Atlas.template.unity3d # Template bundle for injection |
| 56 | +public/ |
| 57 | + .htaccess # SPA routing for Apache |
36 | 58 | ``` |
37 | 59 |
|
38 | 60 | ## Part of the Kitsune Ecosystem |
|
0 commit comments