amulet-core 2.0a7__cp311-cp311-win_amd64.whl → 2.0a8__cp311-cp311-win_amd64.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.
Potentially problematic release.
This version of amulet-core might be problematic. Click here for more details.
- amulet/__init__.cp311-win_amd64.pyd +0 -0
- amulet/__init__.py.cpp +2 -0
- amulet/__init__.pyi +2 -0
- amulet/_version.py +3 -3
- amulet/chunk.hpp +2 -1
- amulet/level/abc/_chunk_handle.py +45 -22
- amulet/mesh/block/__init__.pyi +301 -0
- amulet/mesh/block/_cube.py +198 -0
- amulet/mesh/block/{missing_block.py → _missing_block.py} +2 -2
- amulet/mesh/block/block_mesh.cpp +107 -0
- amulet/mesh/block/block_mesh.hpp +207 -0
- amulet/resource_pack/__init__.py +16 -15
- amulet/resource_pack/abc/resource_pack_manager.py +3 -5
- amulet/resource_pack/java/resource_pack_manager.py +185 -173
- amulet/utils/cast.py +10 -0
- amulet/utils/shareable_lock.py +2 -2
- {amulet_core-2.0a7.dist-info → amulet_core-2.0a8.dist-info}/METADATA +2 -2
- {amulet_core-2.0a7.dist-info → amulet_core-2.0a8.dist-info}/RECORD +21 -75
- {amulet_core-2.0a7.dist-info → amulet_core-2.0a8.dist-info}/WHEEL +1 -1
- amulet/mesh/block/__init__.py +0 -1
- amulet/mesh/block/block_mesh.py +0 -369
- amulet/mesh/block/cube.py +0 -149
- amulet/resource_pack/bedrock/__init__.py +0 -2
- amulet/resource_pack/bedrock/bedrock_vanilla_fix/pack_icon.png +0 -0
- amulet/resource_pack/bedrock/bedrock_vanilla_fix/textures/blocks/grass_carried.png +0 -0
- amulet/resource_pack/bedrock/bedrock_vanilla_fix/textures/blocks/grass_side_carried.png +0 -0
- amulet/resource_pack/bedrock/bedrock_vanilla_fix/textures/blocks/water.png +0 -0
- amulet/resource_pack/bedrock/blockshapes/__init__.py +0 -31
- amulet/resource_pack/bedrock/blockshapes/air.py +0 -35
- amulet/resource_pack/bedrock/blockshapes/base_blockshape.py +0 -29
- amulet/resource_pack/bedrock/blockshapes/bubble_column.py +0 -29
- amulet/resource_pack/bedrock/blockshapes/cake.py +0 -46
- amulet/resource_pack/bedrock/blockshapes/chest.py +0 -54
- amulet/resource_pack/bedrock/blockshapes/comparator.py +0 -51
- amulet/resource_pack/bedrock/blockshapes/cross_texture.py +0 -186
- amulet/resource_pack/bedrock/blockshapes/cross_texture0.py +0 -17
- amulet/resource_pack/bedrock/blockshapes/cross_texture_green.py +0 -16
- amulet/resource_pack/bedrock/blockshapes/cube.py +0 -38
- amulet/resource_pack/bedrock/blockshapes/default.py +0 -14
- amulet/resource_pack/bedrock/blockshapes/door.py +0 -38
- amulet/resource_pack/bedrock/blockshapes/door1.py +0 -14
- amulet/resource_pack/bedrock/blockshapes/door2.py +0 -14
- amulet/resource_pack/bedrock/blockshapes/door3.py +0 -14
- amulet/resource_pack/bedrock/blockshapes/door4.py +0 -14
- amulet/resource_pack/bedrock/blockshapes/door5.py +0 -14
- amulet/resource_pack/bedrock/blockshapes/door6.py +0 -14
- amulet/resource_pack/bedrock/blockshapes/double_plant.py +0 -40
- amulet/resource_pack/bedrock/blockshapes/enchanting_table.py +0 -22
- amulet/resource_pack/bedrock/blockshapes/farmland.py +0 -22
- amulet/resource_pack/bedrock/blockshapes/fence.py +0 -22
- amulet/resource_pack/bedrock/blockshapes/flat.py +0 -55
- amulet/resource_pack/bedrock/blockshapes/flat_wall.py +0 -55
- amulet/resource_pack/bedrock/blockshapes/furnace.py +0 -44
- amulet/resource_pack/bedrock/blockshapes/furnace_lit.py +0 -14
- amulet/resource_pack/bedrock/blockshapes/green_cube.py +0 -39
- amulet/resource_pack/bedrock/blockshapes/ladder.py +0 -36
- amulet/resource_pack/bedrock/blockshapes/lilypad.py +0 -14
- amulet/resource_pack/bedrock/blockshapes/partial_block.py +0 -57
- amulet/resource_pack/bedrock/blockshapes/piston.py +0 -44
- amulet/resource_pack/bedrock/blockshapes/piston_arm.py +0 -72
- amulet/resource_pack/bedrock/blockshapes/portal_frame.py +0 -22
- amulet/resource_pack/bedrock/blockshapes/pressure_plate.py +0 -29
- amulet/resource_pack/bedrock/blockshapes/pumpkin.py +0 -36
- amulet/resource_pack/bedrock/blockshapes/pumpkin_carved.py +0 -14
- amulet/resource_pack/bedrock/blockshapes/pumpkin_lit.py +0 -14
- amulet/resource_pack/bedrock/blockshapes/red_dust.py +0 -14
- amulet/resource_pack/bedrock/blockshapes/repeater.py +0 -53
- amulet/resource_pack/bedrock/blockshapes/slab.py +0 -33
- amulet/resource_pack/bedrock/blockshapes/slab_double.py +0 -15
- amulet/resource_pack/bedrock/blockshapes/tree.py +0 -41
- amulet/resource_pack/bedrock/blockshapes/turtle_egg.py +0 -15
- amulet/resource_pack/bedrock/blockshapes/vine.py +0 -52
- amulet/resource_pack/bedrock/blockshapes/wall.py +0 -22
- amulet/resource_pack/bedrock/blockshapes/water.py +0 -38
- amulet/resource_pack/bedrock/download_resources.py +0 -147
- amulet/resource_pack/bedrock/resource_pack.py +0 -40
- amulet/resource_pack/bedrock/resource_pack_manager.py +0 -361
- amulet/resource_pack/bedrock/sort_blockshapes.py +0 -15
- {amulet_core-2.0a7.dist-info → amulet_core-2.0a8.dist-info}/entry_points.txt +0 -0
- {amulet_core-2.0a7.dist-info → amulet_core-2.0a8.dist-info}/top_level.txt +0 -0
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
amulet/__init__.cp311-win_amd64.pyd,sha256=
|
|
2
|
-
amulet/__init__.py.cpp,sha256=
|
|
3
|
-
amulet/__init__.pyi,sha256=
|
|
1
|
+
amulet/__init__.cp311-win_amd64.pyd,sha256=W-8axm1OcOxmO3FY-Z4HUN18VAMNHipL1PryGjRD8gc,1091072
|
|
2
|
+
amulet/__init__.py.cpp,sha256=tJGcgVzXaxy8zQG7kzWbb7pRkyG07Wy2cGXrt0ywb9Q,1290
|
|
3
|
+
amulet/__init__.pyi,sha256=qNiF_3bpoauni4tQ2qx0kD8_5LUH8BGpja0Ggw6FOvY,434
|
|
4
4
|
amulet/_init.py,sha256=qI3pL1rDoaoEH5RrsPv__jjwo3UO9uS-Tw0XWnjO5C8,867
|
|
5
|
-
amulet/_version.py,sha256=
|
|
5
|
+
amulet/_version.py,sha256=Nlcz19-VztcI3V4O04VaPQ34YfM242fPjyvpuKH-qfI,518
|
|
6
6
|
amulet/biome.cpp,sha256=aCkTqYUFOVP6qtHVKC47IBgqCTO6nFQK1f4cn0v4otQ,1289
|
|
7
7
|
amulet/biome.hpp,sha256=zIg03StMGotnhTo6bD6Dd3o5vPnleIXxBXRBTltZ3Bk,1474
|
|
8
8
|
amulet/biome.py.cpp,sha256=kRwgdOoUhivWU7BCxlCYUqzuj91frREaoHhQBooaccA,4490
|
|
@@ -16,7 +16,7 @@ amulet/block_entity.hpp,sha256=GjvOQO726HG_pUTdKSInQePA6py2QAwOKf7fVnhJ7po,2045
|
|
|
16
16
|
amulet/block_entity.py.cpp,sha256=JySo2avXvfSy2WUwiT7OvBF3jxqkV9bwAziZa57kpxk,4332
|
|
17
17
|
amulet/block_entity.pyi,sha256=cFdzUXjjXhlfgyDZA3urEejpNIokw25qFR9pDssHSgY,2144
|
|
18
18
|
amulet/chunk.cpp,sha256=Z-Wdcb6SQqc3TEaGNToG1NovffeVSiODO8zbmf7cO6c,406
|
|
19
|
-
amulet/chunk.hpp,sha256=
|
|
19
|
+
amulet/chunk.hpp,sha256=nifpMclwk7j5wjlI2O6aSmdG-u6mbzgUlldlr--noWY,3121
|
|
20
20
|
amulet/chunk.py.cpp,sha256=UjK1s9FFiKC9GDliJjFBb6m7RCNyJiruNo4feJOmYAM,2831
|
|
21
21
|
amulet/chunk.pyi,sha256=rZITqIR4tITDKxO5Sr_EZH2p6Cb1b9o5W8CpV1jBFtw,702
|
|
22
22
|
amulet/chunk_components.pyi,sha256=pcTF27lpeaz_VwiYY8AaZkdGGgDhKbOKQK4LBdO52_0,3345
|
|
@@ -106,7 +106,7 @@ amulet/io/binary_writer.hpp,sha256=l7OPfHmZy196EwUlKww58lV2zUmvfwlz80YRHDzDJ7k,7
|
|
|
106
106
|
amulet/level/__init__.pyi,sha256=VldU96w64xL_HEHMDXqrPdTXo8aZdYCe2CUdqzmjbW0,472
|
|
107
107
|
amulet/level/_load.py,sha256=9xg84f_F-aEaG5V1Pjw5BrxHZ4j2QhLBgLG9sZi-D2c,2953
|
|
108
108
|
amulet/level/abc/__init__.py,sha256=nnSCNSaOOdmZqoUQ0klZ_IW2HmjKdwAwS9vMp1z_hNo,324
|
|
109
|
-
amulet/level/abc/_chunk_handle.py,sha256=
|
|
109
|
+
amulet/level/abc/_chunk_handle.py,sha256=Rmqd7Z9QZdF1koLwWTWcgw7PJTz5oq5pI8Wfchu2bgU,13098
|
|
110
110
|
amulet/level/abc/_dimension.py,sha256=qxCjsUCdHt1OxbQKxMifQeE75H_DToLSeftQPUO0MgA,3309
|
|
111
111
|
amulet/level/abc/_player_storage.py,sha256=3GByE_EOqZFZ7BKbr-oH-rcQDxj_bCNxsCLtzUAu0J4,130
|
|
112
112
|
amulet/level/abc/_raw_level.py,sha256=6s-SCeNDYTYqjrL1Y1RIFiHX5mzie5eXB4JZ1ZX0kYk,5877
|
|
@@ -163,10 +163,11 @@ amulet/level/temporary_level/__init__.py,sha256=CWBmaiN18nRi8GJfDaqjhDfMulvLuhFV
|
|
|
163
163
|
amulet/level/temporary_level/_level.py,sha256=gSLhSLosS_HB7lLNvdoPavtlBSu12BEKMnShExveUS8,433
|
|
164
164
|
amulet/mesh/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
165
165
|
amulet/mesh/util.py,sha256=ietbRnpU-sDvOGRf917J3d7NVkMBlTO5d20qEcA3v6k,605
|
|
166
|
-
amulet/mesh/block/__init__.
|
|
167
|
-
amulet/mesh/block/
|
|
168
|
-
amulet/mesh/block/
|
|
169
|
-
amulet/mesh/block/
|
|
166
|
+
amulet/mesh/block/__init__.pyi,sha256=0Y_Mgd46ii9GExcCIZHo7VFnymXbb6ZTze2fcJvVAB0,9871
|
|
167
|
+
amulet/mesh/block/_cube.py,sha256=I4Hb-txBjObw3D--rZqUnto8PCGhs46T7W5Iveo5-y4,5613
|
|
168
|
+
amulet/mesh/block/_missing_block.py,sha256=2o44Vd_feHIVc0SuHVcPIaJSnqUBp4Q6ztOizLBHFQU,565
|
|
169
|
+
amulet/mesh/block/block_mesh.cpp,sha256=YN-yS36WaKUsnk-CHwCcpPRMnaNsV1J-gn6krwbqIi0,5017
|
|
170
|
+
amulet/mesh/block/block_mesh.hpp,sha256=82jjS6QrrCCL07-OV48pmWAE0ATpnBalP2EAaqGN-_g,5641
|
|
170
171
|
amulet/palette/__init__.pyi,sha256=6uZ7aJ2ROJ9OdqfddfBRweoe_nEKGHCME7ub70kOIRU,274
|
|
171
172
|
amulet/palette/biome_palette.hpp,sha256=nEO9g-GDUkut8BWjaNf-QFcJIXYXW4F6HmRwFJqqzD8,2165
|
|
172
173
|
amulet/palette/biome_palette.pyi,sha256=eJx72wOdgxvo3c_N_GqLyIVIAf1kNCRsQctLU7FxWrs,1612
|
|
@@ -179,71 +180,15 @@ amulet/pybind11/py_module.hpp,sha256=ewz8Fr-SYzBWJtueK56Tf3pjl0phrQ03kQ5DONdX6o4
|
|
|
179
180
|
amulet/pybind11/type_hints.hpp,sha256=JJvcmBqgcTxMkR_SJTXXUfD3Jpr24KG1FknWhKgfvi8,1336
|
|
180
181
|
amulet/pybind11/types.hpp,sha256=F6SQlwajmGkETTlPZENl6sF5Si73UK7LAAxR9mcSO7k,533
|
|
181
182
|
amulet/pybind11/typing.hpp,sha256=2dQXcB83ibVM92DhKmSCu6t4TjKDNvhs0X3oShcTdqs,94
|
|
182
|
-
amulet/resource_pack/__init__.py,sha256=
|
|
183
|
+
amulet/resource_pack/__init__.py,sha256=FWbkZbXe2OYMeihZX1Q5kckJukyXtP4Nz4vk5rPqLaI,2230
|
|
183
184
|
amulet/resource_pack/unknown_resource_pack.py,sha256=gMlFo04gXImEHzEqahei3kZX0hM5jUUHWVoKwTKDifo,293
|
|
184
185
|
amulet/resource_pack/abc/__init__.py,sha256=XLkI08rMQM2HRrGNVvgIrQ70wE5Ck8kbbnCMIgx6ZYU,105
|
|
185
186
|
amulet/resource_pack/abc/resource_pack.py,sha256=VdfrxC9umHSP9Hc2LcE7VlymdHSUw00pf1PQO96kebM,1121
|
|
186
|
-
amulet/resource_pack/abc/resource_pack_manager.py,sha256=
|
|
187
|
-
amulet/resource_pack/bedrock/__init__.py,sha256=dVKSNcwek-7OR4zem8apGltJmp2yZJ8UXbDXPudVfWg,111
|
|
188
|
-
amulet/resource_pack/bedrock/download_resources.py,sha256=jDtD1IuvuQfSTRrxmLnP2Hz2odFpneV3XvhZPwB4EPE,5291
|
|
189
|
-
amulet/resource_pack/bedrock/resource_pack.py,sha256=4H_OpgSG-tQBeJLP1vjNa4TOWmnQHuaxYP-Bju1n7UM,1611
|
|
190
|
-
amulet/resource_pack/bedrock/resource_pack_manager.py,sha256=DJ1SXL4eHPcqYwaVr4cMM2z-SaLB-YY__jU5wtHJan4,15186
|
|
191
|
-
amulet/resource_pack/bedrock/sort_blockshapes.py,sha256=GTg0VhrMT227ZIEFQbSTOyitCIwmOkES6WlaFWN2tmI,454
|
|
192
|
-
amulet/resource_pack/bedrock/bedrock_vanilla_fix/pack_icon.png,sha256=o9GLehpYZX0uVXmNRv4fdiMRQ7hFOWm54NvenSOgEBI,32642
|
|
193
|
-
amulet/resource_pack/bedrock/bedrock_vanilla_fix/textures/blocks/grass_carried.png,sha256=jRCdf0bcn-ItMsQ3XaRweqeoDBQzag8Vjn5o_lGa2Pw,580
|
|
194
|
-
amulet/resource_pack/bedrock/bedrock_vanilla_fix/textures/blocks/grass_side_carried.png,sha256=3tqgFxr2PfY6bPfj5scHjU1YMP2Tkj8wBTAu0PAhBMU,408
|
|
195
|
-
amulet/resource_pack/bedrock/bedrock_vanilla_fix/textures/blocks/water.png,sha256=0J3A8M_8PcrvkD9iaNIrGKLeFG0WPVgZClg6jODilwM,927
|
|
196
|
-
amulet/resource_pack/bedrock/blockshapes/__init__.py,sha256=69b75D8JdF6rs32RZ3Ezcb0AH4gns9cgnEhDsAyFdXs,1077
|
|
197
|
-
amulet/resource_pack/bedrock/blockshapes/air.py,sha256=jD54BHTjTweRLlNK25A9H2r41ZfUANw87gcHTyaUFsk,989
|
|
198
|
-
amulet/resource_pack/bedrock/blockshapes/base_blockshape.py,sha256=EYakoRhgdYUS7O0IEGN1QKxQgV792Qw5XM3wzigjv5Y,843
|
|
199
|
-
amulet/resource_pack/bedrock/blockshapes/bubble_column.py,sha256=qVX7q5aPm2Abi2nk_AoZPVwSh0y2Kv-A69x3dFnpCBA,704
|
|
200
|
-
amulet/resource_pack/bedrock/blockshapes/cake.py,sha256=oHiVfvR_P--s2skyJKplH79r6yo-VYfK1qOwEQlVaZU,1363
|
|
201
|
-
amulet/resource_pack/bedrock/blockshapes/chest.py,sha256=-tagH5rnteLS2L9oS3wYLxCxYZXMOvbI6SCCR-RNAxI,1439
|
|
202
|
-
amulet/resource_pack/bedrock/blockshapes/comparator.py,sha256=zK55P54yYh9-YvpGFmcslY9k2DrFWBrR3P1-Foqhkok,1427
|
|
203
|
-
amulet/resource_pack/bedrock/blockshapes/cross_texture.py,sha256=bilFSAPPqza2VukkjVWH0VtqkuVz5QRymxdmxuzv2mo,5304
|
|
204
|
-
amulet/resource_pack/bedrock/blockshapes/cross_texture0.py,sha256=yo0n7w6lNr4NB85AMMg8xksMhZclz4_k7VWXNVwXF3A,415
|
|
205
|
-
amulet/resource_pack/bedrock/blockshapes/cross_texture_green.py,sha256=z-hwTNApVo5BfuNl1qIxwEuDO70rReWPRfVgJXjCQls,325
|
|
206
|
-
amulet/resource_pack/bedrock/blockshapes/cube.py,sha256=9FmSK40u0rgDS66zL_wpG9x7fnlrpphu28VhilKIpi8,931
|
|
207
|
-
amulet/resource_pack/bedrock/blockshapes/default.py,sha256=XoM0BXFC7w5FxX7E9X9EHPE6wsKJNhmtovsO6IlVm14,495
|
|
208
|
-
amulet/resource_pack/bedrock/blockshapes/door.py,sha256=Lf3pa7O77d7B-eEg8PtBZ7r8ec2HN1XGbChp6hIy3_A,1091
|
|
209
|
-
amulet/resource_pack/bedrock/blockshapes/door1.py,sha256=BJW43jyzPOo4LhSvZ3uQrbp1rwL5lTbTpxAUkrTSwlA,306
|
|
210
|
-
amulet/resource_pack/bedrock/blockshapes/door2.py,sha256=o38cwhZlMSMxUe-SOln9IOr5OX1p_2XllDeBemSKqdc,306
|
|
211
|
-
amulet/resource_pack/bedrock/blockshapes/door3.py,sha256=vGyspYQOz_xHAhbFXURDfEaL8nAt73lfdzFvRAHY3Fw,306
|
|
212
|
-
amulet/resource_pack/bedrock/blockshapes/door4.py,sha256=br0J6weSLP3HGnRxQGu14fv5NMFON6uhLcsiju2dLLo,306
|
|
213
|
-
amulet/resource_pack/bedrock/blockshapes/door5.py,sha256=Xy3DxTwEseCFcyjsmenAKTEcVAbIQ_xgW6ktLuFfZ6U,306
|
|
214
|
-
amulet/resource_pack/bedrock/blockshapes/door6.py,sha256=JQHG2cnwyjGA0JfN6WSj6vxfRXYDkxY7l9wN8muyIJI,306
|
|
215
|
-
amulet/resource_pack/bedrock/blockshapes/double_plant.py,sha256=Fz83ttupKTQr4qFvFVlxM8V14myXlVCwhPa8rqBixHY,1193
|
|
216
|
-
amulet/resource_pack/bedrock/blockshapes/enchanting_table.py,sha256=NvredknkqNGHd6nbMwULRIvd0L1l9nkau0PZwU2O76c,604
|
|
217
|
-
amulet/resource_pack/bedrock/blockshapes/farmland.py,sha256=_W8BoCGQEzcgmobJ-TDJl2Og36VZosn7ivJzg3aqW4k,582
|
|
218
|
-
amulet/resource_pack/bedrock/blockshapes/fence.py,sha256=SxRF8N8tDHJqVV32ZxYwvpW67zAwcyj1VnXcb1NkviA,592
|
|
219
|
-
amulet/resource_pack/bedrock/blockshapes/flat.py,sha256=2AVzmi_e0FOpZZYFR6HNJMw6Cb82eYKk764GKBfWrls,1580
|
|
220
|
-
amulet/resource_pack/bedrock/blockshapes/flat_wall.py,sha256=9yCCMP2GelDY7tLbD_Oi5Vri7aJbTGDUL95AuafnzfU,1584
|
|
221
|
-
amulet/resource_pack/bedrock/blockshapes/furnace.py,sha256=tS4Ny5gCVuL1hdj7VZ7ixFOLsYQCKRuk7CRZVdFTSzo,1176
|
|
222
|
-
amulet/resource_pack/bedrock/blockshapes/furnace_lit.py,sha256=IEYQVClQ5bFPNb6qNnn5omVotd27Awm3lqZ3WdrUO3Q,317
|
|
223
|
-
amulet/resource_pack/bedrock/blockshapes/green_cube.py,sha256=XpAqxMjs_b__BzcTQdgd09ur7zlRBH18UCAya6isMN8,961
|
|
224
|
-
amulet/resource_pack/bedrock/blockshapes/ladder.py,sha256=6ZGiw6X6P6gMp3meRwHiCH-uCQYpNm_CtUcsohOIUQY,888
|
|
225
|
-
amulet/resource_pack/bedrock/blockshapes/lilypad.py,sha256=Vv5UKYBmQAVtE5oqwB45Aq__RLeAmeelpvTXlmNjQuQ,285
|
|
226
|
-
amulet/resource_pack/bedrock/blockshapes/partial_block.py,sha256=eKJVTgLlfT0WF8HRAdC0pMKb_X8fxDiHC7hbMNL4mXc,1977
|
|
227
|
-
amulet/resource_pack/bedrock/blockshapes/piston.py,sha256=m5k5VFpshcxBUpkZe3s6S_W8-S5Sz9x0kJ_zDFqjjhg,1230
|
|
228
|
-
amulet/resource_pack/bedrock/blockshapes/piston_arm.py,sha256=vruoB1Wj9SJN_aJOwb4p__TXr03r9svO1Ggi3H54nUg,2140
|
|
229
|
-
amulet/resource_pack/bedrock/blockshapes/portal_frame.py,sha256=5RUpuLRLl2UV9CB8ea1dXwLQ9hZasZPH-sFgygh6c6Y,592
|
|
230
|
-
amulet/resource_pack/bedrock/blockshapes/pressure_plate.py,sha256=SjSZvm0azV8ly_gXhC4uSkugkYwo-G84n-opVLT0128,922
|
|
231
|
-
amulet/resource_pack/bedrock/blockshapes/pumpkin.py,sha256=aFHN-rxa-z24lBNl9nhWcGqJwI3wF1HGuX_PlQTQPaw,976
|
|
232
|
-
amulet/resource_pack/bedrock/blockshapes/pumpkin_carved.py,sha256=lgq0S2PZ-1bZv0x1af2rVOPB7RfC2VBZcyE80mIEGGg,340
|
|
233
|
-
amulet/resource_pack/bedrock/blockshapes/pumpkin_lit.py,sha256=W4Rs6dz1CYmCdNWT0qAPjJgvXOoCGH-9IXl9mmJBtmk,331
|
|
234
|
-
amulet/resource_pack/bedrock/blockshapes/red_dust.py,sha256=SQQn9K2jAaIjMyWDl6ehpy-XNM8hcZrB7r7lCUbcjUc,286
|
|
235
|
-
amulet/resource_pack/bedrock/blockshapes/repeater.py,sha256=Loln46WDXfXhOSB0AJVUfRNjanRAFj7Rh7BYkLIFwQM,1492
|
|
236
|
-
amulet/resource_pack/bedrock/blockshapes/slab.py,sha256=HluDkJg_ysgWMY5MgM3TW7CH5rX30yQPqdhBR6dZiEw,1017
|
|
237
|
-
amulet/resource_pack/bedrock/blockshapes/slab_double.py,sha256=yAGQxYmYt-bYu298e-Njadfhn5RN0yYJgroTC1KPt70,410
|
|
238
|
-
amulet/resource_pack/bedrock/blockshapes/tree.py,sha256=LdgW-L3v0ufUO25NrL_9ECEFRDodnVBfQj7yVT_KfCI,1121
|
|
239
|
-
amulet/resource_pack/bedrock/blockshapes/turtle_egg.py,sha256=Dd6QBYZZ-5tn3PefAZij9TMpAf0PMJYu2SJ1E2nsP4A,414
|
|
240
|
-
amulet/resource_pack/bedrock/blockshapes/vine.py,sha256=sacMD7Tn3V-bKm3quvWmFDpFHhTEgbZzVWZm0lycu04,1453
|
|
241
|
-
amulet/resource_pack/bedrock/blockshapes/wall.py,sha256=671u3WomuaZuYoKTSF_lVNns3KnSbL5Hyyly-0DF8F0,583
|
|
242
|
-
amulet/resource_pack/bedrock/blockshapes/water.py,sha256=LfyTxVidSlZLq0NPUYCt6tBz85M66jEs8yMzbGhltFg,923
|
|
187
|
+
amulet/resource_pack/abc/resource_pack_manager.py,sha256=zlEF84SAT95JgXQKyyyYFxr4YCpdpNlb_QU2Hs4YmRQ,3103
|
|
243
188
|
amulet/resource_pack/java/__init__.py,sha256=pgdInD46sfEtkhYfzQ0dR1IEyXOUj2b47iPYmVmpvm8,105
|
|
244
189
|
amulet/resource_pack/java/download_resources.py,sha256=zi09C8IPm3edIcn5WGHzO6BE44889hyqx0zhkRzGdC8,7249
|
|
245
190
|
amulet/resource_pack/java/resource_pack.py,sha256=WcGxKrLwzsqbBvyh7by_7RUi5S-XDFwbzvebu0VCmqE,1681
|
|
246
|
-
amulet/resource_pack/java/resource_pack_manager.py,sha256=
|
|
191
|
+
amulet/resource_pack/java/resource_pack_manager.py,sha256=Y1xQftygzY0blRHgAaqREbTabX6_NSgM1MOLNCHoz2g,23191
|
|
247
192
|
amulet/resource_pack/java/java_vanilla_fix/pack.png,sha256=j1Wwi-rvUZD8_sVUiphxbOwVmWmGoCYLDEnH00AMpyc,22749
|
|
248
193
|
amulet/resource_pack/java/java_vanilla_fix/assets/minecraft/textures/block/barrier.png,sha256=bhz4dFbZBy1YpE2J3kf07mI5z-P2i0-PblhV9PXwcjc,651
|
|
249
194
|
amulet/resource_pack/java/java_vanilla_fix/assets/minecraft/textures/block/end_portal.png,sha256=-yEn-M_Jr5Bi2cCMwSiviUJF4aZaun0BSQw1dgkH39g,1265
|
|
@@ -272,6 +217,7 @@ amulet/selection/abstract_selection.py,sha256=yvEiPaH5JcDdUA0VxtbghjYsDzU29XWHAT
|
|
|
272
217
|
amulet/selection/box.py,sha256=dwtnb0nuuJAeTrfd6VwI2UgaLJvbk_GiuCDp9z9QBdU,32349
|
|
273
218
|
amulet/selection/group.py,sha256=hcgE2e43lXJ9NkeS8-Gmh356B-aOgo8eJGEeYJLyMvM,18862
|
|
274
219
|
amulet/utils/__init__.pyi,sha256=uVQKuLJHBxeQXOenIOUO43_07ke9Su5p4kYmfrbzeuw,344
|
|
220
|
+
amulet/utils/cast.py,sha256=1-lZEu29C8uywTqhNqRRbf7EImZA2S3lK-wyCr_C0lA,274
|
|
275
221
|
amulet/utils/comment_json.py,sha256=YRQ5qYXqEHbf-lEGQq8_2V5KwPiC1D-UZUakrrjkx-E,6401
|
|
276
222
|
amulet/utils/format_utils.py,sha256=Y70colA8tULftJ577wnUu3TG4xiYFadZehi_PLIbva0,1225
|
|
277
223
|
amulet/utils/generator.py,sha256=ANi13ZjRraAlcTQUzEBDAQiRXED5E3WAaBMj3h7nY3M,449
|
|
@@ -279,7 +225,7 @@ amulet/utils/matrix.py,sha256=de23bHLG8AnQR9O9AcH7Nl7DIhx6kJCHh4eYT1SjPLM,8078
|
|
|
279
225
|
amulet/utils/numpy.hpp,sha256=14GYfi_HRV1YmQ7b1DWpFrQ3zl11Qlg2-90qCKrXaQ4,1214
|
|
280
226
|
amulet/utils/numpy.pyi,sha256=13fnNDQotruAV8wn7Hgn9e3JdOVWevxTF7VsxNLzc0A,281
|
|
281
227
|
amulet/utils/numpy_helpers.py,sha256=8buyaoQlQYvVAgqg32CF7KBk4_mW2jSvJ2oemY1Kg5I,530
|
|
282
|
-
amulet/utils/shareable_lock.py,sha256=
|
|
228
|
+
amulet/utils/shareable_lock.py,sha256=IJg1MgcWhA9ba01n2mYC9duRGADx3usbXH_haDXyobE,13886
|
|
283
229
|
amulet/utils/task_manager.py,sha256=TIlZJOKateGHDObWxO-ZRU5CpJeoP_7OjVE27jJszb0,7194
|
|
284
230
|
amulet/utils/typed_property.py,sha256=rzXa5bcOaD29WTYqR_ToKuuFv2rfedbUXZnmbX4bX4I,3645
|
|
285
231
|
amulet/utils/weakref.py,sha256=JXhRxS9DiQY9F91PeSRjLB67qXgFDNltWcdB5V4mR_E,2472
|
|
@@ -288,8 +234,8 @@ amulet/utils/call_spec/__init__.py,sha256=ZnDIa945TTt6rW_wS_v8iHFj_tL8yh3a179fnW
|
|
|
288
234
|
amulet/utils/call_spec/_call_spec.py,sha256=0OhKVkEbKyu2e-3nM0wEcob4tO3g7mGJpGVIamQBXZM,6996
|
|
289
235
|
amulet/utils/signal/__init__.py,sha256=MJUOgeaU354_0GX-VZBv6Gb42UqKg-uFPgYd75ilS5c,283
|
|
290
236
|
amulet/utils/signal/_signal.py,sha256=gYV83tJ5qfwjfD9XcxuQVP4wj-9ryR4Qk49K8f3Hbco,7608
|
|
291
|
-
amulet_core-2.
|
|
292
|
-
amulet_core-2.
|
|
293
|
-
amulet_core-2.
|
|
294
|
-
amulet_core-2.
|
|
295
|
-
amulet_core-2.
|
|
237
|
+
amulet_core-2.0a8.dist-info/METADATA,sha256=lAlVK8rGSntsNsbZkSldLgEFOU9mTZzVIEfLh6X50Rw,4572
|
|
238
|
+
amulet_core-2.0a8.dist-info/WHEEL,sha256=tE2EWZPEv-G0fjAlUUz7IGM64246YKD9fpv4HcsDMkk,101
|
|
239
|
+
amulet_core-2.0a8.dist-info/entry_points.txt,sha256=53zFNThTPzI8f9ertsyU2DoUpxdWU8rjOA_Cu4YH5Vk,63
|
|
240
|
+
amulet_core-2.0a8.dist-info/top_level.txt,sha256=3ZqHzNDiIb9kV8TwSeeXxK_9haSrsu631Qe4ndDo0rc,7
|
|
241
|
+
amulet_core-2.0a8.dist-info/RECORD,,
|
amulet/mesh/block/__init__.py
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
from .block_mesh import BlockMesh
|
amulet/mesh/block/block_mesh.py
DELETED
|
@@ -1,369 +0,0 @@
|
|
|
1
|
-
from __future__ import annotations
|
|
2
|
-
from typing import Optional, Any
|
|
3
|
-
from collections.abc import Iterable
|
|
4
|
-
import numpy
|
|
5
|
-
import itertools
|
|
6
|
-
from enum import IntEnum
|
|
7
|
-
|
|
8
|
-
from amulet.mesh.util import rotate_3d
|
|
9
|
-
|
|
10
|
-
FACE_KEYS = {"down", "up", "north", "east", "south", "west", None}
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
def _create_cull_map() -> dict[tuple[int, int], dict[Optional[str], Optional[str]]]:
|
|
14
|
-
cull_remap_ = {}
|
|
15
|
-
roty_map = ["north", "east", "south", "west"]
|
|
16
|
-
for roty in range(-3, 4):
|
|
17
|
-
for rotx in range(-3, 4):
|
|
18
|
-
roty_map_rotated = roty_map[roty:] + roty_map[:roty]
|
|
19
|
-
rotx_map = [roty_map_rotated[0], "down", roty_map_rotated[2], "up"]
|
|
20
|
-
rotx_map_rotated = rotx_map[rotx:] + rotx_map[:rotx]
|
|
21
|
-
roty_remap = dict(zip(roty_map, roty_map_rotated))
|
|
22
|
-
rotx_remap = dict(zip(rotx_map, rotx_map_rotated))
|
|
23
|
-
cull_remap_value: dict[Optional[str], Optional[str]] = {}
|
|
24
|
-
cull_remap_[(roty, rotx)] = cull_remap_value
|
|
25
|
-
for key in FACE_KEYS:
|
|
26
|
-
if key is None:
|
|
27
|
-
cull_remap_value[key] = None
|
|
28
|
-
else:
|
|
29
|
-
roty_value = roty_remap.get(key, key)
|
|
30
|
-
cull_remap_value[key] = rotx_remap.get(roty_value, roty_value)
|
|
31
|
-
return cull_remap_
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
cull_remap_all = _create_cull_map()
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
class Transparency(IntEnum):
|
|
38
|
-
FullOpaque = 0 # the block is a full block with opaque textures
|
|
39
|
-
FullTranslucent = (
|
|
40
|
-
1 # the block is a full block with transparent/translucent textures
|
|
41
|
-
)
|
|
42
|
-
Partial = 2 # the block is not a full block
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
class BlockMesh:
|
|
46
|
-
"""Class for storing model data"""
|
|
47
|
-
|
|
48
|
-
@classmethod
|
|
49
|
-
def merge(cls, models: Iterable[BlockMesh]) -> BlockMesh:
|
|
50
|
-
textures_src: list[str] = []
|
|
51
|
-
texture_count = 0
|
|
52
|
-
vert_count: dict[Optional[str], int] = {side: 0 for side in FACE_KEYS}
|
|
53
|
-
verts_src: dict[Optional[str], list[numpy.ndarray]] = {
|
|
54
|
-
side: [] for side in FACE_KEYS
|
|
55
|
-
}
|
|
56
|
-
tverts_src: dict[Optional[str], list[numpy.ndarray]] = {
|
|
57
|
-
side: [] for side in FACE_KEYS
|
|
58
|
-
}
|
|
59
|
-
tint_verts_src: dict[Optional[str], list[numpy.ndarray]] = {
|
|
60
|
-
side: [] for side in FACE_KEYS
|
|
61
|
-
}
|
|
62
|
-
faces_src: dict[Optional[str], list[numpy.ndarray]] = {
|
|
63
|
-
side: [] for side in FACE_KEYS
|
|
64
|
-
}
|
|
65
|
-
texture_indexes_src: dict[Optional[str], list[numpy.ndarray]] = {
|
|
66
|
-
side: [] for side in FACE_KEYS
|
|
67
|
-
}
|
|
68
|
-
transparent: Transparency = Transparency.Partial
|
|
69
|
-
|
|
70
|
-
cull_dir: Optional[str]
|
|
71
|
-
for temp_model in models:
|
|
72
|
-
for cull_dir in temp_model.faces.keys():
|
|
73
|
-
verts_src[cull_dir].append(temp_model.verts[cull_dir])
|
|
74
|
-
tverts_src[cull_dir].append(temp_model.texture_coords[cull_dir])
|
|
75
|
-
tint_verts_src[cull_dir].append(temp_model.tint_verts[cull_dir])
|
|
76
|
-
face_table = temp_model.faces[cull_dir].copy()
|
|
77
|
-
texture_index = temp_model.texture_index[cull_dir].copy()
|
|
78
|
-
face_table += vert_count[cull_dir]
|
|
79
|
-
texture_index += texture_count
|
|
80
|
-
faces_src[cull_dir].append(face_table)
|
|
81
|
-
texture_indexes_src[cull_dir].append(texture_index)
|
|
82
|
-
|
|
83
|
-
vert_count[cull_dir] += int(
|
|
84
|
-
temp_model.verts[cull_dir].shape[0] / temp_model.face_mode
|
|
85
|
-
)
|
|
86
|
-
|
|
87
|
-
textures_src += temp_model.textures
|
|
88
|
-
texture_count += len(temp_model.textures)
|
|
89
|
-
transparent = min(transparent, temp_model.is_transparent)
|
|
90
|
-
|
|
91
|
-
if textures_src:
|
|
92
|
-
textures_, texture_index_map = numpy.unique(
|
|
93
|
-
textures_src, return_inverse=True, axis=0
|
|
94
|
-
)
|
|
95
|
-
textures = tuple(textures_)
|
|
96
|
-
texture_index_map = texture_index_map.astype(numpy.uint32)
|
|
97
|
-
else:
|
|
98
|
-
textures = ()
|
|
99
|
-
texture_index_map = numpy.array([], dtype=numpy.uint8)
|
|
100
|
-
|
|
101
|
-
verts: dict[Optional[str], numpy.ndarray] = {}
|
|
102
|
-
tverts: dict[Optional[str], numpy.ndarray] = {}
|
|
103
|
-
tint_verts: dict[Optional[str], numpy.ndarray] = {}
|
|
104
|
-
faces: dict[Optional[str], numpy.ndarray] = {}
|
|
105
|
-
texture_indexes: dict[Optional[str], numpy.ndarray] = {}
|
|
106
|
-
|
|
107
|
-
for cull_dir in FACE_KEYS:
|
|
108
|
-
if faces_src[cull_dir]:
|
|
109
|
-
faces[cull_dir] = numpy.concatenate(faces_src[cull_dir], axis=None)
|
|
110
|
-
texture_indexes[cull_dir] = texture_index_map[
|
|
111
|
-
numpy.concatenate(texture_indexes_src[cull_dir], axis=None)
|
|
112
|
-
]
|
|
113
|
-
if verts_src[cull_dir]:
|
|
114
|
-
verts[cull_dir] = numpy.concatenate(verts_src[cull_dir], axis=None)
|
|
115
|
-
tverts[cull_dir] = numpy.concatenate(
|
|
116
|
-
tverts_src[cull_dir], axis=None
|
|
117
|
-
)
|
|
118
|
-
tint_verts[cull_dir] = numpy.concatenate(
|
|
119
|
-
tint_verts_src[cull_dir], axis=None
|
|
120
|
-
)
|
|
121
|
-
else:
|
|
122
|
-
verts[cull_dir] = numpy.zeros((0, 3), float)
|
|
123
|
-
tverts[cull_dir] = numpy.zeros((0, 2), float)
|
|
124
|
-
tint_verts[cull_dir] = numpy.zeros(0, float)
|
|
125
|
-
|
|
126
|
-
return cls(
|
|
127
|
-
3, verts, tverts, tint_verts, faces, texture_indexes, textures, transparent
|
|
128
|
-
)
|
|
129
|
-
|
|
130
|
-
def __init__(
|
|
131
|
-
self,
|
|
132
|
-
face_width: int,
|
|
133
|
-
verts: dict[Optional[str], numpy.ndarray],
|
|
134
|
-
texture_coords: dict[Optional[str], numpy.ndarray],
|
|
135
|
-
tint_verts: dict[Optional[str], numpy.ndarray],
|
|
136
|
-
# normals: dict[Optional[str], numpy.ndarray],
|
|
137
|
-
faces: dict[Optional[str], numpy.ndarray],
|
|
138
|
-
texture_index: dict[Optional[str], numpy.ndarray],
|
|
139
|
-
textures: tuple[str, ...],
|
|
140
|
-
transparency: Transparency,
|
|
141
|
-
):
|
|
142
|
-
"""
|
|
143
|
-
|
|
144
|
-
:param face_width: the number of vertices per face (3 or 4)
|
|
145
|
-
:param verts: a numpy float array containing the vert data. One line per vertex
|
|
146
|
-
:param texture_coords: a numpy float array containing the texture coordinate data. One line per vertex
|
|
147
|
-
:param tint_verts: a numpy bool array if the vertex should have a tint applied to it. One line per vertex
|
|
148
|
-
:param faces: a dictionary of numpy int arrays (stored under cull direction) containing
|
|
149
|
-
the vertex indexes (<face_width> columns) and
|
|
150
|
-
texture index (1 column)
|
|
151
|
-
:param texture_index:
|
|
152
|
-
:param textures:
|
|
153
|
-
:param transparency: is the model a full non-transparent block
|
|
154
|
-
|
|
155
|
-
Workflow:
|
|
156
|
-
find the directions a block is not being culled in
|
|
157
|
-
look them up in the face table
|
|
158
|
-
the face table will tell you which vertices are needed for the face
|
|
159
|
-
"""
|
|
160
|
-
assert isinstance(verts, dict) and all(
|
|
161
|
-
key in FACE_KEYS
|
|
162
|
-
and isinstance(val, numpy.ndarray)
|
|
163
|
-
and val.ndim == 1
|
|
164
|
-
and val.shape[0] % 3 == 0
|
|
165
|
-
for key, val in verts.items()
|
|
166
|
-
), "The format for verts is incorrect"
|
|
167
|
-
|
|
168
|
-
assert isinstance(texture_coords, dict) and all(
|
|
169
|
-
key in FACE_KEYS
|
|
170
|
-
and isinstance(val, numpy.ndarray)
|
|
171
|
-
and val.ndim == 1
|
|
172
|
-
and val.shape[0] % 2 == 0
|
|
173
|
-
for key, val in texture_coords.items()
|
|
174
|
-
), "The format for texture coords is incorrect"
|
|
175
|
-
|
|
176
|
-
assert isinstance(tint_verts, dict) and all(
|
|
177
|
-
key in FACE_KEYS
|
|
178
|
-
and isinstance(val, numpy.ndarray)
|
|
179
|
-
and val.ndim == 1
|
|
180
|
-
and val.shape[0] % 3 == 0
|
|
181
|
-
for key, val in tint_verts.items()
|
|
182
|
-
), "The format of tint verts is incorrect"
|
|
183
|
-
|
|
184
|
-
assert isinstance(faces, dict) and all(
|
|
185
|
-
key in FACE_KEYS
|
|
186
|
-
and isinstance(val, numpy.ndarray)
|
|
187
|
-
and numpy.issubdtype(val.dtype, numpy.unsignedinteger)
|
|
188
|
-
and val.ndim == 1
|
|
189
|
-
and val.shape[0] % face_width == 0
|
|
190
|
-
for key, val in faces.items()
|
|
191
|
-
), "The format of faces is incorrect"
|
|
192
|
-
|
|
193
|
-
assert isinstance(texture_index, dict) and all(
|
|
194
|
-
key in FACE_KEYS
|
|
195
|
-
and isinstance(val, numpy.ndarray)
|
|
196
|
-
and numpy.issubdtype(val.dtype, numpy.unsignedinteger)
|
|
197
|
-
and val.ndim == 1
|
|
198
|
-
and val.shape[0] == faces[key].shape[0] / face_width
|
|
199
|
-
for key, val in texture_index.items()
|
|
200
|
-
), "The format of texture index is incorrect"
|
|
201
|
-
|
|
202
|
-
assert isinstance(textures, Iterable) and all(
|
|
203
|
-
isinstance(texture, str) for texture in textures
|
|
204
|
-
), "The format of the textures is incorrect"
|
|
205
|
-
|
|
206
|
-
self._face_mode = face_width
|
|
207
|
-
self._verts = verts
|
|
208
|
-
self._texture_coords = texture_coords
|
|
209
|
-
self._tint_verts = tint_verts
|
|
210
|
-
self._vert_tables: Optional[dict[Optional[str], numpy.ndarray]] = None
|
|
211
|
-
|
|
212
|
-
self._faces = faces
|
|
213
|
-
self._texture_index = texture_index
|
|
214
|
-
self._textures = tuple(textures)
|
|
215
|
-
self._transparency = transparency
|
|
216
|
-
|
|
217
|
-
for array in itertools.chain(
|
|
218
|
-
self._verts.values(),
|
|
219
|
-
self._texture_coords.values(),
|
|
220
|
-
self._faces.values(),
|
|
221
|
-
self._texture_index.values(),
|
|
222
|
-
):
|
|
223
|
-
array.setflags(write=False)
|
|
224
|
-
|
|
225
|
-
@property
|
|
226
|
-
def face_mode(self) -> int:
|
|
227
|
-
"""The number of vertices per face"""
|
|
228
|
-
return self._face_mode
|
|
229
|
-
|
|
230
|
-
@property
|
|
231
|
-
def vert_tables(self) -> dict[Optional[str], numpy.ndarray]:
|
|
232
|
-
"""A dictionary of cull dir -> the flat vert table containing vertices, texture coords and (in the future) normals"""
|
|
233
|
-
if self._vert_tables is None:
|
|
234
|
-
self._vert_tables = {
|
|
235
|
-
key: numpy.hstack(
|
|
236
|
-
(
|
|
237
|
-
self._verts[key].reshape(-1, self._face_mode),
|
|
238
|
-
self._texture_coords[key].reshape(-1, 2),
|
|
239
|
-
# TODO: add in face normals
|
|
240
|
-
)
|
|
241
|
-
).ravel()
|
|
242
|
-
for key in self._verts.keys()
|
|
243
|
-
}
|
|
244
|
-
for array in self._vert_tables.values():
|
|
245
|
-
array.setflags(write=False)
|
|
246
|
-
return self._vert_tables
|
|
247
|
-
|
|
248
|
-
@property
|
|
249
|
-
def verts(self) -> dict[Optional[str], numpy.ndarray]:
|
|
250
|
-
"""A dictionary mapping face cull direction to the vertex table for that direction.
|
|
251
|
-
The vertex table is a flat numpy array who's length is a multiple of 3.
|
|
252
|
-
x,y,z coordinates."""
|
|
253
|
-
return self._verts
|
|
254
|
-
|
|
255
|
-
@property
|
|
256
|
-
def texture_coords(self) -> dict[Optional[str], numpy.ndarray]:
|
|
257
|
-
"""A dictionary mapping face cull direction to the texture coords table for that direction.
|
|
258
|
-
The texture coords table is a flat numpy array who's length is a multiple of 2.
|
|
259
|
-
tx, ty"""
|
|
260
|
-
return self._texture_coords
|
|
261
|
-
|
|
262
|
-
@property
|
|
263
|
-
def tint_verts(self) -> dict[Optional[str], numpy.ndarray]:
|
|
264
|
-
"""A dictionary mapping face cull direction to the tint table for that direction.
|
|
265
|
-
The tint table is a flat numpy bool array with three values per vertex.
|
|
266
|
-
"""
|
|
267
|
-
return self._tint_verts
|
|
268
|
-
|
|
269
|
-
@property
|
|
270
|
-
def faces(self) -> dict[Optional[str], numpy.ndarray]:
|
|
271
|
-
"""A dictionary mapping face cull direction to the face table for that direction.
|
|
272
|
-
The face table is a flat numpy array of multiple 3 or 4 depending on face_mode.
|
|
273
|
-
First 3 or 4 columns index into the verts table.
|
|
274
|
-
Last column indexes into textures."""
|
|
275
|
-
return self._faces
|
|
276
|
-
|
|
277
|
-
@property
|
|
278
|
-
def texture_index(self) -> dict[Optional[str], numpy.ndarray]:
|
|
279
|
-
"""A dictionary mapping face cull direction to the face table for that direction.
|
|
280
|
-
The face table is a flat numpy array of multiple 2 indexing into textures."""
|
|
281
|
-
return self._texture_index
|
|
282
|
-
|
|
283
|
-
@property
|
|
284
|
-
def textures(self) -> tuple[str, ...]:
|
|
285
|
-
"""A list of all the texture paths."""
|
|
286
|
-
return self._textures
|
|
287
|
-
|
|
288
|
-
@property
|
|
289
|
-
def is_opaque(self) -> bool:
|
|
290
|
-
"""
|
|
291
|
-
If the model covers all surrounding blocks.
|
|
292
|
-
Also takes into account texture transparency.
|
|
293
|
-
"""
|
|
294
|
-
return not self._transparency
|
|
295
|
-
|
|
296
|
-
@property
|
|
297
|
-
def is_transparent(self) -> Transparency:
|
|
298
|
-
"""
|
|
299
|
-
The transparency mode of the block
|
|
300
|
-
0 - the block is a full block with opaque textures
|
|
301
|
-
1 - the block is a full block with transparent/translucent textures
|
|
302
|
-
2 - the block is not a full block
|
|
303
|
-
"""
|
|
304
|
-
return self._transparency
|
|
305
|
-
|
|
306
|
-
def rotate(self, rotx: int, roty: int) -> BlockMesh:
|
|
307
|
-
"""Create a rotated version of this block model. Culling directions are also rotated.
|
|
308
|
-
rotx and roty must be ints in the range -3 to 3 inclusive."""
|
|
309
|
-
if rotx or roty and (roty, rotx) in cull_remap_all:
|
|
310
|
-
cull_remap = cull_remap_all[(roty, rotx)]
|
|
311
|
-
return BlockMesh(
|
|
312
|
-
self.face_mode,
|
|
313
|
-
{
|
|
314
|
-
cull_remap[cull_dir]: rotate_3d(
|
|
315
|
-
rotate_3d(
|
|
316
|
-
self.verts[cull_dir].reshape((-1, self.face_mode)),
|
|
317
|
-
rotx * 90,
|
|
318
|
-
0,
|
|
319
|
-
0,
|
|
320
|
-
0.5,
|
|
321
|
-
0.5,
|
|
322
|
-
0.5,
|
|
323
|
-
),
|
|
324
|
-
0,
|
|
325
|
-
roty * 90,
|
|
326
|
-
0,
|
|
327
|
-
0.5,
|
|
328
|
-
0.5,
|
|
329
|
-
0.5,
|
|
330
|
-
).ravel()
|
|
331
|
-
for cull_dir in self.verts
|
|
332
|
-
},
|
|
333
|
-
{
|
|
334
|
-
cull_remap[cull_dir]: self.texture_coords[cull_dir]
|
|
335
|
-
for cull_dir in self.texture_coords
|
|
336
|
-
},
|
|
337
|
-
{
|
|
338
|
-
cull_remap[cull_dir]: self.tint_verts[cull_dir]
|
|
339
|
-
for cull_dir in self.tint_verts
|
|
340
|
-
},
|
|
341
|
-
{cull_remap[cull_dir]: self.faces[cull_dir] for cull_dir in self.faces},
|
|
342
|
-
{
|
|
343
|
-
cull_remap[cull_dir]: self.texture_index[cull_dir]
|
|
344
|
-
for cull_dir in self.texture_index
|
|
345
|
-
},
|
|
346
|
-
self.textures,
|
|
347
|
-
self.is_transparent,
|
|
348
|
-
)
|
|
349
|
-
return self
|
|
350
|
-
|
|
351
|
-
def __eq__(self, other: Any) -> bool:
|
|
352
|
-
if not isinstance(other, BlockMesh):
|
|
353
|
-
return NotImplemented
|
|
354
|
-
return (
|
|
355
|
-
self.face_mode == other.face_mode
|
|
356
|
-
and all(
|
|
357
|
-
obj1.keys() == obj2.keys()
|
|
358
|
-
and all(numpy.array_equal(obj1[key], obj2[key]) for key in obj1.keys())
|
|
359
|
-
for obj1, obj2 in (
|
|
360
|
-
(self.verts, other.verts),
|
|
361
|
-
(self.texture_coords, other.texture_coords),
|
|
362
|
-
(self.tint_verts, other.tint_verts),
|
|
363
|
-
(self.faces, other.faces),
|
|
364
|
-
(self.texture_index, other.texture_index),
|
|
365
|
-
)
|
|
366
|
-
)
|
|
367
|
-
and self.textures == other.textures
|
|
368
|
-
and self.is_transparent == other.is_transparent
|
|
369
|
-
)
|