chore: get average colors of blocks
This commit is contained in:
parent
5790b41a29
commit
f329c2d71e
5 changed files with 318 additions and 0 deletions
5
.gitignore
vendored
5
.gitignore
vendored
|
|
@ -22,3 +22,8 @@ dist-ssr
|
|||
*.njsproj
|
||||
*.sln
|
||||
*.sw?
|
||||
|
||||
# Python
|
||||
.venv
|
||||
generator/blocks
|
||||
generator/*.json
|
||||
2
generator/README.md
Normal file
2
generator/README.md
Normal file
|
|
@ -0,0 +1,2 @@
|
|||
# blockmatic/generator
|
||||
Collection of Python scripts to generate data for blockmatic.
|
||||
36
generator/average-color.py
Normal file
36
generator/average-color.py
Normal file
|
|
@ -0,0 +1,36 @@
|
|||
import os
|
||||
import json
|
||||
from pathlib import Path
|
||||
from PIL import Image
|
||||
import numpy as np
|
||||
|
||||
directory = Path("blocks/")
|
||||
output = Path("average_colors.json")
|
||||
|
||||
# Main function
|
||||
def calculate(image_path):
|
||||
image = Image.open(image_path)
|
||||
image = image.convert("RGB")
|
||||
pixels = np.array(image)
|
||||
color = pixels.mean(axis=(0, 1))
|
||||
return tuple(int(c) for c in color)
|
||||
|
||||
# Create directory if it doesn't exist
|
||||
directory.mkdir(parents=True, exist_ok=True)
|
||||
|
||||
# Data for the colors to be written to a file
|
||||
color_data = {}
|
||||
|
||||
# Go through each file in the directory
|
||||
for filename in os.listdir(directory):
|
||||
file = os.path.join(directory, filename)
|
||||
color = calculate(file)
|
||||
|
||||
# Add to color_data while also removing the file extension (.png)
|
||||
color_data[filename[:-4]] = list(color)
|
||||
|
||||
# Write output to file
|
||||
with open(output, "w") as json_file:
|
||||
json.dump(color_data, json_file)
|
||||
|
||||
print("Done!")
|
||||
2
generator/requirements.txt
Normal file
2
generator/requirements.txt
Normal file
|
|
@ -0,0 +1,2 @@
|
|||
numpy==2.1.3
|
||||
pillow==11.0.0
|
||||
273
src/lib/blocks/programmer-art/average_colors.json
Normal file
273
src/lib/blocks/programmer-art/average_colors.json
Normal file
|
|
@ -0,0 +1,273 @@
|
|||
{
|
||||
"redstone_lamp": [70, 43, 26],
|
||||
"piston_top_sticky": [141, 146, 99],
|
||||
"chiseled_red_sandstone": [162, 82, 27],
|
||||
"spruce_log": [45, 28, 12],
|
||||
"red_glazed_terracotta": [181, 59, 53],
|
||||
"cauldron_side": [60, 60, 60],
|
||||
"birch_log_top": [184, 166, 121],
|
||||
"oak_trapdoor": [144, 116, 75],
|
||||
"nether_quartz_ore": [125, 84, 79],
|
||||
"gray_stained_glass": [76, 76, 76],
|
||||
"orange_stained_glass": [216, 127, 51],
|
||||
"purple_shulker_box": [103, 32, 156],
|
||||
"stripped_dark_oak_log": [96, 76, 49],
|
||||
"purpur_block": [166, 121, 166],
|
||||
"purple_glazed_terracotta": [109, 48, 152],
|
||||
"sandstone_top": [218, 210, 158],
|
||||
"bookshelf": [107, 88, 57],
|
||||
"dark_oak_log_top": [78, 62, 41],
|
||||
"enchanting_table_side": [31, 32, 34],
|
||||
"gray_terracotta": [57, 42, 35],
|
||||
"light_gray_concrete_powder": [154, 154, 148],
|
||||
"red_stained_glass": [153, 51, 51],
|
||||
"coal_block": [18, 18, 18],
|
||||
"emerald_ore": [109, 128, 116],
|
||||
"coarse_dirt": [119, 85, 59],
|
||||
"black_wool": [20, 21, 25],
|
||||
"mossy_stone_bricks": [114, 119, 106],
|
||||
"gold_block": [249, 236, 78],
|
||||
"nether_bricks": [44, 22, 26],
|
||||
"light_blue_shulker_box": [49, 163, 212],
|
||||
"purple_terracotta": [118, 70, 86],
|
||||
"repeating_command_block_front": [123, 107, 171],
|
||||
"mycelium_top": [111, 99, 105],
|
||||
"diorite": [179, 179, 182],
|
||||
"stripped_spruce_log_top": [113, 89, 52],
|
||||
"cyan_terracotta": [86, 91, 91],
|
||||
"pink_stained_glass": [242, 127, 165],
|
||||
"chain_command_block_front": [129, 159, 146],
|
||||
"green_concrete": [73, 91, 36],
|
||||
"structure_block": [88, 74, 90],
|
||||
"brown_wool": [114, 71, 40],
|
||||
"purpur_pillar_top": [170, 128, 170],
|
||||
"birch_planks": [195, 179, 123],
|
||||
"magenta_terracotta": [149, 88, 108],
|
||||
"melon_side": [141, 145, 36],
|
||||
"note_block": [100, 67, 50],
|
||||
"pink_concrete_powder": [228, 153, 181],
|
||||
"stripped_jungle_log_top": [170, 133, 84],
|
||||
"polished_andesite": [133, 133, 134],
|
||||
"dried_kelp_top": [50, 58, 38],
|
||||
"yellow_stained_glass": [229, 229, 51],
|
||||
"mossy_cobblestone": [103, 121, 103],
|
||||
"jungle_log": [87, 67, 26],
|
||||
"lime_concrete": [94, 168, 24],
|
||||
"light_gray_stained_glass": [153, 153, 153],
|
||||
"cyan_glazed_terracotta": [52, 118, 125],
|
||||
"spruce_planks": [103, 77, 46],
|
||||
"spawner": [16, 24, 29],
|
||||
"light_blue_concrete_powder": [74, 180, 213],
|
||||
"purple_stained_glass": [127, 63, 178],
|
||||
"sponge": [194, 195, 84],
|
||||
"orange_terracotta": [161, 83, 37],
|
||||
"cracked_stone_bricks": [118, 118, 118],
|
||||
"sea_lantern": [172, 200, 190],
|
||||
"white_glazed_terracotta": [188, 212, 202],
|
||||
"dried_kelp_side": [38, 48, 29],
|
||||
"orange_wool": [240, 118, 19],
|
||||
"blue_shulker_box": [43, 45, 140],
|
||||
"green_wool": [84, 109, 27],
|
||||
"dropper_front": [116, 116, 116],
|
||||
"shulker_box": [139, 96, 139],
|
||||
"stripped_dark_oak_log_top": [86, 69, 46],
|
||||
"andesite": [130, 131, 131],
|
||||
"white_wool": [233, 236, 236],
|
||||
"furnace_front_on": [125, 102, 85],
|
||||
"purple_concrete_powder": [131, 55, 177],
|
||||
"dirt": [134, 96, 67],
|
||||
"bone_block_top": [205, 201, 177],
|
||||
"stone_slab_side": [166, 166, 166],
|
||||
"purple_wool": [121, 42, 172],
|
||||
"glass": [60, 66, 67],
|
||||
"lime_concrete_powder": [125, 189, 41],
|
||||
"stripped_jungle_log": [171, 132, 84],
|
||||
"birch_log": [206, 206, 201],
|
||||
"white_terracotta": [209, 178, 161],
|
||||
"oak_log": [102, 81, 49],
|
||||
"bedrock": [83, 83, 83],
|
||||
"furnace_side": [113, 113, 113],
|
||||
"grass_path_side": [133, 99, 65],
|
||||
"light_blue_wool": [58, 175, 217],
|
||||
"iron_block": [219, 219, 219],
|
||||
"hay_block_top": [168, 139, 16],
|
||||
"black_glazed_terracotta": [67, 30, 32],
|
||||
"red_wool": [160, 39, 34],
|
||||
"redstone_lamp_on": [119, 89, 55],
|
||||
"green_terracotta": [76, 83, 42],
|
||||
"brown_stained_glass": [102, 76, 51],
|
||||
"blue_terracotta": [74, 59, 91],
|
||||
"grass_block_side": [126, 107, 65],
|
||||
"chiseled_sandstone": [215, 208, 154],
|
||||
"stripped_oak_log": [177, 144, 86],
|
||||
"magenta_concrete": [169, 48, 159],
|
||||
"hay_block_side": [157, 116, 18],
|
||||
"gold_ore": [143, 139, 124],
|
||||
"redstone_ore": [132, 107, 107],
|
||||
"quartz_pillar": [231, 227, 219],
|
||||
"granite": [153, 113, 98],
|
||||
"light_gray_concrete": [125, 125, 115],
|
||||
"end_stone": [221, 223, 165],
|
||||
"green_stained_glass": [102, 127, 51],
|
||||
"spruce_log_top": [104, 81, 48],
|
||||
"enchanting_table_bottom": [18, 16, 27],
|
||||
"stripped_oak_log_top": [164, 133, 81],
|
||||
"yellow_concrete": [240, 175, 21],
|
||||
"red_shulker_box": [140, 31, 30],
|
||||
"gray_concrete": [54, 57, 61],
|
||||
"jack_o_lantern": [185, 133, 28],
|
||||
"magenta_glazed_terracotta": [208, 100, 191],
|
||||
"redstone_block": [171, 27, 9],
|
||||
"mushroom_block_inside": [202, 171, 120],
|
||||
"bricks": [146, 99, 86],
|
||||
"white_concrete_powder": [225, 227, 227],
|
||||
"black_shulker_box": [25, 25, 29],
|
||||
"light_blue_glazed_terracotta": [94, 164, 208],
|
||||
"cyan_concrete_powder": [36, 147, 157],
|
||||
"mycelium_side": [113, 88, 73],
|
||||
"gravel": [126, 124, 122],
|
||||
"snow": [239, 251, 251],
|
||||
"black_terracotta": [37, 22, 16],
|
||||
"cut_sandstone": [219, 211, 161],
|
||||
"orange_glazed_terracotta": [154, 147, 91],
|
||||
"dried_kelp_bottom": [50, 58, 38],
|
||||
"gray_concrete_powder": [76, 81, 84],
|
||||
"piston_side": [106, 102, 95],
|
||||
"prismarine": [106, 170, 150],
|
||||
"blue_stained_glass": [51, 76, 178],
|
||||
"purple_concrete": [100, 31, 156],
|
||||
"observer_front": [102, 101, 101],
|
||||
"white_stained_glass": [255, 255, 255],
|
||||
"iron_ore": [135, 130, 126],
|
||||
"black_stained_glass": [25, 25, 25],
|
||||
"carved_pumpkin": [142, 76, 12],
|
||||
"coal_ore": [115, 115, 115],
|
||||
"green_shulker_box": [79, 100, 31],
|
||||
"cobblestone": [122, 122, 122],
|
||||
"pink_terracotta": [161, 78, 78],
|
||||
"cyan_stained_glass": [76, 127, 153],
|
||||
"piston_top": [153, 129, 89],
|
||||
"dark_oak_planks": [61, 39, 18],
|
||||
"end_stone_bricks": [225, 230, 170],
|
||||
"emerald_block": [81, 217, 117],
|
||||
"light_blue_concrete": [35, 137, 198],
|
||||
"acacia_log": [105, 99, 89],
|
||||
"stone_slab_top": [159, 159, 159],
|
||||
"jungle_planks": [154, 110, 77],
|
||||
"blue_wool": [53, 57, 157],
|
||||
"stripped_spruce_log": [115, 89, 52],
|
||||
"terracotta": [150, 92, 66],
|
||||
"brown_concrete": [96, 59, 31],
|
||||
"yellow_terracotta": [186, 133, 35],
|
||||
"yellow_glazed_terracotta": [234, 192, 88],
|
||||
"orange_concrete": [224, 97, 0],
|
||||
"brown_terracotta": [77, 51, 35],
|
||||
"light_gray_shulker_box": [124, 124, 115],
|
||||
"pink_wool": [237, 141, 172],
|
||||
"gray_wool": [62, 68, 71],
|
||||
"lime_stained_glass": [127, 204, 25],
|
||||
"glowstone": [143, 118, 69],
|
||||
"yellow_concrete_powder": [232, 199, 54],
|
||||
"oak_log_top": [154, 125, 77],
|
||||
"oak_planks": [156, 127, 78],
|
||||
"stripped_birch_log": [196, 176, 118],
|
||||
"white_shulker_box": [215, 220, 221],
|
||||
"cyan_wool": [21, 137, 145],
|
||||
"diamond_ore": [129, 140, 143],
|
||||
"polished_granite": [159, 114, 98],
|
||||
"red_sandstone": [165, 84, 29],
|
||||
"crafting_table_front": [115, 95, 63],
|
||||
"spruce_trapdoor": [99, 75, 49],
|
||||
"pink_glazed_terracotta": [235, 154, 181],
|
||||
"ice": [125, 173, 255],
|
||||
"blue_glazed_terracotta": [47, 64, 139],
|
||||
"clay": [158, 164, 176],
|
||||
"gray_glazed_terracotta": [83, 90, 93],
|
||||
"lime_terracotta": [103, 117, 52],
|
||||
"acacia_log_top": [154, 91, 64],
|
||||
"light_gray_terracotta": [135, 106, 97],
|
||||
"blue_ice": [116, 167, 253],
|
||||
"light_blue_stained_glass": [102, 153, 216],
|
||||
"yellow_shulker_box": [248, 188, 29],
|
||||
"brown_concrete_powder": [125, 84, 53],
|
||||
"light_gray_glazed_terracotta": [144, 166, 167],
|
||||
"magenta_shulker_box": [173, 54, 163],
|
||||
"pink_concrete": [213, 101, 142],
|
||||
"sandstone_bottom": [212, 205, 148],
|
||||
"prismarine_bricks": [99, 160, 143],
|
||||
"cyan_concrete": [21, 119, 136],
|
||||
"pink_shulker_box": [230, 121, 157],
|
||||
"tnt_side": [169, 92, 71],
|
||||
"stripped_acacia_log_top": [166, 91, 58],
|
||||
"mushroom_stem": [207, 204, 194],
|
||||
"cyan_shulker_box": [20, 121, 135],
|
||||
"yellow_wool": [248, 197, 39],
|
||||
"furnace_front": [78, 78, 78],
|
||||
"cactus_side": [12, 92, 22],
|
||||
"light_gray_wool": [142, 142, 134],
|
||||
"magma": [134, 65, 25],
|
||||
"wet_sponge": [160, 158, 63],
|
||||
"grass_path_top": [149, 124, 71],
|
||||
"black_concrete_powder": [25, 26, 31],
|
||||
"blue_concrete": [44, 46, 143],
|
||||
"blue_concrete_powder": [70, 73, 166],
|
||||
"red_terracotta": [143, 61, 46],
|
||||
"pumpkin_side": [197, 120, 23],
|
||||
"green_glazed_terracotta": [117, 142, 67],
|
||||
"slime_block": [120, 200, 101],
|
||||
"stone": [125, 125, 125],
|
||||
"lime_glazed_terracotta": [162, 197, 55],
|
||||
"brown_shulker_box": [106, 66, 35],
|
||||
"red_concrete": [142, 32, 32],
|
||||
"white_concrete": [207, 213, 214],
|
||||
"soul_sand": [84, 64, 51],
|
||||
"podzol_side": [122, 87, 57],
|
||||
"observer_side": [62, 60, 60],
|
||||
"acacia_planks": [169, 91, 51],
|
||||
"brown_glazed_terracotta": [119, 106, 85],
|
||||
"light_blue_terracotta": [113, 108, 137],
|
||||
"magenta_stained_glass": [178, 76, 216],
|
||||
"brown_mushroom_block": [141, 106, 83],
|
||||
"red_concrete_powder": [168, 54, 50],
|
||||
"red_sand": [169, 88, 33],
|
||||
"grass_block_snow": [149, 120, 97],
|
||||
"stripped_birch_log_top": [185, 161, 104],
|
||||
"green_concrete_powder": [97, 119, 44],
|
||||
"sandstone": [216, 209, 157],
|
||||
"packed_ice": [165, 194, 245],
|
||||
"sand": [219, 211, 160],
|
||||
"jungle_log_top": [153, 118, 73],
|
||||
"cobweb": [90, 90, 90],
|
||||
"magenta_concrete_powder": [192, 83, 184],
|
||||
"lapis_ore": [102, 112, 134],
|
||||
"chiseled_quartz_block": [231, 228, 220],
|
||||
"stripped_acacia_log": [174, 92, 59],
|
||||
"observer_back": [68, 66, 66],
|
||||
"dark_oak_log": [52, 40, 23],
|
||||
"command_block_front": [172, 132, 108],
|
||||
"lime_shulker_box": [99, 172, 23],
|
||||
"netherrack": [111, 54, 52],
|
||||
"obsidian": [20, 18, 29],
|
||||
"stone_bricks": [122, 122, 122],
|
||||
"dispenser_front": [116, 116, 116],
|
||||
"bone_block_side": [224, 220, 200],
|
||||
"lime_wool": [112, 185, 25],
|
||||
"red_mushroom_block": [182, 37, 36],
|
||||
"polished_diorite": [183, 183, 185],
|
||||
"red_nether_bricks": [68, 4, 6],
|
||||
"quartz_block_side": [236, 233, 226],
|
||||
"orange_concrete_powder": [227, 131, 31],
|
||||
"gray_shulker_box": [55, 58, 62],
|
||||
"black_concrete": [8, 10, 15],
|
||||
"magenta_wool": [189, 68, 179],
|
||||
"orange_shulker_box": [234, 106, 8],
|
||||
"cut_red_sandstone": [168, 85, 30],
|
||||
"purpur_pillar": [170, 126, 170],
|
||||
"dark_prismarine": [59, 87, 75],
|
||||
"diamond_block": [97, 219, 213],
|
||||
"chiseled_stone_bricks": [118, 118, 118],
|
||||
"lapis_block": [38, 67, 137],
|
||||
"end_portal_frame_side": [119, 130, 100],
|
||||
"nether_wart_block": [117, 6, 7],
|
||||
"observer_top": [97, 97, 97]
|
||||
}
|
||||
Loading…
Reference in a new issue