- Python 100%
Convert now works on Windows + macOS + Linux (verified on macOS Blender 5.1.2). Tutorial covers all three OSes (jar paths, offline-verify commands). Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> |
||
|---|---|---|
| .forgejo/workflows | ||
| reports | ||
| .gitignore | ||
| patch_ekaiivision.py | ||
| README.md | ||
EkaiiVision 4
A fully-offline build of VoxelVision 4 — Erasers45-Studios' Blender→Minecraft add-on — with its only outbound path removed. Same modeling, same converters, same exporters. One difference: it can make zero network requests.
VoxelVision 4 is already remarkably clean (no telemetry, no license server, no phone-home —
see reports/AUDIT.md). EkaiiVision applies one surgical change on top:
- Zero outbound. The 3
wm.url_openbuttons (FAQ / BakeLab / Discord) — the add-on's only network-touching code — are replaced with an inert label. Nothing can leave the host.
Everything else is kept byte-for-byte: the geometry-nodes engine, the .blend asset
library, the vendored mcschematic / nbtlib / mc_import modules, all 43 .pyc.
Why it's safe (the short version)
A full audit (static AST + bytecode disassembly + .blend script extraction) found:
- No network capability at all — no
socket/urllib/requests/httpimport anywhere. - No license/activation/DRM — VoxelVision is content-gated (paid = a bigger asset
.blend), not server-gated. Nothing checks anything online. This is why it runs offline. - No phone-home, no kill switch, no telemetry, no out-of-add-on writes.
- The one scary-looking artifact — a persistent timer + auto-register script embedded in the
.blend— is a geometry-nodes UI refresher + a local texture-bake pipeline. Zero network. - 43/43
.pycreconciled with source: 42 byte-identical, 1 differs only by a stale leftover import (from nbtlib.tag import File) — benign, and inert (timestamp.pyc, recompiled from.pyon extraction anyway).
Read the audit. Trust the patch.
How it works
patch_ekaiivision.py is a single-file, deterministic patcher. It takes the official
VoxelVision .zip, rewrites exactly one block in voxelvision/__init__.py (the 3
wm.url_open buttons → one inert label), and writes a hardened .zip. It refuses to ship a
partial patch if upstream's layout changes (asserts exactly one match, asserts no url_open
survives).
| File | Change | Why |
|---|---|---|
voxelvision/__init__.py |
3× wm.url_open buttons (FAQ/BakeLab/Discord) → 1 inert label |
privacy: the only outbound path |
voxelvision/__init__.py |
GN append path … + r'\NodeTree' → os.path.join(…, 'NodeTree') |
bugfix: hardcoded Windows separator broke Convert on macOS/Linux; os.path.join uses the native separator on every OS (identical to stock on Windows, fixed on macOS/Linux — convert verified on Blender 5.1.2/macOS) |
| everything else | untouched |
Feature impact: you lose 3 help/credit link buttons. Nothing functional breaks —
convert, .schem/.bp/.mcstructure export, palettes, and .jar texture import (the local
child-Blender bake) all work. The /NodeTree fix actually makes Convert work on macOS/Linux,
which the stock build does not.
Behavioral proof (run on Blender 5.1.2, macOS)
Blender driven headless with this offline build installed, under continuous lsof capture of
the whole Blender process tree (5 Hz):
- Generate Block Database (the child-Blender bake /
subprocesspath) →Database.blendcreated → 0 internet sockets. - Enable add-on + Export Schematic → a real Sponge
.schemwritten by the bundledmcschematic→ 0 internet sockets.
Zero outbound, every network-capable path exercised — matching the static + bytecode audit.
Build it yourself
# you supply the official paid zip (Gumroad / Superhive) — it is NOT redistributed here
python3 patch_ekaiivision.py voxelvision_4.0.0.zip EkaiiVision_4.0.0_offline.zip
Install the output in Blender → Extensions → Install from Disk. Keep Blender's Preferences → Save & Load → Auto Run Python Scripts off (default) as defense-in-depth.
Verify (behavioral proof)
Run a full convert → export → .jar import cycle while watching the network:
sudo lsof -i -nP | grep -i [B]lender # or Little Snitch / tcpdump
Expect 0 outbound connections.
First-time use — start from zero (Windows / macOS / Linux)
Works on all three OSes (the build is pure Python + assets, no native code; the /NodeTree
fix uses the native path separator on each platform). New to Blender? Follow this exactly; ~5 min.
0. Install Blender 5.x — from blender.org/download
(Windows installer/MSIX · macOS .dmg or brew install --cask blender · Linux from
blender.org, your distro, Flatpak flathub org.blender.Blender, or Snap). Open it once,
close the splash (click in the empty 3D scene).
1. Install EkaiiVision
- Top menu → Edit → Preferences → Get Extensions.
- Top-right dropdown (▾) → Install from Disk…
- Pick
EkaiiVision_4.0.0_offline.zip→ it installs and ticks itself on. - (defense-in-depth) Preferences → Save & Load → leave Auto Run Python Scripts OFF.
- Close Preferences.
2. Open the panel — in the big 3D view, press N (opens the right sidebar). Click the
vertical VoxelVision tab.
3. First run only — build the block library
- Click Generate Blocks. To get all real Minecraft textures, first add a Minecraft
client
.jar(any installed version) when asked; without one it uses the bundled blocks. The.jarlives in yourversions/<ver>/<ver>.jarunder the Minecraft folder:- Windows:
%APPDATA%\.minecraft\versions\<ver>\<ver>.jar - macOS:
~/Library/Application Support/minecraft/versions/<ver>/<ver>.jar - Linux:
~/.minecraft/versions/<ver>/<ver>.jar
- Windows:
- Wait until it finishes (a second Blender window may flash — that's the local texture bake, no network).
4. Pick a model — the default Cube is fine to start. Left-click it to select
(it gets an outline). To use your own model: File → Import your .obj/.fbx, then click it.
5. Convert to blocks — with the object selected, click Turn Selected Into Blocks. A VoxelVision GN modifier appears. In the sidebar you can tweak block size / resolution and pick a palette (Load Palette).
6. (optional) Bake — click Bake to lock in the result for large models.
7. Export — click one of:
- Export Schematic →
.schem(WorldEdit / Litematica / FAWE) - Export Axiom Blueprint →
.bp(the Axiom mod) - Export mcstructure (BETA) → Bedrock Choose where to save.
8. Into Minecraft — load the file with your tool of choice (Litematica/Axiom/WorldEdit).
9. (optional) Verify it's offline — while you convert/export, watch Blender's connections:
- macOS / Linux:
sudo lsof -i -nP | grep -i [B]lender(orss -tunp | grep -i blenderon Linux) - Windows (PowerShell):
Get-NetTCPConnection | ? OwningProcess -in (Get-Process blender).IdExpect no output / no established connections = zero outbound.
Honest caveats
- Not a source fork. VoxelVision is GPL-2.0-or-later (so modifying it for local use is fully within license). This repo redistributes the transform, not the upstream paid binary.
- Auto-update is paywall-limited. Upstream ships behind Gumroad + Cloudflare, so CI cannot
auto-download new releases. The pipeline watches for new versions and notifies; you feed the
new official zip in manually. See
.forgejo/workflows/. - Not endorsed by Erasers45-Studios. Support the author — buy the product.
Repo layout: patch_ekaiivision.py (patcher), .forgejo/workflows/ (version-watch + manual rebuild), reports/ (full audit).