mc_dot_art_maker 0.3.2 → 0.3.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (473) hide show
  1. checksums.yaml +4 -4
  2. data/lib/mc_dot_art_maker/block.rb +2 -2
  3. data/lib/mc_dot_art_maker/block_list.rb +29 -5
  4. data/lib/mc_dot_art_maker/maker.rb +1 -1
  5. data/lib/mc_dot_art_maker/texture_loader.rb +107 -0
  6. data/lib/mc_dot_art_maker/textures/brick.png +0 -0
  7. data/lib/mc_dot_art_maker/textures/clay.png +0 -0
  8. data/lib/mc_dot_art_maker/textures/coal_block.png +0 -0
  9. data/lib/mc_dot_art_maker/textures/diamond_block.png +0 -0
  10. data/lib/mc_dot_art_maker/textures/emerald_block.png +0 -0
  11. data/lib/mc_dot_art_maker/textures/glowstone.png +0 -0
  12. data/lib/mc_dot_art_maker/textures/gold_block.png +0 -0
  13. data/lib/mc_dot_art_maker/textures/hardened_clay.png +0 -0
  14. data/lib/mc_dot_art_maker/textures/hardened_clay_stained_black.png +0 -0
  15. data/lib/mc_dot_art_maker/textures/hardened_clay_stained_blue.png +0 -0
  16. data/lib/mc_dot_art_maker/textures/hardened_clay_stained_brown.png +0 -0
  17. data/lib/mc_dot_art_maker/textures/hardened_clay_stained_cyan.png +0 -0
  18. data/lib/mc_dot_art_maker/textures/hardened_clay_stained_gray.png +0 -0
  19. data/lib/mc_dot_art_maker/textures/hardened_clay_stained_green.png +0 -0
  20. data/lib/mc_dot_art_maker/textures/hardened_clay_stained_light_blue.png +0 -0
  21. data/lib/mc_dot_art_maker/textures/hardened_clay_stained_lime.png +0 -0
  22. data/lib/mc_dot_art_maker/textures/hardened_clay_stained_magenta.png +0 -0
  23. data/lib/mc_dot_art_maker/textures/hardened_clay_stained_orange.png +0 -0
  24. data/lib/mc_dot_art_maker/textures/hardened_clay_stained_pink.png +0 -0
  25. data/lib/mc_dot_art_maker/textures/hardened_clay_stained_purple.png +0 -0
  26. data/lib/mc_dot_art_maker/textures/hardened_clay_stained_red.png +0 -0
  27. data/lib/mc_dot_art_maker/textures/hardened_clay_stained_silver.png +0 -0
  28. data/lib/mc_dot_art_maker/textures/hardened_clay_stained_white.png +0 -0
  29. data/lib/mc_dot_art_maker/textures/hardened_clay_stained_yellow.png +0 -0
  30. data/lib/mc_dot_art_maker/textures/hay_block_top.png +0 -0
  31. data/lib/mc_dot_art_maker/textures/ice.png +0 -0
  32. data/lib/mc_dot_art_maker/textures/iron_block.png +0 -0
  33. data/lib/mc_dot_art_maker/textures/lapis_block.png +0 -0
  34. data/lib/mc_dot_art_maker/textures/melon_top.png +0 -0
  35. data/lib/mc_dot_art_maker/textures/nether_brick.png +0 -0
  36. data/lib/mc_dot_art_maker/textures/obsidian.png +0 -0
  37. data/lib/mc_dot_art_maker/textures/planks_birch.png +0 -0
  38. data/lib/mc_dot_art_maker/textures/planks_jungle.png +0 -0
  39. data/lib/mc_dot_art_maker/textures/planks_oak.png +0 -0
  40. data/lib/mc_dot_art_maker/textures/planks_spruce.png +0 -0
  41. data/lib/mc_dot_art_maker/textures/quartz_block_chiseled_top.png +0 -0
  42. data/lib/mc_dot_art_maker/textures/redstone_block.png +0 -0
  43. data/lib/mc_dot_art_maker/textures/sandstone_top.png +0 -0
  44. data/lib/mc_dot_art_maker/textures/soul_sand.png +0 -0
  45. data/lib/mc_dot_art_maker/textures/sponge.png +0 -0
  46. data/lib/mc_dot_art_maker/textures/stonebrick_carved.png +0 -0
  47. data/lib/mc_dot_art_maker/textures/stonebrick_mossy.png +0 -0
  48. data/lib/mc_dot_art_maker/textures/tmp/1.9.jar +0 -0
  49. data/lib/mc_dot_art_maker/textures/wool_colored_black.png +0 -0
  50. data/lib/mc_dot_art_maker/textures/wool_colored_blue.png +0 -0
  51. data/lib/mc_dot_art_maker/textures/wool_colored_brown.png +0 -0
  52. data/lib/mc_dot_art_maker/textures/wool_colored_cyan.png +0 -0
  53. data/lib/mc_dot_art_maker/textures/wool_colored_gray.png +0 -0
  54. data/lib/mc_dot_art_maker/textures/wool_colored_green.png +0 -0
  55. data/lib/mc_dot_art_maker/textures/wool_colored_light_blue.png +0 -0
  56. data/lib/mc_dot_art_maker/textures/wool_colored_lime.png +0 -0
  57. data/lib/mc_dot_art_maker/textures/wool_colored_magenta.png +0 -0
  58. data/lib/mc_dot_art_maker/textures/wool_colored_orange.png +0 -0
  59. data/lib/mc_dot_art_maker/textures/wool_colored_pink.png +0 -0
  60. data/lib/mc_dot_art_maker/textures/wool_colored_purple.png +0 -0
  61. data/lib/mc_dot_art_maker/textures/wool_colored_red.png +0 -0
  62. data/lib/mc_dot_art_maker/textures/wool_colored_silver.png +0 -0
  63. data/lib/mc_dot_art_maker/textures/wool_colored_white.png +0 -0
  64. data/lib/mc_dot_art_maker/textures/wool_colored_yellow.png +0 -0
  65. data/lib/mc_dot_art_maker.rb +3 -0
  66. data/mc_dot_art_maker.gemspec +1 -1
  67. data/test/images/sample/dither_methods_FloydSteinbergDitherMethod.png +0 -0
  68. data/test/images/sample/dither_methods_NoDitherMethod.png +0 -0
  69. data/test/images/sample/dither_methods_RiemersmaDitherMethod.png +0 -0
  70. data/test/images/sample/normal_conversion_mosaic.png +0 -0
  71. data/test/images/sample/normal_conversion_schematic.schematic +0 -0
  72. data/test/images/sample/normal_conversion_texture.png +0 -0
  73. data/test/images/sample/palette.png +0 -0
  74. data/test/{test_image.jpg → images/src/test_image.jpg} +0 -0
  75. data/test/images/tmp/dither_methods_FloydSteinbergDitherMethod.png +0 -0
  76. data/test/images/tmp/dither_methods_NoDitherMethod.png +0 -0
  77. data/test/images/tmp/dither_methods_RiemersmaDitherMethod.png +0 -0
  78. data/test/test_block_list.rb +27 -0
  79. data/test/test_block_palette.rb +23 -2
  80. data/test/test_dither_method.rb +23 -5
  81. data/test/test_normal_conversion.rb +30 -0
  82. data/test/test_texture_loader.rb +50 -0
  83. data/{lib/mc_dot_art_maker/textures → textures}/anvil_base.png +0 -0
  84. data/{lib/mc_dot_art_maker/textures → textures}/anvil_top_damaged_0.png +0 -0
  85. data/{lib/mc_dot_art_maker/textures → textures}/anvil_top_damaged_1.png +0 -0
  86. data/{lib/mc_dot_art_maker/textures → textures}/anvil_top_damaged_2.png +0 -0
  87. data/{lib/mc_dot_art_maker/textures → textures}/beacon.png +0 -0
  88. data/{lib/mc_dot_art_maker/textures → textures}/bed_feet_end.png +0 -0
  89. data/{lib/mc_dot_art_maker/textures → textures}/bed_feet_side.png +0 -0
  90. data/{lib/mc_dot_art_maker/textures → textures}/bed_feet_top.png +0 -0
  91. data/{lib/mc_dot_art_maker/textures → textures}/bed_head_end.png +0 -0
  92. data/{lib/mc_dot_art_maker/textures → textures}/bed_head_side.png +0 -0
  93. data/{lib/mc_dot_art_maker/textures → textures}/bed_head_top.png +0 -0
  94. data/{lib/mc_dot_art_maker/textures → textures}/bedrock.png +0 -0
  95. data/{lib/mc_dot_art_maker/textures → textures}/bookshelf.png +0 -0
  96. data/{lib/mc_dot_art_maker/textures → textures}/brewing_stand.png +0 -0
  97. data/{lib/mc_dot_art_maker/textures → textures}/brewing_stand_base.png +0 -0
  98. data/textures/brick.png +0 -0
  99. data/{lib/mc_dot_art_maker/textures → textures}/cactus_bottom.png +0 -0
  100. data/{lib/mc_dot_art_maker/textures → textures}/cactus_side.png +0 -0
  101. data/{lib/mc_dot_art_maker/textures → textures}/cactus_top.png +0 -0
  102. data/{lib/mc_dot_art_maker/textures → textures}/cake_bottom.png +0 -0
  103. data/{lib/mc_dot_art_maker/textures → textures}/cake_inner.png +0 -0
  104. data/{lib/mc_dot_art_maker/textures → textures}/cake_side.png +0 -0
  105. data/{lib/mc_dot_art_maker/textures → textures}/cake_top.png +0 -0
  106. data/{lib/mc_dot_art_maker/textures → textures}/carrots_stage_0.png +0 -0
  107. data/{lib/mc_dot_art_maker/textures → textures}/carrots_stage_1.png +0 -0
  108. data/{lib/mc_dot_art_maker/textures → textures}/carrots_stage_2.png +0 -0
  109. data/{lib/mc_dot_art_maker/textures → textures}/carrots_stage_3.png +0 -0
  110. data/{lib/mc_dot_art_maker/textures → textures}/cauldron_bottom.png +0 -0
  111. data/{lib/mc_dot_art_maker/textures → textures}/cauldron_inner.png +0 -0
  112. data/{lib/mc_dot_art_maker/textures → textures}/cauldron_side.png +0 -0
  113. data/{lib/mc_dot_art_maker/textures → textures}/cauldron_top.png +0 -0
  114. data/textures/clay.png +0 -0
  115. data/textures/coal_block.png +0 -0
  116. data/{lib/mc_dot_art_maker/textures → textures}/coal_ore.png +0 -0
  117. data/{lib/mc_dot_art_maker/textures → textures}/coarse_dirt.png +0 -0
  118. data/{lib/mc_dot_art_maker/textures → textures}/cobblestone.png +0 -0
  119. data/{lib/mc_dot_art_maker/textures → textures}/cobblestone_mossy.png +0 -0
  120. data/{lib/mc_dot_art_maker/textures → textures}/cocoa_stage_0.png +0 -0
  121. data/{lib/mc_dot_art_maker/textures → textures}/cocoa_stage_1.png +0 -0
  122. data/{lib/mc_dot_art_maker/textures → textures}/cocoa_stage_2.png +0 -0
  123. data/{lib/mc_dot_art_maker/textures → textures}/command_block.png +0 -0
  124. data/{lib/mc_dot_art_maker/textures → textures}/comparator_off.png +0 -0
  125. data/{lib/mc_dot_art_maker/textures → textures}/comparator_on.png +0 -0
  126. data/{lib/mc_dot_art_maker/textures → textures}/crafting_table_front.png +0 -0
  127. data/{lib/mc_dot_art_maker/textures → textures}/crafting_table_side.png +0 -0
  128. data/{lib/mc_dot_art_maker/textures → textures}/crafting_table_top.png +0 -0
  129. data/{lib/mc_dot_art_maker/textures → textures}/daylight_detector_inverted_top.png +0 -0
  130. data/{lib/mc_dot_art_maker/textures → textures}/daylight_detector_side.png +0 -0
  131. data/{lib/mc_dot_art_maker/textures → textures}/daylight_detector_top.png +0 -0
  132. data/{lib/mc_dot_art_maker/textures → textures}/deadbush.png +0 -0
  133. data/{lib/mc_dot_art_maker/textures → textures}/destroy_stage_0.png +0 -0
  134. data/{lib/mc_dot_art_maker/textures → textures}/destroy_stage_1.png +0 -0
  135. data/{lib/mc_dot_art_maker/textures → textures}/destroy_stage_2.png +0 -0
  136. data/{lib/mc_dot_art_maker/textures → textures}/destroy_stage_3.png +0 -0
  137. data/{lib/mc_dot_art_maker/textures → textures}/destroy_stage_4.png +0 -0
  138. data/{lib/mc_dot_art_maker/textures → textures}/destroy_stage_5.png +0 -0
  139. data/{lib/mc_dot_art_maker/textures → textures}/destroy_stage_6.png +0 -0
  140. data/{lib/mc_dot_art_maker/textures → textures}/destroy_stage_7.png +0 -0
  141. data/{lib/mc_dot_art_maker/textures → textures}/destroy_stage_8.png +0 -0
  142. data/{lib/mc_dot_art_maker/textures → textures}/destroy_stage_9.png +0 -0
  143. data/textures/diamond_block.png +0 -0
  144. data/{lib/mc_dot_art_maker/textures → textures}/diamond_ore.png +0 -0
  145. data/{lib/mc_dot_art_maker/textures → textures}/dirt.png +0 -0
  146. data/{lib/mc_dot_art_maker/textures → textures}/dirt_podzol_side.png +0 -0
  147. data/{lib/mc_dot_art_maker/textures → textures}/dirt_podzol_top.png +0 -0
  148. data/{lib/mc_dot_art_maker/textures → textures}/dispenser_front_horizontal.png +0 -0
  149. data/{lib/mc_dot_art_maker/textures → textures}/dispenser_front_vertical.png +0 -0
  150. data/{lib/mc_dot_art_maker/textures → textures}/door_acacia_lower.png +0 -0
  151. data/{lib/mc_dot_art_maker/textures → textures}/door_acacia_upper.png +0 -0
  152. data/{lib/mc_dot_art_maker/textures → textures}/door_birch_lower.png +0 -0
  153. data/{lib/mc_dot_art_maker/textures → textures}/door_birch_upper.png +0 -0
  154. data/{lib/mc_dot_art_maker/textures → textures}/door_dark_oak_lower.png +0 -0
  155. data/{lib/mc_dot_art_maker/textures → textures}/door_dark_oak_upper.png +0 -0
  156. data/{lib/mc_dot_art_maker/textures → textures}/door_iron_lower.png +0 -0
  157. data/{lib/mc_dot_art_maker/textures → textures}/door_iron_upper.png +0 -0
  158. data/{lib/mc_dot_art_maker/textures → textures}/door_jungle_lower.png +0 -0
  159. data/{lib/mc_dot_art_maker/textures → textures}/door_jungle_upper.png +0 -0
  160. data/{lib/mc_dot_art_maker/textures → textures}/door_spruce_lower.png +0 -0
  161. data/{lib/mc_dot_art_maker/textures → textures}/door_spruce_upper.png +0 -0
  162. data/{lib/mc_dot_art_maker/textures → textures}/door_wood_lower.png +0 -0
  163. data/{lib/mc_dot_art_maker/textures → textures}/door_wood_upper.png +0 -0
  164. data/{lib/mc_dot_art_maker/textures → textures}/double_plant_fern_bottom.png +0 -0
  165. data/{lib/mc_dot_art_maker/textures → textures}/double_plant_fern_top.png +0 -0
  166. data/{lib/mc_dot_art_maker/textures → textures}/double_plant_grass_bottom.png +0 -0
  167. data/{lib/mc_dot_art_maker/textures → textures}/double_plant_grass_top.png +0 -0
  168. data/{lib/mc_dot_art_maker/textures → textures}/double_plant_paeonia_bottom.png +0 -0
  169. data/{lib/mc_dot_art_maker/textures → textures}/double_plant_paeonia_top.png +0 -0
  170. data/{lib/mc_dot_art_maker/textures → textures}/double_plant_rose_bottom.png +0 -0
  171. data/{lib/mc_dot_art_maker/textures → textures}/double_plant_rose_top.png +0 -0
  172. data/{lib/mc_dot_art_maker/textures → textures}/double_plant_sunflower_back.png +0 -0
  173. data/{lib/mc_dot_art_maker/textures → textures}/double_plant_sunflower_bottom.png +0 -0
  174. data/{lib/mc_dot_art_maker/textures → textures}/double_plant_sunflower_front.png +0 -0
  175. data/{lib/mc_dot_art_maker/textures → textures}/double_plant_sunflower_top.png +0 -0
  176. data/{lib/mc_dot_art_maker/textures → textures}/double_plant_syringa_bottom.png +0 -0
  177. data/{lib/mc_dot_art_maker/textures → textures}/double_plant_syringa_top.png +0 -0
  178. data/{lib/mc_dot_art_maker/textures → textures}/dragon_egg.png +0 -0
  179. data/{lib/mc_dot_art_maker/textures → textures}/dropper_front_horizontal.png +0 -0
  180. data/{lib/mc_dot_art_maker/textures → textures}/dropper_front_vertical.png +0 -0
  181. data/textures/emerald_block.png +0 -0
  182. data/{lib/mc_dot_art_maker/textures → textures}/emerald_ore.png +0 -0
  183. data/{lib/mc_dot_art_maker/textures → textures}/enchanting_table_bottom.png +0 -0
  184. data/{lib/mc_dot_art_maker/textures → textures}/enchanting_table_side.png +0 -0
  185. data/{lib/mc_dot_art_maker/textures → textures}/enchanting_table_top.png +0 -0
  186. data/{lib/mc_dot_art_maker/textures → textures}/end_stone.png +0 -0
  187. data/{lib/mc_dot_art_maker/textures → textures}/endframe_eye.png +0 -0
  188. data/{lib/mc_dot_art_maker/textures → textures}/endframe_side.png +0 -0
  189. data/{lib/mc_dot_art_maker/textures → textures}/endframe_top.png +0 -0
  190. data/{lib/mc_dot_art_maker/textures → textures}/farmland_dry.png +0 -0
  191. data/{lib/mc_dot_art_maker/textures → textures}/farmland_wet.png +0 -0
  192. data/{lib/mc_dot_art_maker/textures → textures}/fern.png +0 -0
  193. data/{lib/mc_dot_art_maker/textures → textures}/fire_layer_0.png +0 -0
  194. data/{lib/mc_dot_art_maker/textures → textures}/fire_layer_0.png.mcmeta +0 -0
  195. data/{lib/mc_dot_art_maker/textures → textures}/fire_layer_1.png +0 -0
  196. data/{lib/mc_dot_art_maker/textures → textures}/fire_layer_1.png.mcmeta +0 -0
  197. data/{lib/mc_dot_art_maker/textures → textures}/flower_allium.png +0 -0
  198. data/{lib/mc_dot_art_maker/textures → textures}/flower_blue_orchid.png +0 -0
  199. data/{lib/mc_dot_art_maker/textures → textures}/flower_dandelion.png +0 -0
  200. data/{lib/mc_dot_art_maker/textures → textures}/flower_houstonia.png +0 -0
  201. data/{lib/mc_dot_art_maker/textures → textures}/flower_oxeye_daisy.png +0 -0
  202. data/{lib/mc_dot_art_maker/textures → textures}/flower_paeonia.png +0 -0
  203. data/{lib/mc_dot_art_maker/textures → textures}/flower_pot.png +0 -0
  204. data/{lib/mc_dot_art_maker/textures → textures}/flower_rose.png +0 -0
  205. data/{lib/mc_dot_art_maker/textures → textures}/flower_tulip_orange.png +0 -0
  206. data/{lib/mc_dot_art_maker/textures → textures}/flower_tulip_pink.png +0 -0
  207. data/{lib/mc_dot_art_maker/textures → textures}/flower_tulip_red.png +0 -0
  208. data/{lib/mc_dot_art_maker/textures → textures}/flower_tulip_white.png +0 -0
  209. data/{lib/mc_dot_art_maker/textures → textures}/furnace_front_off.png +0 -0
  210. data/{lib/mc_dot_art_maker/textures → textures}/furnace_front_on.png +0 -0
  211. data/{lib/mc_dot_art_maker/textures → textures}/furnace_side.png +0 -0
  212. data/{lib/mc_dot_art_maker/textures → textures}/furnace_top.png +0 -0
  213. data/{lib/mc_dot_art_maker/textures → textures}/glass.png +0 -0
  214. data/{lib/mc_dot_art_maker/textures → textures}/glass_black.png +0 -0
  215. data/{lib/mc_dot_art_maker/textures → textures}/glass_blue.png +0 -0
  216. data/{lib/mc_dot_art_maker/textures → textures}/glass_brown.png +0 -0
  217. data/{lib/mc_dot_art_maker/textures → textures}/glass_cyan.png +0 -0
  218. data/{lib/mc_dot_art_maker/textures → textures}/glass_gray.png +0 -0
  219. data/{lib/mc_dot_art_maker/textures → textures}/glass_green.png +0 -0
  220. data/{lib/mc_dot_art_maker/textures → textures}/glass_light_blue.png +0 -0
  221. data/{lib/mc_dot_art_maker/textures → textures}/glass_lime.png +0 -0
  222. data/{lib/mc_dot_art_maker/textures → textures}/glass_magenta.png +0 -0
  223. data/{lib/mc_dot_art_maker/textures → textures}/glass_orange.png +0 -0
  224. data/{lib/mc_dot_art_maker/textures → textures}/glass_pane_top.png +0 -0
  225. data/{lib/mc_dot_art_maker/textures → textures}/glass_pane_top_black.png +0 -0
  226. data/{lib/mc_dot_art_maker/textures → textures}/glass_pane_top_blue.png +0 -0
  227. data/{lib/mc_dot_art_maker/textures → textures}/glass_pane_top_brown.png +0 -0
  228. data/{lib/mc_dot_art_maker/textures → textures}/glass_pane_top_cyan.png +0 -0
  229. data/{lib/mc_dot_art_maker/textures → textures}/glass_pane_top_gray.png +0 -0
  230. data/{lib/mc_dot_art_maker/textures → textures}/glass_pane_top_green.png +0 -0
  231. data/{lib/mc_dot_art_maker/textures → textures}/glass_pane_top_light_blue.png +0 -0
  232. data/{lib/mc_dot_art_maker/textures → textures}/glass_pane_top_lime.png +0 -0
  233. data/{lib/mc_dot_art_maker/textures → textures}/glass_pane_top_magenta.png +0 -0
  234. data/{lib/mc_dot_art_maker/textures → textures}/glass_pane_top_orange.png +0 -0
  235. data/{lib/mc_dot_art_maker/textures → textures}/glass_pane_top_pink.png +0 -0
  236. data/{lib/mc_dot_art_maker/textures → textures}/glass_pane_top_purple.png +0 -0
  237. data/{lib/mc_dot_art_maker/textures → textures}/glass_pane_top_red.png +0 -0
  238. data/{lib/mc_dot_art_maker/textures → textures}/glass_pane_top_silver.png +0 -0
  239. data/{lib/mc_dot_art_maker/textures → textures}/glass_pane_top_white.png +0 -0
  240. data/{lib/mc_dot_art_maker/textures → textures}/glass_pane_top_yellow.png +0 -0
  241. data/{lib/mc_dot_art_maker/textures → textures}/glass_pink.png +0 -0
  242. data/{lib/mc_dot_art_maker/textures → textures}/glass_purple.png +0 -0
  243. data/{lib/mc_dot_art_maker/textures → textures}/glass_red.png +0 -0
  244. data/{lib/mc_dot_art_maker/textures → textures}/glass_silver.png +0 -0
  245. data/{lib/mc_dot_art_maker/textures → textures}/glass_white.png +0 -0
  246. data/{lib/mc_dot_art_maker/textures → textures}/glass_yellow.png +0 -0
  247. data/textures/glowstone.png +0 -0
  248. data/textures/gold_block.png +0 -0
  249. data/{lib/mc_dot_art_maker/textures → textures}/gold_ore.png +0 -0
  250. data/{lib/mc_dot_art_maker/textures → textures}/grass_side.png +0 -0
  251. data/{lib/mc_dot_art_maker/textures → textures}/grass_side_overlay.png +0 -0
  252. data/{lib/mc_dot_art_maker/textures → textures}/grass_side_snowed.png +0 -0
  253. data/{lib/mc_dot_art_maker/textures → textures}/grass_top.png +0 -0
  254. data/{lib/mc_dot_art_maker/textures → textures}/gravel.png +0 -0
  255. data/textures/hardened_clay.png +0 -0
  256. data/textures/hardened_clay_stained_black.png +0 -0
  257. data/textures/hardened_clay_stained_blue.png +0 -0
  258. data/textures/hardened_clay_stained_brown.png +0 -0
  259. data/textures/hardened_clay_stained_cyan.png +0 -0
  260. data/textures/hardened_clay_stained_gray.png +0 -0
  261. data/textures/hardened_clay_stained_green.png +0 -0
  262. data/textures/hardened_clay_stained_light_blue.png +0 -0
  263. data/textures/hardened_clay_stained_lime.png +0 -0
  264. data/textures/hardened_clay_stained_magenta.png +0 -0
  265. data/textures/hardened_clay_stained_orange.png +0 -0
  266. data/textures/hardened_clay_stained_pink.png +0 -0
  267. data/textures/hardened_clay_stained_purple.png +0 -0
  268. data/textures/hardened_clay_stained_red.png +0 -0
  269. data/textures/hardened_clay_stained_silver.png +0 -0
  270. data/textures/hardened_clay_stained_white.png +0 -0
  271. data/textures/hardened_clay_stained_yellow.png +0 -0
  272. data/{lib/mc_dot_art_maker/textures → textures}/hay_block_side.png +0 -0
  273. data/textures/hay_block_top.png +0 -0
  274. data/{lib/mc_dot_art_maker/textures → textures}/hopper_inside.png +0 -0
  275. data/{lib/mc_dot_art_maker/textures → textures}/hopper_outside.png +0 -0
  276. data/{lib/mc_dot_art_maker/textures → textures}/hopper_top.png +0 -0
  277. data/textures/ice.png +0 -0
  278. data/{lib/mc_dot_art_maker/textures → textures}/ice_packed.png +0 -0
  279. data/{lib/mc_dot_art_maker/textures → textures}/iron_bars.png +0 -0
  280. data/textures/iron_block.png +0 -0
  281. data/{lib/mc_dot_art_maker/textures → textures}/iron_ore.png +0 -0
  282. data/{lib/mc_dot_art_maker/textures → textures}/iron_trapdoor.png +0 -0
  283. data/{lib/mc_dot_art_maker/textures → textures}/itemframe_background.png +0 -0
  284. data/{lib/mc_dot_art_maker/textures → textures}/jukebox_side.png +0 -0
  285. data/{lib/mc_dot_art_maker/textures → textures}/jukebox_top.png +0 -0
  286. data/{lib/mc_dot_art_maker/textures → textures}/ladder.png +0 -0
  287. data/textures/lapis_block.png +0 -0
  288. data/{lib/mc_dot_art_maker/textures → textures}/lapis_ore.png +0 -0
  289. data/{lib/mc_dot_art_maker/textures → textures}/lava_flow.png +0 -0
  290. data/{lib/mc_dot_art_maker/textures → textures}/lava_flow.png.mcmeta +0 -0
  291. data/{lib/mc_dot_art_maker/textures → textures}/lava_still.png +0 -0
  292. data/{lib/mc_dot_art_maker/textures → textures}/lava_still.png.mcmeta +0 -0
  293. data/{lib/mc_dot_art_maker/textures → textures}/leaves_acacia.png +0 -0
  294. data/{lib/mc_dot_art_maker/textures → textures}/leaves_big_oak.png +0 -0
  295. data/{lib/mc_dot_art_maker/textures → textures}/leaves_birch.png +0 -0
  296. data/{lib/mc_dot_art_maker/textures → textures}/leaves_jungle.png +0 -0
  297. data/{lib/mc_dot_art_maker/textures → textures}/leaves_oak.png +0 -0
  298. data/{lib/mc_dot_art_maker/textures → textures}/leaves_spruce.png +0 -0
  299. data/{lib/mc_dot_art_maker/textures → textures}/lever.png +0 -0
  300. data/{lib/mc_dot_art_maker/textures → textures}/log_acacia.png +0 -0
  301. data/{lib/mc_dot_art_maker/textures → textures}/log_acacia_top.png +0 -0
  302. data/{lib/mc_dot_art_maker/textures → textures}/log_big_oak.png +0 -0
  303. data/{lib/mc_dot_art_maker/textures → textures}/log_big_oak_top.png +0 -0
  304. data/{lib/mc_dot_art_maker/textures → textures}/log_birch.png +0 -0
  305. data/{lib/mc_dot_art_maker/textures → textures}/log_birch_top.png +0 -0
  306. data/{lib/mc_dot_art_maker/textures → textures}/log_jungle.png +0 -0
  307. data/{lib/mc_dot_art_maker/textures → textures}/log_jungle_top.png +0 -0
  308. data/{lib/mc_dot_art_maker/textures → textures}/log_oak.png +0 -0
  309. data/{lib/mc_dot_art_maker/textures → textures}/log_oak_top.png +0 -0
  310. data/{lib/mc_dot_art_maker/textures → textures}/log_spruce.png +0 -0
  311. data/{lib/mc_dot_art_maker/textures → textures}/log_spruce_top.png +0 -0
  312. data/{lib/mc_dot_art_maker/textures → textures}/melon_side.png +0 -0
  313. data/{lib/mc_dot_art_maker/textures → textures}/melon_stem_connected.png +0 -0
  314. data/{lib/mc_dot_art_maker/textures → textures}/melon_stem_disconnected.png +0 -0
  315. data/textures/melon_top.png +0 -0
  316. data/{lib/mc_dot_art_maker/textures → textures}/mob_spawner.png +0 -0
  317. data/{lib/mc_dot_art_maker/textures → textures}/mushroom_block_inside.png +0 -0
  318. data/{lib/mc_dot_art_maker/textures → textures}/mushroom_block_skin_brown.png +0 -0
  319. data/{lib/mc_dot_art_maker/textures → textures}/mushroom_block_skin_red.png +0 -0
  320. data/{lib/mc_dot_art_maker/textures → textures}/mushroom_block_skin_stem.png +0 -0
  321. data/{lib/mc_dot_art_maker/textures → textures}/mushroom_brown.png +0 -0
  322. data/{lib/mc_dot_art_maker/textures → textures}/mushroom_red.png +0 -0
  323. data/{lib/mc_dot_art_maker/textures → textures}/mycelium_side.png +0 -0
  324. data/{lib/mc_dot_art_maker/textures → textures}/mycelium_top.png +0 -0
  325. data/textures/nether_brick.png +0 -0
  326. data/{lib/mc_dot_art_maker/textures → textures}/nether_wart_stage_0.png +0 -0
  327. data/{lib/mc_dot_art_maker/textures → textures}/nether_wart_stage_1.png +0 -0
  328. data/{lib/mc_dot_art_maker/textures → textures}/nether_wart_stage_2.png +0 -0
  329. data/{lib/mc_dot_art_maker/textures → textures}/netherrack.png +0 -0
  330. data/{lib/mc_dot_art_maker/textures → textures}/noteblock.png +0 -0
  331. data/textures/obsidian.png +0 -0
  332. data/{lib/mc_dot_art_maker/textures → textures}/piston_bottom.png +0 -0
  333. data/{lib/mc_dot_art_maker/textures → textures}/piston_inner.png +0 -0
  334. data/{lib/mc_dot_art_maker/textures → textures}/piston_side.png +0 -0
  335. data/{lib/mc_dot_art_maker/textures → textures}/piston_top_normal.png +0 -0
  336. data/{lib/mc_dot_art_maker/textures → textures}/piston_top_sticky.png +0 -0
  337. data/{lib/mc_dot_art_maker/textures → textures}/planks_acacia.png +0 -0
  338. data/{lib/mc_dot_art_maker/textures → textures}/planks_big_oak.png +0 -0
  339. data/textures/planks_birch.png +0 -0
  340. data/textures/planks_jungle.png +0 -0
  341. data/textures/planks_oak.png +0 -0
  342. data/textures/planks_spruce.png +0 -0
  343. data/{lib/mc_dot_art_maker/textures → textures}/portal.png +0 -0
  344. data/{lib/mc_dot_art_maker/textures → textures}/portal.png.mcmeta +0 -0
  345. data/{lib/mc_dot_art_maker/textures → textures}/potatoes_stage_0.png +0 -0
  346. data/{lib/mc_dot_art_maker/textures → textures}/potatoes_stage_1.png +0 -0
  347. data/{lib/mc_dot_art_maker/textures → textures}/potatoes_stage_2.png +0 -0
  348. data/{lib/mc_dot_art_maker/textures → textures}/potatoes_stage_3.png +0 -0
  349. data/{lib/mc_dot_art_maker/textures → textures}/prismarine_bricks.png +0 -0
  350. data/{lib/mc_dot_art_maker/textures → textures}/prismarine_dark.png +0 -0
  351. data/{lib/mc_dot_art_maker/textures → textures}/prismarine_rough.png +0 -0
  352. data/{lib/mc_dot_art_maker/textures → textures}/prismarine_rough.png.mcmeta +0 -0
  353. data/{lib/mc_dot_art_maker/textures → textures}/pumpkin_face_off.png +0 -0
  354. data/{lib/mc_dot_art_maker/textures → textures}/pumpkin_face_on.png +0 -0
  355. data/{lib/mc_dot_art_maker/textures → textures}/pumpkin_side.png +0 -0
  356. data/{lib/mc_dot_art_maker/textures → textures}/pumpkin_stem_connected.png +0 -0
  357. data/{lib/mc_dot_art_maker/textures → textures}/pumpkin_stem_disconnected.png +0 -0
  358. data/{lib/mc_dot_art_maker/textures → textures}/pumpkin_top.png +0 -0
  359. data/{lib/mc_dot_art_maker/textures → textures}/quartz_block_bottom.png +0 -0
  360. data/{lib/mc_dot_art_maker/textures → textures}/quartz_block_chiseled.png +0 -0
  361. data/textures/quartz_block_chiseled_top.png +0 -0
  362. data/{lib/mc_dot_art_maker/textures → textures}/quartz_block_lines.png +0 -0
  363. data/{lib/mc_dot_art_maker/textures → textures}/quartz_block_lines_top.png +0 -0
  364. data/{lib/mc_dot_art_maker/textures → textures}/quartz_block_side.png +0 -0
  365. data/{lib/mc_dot_art_maker/textures → textures}/quartz_block_top.png +0 -0
  366. data/{lib/mc_dot_art_maker/textures → textures}/quartz_ore.png +0 -0
  367. data/{lib/mc_dot_art_maker/textures → textures}/rail_activator.png +0 -0
  368. data/{lib/mc_dot_art_maker/textures → textures}/rail_activator_powered.png +0 -0
  369. data/{lib/mc_dot_art_maker/textures → textures}/rail_detector.png +0 -0
  370. data/{lib/mc_dot_art_maker/textures → textures}/rail_detector_powered.png +0 -0
  371. data/{lib/mc_dot_art_maker/textures → textures}/rail_golden.png +0 -0
  372. data/{lib/mc_dot_art_maker/textures → textures}/rail_golden_powered.png +0 -0
  373. data/{lib/mc_dot_art_maker/textures → textures}/rail_normal.png +0 -0
  374. data/{lib/mc_dot_art_maker/textures → textures}/rail_normal_turned.png +0 -0
  375. data/{lib/mc_dot_art_maker/textures → textures}/red_sand.png +0 -0
  376. data/{lib/mc_dot_art_maker/textures → textures}/red_sandstone_bottom.png +0 -0
  377. data/{lib/mc_dot_art_maker/textures → textures}/red_sandstone_carved.png +0 -0
  378. data/{lib/mc_dot_art_maker/textures → textures}/red_sandstone_normal.png +0 -0
  379. data/{lib/mc_dot_art_maker/textures → textures}/red_sandstone_smooth.png +0 -0
  380. data/{lib/mc_dot_art_maker/textures → textures}/red_sandstone_top.png +0 -0
  381. data/textures/redstone_block.png +0 -0
  382. data/{lib/mc_dot_art_maker/textures → textures}/redstone_dust_cross.png +0 -0
  383. data/{lib/mc_dot_art_maker/textures → textures}/redstone_dust_cross_overlay.png +0 -0
  384. data/{lib/mc_dot_art_maker/textures → textures}/redstone_dust_line.png +0 -0
  385. data/{lib/mc_dot_art_maker/textures → textures}/redstone_dust_line_overlay.png +0 -0
  386. data/{lib/mc_dot_art_maker/textures → textures}/redstone_lamp_off.png +0 -0
  387. data/{lib/mc_dot_art_maker/textures → textures}/redstone_lamp_on.png +0 -0
  388. data/{lib/mc_dot_art_maker/textures → textures}/redstone_ore.png +0 -0
  389. data/{lib/mc_dot_art_maker/textures → textures}/redstone_torch_off.png +0 -0
  390. data/{lib/mc_dot_art_maker/textures → textures}/redstone_torch_on.png +0 -0
  391. data/{lib/mc_dot_art_maker/textures → textures}/reeds.png +0 -0
  392. data/{lib/mc_dot_art_maker/textures → textures}/repeater_off.png +0 -0
  393. data/{lib/mc_dot_art_maker/textures → textures}/repeater_on.png +0 -0
  394. data/{lib/mc_dot_art_maker/textures → textures}/sand.png +0 -0
  395. data/{lib/mc_dot_art_maker/textures → textures}/sandstone_bottom.png +0 -0
  396. data/{lib/mc_dot_art_maker/textures → textures}/sandstone_carved.png +0 -0
  397. data/{lib/mc_dot_art_maker/textures → textures}/sandstone_normal.png +0 -0
  398. data/{lib/mc_dot_art_maker/textures → textures}/sandstone_smooth.png +0 -0
  399. data/textures/sandstone_top.png +0 -0
  400. data/{lib/mc_dot_art_maker/textures → textures}/sapling_acacia.png +0 -0
  401. data/{lib/mc_dot_art_maker/textures → textures}/sapling_birch.png +0 -0
  402. data/{lib/mc_dot_art_maker/textures → textures}/sapling_jungle.png +0 -0
  403. data/{lib/mc_dot_art_maker/textures → textures}/sapling_oak.png +0 -0
  404. data/{lib/mc_dot_art_maker/textures → textures}/sapling_roofed_oak.png +0 -0
  405. data/{lib/mc_dot_art_maker/textures → textures}/sapling_spruce.png +0 -0
  406. data/{lib/mc_dot_art_maker/textures → textures}/sea_lantern.png +0 -0
  407. data/{lib/mc_dot_art_maker/textures → textures}/sea_lantern.png.mcmeta +0 -0
  408. data/{lib/mc_dot_art_maker/textures → textures}/slime.png +0 -0
  409. data/{lib/mc_dot_art_maker/textures → textures}/snow.png +0 -0
  410. data/textures/soul_sand.png +0 -0
  411. data/textures/sponge.png +0 -0
  412. data/{lib/mc_dot_art_maker/textures → textures}/sponge_wet.png +0 -0
  413. data/{lib/mc_dot_art_maker/textures → textures}/stone.png +0 -0
  414. data/{lib/mc_dot_art_maker/textures → textures}/stone_andesite.png +0 -0
  415. data/{lib/mc_dot_art_maker/textures → textures}/stone_andesite_smooth.png +0 -0
  416. data/{lib/mc_dot_art_maker/textures → textures}/stone_diorite.png +0 -0
  417. data/{lib/mc_dot_art_maker/textures → textures}/stone_diorite_smooth.png +0 -0
  418. data/{lib/mc_dot_art_maker/textures → textures}/stone_granite.png +0 -0
  419. data/{lib/mc_dot_art_maker/textures → textures}/stone_granite_smooth.png +0 -0
  420. data/{lib/mc_dot_art_maker/textures → textures}/stone_slab_side.png +0 -0
  421. data/{lib/mc_dot_art_maker/textures → textures}/stone_slab_top.png +0 -0
  422. data/{lib/mc_dot_art_maker/textures → textures}/stonebrick.png +0 -0
  423. data/textures/stonebrick_carved.png +0 -0
  424. data/{lib/mc_dot_art_maker/textures → textures}/stonebrick_cracked.png +0 -0
  425. data/textures/stonebrick_mossy.png +0 -0
  426. data/{lib/mc_dot_art_maker/textures → textures}/tallgrass.png +0 -0
  427. data/{lib/mc_dot_art_maker/textures → textures}/tnt_bottom.png +0 -0
  428. data/{lib/mc_dot_art_maker/textures → textures}/tnt_side.png +0 -0
  429. data/{lib/mc_dot_art_maker/textures → textures}/tnt_top.png +0 -0
  430. data/{lib/mc_dot_art_maker/textures → textures}/torch_on.png +0 -0
  431. data/{lib/mc_dot_art_maker/textures → textures}/trapdoor.png +0 -0
  432. data/{lib/mc_dot_art_maker/textures → textures}/trip_wire.png +0 -0
  433. data/{lib/mc_dot_art_maker/textures → textures}/trip_wire_source.png +0 -0
  434. data/{lib/mc_dot_art_maker/textures → textures}/vine.png +0 -0
  435. data/{lib/mc_dot_art_maker/textures → textures}/water_flow.png +0 -0
  436. data/{lib/mc_dot_art_maker/textures → textures}/water_flow.png.mcmeta +0 -0
  437. data/{lib/mc_dot_art_maker/textures → textures}/water_still.png +0 -0
  438. data/{lib/mc_dot_art_maker/textures → textures}/water_still.png.mcmeta +0 -0
  439. data/{lib/mc_dot_art_maker/textures → textures}/waterlily.png +0 -0
  440. data/{lib/mc_dot_art_maker/textures → textures}/web.png +0 -0
  441. data/{lib/mc_dot_art_maker/textures → textures}/wheat_stage_0.png +0 -0
  442. data/{lib/mc_dot_art_maker/textures → textures}/wheat_stage_1.png +0 -0
  443. data/{lib/mc_dot_art_maker/textures → textures}/wheat_stage_2.png +0 -0
  444. data/{lib/mc_dot_art_maker/textures → textures}/wheat_stage_3.png +0 -0
  445. data/{lib/mc_dot_art_maker/textures → textures}/wheat_stage_4.png +0 -0
  446. data/{lib/mc_dot_art_maker/textures → textures}/wheat_stage_5.png +0 -0
  447. data/{lib/mc_dot_art_maker/textures → textures}/wheat_stage_6.png +0 -0
  448. data/{lib/mc_dot_art_maker/textures → textures}/wheat_stage_7.png +0 -0
  449. data/textures/wool_colored_black.png +0 -0
  450. data/textures/wool_colored_blue.png +0 -0
  451. data/textures/wool_colored_brown.png +0 -0
  452. data/textures/wool_colored_cyan.png +0 -0
  453. data/textures/wool_colored_gray.png +0 -0
  454. data/textures/wool_colored_green.png +0 -0
  455. data/textures/wool_colored_light_blue.png +0 -0
  456. data/textures/wool_colored_lime.png +0 -0
  457. data/textures/wool_colored_magenta.png +0 -0
  458. data/textures/wool_colored_orange.png +0 -0
  459. data/textures/wool_colored_pink.png +0 -0
  460. data/textures/wool_colored_purple.png +0 -0
  461. data/textures/wool_colored_red.png +0 -0
  462. data/textures/wool_colored_silver.png +0 -0
  463. data/textures/wool_colored_white.png +0 -0
  464. data/textures/wool_colored_yellow.png +0 -0
  465. data/textures.zip +0 -0
  466. metadata +401 -334
  467. data/test/palette.png +0 -0
  468. data/test/test_image_FloydSteinbergDitherMethod.png +0 -0
  469. data/test/test_image_NoDitherMethod.png +0 -0
  470. data/test/test_image_RiemersmaDitherMethod.png +0 -0
  471. data/test/test_image_mosaic.png +0 -0
  472. data/test/test_image_texture.png +0 -0
  473. data/test/test_mosaic.rb +0 -6
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 390873adb7de45b675687e44cd5f30ef0b23f994
4
- data.tar.gz: 2510cd81d239f2a0ec1a1a4ce211a4547fef2d18
3
+ metadata.gz: 29209338abdd7386e898607c46898dd765a38b38
4
+ data.tar.gz: 0eb73d7e9430fc8409baafcb98439dd5bfd911b8
5
5
  SHA512:
