mcdex 0.1.0.dev0__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (161) hide show
  1. mcdex/__init__.py +281 -0
  2. mcdex/advancements/__init__.py +16 -0
  3. mcdex/advancements/_mc_advancements.py +3558 -0
  4. mcdex/advancements/advancements.json +12101 -0
  5. mcdex/attributes/__init__.py +16 -0
  6. mcdex/attributes/_mc_attributes.py +83 -0
  7. mcdex/attributes/attributes.json +289 -0
  8. mcdex/banner_patterns/__init__.py +16 -0
  9. mcdex/banner_patterns/_mc_banner_patterns.py +86 -0
  10. mcdex/banner_patterns/banner_patterns.json +310 -0
  11. mcdex/base/__init__.py +146 -0
  12. mcdex/base/_advancement_id.py +22 -0
  13. mcdex/base/_attribute_id.py +22 -0
  14. mcdex/base/_banner_pattern_id.py +26 -0
  15. mcdex/base/_biome_id.py +22 -0
  16. mcdex/base/_block_entity_id.py +22 -0
  17. mcdex/base/_block_id.py +35 -0
  18. mcdex/base/_cat_sound_variant_id.py +23 -0
  19. mcdex/base/_cat_variant_id.py +22 -0
  20. mcdex/base/_catalogue_meta.py +38 -0
  21. mcdex/base/_chicken_sound_variant_id.py +23 -0
  22. mcdex/base/_chicken_variant_id.py +23 -0
  23. mcdex/base/_cow_sound_variant_id.py +23 -0
  24. mcdex/base/_cow_variant_id.py +22 -0
  25. mcdex/base/_damage_type_id.py +21 -0
  26. mcdex/base/_dimension_id.py +21 -0
  27. mcdex/base/_effect_id.py +21 -0
  28. mcdex/base/_enchantment_id.py +22 -0
  29. mcdex/base/_entity_id.py +35 -0
  30. mcdex/base/_equipment_slot.py +34 -0
  31. mcdex/base/_frog_variant_id.py +22 -0
  32. mcdex/base/_game_id.py +88 -0
  33. mcdex/base/_game_rule_id.py +21 -0
  34. mcdex/base/_item_id.py +98 -0
  35. mcdex/base/_mc_thing.py +289 -0
  36. mcdex/base/_mc_version.py +140 -0
  37. mcdex/base/_music_id.py +25 -0
  38. mcdex/base/_not_in_version.py +68 -0
  39. mcdex/base/_painting_variant_id.py +23 -0
  40. mcdex/base/_particle_id.py +21 -0
  41. mcdex/base/_pig_sound_variant_id.py +23 -0
  42. mcdex/base/_pig_variant_id.py +22 -0
  43. mcdex/base/_potion_id.py +25 -0
  44. mcdex/base/_potion_modifier.py +30 -0
  45. mcdex/base/_sound_id.py +21 -0
  46. mcdex/base/_statistic_id.py +22 -0
  47. mcdex/base/_structure_id.py +21 -0
  48. mcdex/base/_trim_material_id.py +26 -0
  49. mcdex/base/_trim_pattern_id.py +25 -0
  50. mcdex/base/_version.py +188 -0
  51. mcdex/base/_villager_profession_id.py +24 -0
  52. mcdex/base/_villager_type_id.py +25 -0
  53. mcdex/base/_wolf_sound_variant_id.py +23 -0
  54. mcdex/base/_wolf_variant_id.py +22 -0
  55. mcdex/base/_zombie_nautilus_variant_id.py +23 -0
  56. mcdex/biomes/__init__.py +16 -0
  57. mcdex/biomes/_mc_biomes.py +137 -0
  58. mcdex/biomes/biomes.json +652 -0
  59. mcdex/block_entities/__init__.py +16 -0
  60. mcdex/block_entities/_mc_block_entities.py +95 -0
  61. mcdex/block_entities/block_entities.json +331 -0
  62. mcdex/blocks/__init__.py +16 -0
  63. mcdex/blocks/_mc_blocks.py +1338 -0
  64. mcdex/blocks/blocks.json +7770 -0
  65. mcdex/cat_sound_variants/__init__.py +16 -0
  66. mcdex/cat_sound_variants/_mc_cat_sound_variants.py +47 -0
  67. mcdex/cat_sound_variants/cat_sound_variants.json +25 -0
  68. mcdex/cat_variants/__init__.py +16 -0
  69. mcdex/cat_variants/_mc_cat_variants.py +54 -0
  70. mcdex/cat_variants/cat_variants.json +91 -0
  71. mcdex/chicken_sound_variants/__init__.py +17 -0
  72. mcdex/chicken_sound_variants/_mc_chicken_sound_variants.py +48 -0
  73. mcdex/chicken_sound_variants/chicken_sound_variants.json +24 -0
  74. mcdex/chicken_variants/__init__.py +16 -0
  75. mcdex/chicken_variants/_mc_chicken_variants.py +47 -0
  76. mcdex/chicken_variants/chicken_variants.json +30 -0
  77. mcdex/cow_sound_variants/__init__.py +16 -0
  78. mcdex/cow_sound_variants/_mc_cow_sound_variants.py +47 -0
  79. mcdex/cow_sound_variants/cow_sound_variants.json +24 -0
  80. mcdex/cow_variants/__init__.py +16 -0
  81. mcdex/cow_variants/_mc_cow_variants.py +47 -0
  82. mcdex/cow_variants/cow_variants.json +30 -0
  83. mcdex/damage_types/__init__.py +16 -0
  84. mcdex/damage_types/_mc_damage_types.py +94 -0
  85. mcdex/damage_types/damage_types.json +317 -0
  86. mcdex/dimensions/__init__.py +16 -0
  87. mcdex/dimensions/_mc_dimensions.py +46 -0
  88. mcdex/dimensions/dimensions.json +29 -0
  89. mcdex/effects/__init__.py +16 -0
  90. mcdex/effects/_mc_effects.py +83 -0
  91. mcdex/effects/effects.json +251 -0
  92. mcdex/enchantments/__init__.py +16 -0
  93. mcdex/enchantments/_mc_enchantments.py +86 -0
  94. mcdex/enchantments/enchantments.json +270 -0
  95. mcdex/entities/__init__.py +16 -0
  96. mcdex/entities/_mc_entities.py +206 -0
  97. mcdex/entities/entities.json +1042 -0
  98. mcdex/frog_variants/__init__.py +16 -0
  99. mcdex/frog_variants/_mc_frog_variants.py +47 -0
  100. mcdex/frog_variants/frog_variants.json +29 -0
  101. mcdex/game_rules/__init__.py +16 -0
  102. mcdex/game_rules/_mc_game_rules.py +110 -0
  103. mcdex/game_rules/game_rules.json +436 -0
  104. mcdex/items/__init__.py +16 -0
  105. mcdex/items/_mc_items.py +1842 -0
  106. mcdex/items/items.json +20060 -0
  107. mcdex/music/__init__.py +16 -0
  108. mcdex/music/_music.py +65 -0
  109. mcdex/music/music.json +143 -0
  110. mcdex/painting_variants/__init__.py +16 -0
  111. mcdex/painting_variants/_mc_painting_variants.py +96 -0
  112. mcdex/painting_variants/painting_variants.json +369 -0
  113. mcdex/particles/__init__.py +16 -0
  114. mcdex/particles/_mc_particles.py +184 -0
  115. mcdex/particles/particles.json +917 -0
  116. mcdex/pig_sound_variants/__init__.py +16 -0
  117. mcdex/pig_sound_variants/_mc_pig_sound_variants.py +48 -0
  118. mcdex/pig_sound_variants/pig_sound_variants.json +30 -0
  119. mcdex/pig_variants/__init__.py +16 -0
  120. mcdex/pig_variants/_mc_pig_variants.py +46 -0
  121. mcdex/pig_variants/pig_variants.json +30 -0
  122. mcdex/potions/__init__.py +20 -0
  123. mcdex/potions/_mc_potions.py +101 -0
  124. mcdex/potions/_modified_potion.py +129 -0
  125. mcdex/potions/potions.json +297 -0
  126. mcdex/py.typed +0 -0
  127. mcdex/sounds/__init__.py +16 -0
  128. mcdex/sounds/_mc_sounds.py +2395 -0
  129. mcdex/sounds/sounds.json +13077 -0
  130. mcdex/statistics/__init__.py +16 -0
  131. mcdex/statistics/_mc_statistics.py +123 -0
  132. mcdex/statistics/statistics.json +521 -0
  133. mcdex/structures/__init__.py +16 -0
  134. mcdex/structures/_mc_structures.py +99 -0
  135. mcdex/structures/structures.json +367 -0
  136. mcdex/trim_materials/__init__.py +16 -0
  137. mcdex/trim_materials/_mc_trim_materials.py +54 -0
  138. mcdex/trim_materials/trim_materials.json +77 -0
  139. mcdex/trim_patterns/__init__.py +16 -0
  140. mcdex/trim_patterns/_mc_trim_patterns.py +61 -0
  141. mcdex/trim_patterns/trim_patterns.json +119 -0
  142. mcdex/villager_professions/__init__.py +17 -0
  143. mcdex/villager_professions/_mc_villager_professions.py +61 -0
  144. mcdex/villager_professions/villager_professions.json +125 -0
  145. mcdex/villager_types/__init__.py +16 -0
  146. mcdex/villager_types/_mc_villager_types.py +52 -0
  147. mcdex/villager_types/villager_types.json +54 -0
  148. mcdex/wolf_sound_variants/__init__.py +17 -0
  149. mcdex/wolf_sound_variants/_mc_wolf_sound_variants.py +53 -0
  150. mcdex/wolf_sound_variants/wolf_sound_variants.json +54 -0
  151. mcdex/wolf_variants/__init__.py +16 -0
  152. mcdex/wolf_variants/_mc_wolf_variants.py +53 -0
  153. mcdex/wolf_variants/wolf_variants.json +66 -0
  154. mcdex/zombie_nautilus_variants/__init__.py +17 -0
  155. mcdex/zombie_nautilus_variants/_mc_zombie_nautilus_variants.py +48 -0
  156. mcdex/zombie_nautilus_variants/zombie_nautilus_variants.json +23 -0
  157. mcdex-0.1.0.dev0.dist-info/METADATA +1285 -0
  158. mcdex-0.1.0.dev0.dist-info/RECORD +161 -0
  159. mcdex-0.1.0.dev0.dist-info/WHEEL +5 -0
  160. mcdex-0.1.0.dev0.dist-info/licenses/LICENSE +201 -0
  161. mcdex-0.1.0.dev0.dist-info/top_level.txt +1 -0
