Reduce metadata file sizes

This commit is contained in:
object-Object 2023-10-13 01:00:41 -04:00
parent c1edd71c25
commit 5a7d0891cc
4 changed files with 18 additions and 15 deletions

View file

@ -79,8 +79,8 @@ def render(
animations = list[AnimatedTexture]()
for metadata in all_metadata.values():
textures |= metadata.textures
for texture in metadata.textures.values():
for texture in metadata.textures:
textures[texture.file_id] = texture
if isinstance(texture, AnimatedTexture):
animations.append(texture)

View file

@ -44,14 +44,16 @@ def load_all_metadata(props: Properties, pm: PluginManager, loader: ModResourceL
metadata = HexdocMetadata(
book_url=f"{props.url}/v/{version}",
asset_url=props.env.asset_url,
textures={
texture.file_id: texture for texture in Texture.load_all(root, loader)
},
textures=list(Texture.load_all(root, loader)),
)
loader.export(
metadata.path(props.modid),
metadata.model_dump_json(by_alias=True, warnings=False),
metadata.model_dump_json(
by_alias=True,
warnings=False,
exclude_defaults=True,
),
)
return loader.load_metadata(model_type=HexdocMetadata) | {props.modid: metadata}

View file

@ -7,7 +7,6 @@ from hexdoc.minecraft.assets import Texture, TextureContext
from hexdoc.model import HexdocModel
from .properties import NoTrailingSlashHttpUrl
from .resource import ResourceLocation
class HexdocMetadata(HexdocModel):
@ -17,7 +16,7 @@ class HexdocMetadata(HexdocModel):
"""Github Pages base url."""
asset_url: NoTrailingSlashHttpUrl
"""raw.githubusercontent.com base url."""
textures: dict[ResourceLocation, Texture]
textures: list[Texture]
"""id -> path from repo root"""
@classmethod
@ -31,5 +30,6 @@ class MetadataContext(TextureContext):
@model_validator(mode="after")
def _add_metadata_textures(self) -> Self:
for metadata in self.all_metadata.values():
self.textures |= metadata.textures
for texture in metadata.textures:
self.textures[texture.file_id] = texture
return self

View file

@ -40,7 +40,7 @@ def load_hex_book(
class PatternMetadata(HexdocModel):
"""Automatically generated at `export_dir/modid.patterns.hexdoc.json`."""
patterns: dict[ResourceLocation, PatternInfo]
patterns: list[PatternInfo]
@classmethod
def path(cls, modid: str) -> Path:
@ -62,12 +62,13 @@ class HexContext(BookContext):
self._add_patterns_0_10(signatures)
# export patterns so addons can use them
pattern_metadata = PatternMetadata(
patterns=self.patterns,
)
pattern_metadata = PatternMetadata(patterns=list(self.patterns.values()))
self.loader.export(
path=PatternMetadata.path(self.props.modid),
data=pattern_metadata.model_dump_json(warnings=False),
data=pattern_metadata.model_dump_json(
warnings=False,
exclude_defaults=True,
),
)
# add external patterns AFTER exporting so we don't reexport them
@ -75,7 +76,7 @@ class HexContext(BookContext):
name_pattern="{modid}.patterns",
model_type=PatternMetadata,
).values():
for _, pattern in metadata.patterns.items():
for pattern in metadata.patterns:
self._add_pattern(pattern, signatures)
logging.getLogger(__name__).info(f"Loaded patterns: {self.patterns.keys()}")