6
- metadata.gz: 3fc004fd60e9f8281946f66de247f22602062be5377468c8c32b94d1498928c6811078fa038a8ceba3e090d82f9ae3b12a77b1b03b6e1f1c36f9a5561018f8c2
7
- data.tar.gz: 4edaea0b6e85f64201e00e191a5acc0682fb23e87e99a90c1379df39818bf9da0ae740e914331dbd245dcd0d570c4b2aeb6f11ef44e56293d1e778d7353c7f11
6
+ metadata.gz: 732f0c6f2af76cdfd3623d659610a5d700c1a48d9fcd455306b69eac12256f9e4eda5729fe48ff5a070e298b8a5c8ef7b0bcffad774a22bb441c81bddbe68ccc
7
+ data.tar.gz: b926da55c0212274c490f0a932e8292f54eacc1381dcc57158d117a30f2e596f5b1bbd1018fa04ca13e0dad3ed139d7a217bb94ca33211f028ebb7c872fa23ca
@@ -6,11 +6,11 @@ module MCDotArtMaker
6
6
  # - data - data e.g. 1
7
7
  # - texture - ブロックのテクスチャ
8
8
  # - color - テクスチャの平均色
9
- def initialize(n,i,d,r,g,b,tx)
9
+ def initialize(n,i,d,color,tx)
10
10
  @name = n