@@ -0,0 +1,99 @@
1
+ """
2
+ MCStructures is the catalogue of the game's structures: an enumeration with one
3
+ member for every structure of the data file that ships with mcdex, each the
4
+ same structure in every version, with the id each version knows it by:
5
+ what /locate takes.
6
+ """
7
+ # Apache-2.0 license
8
+ # Copyright (c) 2026 Asger Jon Vistisen
9
+ from __future__ import annotations
10
+
11
+ from worktoy.keenum import Kee
12
+
13
+ from ..base import MCThing, StructureId
14
+
15
+
16
+ class MCStructures(MCThing):
17
+ """
18
+ The catalogue of the game's structures, each a member, found by its name in
19
+ capitals, in any case, or by its unique name:
20
+
21
+ villagePlains = MCStructures.VILLAGE_PLAINS
22
+ villagePlains is MCStructures['village_plains'] # True
23
+ villagePlains['1.12.2']
24
+ # StructureId('village_plains', 'Village{Children:[{Type:0b}]}')
25
+ len(MCStructures)
26
+
27
+ Implementation
28
+ --------------
29
+
30
+ All of it is 'MCThing's, reading 'structures.json' beside this module.
31
+ mcdex's tools write the members, one for every name of that file.
32
+ """
33
+
34
+ # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
35
+ # NAMESPACE # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
36
+ # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
37
+
38
+ # Class Variables
39
+ __data_file__ = 'structures.json'
40
+ __data_key__ = 'structures'
41
+ __id_class__ = StructureId
42
+ __kind__ = 'structure'
43
+
44
+ # Members, one for every name of 'structures.json'
45
+ ABANDONED_CAMP_BAMBOO_JUNGLE = Kee[str]('abandoned_camp_bamboo_jungle')
46
+ ABANDONED_CAMP_BIRCH_FOREST = Kee[str]('abandoned_camp_birch_forest')
47
+ ABANDONED_CAMP_CHERRY_GROVE = Kee[str]('abandoned_camp_cherry_grove')
48
+ ABANDONED_CAMP_DAPPLED_FOREST = Kee[str]('abandoned_camp_dappled_forest')
49
+ ABANDONED_CAMP_FLOWER_FOREST = Kee[str]('abandoned_camp_flower_forest')
50
+ ABANDONED_CAMP_FOREST = Kee[str]('abandoned_camp_forest')
51
+ ABANDONED_CAMP_MEADOW = Kee[str]('abandoned_camp_meadow')
52
+ ABANDONED_CAMP_OLD_GROWTH_BIRCH_FOREST = Kee[str](
53
+ 'abandoned_camp_old_growth_birch_forest')
54
+ ABANDONED_CAMP_OLD_GROWTH_PINE_TAIGA = Kee[str](
55
+ 'abandoned_camp_old_growth_pine_taiga')
56
+ ABANDONED_CAMP_OLD_GROWTH_SPRUCE_TAIGA = Kee[str](
57
+ 'abandoned_camp_old_growth_spruce_taiga')
58
+ ABANDONED_CAMP_PALE_GARDEN = Kee[str]('abandoned_camp_pale_garden')
59
+ ABANDONED_CAMP_SAVANNA = Kee[str]('abandoned_camp_savanna')
60
+ ABANDONED_CAMP_SNOWY_TAIGA = Kee[str]('abandoned_camp_snowy_taiga')
61
+ ABANDONED_CAMP_SPARSE_JUNGLE = Kee[str]('abandoned_camp_sparse_jungle')
62
+ ABANDONED_CAMP_SWAMP = Kee[str]('abandoned_camp_swamp')
63
+ ABANDONED_CAMP_TAIGA = Kee[str]('abandoned_camp_taiga')
64
+ ABANDONED_CAMP_WINDSWEPT_FOREST = Kee[str]('abandoned_camp_windswept_forest')
65
+ ABANDONED_CAMP_WOODED_BADLANDS = Kee[str]('abandoned_camp_wooded_badlands')
66
+ ANCIENT_CITY = Kee[str]('ancient_city')
67
+ BASTION_REMNANT = Kee[str]('bastion_remnant')
68
+ BURIED_TREASURE = Kee[str]('buried_treasure')
69
+ DESERT_PYRAMID = Kee[str]('desert_pyramid')
70
+ END_CITY = Kee[str]('end_city')
71
+ FORTRESS = Kee[str]('fortress')
72
+ IGLOO = Kee[str]('igloo')
73
+ JUNGLE_PYRAMID = Kee[str]('jungle_pyramid')
74
+ MANSION = Kee[str]('mansion')
75
+ MINESHAFT = Kee[str]('mineshaft')
76
+ MINESHAFT_MESA = Kee[str]('mineshaft_mesa')
77
+ MONUMENT = Kee[str]('monument')
78
+ NETHER_FOSSIL = Kee[str]('nether_fossil')
79
+ OCEAN_RUIN_COLD = Kee[str]('ocean_ruin_cold')
80
+ OCEAN_RUIN_WARM = Kee[str]('ocean_ruin_warm')
81
+ PILLAGER_OUTPOST = Kee[str]('pillager_outpost')
82
+ RUINED_PORTAL = Kee[str]('ruined_portal')
83
+ RUINED_PORTAL_DESERT = Kee[str]('ruined_portal_desert')
84
+ RUINED_PORTAL_JUNGLE = Kee[str]('ruined_portal_jungle')
85
+ RUINED_PORTAL_MOUNTAIN = Kee[str]('ruined_portal_mountain')
86
+ RUINED_PORTAL_NETHER = Kee[str]('ruined_portal_nether')
87
+ RUINED_PORTAL_OCEAN = Kee[str]('ruined_portal_ocean')
88
+ RUINED_PORTAL_SWAMP = Kee[str]('ruined_portal_swamp')
89
+ SHIPWRECK = Kee[str]('shipwreck')
90
+ SHIPWRECK_BEACHED = Kee[str]('shipwreck_beached')
91
+ STRONGHOLD = Kee[str]('stronghold')
92
+ SWAMP_HUT = Kee[str]('swamp_hut')
93
+ TRAIL_RUINS = Kee[str]('trail_ruins')
94
+ TRIAL_CHAMBERS = Kee[str]('trial_chambers')
95
+ VILLAGE_DESERT = Kee[str]('village_desert')
96
+ VILLAGE_PLAINS = Kee[str]('village_plains')
97
+ VILLAGE_SAVANNA = Kee[str]('village_savanna')
98
+ VILLAGE_SNOWY = Kee[str]('village_snowy')
99
+ VILLAGE_TAIGA = Kee[str]('village_taiga')
@@ -0,0 +1,367 @@
1
+ {
2
+ "covers": [
3
+ "1.7.2",
4
+ "26.3"
5
+ ],
6
+ "legend": {
7
+ "": "vanilla has no such structure in this version"
8
+ },
9
+ "structures": {
10
+ "abandoned_camp_bamboo_jungle": {
11
+ "ids": {
12
+ "1.7.2": "",
13
+ "26.3": "minecraft:abandoned_camp_bamboo_jungle"
14
+ }
15
+ },
16
+ "abandoned_camp_birch_forest": {
17
+ "ids": {
18
+ "1.7.2": "",
19
+ "26.3": "minecraft:abandoned_camp_birch_forest"
20
+ }
21
+ },
22
+ "abandoned_camp_cherry_grove": {
23
+ "ids": {
24
+ "1.7.2": "",
25
+ "26.3": "minecraft:abandoned_camp_cherry_grove"
26
+ }
27
+ },
28
+ "abandoned_camp_dappled_forest": {
29
+ "ids": {
30
+ "1.7.2": "",
31
+ "26.3": "minecraft:abandoned_camp_dappled_forest"
32
+ }
33
+ },
34
+ "abandoned_camp_flower_forest": {
35
+ "ids": {
36
+ "1.7.2": "",
37
+ "26.3": "minecraft:abandoned_camp_flower_forest"
38
+ }
39
+ },
40
+ "abandoned_camp_forest": {
41
+ "ids": {
42
+ "1.7.2": "",
43
+ "26.3": "minecraft:abandoned_camp_forest"
44
+ }
45
+ },
46
+ "abandoned_camp_meadow": {
47
+ "ids": {
48
+ "1.7.2": "",
49
+ "26.3": "minecraft:abandoned_camp_meadow"
50
+ }
51
+ },
52
+ "abandoned_camp_old_growth_birch_forest": {
53
+ "ids": {
54
+ "1.7.2": "",
55
+ "26.3": "minecraft:abandoned_camp_old_growth_birch_forest"
56
+ }
57
+ },
58
+ "abandoned_camp_old_growth_pine_taiga": {
59
+ "ids": {
60
+ "1.7.2": "",
61
+ "26.3": "minecraft:abandoned_camp_old_growth_pine_taiga"
62
+ }
63
+ },
64
+ "abandoned_camp_old_growth_spruce_taiga": {
65
+ "ids": {
66
+ "1.7.2": "",
67
+ "26.3": "minecraft:abandoned_camp_old_growth_spruce_taiga"
68
+ }
69
+ },
70
+ "abandoned_camp_pale_garden": {
71
+ "ids": {
72
+ "1.7.2": "",
73
+ "26.3": "minecraft:abandoned_camp_pale_garden"
74
+ }
75
+ },
76
+ "abandoned_camp_savanna": {
77
+ "ids": {
78
+ "1.7.2": "",
79
+ "26.3": "minecraft:abandoned_camp_savanna"
80
+ }
81
+ },
82
+ "abandoned_camp_snowy_taiga": {
83
+ "ids": {
84
+ "1.7.2": "",
85
+ "26.3": "minecraft:abandoned_camp_snowy_taiga"
86
+ }
87
+ },
88
+ "abandoned_camp_sparse_jungle": {
89
+ "ids": {
90
+ "1.7.2": "",
91
+ "26.3": "minecraft:abandoned_camp_sparse_jungle"
92
+ }
93
+ },
94
+ "abandoned_camp_swamp": {
95
+ "ids": {
96
+ "1.7.2": "",
97
+ "26.3": "minecraft:abandoned_camp_swamp"
98
+ }
99
+ },
100
+ "abandoned_camp_taiga": {
101
+ "ids": {
102
+ "1.7.2": "",
103
+ "26.3": "minecraft:abandoned_camp_taiga"
104
+ }
105
+ },
106
+ "abandoned_camp_windswept_forest": {
107
+ "ids": {
108
+ "1.7.2": "",
109
+ "26.3": "minecraft:abandoned_camp_windswept_forest"
110
+ }
111
+ },
112
+ "abandoned_camp_wooded_badlands": {
113
+ "ids": {
114
+ "1.7.2": "",
115
+ "26.3": "minecraft:abandoned_camp_wooded_badlands"
116
+ }
117
+ },
118
+ "ancient_city": {
119
+ "ids": {
120
+ "1.7.2": "",
121
+ "1.19": "minecraft:ancient_city"
122
+ }
123
+ },
124
+ "bastion_remnant": {
125
+ "ids": {
126
+ "1.7.2": "",
127
+ "1.16": "minecraft:bastion_remnant"
128
+ }
129
+ },
130
+ "buried_treasure": {
131
+ "ids": {
132
+ "1.7.2": "",
133
+ "1.13": "Buried_Treasure",
134
+ "1.16": "minecraft:buried_treasure"
135
+ }
136
+ },
137
+ "desert_pyramid": {
138
+ "ids": {
139
+ "1.7.2": "Temple{Children:[{id:\"TeDP\"}]}",
140
+ "1.13": "Desert_Pyramid",
141
+ "1.16": "minecraft:desert_pyramid"
142
+ }
143
+ },
144
+ "end_city": {
145
+ "ids": {
146
+ "1.7.2": "",
147
+ "1.9": "EndCity",
148
+ "1.16": "minecraft:endcity",
149
+ "1.19": "minecraft:end_city"
150
+ }
151
+ },
152
+ "fortress": {
153
+ "ids": {
154
+ "1.7.2": "Fortress",
155
+ "1.16": "minecraft:fortress"
156
+ }
157
+ },
158
+ "igloo": {
159
+ "ids": {
160
+ "1.7.2": "",
161
+ "1.9": "Temple{Children:[{id:\"Iglu\"}]}",
162
+ "1.13": "Igloo",
163
+ "1.16": "minecraft:igloo"
164
+ }
165
+ },
166
+ "jungle_pyramid": {
167
+ "ids": {
168
+ "1.7.2": "Temple{Children:[{id:\"TeJP\"}]}",
169
+ "1.13": "Jungle_Pyramid",
170
+ "1.16": "minecraft:jungle_pyramid"
171
+ }
172
+ },
173
+ "mansion": {
174
+ "ids": {
175
+ "1.7.2": "",
176
+ "1.11": "Mansion",
177
+ "1.16": "minecraft:mansion"
178
+ }
179
+ },
180
+ "mineshaft": {
181
+ "ids": {
182
+ "1.7.2": "Mineshaft",
183
+ "1.10": "Mineshaft{Children:[{MST:0}]}",
184
+ "1.16": "minecraft:mineshaft{Children:[{MST:0}]}",
185
+ "1.19": "minecraft:mineshaft"
186
+ }
187
+ },
188
+ "mineshaft_mesa": {
189
+ "ids": {
190
+ "1.7.2": "",
191
+ "1.10": "Mineshaft{Children:[{MST:1}]}",
192
+ "1.16": "minecraft:mineshaft{Children:[{MST:1}]}",
193
+ "1.19": "minecraft:mineshaft_mesa"
194
+ }
195
+ },
196
+ "monument": {
197
+ "ids": {
198
+ "1.7.2": "",
199
+ "1.8": "Monument",
200
+ "1.16": "minecraft:monument"
201
+ }
202
+ },
203
+ "nether_fossil": {
204
+ "ids": {
205
+ "1.7.2": "",
206
+ "1.16": "minecraft:nether_fossil"
207
+ }
208
+ },
209
+ "ocean_ruin_cold": {
210
+ "ids": {
211
+ "1.7.2": "",
212
+ "1.13": "Ocean_Ruin{Children:[{BiomeType:\"COLD\"}]}",
213
+ "1.16": "minecraft:ocean_ruin{Children:[{BiomeType:\"COLD\"}]}",
214
+ "1.19": "minecraft:ocean_ruin_cold"
215
+ }
216
+ },
217
+ "ocean_ruin_warm": {
218
+ "ids": {
219
+ "1.7.2": "",
220
+ "1.13": "Ocean_Ruin{Children:[{BiomeType:\"WARM\"}]}",
221
+ "1.16": "minecraft:ocean_ruin{Children:[{BiomeType:\"WARM\"}]}",
222
+ "1.19": "minecraft:ocean_ruin_warm"
223
+ }
224
+ },
225
+ "pillager_outpost": {
226
+ "ids": {
227
+ "1.7.2": "",
228
+ "1.14": "Pillager_Outpost",
229
+ "1.16": "minecraft:pillager_outpost"
230
+ }
231
+ },
232
+ "ruined_portal": {
233
+ "ids": {
234
+ "1.7.2": "",
235
+ "1.16": "minecraft:ruined_portal{portal_type:\"standard\"}",
236
+ "1.19": "minecraft:ruined_portal"
237
+ }
238
+ },
239
+ "ruined_portal_desert": {
240
+ "ids": {
241
+ "1.7.2": "",
242
+ "1.16": "minecraft:ruined_portal{portal_type:\"desert\"}",
243
+ "1.19": "minecraft:ruined_portal_desert"
244
+ }
245
+ },
246
+ "ruined_portal_jungle": {
247
+ "ids": {
248
+ "1.7.2": "",
249
+ "1.16": "minecraft:ruined_portal{portal_type:\"jungle\"}",
250
+ "1.19": "minecraft:ruined_portal_jungle"
251
+ }
252
+ },
253
+ "ruined_portal_mountain": {
254
+ "ids": {
255
+ "1.7.2": "",
256
+ "1.16": "minecraft:ruined_portal{portal_type:\"mountain\"}",
257
+ "1.19": "minecraft:ruined_portal_mountain"
258
+ }
259
+ },
260
+ "ruined_portal_nether": {
261
+ "ids": {
262
+ "1.7.2": "",
263
+ "1.16": "minecraft:ruined_portal{portal_type:\"nether\"}",
264
+ "1.19": "minecraft:ruined_portal_nether"
265
+ }
266
+ },
267
+ "ruined_portal_ocean": {
268
+ "ids": {
269
+ "1.7.2": "",
270
+ "1.16": "minecraft:ruined_portal{portal_type:\"ocean\"}",
271
+ "1.19": "minecraft:ruined_portal_ocean"
272
+ }
273
+ },
274
+ "ruined_portal_swamp": {
275
+ "ids": {
276
+ "1.7.2": "",
277
+ "1.16": "minecraft:ruined_portal{portal_type:\"swamp\"}",
278
+ "1.19": "minecraft:ruined_portal_swamp"
279
+ }
280
+ },
281
+ "shipwreck": {
282
+ "ids": {
283
+ "1.7.2": "",
284
+ "1.13": "Shipwreck{Children:[{isBeached:0b}]}",
285
+ "1.16": "minecraft:shipwreck{Children:[{isBeached:0b}]}",
286
+ "1.19": "minecraft:shipwreck"
287
+ }
288
+ },
289
+ "shipwreck_beached": {
290
+ "ids": {
291
+ "1.7.2": "",
292
+ "1.13": "Shipwreck{Children:[{isBeached:1b}]}",
293
+ "1.16": "minecraft:shipwreck{Children:[{isBeached:1b}]}",
294
+ "1.19": "minecraft:shipwreck_beached"
295
+ }
296
+ },
297
+ "stronghold": {
298
+ "ids": {
299
+ "1.7.2": "Stronghold",
300
+ "1.16": "minecraft:stronghold"
301
+ }
302
+ },
303
+ "swamp_hut": {
304
+ "ids": {
305
+ "1.7.2": "Temple{Children:[{id:\"TeSH\"}]}",
306
+ "1.13": "Swamp_Hut",
307
+ "1.16": "minecraft:swamp_hut"
308
+ }
309
+ },
310
+ "trail_ruins": {
311
+ "ids": {
312
+ "1.7.2": "",
313
+ "1.20": "minecraft:trail_ruins"
314
+ }
315
+ },
316
+ "trial_chambers": {
317
+ "ids": {
318
+ "1.7.2": "",
319
+ "1.20.3": "minecraft:trial_chambers"
320
+ }
321
+ },
322
+ "village_desert": {
323
+ "ids": {
324
+ "1.7.2": "Village{Children:[{Desert:1b}]}",
325
+ "1.10": "Village{Children:[{Type:1b}]}",
326
+ "1.14": "Village{start_pool:\"village/desert/town_centers\"}",
327
+ "1.16": "minecraft:village{start_pool:\"minecraft:village/desert/town_centers\"}",
328
+ "1.19": "minecraft:village_desert"
329
+ }
330
+ },
331
+ "village_plains": {
332
+ "ids": {
333
+ "1.7.2": "Village{Children:[{Desert:0b}]}",
334
+ "1.10": "Village{Children:[{Type:0b}]}",
335
+ "1.14": "Village{start_pool:\"village/plains/town_centers\"}",
336
+ "1.16": "minecraft:village{start_pool:\"minecraft:village/plains/town_centers\"}",
337
+ "1.19": "minecraft:village_plains"
338
+ }
339
+ },
340
+ "village_savanna": {
341
+ "ids": {
342
+ "1.7.2": "",
343
+ "1.10": "Village{Children:[{Type:2b}]}",
344
+ "1.14": "Village{start_pool:\"village/savanna/town_centers\"}",
345
+ "1.16": "minecraft:village{start_pool:\"minecraft:village/savanna/town_centers\"}",
346
+ "1.19": "minecraft:village_savanna"
347
+ }
348
+ },
349
+ "village_snowy": {
350
+ "ids": {
351
+ "1.7.2": "",
352
+ "1.14": "Village{start_pool:\"village/snowy/town_centers\"}",
353
+ "1.16": "minecraft:village{start_pool:\"minecraft:village/snowy/town_centers\"}",
354
+ "1.19": "minecraft:village_snowy"
355
+ }
356
+ },
357
+ "village_taiga": {
358
+ "ids": {
359
+ "1.7.2": "",
360
+ "1.10": "Village{Children:[{Type:3b}]}",
361
+ "1.14": "Village{start_pool:\"village/taiga/town_centers\"}",
362
+ "1.16": "minecraft:village{start_pool:\"minecraft:village/taiga/town_centers\"}",
363
+ "1.19": "minecraft:village_taiga"
364
+ }
365
+ }
366
+ }
367
+ }
@@ -0,0 +1,16 @@
1
+ """
2
+ The 'mcdex.trim_materials' package provides the trim materials of the game: the
3
+ 'MCTrimMaterials' catalogue, an enumeration of every trim material of the data
4
+ file 'trim_materials.json' that ships with the package.
5
+
6
+ - MCTrimMaterials
7
+ """
8
+ # Apache-2.0 license
9
+ # Copyright (c) 2026 Asger Jon Vistisen
10
+ from __future__ import annotations
11
+
12
+ from ._mc_trim_materials import MCTrimMaterials
13
+
14
+ __all__ = (
15
+ 'MCTrimMaterials',
16
+ )
@@ -0,0 +1,54 @@
1
+ """
2
+ MCTrimMaterials is the catalogue of the game's trim materials: an enumeration
3
+ with one member for every trim material of the data file that ships with mcdex,
4
+ each the same trim material in every version, with the id each version knows it
5
+ by: what an armor trim's material takes.
6
+ """
7
+ # Apache-2.0 license
8
+ # Copyright (c) 2026 Asger Jon Vistisen
9
+ from __future__ import annotations
10
+
11
+ from worktoy.keenum import Kee
12
+
13
+ from ..base import MCThing, TrimMaterialId
14
+
15
+
16
+ class MCTrimMaterials(MCThing):
17
+ """
18
+ The catalogue of the game's trim materials, each a member, found by its name
19
+ in capitals, in any case, or by its unique name:
20
+
21
+ amethyst = MCTrimMaterials.AMETHYST
22
+ amethyst is MCTrimMaterials['amethyst'] # True
23
+ amethyst['1.20'] # TrimMaterialId('amethyst', 'minecraft:amethyst')
24
+ len(MCTrimMaterials)
25
+
26
+ Implementation
27
+ --------------
28
+
29
+ All of it is 'MCThing's, reading 'trim_materials.json' beside this module.
30
+ mcdex's tools write the members, one for every name of that file.
31
+ """
32
+
33
+ # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
34
+ # NAMESPACE # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
35
+ # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
36
+
37
+ # Class Variables
38
+ __data_file__ = 'trim_materials.json'
39
+ __data_key__ = 'trim_materials'
40
+ __id_class__ = TrimMaterialId
41
+ __kind__ = 'trim material'
42
+
43
+ # Members, one for every name of 'trim_materials.json'
44
+ AMETHYST = Kee[str]('amethyst')
45
+ COPPER = Kee[str]('copper')
46
+ DIAMOND = Kee[str]('diamond')
47
+ EMERALD = Kee[str]('emerald')
48
+ GOLD = Kee[str]('gold')
49
+ IRON = Kee[str]('iron')
50
+ LAPIS = Kee[str]('lapis')
51
+ NETHERITE = Kee[str]('netherite')
52
+ QUARTZ = Kee[str]('quartz')
53
+ REDSTONE = Kee[str]('redstone')
54
+ RESIN = Kee[str]('resin')
@@ -0,0 +1,77 @@
1
+ {
2
+ "covers": [
3
+ "1.7.2",
4
+ "26.3"
5
+ ],
6
+ "legend": {
7
+ "": "vanilla has no such trim material in this version"
8
+ },
9
+ "trim_materials": {
10
+ "amethyst": {
11
+ "ids": {
12
+ "1.7.2": "",
13
+ "1.19.4": "minecraft:amethyst"
14
+ }
15
+ },
16
+ "copper": {
17
+ "ids": {
18
+ "1.7.2": "",
19
+ "1.19.4": "minecraft:copper"
20
+ }
21
+ },
22
+ "diamond": {
23
+ "ids": {
24
+ "1.7.2": "",
25
+ "1.19.4": "minecraft:diamond"
26
+ }
27
+ },
28
+ "emerald": {
29
+ "ids": {
30
+ "1.7.2": "",
31
+ "1.19.4": "minecraft:emerald"
32
+ }
33
+ },
34
+ "gold": {
35
+ "ids": {
36
+ "1.7.2": "",
37
+ "1.19.4": "minecraft:gold"
38
+ }
39
+ },
40
+ "iron": {
41
+ "ids": {
42
+ "1.7.2": "",
43
+ "1.19.4": "minecraft:iron"
44
+ }
45
+ },
46
+ "lapis": {
47
+ "ids": {
48
+ "1.7.2": "",
49
+ "1.19.4": "minecraft:lapis"
50
+ }
51
+ },
52
+ "netherite": {
53
+ "ids": {
54
+ "1.7.2": "",
55
+ "1.19.4": "minecraft:netherite"
56
+ }
57
+ },
58
+ "quartz": {
59
+ "ids": {
60
+ "1.7.2": "",
61
+ "1.19.4": "minecraft:quartz"
62
+ }
63
+ },
64
+ "redstone": {
65
+ "ids": {
66
+ "1.7.2": "",
67
+ "1.19.4": "minecraft:redstone"
68
+ }
69
+ },
70
+ "resin": {
71
+ "ids": {
72
+ "1.7.2": "",
73
+ "1.21.4": "minecraft:resin"
74
+ }
75
+ }
76
+ }
77
+ }
@@ -0,0 +1,16 @@
1
+ """
2
+ The 'mcdex.trim_patterns' package provides the trim patterns of the game: the
3
+ 'MCTrimPatterns' catalogue, an enumeration of every trim pattern of the data
4
+ file 'trim_patterns.json' that ships with the package.
5
+
6
+ - MCTrimPatterns
7
+ """
8
+ # Apache-2.0 license
9
+ # Copyright (c) 2026 Asger Jon Vistisen
10
+ from __future__ import annotations
11
+
12
+ from ._mc_trim_patterns import MCTrimPatterns
13
+
14
+ __all__ = (
15
+ 'MCTrimPatterns',
16
+ )
@@ -0,0 +1,61 @@
1
+ """
2
+ MCTrimPatterns is the catalogue of the game's trim patterns: an enumeration
3
+ with one member for every trim pattern of the data file that ships with mcdex,
4
+ each the same trim pattern in every version, with the id each version knows it
5
+ by: what an armor trim's pattern takes.
6
+ """
7
+ # Apache-2.0 license
8
+ # Copyright (c) 2026 Asger Jon Vistisen
9
+ from __future__ import annotations
10
+
11
+ from worktoy.keenum import Kee
12
+
13
+ from ..base import MCThing, TrimPatternId
14
+
15
+
16
+ class MCTrimPatterns(MCThing):
17
+ """
18
+ The catalogue of the game's trim patterns, each a member, found by its name
19
+ in capitals, in any case, or by its unique name:
20
+
21
+ coast = MCTrimPatterns.COAST
22
+ coast is MCTrimPatterns['coast'] # True
23
+ coast['1.20'] # TrimPatternId('coast', 'minecraft:coast')
24
+ len(MCTrimPatterns)
25
+
26
+ Implementation
27
+ --------------
28
+
29
+ All of it is 'MCThing's, reading 'trim_patterns.json' beside this module.
30
+ mcdex's tools write the members, one for every name of that file.
31
+ """
32
+
33
+ # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
34
+ # NAMESPACE # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
35
+ # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
36
+
37
+ # Class Variables
38
+ __data_file__ = 'trim_patterns.json'
39
+ __data_key__ = 'trim_patterns'
40
+ __id_class__ = TrimPatternId
41
+ __kind__ = 'trim pattern'
42
+
43
+ # Members, one for every name of 'trim_patterns.json'
44
+ BOLT = Kee[str]('bolt')
45
+ COAST = Kee[str]('coast')
46
+ DUNE = Kee[str]('dune')
47
+ EYE = Kee[str]('eye')
48
+ FLOW = Kee[str]('flow')
49
+ HOST = Kee[str]('host')
50
+ RAISER = Kee[str]('raiser')
51
+ RIB = Kee[str]('rib')
52
+ SENTRY = Kee[str]('sentry')
53
+ SHAPER = Kee[str]('shaper')
54
+ SILENCE = Kee[str]('silence')
55
+ SNOUT = Kee[str]('snout')
56
+ SPIRE = Kee[str]('spire')
57
+ TIDE = Kee[str]('tide')
58
+ VEX = Kee[str]('vex')
59
+ WARD = Kee[str]('ward')
60
+ WAYFINDER = Kee[str]('wayfinder')
61
+ WILD = Kee[str]('wild')