mc_dot_art_maker 0.1.2 → 0.1.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (410) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +40 -0
  3. data/Gemfile +6 -0
  4. data/Gemfile.lock +34 -0
  5. data/LICENSE +21 -0
  6. data/README.md +1 -0
  7. data/Rakefile +6 -0
  8. data/example/make_dot_art/make_dot_art.rb +9 -0
  9. data/example/make_dot_art/output/mosaic/test_image.png +0 -0
  10. data/example/make_dot_art/output/schematic/test_image.schematic +0 -0
  11. data/example/make_dot_art/output/texture/test_image.png +0 -0
  12. data/example/make_dot_art/src/test_image.jpg +0 -0
  13. data/lib/mc_dot_art_maker/block.rb +60 -0
  14. data/lib/mc_dot_art_maker/block_list.rb +471 -0
  15. data/lib/mc_dot_art_maker/cell.rb +31 -0
  16. data/lib/mc_dot_art_maker/schematic_helper.rb +167 -0
  17. data/lib/mc_dot_art_maker/seed.schematic +0 -0
  18. data/lib/mc_dot_art_maker/table.rb +147 -0
  19. data/lib/mc_dot_art_maker/textures/anvil_base.png +0 -0
  20. data/lib/mc_dot_art_maker/textures/anvil_top_damaged_0.png +0 -0
  21. data/lib/mc_dot_art_maker/textures/anvil_top_damaged_1.png +0 -0
  22. data/lib/mc_dot_art_maker/textures/anvil_top_damaged_2.png +0 -0
  23. data/lib/mc_dot_art_maker/textures/beacon.png +0 -0
  24. data/lib/mc_dot_art_maker/textures/bed_feet_end.png +0 -0
  25. data/lib/mc_dot_art_maker/textures/bed_feet_side.png +0 -0
  26. data/lib/mc_dot_art_maker/textures/bed_feet_top.png +0 -0
  27. data/lib/mc_dot_art_maker/textures/bed_head_end.png +0 -0
  28. data/lib/mc_dot_art_maker/textures/bed_head_side.png +0 -0
  29. data/lib/mc_dot_art_maker/textures/bed_head_top.png +0 -0
  30. data/lib/mc_dot_art_maker/textures/bedrock.png +0 -0
  31. data/lib/mc_dot_art_maker/textures/bookshelf.png +0 -0
  32. data/lib/mc_dot_art_maker/textures/brewing_stand.png +0 -0
  33. data/lib/mc_dot_art_maker/textures/brewing_stand_base.png +0 -0
  34. data/lib/mc_dot_art_maker/textures/brick.png +0 -0
  35. data/lib/mc_dot_art_maker/textures/cactus_bottom.png +0 -0
  36. data/lib/mc_dot_art_maker/textures/cactus_side.png +0 -0
  37. data/lib/mc_dot_art_maker/textures/cactus_top.png +0 -0
  38. data/lib/mc_dot_art_maker/textures/cake_bottom.png +0 -0
  39. data/lib/mc_dot_art_maker/textures/cake_inner.png +0 -0
  40. data/lib/mc_dot_art_maker/textures/cake_side.png +0 -0
  41. data/lib/mc_dot_art_maker/textures/cake_top.png +0 -0
  42. data/lib/mc_dot_art_maker/textures/carrots_stage_0.png +0 -0
  43. data/lib/mc_dot_art_maker/textures/carrots_stage_1.png +0 -0
  44. data/lib/mc_dot_art_maker/textures/carrots_stage_2.png +0 -0
  45. data/lib/mc_dot_art_maker/textures/carrots_stage_3.png +0 -0
  46. data/lib/mc_dot_art_maker/textures/cauldron_bottom.png +0 -0
  47. data/lib/mc_dot_art_maker/textures/cauldron_inner.png +0 -0
  48. data/lib/mc_dot_art_maker/textures/cauldron_side.png +0 -0
  49. data/lib/mc_dot_art_maker/textures/cauldron_top.png +0 -0
  50. data/lib/mc_dot_art_maker/textures/clay.png +0 -0
  51. data/lib/mc_dot_art_maker/textures/coal_block.png +0 -0
  52. data/lib/mc_dot_art_maker/textures/coal_ore.png +0 -0
  53. data/lib/mc_dot_art_maker/textures/coarse_dirt.png +0 -0
  54. data/lib/mc_dot_art_maker/textures/cobblestone.png +0 -0
  55. data/lib/mc_dot_art_maker/textures/cobblestone_mossy.png +0 -0
  56. data/lib/mc_dot_art_maker/textures/cocoa_stage_0.png +0 -0
  57. data/lib/mc_dot_art_maker/textures/cocoa_stage_1.png +0 -0
  58. data/lib/mc_dot_art_maker/textures/cocoa_stage_2.png +0 -0
  59. data/lib/mc_dot_art_maker/textures/command_block.png +0 -0
  60. data/lib/mc_dot_art_maker/textures/comparator_off.png +0 -0
  61. data/lib/mc_dot_art_maker/textures/comparator_on.png +0 -0
  62. data/lib/mc_dot_art_maker/textures/crafting_table_front.png +0 -0
  63. data/lib/mc_dot_art_maker/textures/crafting_table_side.png +0 -0
  64. data/lib/mc_dot_art_maker/textures/crafting_table_top.png +0 -0
  65. data/lib/mc_dot_art_maker/textures/daylight_detector_inverted_top.png +0 -0
  66. data/lib/mc_dot_art_maker/textures/daylight_detector_side.png +0 -0
  67. data/lib/mc_dot_art_maker/textures/daylight_detector_top.png +0 -0
  68. data/lib/mc_dot_art_maker/textures/deadbush.png +0 -0
  69. data/lib/mc_dot_art_maker/textures/destroy_stage_0.png +0 -0
  70. data/lib/mc_dot_art_maker/textures/destroy_stage_1.png +0 -0
  71. data/lib/mc_dot_art_maker/textures/destroy_stage_2.png +0 -0
  72. data/lib/mc_dot_art_maker/textures/destroy_stage_3.png +0 -0
  73. data/lib/mc_dot_art_maker/textures/destroy_stage_4.png +0 -0
  74. data/lib/mc_dot_art_maker/textures/destroy_stage_5.png +0 -0
  75. data/lib/mc_dot_art_maker/textures/destroy_stage_6.png +0 -0
  76. data/lib/mc_dot_art_maker/textures/destroy_stage_7.png +0 -0
  77. data/lib/mc_dot_art_maker/textures/destroy_stage_8.png +0 -0
  78. data/lib/mc_dot_art_maker/textures/destroy_stage_9.png +0 -0
  79. data/lib/mc_dot_art_maker/textures/diamond_block.png +0 -0
  80. data/lib/mc_dot_art_maker/textures/diamond_ore.png +0 -0
  81. data/lib/mc_dot_art_maker/textures/dirt.png +0 -0
  82. data/lib/mc_dot_art_maker/textures/dirt_podzol_side.png +0 -0
  83. data/lib/mc_dot_art_maker/textures/dirt_podzol_top.png +0 -0
  84. data/lib/mc_dot_art_maker/textures/dispenser_front_horizontal.png +0 -0
  85. data/lib/mc_dot_art_maker/textures/dispenser_front_vertical.png +0 -0
  86. data/lib/mc_dot_art_maker/textures/door_acacia_lower.png +0 -0
  87. data/lib/mc_dot_art_maker/textures/door_acacia_upper.png +0 -0
  88. data/lib/mc_dot_art_maker/textures/door_birch_lower.png +0 -0
  89. data/lib/mc_dot_art_maker/textures/door_birch_upper.png +0 -0
  90. data/lib/mc_dot_art_maker/textures/door_dark_oak_lower.png +0 -0
  91. data/lib/mc_dot_art_maker/textures/door_dark_oak_upper.png +0 -0
  92. data/lib/mc_dot_art_maker/textures/door_iron_lower.png +0 -0
  93. data/lib/mc_dot_art_maker/textures/door_iron_upper.png +0 -0
  94. data/lib/mc_dot_art_maker/textures/door_jungle_lower.png +0 -0
  95. data/lib/mc_dot_art_maker/textures/door_jungle_upper.png +0 -0
  96. data/lib/mc_dot_art_maker/textures/door_spruce_lower.png +0 -0
  97. data/lib/mc_dot_art_maker/textures/door_spruce_upper.png +0 -0
  98. data/lib/mc_dot_art_maker/textures/door_wood_lower.png +0 -0
  99. data/lib/mc_dot_art_maker/textures/door_wood_upper.png +0 -0
  100. data/lib/mc_dot_art_maker/textures/double_plant_fern_bottom.png +0 -0
  101. data/lib/mc_dot_art_maker/textures/double_plant_fern_top.png +0 -0
  102. data/lib/mc_dot_art_maker/textures/double_plant_grass_bottom.png +0 -0
  103. data/lib/mc_dot_art_maker/textures/double_plant_grass_top.png +0 -0
  104. data/lib/mc_dot_art_maker/textures/double_plant_paeonia_bottom.png +0 -0
  105. data/lib/mc_dot_art_maker/textures/double_plant_paeonia_top.png +0 -0
  106. data/lib/mc_dot_art_maker/textures/double_plant_rose_bottom.png +0 -0
  107. data/lib/mc_dot_art_maker/textures/double_plant_rose_top.png +0 -0
  108. data/lib/mc_dot_art_maker/textures/double_plant_sunflower_back.png +0 -0
  109. data/lib/mc_dot_art_maker/textures/double_plant_sunflower_bottom.png +0 -0
  110. data/lib/mc_dot_art_maker/textures/double_plant_sunflower_front.png +0 -0
  111. data/lib/mc_dot_art_maker/textures/double_plant_sunflower_top.png +0 -0
  112. data/lib/mc_dot_art_maker/textures/double_plant_syringa_bottom.png +0 -0
  113. data/lib/mc_dot_art_maker/textures/double_plant_syringa_top.png +0 -0
  114. data/lib/mc_dot_art_maker/textures/dragon_egg.png +0 -0
  115. data/lib/mc_dot_art_maker/textures/dropper_front_horizontal.png +0 -0
  116. data/lib/mc_dot_art_maker/textures/dropper_front_vertical.png +0 -0
  117. data/lib/mc_dot_art_maker/textures/emerald_block.png +0 -0
  118. data/lib/mc_dot_art_maker/textures/emerald_ore.png +0 -0
  119. data/lib/mc_dot_art_maker/textures/enchanting_table_bottom.png +0 -0
  120. data/lib/mc_dot_art_maker/textures/enchanting_table_side.png +0 -0
  121. data/lib/mc_dot_art_maker/textures/enchanting_table_top.png +0 -0
  122. data/lib/mc_dot_art_maker/textures/end_stone.png +0 -0
  123. data/lib/mc_dot_art_maker/textures/endframe_eye.png +0 -0
  124. data/lib/mc_dot_art_maker/textures/endframe_side.png +0 -0
  125. data/lib/mc_dot_art_maker/textures/endframe_top.png +0 -0
  126. data/lib/mc_dot_art_maker/textures/farmland_dry.png +0 -0
  127. data/lib/mc_dot_art_maker/textures/farmland_wet.png +0 -0
  128. data/lib/mc_dot_art_maker/textures/fern.png +0 -0
  129. data/lib/mc_dot_art_maker/textures/fire_layer_0.png +0 -0
  130. data/lib/mc_dot_art_maker/textures/fire_layer_0.png.mcmeta +38 -0
  131. data/lib/mc_dot_art_maker/textures/fire_layer_1.png +0 -0
  132. data/lib/mc_dot_art_maker/textures/fire_layer_1.png.mcmeta +3 -0
  133. data/lib/mc_dot_art_maker/textures/flower_allium.png +0 -0
  134. data/lib/mc_dot_art_maker/textures/flower_blue_orchid.png +0 -0
  135. data/lib/mc_dot_art_maker/textures/flower_dandelion.png +0 -0
  136. data/lib/mc_dot_art_maker/textures/flower_houstonia.png +0 -0
  137. data/lib/mc_dot_art_maker/textures/flower_oxeye_daisy.png +0 -0
  138. data/lib/mc_dot_art_maker/textures/flower_paeonia.png +0 -0
  139. data/lib/mc_dot_art_maker/textures/flower_pot.png +0 -0
  140. data/lib/mc_dot_art_maker/textures/flower_rose.png +0 -0
  141. data/lib/mc_dot_art_maker/textures/flower_tulip_orange.png +0 -0
  142. data/lib/mc_dot_art_maker/textures/flower_tulip_pink.png +0 -0
  143. data/lib/mc_dot_art_maker/textures/flower_tulip_red.png +0 -0
  144. data/lib/mc_dot_art_maker/textures/flower_tulip_white.png +0 -0
  145. data/lib/mc_dot_art_maker/textures/furnace_front_off.png +0 -0
  146. data/lib/mc_dot_art_maker/textures/furnace_front_on.png +0 -0
  147. data/lib/mc_dot_art_maker/textures/furnace_side.png +0 -0
  148. data/lib/mc_dot_art_maker/textures/furnace_top.png +0 -0
  149. data/lib/mc_dot_art_maker/textures/glass.png +0 -0
  150. data/lib/mc_dot_art_maker/textures/glass_black.png +0 -0
  151. data/lib/mc_dot_art_maker/textures/glass_blue.png +0 -0
  152. data/lib/mc_dot_art_maker/textures/glass_brown.png +0 -0
  153. data/lib/mc_dot_art_maker/textures/glass_cyan.png +0 -0
  154. data/lib/mc_dot_art_maker/textures/glass_gray.png +0 -0
  155. data/lib/mc_dot_art_maker/textures/glass_green.png +0 -0
  156. data/lib/mc_dot_art_maker/textures/glass_light_blue.png +0 -0
  157. data/lib/mc_dot_art_maker/textures/glass_lime.png +0 -0
  158. data/lib/mc_dot_art_maker/textures/glass_magenta.png +0 -0
  159. data/lib/mc_dot_art_maker/textures/glass_orange.png +0 -0
  160. data/lib/mc_dot_art_maker/textures/glass_pane_top.png +0 -0
  161. data/lib/mc_dot_art_maker/textures/glass_pane_top_black.png +0 -0
  162. data/lib/mc_dot_art_maker/textures/glass_pane_top_blue.png +0 -0
  163. data/lib/mc_dot_art_maker/textures/glass_pane_top_brown.png +0 -0
  164. data/lib/mc_dot_art_maker/textures/glass_pane_top_cyan.png +0 -0
  165. data/lib/mc_dot_art_maker/textures/glass_pane_top_gray.png +0 -0
  166. data/lib/mc_dot_art_maker/textures/glass_pane_top_green.png +0 -0
  167. data/lib/mc_dot_art_maker/textures/glass_pane_top_light_blue.png +0 -0
  168. data/lib/mc_dot_art_maker/textures/glass_pane_top_lime.png +0 -0
  169. data/lib/mc_dot_art_maker/textures/glass_pane_top_magenta.png +0 -0
  170. data/lib/mc_dot_art_maker/textures/glass_pane_top_orange.png +0 -0
  171. data/lib/mc_dot_art_maker/textures/glass_pane_top_pink.png +0 -0
  172. data/lib/mc_dot_art_maker/textures/glass_pane_top_purple.png +0 -0
  173. data/lib/mc_dot_art_maker/textures/glass_pane_top_red.png +0 -0
  174. data/lib/mc_dot_art_maker/textures/glass_pane_top_silver.png +0 -0
  175. data/lib/mc_dot_art_maker/textures/glass_pane_top_white.png +0 -0
  176. data/lib/mc_dot_art_maker/textures/glass_pane_top_yellow.png +0 -0
  177. data/lib/mc_dot_art_maker/textures/glass_pink.png +0 -0
  178. data/lib/mc_dot_art_maker/textures/glass_purple.png +0 -0
  179. data/lib/mc_dot_art_maker/textures/glass_red.png +0 -0
  180. data/lib/mc_dot_art_maker/textures/glass_silver.png +0 -0
  181. data/lib/mc_dot_art_maker/textures/glass_white.png +0 -0
  182. data/lib/mc_dot_art_maker/textures/glass_yellow.png +0 -0
  183. data/lib/mc_dot_art_maker/textures/glowstone.png +0 -0
  184. data/lib/mc_dot_art_maker/textures/gold_block.png +0 -0
  185. data/lib/mc_dot_art_maker/textures/gold_ore.png +0 -0
  186. data/lib/mc_dot_art_maker/textures/grass_side.png +0 -0
  187. data/lib/mc_dot_art_maker/textures/grass_side_overlay.png +0 -0
  188. data/lib/mc_dot_art_maker/textures/grass_side_snowed.png +0 -0
  189. data/lib/mc_dot_art_maker/textures/grass_top.png +0 -0
  190. data/lib/mc_dot_art_maker/textures/gravel.png +0 -0
  191. data/lib/mc_dot_art_maker/textures/hardened_clay.png +0 -0
  192. data/lib/mc_dot_art_maker/textures/hardened_clay_stained_black.png +0 -0
  193. data/lib/mc_dot_art_maker/textures/hardened_clay_stained_blue.png +0 -0
  194. data/lib/mc_dot_art_maker/textures/hardened_clay_stained_brown.png +0 -0
  195. data/lib/mc_dot_art_maker/textures/hardened_clay_stained_cyan.png +0 -0
  196. data/lib/mc_dot_art_maker/textures/hardened_clay_stained_gray.png +0 -0
  197. data/lib/mc_dot_art_maker/textures/hardened_clay_stained_green.png +0 -0
  198. data/lib/mc_dot_art_maker/textures/hardened_clay_stained_light_blue.png +0 -0
  199. data/lib/mc_dot_art_maker/textures/hardened_clay_stained_lime.png +0 -0
  200. data/lib/mc_dot_art_maker/textures/hardened_clay_stained_magenta.png +0 -0
  201. data/lib/mc_dot_art_maker/textures/hardened_clay_stained_orange.png +0 -0
  202. data/lib/mc_dot_art_maker/textures/hardened_clay_stained_pink.png +0 -0
  203. data/lib/mc_dot_art_maker/textures/hardened_clay_stained_purple.png +0 -0
  204. data/lib/mc_dot_art_maker/textures/hardened_clay_stained_red.png +0 -0
  205. data/lib/mc_dot_art_maker/textures/hardened_clay_stained_silver.png +0 -0
  206. data/lib/mc_dot_art_maker/textures/hardened_clay_stained_white.png +0 -0
  207. data/lib/mc_dot_art_maker/textures/hardened_clay_stained_yellow.png +0 -0
  208. data/lib/mc_dot_art_maker/textures/hay_block_side.png +0 -0
  209. data/lib/mc_dot_art_maker/textures/hay_block_top.png +0 -0
  210. data/lib/mc_dot_art_maker/textures/hopper_inside.png +0 -0
  211. data/lib/mc_dot_art_maker/textures/hopper_outside.png +0 -0
  212. data/lib/mc_dot_art_maker/textures/hopper_top.png +0 -0
  213. data/lib/mc_dot_art_maker/textures/ice.png +0 -0
  214. data/lib/mc_dot_art_maker/textures/ice_packed.png +0 -0
  215. data/lib/mc_dot_art_maker/textures/iron_bars.png +0 -0
  216. data/lib/mc_dot_art_maker/textures/iron_block.png +0 -0
  217. data/lib/mc_dot_art_maker/textures/iron_ore.png +0 -0
  218. data/lib/mc_dot_art_maker/textures/iron_trapdoor.png +0 -0
  219. data/lib/mc_dot_art_maker/textures/itemframe_background.png +0 -0
  220. data/lib/mc_dot_art_maker/textures/jukebox_side.png +0 -0
  221. data/lib/mc_dot_art_maker/textures/jukebox_top.png +0 -0
  222. data/lib/mc_dot_art_maker/textures/ladder.png +0 -0
  223. data/lib/mc_dot_art_maker/textures/lapis_block.png +0 -0
  224. data/lib/mc_dot_art_maker/textures/lapis_ore.png +0 -0
  225. data/lib/mc_dot_art_maker/textures/lava_flow.png +0 -0
  226. data/lib/mc_dot_art_maker/textures/lava_flow.png.mcmeta +5 -0
  227. data/lib/mc_dot_art_maker/textures/lava_still.png +0 -0
  228. data/lib/mc_dot_art_maker/textures/lava_still.png.mcmeta +45 -0
  229. data/lib/mc_dot_art_maker/textures/leaves_acacia.png +0 -0
  230. data/lib/mc_dot_art_maker/textures/leaves_big_oak.png +0 -0
  231. data/lib/mc_dot_art_maker/textures/leaves_birch.png +0 -0
  232. data/lib/mc_dot_art_maker/textures/leaves_jungle.png +0 -0
  233. data/lib/mc_dot_art_maker/textures/leaves_oak.png +0 -0
  234. data/lib/mc_dot_art_maker/textures/leaves_spruce.png +0 -0
  235. data/lib/mc_dot_art_maker/textures/lever.png +0 -0
  236. data/lib/mc_dot_art_maker/textures/log_acacia.png +0 -0
  237. data/lib/mc_dot_art_maker/textures/log_acacia_top.png +0 -0
  238. data/lib/mc_dot_art_maker/textures/log_big_oak.png +0 -0
  239. data/lib/mc_dot_art_maker/textures/log_big_oak_top.png +0 -0
  240. data/lib/mc_dot_art_maker/textures/log_birch.png +0 -0
  241. data/lib/mc_dot_art_maker/textures/log_birch_top.png +0 -0
  242. data/lib/mc_dot_art_maker/textures/log_jungle.png +0 -0
  243. data/lib/mc_dot_art_maker/textures/log_jungle_top.png +0 -0
  244. data/lib/mc_dot_art_maker/textures/log_oak.png +0 -0
  245. data/lib/mc_dot_art_maker/textures/log_oak_top.png +0 -0
  246. data/lib/mc_dot_art_maker/textures/log_spruce.png +0 -0
  247. data/lib/mc_dot_art_maker/textures/log_spruce_top.png +0 -0
  248. data/lib/mc_dot_art_maker/textures/melon_side.png +0 -0
  249. data/lib/mc_dot_art_maker/textures/melon_stem_connected.png +0 -0
  250. data/lib/mc_dot_art_maker/textures/melon_stem_disconnected.png +0 -0
  251. data/lib/mc_dot_art_maker/textures/melon_top.png +0 -0
  252. data/lib/mc_dot_art_maker/textures/mob_spawner.png +0 -0
  253. data/lib/mc_dot_art_maker/textures/mushroom_block_inside.png +0 -0
  254. data/lib/mc_dot_art_maker/textures/mushroom_block_skin_brown.png +0 -0
  255. data/lib/mc_dot_art_maker/textures/mushroom_block_skin_red.png +0 -0
  256. data/lib/mc_dot_art_maker/textures/mushroom_block_skin_stem.png +0 -0
  257. data/lib/mc_dot_art_maker/textures/mushroom_brown.png +0 -0
  258. data/lib/mc_dot_art_maker/textures/mushroom_red.png +0 -0
  259. data/lib/mc_dot_art_maker/textures/mycelium_side.png +0 -0
  260. data/lib/mc_dot_art_maker/textures/mycelium_top.png +0 -0
  261. data/lib/mc_dot_art_maker/textures/nether_brick.png +0 -0
  262. data/lib/mc_dot_art_maker/textures/nether_wart_stage_0.png +0 -0
  263. data/lib/mc_dot_art_maker/textures/nether_wart_stage_1.png +0 -0
  264. data/lib/mc_dot_art_maker/textures/nether_wart_stage_2.png +0 -0
  265. data/lib/mc_dot_art_maker/textures/netherrack.png +0 -0
  266. data/lib/mc_dot_art_maker/textures/noteblock.png +0 -0
  267. data/lib/mc_dot_art_maker/textures/obsidian.png +0 -0
  268. data/lib/mc_dot_art_maker/textures/piston_bottom.png +0 -0
  269. data/lib/mc_dot_art_maker/textures/piston_inner.png +0 -0
  270. data/lib/mc_dot_art_maker/textures/piston_side.png +0 -0
  271. data/lib/mc_dot_art_maker/textures/piston_top_normal.png +0 -0
  272. data/lib/mc_dot_art_maker/textures/piston_top_sticky.png +0 -0
  273. data/lib/mc_dot_art_maker/textures/planks_acacia.png +0 -0
  274. data/lib/mc_dot_art_maker/textures/planks_big_oak.png +0 -0
  275. data/lib/mc_dot_art_maker/textures/planks_birch.png +0 -0
  276. data/lib/mc_dot_art_maker/textures/planks_jungle.png +0 -0
  277. data/lib/mc_dot_art_maker/textures/planks_oak.png +0 -0
  278. data/lib/mc_dot_art_maker/textures/planks_spruce.png +0 -0
  279. data/lib/mc_dot_art_maker/textures/portal.png +0 -0
  280. data/lib/mc_dot_art_maker/textures/portal.png.mcmeta +3 -0
  281. data/lib/mc_dot_art_maker/textures/potatoes_stage_0.png +0 -0
  282. data/lib/mc_dot_art_maker/textures/potatoes_stage_1.png +0 -0
  283. data/lib/mc_dot_art_maker/textures/potatoes_stage_2.png +0 -0
  284. data/lib/mc_dot_art_maker/textures/potatoes_stage_3.png +0 -0
  285. data/lib/mc_dot_art_maker/textures/prismarine_bricks.png +0 -0
  286. data/lib/mc_dot_art_maker/textures/prismarine_dark.png +0 -0
  287. data/lib/mc_dot_art_maker/textures/prismarine_rough.png +0 -0
  288. data/lib/mc_dot_art_maker/textures/prismarine_rough.png.mcmeta +30 -0
  289. data/lib/mc_dot_art_maker/textures/pumpkin_face_off.png +0 -0
  290. data/lib/mc_dot_art_maker/textures/pumpkin_face_on.png +0 -0
  291. data/lib/mc_dot_art_maker/textures/pumpkin_side.png +0 -0
  292. data/lib/mc_dot_art_maker/textures/pumpkin_stem_connected.png +0 -0
  293. data/lib/mc_dot_art_maker/textures/pumpkin_stem_disconnected.png +0 -0
  294. data/lib/mc_dot_art_maker/textures/pumpkin_top.png +0 -0
  295. data/lib/mc_dot_art_maker/textures/quartz_block_bottom.png +0 -0
  296. data/lib/mc_dot_art_maker/textures/quartz_block_chiseled.png +0 -0
  297. data/lib/mc_dot_art_maker/textures/quartz_block_chiseled_top.png +0 -0
  298. data/lib/mc_dot_art_maker/textures/quartz_block_lines.png +0 -0
  299. data/lib/mc_dot_art_maker/textures/quartz_block_lines_top.png +0 -0
  300. data/lib/mc_dot_art_maker/textures/quartz_block_side.png +0 -0
  301. data/lib/mc_dot_art_maker/textures/quartz_block_top.png +0 -0
  302. data/lib/mc_dot_art_maker/textures/quartz_ore.png +0 -0
  303. data/lib/mc_dot_art_maker/textures/rail_activator.png +0 -0
  304. data/lib/mc_dot_art_maker/textures/rail_activator_powered.png +0 -0
  305. data/lib/mc_dot_art_maker/textures/rail_detector.png +0 -0
  306. data/lib/mc_dot_art_maker/textures/rail_detector_powered.png +0 -0
  307. data/lib/mc_dot_art_maker/textures/rail_golden.png +0 -0
  308. data/lib/mc_dot_art_maker/textures/rail_golden_powered.png +0 -0
  309. data/lib/mc_dot_art_maker/textures/rail_normal.png +0 -0
  310. data/lib/mc_dot_art_maker/textures/rail_normal_turned.png +0 -0
  311. data/lib/mc_dot_art_maker/textures/red_sand.png +0 -0
  312. data/lib/mc_dot_art_maker/textures/red_sandstone_bottom.png +0 -0
  313. data/lib/mc_dot_art_maker/textures/red_sandstone_carved.png +0 -0
  314. data/lib/mc_dot_art_maker/textures/red_sandstone_normal.png +0 -0
  315. data/lib/mc_dot_art_maker/textures/red_sandstone_smooth.png +0 -0
  316. data/lib/mc_dot_art_maker/textures/red_sandstone_top.png +0 -0
  317. data/lib/mc_dot_art_maker/textures/redstone_block.png +0 -0
  318. data/lib/mc_dot_art_maker/textures/redstone_dust_cross.png +0 -0
  319. data/lib/mc_dot_art_maker/textures/redstone_dust_cross_overlay.png +0 -0
  320. data/lib/mc_dot_art_maker/textures/redstone_dust_line.png +0 -0
  321. data/lib/mc_dot_art_maker/textures/redstone_dust_line_overlay.png +0 -0
  322. data/lib/mc_dot_art_maker/textures/redstone_lamp_off.png +0 -0
  323. data/lib/mc_dot_art_maker/textures/redstone_lamp_on.png +0 -0
  324. data/lib/mc_dot_art_maker/textures/redstone_ore.png +0 -0
  325. data/lib/mc_dot_art_maker/textures/redstone_torch_off.png +0 -0
  326. data/lib/mc_dot_art_maker/textures/redstone_torch_on.png +0 -0
  327. data/lib/mc_dot_art_maker/textures/reeds.png +0 -0
  328. data/lib/mc_dot_art_maker/textures/repeater_off.png +0 -0
  329. data/lib/mc_dot_art_maker/textures/repeater_on.png +0 -0
  330. data/lib/mc_dot_art_maker/textures/sand.png +0 -0
  331. data/lib/mc_dot_art_maker/textures/sandstone_bottom.png +0 -0
  332. data/lib/mc_dot_art_maker/textures/sandstone_carved.png +0 -0
  333. data/lib/mc_dot_art_maker/textures/sandstone_normal.png +0 -0
  334. data/lib/mc_dot_art_maker/textures/sandstone_smooth.png +0 -0
  335. data/lib/mc_dot_art_maker/textures/sandstone_top.png +0 -0
  336. data/lib/mc_dot_art_maker/textures/sapling_acacia.png +0 -0
  337. data/lib/mc_dot_art_maker/textures/sapling_birch.png +0 -0
  338. data/lib/mc_dot_art_maker/textures/sapling_jungle.png +0 -0
  339. data/lib/mc_dot_art_maker/textures/sapling_oak.png +0 -0
  340. data/lib/mc_dot_art_maker/textures/sapling_roofed_oak.png +0 -0
  341. data/lib/mc_dot_art_maker/textures/sapling_spruce.png +0 -0
  342. data/lib/mc_dot_art_maker/textures/sea_lantern.png +0 -0
  343. data/lib/mc_dot_art_maker/textures/sea_lantern.png.mcmeta +5 -0
  344. data/lib/mc_dot_art_maker/textures/slime.png +0 -0
  345. data/lib/mc_dot_art_maker/textures/snow.png +0 -0
  346. data/lib/mc_dot_art_maker/textures/soul_sand.png +0 -0
  347. data/lib/mc_dot_art_maker/textures/sponge.png +0 -0
  348. data/lib/mc_dot_art_maker/textures/sponge_wet.png +0 -0
  349. data/lib/mc_dot_art_maker/textures/stone.png +0 -0
  350. data/lib/mc_dot_art_maker/textures/stone_andesite.png +0 -0
  351. data/lib/mc_dot_art_maker/textures/stone_andesite_smooth.png +0 -0
  352. data/lib/mc_dot_art_maker/textures/stone_diorite.png +0 -0
  353. data/lib/mc_dot_art_maker/textures/stone_diorite_smooth.png +0 -0
  354. data/lib/mc_dot_art_maker/textures/stone_granite.png +0 -0
  355. data/lib/mc_dot_art_maker/textures/stone_granite_smooth.png +0 -0
  356. data/lib/mc_dot_art_maker/textures/stone_slab_side.png +0 -0
  357. data/lib/mc_dot_art_maker/textures/stone_slab_top.png +0 -0
  358. data/lib/mc_dot_art_maker/textures/stonebrick.png +0 -0
  359. data/lib/mc_dot_art_maker/textures/stonebrick_carved.png +0 -0
  360. data/lib/mc_dot_art_maker/textures/stonebrick_cracked.png +0 -0
  361. data/lib/mc_dot_art_maker/textures/stonebrick_mossy.png +0 -0
  362. data/lib/mc_dot_art_maker/textures/tallgrass.png +0 -0
  363. data/lib/mc_dot_art_maker/textures/tnt_bottom.png +0 -0
  364. data/lib/mc_dot_art_maker/textures/tnt_side.png +0 -0
  365. data/lib/mc_dot_art_maker/textures/tnt_top.png +0 -0
  366. data/lib/mc_dot_art_maker/textures/torch_on.png +0 -0
  367. data/lib/mc_dot_art_maker/textures/trapdoor.png +0 -0
  368. data/lib/mc_dot_art_maker/textures/trip_wire.png +0 -0
  369. data/lib/mc_dot_art_maker/textures/trip_wire_source.png +0 -0
  370. data/lib/mc_dot_art_maker/textures/vine.png +0 -0
  371. data/lib/mc_dot_art_maker/textures/water_flow.png +0 -0
  372. data/lib/mc_dot_art_maker/textures/water_flow.png.mcmeta +3 -0
  373. data/lib/mc_dot_art_maker/textures/water_still.png +0 -0
  374. data/lib/mc_dot_art_maker/textures/water_still.png.mcmeta +5 -0
  375. data/lib/mc_dot_art_maker/textures/waterlily.png +0 -0
  376. data/lib/mc_dot_art_maker/textures/web.png +0 -0
  377. data/lib/mc_dot_art_maker/textures/wheat_stage_0.png +0 -0
  378. data/lib/mc_dot_art_maker/textures/wheat_stage_1.png +0 -0
  379. data/lib/mc_dot_art_maker/textures/wheat_stage_2.png +0 -0
  380. data/lib/mc_dot_art_maker/textures/wheat_stage_3.png +0 -0
  381. data/lib/mc_dot_art_maker/textures/wheat_stage_4.png +0 -0
  382. data/lib/mc_dot_art_maker/textures/wheat_stage_5.png +0 -0
  383. data/lib/mc_dot_art_maker/textures/wheat_stage_6.png +0 -0
  384. data/lib/mc_dot_art_maker/textures/wheat_stage_7.png +0 -0
  385. data/lib/mc_dot_art_maker/textures/wool_colored_black.png +0 -0
  386. data/lib/mc_dot_art_maker/textures/wool_colored_blue.png +0 -0
  387. data/lib/mc_dot_art_maker/textures/wool_colored_brown.png +0 -0
  388. data/lib/mc_dot_art_maker/textures/wool_colored_cyan.png +0 -0
  389. data/lib/mc_dot_art_maker/textures/wool_colored_gray.png +0 -0
  390. data/lib/mc_dot_art_maker/textures/wool_colored_green.png +0 -0
  391. data/lib/mc_dot_art_maker/textures/wool_colored_light_blue.png +0 -0
  392. data/lib/mc_dot_art_maker/textures/wool_colored_lime.png +0 -0
  393. data/lib/mc_dot_art_maker/textures/wool_colored_magenta.png +0 -0
  394. data/lib/mc_dot_art_maker/textures/wool_colored_orange.png +0 -0
  395. data/lib/mc_dot_art_maker/textures/wool_colored_pink.png +0 -0
  396. data/lib/mc_dot_art_maker/textures/wool_colored_purple.png +0 -0
  397. data/lib/mc_dot_art_maker/textures/wool_colored_red.png +0 -0
  398. data/lib/mc_dot_art_maker/textures/wool_colored_silver.png +0 -0
  399. data/lib/mc_dot_art_maker/textures/wool_colored_white.png +0 -0
  400. data/lib/mc_dot_art_maker/textures/wool_colored_yellow.png +0 -0
  401. data/lib/mc_dot_art_maker/utils.rb +23 -0
  402. data/mc_dot_art_maker.gemspec +18 -0
  403. data/test/palette.png +0 -0
  404. data/test/test_block_palette.rb +8 -0
  405. data/test/test_dither_method.rb +9 -0
  406. data/test/test_image.jpg +0 -0
  407. data/test/test_image_FloydSteinbergDitherMethod.png +0 -0
  408. data/test/test_image_NoDitherMethod.png +0 -0
  409. data/test/test_image_RiemersmaDitherMethod.png +0 -0
  410. metadata +409 -1