11
11
  @id = i
12
12
  @data = d
13
- @color = Color::RGB.new(r, g, b)
13
+ @color = color
14
14
  @texture = tx.resize(TEXTURE_SIZE,TEXTURE_SIZE)
15
15
  end
16
16
  def texture(size=TEXTURE_SIZE)
@@ -3,6 +3,7 @@ module MCDotArtMaker
3
3
  include Enumerable
4
4
  include Singleton
5
5
  def initialize
6
+ @loader = MCDotArtMaker::TextureLoader.new
6
7
  @blocks = []
7
8
 
8
9
  # できるだけ多くのブロックを使ったバージョン
@@ -446,7 +447,7 @@ module MCDotArtMaker
446
447
  end
447
448
  end
448
449
 
449
- def to_remap_image
450
+ def color_palette
450
451
  # Make color palette
451
452
  new_image = Magick::Image.new(@blocks.size,1){ self.background_color = "white" }
452
453
  @blocks.each_with_index do |block,index|
@@ -458,14 +459,37 @@ module MCDotArtMaker
458
459
  private
459
460
  def block(name, id_data_label, filename)
460
461
  # Add blocks to @blocks
461
- image = Magick::ImageList.new(File.expand_path("../textures/#{filename}", __FILE__)).first
462
- r,g,b = MCDotArtMaker.calc_average_color(image)
462
+ # image = Magick::ImageList.new(File.expand_path("../textures/#{filename}", __FILE__)).first
463
+ image = @loader.load_texture(filename)
464
+
465
+ color = calc_average_color(image)
463
466
  id = id_data_label.split(':')[0].to_i
