Compare commits

..

47 Commits

Author SHA1 Message Date
chexit 5003376e70 Acoustics stage 1: mod plays near sounds when the engine muffles, band-energy check tool (#96, fork patch 39)
build / mod (push) Successful in 3m52s
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-30 22:09:23 +03:00
chexit 29d43071b5 Track the mod's item and block declarations: the fork's gitignore also matched data/airdef/horizon
build / mod (push) Successful in 3m50s
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-30 19:12:04 +03:00
chexit 318a161a3d HD clouds no longer warp while walking (fork patch 38)
build / mod (push) Successful in 3m50s
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-30 19:07:38 +03:00
chexit 766b292aec Continuous engine sound on drones and missiles, live and in replays, through persistent sound sources (#95, fork patch 37)
build / mod (push) Successful in 3m51s
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-30 16:10:24 +03:00
chexit ab6b61db59 Acoustics porting plan from Sound Physics Remastered 453654e (#96 stage 1)
build / mod (push) Successful in 3m52s
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-30 15:54:01 +03:00
chexit 4d4e1682f5 Windows build: patches and the fork keep LF, packer rebuilt when the fork changes; install notes
build / mod (push) Successful in 3m52s
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-30 15:49:57 +03:00
chexit 545d4777e8 Kill outcomes: falling hull, breakup or air detonation by weapon and target, recorded for replays (#97)
build / mod (push) Successful in 3m54s
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-30 15:47:03 +03:00
chexit f16bc2387f /airdef command tree with typed arguments, live scenario names and generated help (#98, fork patch 36)
build / mod (push) Successful in 3m52s
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-30 15:43:11 +03:00
chexit 9bc94fa8aa Raids launch from real sites: 1, 2 or 4-5 sides, stock and launch queue, land first, then nearer land, then barges on water (#100)
build / mod (push) Successful in 3m50s
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-30 15:36:43 +03:00
chexit 0f5c4136f3 Replays: smoke rebuilt from the recording, recorded objects and searchlights, film cut in true order, export sessions guarded, gun camera above water; export keeps its last frames; hd_bench no longer excuses strong flicker (#76-#84, fork patch 35)
build / mod (push) Successful in 3m49s
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-30 15:19:32 +03:00
chexit 51f9609327 Distinct item icons: a silhouette per item and category instead of one remote (#99)
build / mod (push) Successful in 3m50s
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-30 15:07:54 +03:00
chexit 3265eb63d2 HD: coloured shadows, rain ripples, film motion blur and depth of field (fork patch 34)
build / mod (push) Successful in 3m46s
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-30 15:01:09 +03:00
chexit b43d471706 Combat fixes: exact-ray answers tied to their segment and block (#73), no fuse kill through a wall while waiting (#74), seeker needs confirmed sight and stops reading true velocity (#75), combat RNG and ids independent of graphics (#85), saved layouts validated whole before the scene is touched, refused autosave kept (#86)
build / mod (push) Successful in 3m48s
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-30 14:57:19 +03:00
chexit 2eb6763d03 Brighter paint, rebuilt drones and cruise missiles, vehicle detail and markings; one-line part status in the summary panel (#55)
build / mod (push) Successful in 4m8s
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-30 14:40:27 +03:00
chexit 438d68d50f Replays show SAMs and the world as it was at raid time, film clock for exports; clouds and fog polish; shared texture generator, new missile bodies, octagonal wheels, tracked sides, charred wrecks (#55 part 1) (fork patch 33)
build / mod (push) Successful in 3m54s
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-30 14:30:39 +03:00
chexit 76f680eba6 Searchlights with real spot lights and volumetric beams (#60); replay director: several angles per event, slow-motion kills, /airdef replay film and export to MP4 (#58) (fork patch 32)
build / mod (push) Successful in 3m32s
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-30 09:28:13 +03:00
chexit 8a12225ba1 Replays in full HD with shader effects driven by the recording (#56), recorded clock survives gaps (#57), cinematic intercepts: layered sound with travel delay, big flash, light burst, exposure punch, shock ring (#51) (fork patch 31)
build / mod (push) Successful in 3m21s
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-30 03:59:47 +03:00
chexit 4bab572293 HD smoke trails as smooth ribbons (fork patch 30)
build / mod (push) Successful in 3m21s
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-30 03:44:45 +03:00
chexit f43fa5ee66 Clouds occlude by depth, world-anchored noise, visual-only replay time (fork patch 29; #67, #68, #70)
build / mod (push) Successful in 3m29s
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-30 03:26:10 +03:00
chexit 336ae9f7cc gitignore the smoke agent's test home
build / mod (push) Successful in 3m22s
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-30 03:17:21 +03:00
chexit 5f8bff31b9 Smoke and trails from the mod (#54), materials, wetness and wind in HD (fork patch 28); collisions and guidance: unknown is not clear (#61), cache invalidation and ageing (#62, #64), exact rays for partial blocks (#63), raids use the accuracy profiles (#65), interceptors guide on tracks and seekers (#66), fires and their effects bounded (#69)
build / mod (push) Successful in 3m20s
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-30 03:17:11 +03:00
chexit 3ced60e84f hd_bench: time and weather frozen per shot, several stills per shot, moving pixels (water, clouds, leaves) kept out of the baseline score, warm-up, engine hash in the report (#71)
build / mod (push) Successful in 3m18s
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-30 02:54:01 +03:00
chexit 6f3fc644bc Terrain-aware flight: drones look 8 s ahead and climb in time, the planner prices terrain, SAMs hold fire at targets masked by terrain (long-range ones loft over ridges), interceptors keep clear of the land or self-destruct in the air
build / mod (push) Successful in 3m24s
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-29 23:39:44 +03:00
chexit 9075717872 HD split into modules (#45, fork patch 26); clouds no longer jump at x or z = 0 (patch 27)
build / mod (push) Successful in 3m21s
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-29 23:22:19 +03:00
chexit e3148bf458 HD render fixes (#35-#39, #41) and replay time of day (#57) (fork patch 25); radar scan cycles with ageing tracks (#46), damage to individual system parts (#50), long-lasting fires (#52)
build / mod (push) Successful in 3m22s
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-29 22:56:15 +03:00
chexit d0b9498aaf tools/hd_bench.py: a graphics test range — fixed shots in Polygon and Hills, before/after diffs against a baseline, still-frame flicker, GPU time and per-pass budget, a Markdown report (#44)
build / mod (push) Successful in 3m27s
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-29 22:32:53 +03:00
chexit 8065f2225c Sunsets, volumetric clouds and fog in HD (fork patch 23, #53); missiles and drones collide with the world through new world queries (patch 24, API level 12; #42, #43); a direct hit destroys a system, strikes scatter by kind with a small miss chance (#49, #59)
build / mod (push) Successful in 3m24s
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-29 21:44:59 +03:00
chexit a8551b5c28 CI: game and desktop builds check out exactly inputs.tag, verify its release was made by build.yml from that commit, and upload only to it (#40)
build / mod (push) Successful in 3m24s
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-29 21:20:57 +03:00
chexit f443f0a94a HD water darker and clearer, higher ripples (fork patch 22)
build / mod (push) Successful in 3m23s
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-29 19:02:16 +03:00
chexit e33daac636 HD sky, atmosphere and warmer soft sunlight; lighter rippled water (fork patch 21); doc updated
build / mod (push) Successful in 3m20s
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-29 18:38:20 +03:00
chexit 661c852bbf HD water darker, without the vanilla texture (fork patch 20)
build / mod (push) Successful in 3m18s
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-29 17:56:05 +03:00
chexit 428713d4bc HD water: reflections, refraction, depth colour, sun glint (fork patch 19); doc updated
build / mod (push) Successful in 3m22s
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-29 17:47:52 +03:00
chexit 5839da129a HD: temporal upscaler and the near-shadow flicker fixed (fork patch 18); doc updated
build / mod (push) Successful in 3m17s
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-29 17:20:08 +03:00
chexit ab4a7899af TAA and cheaper shadows in HD (patch 16), model handles in the mod API so the mod sends no model names each tick (patch 17, #30); doc updated
build / mod (push) Successful in 3m25s
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-29 17:02:30 +03:00
chexit 65dd84646a docs: HD renderer architecture, status and plan, kept up to date for handover
build / mod (push) Successful in 3m20s
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-29 16:55:15 +03:00
chexit ed2db8523b Shaders, profiling and the rest of the issues: GTAO and HD GPU pass timing in the fork (patch 15; #9), explosion effects culled early per pixel (#11), a native sim runner with scenario tests run in CI (#8), named scenarios (#17), /airdef why and failure counters in raid reports (#18), IRIS-T and AMRAAM models and launch sounds by kind (#28)
build / mod (push) Successful in 3m24s
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-29 16:43:48 +03:00
chexit 67a2a523b4 P2/P3 issues: network-fed launchers priced into smart routes (#4), stable blast light ids (#15), retargeted smart drones replanned round the defences (#21), sim tick without per-unit clones and linear scans (#26), ground cache swept rarely (#31), Oreshnik pieces keep their sector (#32), drives with acceleration and fire only once aimed (#33), radar monitor range (#19), delayed sound volume (#22), world change clears transient state (#23), score line always shown (#24), replay map without full paths (#25), text fit by bisection (#27), docs (#29), glow occlusion by ray distance (#14), blasts composited nearest first (#16)
build / mod (push) Successful in 2m26s
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-29 16:28:24 +03:00
chexit a806635681 HD lights culled per tile (fork patch 14; #10)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-29 16:25:44 +03:00
chexit 0092ec64a9 HD renderer: cached bind groups, shadow casters only (fork patch 13; #12, #13)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-29 16:19:53 +03:00
chexit e08fc65ac8 P1 issues: ground queries keep room for unknown land (#1), a destroyed truck frees its job (#2), trucks follow a system that moved (#3), repair cancels cook-offs (#5), a failed save is retried and autosaves are paced (#6, #7), a combined system reloads when either weapon is spent (#20), munitions go down to the land left under a destroyed target (#34); regression tests from the issues
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-29 16:18:33 +03:00
chexit 90379f6e17 Fixes from review: replays found by raid number, no fired-count underflow, one raid planned at a time, repair resets waiting and marches, clear removes cook-offs and flares, beams reach their targets, tracer direction never NaN, the fork's previous branch always kept
build / mod (push) Successful in 2m24s
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-29 14:29:38 +03:00
chexit bb35975642 Fixes from review: one missile per target when systems fire in the same tick, moves and ammunition saved, searchlight spot and lighting once the beam is on, retargeting only for smart raids, no free reloads after the last depot falls, fork rebuilt when its commit or patches change
build / mod (push) Successful in 2m24s
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-29 14:25:14 +03:00
chexit f2838a8f08 HD stage 2: sun and moon shadows, the world relit, light shafts, fog and a colour grade (fork patch 12)
build / mod (push) Successful in 2m28s
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-29 13:59:51 +03:00
chexit c42d97af08 HD effects preset: mod lights for flames, flares, blasts, wrecks, searchlights; searchlight beams no longer add shader lights (FPS)
build / mod (push) Successful in 2m26s
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-29 13:18:43 +03:00
chexit 6efec3e546 CI: drop actions/cache (the runner's cache server times out and hangs the job's end)
build / mod (push) Successful in 2m29s
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-29 12:52:06 +03:00
chexit d3359f4b39 New systems (IRIS-T, NASAMS, Buk, Tor, P1-SUN), air-defence network with long-range radars, logistics, move orders, EW, adaptive enemy, searchlights and flares; grid holds a kill in view
build / mod (push) Successful in 5m7s
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-29 12:46:30 +03:00
chexit a2f31c831c CI: build on branch pushes only, not on release tags
build / mod (push) Successful in 5m7s
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-29 12:19:03 +03:00
534 changed files with 132490 additions and 5761 deletions
+1
View File
@@ -4,3 +4,4 @@
*.png binary
*.jpg binary
*.hmod binary
*.patch -text
+11 -6
View File
@@ -5,7 +5,9 @@
name: build
on:
# Branches only: the release's own tag (build-N) mustn't start another build.
push:
branches: ['**']
workflow_dispatch:
env:
@@ -22,14 +24,17 @@ jobs:
run: |
curl -sSf https://sh.rustup.rs | sh -s -- -y --profile minimal --target wasm32-unknown-unknown
echo "$HOME/.cargo/bin" >> "$GITHUB_PATH"
# Инструмент упаковки (cargo-horizon-mod без пробного запуска) — единственное, что стоит кэшировать.
- uses: actions/cache@v3
continue-on-error: true
with:
path: ~/.cargo/bin/cargo-horizon-mod
key: tool-${{ hashFiles('HORIZON_COMMIT', 'horizon-patches/*') }}
# Без actions/cache: кэш-сервер раннера из контейнеров задач недоступен — восстановление
# падало по таймауту, а сохранение вешало «Complete job» на пару минут. Инструмент собирается заново.
- name: Форк Horizon
run: nice -n 19 python3 tools/airdef.py fork
# Чистая симуляция тестируется нативно (хост-таргет раннера, без WASM): регрессии из sim/regress.rs
# и сценарии tests/scenarios.rs (NaN, налёт кончается, ТЗМ не зависают). Нужен форк: SDK подключён путём.
- name: Тесты мода
working-directory: airdef-mod
run: |
HOST=$(rustc -vV | sed -n 's/^host: //p')
nice -n 19 cargo test --target "$HOST"
- name: Мод
run: nice -n 19 python3 tools/airdef.py mod
- name: Релиз
+63 -7
View File
@@ -22,7 +22,39 @@ jobs:
if: inputs.os == 'macos' || inputs.os == 'both'
runs-on: macos-latest
steps:
- name: Проверка релиза
env:
TOKEN: ${{ secrets.RELEASE_TOKEN || gitea.token }}
API: ${{ github.server_url }}/api/v1/repos/${{ github.repository }}
TAG: ${{ inputs.tag }}
run: |
set -e
if ! [[ "$TAG" =~ ^build-[0-9]+$ ]]; then echo "::error::тег '$TAG' не похож на build-N"; exit 1; fi
REL_JSON=$(mktemp)
CODE=$(curl -s -o "$REL_JSON" -w '%{http_code}' -H "Authorization: token $TOKEN" "$API/releases/tags/$TAG")
if [ "$CODE" != "200" ]; then echo "::error::релиза с тегом $TAG нет (HTTP $CODE): сначала дождись сборки build.yml на main"; exit 1; fi
python3 - "$TAG" "$REL_JSON" <<'PY'
import json, os, sys
tag, path = sys.argv[1], sys.argv[2]
r = json.load(open(path))
assets = [a.get('name') for a in (r.get('assets') or [])]
if r.get('tag_name') != tag or r.get('name') != tag or 'airdef.hmod' not in assets:
print('::error::релиз %s не создан build.yml (нужны имя = тег и вложение airdef.hmod): чужой релиз не трогаем' % tag)
sys.exit(1)
with open(os.environ['GITHUB_ENV'], 'a') as f:
f.write('RELEASE_ID=%s\nRELEASE_SHA=%s\n' % (r['id'], r.get('target_commitish', '')))
PY
- uses: actions/checkout@v4
with:
ref: refs/tags/${{ inputs.tag }}
- name: Проверка коммита
env:
TAG: ${{ inputs.tag }}
run: |
set -e
HEAD_SHA=$(git rev-parse HEAD)
if [[ "$RELEASE_SHA" =~ ^[0-9a-f]{40}$ ]] && [ "$HEAD_SHA" != "$RELEASE_SHA" ]; then echo "::error::тег $TAG указывает на $HEAD_SHA, а релиз создан из $RELEASE_SHA"; exit 1; fi
echo "собираю $TAG = $HEAD_SHA"
- name: Rust
run: |
command -v cargo || curl -sSf https://sh.rustup.rs | sh -s -- -y --profile minimal
@@ -47,11 +79,10 @@ jobs:
env:
TOKEN: ${{ secrets.RELEASE_TOKEN || gitea.token }}
API: ${{ github.server_url }}/api/v1/repos/${{ github.repository }}
TAG: ${{ inputs.tag }}
run: |
set -e
ID=$(curl -sf -H "Authorization: token $TOKEN" "$API/releases/tags/$TAG" | python3 -c 'import json,sys;print(json.load(sys.stdin)["id"])')
curl -sf -X POST -H "Authorization: token $TOKEN" -F "attachment=@out/airdef-macos-arm64.tar.gz" "$API/releases/$ID/assets?name=airdef-macos-arm64.tar.gz" > /dev/null
# RELEASE_ID взят в шаге «Проверка релиза» (релиз build-N, созданный build.yml)
curl -sf -X POST -H "Authorization: token $TOKEN" -F "attachment=@out/airdef-macos-arm64.tar.gz" "$API/releases/$RELEASE_ID/assets?name=airdef-macos-arm64.tar.gz" > /dev/null
game-windows:
if: inputs.os == 'windows' || inputs.os == 'both'
@@ -60,7 +91,34 @@ jobs:
run:
shell: pwsh
steps:
- name: Проверка релиза
env:
TOKEN: ${{ secrets.RELEASE_TOKEN || gitea.token }}
API: ${{ github.server_url }}/api/v1/repos/${{ github.repository }}
TAG: ${{ inputs.tag }}
run: |
$ErrorActionPreference = 'Stop'
if ($env:TAG -notmatch '^build-\d+$') { Write-Output "::error::тег '$env:TAG' не похож на build-N"; exit 1 }
$h = @{ Authorization = "token $env:TOKEN" }
try { $r = Invoke-RestMethod -Headers $h "$env:API/releases/tags/$env:TAG" }
catch { Write-Output "::error::релиза с тегом $env:TAG нет: сначала дождись сборки build.yml на main"; exit 1 }
$assets = @($r.assets | ForEach-Object { $_.name })
if ($r.tag_name -ne $env:TAG -or $r.name -ne $env:TAG -or ($assets -notcontains 'airdef.hmod')) {
Write-Output "::error::релиз $env:TAG не создан build.yml (нужны имя = тег и вложение airdef.hmod): чужой релиз не трогаем"; exit 1
}
"RELEASE_ID=$($r.id)" | Out-File -Append -Encoding utf8 $env:GITHUB_ENV
"RELEASE_SHA=$($r.target_commitish)" | Out-File -Append -Encoding utf8 $env:GITHUB_ENV
- uses: actions/checkout@v4
with:
ref: refs/tags/${{ inputs.tag }}
- name: Проверка коммита
env:
TAG: ${{ inputs.tag }}
run: |
$ErrorActionPreference = 'Stop'
$head = git rev-parse HEAD
if ($env:RELEASE_SHA -match '^[0-9a-f]{40}$' -and $head -ne $env:RELEASE_SHA) { Write-Output "::error::тег $env:TAG указывает на $head, а релиз создан из $env:RELEASE_SHA"; exit 1 }
Write-Output "собираю $env:TAG = $head"
- name: Rust
run: |
if (-not (Get-Command cargo -ErrorAction SilentlyContinue)) {
@@ -88,9 +146,7 @@ jobs:
env:
TOKEN: ${{ secrets.RELEASE_TOKEN || gitea.token }}
API: ${{ github.server_url }}/api/v1/repos/${{ github.repository }}
TAG: ${{ inputs.tag }}
run: |
$h = @{ Authorization = "token $env:TOKEN" }
$id = (Invoke-RestMethod -Headers $h "$env:API/releases/tags/$env:TAG").id
curl.exe -sf -X POST -H "Authorization: token $env:TOKEN" -F "attachment=@out\airdef-windows-x86_64.zip" "$env:API/releases/$id/assets?name=airdef-windows-x86_64.zip"
# RELEASE_ID взят в шаге «Проверка релиза» (релиз build-N, созданный build.yml)
curl.exe -sf -X POST -H "Authorization: token $env:TOKEN" -F "attachment=@out\airdef-windows-x86_64.zip" "$env:API/releases/$env:RELEASE_ID/assets?name=airdef-windows-x86_64.zip"
+34 -3
View File
@@ -25,7 +25,39 @@ jobs:
FREE=$(df --output=avail -BG / | tail -1 | tr -dc 0-9)
echo "свободно: ${FREE} ГБ"
if [ "$FREE" -lt 15 ]; then echo "::error::на сервере свободно ${FREE} ГБ, нужно хотя бы 15: сборка игры забьёт диск и уронит Gitea"; exit 1; fi
- name: Проверка релиза
env:
TOKEN: ${{ secrets.RELEASE_TOKEN || gitea.token }}
API: ${{ github.server_url }}/api/v1/repos/${{ github.repository }}
TAG: ${{ inputs.tag }}
run: |
set -e
if ! [[ "$TAG" =~ ^build-[0-9]+$ ]]; then echo "::error::тег '$TAG' не похож на build-N"; exit 1; fi
REL_JSON=$(mktemp)
CODE=$(curl -s -o "$REL_JSON" -w '%{http_code}' -H "Authorization: token $TOKEN" "$API/releases/tags/$TAG")
if [ "$CODE" != "200" ]; then echo "::error::релиза с тегом $TAG нет (HTTP $CODE): сначала дождись сборки build.yml на main"; exit 1; fi
python3 - "$TAG" "$REL_JSON" <<'PY'
import json, os, sys
tag, path = sys.argv[1], sys.argv[2]
r = json.load(open(path))
assets = [a.get('name') for a in (r.get('assets') or [])]
if r.get('tag_name') != tag or r.get('name') != tag or 'airdef.hmod' not in assets:
print('::error::релиз %s не создан build.yml (нужны имя = тег и вложение airdef.hmod): чужой релиз не трогаем' % tag)
sys.exit(1)
with open(os.environ['GITHUB_ENV'], 'a') as f:
f.write('RELEASE_ID=%s\nRELEASE_SHA=%s\n' % (r['id'], r.get('target_commitish', '')))
PY
- uses: actions/checkout@v4
with:
ref: refs/tags/${{ inputs.tag }}
- name: Проверка коммита
env:
TAG: ${{ inputs.tag }}
run: |
set -e
HEAD_SHA=$(git rev-parse HEAD)
if [[ "$RELEASE_SHA" =~ ^[0-9a-f]{40}$ ]] && [ "$HEAD_SHA" != "$RELEASE_SHA" ]; then echo "::error::тег $TAG указывает на $HEAD_SHA, а релиз создан из $RELEASE_SHA"; exit 1; fi
echo "собираю $TAG = $HEAD_SHA"
- name: Системные библиотеки
run: |
SUDO=$(command -v sudo || true)
@@ -45,12 +77,11 @@ jobs:
env:
TOKEN: ${{ secrets.RELEASE_TOKEN || gitea.token }}
API: ${{ github.server_url }}/api/v1/repos/${{ github.repository }}
TAG: ${{ inputs.tag }}
run: |
set -e
D=airdef-linux-x86_64
mkdir -p "$D" out
cp horizon/target/fast/horizon-client horizon/target/fast/horizon-ctl airdef-mod/target/horizon-mod/airdef.hmod dist/play.sh docs/INSTALL.md "$D/"
tar czf "out/$D.tar.gz" "$D"
ID=$(curl -sf -H "Authorization: token $TOKEN" "$API/releases/tags/$TAG" | python3 -c 'import json,sys;print(json.load(sys.stdin)["id"])')
curl -sf -X POST -H "Authorization: token $TOKEN" -F "attachment=@out/$D.tar.gz" "$API/releases/$ID/assets?name=$D.tar.gz" > /dev/null
# RELEASE_ID взят в шаге «Проверка релиза» (релиз build-N, созданный build.yml)
curl -sf -X POST -H "Authorization: token $TOKEN" -F "attachment=@out/$D.tar.gz" "$API/releases/$RELEASE_ID/assets?name=$D.tar.gz" > /dev/null
+3 -1
View File
@@ -1,7 +1,9 @@
horizon/
/horizon/
run-home/
.horizon-cache/
airdef-mod/target/
__pycache__/
/out/
.DS_Store
run-home-bench/
run-home-smoke/
+65 -5
View File
@@ -11,6 +11,7 @@
## Запуск
Пошаговый гайд для Windows и macOS (готовая сборка из релиза или сборка из исходников): [docs/INSTALL.md](docs/INSTALL.md).
Устройство HD-рендера, его статус и план доработки: [docs/HD-RENDERER.md](docs/HD-RENDERER.md).
Коротко, из исходников:
@@ -23,9 +24,12 @@ python3 tools/airdef.py play # запустить (аргументы игр
(`tools/gen_sounds.py`, нужны numpy и ffmpeg), собирает и ставит мод. Сгенерированные файлы лежат в репозитории,
так что для обычной сборки нужен только Rust.
CI: `.gitea/workflows/build.yml` на каждый пуш собирает мод и игру для Linux, а пуш в `main` публикует релиз
`build-N`; `.gitea/workflows/desktop.yml` (запуск вручную с тегом релиза) собирает игру для macOS и Windows на
раннерах с метками `macos-latest` / `windows-latest` и дописывает архивы в релиз.
CI: `.gitea/workflows/build.yml` на каждый пуш собирает только мод (`airdef.hmod`), а пуш в `main` публикует его
релизом `build-N`. Игру-форк собирают вручную: `.gitea/workflows/game.yml` (Linux) и `.gitea/workflows/desktop.yml`
(macOS и Windows, на раннерах с метками `macos-latest` / `windows-latest`); оба запускаются из Actions с тегом
готового релиза `build-N`. Перед сборкой workflow проверяет, что такой релиз создан `build.yml` (имя релиза = тег,
есть `airdef.hmod`), иначе падает с ошибкой; затем выкачивает ровно коммит этого тега (а не ветку, с которой запущен),
сверяет его с коммитом релиза и дописывает архивы только в этот релиз.
## Как играть
@@ -68,6 +72,45 @@ CI: `.gitea/workflows/build.yml` на каждый пуш собирает мо
**Сохранение.** Комплексы, объекты, их повреждения и настройки сохраняются отдельно для каждого мира (и для каждого
сервера); уничтоженный комплекс остаётся остовом и после перезахода, пока его не отремонтируют.
**Сеть ПВО.** Каждая единица делится целями со всеми в радиусе 1,5 км (линия связи): РЛС дальнего обнаружения
даёт раннее предупреждение всем, пусковая без своей РЛС (P1-SUN) стреляет по чужим данным. Пушкам (Гепард,
пушки Панциря) нужна своя цель: они стреляют только по тому, что видят сами. Уничтоженная РЛС — дыра в сети.
**Логистика.** Пока нет ни одного склада, магазины пополняются сами, как раньше. Как только поставлен склад,
боекомплект считается: комплекс без ракет пишет «ЖДЁТ БК»; в 60 м от склада он перезаряжается прямо с него, а
дальние обслуживают **ТЗМ**: заправляются на складе (2 перезарядки), сами едут к ждущим комплексам, ближайшим
первым, и возвращаются. Запас склада — 30 перезарядок, он виден в сводке. Склад и ТЗМ детонируют всем грузом.
**Перемещение.** **Пульт перемещения**: навестись на технику (выбрать), затем на точку на земле — она
сворачивается (С-400 и другие с вертикальным пуском дольше, Гепард и Панцирь быстро), едет по рельефу и
разворачивается; всё это время не стреляет и не светит РЛС. Или `/airdef move <номер>` — к тому месту, где ты стоишь.
**РЭБ.** Клавиша **U** (или `/airdef ew on|off`) включает все станции. Станция в радиусе 350 м сбивает
спутниковую навигацию у Шахедов, Герань, Гербер, Х-101 и Калибров: они теряют маршрут и уводятся с цели
(баллистике и Ланцетам с оптикой всё равно). Передатчик работает до 20 с и перегревается; остывает ~35 с,
пока не остынет — не включить. Включённая станция себя выдаёт: умный противник запоминает её и шлёт на неё
Ланцеты и Х-22, а маршруты спутниковых дронов прокладывает в обход.
**Умный противник учится.** Он запоминает, откуда его налёты сбивали, а откуда они прорывались, и следующий
налёт ведёт с лучшего направления; помнит комплексы, выдавшие себя пуском, и станции РЭБ, и во время налёта
перенацеливает ещё не взлетевшие Ланцеты и Шахеды на них; если цель-комплекс уничтожен, дроны идут к
следующему известному. Дроны под обстрелом прижимаются к земле.
**Ночь.** Ночью пушки попадают втрое хуже, если цель не освещена. Освещают **прожекторы** (луч ведёт ближайшую
цель из сети, приоритет — цели пушек) и **осветительные ракеты**: пушечные комплексы пускают их сами (раз в
25 с на цель в темноте), игрок — **осветительным пистолетом** или `/airdef flare`. Ракета висит ~30 с и
освещает всё вокруг на ~60–90 м.
**Графика: три пресета** (меню N → «Огонь, ремонт, эффекты…» → «Эффекты», или `/airdef shader off|on|hd`):
выкл — ванильная картинка; обычные — шейдерные огненные шары, ударная волна и подсветка; **HD** — свой рендер
освещения в форке: мир дополнительно рисуется в G-буфер (цвет без света и нормали), и все источники света мода
освещают его попиксельно в HDR — факелы ракет и двигатели, раскалённые боевые блоки, осветительные ракеты, вспышки
выстрелов, трассеры, взрывы (вспышка и догорающий шар), горящие остовы, пятна прожекторов, — затем bloom и мягкий
тонмаппинг (ванильный диапазон не трогается, сжимается только то, что ярче). Источники передаются движку новым
API мода `render.set-lights` (до 512, плавно интерполируются), режим — `render.set-lighting`.
**Сетка J** после сбития ещё 3,5 с держит камеру на сбитой цели, и комплекс в это время не пропадает из сетки.
**Повреждения.** Взрыв рядом с комплексом повреждает его: он хуже поворачивается, хуже видит и попадает,
дымит, ниже 35% горит. Уничтоженный остаётся горящим остовом, его боекомплект детонирует: чем больше ракет
оставалось, тем мощнее взрыв и дольше вторичные (у Гепарда рвутся снаряды); соседние комплексы тоже могут
@@ -91,7 +134,7 @@ CI: `.gitea/workflows/build.yml` на каждый пуш собирает мо
перехватчиков (жёлтые), сбития (x), прилёты, шкала времени с событиями; время идёт само, колесо мыши перематывает;
- **повтор момента** — клик по событию в списке: «призраки» дронов и ракет снова летят в мире, камера идёт за
целью, потом за перехватчиком (или смотрит из пушки, со стороны на прилёт), в момент сбития время замедляется;
- **полный повтор** — весь налёт, камера-режиссёр сама выбирает, за чем следить; колесо — скорость (×0.5–×16);
- **полный повтор** — весь налёт, камера-режиссёр сама выбирает, за чем следить; колесо — перемотка, стрелки — скорость;
- **лучшие моменты** — нарезка до 8 самых интересных событий (перехват баллистики и гиперзвука, поражения
объектов, потерянные комплексы, разделение «Орешника») с титрами и замедлением; колесо листает моменты.
@@ -103,11 +146,13 @@ CI: `.gitea/workflows/build.yml` на каждый пуш собирает мо
Чтобы в повторах и камерах комплексов была видна земля далеко от игрока, мод включает дальний ландшафт
(48 чанков, упрощённый); выключается в меню N → «Огонь, ремонт, эффекты…» → «Дальний ландшафт».
Клавиши N, K, J и R можно переназначить в «Настройки → Моды».
Клавиши N, K, J, R и U можно переназначить в «Настройки → Моды».
Команды:
- `/airdef wave <тип> [кол-во] [дальность]` — налёт на ближайшую цель. Типы: `shahed`, `geran3`, `lancet`, `gerbera`, `kh101`, `kalibr`, `kh22`, `zircon`, `iskander`, `kinzhal`, `oreshnik` и `mix` (комбинированный удар двумя секторами: «Герберы», шахеды, Герани-3, Х-101, «Калибры», Х-22, Циркон, «Искандер», «Кинжал», при 30+ — «Орешник»);
- `/airdef replay [map|full|reel|stop]` — повтор последнего налёта;
- `/airdef replay film [best|all|N]` — фильм режиссёра: для каждого перехвата/прилёта несколько планов (комплекс, пуск, погоня за ракетой, взгляд с цели, замедленный крупный план поражения, общий план после), склейки, плавные движения камеры, камера не уходит под землю; играется в максимальном качестве (HD, мир в полном разрешении, больше шагов облаков и тумана; настройки возвращаются после);
- `/airdef replay export [имя] [best|all|N] [fps=60] [size=1920x1080] [crf=14] [sec=N] [noaudio]` — тот же фильм кадр за кадром с фиксированным шагом (скорость компьютера не важна) в MP4 с звуком: `<HORIZON_HOME>/airdef-films/<имя>.mp4` (нужен `ffmpeg` в PATH или `HORIZON_FFMPEG`; без него — PNG-последовательность и готовая команда ffmpeg). Прогресс в чате, отмена — `/airdef replay stop`. Окно игры держите в фокусе (пауза останавливает съёмку); чат попадает в кадр.
- `/airdef import` — перенести в текущий мир комплексы и цели из старой версии мода (до 0.2.x они были общими для всех миров);
- `/airdef raid` — налёт, настроенный в меню; `/airdef target here` — отметить объект под ногами; `/airdef repair` — ремонт;
- `/airdef roles` — показать, по каким классам целей работает каждый комплекс; `/airdef roles <patriot|gepard|pantsir|s400|s500|all> <классы|default>` — задать (классы через запятую: `drone`, `jet`, `cruise`, `supersonic`, `ballistic` или `all`), например `/airdef roles s400 cruise,ballistic`;
@@ -152,6 +197,15 @@ CI: `.gitea/workflows/build.yml` на каждый пуш собирает мо
| Панцирь-С1 | 12 × 57Э6 и 2 × 30 мм; модуль поворачивается, пакеты и стволы поднимаются | ракеты 25–150, пушки 60 |
| С-400 | 4 × 48Н6, вертикальный холодный старт, РЛС обзора на прицепе | 30–480 |
| С-500 | 4 × 77Н6, холодный старт, самые быстрые ракеты | 40–700 |
| IRIS-T SLM | 8 ракет, вертикальный пуск, быстрые и манёвренные | 15–400 |
| NASAMS | 6 × AMRAAM, наводимая пусковая на прицепе | 10–300 |
| Бук-М2 | 4 × 9М317 на направляющих, башня с РЛС подсвета | 20–450 |
| Тор-М2 | 8 × 9М338 вертикально из башни, быстрая реакция против дронов | 8–160 |
| P1-SUN | 8 дронов-перехватчиков против Шахедов и Герань; своей РЛС нет — стреляет по данным сети | 5–450 |
Обслуживающая техника (тоже пультами или `/airdef deploy <ключ>`): **РЛС дальнего обнаружения** (`radar`,
видит на 1,7 км с высокой мачты, хуже прячутся за рельефом), **склад боеприпасов** (`depot`), **ТЗМ** (`tzm`),
**станция РЭБ** (`ew`), **прожектор** (`light`). Новые комплексы: `irist`, `nasams`, `buk`, `tor`, `p1sun`.
**Согласование огня.** Комплексы делят цели между собой: на обычную цель идёт одна ракета, на баллистическую две,
пушки расходятся по разным целям. Первыми бьют по самым опасным (быстрым и тяжёлым) целям, при этом ложные
@@ -167,6 +221,12 @@ CI: `.gitea/workflows/build.yml` на каждый пуш собирает мо
У каждого объекта свой звук и своя дальность слышимости (`attenuation_distance` в `sounds.json`):
- **двигатели:** двухтактный мопед шахеда (220 м), турбина Герани-3, электромотор Ланцета, тяжёлый рёв крылатых ракет (320 м),
ракетный рёв Х-22, Циркона и перехватчиков, нарастающий визг падающей баллистики и её ударная волна (700–900 м);
Двигатели дронов и ракет — **постоянные источники звука** (API 20, `render.sound-sources`, #95): один источник на
объект идёт за его настоящей позицией, зажигается с нарастанием, при сбитии «захлёбывается» (тон падает, громкость
гаснет за секунду) и замолкает вместе с объектом; в повторе и экспорте источники берутся из записанных траекторий и
времени повтора (перемотка и смена плана пересоздают их). Одновременно звучат 24 ближайших и громких, остальные
«виртуальные». Взрывы, пуски и выстрелы остались разовыми, с задержкой по скорости звука. Баллистика (визг при
падении) тоже разовая. Зацикливается устойчивая часть файла (начало и затухание в конце обрезаны), стык — 50 мс.
- **пуски:** хлопок и рвущийся рёв Patriot, свистящий старт Панциря, глухой газовый выброс и затем огромный рёв С-400,
у С-500 ещё ниже и дольше (до 1 км);
- **пушки:** тяжёлые 35-мм очереди Гепарда и частые 30-мм Панциря;
+5
View File
@@ -0,0 +1,5 @@
Status of terrain-aware flight (not committed):
- Done: sim/terrain.rs (look-ahead terrain following, dive only down a clear line, interceptor steer/loft/self-destruct, launch predicate), planner relief pricing + spawn above land (raid.rs), SAM launch check + why line (mod.rs, why.rs), Tally.scrubbed, world.probe, harness terrain fixes, 6 new tests in regress.rs. Build has no warnings; cargo test passes (43 + 4).
- Numbers (6 seeds, sim_run big-smart): hills:70:100:140 crashes 13 -> 3, hills:70:150:120 29 -> 2, default hills 2 -> 2 (all terminal-dive near-target by Kh101/Kalibr).
- Half-done / known: terminal dive of slow-turning cruise missiles still sometimes hits ground 7-20 blocks short of target; hills:70:150:120 tick max 38 ms / p95 2 ms (planner terrain phase + ground queries) not profiled; not tested in game.
- Next: tune dive geometry for Kh101/Kalibr, profile the planner's 1024-columns-per-tick height requests, optional in-game check.
@@ -0,0 +1,7 @@
{
"variants": {
"": {
"model": "airdef:block/amraam_missile"
}
}
}
@@ -0,0 +1,7 @@
{
"variants": {
"": {
"model": "airdef:block/barge"
}
}
}
@@ -0,0 +1,7 @@
{
"variants": {
"": {
"model": "airdef:block/beam"
}
}
}
@@ -0,0 +1,7 @@
{
"variants": {
"": {
"model": "airdef:block/buk_chassis"
}
}
}
@@ -0,0 +1,7 @@
{
"variants": {
"": {
"model": "airdef:block/buk_chassis_burnt"
}
}
}
@@ -0,0 +1,7 @@
{
"variants": {
"": {
"model": "airdef:block/buk_rails"
}
}
}
@@ -0,0 +1,7 @@
{
"variants": {
"": {
"model": "airdef:block/buk_rails_burnt"
}
}
}
@@ -0,0 +1,7 @@
{
"variants": {
"": {
"model": "airdef:block/buk_turret"
}
}
}
@@ -0,0 +1,7 @@
{
"variants": {
"": {
"model": "airdef:block/buk_turret_burnt"
}
}
}
@@ -0,0 +1,7 @@
{
"variants": {
"": {
"model": "airdef:block/depot"
}
}
}
@@ -0,0 +1,7 @@
{
"variants": {
"": {
"model": "airdef:block/depot_burnt"
}
}
}
@@ -0,0 +1,7 @@
{
"variants": {
"": {
"model": "airdef:block/ew_truck"
}
}
}
@@ -0,0 +1,7 @@
{
"variants": {
"": {
"model": "airdef:block/ew_truck_burnt"
}
}
}
@@ -0,0 +1,7 @@
{
"variants": {
"": {
"model": "airdef:block/flare"
}
}
}
@@ -0,0 +1,7 @@
{
"variants": {
"": {
"model": "airdef:block/gepard_guns_burnt"
}
}
}
@@ -0,0 +1,7 @@
{
"variants": {
"": {
"model": "airdef:block/gepard_hull_burnt"
}
}
}
@@ -0,0 +1,7 @@
{
"variants": {
"": {
"model": "airdef:block/gepard_turret_burnt"
}
}
}
@@ -0,0 +1,7 @@
{
"variants": {
"": {
"model": "airdef:block/irist_chassis"
}
}
}
@@ -0,0 +1,7 @@
{
"variants": {
"": {
"model": "airdef:block/irist_chassis_burnt"
}
}
}
@@ -0,0 +1,7 @@
{
"variants": {
"": {
"model": "airdef:block/irist_missile"
}
}
}
@@ -0,0 +1,7 @@
{
"variants": {
"": {
"model": "airdef:block/irist_tubes"
}
}
}
@@ -0,0 +1,7 @@
{
"variants": {
"": {
"model": "airdef:block/irist_tubes_burnt"
}
}
}
@@ -0,0 +1,7 @@
{
"variants": {
"": {
"model": "airdef:block/launch_ramp"
}
}
}
@@ -0,0 +1,7 @@
{
"variants": {
"": {
"model": "airdef:block/launcher_truck"
}
}
}
@@ -0,0 +1,7 @@
{
"variants": {
"": {
"model": "airdef:block/nasams_launcher"
}
}
}
@@ -0,0 +1,7 @@
{
"variants": {
"": {
"model": "airdef:block/nasams_launcher_burnt"
}
}
}
@@ -0,0 +1,7 @@
{
"variants": {
"": {
"model": "airdef:block/nasams_trailer"
}
}
}
@@ -0,0 +1,7 @@
{
"variants": {
"": {
"model": "airdef:block/nasams_trailer_burnt"
}
}
}
@@ -0,0 +1,7 @@
{
"variants": {
"": {
"model": "airdef:block/p1sun"
}
}
}
@@ -0,0 +1,7 @@
{
"variants": {
"": {
"model": "airdef:block/p1sun_launcher"
}
}
}
@@ -0,0 +1,7 @@
{
"variants": {
"": {
"model": "airdef:block/p1sun_launcher_burnt"
}
}
}
@@ -0,0 +1,7 @@
{
"variants": {
"": {
"model": "airdef:block/pantsir_pack_burnt"
}
}
}
@@ -0,0 +1,7 @@
{
"variants": {
"": {
"model": "airdef:block/pantsir_truck_burnt"
}
}
}
@@ -0,0 +1,7 @@
{
"variants": {
"": {
"model": "airdef:block/pantsir_turret_burnt"
}
}
}
@@ -0,0 +1,7 @@
{
"variants": {
"": {
"model": "airdef:block/patriot_launcher_burnt"
}
}
}
@@ -0,0 +1,7 @@
{
"variants": {
"": {
"model": "airdef:block/patriot_trailer_burnt"
}
}
}
@@ -0,0 +1,7 @@
{
"variants": {
"": {
"model": "airdef:block/radar_truck"
}
}
}
@@ -0,0 +1,7 @@
{
"variants": {
"": {
"model": "airdef:block/radar_truck_burnt"
}
}
}
@@ -0,0 +1,7 @@
{
"variants": {
"": {
"model": "airdef:block/s400_chassis_burnt"
}
}
}
@@ -0,0 +1,7 @@
{
"variants": {
"": {
"model": "airdef:block/s400_tubes_burnt"
}
}
}
@@ -0,0 +1,7 @@
{
"variants": {
"": {
"model": "airdef:block/s500_chassis_burnt"
}
}
}
@@ -0,0 +1,7 @@
{
"variants": {
"": {
"model": "airdef:block/s500_tubes_burnt"
}
}
}
@@ -0,0 +1,7 @@
{
"variants": {
"": {
"model": "airdef:block/searchlight"
}
}
}
@@ -0,0 +1,7 @@
{
"variants": {
"": {
"model": "airdef:block/searchlight_burnt"
}
}
}
@@ -0,0 +1,7 @@
{
"variants": {
"": {
"model": "airdef:block/searchlight_head"
}
}
}
@@ -0,0 +1,7 @@
{
"variants": {
"": {
"model": "airdef:block/searchlight_head_burnt"
}
}
}
@@ -0,0 +1,7 @@
{
"variants": {
"": {
"model": "airdef:block/tor_chassis"
}
}
}
@@ -0,0 +1,7 @@
{
"variants": {
"": {
"model": "airdef:block/tor_chassis_burnt"
}
}
}
@@ -0,0 +1,7 @@
{
"variants": {
"": {
"model": "airdef:block/tor_turret"
}
}
}
@@ -0,0 +1,7 @@
{
"variants": {
"": {
"model": "airdef:block/tor_turret_burnt"
}
}
}
@@ -0,0 +1,7 @@
{
"variants": {
"": {
"model": "airdef:block/tzm_truck"
}
}
}
@@ -0,0 +1,7 @@
{
"variants": {
"": {
"model": "airdef:block/tzm_truck_burnt"
}
}
}
@@ -0,0 +1,6 @@
{
"model": {
"type": "minecraft:model",
"model": "airdef:item/deploy_buk"
}
}
@@ -0,0 +1,6 @@
{
"model": {
"type": "minecraft:model",
"model": "airdef:item/deploy_depot"
}
}
@@ -0,0 +1,6 @@
{
"model": {
"type": "minecraft:model",
"model": "airdef:item/deploy_ew"
}
}
@@ -0,0 +1,6 @@
{
"model": {
"type": "minecraft:model",
"model": "airdef:item/deploy_irist"
}
}
@@ -0,0 +1,6 @@
{
"model": {
"type": "minecraft:model",
"model": "airdef:item/deploy_light"
}
}
@@ -0,0 +1,6 @@
{
"model": {
"type": "minecraft:model",
"model": "airdef:item/deploy_nasams"
}
}
@@ -0,0 +1,6 @@
{
"model": {
"type": "minecraft:model",
"model": "airdef:item/deploy_p1sun"
}
}
@@ -0,0 +1,6 @@
{
"model": {
"type": "minecraft:model",
"model": "airdef:item/deploy_radar"
}
}
@@ -0,0 +1,6 @@
{
"model": {
"type": "minecraft:model",
"model": "airdef:item/deploy_tor"
}
}
@@ -0,0 +1,6 @@
{
"model": {
"type": "minecraft:model",
"model": "airdef:item/deploy_tzm"
}
}
@@ -0,0 +1,6 @@
{
"model": {
"type": "minecraft:model",
"model": "airdef:item/flare_gun"
}
}
@@ -0,0 +1,6 @@
{
"model": {
"type": "minecraft:model",
"model": "airdef:item/mover"
}
}
+64
View File
@@ -4,6 +4,8 @@
"block.airdef.geran3": "Герань-3",
"block.airdef.geran3_flame": "Факел",
"block.airdef.pac3": "PAC-3 MSE",
"block.airdef.irist_missile": "IRIS-T SLM",
"block.airdef.amraam_missile": "AMRAAM",
"block.airdef.flame": "Факел",
"block.airdef.patriot_launcher": "ПУ M903",
"block.airdef.patriot_truck": "Тягач",
@@ -39,7 +41,57 @@
"block.airdef.iskander": "Искандер-М",
"block.airdef.kinzhal": "Кинжал",
"block.airdef.tracer": "Трассер",
"block.airdef.irist_chassis": "Шасси IRIS-T SLM",
"block.airdef.irist_tubes": "Пакет IRIS-T",
"block.airdef.nasams_trailer": "Прицеп NASAMS",
"block.airdef.nasams_launcher": "Пусковая NASAMS",
"block.airdef.buk_chassis": "Шасси Бука",
"block.airdef.buk_turret": "Башня Бука",
"block.airdef.buk_rails": "Ракеты Бука",
"block.airdef.tor_chassis": "Шасси Тора",
"block.airdef.tor_turret": "Башня Тора",
"block.airdef.p1sun_launcher": "Пусковая P1-SUN",
"block.airdef.p1sun": "Дрон-перехватчик P1-SUN",
"block.airdef.radar_truck": "Шасси РЛС",
"block.airdef.depot": "Склад боеприпасов",
"block.airdef.tzm_truck": "Транспортно-заряжающая машина",
"block.airdef.barge": "Баржа",
"block.airdef.launch_ramp": "Рампа запуска дронов",
"block.airdef.launcher_truck": "Пусковая машина ракет",
"block.airdef.ew_truck": "Станция РЭБ",
"block.airdef.searchlight": "Прожектор",
"block.airdef.searchlight_head": "Голова прожектора",
"block.airdef.beam": "Луч прожектора",
"block.airdef.flare": "Осветительная ракета",
"block.airdef.reentry": "Боевой блок",
"block.airdef.patriot_trailer_burnt": "Полуприцеп (остов)",
"block.airdef.patriot_launcher_burnt": "ПУ M903 (остов)",
"block.airdef.gepard_hull_burnt": "Корпус Гепарда (остов)",
"block.airdef.gepard_turret_burnt": "Башня Гепарда (остов)",
"block.airdef.gepard_guns_burnt": "Пушки Гепарда (остов)",
"block.airdef.pantsir_truck_burnt": "Шасси Панциря (остов)",
"block.airdef.pantsir_turret_burnt": "Модуль Панциря (остов)",
"block.airdef.pantsir_pack_burnt": "Ракеты и пушки Панциря (остов)",
"block.airdef.s400_chassis_burnt": "Шасси С-400 (остов)",
"block.airdef.s400_tubes_burnt": "ТПК 48Н6 (остов)",
"block.airdef.s500_chassis_burnt": "Шасси С-500 (остов)",
"block.airdef.s500_tubes_burnt": "ТПК 77Н6 (остов)",
"block.airdef.irist_chassis_burnt": "Шасси IRIS-T SLM (остов)",
"block.airdef.irist_tubes_burnt": "Пакет IRIS-T (остов)",
"block.airdef.nasams_trailer_burnt": "Прицеп NASAMS (остов)",
"block.airdef.nasams_launcher_burnt": "Пусковая NASAMS (остов)",
"block.airdef.buk_chassis_burnt": "Шасси Бука (остов)",
"block.airdef.buk_turret_burnt": "Башня Бука (остов)",
"block.airdef.buk_rails_burnt": "Ракеты Бука (остов)",
"block.airdef.tor_chassis_burnt": "Шасси Тора (остов)",
"block.airdef.tor_turret_burnt": "Башня Тора (остов)",
"block.airdef.p1sun_launcher_burnt": "Пусковая P1-SUN (остов)",
"block.airdef.radar_truck_burnt": "Шасси РЛС (остов)",
"block.airdef.depot_burnt": "Склад боеприпасов (остов)",
"block.airdef.tzm_truck_burnt": "Транспортно-заряжающая машина (остов)",
"block.airdef.ew_truck_burnt": "Станция РЭБ (остов)",
"block.airdef.searchlight_burnt": "Прожектор (остов)",
"block.airdef.searchlight_head_burnt": "Голова прожектора (остов)",
"item.airdef.designator": "Целеуказатель",
"item.airdef.launch_shahed": "Пуск: Шахед-136",
"item.airdef.launch_geran3": "Пуск: Герань-3",
@@ -56,6 +108,18 @@
"item.airdef.launch_iskander": "Пуск: Искандер-М",
"item.airdef.launch_kinzhal": "Пуск: Кинжал",
"item.airdef.launch_oreshnik": "Пуск: Орешник",
"item.airdef.deploy_irist": "Развернуть IRIS-T SLM",
"item.airdef.deploy_nasams": "Развернуть NASAMS",
"item.airdef.deploy_buk": "Развернуть Бук-М2",
"item.airdef.deploy_tor": "Развернуть Тор-М2",
"item.airdef.deploy_p1sun": "Развернуть P1-SUN",
"item.airdef.deploy_radar": "Развернуть РЛС дальнего обнаружения",
"item.airdef.deploy_depot": "Развернуть склад боеприпасов",
"item.airdef.deploy_tzm": "Развернуть ТЗМ",
"item.airdef.deploy_ew": "Развернуть станцию РЭБ",
"item.airdef.deploy_light": "Развернуть прожектор",
"item.airdef.mover": "Пульт перемещения",
"item.airdef.flare_gun": "Осветительная ракета",
"item.airdef.remover": "Свернуть ПВО",
"item.airdef.cam_shahed": "Шахед-136",
"item.airdef.cam_geran3": "Герань-3",
+64
View File
@@ -4,6 +4,8 @@
"block.airdef.geran3": "Герань-3",
"block.airdef.geran3_flame": "Факел",
"block.airdef.pac3": "PAC-3 MSE",
"block.airdef.irist_missile": "IRIS-T SLM",
"block.airdef.amraam_missile": "AMRAAM",
"block.airdef.flame": "Факел",
"block.airdef.patriot_launcher": "ПУ M903",
"block.airdef.patriot_truck": "Тягач",
@@ -39,7 +41,57 @@
"block.airdef.iskander": "Искандер-М",
"block.airdef.kinzhal": "Кинжал",
"block.airdef.tracer": "Трассер",
"block.airdef.irist_chassis": "Шасси IRIS-T SLM",
"block.airdef.irist_tubes": "Пакет IRIS-T",
"block.airdef.nasams_trailer": "Прицеп NASAMS",
"block.airdef.nasams_launcher": "Пусковая NASAMS",
"block.airdef.buk_chassis": "Шасси Бука",
"block.airdef.buk_turret": "Башня Бука",
"block.airdef.buk_rails": "Ракеты Бука",
"block.airdef.tor_chassis": "Шасси Тора",
"block.airdef.tor_turret": "Башня Тора",
"block.airdef.p1sun_launcher": "Пусковая P1-SUN",
"block.airdef.p1sun": "Дрон-перехватчик P1-SUN",
"block.airdef.radar_truck": "Шасси РЛС",
"block.airdef.depot": "Склад боеприпасов",
"block.airdef.tzm_truck": "Транспортно-заряжающая машина",
"block.airdef.barge": "Баржа",
"block.airdef.launch_ramp": "Рампа запуска дронов",
"block.airdef.launcher_truck": "Пусковая машина ракет",
"block.airdef.ew_truck": "Станция РЭБ",
"block.airdef.searchlight": "Прожектор",
"block.airdef.searchlight_head": "Голова прожектора",
"block.airdef.beam": "Луч прожектора",
"block.airdef.flare": "Осветительная ракета",
"block.airdef.reentry": "Боевой блок",
"block.airdef.patriot_trailer_burnt": "Полуприцеп (остов)",
"block.airdef.patriot_launcher_burnt": "ПУ M903 (остов)",
"block.airdef.gepard_hull_burnt": "Корпус Гепарда (остов)",
"block.airdef.gepard_turret_burnt": "Башня Гепарда (остов)",
"block.airdef.gepard_guns_burnt": "Пушки Гепарда (остов)",
"block.airdef.pantsir_truck_burnt": "Шасси Панциря (остов)",
"block.airdef.pantsir_turret_burnt": "Модуль Панциря (остов)",
"block.airdef.pantsir_pack_burnt": "Ракеты и пушки Панциря (остов)",
"block.airdef.s400_chassis_burnt": "Шасси С-400 (остов)",
"block.airdef.s400_tubes_burnt": "ТПК 48Н6 (остов)",
"block.airdef.s500_chassis_burnt": "Шасси С-500 (остов)",
"block.airdef.s500_tubes_burnt": "ТПК 77Н6 (остов)",
"block.airdef.irist_chassis_burnt": "Шасси IRIS-T SLM (остов)",
"block.airdef.irist_tubes_burnt": "Пакет IRIS-T (остов)",
"block.airdef.nasams_trailer_burnt": "Прицеп NASAMS (остов)",
"block.airdef.nasams_launcher_burnt": "Пусковая NASAMS (остов)",
"block.airdef.buk_chassis_burnt": "Шасси Бука (остов)",
"block.airdef.buk_turret_burnt": "Башня Бука (остов)",
"block.airdef.buk_rails_burnt": "Ракеты Бука (остов)",
"block.airdef.tor_chassis_burnt": "Шасси Тора (остов)",
"block.airdef.tor_turret_burnt": "Башня Тора (остов)",
"block.airdef.p1sun_launcher_burnt": "Пусковая P1-SUN (остов)",
"block.airdef.radar_truck_burnt": "Шасси РЛС (остов)",
"block.airdef.depot_burnt": "Склад боеприпасов (остов)",
"block.airdef.tzm_truck_burnt": "Транспортно-заряжающая машина (остов)",
"block.airdef.ew_truck_burnt": "Станция РЭБ (остов)",
"block.airdef.searchlight_burnt": "Прожектор (остов)",
"block.airdef.searchlight_head_burnt": "Голова прожектора (остов)",
"item.airdef.designator": "Целеуказатель",
"item.airdef.launch_shahed": "Пуск: Шахед-136",
"item.airdef.launch_geran3": "Пуск: Герань-3",
@@ -56,6 +108,18 @@
"item.airdef.launch_iskander": "Пуск: Искандер-М",
"item.airdef.launch_kinzhal": "Пуск: Кинжал",
"item.airdef.launch_oreshnik": "Пуск: Орешник",
"item.airdef.deploy_irist": "Развернуть IRIS-T SLM",
"item.airdef.deploy_nasams": "Развернуть NASAMS",
"item.airdef.deploy_buk": "Развернуть Бук-М2",
"item.airdef.deploy_tor": "Развернуть Тор-М2",
"item.airdef.deploy_p1sun": "Развернуть P1-SUN",
"item.airdef.deploy_radar": "Развернуть РЛС дальнего обнаружения",
"item.airdef.deploy_depot": "Развернуть склад боеприпасов",
"item.airdef.deploy_tzm": "Развернуть ТЗМ",
"item.airdef.deploy_ew": "Развернуть станцию РЭБ",
"item.airdef.deploy_light": "Развернуть прожектор",
"item.airdef.mover": "Пульт перемещения",
"item.airdef.flare_gun": "Осветительная ракета",
"item.airdef.remover": "Свернуть ПВО",
"item.airdef.cam_shahed": "Шахед-136",
"item.airdef.cam_geran3": "Герань-3",
File diff suppressed because it is too large Load Diff
@@ -0,0 +1,896 @@
{
"ambientocclusion": false,
"textures": {
"dark_metal": "airdef:block/dark_metal",
"metal": "airdef:block/metal",
"ru_khaki_s31": "airdef:block/ru_khaki_s31",
"ru_khaki_s33": "airdef:block/ru_khaki_s33",
"particle": "airdef:block/dark_metal"
},
"elements": [
{
"from": [
-16.0,
0.0,
-16.0
],
"to": [
32.0,
3.0,
32.0
],
"faces": {
"north": {
"uv": [
0,
0,
16,
3.0
],
"texture": "#dark_metal"
},
"south": {
"uv": [
0,
0,
16,
3.0
],
"texture": "#dark_metal"
},
"east": {
"uv": [
0,
0,
16,
3.0
],
"texture": "#dark_metal"
},
"west": {
"uv": [
0,
0,
16,
3.0
],
"texture": "#dark_metal"
},
"up": {
"uv": [
0,
0,
16,
16
],
"texture": "#dark_metal"
},
"down": {
"uv": [
0,
0,
16,
16
],
"texture": "#dark_metal"
}
}
},
{
"from": [
-16.0,
3.0,
-16.0
],
"to": [
32.0,
4.0,
32.0
],
"faces": {
"north": {
"uv": [
0,
0,
16,
1.0
],
"texture": "#metal"
},
"south": {
"uv": [
0,
0,
16,
1.0
],
"texture": "#metal"
},
"east": {
"uv": [
0,
0,
16,
1.0
],
"texture": "#metal"
},
"west": {
"uv": [
0,
0,
16,
1.0
],
"texture": "#metal"
},
"up": {
"uv": [
0,
0,
16,
16
],
"texture": "#metal"
},
"down": {
"uv": [
0,
0,
16,
16
],
"texture": "#metal"
}
}
},
{
"from": [
-15.0,
3.0,
-15.0
],
"to": [
31.0,
4.4,
31.0
],
"faces": {
"north": {
"uv": [
0,
0,
16,
1.4000000000000004
],
"texture": "#ru_khaki_s31"
},
"south": {
"uv": [
0,
0,
16,
1.4000000000000004
],
"texture": "#ru_khaki_s31"
},
"east": {
"uv": [
0,
0,
16,
1.4000000000000004
],
"texture": "#ru_khaki_s31"
},
"west": {
"uv": [
0,
0,
16,
1.4000000000000004
],
"texture": "#ru_khaki_s31"
},
"up": {
"uv": [
0,
0,
16,
16
],
"texture": "#ru_khaki_s33"
},
"down": {
"uv": [
0,
0,
16,
16
],
"texture": "#ru_khaki_s33"
}
}
},
{
"from": [
-16.0,
4.0,
-16.0
],
"to": [
-14.0,
6.0,
32.0
],
"faces": {
"north": {
"uv": [
0,
0,
2.0,
2.0
],
"texture": "#dark_metal"
},
"south": {
"uv": [
0,
0,
2.0,
2.0
],
"texture": "#dark_metal"
},
"east": {
"uv": [
0,
0,
16,
2.0
],
"texture": "#dark_metal"
},
"west": {
"uv": [
0,
0,
16,
2.0
],
"texture": "#dark_metal"
},
"up": {
"uv": [
0,
0,
2.0,
16
],
"texture": "#dark_metal"
},
"down": {
"uv": [
0,
0,
2.0,
16
],
"texture": "#dark_metal"
}
}
},
{
"from": [
30.0,
4.0,
-16.0
],
"to": [
32.0,
6.0,
32.0
],
"faces": {
"north": {
"uv": [
0,
0,
2.0,
2.0
],
"texture": "#dark_metal"
},
"south": {
"uv": [
0,
0,
2.0,
2.0
],
"texture": "#dark_metal"
},
"east": {
"uv": [
0,
0,
16,
2.0
],
"texture": "#dark_metal"
},
"west": {
"uv": [
0,
0,
16,
2.0
],
"texture": "#dark_metal"
},
"up": {
"uv": [
0,
0,
2.0,
16
],
"texture": "#dark_metal"
},
"down": {
"uv": [
0,
0,
2.0,
16
],
"texture": "#dark_metal"
}
}
},
{
"from": [
-16.0,
4.0,
30.0
],
"to": [
32.0,
6.0,
32.0
],
"faces": {
"north": {
"uv": [
0,
0,
16,
2.0
],
"texture": "#dark_metal"
},
"south": {
"uv": [
0,
0,
16,
2.0
],
"texture": "#dark_metal"
},
"east": {
"uv": [
0,
0,
2.0,
2.0
],
"texture": "#dark_metal"
},
"west": {
"uv": [
0,
0,
2.0,
2.0
],
"texture": "#dark_metal"
},
"up": {
"uv": [
0,
0,
16,
2.0
],
"texture": "#dark_metal"
},
"down": {
"uv": [
0,
0,
16,
2.0
],
"texture": "#dark_metal"
}
}
},
{
"from": [
-16.0,
4.0,
-16.0
],
"to": [
32.0,
6.0,
-14.0
],
"faces": {
"north": {
"uv": [
0,
0,
16,
2.0
],
"texture": "#dark_metal"
},
"south": {
"uv": [
0,
0,
16,
2.0
],
"texture": "#dark_metal"
},
"east": {
"uv": [
0,
0,
2.0,
2.0
],
"texture": "#dark_metal"
},
"west": {
"uv": [
0,
0,
2.0,
2.0
],
"texture": "#dark_metal"
},
"up": {
"uv": [
0,
0,
16,
2.0
],
"texture": "#dark_metal"
},
"down": {
"uv": [
0,
0,
16,
2.0
],
"texture": "#dark_metal"
}
}
},
{
"from": [
-12.0,
4.4,
-10.0
],
"to": [
-9.0,
6.5,
-7.0
],
"faces": {
"north": {
"uv": [
0,
0,
3.0,
2.0999999999999996
],
"texture": "#metal"
},
"south": {
"uv": [
0,
0,
3.0,
2.0999999999999996
],
"texture": "#metal"
},
"east": {
"uv": [
0,
0,
3.0,
2.0999999999999996
],
"texture": "#metal"
},
"west": {
"uv": [
0,
0,
3.0,
2.0999999999999996
],
"texture": "#metal"
},
"up": {
"uv": [
0,
0,
3.0,
3.0
],
"texture": "#metal"
},
"down": {
"uv": [
0,
0,
3.0,
3.0
],
"texture": "#metal"
}
}
},
{
"from": [
25.0,
4.4,
-10.0
],
"to": [
28.0,
6.5,
-7.0
],
"faces": {
"north": {
"uv": [
0,
0,
3.0,
2.0999999999999996
],
"texture": "#metal"
},
"south": {
"uv": [
0,
0,
3.0,
2.0999999999999996
],
"texture": "#metal"
},
"east": {
"uv": [
0,
0,
3.0,
2.0999999999999996
],
"texture": "#metal"
},
"west": {
"uv": [
0,
0,
3.0,
2.0999999999999996
],
"texture": "#metal"
},
"up": {
"uv": [
0,
0,
3.0,
3.0
],
"texture": "#metal"
},
"down": {
"uv": [
0,
0,
3.0,
3.0
],
"texture": "#metal"
}
}
},
{
"from": [
-12.0,
4.4,
8.0
],
"to": [
-9.0,
6.5,
11.0
],
"faces": {
"north": {
"uv": [
0,
0,
3.0,
2.0999999999999996
],
"texture": "#metal"
},
"south": {
"uv": [
0,
0,
3.0,
2.0999999999999996
],
"texture": "#metal"
},
"east": {
"uv": [
0,
0,
3.0,
2.0999999999999996
],
"texture": "#metal"
},
"west": {
"uv": [
0,
0,
3.0,
2.0999999999999996
],
"texture": "#metal"
},
"up": {
"uv": [
0,
0,
3.0,
3.0
],
"texture": "#metal"
},
"down": {
"uv": [
0,
0,
3.0,
3.0
],
"texture": "#metal"
}
}
},
{
"from": [
25.0,
4.4,
8.0
],
"to": [
28.0,
6.5,
11.0
],
"faces": {
"north": {
"uv": [
0,
0,
3.0,
2.0999999999999996
],
"texture": "#metal"
},
"south": {
"uv": [
0,
0,
3.0,
2.0999999999999996
],
"texture": "#metal"
},
"east": {
"uv": [
0,
0,
3.0,
2.0999999999999996
],
"texture": "#metal"
},
"west": {
"uv": [
0,
0,
3.0,
2.0999999999999996
],
"texture": "#metal"
},
"up": {
"uv": [
0,
0,
3.0,
3.0
],
"texture": "#metal"
},
"down": {
"uv": [
0,
0,
3.0,
3.0
],
"texture": "#metal"
}
}
},
{
"from": [
-12.0,
4.4,
26.0
],
"to": [
-9.0,
6.5,
29.0
],
"faces": {
"north": {
"uv": [
0,
0,
3.0,
2.0999999999999996
],
"texture": "#metal"
},
"south": {
"uv": [
0,
0,
3.0,
2.0999999999999996
],
"texture": "#metal"
},
"east": {
"uv": [
0,
0,
3.0,
2.0999999999999996
],
"texture": "#metal"
},
"west": {
"uv": [
0,
0,
3.0,
2.0999999999999996
],
"texture": "#metal"
},
"up": {
"uv": [
0,
0,
3.0,
3.0
],
"texture": "#metal"
},
"down": {
"uv": [
0,
0,
3.0,
3.0
],
"texture": "#metal"
}
}
},
{
"from": [
25.0,
4.4,
26.0
],
"to": [
28.0,
6.5,
29.0
],
"faces": {
"north": {
"uv": [
0,
0,
3.0,
2.0999999999999996
],
"texture": "#metal"
},
"south": {
"uv": [
0,
0,
3.0,
2.0999999999999996
],
"texture": "#metal"
},
"east": {
"uv": [
0,
0,
3.0,
2.0999999999999996
],
"texture": "#metal"
},
"west": {
"uv": [
0,
0,
3.0,
2.0999999999999996
],
"texture": "#metal"
},
"up": {
"uv": [
0,
0,
3.0,
3.0
],
"texture": "#metal"
},
"down": {
"uv": [
0,
0,
3.0,
3.0
],
"texture": "#metal"
}
}
}
]
}
@@ -0,0 +1,77 @@
{
"ambientocclusion": false,
"textures": {
"beam": "airdef:block/beam",
"particle": "airdef:block/beam"
},
"elements": [
{
"from": [
6.5,
6.5,
-16.0
],
"to": [
9.5,
9.5,
32.0
],
"faces": {
"north": {
"uv": [
0,
0,
3.0,
3.0
],
"texture": "#beam"
},
"south": {
"uv": [
0,
0,
3.0,
3.0
],
"texture": "#beam"
},
"east": {
"uv": [
0,
0,
16,
3.0
],
"texture": "#beam"
},
"west": {
"uv": [
0,
0,
16,
3.0
],
"texture": "#beam"
},
"up": {
"uv": [
0,
0,
3.0,
16
],
"texture": "#beam"
},
"down": {
"uv": [
0,
0,
3.0,
16
],
"texture": "#beam"
}
}
}
]
}
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
@@ -0,0 +1,897 @@
{
"ambientocclusion": false,
"textures": {
"missile_ru": "airdef:block/missile_ru",
"booster": "airdef:block/booster",
"dark_metal": "airdef:block/dark_metal",
"ru_green_s31": "airdef:block/ru_green_s31",
"ru_green": "airdef:block/ru_green",
"particle": "airdef:block/missile_ru"
},
"elements": [
{
"from": [
-10.5,
4.0,
-16.0
],
"to": [
-7.5,
7.0,
26.0
],
"faces": {
"north": {
"uv": [
0,
0,
3.0,
3.0
],
"texture": "#missile_ru"
},
"south": {
"uv": [
0,
0,
3.0,
3.0
],
"texture": "#missile_ru"
},
"east": {
"uv": [
0,
0,
16,
3.0
],
"texture": "#missile_ru"
},
"west": {
"uv": [
0,
0,
16,
3.0
],
"texture": "#missile_ru"
},
"up": {
"uv": [
0,
0,
3.0,
16
],
"texture": "#missile_ru"
},
"down": {
"uv": [
0,
0,
3.0,
16
],
"texture": "#missile_ru"
}
}
},
{
"from": [
-10.8,
3.5,
20.0
],
"to": [
-7.2,
7.5,
27.0
],
"faces": {
"north": {
"uv": [
0,
0,
3.6000000000000005,
4.0
],
"texture": "#booster"
},
"south": {
"uv": [
0,
0,
3.6000000000000005,
4.0
],
"texture": "#booster"
},
"east": {
"uv": [
0,
0,
7.0,
4.0
],
"texture": "#booster"
},
"west": {
"uv": [
0,
0,
7.0,
4.0
],
"texture": "#booster"
},
"up": {
"uv": [
0,
0,
3.6000000000000005,
7.0
],
"texture": "#booster"
},
"down": {
"uv": [
0,
0,
3.6000000000000005,
7.0
],
"texture": "#booster"
}
}
},
{
"from": [
-9.5,
2.0,
-6.0
],
"to": [
-8.5,
4.0,
16.0
],
"faces": {
"north": {
"uv": [
0,
0,
1.0,
2.0
],
"texture": "#dark_metal"
},
"south": {
"uv": [
0,
0,
1.0,
2.0
],
"texture": "#dark_metal"
},
"east": {
"uv": [
0,
0,
16,
2.0
],
"texture": "#dark_metal"
},
"west": {
"uv": [
0,
0,
16,
2.0
],
"texture": "#dark_metal"
},
"up": {
"uv": [
0,
0,
1.0,
16
],
"texture": "#dark_metal"
},
"down": {
"uv": [
0,
0,
1.0,
16
],
"texture": "#dark_metal"
}
}
},
{
"from": [
-4.5,
4.0,
-16.0
],
"to": [
-1.5,
7.0,
26.0
],
"faces": {
"north": {
"uv": [
0,
0,
3.0,
3.0
],
"texture": "#missile_ru"
},
"south": {
"uv": [
0,
0,
3.0,
3.0
],
"texture": "#missile_ru"
},
"east": {
"uv": [
0,
0,
16,
3.0
],
"texture": "#missile_ru"
},
"west": {
"uv": [
0,
0,
16,
3.0
],
"texture": "#missile_ru"
},
"up": {
"uv": [
0,
0,
3.0,
16
],
"texture": "#missile_ru"
},
"down": {
"uv": [
0,
0,
3.0,
16
],
"texture": "#missile_ru"
}
}
},
{
"from": [
-4.8,
3.5,
20.0
],
"to": [
-1.2,
7.5,
27.0
],
"faces": {
"north": {
"uv": [
0,
0,
3.5999999999999996,
4.0
],
"texture": "#booster"
},
"south": {
"uv": [
0,
0,
3.5999999999999996,
4.0
],
"texture": "#booster"
},
"east": {
"uv": [
0,
0,
7.0,
4.0
],
"texture": "#booster"
},
"west": {
"uv": [
0,
0,
7.0,
4.0
],
"texture": "#booster"
},
"up": {
"uv": [
0,
0,
3.5999999999999996,
7.0
],
"texture": "#booster"
},
"down": {
"uv": [
0,
0,
3.5999999999999996,
7.0
],
"texture": "#booster"
}
}
},
{
"from": [
-3.5,
2.0,
-6.0
],
"to": [
-2.5,
4.0,
16.0
],
"faces": {
"north": {
"uv": [
0,
0,
1.0,
2.0
],
"texture": "#dark_metal"
},
"south": {
"uv": [
0,
0,
1.0,
2.0
],
"texture": "#dark_metal"
},
"east": {
"uv": [
0,
0,
16,
2.0
],
"texture": "#dark_metal"
},
"west": {
"uv": [
0,
0,
16,
2.0
],
"texture": "#dark_metal"
},
"up": {
"uv": [
0,
0,
1.0,
16
],
"texture": "#dark_metal"
},
"down": {
"uv": [
0,
0,
1.0,
16
],
"texture": "#dark_metal"
}
}
},
{
"from": [
11.5,
4.0,
-16.0
],
"to": [
14.5,
7.0,
26.0
],
"faces": {
"north": {
"uv": [
0,
0,
3.0,
3.0
],
"texture": "#missile_ru"
},
"south": {
"uv": [
0,
0,
3.0,
3.0
],
"texture": "#missile_ru"
},
"east": {
"uv": [
0,
0,
16,
3.0
],
"texture": "#missile_ru"
},
"west": {
"uv": [
0,
0,
16,
3.0
],
"texture": "#missile_ru"
},
"up": {
"uv": [
0,
0,
3.0,
16
],
"texture": "#missile_ru"
},
"down": {
"uv": [
0,
0,
3.0,
16
],
"texture": "#missile_ru"
}
}
},
{
"from": [
11.2,
3.5,
20.0
],
"to": [
14.8,
7.5,
27.0
],
"faces": {
"north": {
"uv": [
0,
0,
3.6000000000000014,
4.0
],
"texture": "#booster"
},
"south": {
"uv": [
0,
0,
3.6000000000000014,
4.0
],
"texture": "#booster"
},
"east": {
"uv": [
0,
0,
7.0,
4.0
],
"texture": "#booster"
},
"west": {
"uv": [
0,
0,
7.0,
4.0
],
"texture": "#booster"
},
"up": {
"uv": [
0,
0,
3.6000000000000014,
7.0
],
"texture": "#booster"
},
"down": {
"uv": [
0,
0,
3.6000000000000014,
7.0
],
"texture": "#booster"
}
}
},
{
"from": [
12.5,
2.0,
-6.0
],
"to": [
13.5,
4.0,
16.0
],
"faces": {
"north": {
"uv": [
0,
0,
1.0,
2.0
],
"texture": "#dark_metal"
},
"south": {
"uv": [
0,
0,
1.0,
2.0
],
"texture": "#dark_metal"
},
"east": {
"uv": [
0,
0,
16,
2.0
],
"texture": "#dark_metal"
},
"west": {
"uv": [
0,
0,
16,
2.0
],
"texture": "#dark_metal"
},
"up": {
"uv": [
0,
0,
1.0,
16
],
"texture": "#dark_metal"
},
"down": {
"uv": [
0,
0,
1.0,
16
],
"texture": "#dark_metal"
}
}
},
{
"from": [
17.5,
4.0,
-16.0
],
"to": [
20.5,
7.0,
26.0
],
"faces": {
"north": {
"uv": [
0,
0,
3.0,
3.0
],
"texture": "#missile_ru"
},
"south": {
"uv": [
0,
0,
3.0,
3.0
],
"texture": "#missile_ru"
},
"east": {
"uv": [
0,
0,
16,
3.0
],
"texture": "#missile_ru"
},
"west": {
"uv": [
0,
0,
16,
3.0
],
"texture": "#missile_ru"
},
"up": {
"uv": [
0,
0,
3.0,
16
],
"texture": "#missile_ru"
},
"down": {
"uv": [
0,
0,
3.0,
16
],
"texture": "#missile_ru"
}
}
},
{
"from": [
17.2,
3.5,
20.0
],
"to": [
20.8,
7.5,
27.0
],
"faces": {
"north": {
"uv": [
0,
0,
3.6000000000000014,
4.0
],
"texture": "#booster"
},
"south": {
"uv": [
0,
0,
3.6000000000000014,
4.0
],
"texture": "#booster"
},
"east": {
"uv": [
0,
0,
7.0,
4.0
],
"texture": "#booster"
},
"west": {
"uv": [
0,
0,
7.0,
4.0
],
"texture": "#booster"
},
"up": {
"uv": [
0,
0,
3.6000000000000014,
7.0
],
"texture": "#booster"
},
"down": {
"uv": [
0,
0,
3.6000000000000014,
7.0
],
"texture": "#booster"
}
}
},
{
"from": [
18.5,
2.0,
-6.0
],
"to": [
19.5,
4.0,
16.0
],
"faces": {
"north": {
"uv": [
0,
0,
1.0,
2.0
],
"texture": "#dark_metal"
},
"south": {
"uv": [
0,
0,
1.0,
2.0
],
"texture": "#dark_metal"
},
"east": {
"uv": [
0,
0,
16,
2.0
],
"texture": "#dark_metal"
},
"west": {
"uv": [
0,
0,
16,
2.0
],
"texture": "#dark_metal"
},
"up": {
"uv": [
0,
0,
1.0,
16
],
"texture": "#dark_metal"
},
"down": {
"uv": [
0,
0,
1.0,
16
],
"texture": "#dark_metal"
}
}
},
{
"from": [
-12.0,
0.0,
-2.0
],
"to": [
28.0,
2.0,
14.0
],
"faces": {
"north": {
"uv": [
0,
0,
16,
2.0
],
"texture": "#ru_green_s31"
},
"south": {
"uv": [
0,
0,
16,
2.0
],
"texture": "#ru_green_s31"
},
"east": {
"uv": [
0,
0,
16,
2.0
],
"texture": "#ru_green"
},
"west": {
"uv": [
0,
0,
16,
2.0
],
"texture": "#ru_green"
},
"up": {
"uv": [
0,
0,
16,
16
],
"texture": "#ru_green_s31"
},
"down": {
"uv": [
0,
0,
16,
16
],
"texture": "#ru_green_s31"
}
}
}
]
}
@@ -0,0 +1,897 @@
{
"ambientocclusion": false,
"textures": {
"missile_ru_b": "airdef:block/missile_ru_b",
"booster_b": "airdef:block/booster_b",
"dark_metal_b": "airdef:block/dark_metal_b",
"ru_green_s31_b": "airdef:block/ru_green_s31_b",
"ru_green_b": "airdef:block/ru_green_b",
"particle": "airdef:block/missile_ru_b"
},
"elements": [
{
"from": [
-10.5,
4.0,
-16.0
],
"to": [
-7.5,
7.0,
26.0
],
"faces": {
"north": {
"uv": [
0,
0,
3.0,
3.0
],
"texture": "#missile_ru_b"
},
"south": {
"uv": [
0,
0,
3.0,
3.0
],
"texture": "#missile_ru_b"
},
"east": {
"uv": [
0,
0,
16,
3.0
],
"texture": "#missile_ru_b"
},
"west": {
"uv": [
0,
0,
16,
3.0
],
"texture": "#missile_ru_b"
},
"up": {
"uv": [
0,
0,
3.0,
16
],
"texture": "#missile_ru_b"
},
"down": {
"uv": [
0,
0,
3.0,
16
],
"texture": "#missile_ru_b"
}
}
},
{
"from": [
-10.8,
3.5,
20.0
],
"to": [
-7.2,
7.5,
27.0
],
"faces": {
"north": {
"uv": [
0,
0,
3.6000000000000005,
4.0
],
"texture": "#booster_b"
},
"south": {
"uv": [
0,
0,
3.6000000000000005,
4.0
],
"texture": "#booster_b"
},
"east": {
"uv": [
0,
0,
7.0,
4.0
],
"texture": "#booster_b"
},
"west": {
"uv": [
0,
0,
7.0,
4.0
],
"texture": "#booster_b"
},
"up": {
"uv": [
0,
0,
3.6000000000000005,
7.0
],
"texture": "#booster_b"
},
"down": {
"uv": [
0,
0,
3.6000000000000005,
7.0
],
"texture": "#booster_b"
}
}
},
{
"from": [
-9.5,
2.0,
-6.0
],
"to": [
-8.5,
4.0,
16.0
],
"faces": {
"north": {
"uv": [
0,
0,
1.0,
2.0
],
"texture": "#dark_metal_b"
},
"south": {
"uv": [
0,
0,
1.0,
2.0
],
"texture": "#dark_metal_b"
},
"east": {
"uv": [
0,
0,
16,
2.0
],
"texture": "#dark_metal_b"
},
"west": {
"uv": [
0,
0,
16,
2.0
],
"texture": "#dark_metal_b"
},
"up": {
"uv": [
0,
0,
1.0,
16
],
"texture": "#dark_metal_b"
},
"down": {
"uv": [
0,
0,
1.0,
16
],
"texture": "#dark_metal_b"
}
}
},
{
"from": [
-4.5,
4.0,
-16.0
],
"to": [
-1.5,
7.0,
26.0
],
"faces": {
"north": {
"uv": [
0,
0,
3.0,
3.0
],
"texture": "#missile_ru_b"
},
"south": {
"uv": [
0,
0,
3.0,
3.0
],
"texture": "#missile_ru_b"
},
"east": {
"uv": [
0,
0,
16,
3.0
],
"texture": "#missile_ru_b"
},
"west": {
"uv": [
0,
0,
16,
3.0
],
"texture": "#missile_ru_b"
},
"up": {
"uv": [
0,
0,
3.0,
16
],
"texture": "#missile_ru_b"
},
"down": {
"uv": [
0,
0,
3.0,
16
],
"texture": "#missile_ru_b"
}
}
},
{
"from": [
-4.8,
3.5,
20.0
],
"to": [
-1.2,
7.5,
27.0
],
"faces": {
"north": {
"uv": [
0,
0,
3.5999999999999996,
4.0
],
"texture": "#booster_b"
},
"south": {
"uv": [
0,
0,
3.5999999999999996,
4.0
],
"texture": "#booster_b"
},
"east": {
"uv": [
0,
0,
7.0,
4.0
],
"texture": "#booster_b"
},
"west": {
"uv": [
0,
0,
7.0,
4.0
],
"texture": "#booster_b"
},
"up": {
"uv": [
0,
0,
3.5999999999999996,
7.0
],
"texture": "#booster_b"
},
"down": {
"uv": [
0,
0,
3.5999999999999996,
7.0
],
"texture": "#booster_b"
}
}
},
{
"from": [
-3.5,
2.0,
-6.0
],
"to": [
-2.5,
4.0,
16.0
],
"faces": {
"north": {
"uv": [
0,
0,
1.0,
2.0
],
"texture": "#dark_metal_b"
},
"south": {
"uv": [
0,
0,
1.0,
2.0
],
"texture": "#dark_metal_b"
},
"east": {
"uv": [
0,
0,
16,
2.0
],
"texture": "#dark_metal_b"
},
"west": {
"uv": [
0,
0,
16,
2.0
],
"texture": "#dark_metal_b"
},
"up": {
"uv": [
0,
0,
1.0,
16
],
"texture": "#dark_metal_b"
},
"down": {
"uv": [
0,
0,
1.0,
16
],
"texture": "#dark_metal_b"
}
}
},
{
"from": [
11.5,
4.0,
-16.0
],
"to": [
14.5,
7.0,
26.0
],
"faces": {
"north": {
"uv": [
0,
0,
3.0,
3.0
],
"texture": "#missile_ru_b"
},
"south": {
"uv": [
0,
0,
3.0,
3.0
],
"texture": "#missile_ru_b"
},
"east": {
"uv": [
0,
0,
16,
3.0
],
"texture": "#missile_ru_b"
},
"west": {
"uv": [
0,
0,
16,
3.0
],
"texture": "#missile_ru_b"
},
"up": {
"uv": [
0,
0,
3.0,
16
],
"texture": "#missile_ru_b"
},
"down": {
"uv": [
0,
0,
3.0,
16
],
"texture": "#missile_ru_b"
}
}
},
{
"from": [
11.2,
3.5,
20.0
],
"to": [
14.8,
7.5,
27.0
],
"faces": {
"north": {
"uv": [
0,
0,
3.6000000000000014,
4.0
],
"texture": "#booster_b"
},
"south": {
"uv": [
0,
0,
3.6000000000000014,
4.0
],
"texture": "#booster_b"
},
"east": {
"uv": [
0,
0,
7.0,
4.0
],
"texture": "#booster_b"
},
"west": {
"uv": [
0,
0,
7.0,
4.0
],
"texture": "#booster_b"
},
"up": {
"uv": [
0,
0,
3.6000000000000014,
7.0
],
"texture": "#booster_b"
},
"down": {
"uv": [
0,
0,
3.6000000000000014,
7.0
],
"texture": "#booster_b"
}
}
},
{
"from": [
12.5,
2.0,
-6.0
],
"to": [
13.5,
4.0,
16.0
],
"faces": {
"north": {
"uv": [
0,
0,
1.0,
2.0
],
"texture": "#dark_metal_b"
},
"south": {
"uv": [
0,
0,
1.0,
2.0
],
"texture": "#dark_metal_b"
},
"east": {
"uv": [
0,
0,
16,
2.0
],
"texture": "#dark_metal_b"
},
"west": {
"uv": [
0,
0,
16,
2.0
],
"texture": "#dark_metal_b"
},
"up": {
"uv": [
0,
0,
1.0,
16
],
"texture": "#dark_metal_b"
},
"down": {
"uv": [
0,
0,
1.0,
16
],
"texture": "#dark_metal_b"
}
}
},
{
"from": [
17.5,
4.0,
-16.0
],
"to": [
20.5,
7.0,
26.0
],
"faces": {
"north": {
"uv": [
0,
0,
3.0,
3.0
],
"texture": "#missile_ru_b"
},
"south": {
"uv": [
0,
0,
3.0,
3.0
],
"texture": "#missile_ru_b"
},
"east": {
"uv": [
0,
0,
16,
3.0
],
"texture": "#missile_ru_b"
},
"west": {
"uv": [
0,
0,
16,
3.0
],
"texture": "#missile_ru_b"
},
"up": {
"uv": [
0,
0,
3.0,
16
],
"texture": "#missile_ru_b"
},
"down": {
"uv": [
0,
0,
3.0,
16
],
"texture": "#missile_ru_b"
}
}
},
{
"from": [
17.2,
3.5,
20.0
],
"to": [
20.8,
7.5,
27.0
],
"faces": {
"north": {
"uv": [
0,
0,
3.6000000000000014,
4.0
],
"texture": "#booster_b"
},
"south": {
"uv": [
0,
0,
3.6000000000000014,
4.0
],
"texture": "#booster_b"
},
"east": {
"uv": [
0,
0,
7.0,
4.0
],
"texture": "#booster_b"
},
"west": {
"uv": [
0,
0,
7.0,
4.0
],
"texture": "#booster_b"
},
"up": {
"uv": [
0,
0,
3.6000000000000014,
7.0
],
"texture": "#booster_b"
},
"down": {
"uv": [
0,
0,
3.6000000000000014,
7.0
],
"texture": "#booster_b"
}
}
},
{
"from": [
18.5,
2.0,
-6.0
],
"to": [
19.5,
4.0,
16.0
],
"faces": {
"north": {
"uv": [
0,
0,
1.0,
2.0
],
"texture": "#dark_metal_b"
},
"south": {
"uv": [
0,
0,
1.0,
2.0
],
"texture": "#dark_metal_b"
},
"east": {
"uv": [
0,
0,
16,
2.0
],
"texture": "#dark_metal_b"
},
"west": {
"uv": [
0,
0,
16,
2.0
],
"texture": "#dark_metal_b"
},
"up": {
"uv": [
0,
0,
1.0,
16
],
"texture": "#dark_metal_b"
},
"down": {
"uv": [
0,
0,
1.0,
16
],
"texture": "#dark_metal_b"
}
}
},
{
"from": [
-12.0,
0.0,
-2.0
],
"to": [
28.0,
2.0,
14.0
],
"faces": {
"north": {
"uv": [
0,
0,
16,
2.0
],
"texture": "#ru_green_s31_b"
},
"south": {
"uv": [
0,
0,
16,
2.0
],
"texture": "#ru_green_s31_b"
},
"east": {
"uv": [
0,
0,
16,
2.0
],
"texture": "#ru_green_b"
},
"west": {
"uv": [
0,
0,
16,
2.0
],
"texture": "#ru_green_b"
},
"up": {
"uv": [
0,
0,
16,
16
],
"texture": "#ru_green_s31_b"
},
"down": {
"uv": [
0,
0,
16,
16
],
"texture": "#ru_green_s31_b"
}
}
}
]
}
@@ -0,0 +1,216 @@
{
"ambientocclusion": false,
"textures": {
"ru_green_s21": "airdef:block/ru_green_s21",
"ru_green_s22": "airdef:block/ru_green_s22",
"radar_face": "airdef:block/radar_face",
"ru_green": "airdef:block/ru_green",
"particle": "airdef:block/ru_green_s21"
},
"elements": [
{
"from": [
-4.0,
0.0,
-4.0
],
"to": [
20.0,
9.0,
20.0
],
"faces": {
"north": {
"uv": [
0,
0,
16,
9.0
],
"texture": "#ru_green_s21"
},
"south": {
"uv": [
0,
0,
16,
9.0
],
"texture": "#ru_green_s21"
},
"east": {
"uv": [
0,
0,
16,
9.0
],
"texture": "#ru_green_s21"
},
"west": {
"uv": [
0,
0,
16,
9.0
],
"texture": "#ru_green_s21"
},
"up": {
"uv": [
0,
0,
16,
16
],
"texture": "#ru_green_s22"
},
"down": {
"uv": [
0,
0,
16,
16
],
"texture": "#ru_green_s22"
}
}
},
{
"from": [
1.0,
2.0,
-10.0
],
"to": [
15.0,
14.0,
-4.0
],
"faces": {
"north": {
"uv": [
0,
0,
14.0,
12.0
],
"texture": "#radar_face"
},
"south": {
"uv": [
0,
0,
14.0,
12.0
],
"texture": "#radar_face"
},
"east": {
"uv": [
0,
0,
6.0,
12.0
],
"texture": "#radar_face"
},
"west": {
"uv": [
0,
0,
6.0,
12.0
],
"texture": "#radar_face"
},
"up": {
"uv": [
0,
0,
14.0,
6.0
],
"texture": "#radar_face"
},
"down": {
"uv": [
0,
0,
14.0,
6.0
],
"texture": "#radar_face"
}
}
},
{
"from": [
-2.0,
9.0,
6.0
],
"to": [
18.0,
11.0,
18.0
],
"faces": {
"north": {
"uv": [
0,
0,
16,
2.0
],
"texture": "#ru_green"
},
"south": {
"uv": [
0,
0,
16,
2.0
],
"texture": "#ru_green"
},
"east": {
"uv": [
0,
0,
12.0,
2.0
],
"texture": "#ru_green"
},
"west": {
"uv": [
0,
0,
12.0,
2.0
],
"texture": "#ru_green"
},
"up": {
"uv": [
0,
0,
16,
12.0
],
"texture": "#ru_green"
},
"down": {
"uv": [
0,
0,
16,
12.0
],
"texture": "#ru_green"
}
}
}
]
}
@@ -0,0 +1,216 @@
{
"ambientocclusion": false,
"textures": {
"ru_green_s21_b": "airdef:block/ru_green_s21_b",
"ru_green_s22_b": "airdef:block/ru_green_s22_b",
"radar_face_b": "airdef:block/radar_face_b",
"ru_green_b": "airdef:block/ru_green_b",
"particle": "airdef:block/ru_green_s21_b"
},
"elements": [
{
"from": [
-4.0,
0.0,
-4.0
],
"to": [
20.0,
9.0,
20.0
],
"faces": {
"north": {
"uv": [
0,
0,
16,
9.0
],
"texture": "#ru_green_s21_b"
},
"south": {
"uv": [
0,
0,
16,
9.0
],
"texture": "#ru_green_s21_b"
},
"east": {
"uv": [
0,
0,
16,
9.0
],
"texture": "#ru_green_s21_b"
},
"west": {
"uv": [
0,
0,
16,
9.0
],
"texture": "#ru_green_s21_b"
},
"up": {
"uv": [
0,
0,
16,
16
],
"texture": "#ru_green_s22_b"
},
"down": {
"uv": [
0,
0,
16,
16
],
"texture": "#ru_green_s22_b"
}
}
},
{
"from": [
1.0,
2.0,
-10.0
],
"to": [
15.0,
14.0,
-4.0
],
"faces": {
"north": {
"uv": [
0,
0,
14.0,
12.0
],
"texture": "#radar_face_b"
},
"south": {
"uv": [
0,
0,
14.0,
12.0
],
"texture": "#radar_face_b"
},
"east": {
"uv": [
0,
0,
6.0,
12.0
],
"texture": "#radar_face_b"
},
"west": {
"uv": [
0,
0,
6.0,
12.0
],
"texture": "#radar_face_b"
},
"up": {
"uv": [
0,
0,
14.0,
6.0
],
"texture": "#radar_face_b"
},
"down": {
"uv": [
0,
0,
14.0,
6.0
],
"texture": "#radar_face_b"
}
}
},
{
"from": [
-2.0,
9.0,
6.0
],
"to": [
18.0,
11.0,
18.0
],
"faces": {
"north": {
"uv": [
0,
0,
16,
2.0
],
"texture": "#ru_green_b"
},
"south": {
"uv": [
0,
0,
16,
2.0
],
"texture": "#ru_green_b"
},
"east": {
"uv": [
0,
0,
12.0,
2.0
],
"texture": "#ru_green_b"
},
"west": {
"uv": [
0,
0,
12.0,
2.0
],
"texture": "#ru_green_b"
},
"up": {
"uv": [
0,
0,
16,
12.0
],
"texture": "#ru_green_b"
},
"down": {
"uv": [
0,
0,
16,
12.0
],
"texture": "#ru_green_b"
}
}
}
]
}
@@ -0,0 +1,488 @@
{
"ambientocclusion": false,
"textures": {
"concrete": "airdef:block/concrete",
"crate": "airdef:block/crate",
"tube_cap": "airdef:block/tube_cap",
"tube": "airdef:block/tube",
"particle": "airdef:block/concrete"
},
"elements": [
{
"from": [
-14.0,
0.0,
-14.0
],
"to": [
30.0,
2.0,
30.0
],
"faces": {
"north": {
"uv": [
0,
0,
16,
2.0
],
"texture": "#concrete"
},
"south": {
"uv": [
0,
0,
16,
2.0
],
"texture": "#concrete"
},
"east": {
"uv": [
0,
0,
16,
2.0
],
"texture": "#concrete"
},
"west": {
"uv": [
0,
0,
16,
2.0
],
"texture": "#concrete"
},
"up": {
"uv": [
0,
0,
16,
16
],
"texture": "#concrete"
},
"down": {
"uv": [
0,
0,
16,
16
],
"texture": "#concrete"
}
}
},
{
"from": [
-12.0,
2.0,
-12.0
],
"to": [
0.0,
10.0,
0.0
],
"faces": {
"north": {
"uv": [
0,
0,
12.0,
8.0
],
"texture": "#crate"
},
"south": {
"uv": [
0,
0,
12.0,
8.0
],
"texture": "#crate"
},
"east": {
"uv": [
0,
0,
12.0,
8.0
],
"texture": "#crate"
},
"west": {
"uv": [
0,
0,
12.0,
8.0
],
"texture": "#crate"
},
"up": {
"uv": [
0,
0,
12.0,
12.0
],
"texture": "#crate"
},
"down": {
"uv": [
0,
0,
12.0,
12.0
],
"texture": "#crate"
}
}
},
{
"from": [
-12.0,
2.0,
4.0
],
"to": [
0.0,
10.0,
16.0
],
"faces": {
"north": {
"uv": [
0,
0,
12.0,
8.0
],
"texture": "#crate"
},
"south": {
"uv": [
0,
0,
12.0,
8.0
],
"texture": "#crate"
},
"east": {
"uv": [
0,
0,
12.0,
8.0
],
"texture": "#crate"
},
"west": {
"uv": [
0,
0,
12.0,
8.0
],
"texture": "#crate"
},
"up": {
"uv": [
0,
0,
12.0,
12.0
],
"texture": "#crate"
},
"down": {
"uv": [
0,
0,
12.0,
12.0
],
"texture": "#crate"
}
}
},
{
"from": [
4.0,
2.0,
-12.0
],
"to": [
16.0,
10.0,
0.0
],
"faces": {
"north": {
"uv": [
0,
0,
12.0,
8.0
],
"texture": "#crate"
},
"south": {
"uv": [
0,
0,
12.0,
8.0
],
"texture": "#crate"
},
"east": {
"uv": [
0,
0,
12.0,
8.0
],
"texture": "#crate"
},
"west": {
"uv": [
0,
0,
12.0,
8.0
],
"texture": "#crate"
},
"up": {
"uv": [
0,
0,
12.0,
12.0
],
"texture": "#crate"
},
"down": {
"uv": [
0,
0,
12.0,
12.0
],
"texture": "#crate"
}
}
},
{
"from": [
6.0,
2.0,
6.0
],
"to": [
28.0,
7.0,
10.0
],
"faces": {
"north": {
"uv": [
0,
0,
16,
5.0
],
"texture": "#tube_cap"
},
"south": {
"uv": [
0,
0,
16,
5.0
],
"texture": "#tube_cap"
},
"east": {
"uv": [
0,
0,
4.0,
5.0
],
"texture": "#tube"
},
"west": {
"uv": [
0,
0,
4.0,
5.0
],
"texture": "#tube"
},
"up": {
"uv": [
0,
0,
16,
4.0
],
"texture": "#tube"
},
"down": {
"uv": [
0,
0,
16,
4.0
],
"texture": "#tube"
}
}
},
{
"from": [
6.0,
7.0,
6.0
],
"to": [
28.0,
12.0,
10.0
],
"faces": {
"north": {
"uv": [
0,
0,
16,
5.0
],
"texture": "#tube_cap"
},
"south": {
"uv": [
0,
0,
16,
5.0
],
"texture": "#tube_cap"
},
"east": {
"uv": [
0,
0,
4.0,
5.0
],
"texture": "#tube"
},
"west": {
"uv": [
0,
0,
4.0,
5.0
],
"texture": "#tube"
},
"up": {
"uv": [
0,
0,
16,
4.0
],
"texture": "#tube"
},
"down": {
"uv": [
0,
0,
16,
4.0
],
"texture": "#tube"
}
}
},
{
"from": [
6.0,
12.0,
6.0
],
"to": [
28.0,
17.0,
10.0
],
"faces": {
"north": {
"uv": [
0,
0,
16,
5.0
],
"texture": "#tube_cap"
},
"south": {
"uv": [
0,
0,
16,
5.0
],
"texture": "#tube_cap"
},
"east": {
"uv": [
0,
0,
4.0,
5.0
],
"texture": "#tube"
},
"west": {
"uv": [
0,
0,
4.0,
5.0
],
"texture": "#tube"
},
"up": {
"uv": [
0,
0,
16,
4.0
],
"texture": "#tube"
},
"down": {
"uv": [
0,
0,
16,
4.0
],
"texture": "#tube"
}
}
}
]
}
@@ -0,0 +1,488 @@
{
"ambientocclusion": false,
"textures": {
"concrete_b": "airdef:block/concrete_b",
"crate_b": "airdef:block/crate_b",
"tube_cap_b": "airdef:block/tube_cap_b",
"tube_b": "airdef:block/tube_b",
"particle": "airdef:block/concrete_b"
},
"elements": [
{
"from": [
-14.0,
0.0,
-14.0
],
"to": [
30.0,
2.0,
30.0
],
"faces": {
"north": {
"uv": [
0,
0,
16,
2.0
],
"texture": "#concrete_b"
},
"south": {
"uv": [
0,
0,
16,
2.0
],
"texture": "#concrete_b"
},
"east": {
"uv": [
0,
0,
16,
2.0
],
"texture": "#concrete_b"
},
"west": {
"uv": [
0,
0,
16,
2.0
],
"texture": "#concrete_b"
},
"up": {
"uv": [
0,
0,
16,
16
],
"texture": "#concrete_b"
},
"down": {
"uv": [
0,
0,
16,
16
],
"texture": "#concrete_b"
}
}
},
{
"from": [
-12.0,
2.0,
-12.0
],
"to": [
0.0,
10.0,
0.0
],
"faces": {
"north": {
"uv": [
0,
0,
12.0,
8.0
],
"texture": "#crate_b"
},
"south": {
"uv": [
0,
0,
12.0,
8.0
],
"texture": "#crate_b"
},
"east": {
"uv": [
0,
0,
12.0,
8.0
],
"texture": "#crate_b"
},
"west": {
"uv": [
0,
0,
12.0,
8.0
],
"texture": "#crate_b"
},
"up": {
"uv": [
0,
0,
12.0,
12.0
],
"texture": "#crate_b"
},
"down": {
"uv": [
0,
0,
12.0,
12.0
],
"texture": "#crate_b"
}
}
},
{
"from": [
-12.0,
2.0,
4.0
],
"to": [
0.0,
10.0,
16.0
],
"faces": {
"north": {
"uv": [
0,
0,
12.0,
8.0
],
"texture": "#crate_b"
},
"south": {
"uv": [
0,
0,
12.0,
8.0
],
"texture": "#crate_b"
},
"east": {
"uv": [
0,
0,
12.0,
8.0
],
"texture": "#crate_b"
},
"west": {
"uv": [
0,
0,
12.0,
8.0
],
"texture": "#crate_b"
},
"up": {
"uv": [
0,
0,
12.0,
12.0
],
"texture": "#crate_b"
},
"down": {
"uv": [
0,
0,
12.0,
12.0
],
"texture": "#crate_b"
}
}
},
{
"from": [
4.0,
2.0,
-12.0
],
"to": [
16.0,
10.0,
0.0
],
"faces": {
"north": {
"uv": [
0,
0,
12.0,
8.0
],
"texture": "#crate_b"
},
"south": {
"uv": [
0,
0,
12.0,
8.0
],
"texture": "#crate_b"
},
"east": {
"uv": [
0,
0,
12.0,
8.0
],
"texture": "#crate_b"
},
"west": {
"uv": [
0,
0,
12.0,
8.0
],
"texture": "#crate_b"
},
"up": {
"uv": [
0,
0,
12.0,
12.0
],
"texture": "#crate_b"
},
"down": {
"uv": [
0,
0,
12.0,
12.0
],
"texture": "#crate_b"
}
}
},
{
"from": [
6.0,
2.0,
6.0
],
"to": [
28.0,
7.0,
10.0
],
"faces": {
"north": {
"uv": [
0,
0,
16,
5.0
],
"texture": "#tube_cap_b"
},
"south": {
"uv": [
0,
0,
16,
5.0
],
"texture": "#tube_cap_b"
},
"east": {
"uv": [
0,
0,
4.0,
5.0
],
"texture": "#tube_b"
},
"west": {
"uv": [
0,
0,
4.0,
5.0
],
"texture": "#tube_b"
},
"up": {
"uv": [
0,
0,
16,
4.0
],
"texture": "#tube_b"
},
"down": {
"uv": [
0,
0,
16,
4.0
],
"texture": "#tube_b"
}
}
},
{
"from": [
6.0,
7.0,
6.0
],
"to": [
28.0,
12.0,
10.0
],
"faces": {
"north": {
"uv": [
0,
0,
16,
5.0
],
"texture": "#tube_cap_b"
},
"south": {
"uv": [
0,
0,
16,
5.0
],
"texture": "#tube_cap_b"
},
"east": {
"uv": [
0,
0,
4.0,
5.0
],
"texture": "#tube_b"
},
"west": {
"uv": [
0,
0,
4.0,
5.0
],
"texture": "#tube_b"
},
"up": {
"uv": [
0,
0,
16,
4.0
],
"texture": "#tube_b"
},
"down": {
"uv": [
0,
0,
16,
4.0
],
"texture": "#tube_b"
}
}
},
{
"from": [
6.0,
12.0,
6.0
],
"to": [
28.0,
17.0,
10.0
],
"faces": {
"north": {
"uv": [
0,
0,
16,
5.0
],
"texture": "#tube_cap_b"
},
"south": {
"uv": [
0,
0,
16,
5.0
],
"texture": "#tube_cap_b"
},
"east": {
"uv": [
0,
0,
4.0,
5.0
],
"texture": "#tube_b"
},
"west": {
"uv": [
0,
0,
4.0,
5.0
],
"texture": "#tube_b"
},
"up": {
"uv": [
0,
0,
16,
4.0
],
"texture": "#tube_b"
},
"down": {
"uv": [
0,
0,
16,
4.0
],
"texture": "#tube_b"
}
}
}
]
}
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
@@ -0,0 +1,146 @@
{
"ambientocclusion": false,
"textures": {
"lamp": "airdef:block/lamp",
"bare_antenna": "airdef:block/bare_antenna",
"particle": "airdef:block/lamp"
},
"elements": [
{
"from": [
6.5,
6.5,
6.5
],
"to": [
9.5,
9.5,
9.5
],
"faces": {
"north": {
"uv": [
0,
0,
3.0,
3.0
],
"texture": "#lamp"
},
"south": {
"uv": [
0,
0,
3.0,
3.0
],
"texture": "#lamp"
},
"east": {
"uv": [
0,
0,
3.0,
3.0
],
"texture": "#lamp"
},
"west": {
"uv": [
0,
0,
3.0,
3.0
],
"texture": "#lamp"
},
"up": {
"uv": [
0,
0,
3.0,
3.0
],
"texture": "#lamp"
},
"down": {
"uv": [
0,
0,
3.0,
3.0
],
"texture": "#lamp"
}
}
},
{
"from": [
7.6,
9.5,
7.6
],
"to": [
8.4,
16.0,
8.4
],
"faces": {
"north": {
"uv": [
0,
0,
0.8000000000000007,
6.5
],
"texture": "#bare_antenna"
},
"south": {
"uv": [
0,
0,
0.8000000000000007,
6.5
],
"texture": "#bare_antenna"
},
"east": {
"uv": [
0,
0,
0.8000000000000007,
6.5
],
"texture": "#bare_antenna"
},
"west": {
"uv": [
0,
0,
0.8000000000000007,
6.5
],
"texture": "#bare_antenna"
},
"up": {
"uv": [
0,
0,
0.8000000000000007,
0.8000000000000007
],
"texture": "#bare_antenna"
},
"down": {
"uv": [
0,
0,
0.8000000000000007,
0.8000000000000007
],
"texture": "#bare_antenna"
}
}
}
]
}
@@ -1,9 +1,9 @@
{
"ambientocclusion": false,
"textures": {
"dish": "airdef:block/dish",
"bare_dish": "airdef:block/bare_dish",
"metal": "airdef:block/metal",
"particle": "airdef:block/dish"
"particle": "airdef:block/bare_dish"
},
"elements": [
{
@@ -25,7 +25,7 @@
16,
8.0
],
"texture": "#dish"
"texture": "#bare_dish"
},
"south": {
"uv": [
@@ -34,7 +34,7 @@
16,
8.0
],
"texture": "#dish"
"texture": "#bare_dish"
},
"east": {
"uv": [
@@ -43,7 +43,7 @@
2.0,
8.0
],
"texture": "#dish"
"texture": "#bare_dish"
},
"west": {
"uv": [
@@ -52,7 +52,7 @@
2.0,
8.0
],
"texture": "#dish"
"texture": "#bare_dish"
},
"up": {
"uv": [
@@ -61,7 +61,7 @@
16,
2.0
],
"texture": "#dish"
"texture": "#bare_dish"
},
"down": {
"uv": [
@@ -70,7 +70,7 @@
16,
2.0
],
"texture": "#dish"
"texture": "#bare_dish"
}
}
},
@@ -1,10 +1,10 @@
{
"ambientocclusion": false,
"textures": {
"barrel": "airdef:block/barrel",
"bare_barrel": "airdef:block/bare_barrel",
"flecktarn": "airdef:block/flecktarn",
"dark_metal": "airdef:block/dark_metal",
"particle": "airdef:block/barrel"
"particle": "airdef:block/bare_barrel"
},
"elements": [
{
@@ -26,7 +26,7 @@
2.5,
2.5
],
"texture": "#barrel"
"texture": "#bare_barrel"
},
"south": {
"uv": [
@@ -35,7 +35,7 @@
2.5,
2.5
],
"texture": "#barrel"
"texture": "#bare_barrel"
},
"east": {
"uv": [
@@ -44,7 +44,7 @@
16,
2.5
],
"texture": "#barrel"
"texture": "#bare_barrel"
},
"west": {
"uv": [
@@ -53,7 +53,7 @@
16,
2.5
],
"texture": "#barrel"
"texture": "#bare_barrel"
},
"up": {
"uv": [
@@ -62,7 +62,7 @@
2.5,
16
],
"texture": "#barrel"
"texture": "#bare_barrel"
},
"down": {
"uv": [
@@ -71,7 +71,7 @@
2.5,
16
],
"texture": "#barrel"
"texture": "#bare_barrel"
}
}
},
@@ -94,7 +94,7 @@
2.5,
2.5
],
"texture": "#barrel"
"texture": "#bare_barrel"
},
"south": {
"uv": [
@@ -103,7 +103,7 @@
2.5,
2.5
],
"texture": "#barrel"
"texture": "#bare_barrel"
},
"east": {
"uv": [
@@ -112,7 +112,7 @@
16,
2.5
],
"texture": "#barrel"
"texture": "#bare_barrel"
},
"west": {
"uv": [
@@ -121,7 +121,7 @@
16,
2.5
],
"texture": "#barrel"
"texture": "#bare_barrel"
},
"up": {
"uv": [
@@ -130,7 +130,7 @@
2.5,
16
],
"texture": "#barrel"
"texture": "#bare_barrel"
},
"down": {
"uv": [
@@ -139,7 +139,7 @@
2.5,
16
],
"texture": "#barrel"
"texture": "#bare_barrel"
}
}
},
@@ -0,0 +1,351 @@
{
"ambientocclusion": false,
"textures": {
"bare_barrel_b": "airdef:block/bare_barrel_b",
"flecktarn_b": "airdef:block/flecktarn_b",
"dark_metal_b": "airdef:block/dark_metal_b",
"particle": "airdef:block/bare_barrel_b"
},
"elements": [
{
"from": [
-8.0,
5.0,
-16.0
],
"to": [
-5.5,
7.5,
12.0
],
"faces": {
"north": {
"uv": [
0,
0,
2.5,
2.5
],
"texture": "#bare_barrel_b"
},
"south": {
"uv": [
0,
0,
2.5,
2.5
],
"texture": "#bare_barrel_b"
},
"east": {
"uv": [
0,
0,
16,
2.5
],
"texture": "#bare_barrel_b"
},
"west": {
"uv": [
0,
0,
16,
2.5
],
"texture": "#bare_barrel_b"
},
"up": {
"uv": [
0,
0,
2.5,
16
],
"texture": "#bare_barrel_b"
},
"down": {
"uv": [
0,
0,
2.5,
16
],
"texture": "#bare_barrel_b"
}
}
},
{
"from": [
21.5,
5.0,
-16.0
],
"to": [
24.0,
7.5,
12.0
],
"faces": {
"north": {
"uv": [
0,
0,
2.5,
2.5
],
"texture": "#bare_barrel_b"
},
"south": {
"uv": [
0,
0,
2.5,
2.5
],
"texture": "#bare_barrel_b"
},
"east": {
"uv": [
0,
0,
16,
2.5
],
"texture": "#bare_barrel_b"
},
"west": {
"uv": [
0,
0,
16,
2.5
],
"texture": "#bare_barrel_b"
},
"up": {
"uv": [
0,
0,
2.5,
16
],
"texture": "#bare_barrel_b"
},
"down": {
"uv": [
0,
0,
2.5,
16
],
"texture": "#bare_barrel_b"
}
}
},
{
"from": [
-9.0,
3.5,
2.0
],
"to": [
-4.0,
9.0,
14.0
],
"faces": {
"north": {
"uv": [
0,
0,
5.0,
5.5
],
"texture": "#flecktarn_b"
},
"south": {
"uv": [
0,
0,
5.0,
5.5
],
"texture": "#flecktarn_b"
},
"east": {
"uv": [
0,
0,
12.0,
5.5
],
"texture": "#flecktarn_b"
},
"west": {
"uv": [
0,
0,
12.0,
5.5
],
"texture": "#flecktarn_b"
},
"up": {
"uv": [
0,
0,
5.0,
12.0
],
"texture": "#flecktarn_b"
},
"down": {
"uv": [
0,
0,
5.0,
12.0
],
"texture": "#flecktarn_b"
}
}
},
{
"from": [
20.0,
3.5,
2.0
],
"to": [
25.0,
9.0,
14.0
],
"faces": {
"north": {
"uv": [
0,
0,
5.0,
5.5
],
"texture": "#flecktarn_b"
},
"south": {
"uv": [
0,
0,
5.0,
5.5
],
"texture": "#flecktarn_b"
},
"east": {
"uv": [
0,
0,
12.0,
5.5
],
"texture": "#flecktarn_b"
},
"west": {
"uv": [
0,
0,
12.0,
5.5
],
"texture": "#flecktarn_b"
},
"up": {
"uv": [
0,
0,
5.0,
12.0
],
"texture": "#flecktarn_b"
},
"down": {
"uv": [
0,
0,
5.0,
12.0
],
"texture": "#flecktarn_b"
}
}
},
{
"from": [
-8.5,
4.5,
-16.0
],
"to": [
-5.0,
8.0,
-13.0
],
"faces": {
"north": {
"uv": [
0,
0,
3.5,
3.5
],
"texture": "#dark_metal_b"
},
"south": {
"uv": [
0,
0,
3.5,
3.5
],
"texture": "#dark_metal_b"
},
"east": {
"uv": [
0,
0,
3.0,
3.5
],
"texture": "#dark_metal_b"
},
"west": {
"uv": [
0,
0,
3.0,
3.5
],
"texture": "#dark_metal_b"
},
"up": {
"uv": [
0,
0,
3.5,
3.0
],
"texture": "#dark_metal_b"
},
"down": {
"uv": [
0,
0,
3.5,
3.0
],
"texture": "#dark_metal_b"
}
}
}
]
}
@@ -1,11 +1,15 @@
{
"ambientocclusion": false,
"textures": {
"flecktarn_s21": "airdef:block/flecktarn_s21",
"flecktarn_s31": "airdef:block/flecktarn_s31",
"flecktarn_s23": "airdef:block/flecktarn_s23",
"flecktarn": "airdef:block/flecktarn",
"dark_metal": "airdef:block/dark_metal",
"metal": "airdef:block/metal",
"track": "airdef:block/track",
"particle": "airdef:block/flecktarn"
"flecktarn_s13": "airdef:block/flecktarn_s13",
"particle": "airdef:block/flecktarn_s21"
},
"elements": [
{
@@ -27,7 +31,7 @@
16,
13.0
],
"texture": "#flecktarn"
"texture": "#flecktarn_s21"
},
"south": {
"uv": [
@@ -36,7 +40,7 @@
16,
13.0
],
"texture": "#flecktarn"
"texture": "#flecktarn_s21"
},
"east": {
"uv": [
@@ -45,7 +49,7 @@
16,
13.0
],
"texture": "#flecktarn"
"texture": "#flecktarn_s31"
},
"west": {
"uv": [
@@ -54,7 +58,7 @@
16,
13.0
],
"texture": "#flecktarn"
"texture": "#flecktarn_s31"
},
"up": {
"uv": [
@@ -63,7 +67,7 @@
16,
16
],
"texture": "#flecktarn"
"texture": "#flecktarn_s23"
},
"down": {
"uv": [
@@ -72,7 +76,7 @@
16,
16
],
"texture": "#flecktarn"
"texture": "#flecktarn_s23"
}
}
},
@@ -95,7 +99,7 @@
16,
8.0
],
"texture": "#flecktarn"
"texture": "#flecktarn_s21"
},
"south": {
"uv": [
@@ -104,7 +108,7 @@
16,
8.0
],
"texture": "#flecktarn"
"texture": "#flecktarn_s21"
},
"east": {
"uv": [
@@ -131,7 +135,7 @@
16,
4.0
],
"texture": "#flecktarn"
"texture": "#flecktarn_s21"
},
"down": {
"uv": [
@@ -140,7 +144,7 @@
16,
4.0
],
"texture": "#flecktarn"
"texture": "#flecktarn_s21"
}
}
},
@@ -453,7 +457,7 @@
16,
5.0
],
"texture": "#flecktarn"
"texture": "#flecktarn_s31"
},
"west": {
"uv": [
@@ -462,7 +466,7 @@
16,
5.0
],
"texture": "#flecktarn"
"texture": "#flecktarn_s31"
},
"up": {
"uv": [
@@ -471,7 +475,7 @@
4.5,
16
],
"texture": "#flecktarn"
"texture": "#flecktarn_s13"
},
"down": {
"uv": [
@@ -480,7 +484,7 @@
4.5,
16
],
"texture": "#flecktarn"
"texture": "#flecktarn_s13"
}
}
},
@@ -521,7 +525,7 @@
16,
5.0
],
"texture": "#flecktarn"
"texture": "#flecktarn_s31"
},
"west": {
"uv": [
@@ -530,7 +534,7 @@
16,
5.0
],
"texture": "#flecktarn"
"texture": "#flecktarn_s31"
},
"up": {
"uv": [
@@ -539,7 +543,7 @@
4.5,
16
],
"texture": "#flecktarn"
"texture": "#flecktarn_s13"
},
"down": {
"uv": [
@@ -548,7 +552,7 @@
4.5,
16
],
"texture": "#flecktarn"
"texture": "#flecktarn_s13"
}
}
}
@@ -0,0 +1,560 @@
{
"ambientocclusion": false,
"textures": {
"flecktarn_s21_b": "airdef:block/flecktarn_s21_b",
"flecktarn_s31_b": "airdef:block/flecktarn_s31_b",
"flecktarn_s23_b": "airdef:block/flecktarn_s23_b",
"flecktarn_b": "airdef:block/flecktarn_b",
"dark_metal_b": "airdef:block/dark_metal_b",
"metal_b": "airdef:block/metal_b",
"track_b": "airdef:block/track_b",
"flecktarn_s13_b": "airdef:block/flecktarn_s13_b",
"particle": "airdef:block/flecktarn_s21_b"
},
"elements": [
{
"from": [
-10.0,
4.0,
-12.0
],
"to": [
26.0,
17.0,
30.0
],
"faces": {
"north": {
"uv": [
0,
0,
16,
13.0
],
"texture": "#flecktarn_s21_b"
},
"south": {
"uv": [
0,
0,
16,
13.0
],
"texture": "#flecktarn_s21_b"
},
"east": {
"uv": [
0,
0,
16,
13.0
],
"texture": "#flecktarn_s31_b"
},
"west": {
"uv": [
0,
0,
16,
13.0
],
"texture": "#flecktarn_s31_b"
},
"up": {
"uv": [
0,
0,
16,
16
],
"texture": "#flecktarn_s23_b"
},
"down": {
"uv": [
0,
0,
16,
16
],
"texture": "#flecktarn_s23_b"
}
}
},
{
"from": [
-10.0,
4.0,
-16.0
],
"to": [
26.0,
12.0,
-12.0
],
"faces": {
"north": {
"uv": [
0,
0,
16,
8.0
],
"texture": "#flecktarn_s21_b"
},
"south": {
"uv": [
0,
0,
16,
8.0
],
"texture": "#flecktarn_s21_b"
},
"east": {
"uv": [
0,
0,
4.0,
8.0
],
"texture": "#flecktarn_b"
},
"west": {
"uv": [
0,
0,
4.0,
8.0
],
"texture": "#flecktarn_b"
},
"up": {
"uv": [
0,
0,
16,
4.0
],
"texture": "#flecktarn_s21_b"
},
"down": {
"uv": [
0,
0,
16,
4.0
],
"texture": "#flecktarn_s21_b"
}
}
},
{
"from": [
-8.0,
17.0,
18.0
],
"to": [
24.0,
18.0,
30.0
],
"faces": {
"north": {
"uv": [
0,
0,
16,
1.0
],
"texture": "#dark_metal_b"
},
"south": {
"uv": [
0,
0,
16,
1.0
],
"texture": "#dark_metal_b"
},
"east": {
"uv": [
0,
0,
12.0,
1.0
],
"texture": "#dark_metal_b"
},
"west": {
"uv": [
0,
0,
12.0,
1.0
],
"texture": "#dark_metal_b"
},
"up": {
"uv": [
0,
0,
16,
12.0
],
"texture": "#dark_metal_b"
},
"down": {
"uv": [
0,
0,
16,
12.0
],
"texture": "#dark_metal_b"
}
}
},
{
"from": [
-6.0,
17.0,
-10.0
],
"to": [
4.0,
18.0,
-4.0
],
"faces": {
"north": {
"uv": [
0,
0,
10.0,
1.0
],
"texture": "#metal_b"
},
"south": {
"uv": [
0,
0,
10.0,
1.0
],
"texture": "#metal_b"
},
"east": {
"uv": [
0,
0,
6.0,
1.0
],
"texture": "#metal_b"
},
"west": {
"uv": [
0,
0,
6.0,
1.0
],
"texture": "#metal_b"
},
"up": {
"uv": [
0,
0,
10.0,
6.0
],
"texture": "#metal_b"
},
"down": {
"uv": [
0,
0,
10.0,
6.0
],
"texture": "#metal_b"
}
}
},
{
"from": [
-14.0,
0.0,
-14.0
],
"to": [
-10.0,
10.0,
31.0
],
"faces": {
"north": {
"uv": [
0,
0,
4.0,
10.0
],
"texture": "#track_b"
},
"south": {
"uv": [
0,
0,
4.0,
10.0
],
"texture": "#track_b"
},
"east": {
"uv": [
0,
0,
16,
10.0
],
"texture": "#track_b"
},
"west": {
"uv": [
0,
0,
16,
10.0
],
"texture": "#track_b"
},
"up": {
"uv": [
0,
0,
4.0,
16
],
"texture": "#track_b"
},
"down": {
"uv": [
0,
0,
4.0,
16
],
"texture": "#track_b"
}
}
},
{
"from": [
26.0,
0.0,
-14.0
],
"to": [
30.0,
10.0,
31.0
],
"faces": {
"north": {
"uv": [
0,
0,
4.0,
10.0
],
"texture": "#track_b"
},
"south": {
"uv": [
0,
0,
4.0,
10.0
],
"texture": "#track_b"
},
"east": {
"uv": [
0,
0,
16,
10.0
],
"texture": "#track_b"
},
"west": {
"uv": [
0,
0,
16,
10.0
],
"texture": "#track_b"
},
"up": {
"uv": [
0,
0,
4.0,
16
],
"texture": "#track_b"
},
"down": {
"uv": [
0,
0,
4.0,
16
],
"texture": "#track_b"
}
}
},
{
"from": [
-14.5,
6.0,
-14.0
],
"to": [
-10.0,
11.0,
31.0
],
"faces": {
"north": {
"uv": [
0,
0,
4.5,
5.0
],
"texture": "#flecktarn_b"
},
"south": {
"uv": [
0,
0,
4.5,
5.0
],
"texture": "#flecktarn_b"
},
"east": {
"uv": [
0,
0,
16,
5.0
],
"texture": "#flecktarn_s31_b"
},
"west": {
"uv": [
0,
0,
16,
5.0
],
"texture": "#flecktarn_s31_b"
},
"up": {
"uv": [
0,
0,
4.5,
16
],
"texture": "#flecktarn_s13_b"
},
"down": {
"uv": [
0,
0,
4.5,
16
],
"texture": "#flecktarn_s13_b"
}
}
},
{
"from": [
26.0,
6.0,
-14.0
],
"to": [
30.5,
11.0,
31.0
],
"faces": {
"north": {
"uv": [
0,
0,
4.5,
5.0
],
"texture": "#flecktarn_b"
},
"south": {
"uv": [
0,
0,
4.5,
5.0
],
"texture": "#flecktarn_b"
},
"east": {
"uv": [
0,
0,
16,
5.0
],
"texture": "#flecktarn_s31_b"
},
"west": {
"uv": [
0,
0,
16,
5.0
],
"texture": "#flecktarn_s31_b"
},
"up": {
"uv": [
0,
0,
4.5,
16
],
"texture": "#flecktarn_s13_b"
},
"down": {
"uv": [
0,
0,
4.5,
16
],
"texture": "#flecktarn_s13_b"
}
}
}
]
}
@@ -1,10 +1,14 @@
{
"ambientocclusion": false,
"textures": {
"flecktarn_s21": "airdef:block/flecktarn_s21",
"flecktarn": "airdef:block/flecktarn",
"radar_face": "airdef:block/radar_face",
"metal": "airdef:block/metal",
"particle": "airdef:block/flecktarn"
"mk_de": "airdef:block/mk_de",
"bare_antenna": "airdef:block/bare_antenna",
"dark_metal": "airdef:block/dark_metal",
"particle": "airdef:block/flecktarn_s21"
},
"elements": [
{
@@ -26,7 +30,7 @@
16,
12.0
],
"texture": "#flecktarn"
"texture": "#flecktarn_s21"
},
"south": {
"uv": [
@@ -35,7 +39,7 @@
16,
12.0
],
"texture": "#flecktarn"
"texture": "#flecktarn_s21"
},
"east": {
"uv": [
@@ -62,7 +66,7 @@
16,
16
],
"texture": "#flecktarn"
"texture": "#flecktarn_s21"
},
"down": {
"uv": [
@@ -71,7 +75,7 @@
16,
16
],
"texture": "#flecktarn"
"texture": "#flecktarn_s21"
}
}
},
@@ -278,6 +282,550 @@
"texture": "#metal"
}
}
},
{
"from": [
20.0,
3.0,
-5.5
],
"to": [
20.119999999999997,
6.5,
1.5
],
"faces": {
"north": {
"uv": [
0,
0,
0.25,
3.5
],
"texture": "#mk_de"
},
"south": {
"uv": [
0,
0,
0.25,
3.5
],
"texture": "#mk_de"
},
"east": {
"uv": [
0,
0,
7.0,
3.5
],
"texture": "#mk_de"
},
"west": {
"uv": [
0,
0,
7.0,
3.5
],
"texture": "#mk_de"
},
"up": {
"uv": [
0,
0,
0.25,
7.0
],
"texture": "#mk_de"
},
"down": {
"uv": [
0,
0,
0.25,
7.0
],
"texture": "#mk_de"
}
}
},
{
"from": [
-4.119999999999997,
3.0,
-5.5
],
"to": [
-4.0,
6.5,
1.5
],
"faces": {
"north": {
"uv": [
0,
0,
0.25,
3.5
],
"texture": "#mk_de"
},
"south": {
"uv": [
0,
0,
0.25,
3.5
],
"texture": "#mk_de"
},
"east": {
"uv": [
0,
0,
7.0,
3.5
],
"texture": "#mk_de"
},
"west": {
"uv": [
0,
0,
7.0,
3.5
],
"texture": "#mk_de"
},
"up": {
"uv": [
0,
0,
0.25,
7.0
],
"texture": "#mk_de"
},
"down": {
"uv": [
0,
0,
0.25,
7.0
],
"texture": "#mk_de"
}
}
},
{
"from": [
5.5,
14.0,
2.0
],
"to": [
10.5,
14.8,
7.0
],
"faces": {
"north": {
"uv": [
0,
0,
5.0,
0.8000000000000007
],
"texture": "#metal"
},
"south": {
"uv": [
0,
0,
5.0,
0.8000000000000007
],
"texture": "#metal"
},
"east": {
"uv": [
0,
0,
5.0,
0.8000000000000007
],
"texture": "#metal"
},
"west": {
"uv": [
0,
0,
5.0,
0.8000000000000007
],
"texture": "#metal"
},
"up": {
"uv": [
0,
0,
5.0,
5.0
],
"texture": "#metal"
},
"down": {
"uv": [
0,
0,
5.0,
5.0
],
"texture": "#metal"
}
}
},
{
"from": [
2.0,
14.0,
5.0
],
"to": [
3.0,
16.0,
6.0
],
"faces": {
"north": {
"uv": [
0,
0,
1.0,
2.0
],
"texture": "#bare_antenna"
},
"south": {
"uv": [
0,
0,
1.0,
2.0
],
"texture": "#bare_antenna"
},
"east": {
"uv": [
0,
0,
1.0,
2.0
],
"texture": "#bare_antenna"
},
"west": {
"uv": [
0,
0,
1.0,
2.0
],
"texture": "#bare_antenna"
},
"up": {
"uv": [
0,
0,
1.0,
1.0
],
"texture": "#bare_antenna"
},
"down": {
"uv": [
0,
0,
1.0,
1.0
],
"texture": "#bare_antenna"
}
}
},
{
"from": [
-4.800000000000001,
7.0,
-5.0
],
"to": [
-4.0,
10.0,
-2.0
],
"faces": {
"north": {
"uv": [
0,
0,
0.8000000000000007,
3.0
],
"texture": "#dark_metal"
},
"south": {
"uv": [
0,
0,
0.8000000000000007,
3.0
],
"texture": "#dark_metal"
},
"east": {
"uv": [
0,
0,
3.0,
3.0
],
"texture": "#dark_metal"
},
"west": {
"uv": [
0,
0,
3.0,
3.0
],
"texture": "#dark_metal"
},
"up": {
"uv": [
0,
0,
0.8000000000000007,
3.0
],
"texture": "#dark_metal"
},
"down": {
"uv": [
0,
0,
0.8000000000000007,
3.0
],
"texture": "#dark_metal"
}
}
},
{
"from": [
20.0,
7.0,
-5.0
],
"to": [
20.8,
10.0,
-2.0
],
"faces": {
"north": {
"uv": [
0,
0,
0.8000000000000007,
3.0
],
"texture": "#dark_metal"
},
"south": {
"uv": [
0,
0,
0.8000000000000007,
3.0
],
"texture": "#dark_metal"
},
"east": {
"uv": [
0,
0,
3.0,
3.0
],
"texture": "#dark_metal"
},
"west": {
"uv": [
0,
0,
3.0,
3.0
],
"texture": "#dark_metal"
},
"up": {
"uv": [
0,
0,
0.8000000000000007,
3.0
],
"texture": "#dark_metal"
},
"down": {
"uv": [
0,
0,
0.8000000000000007,
3.0
],
"texture": "#dark_metal"
}
}
},
{
"from": [
-4.800000000000001,
7.0,
-1.5
],
"to": [
-4.0,
10.0,
0.5
],
"faces": {
"north": {
"uv": [
0,
0,
0.8000000000000007,
3.0
],
"texture": "#dark_metal"
},
"south": {
"uv": [
0,
0,
0.8000000000000007,
3.0
],
"texture": "#dark_metal"
},
"east": {
"uv": [
0,
0,
2.0,
3.0
],
"texture": "#dark_metal"
},
"west": {
"uv": [
0,
0,
2.0,
3.0
],
"texture": "#dark_metal"
},
"up": {
"uv": [
0,
0,
0.8000000000000007,
2.0
],
"texture": "#dark_metal"
},
"down": {
"uv": [
0,
0,
0.8000000000000007,
2.0
],
"texture": "#dark_metal"
}
}
},
{
"from": [
20.0,
7.0,
-1.5
],
"to": [
20.8,
10.0,
0.5
],
"faces": {
"north": {
"uv": [
0,
0,
0.8000000000000007,
3.0
],
"texture": "#dark_metal"
},
"south": {
"uv": [
0,
0,
0.8000000000000007,
3.0
],
"texture": "#dark_metal"
},
"east": {
"uv": [
0,
0,
2.0,
3.0
],
"texture": "#dark_metal"
},
"west": {
"uv": [
0,
0,
2.0,
3.0
],
"texture": "#dark_metal"
},
"up": {
"uv": [
0,
0,
0.8000000000000007,
2.0
],
"texture": "#dark_metal"
},
"down": {
"uv": [
0,
0,
0.8000000000000007,
2.0
],
"texture": "#dark_metal"
}
}
}
]
}
@@ -0,0 +1,695 @@
{
"ambientocclusion": false,
"textures": {
"flecktarn_s21_b": "airdef:block/flecktarn_s21_b",
"flecktarn_b": "airdef:block/flecktarn_b",
"radar_face_b": "airdef:block/radar_face_b",
"metal_b": "airdef:block/metal_b",
"mk_de_b": "airdef:block/mk_de_b",
"bare_antenna_b": "airdef:block/bare_antenna_b",
"dark_metal_b": "airdef:block/dark_metal_b",
"particle": "airdef:block/flecktarn_s21_b"
},
"elements": [
{
"from": [
-4.0,
0.0,
-6.0
],
"to": [
20.0,
12.0,
16.0
],
"faces": {
"north": {
"uv": [
0,
0,
16,
12.0
],
"texture": "#flecktarn_s21_b"
},
"south": {
"uv": [
0,
0,
16,
12.0
],
"texture": "#flecktarn_s21_b"
},
"east": {
"uv": [
0,
0,
16,
12.0
],
"texture": "#flecktarn_b"
},
"west": {
"uv": [
0,
0,
16,
12.0
],
"texture": "#flecktarn_b"
},
"up": {
"uv": [
0,
0,
16,
16
],
"texture": "#flecktarn_s21_b"
},
"down": {
"uv": [
0,
0,
16,
16
],
"texture": "#flecktarn_s21_b"
}
}
},
{
"from": [
-2.0,
12.0,
-2.0
],
"to": [
18.0,
14.0,
14.0
],
"faces": {
"north": {
"uv": [
0,
0,
16,
2.0
],
"texture": "#flecktarn_b"
},
"south": {
"uv": [
0,
0,
16,
2.0
],
"texture": "#flecktarn_b"
},
"east": {
"uv": [
0,
0,
16,
2.0
],
"texture": "#flecktarn_b"
},
"west": {
"uv": [
0,
0,
16,
2.0
],
"texture": "#flecktarn_b"
},
"up": {
"uv": [
0,
0,
16,
16
],
"texture": "#flecktarn_b"
},
"down": {
"uv": [
0,
0,
16,
16
],
"texture": "#flecktarn_b"
}
}
},
{
"from": [
3.0,
4.0,
-10.0
],
"to": [
13.0,
12.0,
-6.0
],
"faces": {
"north": {
"uv": [
0,
0,
10.0,
8.0
],
"texture": "#radar_face_b"
},
"south": {
"uv": [
0,
0,
10.0,
8.0
],
"texture": "#radar_face_b"
},
"east": {
"uv": [
0,
0,
4.0,
8.0
],
"texture": "#radar_face_b"
},
"west": {
"uv": [
0,
0,
4.0,
8.0
],
"texture": "#radar_face_b"
},
"up": {
"uv": [
0,
0,
10.0,
4.0
],
"texture": "#radar_face_b"
},
"down": {
"uv": [
0,
0,
10.0,
4.0
],
"texture": "#radar_face_b"
}
}
},
{
"from": [
7.0,
14.0,
10.0
],
"to": [
9.0,
18.0,
12.0
],
"faces": {
"north": {
"uv": [
0,
0,
2.0,
4.0
],
"texture": "#metal_b"
},
"south": {
"uv": [
0,
0,
2.0,
4.0
],
"texture": "#metal_b"
},
"east": {
"uv": [
0,
0,
2.0,
4.0
],
"texture": "#metal_b"
},
"west": {
"uv": [
0,
0,
2.0,
4.0
],
"texture": "#metal_b"
},
"up": {
"uv": [
0,
0,
2.0,
2.0
],
"texture": "#metal_b"
},
"down": {
"uv": [
0,
0,
2.0,
2.0
],
"texture": "#metal_b"
}
}
},
{
"from": [
20.0,
3.0,
-5.5
],
"to": [
20.119999999999997,
6.5,
1.5
],
"faces": {
"north": {
"uv": [
0,
0,
0.25,
3.5
],
"texture": "#mk_de_b"
},
"south": {
"uv": [
0,
0,
0.25,
3.5
],
"texture": "#mk_de_b"
},
"east": {
"uv": [
0,
0,
7.0,
3.5
],
"texture": "#mk_de_b"
},
"west": {
"uv": [
0,
0,
7.0,
3.5
],
"texture": "#mk_de_b"
},
"up": {
"uv": [
0,
0,
0.25,
7.0
],
"texture": "#mk_de_b"
},
"down": {
"uv": [
0,
0,
0.25,
7.0
],
"texture": "#mk_de_b"
}
}
},
{
"from": [
-4.119999999999997,
3.0,
-5.5
],
"to": [
-4.0,
6.5,
1.5
],
"faces": {
"north": {
"uv": [
0,
0,
0.25,
3.5
],
"texture": "#mk_de_b"
},
"south": {
"uv": [
0,
0,
0.25,
3.5
],
"texture": "#mk_de_b"
},
"east": {
"uv": [
0,
0,
7.0,
3.5
],
"texture": "#mk_de_b"
},
"west": {
"uv": [
0,
0,
7.0,
3.5
],
"texture": "#mk_de_b"
},
"up": {
"uv": [
0,
0,
0.25,
7.0
],
"texture": "#mk_de_b"
},
"down": {
"uv": [
0,
0,
0.25,
7.0
],
"texture": "#mk_de_b"
}
}
},
{
"from": [
2.0,
14.0,
5.0
],
"to": [
3.0,
16.0,
6.0
],
"faces": {
"north": {
"uv": [
0,
0,
1.0,
2.0
],
"texture": "#bare_antenna_b"
},
"south": {
"uv": [
0,
0,
1.0,
2.0
],
"texture": "#bare_antenna_b"
},
"east": {
"uv": [
0,
0,
1.0,
2.0
],
"texture": "#bare_antenna_b"
},
"west": {
"uv": [
0,
0,
1.0,
2.0
],
"texture": "#bare_antenna_b"
},
"up": {
"uv": [
0,
0,
1.0,
1.0
],
"texture": "#bare_antenna_b"
},
"down": {
"uv": [
0,
0,
1.0,
1.0
],
"texture": "#bare_antenna_b"
}
}
},
{
"from": [
-4.800000000000001,
7.0,
-5.0
],
"to": [
-4.0,
10.0,
-2.0
],
"faces": {
"north": {
"uv": [
0,
0,
0.8000000000000007,
3.0
],
"texture": "#dark_metal_b"
},
"south": {
"uv": [
0,
0,
0.8000000000000007,
3.0
],
"texture": "#dark_metal_b"
},
"east": {
"uv": [
0,
0,
3.0,
3.0
],
"texture": "#dark_metal_b"
},
"west": {
"uv": [
0,
0,
3.0,
3.0
],
"texture": "#dark_metal_b"
},
"up": {
"uv": [
0,
0,
0.8000000000000007,
3.0
],
"texture": "#dark_metal_b"
},
"down": {
"uv": [
0,
0,
0.8000000000000007,
3.0
],
"texture": "#dark_metal_b"
}
}
},
{
"from": [
20.0,
7.0,
-5.0
],
"to": [
20.8,
10.0,
-2.0
],
"faces": {
"north": {
"uv": [
0,
0,
0.8000000000000007,
3.0
],
"texture": "#dark_metal_b"
},
"south": {
"uv": [
0,
0,
0.8000000000000007,
3.0
],
"texture": "#dark_metal_b"
},
"east": {
"uv": [
0,
0,
3.0,
3.0
],
"texture": "#dark_metal_b"
},
"west": {
"uv": [
0,
0,
3.0,
3.0
],
"texture": "#dark_metal_b"
},
"up": {
"uv": [
0,
0,
0.8000000000000007,
3.0
],
"texture": "#dark_metal_b"
},
"down": {
"uv": [
0,
0,
0.8000000000000007,
3.0
],
"texture": "#dark_metal_b"
}
}
},
{
"from": [
-4.800000000000001,
7.0,
-1.5
],
"to": [
-4.0,
10.0,
0.5
],
"faces": {
"north": {
"uv": [
0,
0,
0.8000000000000007,
3.0
],
"texture": "#dark_metal_b"
},
"south": {
"uv": [
0,
0,
0.8000000000000007,
3.0
],
"texture": "#dark_metal_b"
},
"east": {
"uv": [
0,
0,
2.0,
3.0
],
"texture": "#dark_metal_b"
},
"west": {
"uv": [
0,
0,
2.0,
3.0
],
"texture": "#dark_metal_b"
},
"up": {
"uv": [
0,
0,
0.8000000000000007,
2.0
],
"texture": "#dark_metal_b"
},
"down": {
"uv": [
0,
0,
0.8000000000000007,
2.0
],
"texture": "#dark_metal_b"
}
}
}
]
}
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
@@ -0,0 +1,691 @@
{
"ambientocclusion": false,
"textures": {
"tube_cap": "airdef:block/tube_cap",
"canister": "airdef:block/canister",
"dark_metal": "airdef:block/dark_metal",
"particle": "airdef:block/tube_cap"
},
"elements": [
{
"from": [
-1.5,
0.0,
-16.0
],
"to": [
2.5,
4.0,
32.0
],
"faces": {
"north": {
"uv": [
0,
0,
4.0,
4.0
],
"texture": "#tube_cap"
},
"south": {
"uv": [
0,
0,
4.0,
4.0
],
"texture": "#tube_cap"
},
"east": {
"uv": [
0,
0,
16,
4.0
],
"texture": "#canister"
},
"west": {
"uv": [
0,
0,
16,
4.0
],
"texture": "#canister"
},
"up": {
"uv": [
0,
0,
4.0,
16
],
"texture": "#canister"
},
"down": {
"uv": [
0,
0,
4.0,
16
],
"texture": "#canister"
}
}
},
{
"from": [
-1.5,
5.0,
-16.0
],
"to": [
2.5,
9.0,
32.0
],
"faces": {
"north": {
"uv": [
0,
0,
4.0,
4.0
],
"texture": "#tube_cap"
},
"south": {
"uv": [
0,
0,
4.0,
4.0
],
"texture": "#tube_cap"
},
"east": {
"uv": [
0,
0,
16,
4.0
],
"texture": "#canister"
},
"west": {
"uv": [
0,
0,
16,
4.0
],
"texture": "#canister"
},
"up": {
"uv": [
0,
0,
4.0,
16
],
"texture": "#canister"
},
"down": {
"uv": [
0,
0,
4.0,
16
],
"texture": "#canister"
}
}
},
{
"from": [
3.5,
0.0,
-16.0
],
"to": [
7.5,
4.0,
32.0
],
"faces": {
"north": {
"uv": [
0,
0,
4.0,
4.0
],
"texture": "#tube_cap"
},
"south": {
"uv": [
0,
0,
4.0,
4.0
],
"texture": "#tube_cap"
},
"east": {
"uv": [
0,
0,
16,
4.0
],
"texture": "#canister"
},
"west": {
"uv": [
0,
0,
16,
4.0
],
"texture": "#canister"
},
"up": {
"uv": [
0,
0,
4.0,
16
],
"texture": "#canister"
},
"down": {
"uv": [
0,
0,
4.0,
16
],
"texture": "#canister"
}
}
},
{
"from": [
3.5,
5.0,
-16.0
],
"to": [
7.5,
9.0,
32.0
],
"faces": {
"north": {
"uv": [
0,
0,
4.0,
4.0
],
"texture": "#tube_cap"
},
"south": {
"uv": [
0,
0,
4.0,
4.0
],
"texture": "#tube_cap"
},
"east": {
"uv": [
0,
0,
16,
4.0
],
"texture": "#canister"
},
"west": {
"uv": [
0,
0,
16,
4.0
],
"texture": "#canister"
},
"up": {
"uv": [
0,
0,
4.0,
16
],
"texture": "#canister"
},
"down": {
"uv": [
0,
0,
4.0,
16
],
"texture": "#canister"
}
}
},
{
"from": [
8.5,
0.0,
-16.0
],
"to": [
12.5,
4.0,
32.0
],
"faces": {
"north": {
"uv": [
0,
0,
4.0,
4.0
],
"texture": "#tube_cap"
},
"south": {
"uv": [
0,
0,
4.0,
4.0
],
"texture": "#tube_cap"
},
"east": {
"uv": [
0,
0,
16,
4.0
],
"texture": "#canister"
},
"west": {
"uv": [
0,
0,
16,
4.0
],
"texture": "#canister"
},
"up": {
"uv": [
0,
0,
4.0,
16
],
"texture": "#canister"
},
"down": {
"uv": [
0,
0,
4.0,
16
],
"texture": "#canister"
}
}
},
{
"from": [
8.5,
5.0,
-16.0
],
"to": [
12.5,
9.0,
32.0
],
"faces": {
"north": {
"uv": [
0,
0,
4.0,
4.0
],
"texture": "#tube_cap"
},
"south": {
"uv": [
0,
0,
4.0,
4.0
],
"texture": "#tube_cap"
},
"east": {
"uv": [
0,
0,
16,
4.0
],
"texture": "#canister"
},
"west": {
"uv": [
0,
0,
16,
4.0
],
"texture": "#canister"
},
"up": {
"uv": [
0,
0,
4.0,
16
],
"texture": "#canister"
},
"down": {
"uv": [
0,
0,
4.0,
16
],
"texture": "#canister"
}
}
},
{
"from": [
13.5,
0.0,
-16.0
],
"to": [
17.5,
4.0,
32.0
],
"faces": {
"north": {
"uv": [
0,
0,
4.0,
4.0
],
"texture": "#tube_cap"
},
"south": {
"uv": [
0,
0,
4.0,
4.0
],
"texture": "#tube_cap"
},
"east": {
"uv": [
0,
0,
16,
4.0
],
"texture": "#canister"
},
"west": {
"uv": [
0,
0,
16,
4.0
],
"texture": "#canister"
},
"up": {
"uv": [
0,
0,
4.0,
16
],
"texture": "#canister"
},
"down": {
"uv": [
0,
0,
4.0,
16
],
"texture": "#canister"
}
}
},
{
"from": [
13.5,
5.0,
-16.0
],
"to": [
17.5,
9.0,
32.0
],
"faces": {
"north": {
"uv": [
0,
0,
4.0,
4.0
],
"texture": "#tube_cap"
},
"south": {
"uv": [
0,
0,
4.0,
4.0
],
"texture": "#tube_cap"
},
"east": {
"uv": [
0,
0,
16,
4.0
],
"texture": "#canister"
},
"west": {
"uv": [
0,
0,
16,
4.0
],
"texture": "#canister"
},
"up": {
"uv": [
0,
0,
4.0,
16
],
"texture": "#canister"
},
"down": {
"uv": [
0,
0,
4.0,
16
],
"texture": "#canister"
}
}
},
{
"from": [
-2.5,
0.0,
26.0
],
"to": [
18.5,
9.0,
28.0
],
"faces": {
"north": {
"uv": [
0,
0,
16,
9.0
],
"texture": "#dark_metal"
},
"south": {
"uv": [
0,
0,
16,
9.0
],
"texture": "#dark_metal"
},
"east": {
"uv": [
0,
0,
2.0,
9.0
],
"texture": "#dark_metal"
},
"west": {
"uv": [
0,
0,
2.0,
9.0
],
"texture": "#dark_metal"
},
"up": {
"uv": [
0,
0,
16,
2.0
],
"texture": "#dark_metal"
},
"down": {
"uv": [
0,
0,
16,
2.0
],
"texture": "#dark_metal"
}
}
},
{
"from": [
-2.5,
0.0,
-2.0
],
"to": [
18.5,
9.0,
0.0
],
"faces": {
"north": {
"uv": [
0,
0,
16,
9.0
],
"texture": "#dark_metal"
},
"south": {
"uv": [
0,
0,
16,
9.0
],
"texture": "#dark_metal"
},
"east": {
"uv": [
0,
0,
2.0,
9.0
],
"texture": "#dark_metal"
},
"west": {
"uv": [
0,
0,
2.0,
9.0
],
"texture": "#dark_metal"
},
"up": {
"uv": [
0,
0,
16,
2.0
],
"texture": "#dark_metal"
},
"down": {
"uv": [
0,
0,
16,
2.0
],
"texture": "#dark_metal"
}
}
}
]
}

Some files were not shown because too many files have changed in this diff Show More