stewbeet 2.1.0__tar.gz → 2.1.2__tar.gz

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 stewbeet might be problematic. Click here for more details.

Files changed (221) hide show
  1. {stewbeet-2.1.0 → stewbeet-2.1.2}/PKG-INFO +1 -1
  2. {stewbeet-2.1.0 → stewbeet-2.1.2}/pyproject.toml +1 -1
  3. stewbeet-2.1.2/stewbeet/contrib/simplenergy/cables.py +222 -0
  4. stewbeet-2.1.2/stewbeet/contrib/simplenergy/item_cable_models/cable.bbmodel +1 -0
  5. stewbeet-2.1.2/stewbeet/contrib/simplenergy/item_cable_models/cable_base.json +755 -0
  6. {stewbeet-2.1.0 → stewbeet-2.1.2}/stewbeet/core/constants.py +101 -101
  7. {stewbeet-2.1.0 → stewbeet-2.1.2}/stewbeet/core/definitions_helper/materials.py +61 -48
  8. stewbeet-2.1.2/stewbeet/plugins/datapack/sorters/__init__.py +31 -0
  9. stewbeet-2.1.2/stewbeet/plugins/datapack/sorters/constants.py +63 -0
  10. stewbeet-2.1.2/stewbeet/plugins/datapack/sorters/extend_datapack.py +19 -0
  11. stewbeet-2.1.2/stewbeet/plugins/datapack/sorters/match.py +33 -0
  12. stewbeet-2.1.2/stewbeet/plugins/datapack/sorters/quick_sort.py +102 -0
  13. stewbeet-2.1.2/stewbeet/plugins/datapack/sorters/selection_sort.py +124 -0
  14. {stewbeet-2.1.0 → stewbeet-2.1.2}/stewbeet/plugins/ingame_manual/book_components.py +11 -4
  15. {stewbeet-2.1.0 → stewbeet-2.1.2}/stewbeet/plugins/ingame_manual/craft_content.py +19 -8
  16. {stewbeet-2.1.0 → stewbeet-2.1.2}/stewbeet/plugins/ingame_manual/iso_renders.py +15 -11
  17. {stewbeet-2.1.0 → stewbeet-2.1.2}/stewbeet/plugins/ingame_manual/page_font.py +31 -10
  18. {stewbeet-2.1.0 → stewbeet-2.1.2}/stewbeet/plugins/initialize/__init__.py +3 -0
  19. {stewbeet-2.1.0 → stewbeet-2.1.2}/stewbeet/plugins/resource_pack/item_models/object.py +22 -9
  20. stewbeet-2.1.0/stewbeet/contrib/simplenergy/cables.py +0 -103
  21. {stewbeet-2.1.0 → stewbeet-2.1.2}/.gitignore +0 -0
  22. {stewbeet-2.1.0 → stewbeet-2.1.2}/LICENSE +0 -0
  23. {stewbeet-2.1.0 → stewbeet-2.1.2}/README.md +0 -0
  24. {stewbeet-2.1.0 → stewbeet-2.1.2}/stewbeet/__init__.py +0 -0
  25. {stewbeet-2.1.0 → stewbeet-2.1.2}/stewbeet/__main__.py +0 -0
  26. {stewbeet-2.1.0 → stewbeet-2.1.2}/stewbeet/all.py +0 -0
  27. {stewbeet-2.1.0 → stewbeet-2.1.2}/stewbeet/cli.py +0 -0
  28. {stewbeet-2.1.0 → stewbeet-2.1.2}/stewbeet/continuous_delivery/__init__.py +0 -0
  29. {stewbeet-2.1.0 → stewbeet-2.1.2}/stewbeet/continuous_delivery/cd_utils.py +0 -0
  30. {stewbeet-2.1.0 → stewbeet-2.1.2}/stewbeet/continuous_delivery/github.py +0 -0
  31. {stewbeet-2.1.0 → stewbeet-2.1.2}/stewbeet/continuous_delivery/modrinth.py +0 -0
  32. {stewbeet-2.1.0 → stewbeet-2.1.2}/stewbeet/continuous_delivery/pmc.py +0 -0
  33. {stewbeet-2.1.0 → stewbeet-2.1.2}/stewbeet/continuous_delivery/smithed.py +0 -0
  34. {stewbeet-2.1.0 → stewbeet-2.1.2}/stewbeet/contrib/simplenergy/__init__.py +0 -0
  35. {stewbeet-2.1.0 → stewbeet-2.1.2}/stewbeet/contrib/simplenergy/balancing.py +0 -0
  36. {stewbeet-2.1.0 → stewbeet-2.1.2}/stewbeet/contrib/simplenergy/batteries.py +0 -0
  37. {stewbeet-2.1.0/stewbeet/contrib/simplenergy/cable_models → stewbeet-2.1.2/stewbeet/contrib/simplenergy/energy_cable_models}/variant.json +0 -0
  38. {stewbeet-2.1.0/stewbeet/contrib/simplenergy/cable_models → stewbeet-2.1.2/stewbeet/contrib/simplenergy/energy_cable_models}/variant_d.json +0 -0
  39. {stewbeet-2.1.0/stewbeet/contrib/simplenergy/cable_models → stewbeet-2.1.2/stewbeet/contrib/simplenergy/energy_cable_models}/variant_de.json +0 -0
  40. {stewbeet-2.1.0/stewbeet/contrib/simplenergy/cable_models → stewbeet-2.1.2/stewbeet/contrib/simplenergy/energy_cable_models}/variant_dew.json +0 -0
  41. {stewbeet-2.1.0/stewbeet/contrib/simplenergy/cable_models → stewbeet-2.1.2/stewbeet/contrib/simplenergy/energy_cable_models}/variant_dn.json +0 -0
  42. {stewbeet-2.1.0/stewbeet/contrib/simplenergy/cable_models → stewbeet-2.1.2/stewbeet/contrib/simplenergy/energy_cable_models}/variant_dne.json +0 -0
  43. {stewbeet-2.1.0/stewbeet/contrib/simplenergy/cable_models → stewbeet-2.1.2/stewbeet/contrib/simplenergy/energy_cable_models}/variant_dnew.json +0 -0
  44. {stewbeet-2.1.0/stewbeet/contrib/simplenergy/cable_models → stewbeet-2.1.2/stewbeet/contrib/simplenergy/energy_cable_models}/variant_dns.json +0 -0
  45. {stewbeet-2.1.0/stewbeet/contrib/simplenergy/cable_models → stewbeet-2.1.2/stewbeet/contrib/simplenergy/energy_cable_models}/variant_dnse.json +0 -0
  46. {stewbeet-2.1.0/stewbeet/contrib/simplenergy/cable_models → stewbeet-2.1.2/stewbeet/contrib/simplenergy/energy_cable_models}/variant_dnsew.json +0 -0
  47. {stewbeet-2.1.0/stewbeet/contrib/simplenergy/cable_models → stewbeet-2.1.2/stewbeet/contrib/simplenergy/energy_cable_models}/variant_dnsw.json +0 -0
  48. {stewbeet-2.1.0/stewbeet/contrib/simplenergy/cable_models → stewbeet-2.1.2/stewbeet/contrib/simplenergy/energy_cable_models}/variant_dnw.json +0 -0
  49. {stewbeet-2.1.0/stewbeet/contrib/simplenergy/cable_models → stewbeet-2.1.2/stewbeet/contrib/simplenergy/energy_cable_models}/variant_ds.json +0 -0
  50. {stewbeet-2.1.0/stewbeet/contrib/simplenergy/cable_models → stewbeet-2.1.2/stewbeet/contrib/simplenergy/energy_cable_models}/variant_dse.json +0 -0
  51. {stewbeet-2.1.0/stewbeet/contrib/simplenergy/cable_models → stewbeet-2.1.2/stewbeet/contrib/simplenergy/energy_cable_models}/variant_dsew.json +0 -0
  52. {stewbeet-2.1.0/stewbeet/contrib/simplenergy/cable_models → stewbeet-2.1.2/stewbeet/contrib/simplenergy/energy_cable_models}/variant_dsw.json +0 -0
  53. {stewbeet-2.1.0/stewbeet/contrib/simplenergy/cable_models → stewbeet-2.1.2/stewbeet/contrib/simplenergy/energy_cable_models}/variant_dw.json +0 -0
  54. {stewbeet-2.1.0/stewbeet/contrib/simplenergy/cable_models → stewbeet-2.1.2/stewbeet/contrib/simplenergy/energy_cable_models}/variant_e.json +0 -0
  55. {stewbeet-2.1.0/stewbeet/contrib/simplenergy/cable_models → stewbeet-2.1.2/stewbeet/contrib/simplenergy/energy_cable_models}/variant_ew.json +0 -0
  56. {stewbeet-2.1.0/stewbeet/contrib/simplenergy/cable_models → stewbeet-2.1.2/stewbeet/contrib/simplenergy/energy_cable_models}/variant_n.json +0 -0
  57. {stewbeet-2.1.0/stewbeet/contrib/simplenergy/cable_models → stewbeet-2.1.2/stewbeet/contrib/simplenergy/energy_cable_models}/variant_ne.json +0 -0
  58. {stewbeet-2.1.0/stewbeet/contrib/simplenergy/cable_models → stewbeet-2.1.2/stewbeet/contrib/simplenergy/energy_cable_models}/variant_new.json +0 -0
  59. {stewbeet-2.1.0/stewbeet/contrib/simplenergy/cable_models → stewbeet-2.1.2/stewbeet/contrib/simplenergy/energy_cable_models}/variant_ns.json +0 -0
  60. {stewbeet-2.1.0/stewbeet/contrib/simplenergy/cable_models → stewbeet-2.1.2/stewbeet/contrib/simplenergy/energy_cable_models}/variant_nse.json +0 -0
  61. {stewbeet-2.1.0/stewbeet/contrib/simplenergy/cable_models → stewbeet-2.1.2/stewbeet/contrib/simplenergy/energy_cable_models}/variant_nsew.json +0 -0
  62. {stewbeet-2.1.0/stewbeet/contrib/simplenergy/cable_models → stewbeet-2.1.2/stewbeet/contrib/simplenergy/energy_cable_models}/variant_nsw.json +0 -0
  63. {stewbeet-2.1.0/stewbeet/contrib/simplenergy/cable_models → stewbeet-2.1.2/stewbeet/contrib/simplenergy/energy_cable_models}/variant_nw.json +0 -0
  64. {stewbeet-2.1.0/stewbeet/contrib/simplenergy/cable_models → stewbeet-2.1.2/stewbeet/contrib/simplenergy/energy_cable_models}/variant_s.json +0 -0
  65. {stewbeet-2.1.0/stewbeet/contrib/simplenergy/cable_models → stewbeet-2.1.2/stewbeet/contrib/simplenergy/energy_cable_models}/variant_se.json +0 -0
  66. {stewbeet-2.1.0/stewbeet/contrib/simplenergy/cable_models → stewbeet-2.1.2/stewbeet/contrib/simplenergy/energy_cable_models}/variant_sew.json +0 -0
  67. {stewbeet-2.1.0/stewbeet/contrib/simplenergy/cable_models → stewbeet-2.1.2/stewbeet/contrib/simplenergy/energy_cable_models}/variant_sw.json +0 -0
  68. {stewbeet-2.1.0/stewbeet/contrib/simplenergy/cable_models → stewbeet-2.1.2/stewbeet/contrib/simplenergy/energy_cable_models}/variant_u.json +0 -0
  69. {stewbeet-2.1.0/stewbeet/contrib/simplenergy/cable_models → stewbeet-2.1.2/stewbeet/contrib/simplenergy/energy_cable_models}/variant_ud.json +0 -0
  70. {stewbeet-2.1.0/stewbeet/contrib/simplenergy/cable_models → stewbeet-2.1.2/stewbeet/contrib/simplenergy/energy_cable_models}/variant_ude.json +0 -0
  71. {stewbeet-2.1.0/stewbeet/contrib/simplenergy/cable_models → stewbeet-2.1.2/stewbeet/contrib/simplenergy/energy_cable_models}/variant_udew.json +0 -0
  72. {stewbeet-2.1.0/stewbeet/contrib/simplenergy/cable_models → stewbeet-2.1.2/stewbeet/contrib/simplenergy/energy_cable_models}/variant_udn.json +0 -0
  73. {stewbeet-2.1.0/stewbeet/contrib/simplenergy/cable_models → stewbeet-2.1.2/stewbeet/contrib/simplenergy/energy_cable_models}/variant_udne.json +0 -0
  74. {stewbeet-2.1.0/stewbeet/contrib/simplenergy/cable_models → stewbeet-2.1.2/stewbeet/contrib/simplenergy/energy_cable_models}/variant_udnew.json +0 -0
  75. {stewbeet-2.1.0/stewbeet/contrib/simplenergy/cable_models → stewbeet-2.1.2/stewbeet/contrib/simplenergy/energy_cable_models}/variant_udns.json +0 -0
  76. {stewbeet-2.1.0/stewbeet/contrib/simplenergy/cable_models → stewbeet-2.1.2/stewbeet/contrib/simplenergy/energy_cable_models}/variant_udnse.json +0 -0
  77. {stewbeet-2.1.0/stewbeet/contrib/simplenergy/cable_models → stewbeet-2.1.2/stewbeet/contrib/simplenergy/energy_cable_models}/variant_udnsew.json +0 -0
  78. {stewbeet-2.1.0/stewbeet/contrib/simplenergy/cable_models → stewbeet-2.1.2/stewbeet/contrib/simplenergy/energy_cable_models}/variant_udnsw.json +0 -0
  79. {stewbeet-2.1.0/stewbeet/contrib/simplenergy/cable_models → stewbeet-2.1.2/stewbeet/contrib/simplenergy/energy_cable_models}/variant_udnw.json +0 -0
  80. {stewbeet-2.1.0/stewbeet/contrib/simplenergy/cable_models → stewbeet-2.1.2/stewbeet/contrib/simplenergy/energy_cable_models}/variant_uds.json +0 -0
  81. {stewbeet-2.1.0/stewbeet/contrib/simplenergy/cable_models → stewbeet-2.1.2/stewbeet/contrib/simplenergy/energy_cable_models}/variant_udse.json +0 -0
  82. {stewbeet-2.1.0/stewbeet/contrib/simplenergy/cable_models → stewbeet-2.1.2/stewbeet/contrib/simplenergy/energy_cable_models}/variant_udsew.json +0 -0
  83. {stewbeet-2.1.0/stewbeet/contrib/simplenergy/cable_models → stewbeet-2.1.2/stewbeet/contrib/simplenergy/energy_cable_models}/variant_udsw.json +0 -0
  84. {stewbeet-2.1.0/stewbeet/contrib/simplenergy/cable_models → stewbeet-2.1.2/stewbeet/contrib/simplenergy/energy_cable_models}/variant_udw.json +0 -0
  85. {stewbeet-2.1.0/stewbeet/contrib/simplenergy/cable_models → stewbeet-2.1.2/stewbeet/contrib/simplenergy/energy_cable_models}/variant_ue.json +0 -0
  86. {stewbeet-2.1.0/stewbeet/contrib/simplenergy/cable_models → stewbeet-2.1.2/stewbeet/contrib/simplenergy/energy_cable_models}/variant_uew.json +0 -0
  87. {stewbeet-2.1.0/stewbeet/contrib/simplenergy/cable_models → stewbeet-2.1.2/stewbeet/contrib/simplenergy/energy_cable_models}/variant_un.json +0 -0
  88. {stewbeet-2.1.0/stewbeet/contrib/simplenergy/cable_models → stewbeet-2.1.2/stewbeet/contrib/simplenergy/energy_cable_models}/variant_une.json +0 -0
  89. {stewbeet-2.1.0/stewbeet/contrib/simplenergy/cable_models → stewbeet-2.1.2/stewbeet/contrib/simplenergy/energy_cable_models}/variant_unew.json +0 -0
  90. {stewbeet-2.1.0/stewbeet/contrib/simplenergy/cable_models → stewbeet-2.1.2/stewbeet/contrib/simplenergy/energy_cable_models}/variant_uns.json +0 -0
  91. {stewbeet-2.1.0/stewbeet/contrib/simplenergy/cable_models → stewbeet-2.1.2/stewbeet/contrib/simplenergy/energy_cable_models}/variant_unse.json +0 -0
  92. {stewbeet-2.1.0/stewbeet/contrib/simplenergy/cable_models → stewbeet-2.1.2/stewbeet/contrib/simplenergy/energy_cable_models}/variant_unsew.json +0 -0
  93. {stewbeet-2.1.0/stewbeet/contrib/simplenergy/cable_models → stewbeet-2.1.2/stewbeet/contrib/simplenergy/energy_cable_models}/variant_unsw.json +0 -0
  94. {stewbeet-2.1.0/stewbeet/contrib/simplenergy/cable_models → stewbeet-2.1.2/stewbeet/contrib/simplenergy/energy_cable_models}/variant_unw.json +0 -0
  95. {stewbeet-2.1.0/stewbeet/contrib/simplenergy/cable_models → stewbeet-2.1.2/stewbeet/contrib/simplenergy/energy_cable_models}/variant_us.json +0 -0
  96. {stewbeet-2.1.0/stewbeet/contrib/simplenergy/cable_models → stewbeet-2.1.2/stewbeet/contrib/simplenergy/energy_cable_models}/variant_use.json +0 -0
  97. {stewbeet-2.1.0/stewbeet/contrib/simplenergy/cable_models → stewbeet-2.1.2/stewbeet/contrib/simplenergy/energy_cable_models}/variant_usew.json +0 -0
  98. {stewbeet-2.1.0/stewbeet/contrib/simplenergy/cable_models → stewbeet-2.1.2/stewbeet/contrib/simplenergy/energy_cable_models}/variant_usw.json +0 -0
  99. {stewbeet-2.1.0/stewbeet/contrib/simplenergy/cable_models → stewbeet-2.1.2/stewbeet/contrib/simplenergy/energy_cable_models}/variant_uw.json +0 -0
  100. {stewbeet-2.1.0/stewbeet/contrib/simplenergy/cable_models → stewbeet-2.1.2/stewbeet/contrib/simplenergy/energy_cable_models}/variant_w.json +0 -0
  101. {stewbeet-2.1.0 → stewbeet-2.1.2}/stewbeet/contrib/simplenergy/energy_lib_calls.py +0 -0
  102. {stewbeet-2.1.0 → stewbeet-2.1.2}/stewbeet/contrib/simplenergy/gui.py +0 -0
  103. {stewbeet-2.1.0 → stewbeet-2.1.2}/stewbeet/contrib/simplenergy/wrench.py +0 -0
  104. {stewbeet-2.1.0 → stewbeet-2.1.2}/stewbeet/core/__init__.py +0 -0
  105. {stewbeet-2.1.0 → stewbeet-2.1.2}/stewbeet/core/__memory__.py +0 -0
  106. {stewbeet-2.1.0 → stewbeet-2.1.2}/stewbeet/core/definitions_helper/__init__.py +0 -0
  107. {stewbeet-2.1.0 → stewbeet-2.1.2}/stewbeet/core/definitions_helper/completion.py +0 -0
  108. {stewbeet-2.1.0 → stewbeet-2.1.2}/stewbeet/core/definitions_helper/equipments.py +0 -0
  109. {stewbeet-2.1.0 → stewbeet-2.1.2}/stewbeet/core/definitions_helper/records.py +0 -0
  110. {stewbeet-2.1.0 → stewbeet-2.1.2}/stewbeet/core/definitions_helper/simplenergy.py +0 -0
  111. {stewbeet-2.1.0 → stewbeet-2.1.2}/stewbeet/core/definitions_helper/smart_ore_generation.py +0 -0
  112. {stewbeet-2.1.0 → stewbeet-2.1.2}/stewbeet/core/definitions_helper/text.py +0 -0
  113. {stewbeet-2.1.0 → stewbeet-2.1.2}/stewbeet/core/ingredients.py +0 -0
  114. {stewbeet-2.1.0 → stewbeet-2.1.2}/stewbeet/core/utils/io.py +0 -0
  115. {stewbeet-2.1.0 → stewbeet-2.1.2}/stewbeet/core/utils/sounds.py +0 -0
  116. {stewbeet-2.1.0 → stewbeet-2.1.2}/stewbeet/dependencies/__init__.py +0 -0
  117. {stewbeet-2.1.0 → stewbeet-2.1.2}/stewbeet/dependencies/bookshelf.py +0 -0
  118. {stewbeet-2.1.0 → stewbeet-2.1.2}/stewbeet/dependencies/bookshelf_config.json +0 -0
  119. {stewbeet-2.1.0 → stewbeet-2.1.2}/stewbeet/dependencies/datapack/Bookshelf Bitwise.zip +0 -0
  120. {stewbeet-2.1.0 → stewbeet-2.1.2}/stewbeet/dependencies/datapack/Bookshelf Block.zip +0 -0
  121. {stewbeet-2.1.0 → stewbeet-2.1.2}/stewbeet/dependencies/datapack/Bookshelf Color.zip +0 -0
  122. {stewbeet-2.1.0 → stewbeet-2.1.2}/stewbeet/dependencies/datapack/Bookshelf Dump.zip +0 -0
  123. {stewbeet-2.1.0 → stewbeet-2.1.2}/stewbeet/dependencies/datapack/Bookshelf Environment.zip +0 -0
  124. {stewbeet-2.1.0 → stewbeet-2.1.2}/stewbeet/dependencies/datapack/Bookshelf Generation.zip +0 -0
  125. {stewbeet-2.1.0 → stewbeet-2.1.2}/stewbeet/dependencies/datapack/Bookshelf Health.zip +0 -0
  126. {stewbeet-2.1.0 → stewbeet-2.1.2}/stewbeet/dependencies/datapack/Bookshelf Hitbox.zip +0 -0
  127. {stewbeet-2.1.0 → stewbeet-2.1.2}/stewbeet/dependencies/datapack/Bookshelf Id.zip +0 -0
  128. {stewbeet-2.1.0 → stewbeet-2.1.2}/stewbeet/dependencies/datapack/Bookshelf Interaction.zip +0 -0
  129. {stewbeet-2.1.0 → stewbeet-2.1.2}/stewbeet/dependencies/datapack/Bookshelf Link.zip +0 -0
  130. {stewbeet-2.1.0 → stewbeet-2.1.2}/stewbeet/dependencies/datapack/Bookshelf Log.zip +0 -0
  131. {stewbeet-2.1.0 → stewbeet-2.1.2}/stewbeet/dependencies/datapack/Bookshelf Math.zip +0 -0
  132. {stewbeet-2.1.0 → stewbeet-2.1.2}/stewbeet/dependencies/datapack/Bookshelf Move.zip +0 -0
  133. {stewbeet-2.1.0 → stewbeet-2.1.2}/stewbeet/dependencies/datapack/Bookshelf Position.zip +0 -0
  134. {stewbeet-2.1.0 → stewbeet-2.1.2}/stewbeet/dependencies/datapack/Bookshelf Random.zip +0 -0
  135. {stewbeet-2.1.0 → stewbeet-2.1.2}/stewbeet/dependencies/datapack/Bookshelf Raycast.zip +0 -0
  136. {stewbeet-2.1.0 → stewbeet-2.1.2}/stewbeet/dependencies/datapack/Bookshelf Schedule.zip +0 -0
  137. {stewbeet-2.1.0 → stewbeet-2.1.2}/stewbeet/dependencies/datapack/Bookshelf Sidebar.zip +0 -0
  138. {stewbeet-2.1.0 → stewbeet-2.1.2}/stewbeet/dependencies/datapack/Bookshelf Spline.zip +0 -0
  139. {stewbeet-2.1.0 → stewbeet-2.1.2}/stewbeet/dependencies/datapack/Bookshelf String.zip +0 -0
  140. {stewbeet-2.1.0 → stewbeet-2.1.2}/stewbeet/dependencies/datapack/Bookshelf Time.zip +0 -0
  141. {stewbeet-2.1.0 → stewbeet-2.1.2}/stewbeet/dependencies/datapack/Bookshelf Tree.zip +0 -0
  142. {stewbeet-2.1.0 → stewbeet-2.1.2}/stewbeet/dependencies/datapack/Bookshelf Vector.zip +0 -0
  143. {stewbeet-2.1.0 → stewbeet-2.1.2}/stewbeet/dependencies/datapack/Bookshelf View.zip +0 -0
  144. {stewbeet-2.1.0 → stewbeet-2.1.2}/stewbeet/dependencies/datapack/Bookshelf Xp.zip +0 -0
  145. {stewbeet-2.1.0 → stewbeet-2.1.2}/stewbeet/dependencies/datapack/Common Signals.zip +0 -0
  146. {stewbeet-2.1.0 → stewbeet-2.1.2}/stewbeet/dependencies/datapack/Furnace NBT Recipes.zip +0 -0
  147. {stewbeet-2.1.0 → stewbeet-2.1.2}/stewbeet/dependencies/datapack/ItemIO.zip +0 -0
  148. {stewbeet-2.1.0 → stewbeet-2.1.2}/stewbeet/dependencies/datapack/SmartOreGeneration.zip +0 -0
  149. {stewbeet-2.1.0 → stewbeet-2.1.2}/stewbeet/dependencies/datapack/Smithed Crafter.zip +0 -0
  150. {stewbeet-2.1.0 → stewbeet-2.1.2}/stewbeet/dependencies/datapack/Smithed Custom Block.zip +0 -0
  151. {stewbeet-2.1.0 → stewbeet-2.1.2}/stewbeet/dependencies/resource_pack/Smithed Crafter.zip +0 -0
  152. {stewbeet-2.1.0 → stewbeet-2.1.2}/stewbeet/plugins/archive/__init__.py +0 -0
  153. {stewbeet-2.1.0 → stewbeet-2.1.2}/stewbeet/plugins/auto/headers/__init__.py +0 -0
  154. {stewbeet-2.1.0 → stewbeet-2.1.2}/stewbeet/plugins/auto/headers/object.py +0 -0
  155. {stewbeet-2.1.0 → stewbeet-2.1.2}/stewbeet/plugins/auto/lang_file/__init__.py +0 -0
  156. {stewbeet-2.1.0 → stewbeet-2.1.2}/stewbeet/plugins/auto/lang_file/utils.py +0 -0
  157. {stewbeet-2.1.0 → stewbeet-2.1.2}/stewbeet/plugins/compatibilities/neo_enchant/__init__.py +0 -0
  158. {stewbeet-2.1.0 → stewbeet-2.1.2}/stewbeet/plugins/compatibilities/simpledrawer/__init__.py +0 -0
  159. {stewbeet-2.1.0 → stewbeet-2.1.2}/stewbeet/plugins/compute_sha1/__init__.py +0 -0
  160. {stewbeet-2.1.0 → stewbeet-2.1.2}/stewbeet/plugins/copy_to_destination/__init__.py +0 -0
  161. {stewbeet-2.1.0 → stewbeet-2.1.2}/stewbeet/plugins/custom_recipes/__init__.py +0 -0
  162. {stewbeet-2.1.0 → stewbeet-2.1.2}/stewbeet/plugins/custom_recipes/furnace.py +0 -0
  163. {stewbeet-2.1.0 → stewbeet-2.1.2}/stewbeet/plugins/custom_recipes/pulverizer.py +0 -0
  164. {stewbeet-2.1.0 → stewbeet-2.1.2}/stewbeet/plugins/custom_recipes/smithed.py +0 -0
  165. {stewbeet-2.1.0 → stewbeet-2.1.2}/stewbeet/plugins/custom_recipes/vanilla.py +0 -0
  166. {stewbeet-2.1.0 → stewbeet-2.1.2}/stewbeet/plugins/datapack/custom_blocks/__init__.py +0 -0
  167. {stewbeet-2.1.0 → stewbeet-2.1.2}/stewbeet/plugins/datapack/loading/__init__.py +0 -0
  168. {stewbeet-2.1.0 → stewbeet-2.1.2}/stewbeet/plugins/datapack/loot_tables/__init__.py +0 -0
  169. {stewbeet-2.1.0 → stewbeet-2.1.2}/stewbeet/plugins/finalyze/basic_datapack_structure/__init__.py +0 -0
  170. {stewbeet-2.1.0 → stewbeet-2.1.2}/stewbeet/plugins/finalyze/check_unused_textures/__init__.py +0 -0
  171. {stewbeet-2.1.0 → stewbeet-2.1.2}/stewbeet/plugins/finalyze/custom_blocks_ticking/__init__.py +0 -0
  172. {stewbeet-2.1.0 → stewbeet-2.1.2}/stewbeet/plugins/finalyze/dependencies/__init__.py +0 -0
  173. {stewbeet-2.1.0 → stewbeet-2.1.2}/stewbeet/plugins/finalyze/last_final/__init__.py +0 -0
  174. {stewbeet-2.1.0 → stewbeet-2.1.2}/stewbeet/plugins/ingame_manual/__init__.py +0 -0
  175. {stewbeet-2.1.0 → stewbeet-2.1.2}/stewbeet/plugins/ingame_manual/assets/furnace.png +0 -0
  176. {stewbeet-2.1.0 → stewbeet-2.1.2}/stewbeet/plugins/ingame_manual/assets/heavy_workbench.png +0 -0
  177. {stewbeet-2.1.0 → stewbeet-2.1.2}/stewbeet/plugins/ingame_manual/assets/invisible_item.png +0 -0
  178. {stewbeet-2.1.0 → stewbeet-2.1.2}/stewbeet/plugins/ingame_manual/assets/invisible_item_release.png +0 -0
  179. {stewbeet-2.1.0 → stewbeet-2.1.2}/stewbeet/plugins/ingame_manual/assets/minecraft_font.ttf +0 -0
  180. {stewbeet-2.1.0 → stewbeet-2.1.2}/stewbeet/plugins/ingame_manual/assets/none.png +0 -0
  181. {stewbeet-2.1.0 → stewbeet-2.1.2}/stewbeet/plugins/ingame_manual/assets/none_release.png +0 -0
  182. {stewbeet-2.1.0 → stewbeet-2.1.2}/stewbeet/plugins/ingame_manual/assets/pulverizing.png +0 -0
  183. {stewbeet-2.1.0 → stewbeet-2.1.2}/stewbeet/plugins/ingame_manual/assets/shaped_2x2.png +0 -0
  184. {stewbeet-2.1.0 → stewbeet-2.1.2}/stewbeet/plugins/ingame_manual/assets/shaped_3x3.png +0 -0
  185. {stewbeet-2.1.0 → stewbeet-2.1.2}/stewbeet/plugins/ingame_manual/assets/simple_case_no_border.png +0 -0
  186. {stewbeet-2.1.0 → stewbeet-2.1.2}/stewbeet/plugins/ingame_manual/assets/wiki_information.png +0 -0
  187. {stewbeet-2.1.0 → stewbeet-2.1.2}/stewbeet/plugins/ingame_manual/assets/wiki_ingredient_of_craft.png +0 -0
  188. {stewbeet-2.1.0 → stewbeet-2.1.2}/stewbeet/plugins/ingame_manual/assets/wiki_ingredient_of_craft_template.png +0 -0
  189. {stewbeet-2.1.0 → stewbeet-2.1.2}/stewbeet/plugins/ingame_manual/assets/wiki_result_of_craft.png +0 -0
  190. {stewbeet-2.1.0 → stewbeet-2.1.2}/stewbeet/plugins/ingame_manual/book_optimizer.py +0 -0
  191. {stewbeet-2.1.0 → stewbeet-2.1.2}/stewbeet/plugins/ingame_manual/image_utils.py +0 -0
  192. {stewbeet-2.1.0 → stewbeet-2.1.2}/stewbeet/plugins/ingame_manual/main.py +0 -0
  193. {stewbeet-2.1.0 → stewbeet-2.1.2}/stewbeet/plugins/ingame_manual/other_utils.py +0 -0
  194. {stewbeet-2.1.0 → stewbeet-2.1.2}/stewbeet/plugins/ingame_manual/shared_import.py +0 -0
  195. {stewbeet-2.1.0 → stewbeet-2.1.2}/stewbeet/plugins/ingame_manual/showcase_image.py +0 -0
  196. {stewbeet-2.1.0 → stewbeet-2.1.2}/stewbeet/plugins/ingame_manual/templates/.gitignore +0 -0
  197. {stewbeet-2.1.0 → stewbeet-2.1.2}/stewbeet/plugins/ingame_manual/templates/_README.md +0 -0
  198. {stewbeet-2.1.0 → stewbeet-2.1.2}/stewbeet/plugins/ingame_manual/templates/furnace.png +0 -0
  199. {stewbeet-2.1.0 → stewbeet-2.1.2}/stewbeet/plugins/ingame_manual/templates/heavy_workbench.png +0 -0
  200. {stewbeet-2.1.0 → stewbeet-2.1.2}/stewbeet/plugins/ingame_manual/templates/invisible_item.png +0 -0
  201. {stewbeet-2.1.0 → stewbeet-2.1.2}/stewbeet/plugins/ingame_manual/templates/invisible_item_release.png +0 -0
  202. {stewbeet-2.1.0 → stewbeet-2.1.2}/stewbeet/plugins/ingame_manual/templates/minecraft_font.ttf +0 -0
  203. {stewbeet-2.1.0 → stewbeet-2.1.2}/stewbeet/plugins/ingame_manual/templates/none.png +0 -0
  204. {stewbeet-2.1.0 → stewbeet-2.1.2}/stewbeet/plugins/ingame_manual/templates/none_release.png +0 -0
  205. {stewbeet-2.1.0 → stewbeet-2.1.2}/stewbeet/plugins/ingame_manual/templates/pulverizing.png +0 -0
  206. {stewbeet-2.1.0 → stewbeet-2.1.2}/stewbeet/plugins/ingame_manual/templates/shaped_2x2.png +0 -0
  207. {stewbeet-2.1.0 → stewbeet-2.1.2}/stewbeet/plugins/ingame_manual/templates/shaped_3x3.png +0 -0
  208. {stewbeet-2.1.0 → stewbeet-2.1.2}/stewbeet/plugins/ingame_manual/templates/simple_case_no_border.png +0 -0
  209. {stewbeet-2.1.0 → stewbeet-2.1.2}/stewbeet/plugins/ingame_manual/templates/wiki_information.png +0 -0
  210. {stewbeet-2.1.0 → stewbeet-2.1.2}/stewbeet/plugins/ingame_manual/templates/wiki_ingredient_of_craft.png +0 -0
  211. {stewbeet-2.1.0 → stewbeet-2.1.2}/stewbeet/plugins/ingame_manual/templates/wiki_ingredient_of_craft_template.png +0 -0
  212. {stewbeet-2.1.0 → stewbeet-2.1.2}/stewbeet/plugins/ingame_manual/templates/wiki_result_of_craft.png +0 -0
  213. {stewbeet-2.1.0 → stewbeet-2.1.2}/stewbeet/plugins/ingame_manual/text_components.py +0 -0
  214. {stewbeet-2.1.0 → stewbeet-2.1.2}/stewbeet/plugins/initialize/source_lore_font.py +0 -0
  215. {stewbeet-2.1.0 → stewbeet-2.1.2}/stewbeet/plugins/merge_smithed_weld/__init__.py +0 -0
  216. {stewbeet-2.1.0 → stewbeet-2.1.2}/stewbeet/plugins/merge_smithed_weld/weld.py +0 -0
  217. {stewbeet-2.1.0 → stewbeet-2.1.2}/stewbeet/plugins/resource_pack/check_power_of_2/__init__.py +0 -0
  218. {stewbeet-2.1.0 → stewbeet-2.1.2}/stewbeet/plugins/resource_pack/item_models/__init__.py +0 -0
  219. {stewbeet-2.1.0 → stewbeet-2.1.2}/stewbeet/plugins/resource_pack/sounds/__init__.py +0 -0
  220. {stewbeet-2.1.0 → stewbeet-2.1.2}/stewbeet/plugins/verify_definitions/__init__.py +0 -0
  221. {stewbeet-2.1.0 → stewbeet-2.1.2}/stewbeet/utils.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: stewbeet