464
467
  data = id_data_label.split(':')[1].to_i
465
468
 
466
- block = Block.new(name,id, data,r,g,b, image)
469
+ block = Block.new(name,id, data,color, image)
467
470
  @blocks << block
468
- MCDotArtMaker.puts "Block #{name} registered. R:#{r} G:#{g} B:#{b}"
471
+ MCDotArtMaker.puts "Block #{name} registered: #{color}"
472
+ end
473
+
474
+ def calc_average_color(arg)
475
+ pixels = arg.get_pixels(0,0,arg.columns,arg.rows)
476
+
477
+ sum_r = pixels.reduce(0) do |a,elem|
478
+ a+elem.red/257
479
+ end
480
+ ave_r = sum_r/pixels.size
481
+
482
+ sum_g = pixels.reduce(0) do |a,elem|
483
+ a+elem.green/257
484
+ end
485
+ ave_g = sum_g/pixels.size
486
+
487
+ sum_b = pixels.reduce(0) do |a,elem|
488
+ a+elem.blue/257
489
+ end
490
+ ave_b = sum_b/pixels.size
491
+
492
+ Color::RGB.new(ave_r, ave_g, ave_b)
469
493
  end
470
494
  end
471
495
  end
@@ -153,7 +153,7 @@ module MCDotArtMaker
153
153
 
