Intial Commit

This commit is contained in:
2026-10-27 18:05:58 -04:00
parent 288ce560f3
commit eb34554a54
9 changed files with 62 additions and 33 deletions
+27 -8
View File
@@ -15,7 +15,7 @@ import struct
from pathlib import Path
from PIL import Image
MOD_ID = 'KnoxBuildworksViewpointCrates' # Retain the ID of the previously installed patch.
MOD_ID = 'hrsys_knoxbuildworksviewpoint'
HERE = Path(__file__).resolve().parent
REPO_ROOT = HERE.parent
VERSION_FOLDER = '42.20'
@@ -377,6 +377,20 @@ def copy_asset(source_root, binding, media, white=False, tint=None):
shutil.copy2(texture,texture_out)
return target.relative_to(media).as_posix(), tag
def mod_info(versioned=False):
prefix='../' if versioned else ''
art=f'{prefix}common/media/textures/preview.png'
lines=['name=Knox Buildworks - Viewpoint Compatibility',f'id={MOD_ID}',f'poster={art}','',
'description=3D military crate models for Knox Buildworks in Project Viewpoint.',
'author=Riggs0','category=building']
if versioned:
lines += [f'icon={art}','url=https://hudsonriggs.systems','modversion=2.1.0','versionMin=42.20.0']
else:
lines += ['versionMin=42.20.0','url=https://hudsonriggs.systems','modversion=2.1.0',f'icon={art}']
lines += ['require=KnoxBuildworks,Viewpoint,PZVoxelStudioViewpoint',
'loadAfter=KnoxBuildworks,PZVoxelStudioViewpoint,Viewpoint','']
return '\n'.join(lines)
def build_pack(output, source_root, bindings, assignments):
media=output/'common/media'
media.mkdir(parents=True,exist_ok=True)
@@ -395,19 +409,24 @@ def build_pack(output, source_root, bindings, assignments):
_,*transform=binding['value'].split(',')
lines.append(f"bind.{target}={models[key]},{','.join(transform)}")
(media/'knox-viewpoint-crates.properties').write_text('\n'.join(lines)+'\n',encoding='utf-8')
info='\n'.join(['name=Knox Buildworks - Viewpoint Compatibility',f'id={MOD_ID}','author=Local compatibility patch',
'modversion=2.1.0','description=Green, gray-green (#626763) and white military crates. Gray crates use retextured green crate meshes.',
'require=KnoxBuildworks,Viewpoint,PZVoxelStudioViewpoint','loadAfter=KnoxBuildworks,PZVoxelStudioViewpoint,Viewpoint','versionMin=42.0',''])
(output/VERSION_FOLDER).mkdir(parents=True,exist_ok=True)
(output/VERSION_FOLDER/'mod.info').write_text(info,encoding='utf-8')
(output/'mod.info').write_text(info,encoding='utf-8')
(output/VERSION_FOLDER/'mod.info').write_text(mod_info(versioned=True),encoding='utf-8')
(output/'mod.info').write_text(mod_info(),encoding='utf-8')
# Keep the published preview and mod-list art consistent on future rebuilds.
preview=output/'preview.png'
if not preview.exists():
preview=REPO_ROOT/'preview.png'
if preview.exists():
art=media/'textures/preview.png'
art.parent.mkdir(parents=True,exist_ok=True)
shutil.copy2(preview,art)
lua='''-- Render bindings only. No recipe, object, inventory or save changes.
local registered = false
local warned = false
local function register()
if registered or not Viewpoint or not Viewpoint.ModelPacks then return end
local ok, result = pcall(Viewpoint.ModelPacks.register,
"KnoxBuildworksViewpointCrates", "media/knox-viewpoint-crates.properties")
"%MOD_ID%", "media/knox-viewpoint-crates.properties")
if ok and result then
registered = true
print("[Knox Viewpoint Crates] Registered %COUNT% reviewed compatibility sprite bindings.")
@@ -419,7 +438,7 @@ end
Events.OnGameBoot.Add(register)
Events.OnGameStart.Add(register)
register()
'''.replace('%COUNT%',str(len(assignments)))
'''.replace('%MOD_ID%',MOD_ID).replace('%COUNT%',str(len(assignments)))
(media/'lua/client').mkdir(parents=True,exist_ok=True)
(media/'lua/client/ZZ_KnoxViewpointCrates.lua').write_text(lua,encoding='utf-8')
return len(models)