3
- Version: 2.1.0
3
+ Version: 2.1.2
4
4
  Summary: Beet Framework made to help generating advanced Minecraft datapack contents
5
5
  Project-URL: Homepage, https://github.com/Stoupy51/stewbeet
6
6
  Project-URL: Issues, https://github.com/Stoupy51/stewbeet/issues
@@ -5,7 +5,7 @@ build-backend = "hatchling.build"
5
5
 
6
6
  [project]
7
7
  name = "stewbeet"
8
- version = "2.1.0"
8
+ version = "2.1.2"
9
9
  description = "Beet Framework made to help generating advanced Minecraft datapack contents"
10
10
  readme = "README.md"
11
11
  license = "MIT"
@@ -0,0 +1,222 @@
1
+
2
+ # Imports
3
+ import os
4
+
5
+ from beet import ItemModel, Model, Texture
6
+ from stouputils.io import get_root_path, super_json_load
7
+
8
+ from ...core import CUSTOM_ITEM_VANILLA, JsonDict, Mem, set_json_encoder, write_function
9
+
10
+ # Constants
11
+ ENERGY_CABLE_MODELS_FOLDER: str = get_root_path(__file__) + "/energy_cable_models"
12
+
13
+ # Setup machines work and visuals
14
+ def energy_cables_models(cables: list[str]) -> None:
15
+ """ Setup energy cables models and functions for SimplEnergy.
16
+
17
+ Args:
18
+ cables (list[str]): List of cables to setup. (e.g. ["simple_cable", "advanced_cable", "elite_cable"])
19
+ """
20
+ ns: str = Mem.ctx.project_id
21
+ textures_folder: str = Mem.ctx.meta.stewbeet.textures_folder
22
+
23
+ # Setup parent cable model
24
+ parent_model: dict = {"parent":"block/block","display":{"fixed":{"rotation":[180,0,0],"translation":[0,-4,0],"scale":[1.005,1.005,1.005]}}}
25
+ Mem.ctx.assets[ns].models["block/cable_base"] = set_json_encoder(Model(parent_model))
26
+
27
+ # Setup cables models
28
+ for cable in cables:
29
+ # Setup vanilla model for this cable
30
+ content: dict = {"model": {"type": "minecraft:range_dispatch","property": "minecraft:custom_model_data","entries": []}}
31
+
32
+ # Create all the cables variants models
33
+ for root, _, files in os.walk(ENERGY_CABLE_MODELS_FOLDER):
34
+ for file in files:
35
+ if file.endswith(".json"):
36
+ path: str = f"{root}/{file}"
37
+
38
+ # Load the json file
39
+ json_file: dict = super_json_load(path)
40
+
41
+ # Create the new json
42
+ new_json: dict = {
43
+ "parent": f"{ns}:block/cable_base",
44
+ "textures": {"0": f"{ns}:block/{cable}", "particle": f"{ns}:block/{cable}"},
45
+ }
46
+ new_json.update(json_file)
47
+
48
+ # Write the new json
49
+ no_ext: str = os.path.splitext(file)[0]
50
+ Mem.ctx.assets[ns].models[f"block/{cable}/{no_ext}"] = set_json_encoder(Model(new_json), max_level=3)
51
+
52
+ # Link vanilla model
53
+ for i in range(64):
54
+ # Get faces
55
+ down: str = "d" if i & 1 else ""
56
+ up: str = "u" if i & 2 else ""
57
+ north: str = "n" if i & 4 else ""
58
+ south: str = "s" if i & 8 else ""
59
+ west: str = "w" if i & 16 else ""
60
+ east: str = "e" if i & 32 else ""
61
+ model_path: str = f"{ns}:block/{cable}/variant_{up}{down}{north}{south}{east}{west}"
62
+ if model_path.endswith("_"):
63
+ model_path = model_path[:-1]
64
+
65
+ # Add override
66
+ content["model"]["entries"].append({"threshold": i, "model":{"type": "minecraft:model", "model": model_path}})
67
+
68
+ # Write the vanilla model for this cable
69
+ Mem.ctx.assets[ns].item_models[cable] = set_json_encoder(ItemModel(content), max_level=3)
70
+
71
+ # Copy texture
72
+ src: str = f"{textures_folder}/{cable}.png"
73
+ mcmeta: JsonDict | None = None if not os.path.exists(src + ".mcmeta") else super_json_load(f"{src}.mcmeta")
74
+ Mem.ctx.assets[ns].textures[f"block/{cable}"] = Texture(source_path=src, mcmeta=mcmeta)
75
+
76
+ # On placement, rotate
77
+ write_function(f"{ns}:custom_blocks/{cable}/place_secondary", f"""
78
+ # Cable rotation for models, and common cable tag
79
+ data modify entity @s item_display set value "fixed"
80
+ tag @s add {ns}.cable
81
+ """)
82
+
83
+ # Update_cable_model function
84
+ cables_str: str = "\n".join([
85
+ f"execute if entity @s[tag={ns}.{cable}] run item replace entity @s contents with {CUSTOM_ITEM_VANILLA}[item_model=\"{ns}:{cable}\"]"
86
+ for cable in cables
87
+ ])
88
+ cable_update_content: str = f"""
89
+ # Stop if not {ns} cable
90
+ execute unless entity @s[tag={ns}.custom_block,tag=energy.cable] run return fail
91
+
92
+ # Apply the model dynamically based on cable tags
93
+ {cables_str}
94
+
95
+ # Get the right model
96
+ item modify entity @s contents {{"function": "minecraft:set_custom_model_data","floats": {{"values": [{{"type": "minecraft:score","target": "this","score": "energy.data"}}],"mode": "replace_all"}}}}
97
+ """
98
+ write_function(f"{ns}:calls/energy/cable_update", cable_update_content, tags=["energy:v1/cable_update"])
99
+ return
100
+
101
+
102
+
103
+ # Setup machines work and visuals
104
+ def item_cables_models(cables: dict[str, dict[str, str] | None]) -> None:
105
+ """ Setup item cables models and functions for SimplEnergy.
106
+
107
+ Args:
108
+ cables (dict[str, dict[str, str]]): Dictionary of item cables to setup.
109
+ Each key is the cable name, and the value is a dictionary mapping model textures to their paths
110
+ The mapping dictionnary is optional, if not provided, it will use the default model paths.
111
+ (e.g. {"item_cable":{"0":"item_cable/center","1":"item_cable/pillon","2":"item_cable/glass"}})
112
+ """
113
+ ns: str = Mem.ctx.project_id
114
+ textures_folder: str = Mem.ctx.meta.stewbeet.textures_folder
115
+
116
+ # Constants for cable generation (same as your code principle)
117
+ sides: list[str] = ["u", "d", "n", "s", "e", "w"]
118
+ cube_names: list[str] = ["top", "bottom", "north", "south", "east", "west"]
119
+
120
+ # Path to the base cable model
121
+ cable_base_path: str = get_root_path(__file__) + "/item_cable_models/cable_base.json"
122
+
123
+ # Handle parameters
124
+ for cable, textures in cables.items():
125
+ if textures is None:
126
+ textures = {}
127
+ if not textures.get("0"):
128
+ textures["0"] = f"{cable}/center"
129
+ if not textures.get("1"):
130
+ textures["1"] = f"{cable}/pillon"
131
+ if not textures.get("2"):
132
+ textures["2"] = f"{cable}/glass"
133
+ if not textures.get("particle"):
134
+ textures["particle"] = f"{cable}/center"
135
+
136
+ # Setup vanilla model for this item cable
137
+ content: dict = {"model": {"type": "minecraft:range_dispatch","property": "minecraft:custom_model_data","entries": []}}
138
+
139
+ # Generate all variants (64 possibilities like your code)
140
+ for i in range(64):
141
+ # Generate indicator like your code: _n _u _d _s _e _w _ns _ne _nw _se _sw etc
142
+ indicator: str = "_"
143
+ for side in sides:
144
+ if i & (1 << sides.index(side)):
145
+ indicator += side
146
+
147
+ # Load the base cable model
148
+ base_data: dict = super_json_load(cable_base_path)
149
+
150
+ # Update textures to use the current cable's textures
151
+ base_data["textures"] = {
152
+ "0": f"{ns}:block/{textures['0']}",
153
+ "1": f"{ns}:block/{textures['1']}",
154
+ "2": f"{ns}:block/{textures['2']}",
155
+ "particle": f"{ns}:block/{textures['particle']}"
156
+ }
157
+
158
+ # Remove elements for sides that are not connected (same principle as your code)
159
+ for side in sides:
160
+ if side not in indicator:
161
+ cube_name = cube_names[sides.index(side)]
162
+ j = 0
163
+ while j < len(base_data["elements"]):
164
+ element_name = base_data["elements"][j].get("name", "")
165
+ if cube_name in element_name:
166
+ base_data["elements"].pop(j)
167
+ j -= 1
168
+ j += 1
169
+
170
+ # Save the variant model
171
+ variant_name = f"variant{indicator}" if indicator != "_" else "no_variant"
172
+ Mem.ctx.assets[ns].models[f"block/{cable}/{variant_name}"] = set_json_encoder(Model(base_data), max_level=3)
173
+
174
+ # Add entry to the range dispatch model
175
+ model_path = f"{ns}:block/{cable}/{variant_name}"
176
+ content["model"]["entries"].append({"threshold": i, "model": {"type": "minecraft:model", "model": model_path}})
177
+
178
+ # Write the vanilla model for this item cable
179
+ Mem.ctx.assets[ns].item_models[cable] = set_json_encoder(ItemModel(content), max_level=3)
180
+
181
+ # Copy textures to resource pack
182
+ for texture_path in textures.values():
183
+ src: str = f"{textures_folder}/{texture_path}.png"
184
+ dst: str = f"block/{texture_path}"
185
+
186
+ # Check if the source file exists and if the texture is not already registered
187
+ if os.path.exists(src) and (not Mem.ctx.assets[ns].textures.get(dst)):
188
+ mcmeta: JsonDict | None = None if not os.path.exists(src + ".mcmeta") else super_json_load(f"{src}.mcmeta")
189
+ Mem.ctx.assets[ns].textures[dst] = Texture(source_path=src, mcmeta=mcmeta)
190
+
191
+ # On placement, add itemio.cable tag and call init function
192
+ write_function(f"{ns}:custom_blocks/{cable}/place_secondary", f"""
193
+ # Item cable setup for models, and common itemio cable tag
194
+ tag @s add {ns}.cable
195
+ tag @s add itemio.cable
196
+ function #itemio:calls/cables/init
197
+ """)
198
+
199
+ # On destruction, call destroy function
200
+ write_function(f"{ns}:custom_blocks/{cable}/destroy", """
201
+ # Item cable destruction cleanup
202
+ function #itemio:calls/cables/destroy
203
+ """)
204
+
205
+ # Update_cable_model function
206
+ cables_str: str = "\n".join([
207
+ f"execute if entity @s[tag={ns}.{cable}] run item replace entity @s contents with {CUSTOM_ITEM_VANILLA}[item_model=\"{ns}:{cable}\"]"
208
+ for cable in cables
209
+ ])
210
+ cable_update_content: str = f"""
211
+ # Stop if not {ns} cable
212
+ execute unless entity @s[tag={ns}.custom_block,tag=itemio.cable] run return fail
213
+
214
+ # Apply the model dynamically based on cable tags
215
+ {cables_str}
216
+
217
+ # Get the right model
218
+ item modify entity @s contents {{"function": "minecraft:set_custom_model_data","floats": {{"values": [{{"type": "minecraft:score","target": "this","score": "itemio.math"}}],"mode": "replace_all"}}}}
219
+ """
220
+ write_function(f"{ns}:calls/itemio/cable_update", cable_update_content, tags=["itemio:event/cable_update"])
221
+ return
222
+
@@ -0,0 +1 @@
1
+ {"meta":{"format_version":"4.0","model_format":"java_block","box_uv":false},"name":"wire","parent":"","ambientocclusion":true,"front_gui_light":false,"visible_box":[1,1,0],"variable_placeholders":"","variable_placeholder_buttons":[],"resolution":{"width":16,"height":16},"elements":[{"name":"center","rescale":false,"locked":false,"from":[5,5,5],"to":[11,11,11],"autouv":0,"color":3,"origin":[0,0,0],"faces":{"north":{"uv":[0,0,3,3],"texture":0},"east":{"uv":[0,3,3,6],"texture":0},"south":{"uv":[3,0,6,3],"texture":0},"west":{"uv":[3,3,6,6],"texture":0},"up":{"uv":[3,9,0,6],"texture":0},"down":{"uv":[9,0,6,3],"texture":0}},"type":"cube","uuid":"979dd825-54a7-246b-5bcc-f74c80be5321"},{"name":"north","rescale":false,"locked":false,"from":[6,6,0],"to":[10,10,5],"autouv":0,"color":6,"origin":[8,8,8],"faces":{"north":{"uv":[0,8,4,12],"texture":1},"east":{"uv":[0,0,5,4],"texture":1},"south":{"uv":[9,0,13,4],"texture":1},"west":{"uv":[0,4,5,8],"texture":1},"up":{"uv":[9,5,5,0],"texture":1},"down":{"uv":[9,5,5,10],"texture":1}},"type":"cube","uuid":"dc64215e-4a7b-f48f-fa12-972c2cc011c7"},{"name":"top","rescale":false,"locked":false,"from":[6,11,6],"to":[10,16,10],"autouv":0,"color":6,"origin":[8,8,8],"faces":{"north":{"uv":[9,5,5,10],"rotation":180,"texture":1},"east":{"uv":[0,0,5,4],"rotation":270,"texture":1},"south":{"uv":[9,5,5,0],"texture":1},"west":{"uv":[0,4,5,8],"rotation":90,"texture":1},"up":{"uv":[0,8,4,12],"rotation":180,"texture":1},"down":{"uv":[9,0,13,4],"texture":1}},"type":"cube","uuid":"8144af98-4d52-2944-e6b7-926d8eac8e02"},{"name":"bottom","rescale":false,"locked":false,"from":[6,0,6],"to":[10,5,10],"autouv":0,"color":6,"origin":[8,8,8],"faces":{"north":{"uv":[9,5,5,0],"rotation":180,"texture":1},"east":{"uv":[0,0,5,4],"rotation":90,"texture":1},"south":{"uv":[9,5,5,10],"texture":1},"west":{"uv":[0,4,5,8],"rotation":270,"texture":1},"up":{"uv":[9,0,13,4],"texture":1},"down":{"uv":[0,8,4,12],"rotation":180,"texture":1}},"type":"cube","uuid":"6049216b-22df-e8df-7910-83783c78af69"},{"name":"south","rescale":false,"locked":false,"from":[6,6,11],"to":[10,10,16],"autouv":0,"color":6,"origin":[8,8,8],"faces":{"north":{"uv":[9,0,13,4],"rotation":180,"texture":1},"east":{"uv":[0,0,5,4],"rotation":180,"texture":1},"south":{"uv":[0,8,4,12],"rotation":180,"texture":1},"west":{"uv":[0,4,5,8],"rotation":180,"texture":1},"up":{"uv":[9,5,5,10],"texture":1},"down":{"uv":[9,5,5,0],"texture":1}},"type":"cube","uuid":"000af0c9-41ef-1e90-0492-d6797038b4c2"},{"name":"east","rescale":false,"locked":false,"from":[11,6,6],"to":[16,10,10],"autouv":0,"color":6,"origin":[8,8,8],"faces":{"north":{"uv":[0,0,5,4],"rotation":180,"texture":1},"east":{"uv":[0,8,4,12],"rotation":180,"texture":1},"south":{"uv":[0,4,5,8],"rotation":180,"texture":1},"west":{"uv":[9,0,13,4],"rotation":180,"texture":1},"up":{"uv":[9,5,5,10],"rotation":270,"texture":1},"down":{"uv":[9,5,5,0],"rotation":90,"texture":1}},"type":"cube","uuid":"69fc191c-ab36-463f-6c03-39d2d24a9fe1"},{"name":"west","rescale":false,"locked":false,"from":[0,6,6],"to":[5,10,10],"autouv":0,"color":6,"origin":[8,8,8],"faces":{"north":{"uv":[0,4,5,8],"rotation":180,"texture":1},"east":{"uv":[9,0,13,4],"rotation":180,"texture":1},"south":{"uv":[0,0,5,4],"rotation":180,"texture":1},"west":{"uv":[0,8,4,12],"rotation":180,"texture":1},"up":{"uv":[9,5,5,10],"rotation":90,"texture":1},"down":{"uv":[9,5,5,0],"rotation":270,"texture":1}},"type":"cube","uuid":"9d3a45b1-0cab-a2ab-38bc-a7764efdb1b8"}],"outliner":["979dd825-54a7-246b-5bcc-f74c80be5321",{"name":"sides","origin":[8,8,8],"color":0,"uuid":"20a89c47-96f0-39e6-38ed-49b985426363","export":true,"isOpen":true,"locked":false,"visibility":true,"autouv":0,"children":["dc64215e-4a7b-f48f-fa12-972c2cc011c7","8144af98-4d52-2944-e6b7-926d8eac8e02","6049216b-22df-e8df-7910-83783c78af69","000af0c9-41ef-1e90-0492-d6797038b4c2","69fc191c-ab36-463f-6c03-39d2d24a9fe1","9d3a45b1-0cab-a2ab-38bc-a7764efdb1b8"]}],"textures":[{"path":"","name":"center","folder":"block/item_cable","namespace":"technicalutils","id":"0","particle":true,"render_mode":"default","visible":true,"mode":"bitmap","saved":false,"uuid":"1bdbe940-058f-67d4-f090-3bb5aa32315e","source":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAG5JREFUWEdjZGBg+M9AHcBIjjEgTf/tzC+g6D100gDMJ1F81AFDOATISTxY9JAfAiQ6gCyLcNlBTi4YdcAwDIEBT4Q4HEDVoCYnF4w6YASFwEAnQhJzIXWV0yWe8Tl51AGjITAaAqMhMBoCoyEAAJuGWiFALwSkAAAAAElFTkSuQmCC"},{"path":"","name":"side","folder":"block/item_cable","namespace":"technicalutils","id":"1","particle":false,"render_mode":"default","visible":true,"mode":"bitmap","saved":false,"uuid":"aadb6d28-294d-1812-e784-308ce5cb9b5b","source":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAE9JREFUOE9jZGBg+M+ABdiZXwCLHjppAKIYsakBS9iZX8AwAKSJfgZQ7AWKDRieYQCK8/9ERyMOxRQbgCvhYYiDnYsmijPZYjOVJMXD1AAAuUI+EQnXIRsAAAAASUVORK5CYII="}]}