154
154
 
155
155
  MCDotArtMaker.puts "remapping..."
156
- @image = @image.remap(@block_list.to_remap_image,@dither_method)
156
+ @image = @image.remap(@block_list.color_palette,@dither_method)
157
157
  MCDotArtMaker.puts "Done!"
158
158
 
159
159
  MCDotArtMaker.puts "Registering cells..."
@@ -0,0 +1,107 @@
1
+ module MCDotArtMaker
2
+ class MinecraftClientJarNotFoundError < StandardError ; end
3
+ class UnsupportedOSError < StandardError ; end
4
+ class UnknownOSError < StandardError ; end
5
+ class TextureNotFoundError < StandardError ; end
6
+
7
+ class TextureLoader
8
+ TEXTURE_DIR = File.join(File.dirname(__FILE__),"textures")
9
+ TEXTURE_TMP_DIR = File.join(TEXTURE_DIR,"tmp")
10
+
11
+ def initialize(jar = nil)
12
+ @jar = jar || jars.last
13
+ end
14
+
15
+ def load_texture(filename)
16
+ filename = filename + '.png' if File.extname(filename).empty?
17
+
18
+ confirm = [
19
+ Dir.exist?(TEXTURE_DIR),
20
+ File.exist?(File.join(TEXTURE_DIR,filename))
21
+ ]
22
+
23
+ unless confirm.all?
24
+ # copy jar and extract
25
+ jar_basename = File.basename(@jar)
26
+
27
+ Dir.mkdir(TEXTURE_DIR) unless Dir.exist?(TEXTURE_DIR)
28
+ Dir.mkdir(TEXTURE_TMP_DIR) unless Dir.exist?(TEXTURE_TMP_DIR)
29
+
30
+ jar_file_path = File.join(TEXTURE_TMP_DIR,jar_basename)
31
+ FileUtils.cp(@jar,jar_file_path) if Dir.glob(File.join(TEXTURE_TMP_DIR,'*.jar')).empty?
32
+
33
+ Zip::File.open(jar_file_path) do |zip|
34
+ zip.each do |entry|
35
+ # puts "entry #{entry.to_s}"
36
+
37
+ # if md = /\Aassets\/minecraft\/textures\/blocks\/(.*).png\Z/.match(entry.to_s)
38
+ # # p md[1]
39
+ # entry.extract(File.join("textures", md[1]) + ".png")
40
+ # end
41
+
42
+ if md = /\Aassets\/minecraft\/textures\/blocks\/#{filename}\Z/.match(entry.to_s)
43
+ entry.extract(File.join(TEXTURE_DIR, filename))
44
+ return Magick::ImageList.new(File.join(TEXTURE_DIR,filename)).first
45
+ end
46
+ end
47
+ end
48
+
49
+ raise(TextureNotFoundError,"Texture \"#{filename}\" was not found") unless confirm.all?
50
+ end
51
+
52
+ Magick::ImageList.new(File.join(TEXTURE_DIR,filename)).first
53
+ end
54
+
55
+ def exist?(filename)
56
+ filename = filename + '.png' if File.extname(filename).empty?
57
+ [
58
+ Dir.exist?(TEXTURE_DIR),
59
+ File.exist?(File.join(TEXTURE_DIR,filename))
60
+ ].all?
61
+ end
62
+
63
+
64
+ # private
65
+ def os
66
+ @os ||= (
67
+ host_os = RbConfig::CONFIG['host_os']
68
+ case host_os
69
+ when /mswin|msys|mingw|cygwin|bccwin|wince|emc/
70
+ :windows
71
+ when /darwin|mac os/
72
+ :macosx
73
+ when /linux/
74
+ :linux
75
+ when /solaris|bsd/
76
+ :unix
77
+ else
78
+ raise(UnknownOSError,"unknown os: #{host_os.inspect}")
79
+ end
80
+ )
81
+ end
82
+
83
+ def search_dir
84
+ case os
85
+ when :windows
86
+ File.join(ENV['AppData'],".minecraft", "versions")
87
+ when :macosx
88
+ File.join(ENV['HOME'], "Library", "Application Support", "minecraft", "versions")
89
+ when :linux,:unix
90
+ File.join(ENV['HOME'], ".minecraft", "versions")
91
+ else
92
+ raise(UnsupportedOSError,"unsupported os")
93
+ end
94
+ end
95
+
96
+ def jars
97
+ jars = Dir.glob(File.join(search_dir,"1.[8-9]{.[1-9],}")).map do |v|
98
+ # File.join(search_dir, v,"#{v}.jar")
99
+ basename = File.basename(v)
100
+ File.join(v,"#{basename}.jar")
101
+ end
102
+ jars
103
+ end
104
+
105
+ end
106
+
107
+ end
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
@@ -1,5 +1,7 @@
1
1
  require 'singleton'
