diff --git a/.gitignore b/.gitignore index fa22445..562c4d8 100644 --- a/.gitignore +++ b/.gitignore @@ -11,6 +11,9 @@ rock_presets.json *.blend1 *.blend2 +# Extension-Build-Staging (dist/ wird bewusst committet -> Hosting via Raw-URL) +_extsrc/ + # OS / Editor .DS_Store Thumbs.db diff --git a/README.md b/README.md index f801a3f..7d19af3 100644 --- a/README.md +++ b/README.md @@ -24,6 +24,34 @@ Update: einfach die neue `.py` erneut installieren (gleicher Modulname) oder das Repo lokal ziehen und den Addon-Pfad in den Preferences auf den Repo-Ordner zeigen lassen. +## Installation als Extension (via URL, mit Auto-Update) + +Ab Blender 4.2 / 5.x als **Remote-Extension-Repository** – einmal die URL +eintragen, danach gehen Updates per Klick. + +1. Das Gitea-Repo muss **oeffentlich** sein (sonst kann Blender die Raw-URL nicht + ohne Login laden). +2. Blender → *Edit → Preferences → Get Extensions → oben rechts das Dropdown → + Repositories → „Add Remote Repository"*. +3. Als URL eintragen: + + ``` + https://git.d4rkst3r.de/D4rkst3r/stylized-rock-generator/raw/branch/main/dist/index.json + ``` + +4. „Check for Updates" aktivieren, bestaetigen. Die Extension erscheint in der + Liste → *Install*. + +**Updaten (Maintainer-Seite):** + +1. `version` in `blender_manifest.toml` (und `bl_info["version"]` in der `.py`) erhoehen. +2. `./build.ps1` (oder `blender --command extension build …` + `… server-generate …`). +3. `git add -A && git commit -m "vX.Y.Z" && git push`. +4. Nutzer: in Blender *Check for Updates* → *Update*. + +Das gebaute Zip + `index.json` liegen in `dist/` und werden bewusst mitversioniert, +damit die Raw-URL sie ausliefert. + --- ## Features diff --git a/blender_manifest.toml b/blender_manifest.toml new file mode 100644 index 0000000..d12d621 --- /dev/null +++ b/blender_manifest.toml @@ -0,0 +1,23 @@ +schema_version = "1.0.0" + +id = "stylized_rock_generator" +version = "2.0.0" +name = "Stylized Rock Generator" +tagline = "Batch-Generator fuer stylized Rocks mit UE5-Export" +maintainer = "D4rkst3r" +type = "add-on" + +website = "https://git.d4rkst3r.de/D4rkst3r/stylized-rock-generator" + +# Gueltige Add-on-Tags laut Blender-Extension-Spezifikation. +tags = ["Object", "Mesh", "Modeling"] + +blender_version_min = "4.2.0" + +license = [ + "SPDX:GPL-3.0-or-later", +] + +copyright = [ + "2026 D4rkst3r", +] diff --git a/build.ps1 b/build.ps1 new file mode 100644 index 0000000..55744c0 --- /dev/null +++ b/build.ps1 @@ -0,0 +1,40 @@ +# Baut die Extension und aktualisiert das Repo-Listing (index.json) in dist/. +# +# Aufruf: +# .\build.ps1 # nutzt "blender" aus dem PATH +# .\build.ps1 -Blender "E:\...\blender.exe" +# +# Update-Workflow: +# 1. version in blender_manifest.toml erhoehen (und bl_info/version in der .py) +# 2. .\build.ps1 +# 3. git add -A; git commit -m "vX.Y.Z"; git push +# 4. In Blender: Preferences -> Get Extensions -> Repo -> "Check for Updates" + +param( + [string]$Blender = "blender" +) + +$ErrorActionPreference = "Stop" +$root = $PSScriptRoot +$stage = Join-Path $root "_extsrc" +$dist = Join-Path $root "dist" + +if (Test-Path $stage) { Remove-Item -Recurse -Force $stage } +New-Item -ItemType Directory -Force -Path $stage | Out-Null +New-Item -ItemType Directory -Force -Path $dist | Out-Null + +# Staging: Manifest + Addon-Code als __init__.py (Extension = Package) +Copy-Item (Join-Path $root "blender_manifest.toml") (Join-Path $stage "blender_manifest.toml") +Copy-Item (Join-Path $root "stylized_rock_generator.py") (Join-Path $stage "__init__.py") + +Write-Host "== extension build ==" -ForegroundColor Cyan +& $Blender --command extension build --source-dir $stage --output-dir $dist +if ($LASTEXITCODE -ne 0) { throw "extension build fehlgeschlagen (Exit $LASTEXITCODE)" } + +Write-Host "== server-generate (index.json) ==" -ForegroundColor Cyan +& $Blender --command extension server-generate --repo-dir $dist +if ($LASTEXITCODE -ne 0) { throw "server-generate fehlgeschlagen (Exit $LASTEXITCODE)" } + +Remove-Item -Recurse -Force $stage +Write-Host "Fertig. dist/ enthaelt Zip + index.json." -ForegroundColor Green +Get-ChildItem $dist | Select-Object Name, Length | Format-Table -AutoSize diff --git a/dist/index.json b/dist/index.json new file mode 100644 index 0000000..98b9bcf --- /dev/null +++ b/dist/index.json @@ -0,0 +1,31 @@ +{ + "version": "v1", + "blocklist": [], + "data": [ + { + "schema_version": "1.0.0", + "id": "stylized_rock_generator", + "name": "Stylized Rock Generator", + "tagline": "Batch-Generator fuer stylized Rocks mit UE5-Export", + "version": "2.0.0", + "type": "add-on", + "maintainer": "D4rkst3r", + "license": [ + "SPDX:GPL-3.0-or-later" + ], + "blender_version_min": "4.2.0", + "website": "https://git.d4rkst3r.de/D4rkst3r/stylized-rock-generator", + "copyright": [ + "2026 D4rkst3r" + ], + "tags": [ + "Object", + "Mesh", + "Modeling" + ], + "archive_url": "./stylized_rock_generator-2.0.0.zip", + "archive_size": 9183, + "archive_hash": "sha256:7bcf0d9cc56015157dfa17264d9ea51e624e8c0013f84b59069bcd3386815ad6" + } + ] +} \ No newline at end of file diff --git a/dist/stylized_rock_generator-2.0.0.zip b/dist/stylized_rock_generator-2.0.0.zip new file mode 100644 index 0000000..93781ed Binary files /dev/null and b/dist/stylized_rock_generator-2.0.0.zip differ