mc_dot_art_maker 0.3.2 → 0.3.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/lib/mc_dot_art_maker/block.rb +2 -2
- data/lib/mc_dot_art_maker/block_list.rb +29 -5
- data/lib/mc_dot_art_maker/maker.rb +1 -1
- data/lib/mc_dot_art_maker/texture_loader.rb +107 -0
- data/lib/mc_dot_art_maker/textures/brick.png +0 -0
- data/lib/mc_dot_art_maker/textures/clay.png +0 -0
- data/lib/mc_dot_art_maker/textures/coal_block.png +0 -0
- data/lib/mc_dot_art_maker/textures/diamond_block.png +0 -0
- data/lib/mc_dot_art_maker/textures/emerald_block.png +0 -0
- data/lib/mc_dot_art_maker/textures/glowstone.png +0 -0
- data/lib/mc_dot_art_maker/textures/gold_block.png +0 -0
- data/lib/mc_dot_art_maker/textures/hardened_clay.png +0 -0
- data/lib/mc_dot_art_maker/textures/hardened_clay_stained_black.png +0 -0
- data/lib/mc_dot_art_maker/textures/hardened_clay_stained_blue.png +0 -0
- data/lib/mc_dot_art_maker/textures/hardened_clay_stained_brown.png +0 -0
- data/lib/mc_dot_art_maker/textures/hardened_clay_stained_cyan.png +0 -0
- data/lib/mc_dot_art_maker/textures/hardened_clay_stained_gray.png +0 -0
- data/lib/mc_dot_art_maker/textures/hardened_clay_stained_green.png +0 -0
- data/lib/mc_dot_art_maker/textures/hardened_clay_stained_light_blue.png +0 -0
- data/lib/mc_dot_art_maker/textures/hardened_clay_stained_lime.png +0 -0
- data/lib/mc_dot_art_maker/textures/hardened_clay_stained_magenta.png +0 -0
- data/lib/mc_dot_art_maker/textures/hardened_clay_stained_orange.png +0 -0
- data/lib/mc_dot_art_maker/textures/hardened_clay_stained_pink.png +0 -0
- data/lib/mc_dot_art_maker/textures/hardened_clay_stained_purple.png +0 -0
- data/lib/mc_dot_art_maker/textures/hardened_clay_stained_red.png +0 -0
- data/lib/mc_dot_art_maker/textures/hardened_clay_stained_silver.png +0 -0
- data/lib/mc_dot_art_maker/textures/hardened_clay_stained_white.png +0 -0
- data/lib/mc_dot_art_maker/textures/hardened_clay_stained_yellow.png +0 -0
- data/lib/mc_dot_art_maker/textures/hay_block_top.png +0 -0
- data/lib/mc_dot_art_maker/textures/ice.png +0 -0
- data/lib/mc_dot_art_maker/textures/iron_block.png +0 -0
- data/lib/mc_dot_art_maker/textures/lapis_block.png +0 -0
- data/lib/mc_dot_art_maker/textures/melon_top.png +0 -0
- data/lib/mc_dot_art_maker/textures/nether_brick.png +0 -0
- data/lib/mc_dot_art_maker/textures/obsidian.png +0 -0
- data/lib/mc_dot_art_maker/textures/planks_birch.png +0 -0
- data/lib/mc_dot_art_maker/textures/planks_jungle.png +0 -0
- data/lib/mc_dot_art_maker/textures/planks_oak.png +0 -0
- data/lib/mc_dot_art_maker/textures/planks_spruce.png +0 -0
- data/lib/mc_dot_art_maker/textures/quartz_block_chiseled_top.png +0 -0
- data/lib/mc_dot_art_maker/textures/redstone_block.png +0 -0
- data/lib/mc_dot_art_maker/textures/sandstone_top.png +0 -0
- data/lib/mc_dot_art_maker/textures/soul_sand.png +0 -0
- data/lib/mc_dot_art_maker/textures/sponge.png +0 -0
- data/lib/mc_dot_art_maker/textures/stonebrick_carved.png +0 -0
- data/lib/mc_dot_art_maker/textures/stonebrick_mossy.png +0 -0
- data/lib/mc_dot_art_maker/textures/tmp/1.9.jar +0 -0
- data/lib/mc_dot_art_maker/textures/wool_colored_black.png +0 -0
- data/lib/mc_dot_art_maker/textures/wool_colored_blue.png +0 -0
- data/lib/mc_dot_art_maker/textures/wool_colored_brown.png +0 -0
- data/lib/mc_dot_art_maker/textures/wool_colored_cyan.png +0 -0
- data/lib/mc_dot_art_maker/textures/wool_colored_gray.png +0 -0
- data/lib/mc_dot_art_maker/textures/wool_colored_green.png +0 -0
- data/lib/mc_dot_art_maker/textures/wool_colored_light_blue.png +0 -0
- data/lib/mc_dot_art_maker/textures/wool_colored_lime.png +0 -0
- data/lib/mc_dot_art_maker/textures/wool_colored_magenta.png +0 -0
- data/lib/mc_dot_art_maker/textures/wool_colored_orange.png +0 -0
- data/lib/mc_dot_art_maker/textures/wool_colored_pink.png +0 -0
- data/lib/mc_dot_art_maker/textures/wool_colored_purple.png +0 -0
- data/lib/mc_dot_art_maker/textures/wool_colored_red.png +0 -0
- data/lib/mc_dot_art_maker/textures/wool_colored_silver.png +0 -0
- data/lib/mc_dot_art_maker/textures/wool_colored_white.png +0 -0
- data/lib/mc_dot_art_maker/textures/wool_colored_yellow.png +0 -0
- data/lib/mc_dot_art_maker.rb +3 -0
- data/mc_dot_art_maker.gemspec +1 -1
- data/test/images/sample/dither_methods_FloydSteinbergDitherMethod.png +0 -0
- data/test/images/sample/dither_methods_NoDitherMethod.png +0 -0
- data/test/images/sample/dither_methods_RiemersmaDitherMethod.png +0 -0
- data/test/images/sample/normal_conversion_mosaic.png +0 -0
- data/test/images/sample/normal_conversion_schematic.schematic +0 -0
- data/test/images/sample/normal_conversion_texture.png +0 -0
- data/test/images/sample/palette.png +0 -0
- data/test/{test_image.jpg → images/src/test_image.jpg} +0 -0
- data/test/images/tmp/dither_methods_FloydSteinbergDitherMethod.png +0 -0
- data/test/images/tmp/dither_methods_NoDitherMethod.png +0 -0
- data/test/images/tmp/dither_methods_RiemersmaDitherMethod.png +0 -0
- data/test/test_block_list.rb +27 -0
- data/test/test_block_palette.rb +23 -2
- data/test/test_dither_method.rb +23 -5
- data/test/test_normal_conversion.rb +30 -0
- data/test/test_texture_loader.rb +50 -0
- data/{lib/mc_dot_art_maker/textures → textures}/anvil_base.png +0 -0
- data/{lib/mc_dot_art_maker/textures → textures}/anvil_top_damaged_0.png +0 -0
- data/{lib/mc_dot_art_maker/textures → textures}/anvil_top_damaged_1.png +0 -0
- data/{lib/mc_dot_art_maker/textures → textures}/anvil_top_damaged_2.png +0 -0
- data/{lib/mc_dot_art_maker/textures → textures}/beacon.png +0 -0
- data/{lib/mc_dot_art_maker/textures → textures}/bed_feet_end.png +0 -0
- data/{lib/mc_dot_art_maker/textures → textures}/bed_feet_side.png +0 -0
- data/{lib/mc_dot_art_maker/textures → textures}/bed_feet_top.png +0 -0
- data/{lib/mc_dot_art_maker/textures → textures}/bed_head_end.png +0 -0
- data/{lib/mc_dot_art_maker/textures → textures}/bed_head_side.png +0 -0
- data/{lib/mc_dot_art_maker/textures → textures}/bed_head_top.png +0 -0
- data/{lib/mc_dot_art_maker/textures → textures}/bedrock.png +0 -0
- data/{lib/mc_dot_art_maker/textures → textures}/bookshelf.png +0 -0
- data/{lib/mc_dot_art_maker/textures → textures}/brewing_stand.png +0 -0
- data/{lib/mc_dot_art_maker/textures → textures}/brewing_stand_base.png +0 -0
- data/textures/brick.png +0 -0
- data/{lib/mc_dot_art_maker/textures → textures}/cactus_bottom.png +0 -0
- data/{lib/mc_dot_art_maker/textures → textures}/cactus_side.png +0 -0
- data/{lib/mc_dot_art_maker/textures → textures}/cactus_top.png +0 -0
- data/{lib/mc_dot_art_maker/textures → textures}/cake_bottom.png +0 -0
- data/{lib/mc_dot_art_maker/textures → textures}/cake_inner.png +0 -0
- data/{lib/mc_dot_art_maker/textures → textures}/cake_side.png +0 -0
- data/{lib/mc_dot_art_maker/textures → textures}/cake_top.png +0 -0
- data/{lib/mc_dot_art_maker/textures → textures}/carrots_stage_0.png +0 -0
- data/{lib/mc_dot_art_maker/textures → textures}/carrots_stage_1.png +0 -0
- data/{lib/mc_dot_art_maker/textures → textures}/carrots_stage_2.png +0 -0
- data/{lib/mc_dot_art_maker/textures → textures}/carrots_stage_3.png +0 -0
- data/{lib/mc_dot_art_maker/textures → textures}/cauldron_bottom.png +0 -0
- data/{lib/mc_dot_art_maker/textures → textures}/cauldron_inner.png +0 -0
- data/{lib/mc_dot_art_maker/textures → textures}/cauldron_side.png +0 -0
- data/{lib/mc_dot_art_maker/textures → textures}/cauldron_top.png +0 -0
- data/textures/clay.png +0 -0
- data/textures/coal_block.png +0 -0
- data/{lib/mc_dot_art_maker/textures → textures}/coal_ore.png +0 -0
- data/{lib/mc_dot_art_maker/textures → textures}/coarse_dirt.png +0 -0
- data/{lib/mc_dot_art_maker/textures → textures}/cobblestone.png +0 -0
- data/{lib/mc_dot_art_maker/textures → textures}/cobblestone_mossy.png +0 -0
- data/{lib/mc_dot_art_maker/textures → textures}/cocoa_stage_0.png +0 -0
- data/{lib/mc_dot_art_maker/textures → textures}/cocoa_stage_1.png +0 -0
- data/{lib/mc_dot_art_maker/textures → textures}/cocoa_stage_2.png +0 -0
- data/{lib/mc_dot_art_maker/textures → textures}/command_block.png +0 -0
- data/{lib/mc_dot_art_maker/textures → textures}/comparator_off.png +0 -0
- data/{lib/mc_dot_art_maker/textures → textures}/comparator_on.png +0 -0
- data/{lib/mc_dot_art_maker/textures → textures}/crafting_table_front.png +0 -0
- data/{lib/mc_dot_art_maker/textures → textures}/crafting_table_side.png +0 -0
- data/{lib/mc_dot_art_maker/textures → textures}/crafting_table_top.png +0 -0
- data/{lib/mc_dot_art_maker/textures → textures}/daylight_detector_inverted_top.png +0 -0
- data/{lib/mc_dot_art_maker/textures → textures}/daylight_detector_side.png +0 -0
- data/{lib/mc_dot_art_maker/textures → textures}/daylight_detector_top.png +0 -0
- data/{lib/mc_dot_art_maker/textures → textures}/deadbush.png +0 -0
- data/{lib/mc_dot_art_maker/textures → textures}/destroy_stage_0.png +0 -0
- data/{lib/mc_dot_art_maker/textures → textures}/destroy_stage_1.png +0 -0
- data/{lib/mc_dot_art_maker/textures → textures}/destroy_stage_2.png +0 -0
- data/{lib/mc_dot_art_maker/textures → textures}/destroy_stage_3.png +0 -0
- data/{lib/mc_dot_art_maker/textures → textures}/destroy_stage_4.png +0 -0
- data/{lib/mc_dot_art_maker/textures → textures}/destroy_stage_5.png +0 -0
- data/{lib/mc_dot_art_maker/textures → textures}/destroy_stage_6.png +0 -0
- data/{lib/mc_dot_art_maker/textures → textures}/destroy_stage_7.png +0 -0
- data/{lib/mc_dot_art_maker/textures → textures}/destroy_stage_8.png +0 -0
- data/{lib/mc_dot_art_maker/textures → textures}/destroy_stage_9.png +0 -0
- data/textures/diamond_block.png +0 -0
- data/{lib/mc_dot_art_maker/textures → textures}/diamond_ore.png +0 -0
- data/{lib/mc_dot_art_maker/textures → textures}/dirt.png +0 -0
- data/{lib/mc_dot_art_maker/textures → textures}/dirt_podzol_side.png +0 -0
- data/{lib/mc_dot_art_maker/textures → textures}/dirt_podzol_top.png +0 -0
- data/{lib/mc_dot_art_maker/textures → textures}/dispenser_front_horizontal.png +0 -0
- data/{lib/mc_dot_art_maker/textures → textures}/dispenser_front_vertical.png +0 -0
- data/{lib/mc_dot_art_maker/textures → textures}/door_acacia_lower.png +0 -0
- data/{lib/mc_dot_art_maker/textures → textures}/door_acacia_upper.png +0 -0
- data/{lib/mc_dot_art_maker/textures → textures}/door_birch_lower.png +0 -0
- data/{lib/mc_dot_art_maker/textures → textures}/door_birch_upper.png +0 -0
- data/{lib/mc_dot_art_maker/textures → textures}/door_dark_oak_lower.png +0 -0
- data/{lib/mc_dot_art_maker/textures → textures}/door_dark_oak_upper.png +0 -0
- data/{lib/mc_dot_art_maker/textures → textures}/door_iron_lower.png +0 -0
- data/{lib/mc_dot_art_maker/textures → textures}/door_iron_upper.png +0 -0
- data/{lib/mc_dot_art_maker/textures → textures}/door_jungle_lower.png +0 -0
- data/{lib/mc_dot_art_maker/textures → textures}/door_jungle_upper.png +0 -0
- data/{lib/mc_dot_art_maker/textures → textures}/door_spruce_lower.png +0 -0
- data/{lib/mc_dot_art_maker/textures → textures}/door_spruce_upper.png +0 -0
- data/{lib/mc_dot_art_maker/textures → textures}/door_wood_lower.png +0 -0
- data/{lib/mc_dot_art_maker/textures → textures}/door_wood_upper.png +0 -0
- data/{lib/mc_dot_art_maker/textures → textures}/double_plant_fern_bottom.png +0 -0
- data/{lib/mc_dot_art_maker/textures → textures}/double_plant_fern_top.png +0 -0
- data/{lib/mc_dot_art_maker/textures → textures}/double_plant_grass_bottom.png +0 -0
- data/{lib/mc_dot_art_maker/textures → textures}/double_plant_grass_top.png +0 -0
- data/{lib/mc_dot_art_maker/textures → textures}/double_plant_paeonia_bottom.png +0 -0
- data/{lib/mc_dot_art_maker/textures → textures}/double_plant_paeonia_top.png +0 -0
- data/{lib/mc_dot_art_maker/textures → textures}/double_plant_rose_bottom.png +0 -0
- data/{lib/mc_dot_art_maker/textures → textures}/double_plant_rose_top.png +0 -0
- data/{lib/mc_dot_art_maker/textures → textures}/double_plant_sunflower_back.png +0 -0
- data/{lib/mc_dot_art_maker/textures → textures}/double_plant_sunflower_bottom.png +0 -0
- data/{lib/mc_dot_art_maker/textures → textures}/double_plant_sunflower_front.png +0 -0
- data/{lib/mc_dot_art_maker/textures → textures}/double_plant_sunflower_top.png +0 -0
- data/{lib/mc_dot_art_maker/textures → textures}/double_plant_syringa_bottom.png +0 -0
- data/{lib/mc_dot_art_maker/textures → textures}/double_plant_syringa_top.png +0 -0
- data/{lib/mc_dot_art_maker/textures → textures}/dragon_egg.png +0 -0
- data/{lib/mc_dot_art_maker/textures → textures}/dropper_front_horizontal.png +0 -0
- data/{lib/mc_dot_art_maker/textures → textures}/dropper_front_vertical.png +0 -0
- data/textures/emerald_block.png +0 -0
- data/{lib/mc_dot_art_maker/textures → textures}/emerald_ore.png +0 -0
- data/{lib/mc_dot_art_maker/textures → textures}/enchanting_table_bottom.png +0 -0
- data/{lib/mc_dot_art_maker/textures → textures}/enchanting_table_side.png +0 -0
- data/{lib/mc_dot_art_maker/textures → textures}/enchanting_table_top.png +0 -0
- data/{lib/mc_dot_art_maker/textures → textures}/end_stone.png +0 -0
- data/{lib/mc_dot_art_maker/textures → textures}/endframe_eye.png +0 -0
- data/{lib/mc_dot_art_maker/textures → textures}/endframe_side.png +0 -0
- data/{lib/mc_dot_art_maker/textures → textures}/endframe_top.png +0 -0
- data/{lib/mc_dot_art_maker/textures → textures}/farmland_dry.png +0 -0
- data/{lib/mc_dot_art_maker/textures → textures}/farmland_wet.png +0 -0
- data/{lib/mc_dot_art_maker/textures → textures}/fern.png +0 -0
- data/{lib/mc_dot_art_maker/textures → textures}/fire_layer_0.png +0 -0
- data/{lib/mc_dot_art_maker/textures → textures}/fire_layer_0.png.mcmeta +0 -0
- data/{lib/mc_dot_art_maker/textures → textures}/fire_layer_1.png +0 -0
- data/{lib/mc_dot_art_maker/textures → textures}/fire_layer_1.png.mcmeta +0 -0
- data/{lib/mc_dot_art_maker/textures → textures}/flower_allium.png +0 -0
- data/{lib/mc_dot_art_maker/textures → textures}/flower_blue_orchid.png +0 -0
- data/{lib/mc_dot_art_maker/textures → textures}/flower_dandelion.png +0 -0
- data/{lib/mc_dot_art_maker/textures → textures}/flower_houstonia.png +0 -0
- data/{lib/mc_dot_art_maker/textures → textures}/flower_oxeye_daisy.png +0 -0
- data/{lib/mc_dot_art_maker/textures → textures}/flower_paeonia.png +0 -0
- data/{lib/mc_dot_art_maker/textures → textures}/flower_pot.png +0 -0
- data/{lib/mc_dot_art_maker/textures → textures}/flower_rose.png +0 -0
- data/{lib/mc_dot_art_maker/textures → textures}/flower_tulip_orange.png +0 -0
- data/{lib/mc_dot_art_maker/textures → textures}/flower_tulip_pink.png +0 -0
- data/{lib/mc_dot_art_maker/textures → textures}/flower_tulip_red.png +0 -0
- data/{lib/mc_dot_art_maker/textures → textures}/flower_tulip_white.png +0 -0
- data/{lib/mc_dot_art_maker/textures → textures}/furnace_front_off.png +0 -0
- data/{lib/mc_dot_art_maker/textures → textures}/furnace_front_on.png +0 -0
- data/{lib/mc_dot_art_maker/textures → textures}/furnace_side.png +0 -0
- data/{lib/mc_dot_art_maker/textures → textures}/furnace_top.png +0 -0
- data/{lib/mc_dot_art_maker/textures → textures}/glass.png +0 -0
- data/{lib/mc_dot_art_maker/textures → textures}/glass_black.png +0 -0
- data/{lib/mc_dot_art_maker/textures → textures}/glass_blue.png +0 -0
- data/{lib/mc_dot_art_maker/textures → textures}/glass_brown.png +0 -0
- data/{lib/mc_dot_art_maker/textures → textures}/glass_cyan.png +0 -0
- data/{lib/mc_dot_art_maker/textures → textures}/glass_gray.png +0 -0
- data/{lib/mc_dot_art_maker/textures → textures}/glass_green.png +0 -0
- data/{lib/mc_dot_art_maker/textures → textures}/glass_light_blue.png +0 -0
- data/{lib/mc_dot_art_maker/textures → textures}/glass_lime.png +0 -0
- data/{lib/mc_dot_art_maker/textures → textures}/glass_magenta.png +0 -0
- data/{lib/mc_dot_art_maker/textures → textures}/glass_orange.png +0 -0
- data/{lib/mc_dot_art_maker/textures → textures}/glass_pane_top.png +0 -0
- data/{lib/mc_dot_art_maker/textures → textures}/glass_pane_top_black.png +0 -0
- data/{lib/mc_dot_art_maker/textures → textures}/glass_pane_top_blue.png +0 -0
- data/{lib/mc_dot_art_maker/textures → textures}/glass_pane_top_brown.png +0 -0
- data/{lib/mc_dot_art_maker/textures → textures}/glass_pane_top_cyan.png +0 -0
- data/{lib/mc_dot_art_maker/textures → textures}/glass_pane_top_gray.png +0 -0
- data/{lib/mc_dot_art_maker/textures → textures}/glass_pane_top_green.png +0 -0
- data/{lib/mc_dot_art_maker/textures → textures}/glass_pane_top_light_blue.png +0 -0
- data/{lib/mc_dot_art_maker/textures → textures}/glass_pane_top_lime.png +0 -0
- data/{lib/mc_dot_art_maker/textures → textures}/glass_pane_top_magenta.png +0 -0
- data/{lib/mc_dot_art_maker/textures → textures}/glass_pane_top_orange.png +0 -0
- data/{lib/mc_dot_art_maker/textures → textures}/glass_pane_top_pink.png +0 -0
- data/{lib/mc_dot_art_maker/textures → textures}/glass_pane_top_purple.png +0 -0
- data/{lib/mc_dot_art_maker/textures → textures}/glass_pane_top_red.png +0 -0
- data/{lib/mc_dot_art_maker/textures → textures}/glass_pane_top_silver.png +0 -0
- data/{lib/mc_dot_art_maker/textures → textures}/glass_pane_top_white.png +0 -0
- data/{lib/mc_dot_art_maker/textures → textures}/glass_pane_top_yellow.png +0 -0
- data/{lib/mc_dot_art_maker/textures → textures}/glass_pink.png +0 -0
- data/{lib/mc_dot_art_maker/textures → textures}/glass_purple.png +0 -0
- data/{lib/mc_dot_art_maker/textures → textures}/glass_red.png +0 -0
- data/{lib/mc_dot_art_maker/textures → textures}/glass_silver.png +0 -0
- data/{lib/mc_dot_art_maker/textures → textures}/glass_white.png +0 -0
- data/{lib/mc_dot_art_maker/textures → textures}/glass_yellow.png +0 -0
- data/textures/glowstone.png +0 -0
- data/textures/gold_block.png +0 -0
- data/{lib/mc_dot_art_maker/textures → textures}/gold_ore.png +0 -0
- data/{lib/mc_dot_art_maker/textures → textures}/grass_side.png +0 -0
- data/{lib/mc_dot_art_maker/textures → textures}/grass_side_overlay.png +0 -0
- data/{lib/mc_dot_art_maker/textures → textures}/grass_side_snowed.png +0 -0
- data/{lib/mc_dot_art_maker/textures → textures}/grass_top.png +0 -0
- data/{lib/mc_dot_art_maker/textures → textures}/gravel.png +0 -0
- data/textures/hardened_clay.png +0 -0
- data/textures/hardened_clay_stained_black.png +0 -0
- data/textures/hardened_clay_stained_blue.png +0 -0
- data/textures/hardened_clay_stained_brown.png +0 -0
- data/textures/hardened_clay_stained_cyan.png +0 -0
- data/textures/hardened_clay_stained_gray.png +0 -0
- data/textures/hardened_clay_stained_green.png +0 -0
- data/textures/hardened_clay_stained_light_blue.png +0 -0
- data/textures/hardened_clay_stained_lime.png +0 -0
- data/textures/hardened_clay_stained_magenta.png +0 -0
- data/textures/hardened_clay_stained_orange.png +0 -0
- data/textures/hardened_clay_stained_pink.png +0 -0
- data/textures/hardened_clay_stained_purple.png +0 -0
- data/textures/hardened_clay_stained_red.png +0 -0
- data/textures/hardened_clay_stained_silver.png +0 -0
- data/textures/hardened_clay_stained_white.png +0 -0
- data/textures/hardened_clay_stained_yellow.png +0 -0
- data/{lib/mc_dot_art_maker/textures → textures}/hay_block_side.png +0 -0
- data/textures/hay_block_top.png +0 -0
- data/{lib/mc_dot_art_maker/textures → textures}/hopper_inside.png +0 -0
- data/{lib/mc_dot_art_maker/textures → textures}/hopper_outside.png +0 -0
- data/{lib/mc_dot_art_maker/textures → textures}/hopper_top.png +0 -0
- data/textures/ice.png +0 -0
- data/{lib/mc_dot_art_maker/textures → textures}/ice_packed.png +0 -0
- data/{lib/mc_dot_art_maker/textures → textures}/iron_bars.png +0 -0
- data/textures/iron_block.png +0 -0
- data/{lib/mc_dot_art_maker/textures → textures}/iron_ore.png +0 -0
- data/{lib/mc_dot_art_maker/textures → textures}/iron_trapdoor.png +0 -0
- data/{lib/mc_dot_art_maker/textures → textures}/itemframe_background.png +0 -0
- data/{lib/mc_dot_art_maker/textures → textures}/jukebox_side.png +0 -0
- data/{lib/mc_dot_art_maker/textures → textures}/jukebox_top.png +0 -0
- data/{lib/mc_dot_art_maker/textures → textures}/ladder.png +0 -0
- data/textures/lapis_block.png +0 -0
- data/{lib/mc_dot_art_maker/textures → textures}/lapis_ore.png +0 -0
- data/{lib/mc_dot_art_maker/textures → textures}/lava_flow.png +0 -0
- data/{lib/mc_dot_art_maker/textures → textures}/lava_flow.png.mcmeta +0 -0
- data/{lib/mc_dot_art_maker/textures → textures}/lava_still.png +0 -0
- data/{lib/mc_dot_art_maker/textures → textures}/lava_still.png.mcmeta +0 -0
- data/{lib/mc_dot_art_maker/textures → textures}/leaves_acacia.png +0 -0
- data/{lib/mc_dot_art_maker/textures → textures}/leaves_big_oak.png +0 -0
- data/{lib/mc_dot_art_maker/textures → textures}/leaves_birch.png +0 -0
- data/{lib/mc_dot_art_maker/textures → textures}/leaves_jungle.png +0 -0
- data/{lib/mc_dot_art_maker/textures → textures}/leaves_oak.png +0 -0
- data/{lib/mc_dot_art_maker/textures → textures}/leaves_spruce.png +0 -0
- data/{lib/mc_dot_art_maker/textures → textures}/lever.png +0 -0
- data/{lib/mc_dot_art_maker/textures → textures}/log_acacia.png +0 -0
- data/{lib/mc_dot_art_maker/textures → textures}/log_acacia_top.png +0 -0
- data/{lib/mc_dot_art_maker/textures → textures}/log_big_oak.png +0 -0
- data/{lib/mc_dot_art_maker/textures → textures}/log_big_oak_top.png +0 -0
- data/{lib/mc_dot_art_maker/textures → textures}/log_birch.png +0 -0
- data/{lib/mc_dot_art_maker/textures → textures}/log_birch_top.png +0 -0
- data/{lib/mc_dot_art_maker/textures → textures}/log_jungle.png +0 -0
- data/{lib/mc_dot_art_maker/textures → textures}/log_jungle_top.png +0 -0
- data/{lib/mc_dot_art_maker/textures → textures}/log_oak.png +0 -0
- data/{lib/mc_dot_art_maker/textures → textures}/log_oak_top.png +0 -0
- data/{lib/mc_dot_art_maker/textures → textures}/log_spruce.png +0 -0
- data/{lib/mc_dot_art_maker/textures → textures}/log_spruce_top.png +0 -0
- data/{lib/mc_dot_art_maker/textures → textures}/melon_side.png +0 -0
- data/{lib/mc_dot_art_maker/textures → textures}/melon_stem_connected.png +0 -0
- data/{lib/mc_dot_art_maker/textures → textures}/melon_stem_disconnected.png +0 -0
- data/textures/melon_top.png +0 -0
- data/{lib/mc_dot_art_maker/textures → textures}/mob_spawner.png +0 -0
- data/{lib/mc_dot_art_maker/textures → textures}/mushroom_block_inside.png +0 -0
- data/{lib/mc_dot_art_maker/textures → textures}/mushroom_block_skin_brown.png +0 -0
- data/{lib/mc_dot_art_maker/textures → textures}/mushroom_block_skin_red.png +0 -0
- data/{lib/mc_dot_art_maker/textures → textures}/mushroom_block_skin_stem.png +0 -0
- data/{lib/mc_dot_art_maker/textures → textures}/mushroom_brown.png +0 -0
- data/{lib/mc_dot_art_maker/textures → textures}/mushroom_red.png +0 -0
- data/{lib/mc_dot_art_maker/textures → textures}/mycelium_side.png +0 -0
- data/{lib/mc_dot_art_maker/textures → textures}/mycelium_top.png +0 -0
- data/textures/nether_brick.png +0 -0
- data/{lib/mc_dot_art_maker/textures → textures}/nether_wart_stage_0.png +0 -0
- data/{lib/mc_dot_art_maker/textures → textures}/nether_wart_stage_1.png +0 -0
- data/{lib/mc_dot_art_maker/textures → textures}/nether_wart_stage_2.png +0 -0
- data/{lib/mc_dot_art_maker/textures → textures}/netherrack.png +0 -0
- data/{lib/mc_dot_art_maker/textures → textures}/noteblock.png +0 -0
- data/textures/obsidian.png +0 -0
- data/{lib/mc_dot_art_maker/textures → textures}/piston_bottom.png +0 -0
- data/{lib/mc_dot_art_maker/textures → textures}/piston_inner.png +0 -0
- data/{lib/mc_dot_art_maker/textures → textures}/piston_side.png +0 -0
- data/{lib/mc_dot_art_maker/textures → textures}/piston_top_normal.png +0 -0
- data/{lib/mc_dot_art_maker/textures → textures}/piston_top_sticky.png +0 -0
- data/{lib/mc_dot_art_maker/textures → textures}/planks_acacia.png +0 -0
- data/{lib/mc_dot_art_maker/textures → textures}/planks_big_oak.png +0 -0
- data/textures/planks_birch.png +0 -0
- data/textures/planks_jungle.png +0 -0
- data/textures/planks_oak.png +0 -0
- data/textures/planks_spruce.png +0 -0
- data/{lib/mc_dot_art_maker/textures → textures}/portal.png +0 -0
- data/{lib/mc_dot_art_maker/textures → textures}/portal.png.mcmeta +0 -0
- data/{lib/mc_dot_art_maker/textures → textures}/potatoes_stage_0.png +0 -0
- data/{lib/mc_dot_art_maker/textures → textures}/potatoes_stage_1.png +0 -0
- data/{lib/mc_dot_art_maker/textures → textures}/potatoes_stage_2.png +0 -0
- data/{lib/mc_dot_art_maker/textures → textures}/potatoes_stage_3.png +0 -0
- data/{lib/mc_dot_art_maker/textures → textures}/prismarine_bricks.png +0 -0
- data/{lib/mc_dot_art_maker/textures → textures}/prismarine_dark.png +0 -0
- data/{lib/mc_dot_art_maker/textures → textures}/prismarine_rough.png +0 -0
- data/{lib/mc_dot_art_maker/textures → textures}/prismarine_rough.png.mcmeta +0 -0
- data/{lib/mc_dot_art_maker/textures → textures}/pumpkin_face_off.png +0 -0
- data/{lib/mc_dot_art_maker/textures → textures}/pumpkin_face_on.png +0 -0
- data/{lib/mc_dot_art_maker/textures → textures}/pumpkin_side.png +0 -0
- data/{lib/mc_dot_art_maker/textures → textures}/pumpkin_stem_connected.png +0 -0
- data/{lib/mc_dot_art_maker/textures → textures}/pumpkin_stem_disconnected.png +0 -0
- data/{lib/mc_dot_art_maker/textures → textures}/pumpkin_top.png +0 -0
- data/{lib/mc_dot_art_maker/textures → textures}/quartz_block_bottom.png +0 -0
- data/{lib/mc_dot_art_maker/textures → textures}/quartz_block_chiseled.png +0 -0
- data/textures/quartz_block_chiseled_top.png +0 -0
- data/{lib/mc_dot_art_maker/textures → textures}/quartz_block_lines.png +0 -0
- data/{lib/mc_dot_art_maker/textures → textures}/quartz_block_lines_top.png +0 -0
- data/{lib/mc_dot_art_maker/textures → textures}/quartz_block_side.png +0 -0
- data/{lib/mc_dot_art_maker/textures → textures}/quartz_block_top.png +0 -0
- data/{lib/mc_dot_art_maker/textures → textures}/quartz_ore.png +0 -0
- data/{lib/mc_dot_art_maker/textures → textures}/rail_activator.png +0 -0
- data/{lib/mc_dot_art_maker/textures → textures}/rail_activator_powered.png +0 -0
- data/{lib/mc_dot_art_maker/textures → textures}/rail_detector.png +0 -0
- data/{lib/mc_dot_art_maker/textures → textures}/rail_detector_powered.png +0 -0
- data/{lib/mc_dot_art_maker/textures → textures}/rail_golden.png +0 -0
- data/{lib/mc_dot_art_maker/textures → textures}/rail_golden_powered.png +0 -0
- data/{lib/mc_dot_art_maker/textures → textures}/rail_normal.png +0 -0
- data/{lib/mc_dot_art_maker/textures → textures}/rail_normal_turned.png +0 -0
- data/{lib/mc_dot_art_maker/textures → textures}/red_sand.png +0 -0
- data/{lib/mc_dot_art_maker/textures → textures}/red_sandstone_bottom.png +0 -0
- data/{lib/mc_dot_art_maker/textures → textures}/red_sandstone_carved.png +0 -0
- data/{lib/mc_dot_art_maker/textures → textures}/red_sandstone_normal.png +0 -0
- data/{lib/mc_dot_art_maker/textures → textures}/red_sandstone_smooth.png +0 -0
- data/{lib/mc_dot_art_maker/textures → textures}/red_sandstone_top.png +0 -0
- data/textures/redstone_block.png +0 -0
- data/{lib/mc_dot_art_maker/textures → textures}/redstone_dust_cross.png +0 -0
- data/{lib/mc_dot_art_maker/textures → textures}/redstone_dust_cross_overlay.png +0 -0
- data/{lib/mc_dot_art_maker/textures → textures}/redstone_dust_line.png +0 -0
- data/{lib/mc_dot_art_maker/textures → textures}/redstone_dust_line_overlay.png +0 -0
- data/{lib/mc_dot_art_maker/textures → textures}/redstone_lamp_off.png +0 -0
- data/{lib/mc_dot_art_maker/textures → textures}/redstone_lamp_on.png +0 -0
- data/{lib/mc_dot_art_maker/textures → textures}/redstone_ore.png +0 -0
- data/{lib/mc_dot_art_maker/textures → textures}/redstone_torch_off.png +0 -0
- data/{lib/mc_dot_art_maker/textures → textures}/redstone_torch_on.png +0 -0
- data/{lib/mc_dot_art_maker/textures → textures}/reeds.png +0 -0
- data/{lib/mc_dot_art_maker/textures → textures}/repeater_off.png +0 -0
- data/{lib/mc_dot_art_maker/textures → textures}/repeater_on.png +0 -0
- data/{lib/mc_dot_art_maker/textures → textures}/sand.png +0 -0
- data/{lib/mc_dot_art_maker/textures → textures}/sandstone_bottom.png +0 -0
- data/{lib/mc_dot_art_maker/textures → textures}/sandstone_carved.png +0 -0
- data/{lib/mc_dot_art_maker/textures → textures}/sandstone_normal.png +0 -0
- data/{lib/mc_dot_art_maker/textures → textures}/sandstone_smooth.png +0 -0
- data/textures/sandstone_top.png +0 -0
- data/{lib/mc_dot_art_maker/textures → textures}/sapling_acacia.png +0 -0
- data/{lib/mc_dot_art_maker/textures → textures}/sapling_birch.png +0 -0
- data/{lib/mc_dot_art_maker/textures → textures}/sapling_jungle.png +0 -0
- data/{lib/mc_dot_art_maker/textures → textures}/sapling_oak.png +0 -0
- data/{lib/mc_dot_art_maker/textures → textures}/sapling_roofed_oak.png +0 -0
- data/{lib/mc_dot_art_maker/textures → textures}/sapling_spruce.png +0 -0
- data/{lib/mc_dot_art_maker/textures → textures}/sea_lantern.png +0 -0
- data/{lib/mc_dot_art_maker/textures → textures}/sea_lantern.png.mcmeta +0 -0
- data/{lib/mc_dot_art_maker/textures → textures}/slime.png +0 -0
- data/{lib/mc_dot_art_maker/textures → textures}/snow.png +0 -0
- data/textures/soul_sand.png +0 -0
- data/textures/sponge.png +0 -0
- data/{lib/mc_dot_art_maker/textures → textures}/sponge_wet.png +0 -0
- data/{lib/mc_dot_art_maker/textures → textures}/stone.png +0 -0
- data/{lib/mc_dot_art_maker/textures → textures}/stone_andesite.png +0 -0
- data/{lib/mc_dot_art_maker/textures → textures}/stone_andesite_smooth.png +0 -0
- data/{lib/mc_dot_art_maker/textures → textures}/stone_diorite.png +0 -0
- data/{lib/mc_dot_art_maker/textures → textures}/stone_diorite_smooth.png +0 -0
- data/{lib/mc_dot_art_maker/textures → textures}/stone_granite.png +0 -0
- data/{lib/mc_dot_art_maker/textures → textures}/stone_granite_smooth.png +0 -0
- data/{lib/mc_dot_art_maker/textures → textures}/stone_slab_side.png +0 -0
- data/{lib/mc_dot_art_maker/textures → textures}/stone_slab_top.png +0 -0
- data/{lib/mc_dot_art_maker/textures → textures}/stonebrick.png +0 -0
- data/textures/stonebrick_carved.png +0 -0
- data/{lib/mc_dot_art_maker/textures → textures}/stonebrick_cracked.png +0 -0
- data/textures/stonebrick_mossy.png +0 -0
- data/{lib/mc_dot_art_maker/textures → textures}/tallgrass.png +0 -0
- data/{lib/mc_dot_art_maker/textures → textures}/tnt_bottom.png +0 -0
- data/{lib/mc_dot_art_maker/textures → textures}/tnt_side.png +0 -0
- data/{lib/mc_dot_art_maker/textures → textures}/tnt_top.png +0 -0
- data/{lib/mc_dot_art_maker/textures → textures}/torch_on.png +0 -0
- data/{lib/mc_dot_art_maker/textures → textures}/trapdoor.png +0 -0
- data/{lib/mc_dot_art_maker/textures → textures}/trip_wire.png +0 -0
- data/{lib/mc_dot_art_maker/textures → textures}/trip_wire_source.png +0 -0
- data/{lib/mc_dot_art_maker/textures → textures}/vine.png +0 -0
- data/{lib/mc_dot_art_maker/textures → textures}/water_flow.png +0 -0
- data/{lib/mc_dot_art_maker/textures → textures}/water_flow.png.mcmeta +0 -0
- data/{lib/mc_dot_art_maker/textures → textures}/water_still.png +0 -0
- data/{lib/mc_dot_art_maker/textures → textures}/water_still.png.mcmeta +0 -0
- data/{lib/mc_dot_art_maker/textures → textures}/waterlily.png +0 -0
- data/{lib/mc_dot_art_maker/textures → textures}/web.png +0 -0
- data/{lib/mc_dot_art_maker/textures → textures}/wheat_stage_0.png +0 -0
- data/{lib/mc_dot_art_maker/textures → textures}/wheat_stage_1.png +0 -0
- data/{lib/mc_dot_art_maker/textures → textures}/wheat_stage_2.png +0 -0
- data/{lib/mc_dot_art_maker/textures → textures}/wheat_stage_3.png +0 -0
- data/{lib/mc_dot_art_maker/textures → textures}/wheat_stage_4.png +0 -0
- data/{lib/mc_dot_art_maker/textures → textures}/wheat_stage_5.png +0 -0
- data/{lib/mc_dot_art_maker/textures → textures}/wheat_stage_6.png +0 -0
- data/{lib/mc_dot_art_maker/textures → textures}/wheat_stage_7.png +0 -0
- data/textures/wool_colored_black.png +0 -0
- data/textures/wool_colored_blue.png +0 -0
- data/textures/wool_colored_brown.png +0 -0
- data/textures/wool_colored_cyan.png +0 -0
- data/textures/wool_colored_gray.png +0 -0
- data/textures/wool_colored_green.png +0 -0
- data/textures/wool_colored_light_blue.png +0 -0
- data/textures/wool_colored_lime.png +0 -0
- data/textures/wool_colored_magenta.png +0 -0
- data/textures/wool_colored_orange.png +0 -0
- data/textures/wool_colored_pink.png +0 -0
- data/textures/wool_colored_purple.png +0 -0
- data/textures/wool_colored_red.png +0 -0
- data/textures/wool_colored_silver.png +0 -0
- data/textures/wool_colored_white.png +0 -0
- data/textures/wool_colored_yellow.png +0 -0
- data/textures.zip +0 -0
- metadata +401 -334
- data/test/palette.png +0 -0
- data/test/test_image_FloydSteinbergDitherMethod.png +0 -0
- data/test/test_image_NoDitherMethod.png +0 -0
- data/test/test_image_RiemersmaDitherMethod.png +0 -0
- data/test/test_image_mosaic.png +0 -0
- data/test/test_image_texture.png +0 -0
- data/test/test_mosaic.rb +0 -6
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 29209338abdd7386e898607c46898dd765a38b38
|
4
|
+
data.tar.gz: 0eb73d7e9430fc8409baafcb98439dd5bfd911b8
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
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,
|
9
|
+
def initialize(n,i,d,color,tx)
|
10
10
|
@name = n
|
11
11
|
@id = i
|
12
12
|
@data = d
|
13
|
-
@color =
|
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
|
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
|
-
|
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,
|
469
|
+
block = Block.new(name,id, data,color, image)
|
467
470
|
@blocks << block
|
468
|
-
MCDotArtMaker.puts "Block #{name} registered
|
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.
|
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
|
Binary file
|
Binary file
|
File without changes
|
File without changes
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
File without changes
|
File without changes
|
Binary file
|
Binary file
|
Binary file
|
File without changes
|
File without changes
|
Binary file
|
File without changes
|
File without changes
|
Binary file
|
Binary file
|
Binary file
|
File without changes
|
Binary file
|
File without changes
|
Binary file
|
Binary file
|
Binary file
|
File without changes
|
Binary file
|
Binary file
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
Binary file
|
File without changes
|
Binary file
|
Binary file
|
data/lib/mc_dot_art_maker.rb
CHANGED
@@ -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__)
|
data/mc_dot_art_maker.gemspec
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
Gem::Specification.new do |s|
|
2
2
|
s.name = 'mc_dot_art_maker'
|
3
|
-
s.version = '0.3.
|
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
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
File without changes
|
Binary file
|
Binary file
|
Binary file
|
@@ -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
|
data/test/test_block_palette.rb
CHANGED
@@ -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
|
-
|
8
|
-
|
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
|
data/test/test_dither_method.rb
CHANGED
@@ -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
|
-
|
6
|
+
class BlockPaletteTest < Test::Unit::TestCase
|
7
|
+
TMP_DIR = "images/tmp"
|
8
|
+
METHODS = [MCDotArtMaker::NoDitherMethod,MCDotArtMaker::RiemersmaDitherMethod,MCDotArtMaker::FloydSteinbergDitherMethod]
|
5
9
|
|
6
|
-
|
7
|
-
|
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
|
-
|
10
|
-
|
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
|
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
|
data/textures/brick.png
ADDED
Binary file
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|