2
2
 
3
+ require 'zip'
4
+
3
5
  require 'nbt_utils'
4
6
  require 'color-rgb'
5
7
  require 'rmagick'
@@ -8,6 +10,7 @@ require File.expand_path('../mc_dot_art_maker/constants.rb', __FILE__)
8
10
  require File.expand_path('../mc_dot_art_maker/extern_lib_extension.rb', __FILE__)
9
11
  require File.expand_path('../mc_dot_art_maker/block.rb', __FILE__)
10
12
  require File.expand_path('../mc_dot_art_maker/block_list.rb', __FILE__)
13
+ require File.expand_path('../mc_dot_art_maker/texture_loader.rb', __FILE__)
11
14
  # require File.expand_path('../mc_dot_art_maker/cell.rb', __FILE__)
12
15
  require File.expand_path('../mc_dot_art_maker/dot.rb', __FILE__)
13
16
  require File.expand_path('../mc_dot_art_maker/maker.rb', __FILE__)
@@ -1,6 +1,6 @@
1
1
  Gem::Specification.new do |s|
2
2
  s.name = 'mc_dot_art_maker'
3
- s.version = '0.3.2'
3
+ s.version = '0.3.3'
4
4
  s.licenses = ['MIT']
5
5
  s.summary = 'Dot Art Maker for Minecraft'
