From 2680a18aa5ae378ea28b07a83161c0395873633e Mon Sep 17 00:00:00 2001 From: edayot Date: Sun, 26 Jul 2026 15:10:58 +0200 Subject: [PATCH 1/4] feat: adding missing data driven regitries --- pyproject.toml | 4 +-- src/beet/contrib/worldgen.py | 8 +++++ src/beet/library/data_pack.py | 60 +++++++++++++++++++++++++++++++++ tests/test_vanilla_loading.py | 62 +++++++++++++++++++++++++++++++++++ 4 files changed, 132 insertions(+), 2 deletions(-) create mode 100644 tests/test_vanilla_loading.py diff --git a/pyproject.toml b/pyproject.toml index 8fceb4728..13134c75f 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -62,8 +62,8 @@ override-dependencies = ["click>=8.3.1"] [tool.uv.workspace] members = ["packages/*"] -[tool.pytest.ini_options] -addopts = "tests --import-mode=importlib" +# [tool.pytest.ini_options] +# addopts = "tests --import-mode=importlib" [tool.semantic_release] commit_parser = "conventional-monorepo" diff --git a/src/beet/contrib/worldgen.py b/src/beet/contrib/worldgen.py index 237ace581..f0c1349c2 100644 --- a/src/beet/contrib/worldgen.py +++ b/src/beet/contrib/worldgen.py @@ -26,6 +26,7 @@ "WorldgenPlacedFeatureTag", "WorldgenFlatLevelGeneratorPresetTag", "WorldgenWorldPresetTag", + "ConfiguredFeatureTag", ] @@ -67,6 +68,7 @@ def worldgen(pack: Union[Context, DataPack]): WorldgenPlacedFeatureTag, WorldgenFlatLevelGeneratorPresetTag, WorldgenWorldPresetTag, + ConfiguredFeatureTag, ] @@ -237,3 +239,9 @@ class WorldgenWorldPresetTag(TagFile): """Class representing a worldgen world preset tag.""" scope: ClassVar[NamespaceFileScope] = ("tags", "worldgen", "world_preset") + + +class ConfiguredFeatureTag(TagFile): + """Class representing a configured feature tag.""" + + scope: ClassVar[NamespaceFileScope] = ("tags", "worldgen", "configured_feature") \ No newline at end of file diff --git a/src/beet/library/data_pack.py b/src/beet/library/data_pack.py index 930d5d846..d2df14c8d 100644 --- a/src/beet/library/data_pack.py +++ b/src/beet/library/data_pack.py @@ -21,8 +21,11 @@ "TrimMaterial", "FrogVariant", "CatVariant", + "CatSoundVariant", "CowVariant", + "CowSoundVariant", "ChickenVariant", + "ChickenSoundVariant", "WolfSoundVariant", "TagFile", "BlockTag", @@ -48,9 +51,12 @@ "WolfSoundVariantTag", "Dialog", "PigVariant", + "PigSoundVariant", "DialogTag", "TestInstance", "TestEnvironment", + "SulfurCubeArchetype", + "PotionTag", ] @@ -178,6 +184,12 @@ class CatVariant(JsonFile): scope: ClassVar[NamespaceFileScope] = ("cat_variant",) extension: ClassVar[str] = ".json" +class CatSoundVariant(JsonFile): + """Class representing a cat sound variant.""" + + scope: ClassVar[NamespaceFileScope] = ("cat_sound_variant",) + extension: ClassVar[str] = ".json" + class CowVariant(JsonFile): """Class representing a cow variant.""" @@ -185,6 +197,12 @@ class CowVariant(JsonFile): scope: ClassVar[NamespaceFileScope] = ("cow_variant",) extension: ClassVar[str] = ".json" +class CowSoundVariant(JsonFile): + """Class representing a cow sound variant.""" + + scope: ClassVar[NamespaceFileScope] = ("cow_sound_variant",) + extension: ClassVar[str] = ".json" + class ChickenVariant(JsonFile): """Class representing a chicken variant.""" @@ -193,6 +211,13 @@ class ChickenVariant(JsonFile): extension: ClassVar[str] = ".json" +class ChickenSoundVariant(JsonFile): + """Class representing a chicken sound variant.""" + + scope: ClassVar[NamespaceFileScope] = ("chicken_sound_variant",) + extension: ClassVar[str] = ".json" + + class Dialog(JsonFile): """Class representing a dialog.""" @@ -213,6 +238,18 @@ class PigVariant(JsonFile): scope: ClassVar[NamespaceFileScope] = ("pig_variant",) extension: ClassVar[str] = ".json" +class PigSoundVariant(JsonFile): + """Class representing a pig sound variant.""" + + scope: ClassVar[NamespaceFileScope] = ("pig_sound_variant",) + extension: ClassVar[str] = ".json" + +class SulfurCubeArchetype(JsonFile): + """Class representing a sulfur cube archetype.""" + + scope: ClassVar[NamespaceFileScope] = ("sulfur_cube_archetype",) + extension: ClassVar[str] = ".json" + @dataclass(eq=False, repr=False) class Function(TextFileBase[List[str]]): @@ -671,6 +708,15 @@ class WorldClockTag(TagFile): ) +class PotionTag(TagFile): + """Class representing a potion tag.""" + + scope: ClassVar[NamespaceFileScope] = ( + "tags", + "potion", + ) + + class DataPackNamespace(Namespace): """Class representing a data pack namespace.""" @@ -698,8 +744,11 @@ class DataPackNamespace(Namespace): trial_spawners: NamespacePin[TrialSpawner] = NamespacePin(TrialSpawner) frog_variants: NamespacePin[FrogVariant] = NamespacePin(FrogVariant) cat_variants: NamespacePin[CatVariant] = NamespacePin(CatVariant) + cat_sound_variants: NamespacePin[CatSoundVariant] = NamespacePin(CatSoundVariant) cow_variants: NamespacePin[CowVariant] = NamespacePin(CowVariant) + cow_sound_variants: NamespacePin[CowSoundVariant] = NamespacePin(CowSoundVariant) chicken_variants: NamespacePin[ChickenVariant] = NamespacePin(ChickenVariant) + chicken_sound_variants: NamespacePin[ChickenSoundVariant] = NamespacePin(ChickenSoundVariant) wolf_sound_variants: NamespacePin[WolfSoundVariant] = NamespacePin(WolfSoundVariant) timelines: NamespacePin[Timeline] = NamespacePin(Timeline) zombie_nautilus_variants: NamespacePin[ZombieNautilusVariant] = NamespacePin(ZombieNautilusVariant) @@ -726,6 +775,7 @@ class DataPackNamespace(Namespace): wolf_sound_variant_tags: NamespacePin[WolfSoundVariantTag] = NamespacePin(WolfSoundVariantTag) dialogs: NamespacePin[Dialog] = NamespacePin(Dialog) pig_variants: NamespacePin[PigVariant] = NamespacePin(PigVariant) + pig_sound_variants: NamespacePin[PigSoundVariant] = NamespacePin(PigSoundVariant) dialogs_tags: NamespacePin[DialogTag] = NamespacePin(DialogTag) test_instances: NamespacePin[TestInstance] = NamespacePin(TestInstance) test_environments: NamespacePin[TestEnvironment] = NamespacePin(TestEnvironment) @@ -734,6 +784,8 @@ class DataPackNamespace(Namespace): villager_trade_tags: NamespacePin[VillagerTradeTag] = NamespacePin(VillagerTradeTag) trade_set_tags: NamespacePin[TradeSetTag] = NamespacePin(TradeSetTag) world_clock_tags: NamespacePin[WorldClockTag] = NamespacePin(WorldClockTag) + potion_tags: NamespacePin[PotionTag] = NamespacePin(PotionTag) + sulfur_cube_archetypes: NamespacePin[SulfurCubeArchetype] = NamespacePin(SulfurCubeArchetype) # fmt: on @@ -771,8 +823,11 @@ class DataPack(Pack[DataPackNamespace]): trial_spawners: NamespaceProxyDescriptor[TrialSpawner] = NamespaceProxyDescriptor(TrialSpawner) frog_variants: NamespaceProxyDescriptor[FrogVariant] = NamespaceProxyDescriptor(FrogVariant) cat_variants: NamespaceProxyDescriptor[CatVariant] = NamespaceProxyDescriptor(CatVariant) + cat_sound_variants: NamespaceProxyDescriptor[CatSoundVariant] = NamespaceProxyDescriptor(CatSoundVariant) cow_variants: NamespaceProxyDescriptor[CowVariant] = NamespaceProxyDescriptor(CowVariant) + cow_sound_variants: NamespaceProxyDescriptor[CowSoundVariant] = NamespaceProxyDescriptor(CowSoundVariant) chicken_variants: NamespaceProxyDescriptor[ChickenVariant] = NamespaceProxyDescriptor(ChickenVariant) + chicken_sound_variants: NamespaceProxyDescriptor[ChickenSoundVariant] = NamespaceProxyDescriptor(ChickenSoundVariant) wolf_sound_variants: NamespaceProxyDescriptor[WolfSoundVariant] = NamespaceProxyDescriptor(WolfSoundVariant) timelines: NamespaceProxyDescriptor[Timeline] = NamespaceProxyDescriptor(Timeline) zombie_nautilus_variants: NamespaceProxyDescriptor[ZombieNautilusVariant] = NamespaceProxyDescriptor(ZombieNautilusVariant) @@ -799,6 +854,7 @@ class DataPack(Pack[DataPackNamespace]): wolf_sound_variant_tags: NamespaceProxyDescriptor[WolfSoundVariantTag] = NamespaceProxyDescriptor(WolfSoundVariantTag) dialogs: NamespaceProxyDescriptor[Dialog] = NamespaceProxyDescriptor(Dialog) pig_variants: NamespaceProxyDescriptor[PigVariant] = NamespaceProxyDescriptor(PigVariant) + pig_sound_variants: NamespaceProxyDescriptor[PigSoundVariant] = NamespaceProxyDescriptor(PigSoundVariant) dialogs_tags: NamespaceProxyDescriptor[DialogTag] = NamespaceProxyDescriptor(DialogTag) test_instances: NamespaceProxyDescriptor[TestInstance] = NamespaceProxyDescriptor(TestInstance) test_environments: NamespaceProxyDescriptor[TestEnvironment] = NamespaceProxyDescriptor(TestEnvironment) @@ -807,4 +863,8 @@ class DataPack(Pack[DataPackNamespace]): village_trade_tags: NamespaceProxyDescriptor[VillagerTradeTag] = NamespaceProxyDescriptor(VillagerTradeTag) trade_set_tags: NamespaceProxyDescriptor[TradeSetTag] = NamespaceProxyDescriptor(TradeSetTag) world_clock_tags: NamespaceProxyDescriptor[WorldClockTag] = NamespaceProxyDescriptor(WorldClockTag) + potion_tags: NamespaceProxyDescriptor[PotionTag] = NamespaceProxyDescriptor(PotionTag) + sulfur_cube_archetypes: NamespaceProxyDescriptor[SulfurCubeArchetype] = NamespaceProxyDescriptor(SulfurCubeArchetype) + + # fmt: on diff --git a/tests/test_vanilla_loading.py b/tests/test_vanilla_loading.py new file mode 100644 index 000000000..b802c8551 --- /dev/null +++ b/tests/test_vanilla_loading.py @@ -0,0 +1,62 @@ +from pathlib import Path + +from beet import DataPack, ResourcePack, Cache, LATEST_MINECRAFT_VERSION, JsonFile +from beet.contrib.unknown_files import UnknownAsset, UnknownData +from beet.contrib.worldgen import worldgen +from beet.contrib.vanilla import MANIFEST_URL +from zipfile import ZipFile + +def test_vanilla_loading(tmp_path: Path): + version = "26.2" + cache = Cache(tmp_path) + manifest = JsonFile(source_path=cache.download(MANIFEST_URL)) + version = [x for x in manifest.data["versions"] if x["id"] == version][0] + version_manifest = JsonFile(source_path=cache.download(version["url"])) + client = cache.download(version_manifest.data["downloads"]["client"]["url"]) + + dp = DataPack() + rp = ResourcePack() + dp.extend_namespace.append(UnknownData) + rp.extend_namespace.append(UnknownAsset) + + worldgen(dp) + dp.load(ZipFile(client)) + rp.load(ZipFile(client)) + + dp_unknown = set() + for key in dp[UnknownData]: + splitted = key.split(":", 1)[1].split("/") + if splitted[0] == "worldgen": + dp_unknown.add("/".join(splitted[:2])) + elif splitted[0] == "tags": + if splitted[1] == "worldgen": + dp_unknown.add("/".join(splitted[:3])) + else: + dp_unknown.add("/".join(splitted[:2])) + else: + dp_unknown.add(splitted[0]) + + dp_unknown.remove("datapacks") + + rp_unknown = set() + for key in rp[UnknownAsset]: + splitted = key.split(":", 1)[1].split("/") + if splitted[0] == "worldgen": + rp_unknown.add("/".join(splitted[:2])) + elif splitted[0] == "tags": + if splitted[1] == "worldgen": + rp_unknown.add("/".join(splitted[:3])) + else: + rp_unknown.add("/".join(splitted[:2])) + else: + rp_unknown.add(splitted[0]) + rp_unknown.remove("gpu_warnlist.json") + rp_unknown.remove("regional_compliancies.json") + + + assert len(dp_unknown) == 0, dp_unknown + assert len(rp_unknown) == 0, rp_unknown + + + + From fff0e3eb920b5fa00996802c1fbf61a4cd12af60 Mon Sep 17 00:00:00 2001 From: edayot Date: Sun, 26 Jul 2026 18:52:49 +0200 Subject: [PATCH 2/4] tests running --- .../tests/snapshots/bolt__parse_230__0.txt | 2 +- .../tests/snapshots/bolt__parse_305__0.txt | 2 +- .../tests/snapshots/bolt__parse_352__0.txt | 2 +- .../tests/snapshots/bolt__parse_358__0.txt | 2 +- .../tests/snapshots/bolt__parse_48__0.txt | 2 +- .../tests/snapshots/bolt__parse_99__0.txt | 2 +- .../tests/snapshots/spec__prototypes__0.json | 36 +++++++++++++++++++ pyproject.toml | 4 +-- 8 files changed, 44 insertions(+), 8 deletions(-) diff --git a/packages/bolt/tests/snapshots/bolt__parse_230__0.txt b/packages/bolt/tests/snapshots/bolt__parse_230__0.txt index 2cad11531..cee1632f6 100644 --- a/packages/bolt/tests/snapshots/bolt__parse_230__0.txt +++ b/packages/bolt/tests/snapshots/bolt__parse_230__0.txt @@ -1,6 +1,6 @@ macro foo: pass -#>ERROR Expected colon, literal 'advancement', literal 'align', literal 'anchored', literal 'append', literal 'as' or 200 other tokens but got literal 'foo'. +#>ERROR Expected colon, literal 'advancement', literal 'align', literal 'anchored', literal 'append', literal 'as' or 207 other tokens but got literal 'foo'. # line 3, column 7 # 2 | pass # 3 | as @p foo diff --git a/packages/bolt/tests/snapshots/bolt__parse_305__0.txt b/packages/bolt/tests/snapshots/bolt__parse_305__0.txt index 2e6c0f19b..f44d30d23 100644 --- a/packages/bolt/tests/snapshots/bolt__parse_305__0.txt +++ b/packages/bolt/tests/snapshots/bolt__parse_305__0.txt @@ -1,4 +1,4 @@ -#>ERROR Expected literal 'advancement', literal 'align', literal 'anchored', literal 'append', literal 'as', literal 'at' or 217 other tokens but got literal 'foo'. +#>ERROR Expected literal 'advancement', literal 'align', literal 'anchored', literal 'append', literal 'as', literal 'at' or 224 other tokens but got literal 'foo'. # line 1, column 11 # 1 | as @a run foo = "bar" # : ^^^ diff --git a/packages/bolt/tests/snapshots/bolt__parse_352__0.txt b/packages/bolt/tests/snapshots/bolt__parse_352__0.txt index 52b5523ab..6a7c4aa1d 100644 --- a/packages/bolt/tests/snapshots/bolt__parse_352__0.txt +++ b/packages/bolt/tests/snapshots/bolt__parse_352__0.txt @@ -1,6 +1,6 @@ macro hello thing=subcommand: pass -#>ERROR Expected assignment, literal 'advancement', literal 'align', literal 'anchored', literal 'append', literal 'as' or 219 other tokens but got literal 'print(123)'. +#>ERROR Expected assignment, literal 'advancement', literal 'align', literal 'anchored', literal 'append', literal 'as' or 226 other tokens but got literal 'print(123)'. # line 3, column 7 # 2 | pass # 3 | hello print(123) diff --git a/packages/bolt/tests/snapshots/bolt__parse_358__0.txt b/packages/bolt/tests/snapshots/bolt__parse_358__0.txt index 088932a24..8924809d2 100644 --- a/packages/bolt/tests/snapshots/bolt__parse_358__0.txt +++ b/packages/bolt/tests/snapshots/bolt__parse_358__0.txt @@ -1,4 +1,4 @@ -#>ERROR Expected literal 'advancement', literal 'align', literal 'anchored', literal 'append', literal 'as', literal 'at' or 217 other tokens but got literal '"not'. +#>ERROR Expected literal 'advancement', literal 'align', literal 'anchored', literal 'append', literal 'as', literal 'at' or 224 other tokens but got literal '"not'. # line 1, column 13 # 1 | execute run "not docstring" # : ^^^^ diff --git a/packages/bolt/tests/snapshots/bolt__parse_48__0.txt b/packages/bolt/tests/snapshots/bolt__parse_48__0.txt index eb0a94b6f..8649e50e4 100644 --- a/packages/bolt/tests/snapshots/bolt__parse_48__0.txt +++ b/packages/bolt/tests/snapshots/bolt__parse_48__0.txt @@ -1,5 +1,5 @@ 1 * 2 -#>ERROR Expected bracket '[', curly '{', decorator, docstring, ellipsis, false or 230 other tokens but got literal '*'. +#>ERROR Expected bracket '[', curly '{', decorator, docstring, ellipsis, false or 237 other tokens but got literal '*'. # line 2, column 1 # 1 | 1 * 2 # 2 | * 3 diff --git a/packages/bolt/tests/snapshots/bolt__parse_99__0.txt b/packages/bolt/tests/snapshots/bolt__parse_99__0.txt index 21acbb57f..28161eb2e 100644 --- a/packages/bolt/tests/snapshots/bolt__parse_99__0.txt +++ b/packages/bolt/tests/snapshots/bolt__parse_99__0.txt @@ -1,4 +1,4 @@ -#>ERROR Expected colon, literal 'advancement', literal 'align', literal 'anchored', literal 'append', literal 'as' or 200 other tokens but got literal 'for'. +#>ERROR Expected colon, literal 'advancement', literal 'align', literal 'anchored', literal 'append', literal 'as' or 207 other tokens but got literal 'for'. # line 1, column 7 # 1 | at @s for i in "foo": # : ^^^ diff --git a/packages/bolt/tests/snapshots/spec__prototypes__0.json b/packages/bolt/tests/snapshots/spec__prototypes__0.json index deadd15cc..3ee728484 100644 --- a/packages/bolt/tests/snapshots/spec__prototypes__0.json +++ b/packages/bolt/tests/snapshots/spec__prototypes__0.json @@ -19,6 +19,7 @@ "append:cat_variant_tag:name:content", "append:chat_type_tag:name:content", "append:chicken_variant_tag:name:content", + "append:configured_feature_tag:name:content", "append:cow_variant_tag:name:content", "append:damage_type_tag:name:content", "append:dialog_tag:name:content", @@ -33,6 +34,7 @@ "append:item_tag:name:content", "append:painting_variant_tag:name:content", "append:point_of_interest_type_tag:name:content", + "append:potion_tag:name:content", "append:timeline_tag:name:content", "append:trade_set_tag:name:content", "append:villager_trade_tag:name:content", @@ -98,10 +100,12 @@ "bossbar:set:id:value:value", "bossbar:set:id:visible:visible", "break", + "cat_sound_variant:name:content", "cat_variant:name:content", "cat_variant_tag:name:content", "chat_type:name:content", "chat_type_tag:name:content", + "chicken_sound_variant:name:content", "chicken_variant:name:content", "chicken_variant_tag:name:content", "class:name:bases:body", @@ -214,7 +218,9 @@ "clone:from:sourceDimension:begin:end:to:targetDimension:destination:strict:replace:force", "clone:from:sourceDimension:begin:end:to:targetDimension:destination:strict:replace:move", "clone:from:sourceDimension:begin:end:to:targetDimension:destination:strict:replace:normal", + "configured_feature_tag:name:content", "continue", + "cow_sound_variant:name:content", "cow_variant:name:content", "cow_variant_tag:name:content", "damage:target:amount", @@ -591,6 +597,7 @@ "execute:append:cat_variant_tag:name:content", "execute:append:chat_type_tag:name:content", "execute:append:chicken_variant_tag:name:content", + "execute:append:configured_feature_tag:name:content", "execute:append:cow_variant_tag:name:content", "execute:append:damage_type_tag:name:content", "execute:append:dialog_tag:name:content", @@ -605,6 +612,7 @@ "execute:append:item_tag:name:content", "execute:append:painting_variant_tag:name:content", "execute:append:point_of_interest_type_tag:name:content", + "execute:append:potion_tag:name:content", "execute:append:timeline_tag:name:content", "execute:append:trade_set_tag:name:content", "execute:append:villager_trade_tag:name:content", @@ -668,10 +676,12 @@ "execute:bossbar:set:id:style:progress", "execute:bossbar:set:id:value:value", "execute:bossbar:set:id:visible:visible", + "execute:cat_sound_variant:name:content", "execute:cat_variant:name:content", "execute:cat_variant_tag:name:content", "execute:chat_type:name:content", "execute:chat_type_tag:name:content", + "execute:chicken_sound_variant:name:content", "execute:chicken_variant:name:content", "execute:chicken_variant_tag:name:content", "execute:clear:targets", @@ -782,6 +792,8 @@ "execute:clone:from:sourceDimension:begin:end:to:targetDimension:destination:strict:replace:move", "execute:clone:from:sourceDimension:begin:end:to:targetDimension:destination:strict:replace:normal", "execute:commands", + "execute:configured_feature_tag:name:content", + "execute:cow_sound_variant:name:content", "execute:cow_variant:name:content", "execute:cow_variant_tag:name:content", "execute:damage:target:amount", @@ -1584,12 +1596,16 @@ "execute:merge:banner_pattern_tag:name:content", "execute:merge:block_tag:name:content", "execute:merge:blockstate:name:content", + "execute:merge:cat_sound_variant:name:content", "execute:merge:cat_variant:name:content", "execute:merge:cat_variant_tag:name:content", "execute:merge:chat_type:name:content", "execute:merge:chat_type_tag:name:content", + "execute:merge:chicken_sound_variant:name:content", "execute:merge:chicken_variant:name:content", "execute:merge:chicken_variant_tag:name:content", + "execute:merge:configured_feature_tag:name:content", + "execute:merge:cow_sound_variant:name:content", "execute:merge:cow_variant:name:content", "execute:merge:cow_variant_tag:name:content", "execute:merge:damage_type:name:content", @@ -1621,13 +1637,16 @@ "execute:merge:painting_variant:name:content", "execute:merge:painting_variant_tag:name:content", "execute:merge:particle_file:name:content", + "execute:merge:pig_sound_variant:name:content", "execute:merge:pig_variant:name:content", "execute:merge:point_of_interest_type_tag:name:content", "execute:merge:post_effect:name:content", + "execute:merge:potion_tag:name:content", "execute:merge:predicate:name:content", "execute:merge:recipe:name:content", "execute:merge:shader:name:content", "execute:merge:shader_post:name:content", + "execute:merge:sulfur_cube_archetype:name:content", "execute:merge:test_environment:name:content", "execute:merge:test_instance:name:content", "execute:merge:texture_mcmeta:name:content", @@ -1695,6 +1714,7 @@ "execute:particle_file:name:content", "execute:perf:start", "execute:perf:stop", + "execute:pig_sound_variant:name:content", "execute:pig_variant:name:content", "execute:place:feature:feature", "execute:place:feature:feature:pos", @@ -1781,12 +1801,14 @@ "execute:positioned:over:heightmap:subcommand", "execute:positioned:pos:subcommand", "execute:post_effect:name:content", + "execute:potion_tag:name:content", "execute:predicate:name:content", "execute:prepend:banner_pattern_tag:name:content", "execute:prepend:block_tag:name:content", "execute:prepend:cat_variant_tag:name:content", "execute:prepend:chat_type_tag:name:content", "execute:prepend:chicken_variant_tag:name:content", + "execute:prepend:configured_feature_tag:name:content", "execute:prepend:cow_variant_tag:name:content", "execute:prepend:damage_type_tag:name:content", "execute:prepend:dialog_tag:name:content", @@ -1801,6 +1823,7 @@ "execute:prepend:item_tag:name:content", "execute:prepend:painting_variant_tag:name:content", "execute:prepend:point_of_interest_type_tag:name:content", + "execute:prepend:potion_tag:name:content", "execute:prepend:timeline_tag:name:content", "execute:prepend:trade_set_tag:name:content", "execute:prepend:villager_trade_tag:name:content", @@ -1977,6 +2000,7 @@ "execute:store:success:storage:target:path:long:scale:subcommand", "execute:store:success:storage:target:path:short:scale:subcommand", "execute:subcommand", + "execute:sulfur_cube_archetype:name:content", "execute:summon:entity:subcommand", "execute:swing:targets", "execute:swing:targets:mainhand", @@ -2720,12 +2744,16 @@ "merge:banner_pattern_tag:name:content", "merge:block_tag:name:content", "merge:blockstate:name:content", + "merge:cat_sound_variant:name:content", "merge:cat_variant:name:content", "merge:cat_variant_tag:name:content", "merge:chat_type:name:content", "merge:chat_type_tag:name:content", + "merge:chicken_sound_variant:name:content", "merge:chicken_variant:name:content", "merge:chicken_variant_tag:name:content", + "merge:configured_feature_tag:name:content", + "merge:cow_sound_variant:name:content", "merge:cow_variant:name:content", "merge:cow_variant_tag:name:content", "merge:damage_type:name:content", @@ -2757,13 +2785,16 @@ "merge:painting_variant:name:content", "merge:painting_variant_tag:name:content", "merge:particle_file:name:content", + "merge:pig_sound_variant:name:content", "merge:pig_variant:name:content", "merge:point_of_interest_type_tag:name:content", "merge:post_effect:name:content", + "merge:potion_tag:name:content", "merge:predicate:name:content", "merge:recipe:name:content", "merge:shader:name:content", "merge:shader_post:name:content", + "merge:sulfur_cube_archetype:name:content", "merge:test_environment:name:content", "merge:test_instance:name:content", "merge:texture_mcmeta:name:content", @@ -2835,6 +2866,7 @@ "pass", "perf:start", "perf:stop", + "pig_sound_variant:name:content", "pig_variant:name:content", "place:feature:feature", "place:feature:feature:pos", @@ -2921,12 +2953,14 @@ "positioned:over:heightmap:subcommand", "positioned:pos:subcommand", "post_effect:name:content", + "potion_tag:name:content", "predicate:name:content", "prepend:banner_pattern_tag:name:content", "prepend:block_tag:name:content", "prepend:cat_variant_tag:name:content", "prepend:chat_type_tag:name:content", "prepend:chicken_variant_tag:name:content", + "prepend:configured_feature_tag:name:content", "prepend:cow_variant_tag:name:content", "prepend:damage_type_tag:name:content", "prepend:dialog_tag:name:content", @@ -2941,6 +2975,7 @@ "prepend:item_tag:name:content", "prepend:painting_variant_tag:name:content", "prepend:point_of_interest_type_tag:name:content", + "prepend:potion_tag:name:content", "prepend:timeline_tag:name:content", "prepend:trade_set_tag:name:content", "prepend:villager_trade_tag:name:content", @@ -3129,6 +3164,7 @@ "store:success:storage:target:path:int:scale:subcommand", "store:success:storage:target:path:long:scale:subcommand", "store:success:storage:target:path:short:scale:subcommand", + "sulfur_cube_archetype:name:content", "summon:entity", "summon:entity:pos", "summon:entity:pos:nbt", diff --git a/pyproject.toml b/pyproject.toml index 13134c75f..8fceb4728 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -62,8 +62,8 @@ override-dependencies = ["click>=8.3.1"] [tool.uv.workspace] members = ["packages/*"] -# [tool.pytest.ini_options] -# addopts = "tests --import-mode=importlib" +[tool.pytest.ini_options] +addopts = "tests --import-mode=importlib" [tool.semantic_release] commit_parser = "conventional-monorepo" From 7ad28bd5ef4e443119a3073b2f93e62dca1c58b1 Mon Sep 17 00:00:00 2001 From: edayot Date: Sun, 26 Jul 2026 19:12:11 +0200 Subject: [PATCH 3/4] fixed --- tests/test_vanilla_loading.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/tests/test_vanilla_loading.py b/tests/test_vanilla_loading.py index b802c8551..31124581d 100644 --- a/tests/test_vanilla_loading.py +++ b/tests/test_vanilla_loading.py @@ -7,10 +7,9 @@ from zipfile import ZipFile def test_vanilla_loading(tmp_path: Path): - version = "26.2" cache = Cache(tmp_path) manifest = JsonFile(source_path=cache.download(MANIFEST_URL)) - version = [x for x in manifest.data["versions"] if x["id"] == version][0] + version = [x for x in manifest.data["versions"] if x["id"] == LATEST_MINECRAFT_VERSION][0] version_manifest = JsonFile(source_path=cache.download(version["url"])) client = cache.download(version_manifest.data["downloads"]["client"]["url"]) From 8e427715bc356a6d5629f37af6df9781bd75cd21 Mon Sep 17 00:00:00 2001 From: edayot Date: Sun, 26 Jul 2026 19:13:02 +0200 Subject: [PATCH 4/4] format --- src/beet/contrib/worldgen.py | 2 +- src/beet/library/data_pack.py | 4 ++++ tests/test_vanilla_loading.py | 10 ++++------ 3 files changed, 9 insertions(+), 7 deletions(-) diff --git a/src/beet/contrib/worldgen.py b/src/beet/contrib/worldgen.py index f0c1349c2..c2336b95b 100644 --- a/src/beet/contrib/worldgen.py +++ b/src/beet/contrib/worldgen.py @@ -244,4 +244,4 @@ class WorldgenWorldPresetTag(TagFile): class ConfiguredFeatureTag(TagFile): """Class representing a configured feature tag.""" - scope: ClassVar[NamespaceFileScope] = ("tags", "worldgen", "configured_feature") \ No newline at end of file + scope: ClassVar[NamespaceFileScope] = ("tags", "worldgen", "configured_feature") diff --git a/src/beet/library/data_pack.py b/src/beet/library/data_pack.py index d2df14c8d..1de9ab3a9 100644 --- a/src/beet/library/data_pack.py +++ b/src/beet/library/data_pack.py @@ -184,6 +184,7 @@ class CatVariant(JsonFile): scope: ClassVar[NamespaceFileScope] = ("cat_variant",) extension: ClassVar[str] = ".json" + class CatSoundVariant(JsonFile): """Class representing a cat sound variant.""" @@ -197,6 +198,7 @@ class CowVariant(JsonFile): scope: ClassVar[NamespaceFileScope] = ("cow_variant",) extension: ClassVar[str] = ".json" + class CowSoundVariant(JsonFile): """Class representing a cow sound variant.""" @@ -238,12 +240,14 @@ class PigVariant(JsonFile): scope: ClassVar[NamespaceFileScope] = ("pig_variant",) extension: ClassVar[str] = ".json" + class PigSoundVariant(JsonFile): """Class representing a pig sound variant.""" scope: ClassVar[NamespaceFileScope] = ("pig_sound_variant",) extension: ClassVar[str] = ".json" + class SulfurCubeArchetype(JsonFile): """Class representing a sulfur cube archetype.""" diff --git a/tests/test_vanilla_loading.py b/tests/test_vanilla_loading.py index 31124581d..0956948e0 100644 --- a/tests/test_vanilla_loading.py +++ b/tests/test_vanilla_loading.py @@ -6,10 +6,13 @@ from beet.contrib.vanilla import MANIFEST_URL from zipfile import ZipFile + def test_vanilla_loading(tmp_path: Path): cache = Cache(tmp_path) manifest = JsonFile(source_path=cache.download(MANIFEST_URL)) - version = [x for x in manifest.data["versions"] if x["id"] == LATEST_MINECRAFT_VERSION][0] + version = [ + x for x in manifest.data["versions"] if x["id"] == LATEST_MINECRAFT_VERSION + ][0] version_manifest = JsonFile(source_path=cache.download(version["url"])) client = cache.download(version_manifest.data["downloads"]["client"]["url"]) @@ -52,10 +55,5 @@ def test_vanilla_loading(tmp_path: Path): rp_unknown.remove("gpu_warnlist.json") rp_unknown.remove("regional_compliancies.json") - assert len(dp_unknown) == 0, dp_unknown assert len(rp_unknown) == 0, rp_unknown - - - -