@@ -0,0 +1,471 @@
1
+ module MCDotArtMaker
2
+ class BlockList
3
+ include Enumerable
4
+ include Singleton
5
+ def initialize
6
+ @blocks = []
7
+
8
+ # できるだけ多くのブロックを使ったバージョン
9
+
10
+ # block :stone, '1', 'stone.png'
11
+ # block :granite, '1:1', 'stone_granite.png'
12
+ # block :polished_granite, '1:2', 'stone_granite_smooth.png'
13
+ # block :diorite, '1:3', 'stone_diorite.png'
14
+ # block :polished_diorite, '1:4', 'stone_diorite_smooth.png'
15
+ # block :andesite, '1:5', 'stone_andesite.png'
16
+ # block :polished_andesite, '1:6', 'stone_andesite_smooth.png'
17
+ # # block :grass, '2', ''
18
+ # # テクスチャがグレースケールでたぶんバイオームごとに色を変えてる
19
+ # block :dirt, '3', 'dirt.png'
20
+ # block :coarse_dirt, '3:1', 'coarse_dirt.png'
21
+ # block :podzol, '3:2', 'dirt_podzol_top.png'
22
+ # block :cobblestone, '4', 'cobblestone.png'
23
+ # block :oak_wood_plank, '5', 'planks_oak.png'
24
+ # block :spruce_wood_plank, '5:1', 'planks_spruce.png'
25
+ # block :birch_wood_plank, '5:2', 'planks_birch.png'
26
+ # block :jungle_wood_plank, '5:3', 'planks_jungle.png'
27
+ # block :acacia_wood_plank, '5:4', 'planks_acacia.png'
28
+ # block :dark_oak_wood_plank, '5:5', 'planks_big_oak.png'
29
+ #
30
+ # block :bedrock, '7', 'bedrock.png'
31
+ #
32
+ # block :sand, '12', 'sand.png'
33
+ # block :red_sand, '12:1', 'red_sand.png'
34
+ # block :gravel, '13', 'gravel.png'
35
+ # block :gold_ore, '14', 'gold_ore.png'
36
+ # block :iron_ore, '15', 'iron_ore.png'
37
+ # block :coal_ore, '16', 'coal_ore.png'
38
+ # block :oak_wood, '17', 'log_oak_top.png' # TODO: テクスチャ注意
39
+ # # block :spruce_wood, '17:1', 'spruce_wood.png'
40
+ # # block :birch_wood, '17:2', 'birch_wood.png'
41
+ # # block :jungle_wood, '17:3', 'jungle_wood.png'
42
+ #
43
+ # # block :oak_leaves, '18', 'oak_leaves.png'
44
+ # # block :spruce_leaves, '18:1', 'spruce_leaves.png'
45
+ # # block :birch_leaves, '18:2', 'birch_leaves.png'
46
+ # # block :jungle_leaves, '18:3', 'jungle_leaves.png'
47
+ # # テクスチャがグレースケールでたぶんバイオームごとに色を変えてる
48
+ # block :sponge, '19', 'sponge.png'
49
+ # block :wet_sponge, '19:1', 'sponge_wet.png'
50
+ # block :glass, '20', 'glass.png'
51
+ # block :lapis_lazuli_ore, '21', 'lapis_ore.png'
52
+ # block :lapis_lazuli_block, '22', 'lapis_block.png'
53
+ # block :dispenser, '23', 'dispenser_front_vertical.png'
54
+ # block :sandstone, '24', 'sandstone_top.png'
55
+ # # block :chiseled_sandstone, '24:1', 'chiseled_sandstone.png'
56
+ # # block :smooth_sandstone, '24:2', 'smooth_sandstone.png'
57
+ # block :note_block, '25', 'noteblock.png'
58
+ #
59
+ # block :white_wool,'35','wool_colored_white.png'
60
+ # block :orange_wool,'35:1','wool_colored_orange.png'
61
+ # block :magenta_wool,'35:2','wool_colored_magenta.png'
62
+ # block :light_blue_wool,'35:3','wool_colored_light_blue.png'
63
+ # block :yellow_wool,'35:4','wool_colored_yellow.png'
64
+ # block :lime_wool,'35:5','wool_colored_lime.png'
65
+ # block :pink_wool,'35:6','wool_colored_pink.png'
66
+ # block :gray_wool,'35:7','wool_colored_gray.png'
67
+ # block :silver_wool,'35:8','wool_colored_silver.png'
68
+ # block :cyan_wool,'35:9','wool_colored_cyan.png'
69
+ # block :purple_wool,'35:10','wool_colored_purple.png'
70
+ # block :blue_wool,'35:11','wool_colored_blue.png'
71
+ # block :brown_wool,'35:12','wool_colored_brown.png'
72
+ # block :green_wool,'35:13','wool_colored_green.png'
73
+ # block :red_wool,'35:14','wool_colored_red.png'
74
+ # block :black_wool,'35:15','wool_colored_black.png'
75
+ #
76
+ # block :gold_block, '41', 'gold_block.png'
77
+ # block :iron_block, '42', 'iron_block.png'
78
+ # block :double_stone_slab, '43', 'stone_slab_top.png'
79
+ # # block :double_sandstone_slab, '43:1', 'double_sandstone_slab.png'
80
+ # # block :double_wooden_slab, '43:2', 'double_wooden_slab.png'
81
+ # # block :double_cobblestone_slab, '43:3', 'double_cobblestone_slab.png'
82
+ # # block :double_brick_slab, '43:4', 'double_brick_slab.png'
83
+ # # block :double_stone_brick_slab, '43:5', 'double_stone_brick_slab.png'
84
+ # # block :double_nether_brick_slab, '43:6', 'double_nether_brick_slab.png'
85
+ # # block :double_quartz_slab, '43:7', 'double_quartz_slab.png'
86
+ #
87
+ # block :bricks, '45', 'brick.png'
88
+ # block :tnt, '46', 'tnt_top.png'
89
+ # # block :bookshelf, '47', 'bookshelf.png'
90
+ # block :moss_stone, '48', 'cobblestone_mossy.png'
91
+ # block :obsidian, '49', 'obsidian.png'
92
+ #
93
+ # block :diamond_ore, '56', 'diamond_ore.png'
94
+ # block :diamond_block, '57', 'diamond_block.png'
95
+ # block :crafting_table, '58', 'crafting_table_top.png'
96
+ #
97
+ # block :farmland, '60', 'farmland_dry.png'
98
+ #
99
+ # block :redstone_ore, '73', 'redstone_ore.png'
100
+ #
101
+ # block :snow, '78', 'snow.png'
102
+ # block :ice, '79', 'ice.png'
103
+ # # block :snow_block, '80', 'snow_block.png'
104
+ #
105
+ # block :clay, '82', 'clay.png'
106
+ #
107
+ # block :jukebox, '84', 'jukebox_top.png'
108
+ #
109
+ # block :pumpkin, '86', 'pumpkin_top.png'
110
+ # block :netherrack, '87', 'netherrack.png'
111
+ # block :soul_sand, '88', 'soul_sand.png'
112
+ # block :glowstone, '89', 'glowstone.png'
113
+ #
114
+ # # block :jack_o_lantern, '91', 'jack_o_lantern.png'
115
+ # block :cake_block, '92', 'cake_top.png'
116
+ #
117
+ # block :white_stained_glass, '95', 'glass_white.png'
118
+ # block :orange_stained_glass, '95:1', 'glass_orange.png'
119
+ # block :magenta_stained_glass, '95:2', 'glass_magenta.png'
120
+ # block :light_blue_stained_glass, '95:3', 'glass_light_blue.png'
121
+ # block :yellow_stained_glass, '95:4', 'glass_yellow.png'
122
+ # block :lime_stained_glass, '95:5', 'glass_lime.png'
123
+ # block :pink_stained_glass, '95:6', 'glass_pink.png'
124
+ # block :gray_stained_glass, '95:7', 'glass_gray.png'
125
+ # block :silver_stained_glass, '95:8', 'glass_silver.png'
126
+ # block :cyan_stained_glass, '95:9', 'glass_cyan.png'
127
+ # block :purple_stained_glass, '95:10', 'glass_purple.png'
128
+ # block :blue_stained_glass, '95:11', 'glass_blue.png'
129
+ # block :brown_stained_glass, '95:12', 'glass_brown.png'
130
+ # block :green_stained_glass, '95:13', 'glass_green.png'
131
+ # block :red_stained_glass, '95:14', 'glass_red.png'
132
+ # block :black_stained_glass, '95:15', 'glass_black.png'
133
+ #
134
+ # # block :stone_monster_egg, '97', 'stone_monster_egg.png'
135
+ # # block :cobblestone_monster_egg, '97:1', 'cobblestone_monster_egg.png'
136
+ # # block :stone_brick_monster_egg, '97:2', 'stone_brick_monster_egg.png'
137
+ # # block :mossy_stone_brick_monster_egg, '97:3', 'mossy_stone_brick_monster_egg.png'
138
+ # # block :cracked_stone_brick_monster_egg, '97:4', 'cracked_stone_brick_monster_egg.png'
139
+ # # block :chiseled_stone_brick_monster_egg, '97:5', 'chiseled_stone_brick_monster_egg.png'
140
+ # block :stone_bricks, '98', 'stonebrick.png'
141
+ # block :mossy_stone_bricks, '98:1', 'stonebrick_mossy.png'
142
+ # block :cracked_stone_bricks, '98:2', 'stonebrick_cracked.png'
143
+ # block :chiseled_stone_bricks, '98:3', 'stonebrick_carved.png'
144
+ # block :brown_mushroom_block, '99', 'mushroom_block_skin_brown.png'
145
+ # block :red_mushroom_block, '100', 'mushroom_block_skin_red.png'
146
+ #
147
+ # block :melon_block, '103', 'melon_top.png'
148
+ #
149
+ # block :mycelium, '110', 'mycelium_top.png'
150
+ #
151
+ # block :nether_brick, '112', 'nether_brick.png'
152
+ # block :end_portal_frame, '120', 'endframe_top.png'
153
+ # block :end_stone, '121', 'end_stone.png'
154
+ #
155
+ # # block :double_oak_wood_slab, '125', 'double_oak_wood_slab.png'
156
+ # # block :double_spruce_wood_slab, '125:1', 'double_spruce_wood_slab.png'
157
+ # # block :double_birch_wood_slab, '125:2', 'double_birch_wood_slab.png'
158
+ # # block :double_jungle_wood_slab, '125:3', 'double_jungle_wood_slab.png'
159
+ # # block :double_acacia_wood_slab, '125:4', 'double_acacia_wood_slab.png'
160
+ # # block :double_dark_oak_wood_slab, '125:5', 'double_dark_oak_wood_slab.png'
161
+ #
162
+ # block :emerald_ore, '129', 'emerald_ore.png'
163
+ #
164
+ # block :emerald_block, '133', 'emerald_block.png'
165
+ #
166
+ # block :command_block, '137', 'command_block.png'
167
+ #
168
+ # block :redstone_block, '152', 'redstone_block.png'
169
+ # block :nether_quartz_ore, '153', 'quartz_ore.png'
170
+ # block :quartz_block, '155', 'quartz_block_top.png'
171
+ # block :chiseled_quartz_block, '155:1', 'quartz_block_chiseled_top.png'
172
+ # block :pillar_quartz_block, '155:2', 'quartz_block_lines_top.png'
173
+ #
174
+ # block :dropper, '158', 'dropper_front_vertical.png'
175
+ # block :white_stained_clay, '159', 'hardened_clay_stained_white.png'
176
+ # block :orange_stained_clay, '159:1', 'hardened_clay_stained_orange.png'
177
+ # block :magenta_stained_clay, '159:2', 'hardened_clay_stained_magenta.png'
178
+ # block :light_blue_stained_clay, '159:3', 'hardened_clay_stained_light_blue.png'
179
+ # block :yellow_stained_clay, '159:4', 'hardened_clay_stained_yellow.png'
180
+ # block :lime_stained_clay, '159:5', 'hardened_clay_stained_lime.png'
181
+ # block :pink_stained_clay, '159:6', 'hardened_clay_stained_pink.png'
182
+ # block :gray_stained_clay, '159:7', 'hardened_clay_stained_gray.png'
183
+ # block :silver_stained_clay, '159:8', 'hardened_clay_stained_silver.png'
184
+ # block :cyan_stained_clay, '159:9', 'hardened_clay_stained_cyan.png'
185
+ # block :purple_stained_clay, '159:10', 'hardened_clay_stained_purple.png'
186
+ # block :blue_stained_clay, '159:11', 'hardened_clay_stained_blue.png'
187
+ # block :brown_stained_clay, '159:12', 'hardened_clay_stained_brown.png'
188
+ # block :green_stained_clay, '159:13', 'hardened_clay_stained_green.png'
189
+ # block :red_stained_clay, '159:14', 'hardened_clay_stained_red.png'
190
+ # block :black_stained_clay, '159:15', 'hardened_clay_stained_black.png'
191
+ # block :white_stained_glass_pane, '160', 'glass_white.png'
192
+ # block :orange_stained_glass_pane, '160:1', 'glass_orange.png'
193
+ # block :magenta_stained_glass_pane, '160:2', 'glass_magenta.png'
194
+ # block :light_blue_stained_glass_pane, '160:3', 'glass_light_blue.png'
195
+ # block :yellow_stained_glass_pane, '160:4', 'glass_yellow.png'
196
+ # block :lime_stained_glass_pane, '160:5', 'glass_lime.png'
197
+ # block :pink_stained_glass_pane, '160:6', 'glass_pink.png'
198
+ # block :gray_stained_glass_pane, '160:7', 'glass_gray.png'
199
+ # block :silver_stained_glass_pane, '160:8', 'glass_silver.png'
200
+ # block :cyan_stained_glass_pane, '160:9', 'glass_cyan.png'
201
+ # block :purple_stained_glass_pane, '160:10', 'glass_purple.png'
202
+ # block :blue_stained_glass_pane, '160:11', 'glass_blue.png'
203
+ # block :brown_stained_glass_pane, '160:12', 'glass_brown.png'
204
+ # block :green_stained_glass_pane, '160:13', 'glass_green.png'
205
+ # block :red_stained_glass_pane, '160:14', 'glass_red.png'
206
+ # block :black_stained_glass_pane, '160:15', 'glass_black.png'
207
+ # # block :acacia_leaves, '161', 'acacia_leaves.png'
208
+ # # block :dark_oak_leaves, '161:1', 'dark_oak_leaves.png'
209
+ # # block :acacia_wood, '162', 'acacia_wood.png'
210
+ # block :dark_oak_wood, '162:1', 'log_big_oak_top.png'
211
+ #
212
+ # block :slime_block, '165', 'slime.png'
213
+ #
214
+ # # block :prismarine, '168', 'prismarine.png'
215
+ # # TODO: 複数フレームでアニメーションあり
216
+ # block :prismarine_bricks, '168:1', 'prismarine_bricks.png'
217
+ # block :dark_prismarine, '168:2', 'prismarine_dark.png'
218
+ # # block :sea_lantern, '169', 'sea_lantern.png'
219
+ # # TODO: 複数フレームでアニメーションあり
220
+ # block :hay_bale, '170', 'hay_block_top.png'
221
+ #
222
+ # block :hardened_clay, '172', 'hardened_clay.png'
223
+ # block :block_of_coal, '173', 'coal_block.png'
224
+ # block :packed_ice, '174', 'ice_packed.png'
225
+ #
226
+ # block :red_sandstone, '179', 'red_sandstone_top.png'
227
+ # block :chiseled_red_sandstone, '179:1', 'red_sandstone_carved.png'
228
+ # block :smooth_red_sandstone, '179:2', 'red_sandstone_smooth.png'
229
+ # # block :double_red_sandstone_slab, '181', 'double_red_sandstone_slab.png'
230
+
231
+
232
+
233
+ # http://imgur.com/a/MTv0r
234
+ # このカラーパレットを採用したバージョン
235
+ # block :stone, '1', 'stone.png'
236
+ # block :granite, '1:1', 'stone_granite.png'
237
+ # block :polished_granite, '1:2', 'stone_granite_smooth.png'
238
+ # block :diorite, '1:3', 'stone_diorite.png'
239
+ # block :polished_diorite, '1:4', 'stone_diorite_smooth.png'
240
+ # block :andesite, '1:5', 'stone_andesite.png'
241
+ # block :polished_andesite, '1:6', 'stone_andesite_smooth.png'
242
+ #
243
+ # block :dirt, '3', 'dirt.png'
244
+ # block :coarse_dirt, '3:1', 'coarse_dirt.png'
245
+ # block :podzol, '3:2', 'dirt_podzol_top.png'
246
+ # block :cobblestone, '4', 'cobblestone.png'
247
+ block :oak_wood_plank, '5', 'planks_oak.png'
248
+ block :spruce_wood_plank, '5:1', 'planks_spruce.png'
249
+ block :birch_wood_plank, '5:2', 'planks_birch.png'
250
+ block :jungle_wood_plank, '5:3', 'planks_jungle.png'
251
+ # block :acacia_wood_plank, '5:4', 'planks_acacia.png'
252
+ # block :dark_oak_wood_plank, '5:5', 'planks_big_oak.png'
253
+ #
254
+ # block :bedrock, '7', 'bedrock.png'
255
+ #
256
+ # block :sand, '12', 'sand.png'
257
+ # block :red_sand, '12:1', 'red_sand.png'
258
+ # block :gravel, '13', 'gravel.png'
259
+ # block :gold_ore, '14', 'gold_ore.png'
260
+ # block :iron_ore, '15', 'iron_ore.png'
261
+ # block :coal_ore, '16', 'coal_ore.png'
262
+ # block :oak_wood, '17', 'log_oak_top.png' # TODO: テクスチャ注意
263
+ block :sponge, '19', 'sponge.png'
264
+ # block :wet_sponge, '19:1', 'sponge_wet.png'
265
+ # block :glass, '20', 'glass.png'
266
+ # block :lapis_lazuli_ore, '21', 'lapis_ore.png'
267
+ block :lapis_lazuli_block, '22', 'lapis_block.png'
268
+ # block :dispenser, '23', 'dispenser_front_vertical.png'
269
+ block :sandstone, '24', 'sandstone_top.png'
270
+ # block :note_block, '25', 'noteblock.png'
271
+ #
272
+ #
273
+ block :white_wool,'35','wool_colored_white.png'
274
+ #
275
+ block :orange_wool,'35:1','wool_colored_orange.png'
276
+ #
277
+ block :magenta_wool,'35:2','wool_colored_magenta.png'
278
+ #
279
+ block :light_blue_wool,'35:3','wool_colored_light_blue.png'
280
+ #
281
+ block :yellow_wool,'35:4','wool_colored_yellow.png'
282
+ #
283
+ block :lime_wool,'35:5','wool_colored_lime.png'
284
+ block :pink_wool,'35:6','wool_colored_pink.png'
285
+ #
286
+ block :gray_wool,'35:7','wool_colored_gray.png'
287
+ #
288
+ block :silver_wool,'35:8','wool_colored_silver.png'
289
+ block :cyan_wool,'35:9','wool_colored_cyan.png'
290
+ #
291
+ block :purple_wool,'35:10','wool_colored_purple.png'
292
+ #
293
+ block :blue_wool,'35:11','wool_colored_blue.png'
294
+ block :brown_wool,'35:12','wool_colored_brown.png'
295
+ block :green_wool,'35:13','wool_colored_green.png'
296
+ #
297
+ block :red_wool,'35:14','wool_colored_red.png'
298
+ #
299
+ block :black_wool,'35:15','wool_colored_black.png'
300
+ #
301
+ block :gold_block, '41', 'gold_block.png'
302
+ block :iron_block, '42', 'iron_block.png'
303
+ # block :double_stone_slab, '43', 'stone_slab_top.png'
304
+ #
305
+ block :bricks, '45', 'brick.png'
306
+ # block :tnt, '46', 'tnt_top.png'
307
+ #
308
+ # block :moss_stone, '48', 'cobblestone_mossy.png'
309
+ block :obsidian, '49', 'obsidian.png'
310
+ #
311
+ # block :diamond_ore, '56', 'diamond_ore.png'
312
+ block :diamond_block, '57', 'diamond_block.png'
313
+ # block :crafting_table, '58', 'crafting_table_top.png'
314
+ #
315
+ # block :farmland, '60', 'farmland_dry.png'
316
+ #
317
+ # block :redstone_ore, '73', 'redstone_ore.png'
318
+ #
319
+ # block :snow, '78', 'snow.png'
320
+ block :ice, '79', 'ice.png'
321
+ #
322
+ # block :clay, '82', 'clay.png'
323
+ #
324
+ # block :jukebox, '84', 'jukebox_top.png'
325
+ #
326
+ # block :pumpkin, '86', 'pumpkin_top.png'
327
+ # block :netherrack, '87', 'netherrack.png'
328
+ # block :soul_sand, '88', 'soul_sand.png'
329
+ block :glowstone, '89', 'glowstone.png'
330
+ #
331
+ # block :cake_block, '92', 'cake_top.png'
332
+ #
333
+ # block :white_stained_glass, '95', 'glass_white.png'
334
+ # block :orange_stained_glass, '95:1', 'glass_orange.png'
335
+ # block :magenta_stained_glass, '95:2', 'glass_magenta.png'
336
+ # block :light_blue_stained_glass, '95:3', 'glass_light_blue.png'
337
+ # block :yellow_stained_glass, '95:4', 'glass_yellow.png'
338
+ # block :lime_stained_glass, '95:5', 'glass_lime.png'
339
+ # block :pink_stained_glass, '95:6', 'glass_pink.png'
340
+ # block :gray_stained_glass, '95:7', 'glass_gray.png'
341
+ # block :silver_stained_glass, '95:8', 'glass_silver.png'
342
+ # block :cyan_stained_glass, '95:9', 'glass_cyan.png'
343
+ # block :purple_stained_glass, '95:10', 'glass_purple.png'
344
+ # block :blue_stained_glass, '95:11', 'glass_blue.png'
345
+ # block :brown_stained_glass, '95:12', 'glass_brown.png'
346
+ # block :green_stained_glass, '95:13', 'glass_green.png'
347
+ # block :red_stained_glass, '95:14', 'glass_red.png'
348
+ # block :black_stained_glass, '95:15', 'glass_black.png'
349
+ #
350
+ # block :stone_bricks, '98', 'stonebrick.png'
351
+ block :mossy_stone_bricks, '98:1', 'stonebrick_mossy.png'
352
+ # block :cracked_stone_bricks, '98:2', 'stonebrick_cracked.png'
353
+ block :chiseled_stone_bricks, '98:3', 'stonebrick_carved.png'
354
+ # block :brown_mushroom_block, '99', 'mushroom_block_skin_brown.png'
355
+ # block :red_mushroom_block, '100', 'mushroom_block_skin_red.png'
356
+ #
357
+ block :melon_block, '103', 'melon_top.png'
358
+ #
359
+ # block :mycelium, '110', 'mycelium_top.png'
360
+ #
361
+ block :nether_brick, '112', 'nether_brick.png'
362
+ # block :end_portal_frame, '120', 'endframe_top.png'
363
+ # block :end_stone, '121', 'end_stone.png'
364
+ #
365
+ # block :emerald_ore, '129', 'emerald_ore.png'
366
+ #
367
+ block :emerald_block, '133', 'emerald_block.png'
368
+ #
369
+ # block :command_block, '137', 'command_block.png'
370
+ #
371
+ block :redstone_block, '152', 'redstone_block.png'
372
+ # block :nether_quartz_ore, '153', 'quartz_ore.png'
373
+ # block :quartz_block, '155', 'quartz_block_top.png'
374
+ block :chiseled_quartz_block, '155:1', 'quartz_block_chiseled_top.png'
375
+ # block :pillar_quartz_block, '155:2', 'quartz_block_lines_top.png'
376
+ #
377
+ # block :dropper, '158', 'dropper_front_vertical.png'
378
+
379
+ #
380
+ block :white_stained_clay, '159', 'hardened_clay_stained_white.png'
381
+ block :orange_stained_clay, '159:1', 'hardened_clay_stained_orange.png'
382
+ #
383
+ block :magenta_stained_clay, '159:2', 'hardened_clay_stained_magenta.png'
384
+ block :light_blue_stained_clay, '159:3', 'hardened_clay_stained_light_blue.png'
385
+ block :yellow_stained_clay, '159:4', 'hardened_clay_stained_yellow.png'
386
+ block :lime_stained_clay, '159:5', 'hardened_clay_stained_lime.png'
387
+ #
388
+ block :pink_stained_clay, '159:6', 'hardened_clay_stained_pink.png'
389
+ #
390
+ block :gray_stained_clay, '159:7', 'hardened_clay_stained_gray.png'
391
+ #
392
+ block :silver_stained_clay, '159:8', 'hardened_clay_stained_silver.png'
393
+ block :cyan_stained_clay, '159:9', 'hardened_clay_stained_cyan.png'
394
+ block :purple_stained_clay, '159:10', 'hardened_clay_stained_purple.png'
395
+ block :blue_stained_clay, '159:11', 'hardened_clay_stained_blue.png'
396
+ block :brown_stained_clay, '159:12', 'hardened_clay_stained_brown.png'
397
+ block :green_stained_clay, '159:13', 'hardened_clay_stained_green.png'
398
+ block :red_stained_clay, '159:14', 'hardened_clay_stained_red.png'
399
+ block :black_stained_clay, '159:15', 'hardened_clay_stained_black.png'
400
+ # block :white_stained_glass_pane, '160', 'glass_white.png'
401
+ # block :orange_stained_glass_pane, '160:1', 'glass_orange.png'
402
+ # block :magenta_stained_glass_pane, '160:2', 'glass_magenta.png'
403
+ # block :light_blue_stained_glass_pane, '160:3', 'glass_light_blue.png'
404
+ # block :yellow_stained_glass_pane, '160:4', 'glass_yellow.png'
405
+ # block :lime_stained_glass_pane, '160:5', 'glass_lime.png'
406
+ # block :pink_stained_glass_pane, '160:6', 'glass_pink.png'
407
+ # block :gray_stained_glass_pane, '160:7', 'glass_gray.png'
408
+ # block :silver_stained_glass_pane, '160:8', 'glass_silver.png'
409
+ # block :cyan_stained_glass_pane, '160:9', 'glass_cyan.png'
410
+ # block :purple_stained_glass_pane, '160:10', 'glass_purple.png'
411
+ # block :blue_stained_glass_pane, '160:11', 'glass_blue.png'
412
+ # block :brown_stained_glass_pane, '160:12', 'glass_brown.png'
413
+ # block :green_stained_glass_pane, '160:13', 'glass_green.png'
414
+ # block :red_stained_glass_pane, '160:14', 'glass_red.png'
415
+ # block :black_stained_glass_pane, '160:15', 'glass_black.png'
416
+ # block :dark_oak_wood, '162:1', 'log_big_oak_top.png'
417
+ #
418
+ # block :slime_block, '165', 'slime.png'
419
+ #
420
+ # block :prismarine_bricks, '168:1', 'prismarine_bricks.png'
421
+ # block :dark_prismarine, '168:2', 'prismarine_dark.png'
422
+ block :hay_bale, '170', 'hay_block_top.png'
423
+ #
424
+ block :hardened_clay, '172', 'hardened_clay.png'
425
+ block :block_of_coal, '173', 'coal_block.png'
426
+ # block :packed_ice, '174', 'ice_packed.png'
427
+ #
428
+ # block :red_sandstone, '179', 'red_sandstone_top.png'
429
+ # block :chiseled_red_sandstone, '179:1', 'red_sandstone_carved.png'
430
+ # block :smooth_red_sandstone, '179:2', 'red_sandstone_smooth.png'
431
+
432
+ end
433
+ def add(b)
434
+ @blocks << b
435
+ end
436
+ alias_method :<<,:add
437
+
438
+ def size
439
+ @blocks.size
440
+ end
441
+ alias_method :length,:size
442
+
443
+ def each
444
+ @blocks.each do |b|
445
+ yield b
446
+ end
447
+ end
448
+
449
+ def to_remap_image
450
+ # Make color palette
451
+ new_image = Magick::Image.new(@blocks.size,1){ self.background_color = "white" }
452
+ @blocks.each_with_index do |block,index|
453
+ new_image.pixel_color(index,0,block.to_rmagic_color)
454
+ end
455
+ new_image
456
+ end
457
+
458
+ private
459
+ def block(name, id_data_label, filename)
460
+ # ブロックをリストに入れるためのヘルパーメソッド
461
+ image = Magick::ImageList.new(File.expand_path("../textures/#{filename}", __FILE__))
462
+ r,g,b = MCDotArtMaker.calc_average_color(image.get_pixels(0,0,image.columns,image.rows))
463
+ id = id_data_label.split(':')[0].to_i
464
+ data = id_data_label.split(':')[1].to_i
465
+
466
+ block = Block.new(name,id, data,r,g,b, image[0])
467
+ @blocks << block
468
+ puts "Block #{name} registered. R:#{r} G:#{g} B:#{b}"
469
+ end
470
+ end
471
+ end
@@ -0,0 +1,31 @@
1
+ module MCDotArtMaker
2
+ #= マイクラドット絵のpixelにあたるもの。ブロック1つで表現する
3
+ class Cell
4
+ attr_reader :color
5
+ attr_accessor :block
6
+ def initialize(image,x,y)
7
+ pixel = image.pixel_color(x,y)
8
+ r = pixel.red / 256
9
+ g = pixel.green / 256
10
+ b = pixel.blue / 256
11
+ @color = Color::RGB.new(r, g, b)
12
+ end
13
+ # def set_color(r,g,b)
14
+ # @color = Color::RGB.new(r, g, b)
15
+ # # p "set color #{r} #{g} #{b}"
16
+ # end
17
+ def to_lab
18
+ @color.to_lab
19
+ end
20
+ def to_rmagic_color
21
+ # p "calc color :#{@color.r} #{@color.g} #{@color.b}"
22
+ Magick::Pixel.new(@color.r*256, @color.g*256, @color.b*256)
23
+ end
24
+ def comparitor
25
+ Color::Comparison.new(@color)
26
+ end
27
+ # def image=(other)
28
+ # @image = other.resize(16,16)
29
+ # end
30
+ end
31
+ end
@@ -0,0 +1,167 @@
1
+ # NBTUtilsを開いてデータ書き換えのためのメソッドを定義する
2
+ module NBTUtils
3
+ module Tag
4
+ class ByteArray
5
+ def payload=(new_value)
6
+ @payload = ::BinData::String.new(new_value)
7
+ end
8
+ end
9
+ end
10
+ end
11
+ module NBTUtils
12
+ module Tag
13
+ class Int
14
+ def payload=(new_value)
15
+ @payload = ::BinData::Int32be.new(new_value)
16
+ end
17
+ end
18
+ end
19
+ end
20
+ module NBTUtils
21
+ module Tag
22
+ class Short
23
+ def payload=(new_value)
24
+ @payload = ::BinData::Int16be.new(new_value)
25
+ end
26
+ end
27
+ end
28
+ end
29
+
30
+ module MCDotArtMaker
31
+ class IllegalBlockSizeError < StandardError ; end
32
+
33
+ #= .schematicを処理するためのクラス
34
+ # nbt_utilsをラップして書き込み機能を追加する
35
+ class SchematicHelper
36
+ include Singleton
37
+ attr_reader :blocks,:data
38
+ attr_reader :weOffsetX,:weOffsetY,:weOffsetZ
39
+ attr_reader :weOriginX,:weOriginY,:weOriginZ
40
+ attr_reader :height,:width,:length
41
+ attr_reader :modified
42
+ # @blocks: ブロックのIDデータ
43
+ # ブロックの並び順は -Xから +X方向
44
+ # 次に+Z方向に進んで -Xから +X方向
45
+ # XZ平面のブロックを記述し終えたら +Y方向に1進む
46
+ def initialize
47
+ @file = NBTUtils::File.new
48
+ end
49
+ def read(filename)
50
+ @filename = filename
51
+ init
52
+ @modified = false
53
+ end
54
+ def refresh
55
+ init
56
+ @modified = false
57
+ end
58
+ def to_s
59
+ @tag.to_s
60
+ end
61
+
62
+ def blocks=(other)
63
+ # - other - BlockID の配列
64
+ @blocks = other
65
+ @modified = true
66
+ end
67
+ def data=(other)
68
+ # - other - Data の配列
69
+ @data = other
70
+ @modified = true
71
+ end
72
+ def weOffsetX=(other)
73
+ @weOffsetX = other
74
+ @modified = true
75
+ end
76
+ def weOffsetY=(other)
77
+ @weOffsetY = other
78
+ @modified = true
79
+ end
80
+ def weOffsetZ=(other)
81
+ @weOffsetZ = other
82
+ @modified = true
83
+ end
84
+ def weOriginX=(other)
85
+ @weOriginX = other
86
+ @modified = true
87
+ end
88
+ def weOriginY=(other)
89
+ @weOriginY = other
90
+ @modified = true
91
+ end
92
+ def weOriginZ=(other)
93
+ @weOriginZ = other
94
+ @modified = true
95
+ end
96
+ def height=(other)
97
+ @height = other
98
+ @modified = true
99
+ end
100
+ def width=(other)
101
+ @width = other
102
+ @modified = true
103
+ end
104
+ def length=(other)
105
+ @length = other
106
+ @modified = true
107
+ end
108
+ def write(name)
109
+ raise(IllegalBlockSizeError,"Blocks or Data size doesn't match length*width*height") unless verify
110
+
111
+ @tag.find_tag("Blocks").payload = to_nbt_block
112
+ @tag.find_tag("Data").payload = to_nbt_data
113
+ @tag.find_tag("WEOffsetX").payload = @weOffsetX
114
+ @tag.find_tag("WEOffsetY").payload = @weOffsetY
115
+ @tag.find_tag("WEOffsetZ").payload = @weOffsetZ
116
+ @tag.find_tag("WEOriginX").payload = @weOriginX
117
+ @tag.find_tag("WEOriginY").payload = @weOriginY
118
+ @tag.find_tag("WEOriginZ").payload = @weOriginZ
119
+
120
+ @tag.find_tag("Height").payload = @height
121
+ @tag.find_tag("Width").payload = @width
122
+ @tag.find_tag("Length").payload = @length
123
+
124
+ @file.write(name, @tag, true)
125
+ @modified = false
126
+ end
127
+
128
+ private
129
+ def init
130
+ # .schematicを読みこんで、プロパティを初期化
131
+ @tag = @file.read(@filename)
132
+
133
+ @blocks = []
134
+ @tag.find_tag("Blocks").payload.to_s.split("").each do |s|
135
+ # p blockdata[s.unpack("H*")[0].hex]
136
+ @blocks << s.unpack("H*")[0].hex
137
+ end
138
+ @data = []
139
+ @tag.find_tag("Data").payload.to_s.split("").each do |s|
140
+ # p blockdata[s.unpack("H*")[0].hex]
141
+ @data << s.unpack("H*")[0].hex
142
+ end
143
+
144
+ @weOffsetX = @tag.find_tag("WEOffsetX").payload
145
+ @weOffsetY = @tag.find_tag("WEOffsetY").payload
146
+ @weOffsetZ = @tag.find_tag("WEOffsetZ").payload
147
+ @weOriginX = @tag.find_tag("WEOriginX").payload
148
+ @weOriginY = @tag.find_tag("WEOriginY").payload
149
+ @weOriginZ = @tag.find_tag("WEOriginZ").payload
150
+
151
+ @height = @tag.find_tag("Height").payload
152
+ @width = @tag.find_tag("Width").payload
153
+ @length = @tag.find_tag("Length").payload
154
+ end
155
+ def to_nbt_block
156
+ [@blocks.map{|b| b.to_s(16).rjust(2,"0") }.join].pack("H*")
157
+ end
158
+ def to_nbt_data
159
+ [@data.map{|d| d.to_s(16).rjust(2,"0") }.join].pack("H*")
160
+ end
161
+ def verify
162
+ # ブロック数とデータ数が等しいか、Width * Length * height がブロック数と等しいか計算
163
+ size = @width * @height * @length
164
+ (@blocks.size == size) && (@data.size == size)
165
+ end
166
+ end
167
+ end
Binary file