6
6
  s.description = 'Converting images to mosaic arts using Minecraft textures and .schematic files.'
Binary file
File without changes
@@ -0,0 +1,27 @@
1
+ require_relative '../lib/mc_dot_art_maker'
2
+ require 'test/unit'
3
+
4
+ class BlockListTest < Test::Unit::TestCase
5
+ def setup
6
+ @block_list = MCDotArtMaker::BlockList.instance
7
+ end
8
+
9
+ def test_singleton
10
+ assert_raise(NoMethodError){
11
+ MCDotArtMaker::BlockList.new
12
+ }
13
+ assert_equal(MCDotArtMaker::BlockList,@block_list.class)
14
+ end
15
+
16
+ def test_block_list
17
+ assert_equal(58, @block_list.size)
18
+ assert_equal(58, @block_list.length)
19
+
20
+ @block_list.each do |block|
21
+ assert_equal(MCDotArtMaker::Block, block.class)
22
+ assert_equal(Magick::Image, block.texture.class)
23
+ assert_equal(16, block.texture.rows)
24
+ assert_equal(16, block.texture.columns)
25
+ end
26
+ end
27
+ end
@@ -1,8 +1,29 @@
1
1
  require_relative '../lib/mc_dot_art_maker'
2
+ require 'test/unit'
3
+ require "digest/md5"
4
+
2
5
  module MCDotArtMaker
