Reduce metadata file sizes
This commit is contained in:
parent
c1edd71c25
commit
5a7d0891cc
|
@ -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)
|
||||
|
||||
|
|
|
@ -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}
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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()}")
|
||||
|
|
Loading…
Reference in a new issue