3
6
  class Maker
4
7
  attr_reader :block_list
5
8
  end
6
9
  end
7
- maker = MCDotArtMaker::Maker.new("test_image.jpg")
8
- maker.block_list.to_remap_image.write("palette.png")
10
+
11
+ class BlockPaletteTest < Test::Unit::TestCase
12
+ TMP_DIR = "images/tmp"
13
+ class << self
14
+ def startup
15
+ FileUtils.rm_r TMP_DIR
16
+ Dir.mkdir(TMP_DIR) unless Dir.exist?(TMP_DIR)
17
+ end
18
+ end
19
+ def setup
20
+ maker = MCDotArtMaker::Maker.new("images/src/test_image.jpg")
21
+ maker.block_list.to_remap_image.write("images/tmp/palette.png")
22
+
23
+ end
24
+
25
+ def test_block_palette
26
+ assert_equal(Digest::MD5.file("images/sample/palette.png"),
27
+ Digest::MD5.file("images/tmp/palette.png"))
28
+ end
29
+ end
@@ -1,11 +1,29 @@
1
1
  require_relative '../lib/mc_dot_art_maker'
2
+ require 'test/unit'
3
+ require "digest/md5"
2
4
 
3
5
 
4
- methods = [MCDotArtMaker::NoDitherMethod,MCDotArtMaker::RiemersmaDitherMethod,MCDotArtMaker::FloydSteinbergDitherMethod]
6
+ class BlockPaletteTest < Test::Unit::TestCase
7
+ TMP_DIR = "images/tmp"
8
+ METHODS = [MCDotArtMaker::NoDitherMethod,MCDotArtMaker::RiemersmaDitherMethod,MCDotArtMaker::FloydSteinbergDitherMethod]
5
9
 
6
- methods.each do |m|
7
- fn = Magick::ImageList.new("test_image.jpg").first
10
+ class << self
11
+ def startup
12
+ FileUtils.rm_r TMP_DIR
13
+ Dir.mkdir(TMP_DIR) unless Dir.exist?(TMP_DIR)
14
+ end
15
+ end
16
+ def setup
17
+ METHODS.each do |m|
18
+ maker = MCDotArtMaker::Maker.new("images/src/test_image.jpg",m)
19
+ maker.texture_image.write "images/tmp/dither_methods_#{m}.png"
20
+ end
21
+ end
8
22
 
9
- maker = MCDotArtMaker::Maker.new(fn,m)
10
- maker.texture_image.write "test_image_#{m}.png"
23
+ def test_dither_methods
24
+ METHODS.each do |m|
25
+ assert_equal(Digest::MD5.file("images/sample/dither_methods_#{m}.png"),
26
+ Digest::MD5.file("images/tmp/dither_methods_#{m}.png"))
27
+ end
28
+ end
11
29
  end
@@ -0,0 +1,30 @@
1
+ require_relative '../lib/mc_dot_art_maker'
2
+ require 'test/unit'
3
+ require "digest/md5"
4
+
5
+ class NormalConversionTest < Test::Unit::TestCase
6
+ TMP_DIR = "images/tmp"
7
+ class << self
8
+ def startup
9
+ FileUtils.rm_r TMP_DIR
10
+ Dir.mkdir(TMP_DIR) unless Dir.exist?(TMP_DIR)
11
+ end
12
+ end
13
+ def setup
14
+ maker = MCDotArtMaker::Maker.new("images/src/test_image.jpg")
15
+ maker.texture_image.write "images/tmp/normal_conversion_texture.png"
16
+ maker.mosaic_image.write "images/tmp/normal_conversion_mosaic.png"
17
+ maker.write_schematic "images/tmp/normal_conversion_schematic.schematic"
18
+ end
19
+
20
+ def test_block_palette
21
+ assert_equal(Digest::MD5.file("images/sample/normal_conversion_texture.png"),
22
+ Digest::MD5.file("images/tmp/normal_conversion_texture.png"))
23
+ assert_equal(Digest::MD5.file("images/sample/normal_conversion_mosaic.png"),
24
+ Digest::MD5.file("images/tmp/normal_conversion_mosaic.png"))
25
+
26
+ # md5 values seems to be changed for every output...
27
+ # assert_equal(Digest::MD5.file("images/sample/normal_conversion_schematic.schematic"),
28
+ # Digest::MD5.file("images/tmp/normal_conversion_schematic.schematic"))
29
+ end
30
+ end
@@ -0,0 +1,50 @@
1
+ require_relative '../lib/mc_dot_art_maker'
2
+ require 'test/unit'
3
+
4
+ class TextureLoaderTest < Test::Unit::TestCase
5
+ TMP_DIR = "images/tmp"
6
+ class << self
7
+ def startup
8
+ # FileUtils.rm_r TMP_DIR
9
+ # Dir.mkdir(TMP_DIR) unless Dir.exist?(TMP_DIR)
10
+ end
11
+ end
12
+ def setup
13
+ @loader = MCDotArtMaker::TextureLoader.new
14
+ end
15
+
16
+ def test_version_lists
17
+ assert_equal('/Users/Kyosuke/Library/Application Support/minecraft/versions',@loader.search_dir)
18
+
19
+ expected_version = '/Users/Kyosuke/Library/Application Support/minecraft/versions/1.9/1.9.jar'
20
+ assert_equal(expected_version, @loader.jars.sort.last)
21
+ assert_equal(4, @loader.jars.size)
22
+ end
23
+
24
+ def test_load_texture
25
+ image = @loader.load_texture('brick.png')
26
+ assert_equal(Magick::Image, image.class)
27
+ assert_equal(16, image.rows)
28
+ assert_equal(16, image.columns)
29
+ end
30
+
31
+ def test_load_texture_without_extension
32
+ image = @loader.load_texture('brick')
33
+ assert_equal(Magick::Image, image.class)
34
+ assert_equal(16, image.rows)
35
+ assert_equal(16, image.columns)
36
+ end
37
+
38
+ def test_texture_not_found
39
+ assert_raise(MCDotArtMaker::TextureNotFoundError){
40
+ image = @loader.load_texture('abcdefghijklmnopqrstuvwxyz')
41
+ }
42
+ end
43
+
44
+ def test_existance
45
+ assert(@loader.exist?('brick.png'))
46
+ assert(@loader.exist?('brick'))
47
+
48
+ refute(@loader.exist?('abcdefghijklmnopqrstuvwxyz'))
49
+ end
50
+ end
Binary file