Grab block data from PrismarineJS/minecraft-data
This commit is contained in:
		
							
								
								
									
										385
									
								
								blocks.py
									
									
									
									
									
								
							
							
						
						
									
										385
									
								
								blocks.py
									
									
									
									
									
								
							@@ -1,216 +1,235 @@
 | 
			
		||||
import minecraft_data
 | 
			
		||||
import json
 | 
			
		||||
 | 
			
		||||
mcd = minecraft_data('1.16.2')
 | 
			
		||||
 | 
			
		||||
MCD_BLOCKS = {}
 | 
			
		||||
for data in mcd.blocks.values():
 | 
			
		||||
    MCD_BLOCKS[data['name']] = data
 | 
			
		||||
 | 
			
		||||
with open('mcdata/blocks.json') as f:
 | 
			
		||||
    BLOCKS = json.load(f)
 | 
			
		||||
    JSON_BLOCKS = json.load(f)
 | 
			
		||||
 | 
			
		||||
BLOCKS = {}
 | 
			
		||||
for name, data in JSON_BLOCKS.items():
 | 
			
		||||
    for state in data['states']:
 | 
			
		||||
        BLOCKS[state['id']] = name.replace('minecraft:', '')
 | 
			
		||||
 | 
			
		||||
AVOID = [
 | 
			
		||||
    'minecraft:lava',
 | 
			
		||||
    'minecraft:water',
 | 
			
		||||
    'minecraft:fire',
 | 
			
		||||
    'minecraft:magma_block',
 | 
			
		||||
    'minecraft:oak_fence',
 | 
			
		||||
    'minecraft:oak_fence_gate',
 | 
			
		||||
    'minecraft:nether_brick_fence',
 | 
			
		||||
    'minecraft:spruce_fence_gate',
 | 
			
		||||
    'minecraft:birch_fence_gate',
 | 
			
		||||
    'minecraft:jungle_fence_gate',
 | 
			
		||||
    'minecraft:acacia_fence_gate',
 | 
			
		||||
    'minecraft:dark_oak_fence_gate',
 | 
			
		||||
    'minecraft:spruce_fence',
 | 
			
		||||
    'minecraft:birch_fence',
 | 
			
		||||
    'minecraft:jungle_fence',
 | 
			
		||||
    'minecraft:acacia_fence',
 | 
			
		||||
    'minecraft:dark_oak_fence',
 | 
			
		||||
    'minecraft:sweet_berry_bush',
 | 
			
		||||
    'minecraft:nether_portal',
 | 
			
		||||
    'minecraft:end_portal',
 | 
			
		||||
    'minecraft:cobblestone_wall',
 | 
			
		||||
    'minecraft:mossy_cobblestone_wall',
 | 
			
		||||
    'minecraft:brick_wall',
 | 
			
		||||
    'minecraft:prismarine_wall',
 | 
			
		||||
    'minecraft:red_sandstone_wall',
 | 
			
		||||
    'minecraft:mossy_stone_brick_wall',
 | 
			
		||||
    'minecraft:granite_wall',
 | 
			
		||||
    'minecraft:stone_brick_wall',
 | 
			
		||||
    'minecraft:nether_brick_wall',
 | 
			
		||||
    'minecraft:andesite_wall',
 | 
			
		||||
    'minecraft:red_nether_brick_wall',
 | 
			
		||||
    'minecraft:sandstone_wall',
 | 
			
		||||
    'minecraft:end_stone_brick_wall',
 | 
			
		||||
    'minecraft:diorite_wall',
 | 
			
		||||
 | 
			
		||||
    'lava',
 | 
			
		||||
    'water',
 | 
			
		||||
    'fire',
 | 
			
		||||
    'magma_block',
 | 
			
		||||
    'oak_fence',
 | 
			
		||||
    'oak_fence_gate',
 | 
			
		||||
    'nether_brick_fence',
 | 
			
		||||
    'spruce_fence_gate',
 | 
			
		||||
    'birch_fence_gate',
 | 
			
		||||
    'jungle_fence_gate',
 | 
			
		||||
    'acacia_fence_gate',
 | 
			
		||||
    'dark_oak_fence_gate',
 | 
			
		||||
    'spruce_fence',
 | 
			
		||||
    'birch_fence',
 | 
			
		||||
    'jungle_fence',
 | 
			
		||||
    'acacia_fence',
 | 
			
		||||
    'dark_oak_fence',
 | 
			
		||||
    'sweet_berry_bush',
 | 
			
		||||
    'nether_portal',
 | 
			
		||||
    'end_portal',
 | 
			
		||||
    'cobblestone_wall',
 | 
			
		||||
    'mossy_cobblestone_wall',
 | 
			
		||||
    'brick_wall',
 | 
			
		||||
    'prismarine_wall',
 | 
			
		||||
    'red_sandstone_wall',
 | 
			
		||||
    'mossy_stone_brick_wall',
 | 
			
		||||
    'granite_wall',
 | 
			
		||||
    'stone_brick_wall',
 | 
			
		||||
    'nether_brick_wall',
 | 
			
		||||
    'andesite_wall',
 | 
			
		||||
    'red_nether_brick_wall',
 | 
			
		||||
    'sandstone_wall',
 | 
			
		||||
    'end_stone_brick_wall',
 | 
			
		||||
    'diorite_wall',
 | 
			
		||||
]
 | 
			
		||||
 | 
			
		||||
NON_SOLID = [
 | 
			
		||||
    'minecraft:air',
 | 
			
		||||
    'minecraft:powered_rail',
 | 
			
		||||
    'minecraft:detector_rail',
 | 
			
		||||
    'minecraft:grass',
 | 
			
		||||
    'minecraft:fern',
 | 
			
		||||
    'minecraft:dead_bush',
 | 
			
		||||
    'minecraft:seagrass',
 | 
			
		||||
    'minecraft:tall_seagrass',
 | 
			
		||||
    'minecraft:dandelion',
 | 
			
		||||
    'minecraft:poppy',
 | 
			
		||||
    'minecraft:blue_orchid',
 | 
			
		||||
    'minecraft:allium',
 | 
			
		||||
    'minecraft:azure_bluet',
 | 
			
		||||
    'minecraft:red_tulip',
 | 
			
		||||
    'minecraft:orange_tulip',
 | 
			
		||||
    'minecraft:white_tulip',
 | 
			
		||||
    'minecraft:pink_tulip',
 | 
			
		||||
    'minecraft:oxeye_daisy',
 | 
			
		||||
    'minecraft:cornflower',
 | 
			
		||||
    'minecraft:wither_rose',
 | 
			
		||||
    'minecraft:lily_of_the_valley',
 | 
			
		||||
    'minecraft:brown_mushroom',
 | 
			
		||||
    'minecraft:red_mushroom',
 | 
			
		||||
    'minecraft:torch',
 | 
			
		||||
    'minecraft:wall_torch',
 | 
			
		||||
    'minecraft:redstone_wire',
 | 
			
		||||
    'minecraft:wheat',
 | 
			
		||||
    'minecraft:oak_sign',
 | 
			
		||||
    'minecraft:spruce_sign',
 | 
			
		||||
    'minecraft:birch_sign',
 | 
			
		||||
    'minecraft:acacia_sign',
 | 
			
		||||
    'minecraft:jungle_sign',
 | 
			
		||||
    'minecraft:dark_oak_sign',
 | 
			
		||||
    'minecraft:rail',
 | 
			
		||||
    'minecraft:oak_wall_sign',
 | 
			
		||||
    'minecraft:spruce_wall_sign',
 | 
			
		||||
    'minecraft:birch_wall_sign',
 | 
			
		||||
    'minecraft:acacia_wall_sign',
 | 
			
		||||
    'minecraft:jungle_wall_sign',
 | 
			
		||||
    'minecraft:dark_oak_wall_sign',
 | 
			
		||||
    'minecraft:lever',
 | 
			
		||||
    'minecraft:stone_pressure_plate',
 | 
			
		||||
    'minecraft:oak_pressure_plate',
 | 
			
		||||
    'minecraft:spruce_pressure_plate',
 | 
			
		||||
    'minecraft:birch_pressure_plate',
 | 
			
		||||
    'minecraft:jungle_pressure_plate',
 | 
			
		||||
    'minecraft:acacia_pressure_plate',
 | 
			
		||||
    'minecraft:dark_oak_pressure_plate',
 | 
			
		||||
    'minecraft:redstone_torch',
 | 
			
		||||
    'minecraft:redstone_wall_torch',
 | 
			
		||||
    'minecraft:stone_button',
 | 
			
		||||
    'minecraft:sugar_cane',
 | 
			
		||||
    'minecraft:repeater',
 | 
			
		||||
    'minecraft:attached_pumpkin_stem',
 | 
			
		||||
    'minecraft:attached_melon_stem',
 | 
			
		||||
    'minecraft:pumpkin_stem',
 | 
			
		||||
    'minecraft:melon_stem',
 | 
			
		||||
    'minecraft:nether_wart',
 | 
			
		||||
    'minecraft:tripwire_hook',
 | 
			
		||||
    'minecraft:tripwire',
 | 
			
		||||
    'minecraft:carrots',
 | 
			
		||||
    'minecraft:potatoes',
 | 
			
		||||
    'minecraft:oak_button',
 | 
			
		||||
    'minecraft:spruce_button',
 | 
			
		||||
    'minecraft:birch_button',
 | 
			
		||||
    'minecraft:jungle_button',
 | 
			
		||||
    'minecraft:acacia_button',
 | 
			
		||||
    'minecraft:dark_oak_button',
 | 
			
		||||
    'minecraft:light_weighted_pressure_plate',
 | 
			
		||||
    'minecraft:heavy_weighted_pressure_plate',
 | 
			
		||||
    'minecraft:comparator',
 | 
			
		||||
    'minecraft:activator_rail',
 | 
			
		||||
    'minecraft:white_carpet',
 | 
			
		||||
    'minecraft:orange_carpet',
 | 
			
		||||
    'minecraft:magenta_carpet',
 | 
			
		||||
    'minecraft:light_blue_carpet',
 | 
			
		||||
    'minecraft:yellow_carpet',
 | 
			
		||||
    'minecraft:lime_carpet',
 | 
			
		||||
    'minecraft:pink_carpet',
 | 
			
		||||
    'minecraft:gray_carpet',
 | 
			
		||||
    'minecraft:light_gray_carpet',
 | 
			
		||||
    'minecraft:cyan_carpet',
 | 
			
		||||
    'minecraft:purple_carpet',
 | 
			
		||||
    'minecraft:blue_carpet',
 | 
			
		||||
    'minecraft:brown_carpet',
 | 
			
		||||
    'minecraft:green_carpet',
 | 
			
		||||
    'minecraft:red_carpet',
 | 
			
		||||
    'minecraft:black_carpet',
 | 
			
		||||
    'minecraft:sunflower',
 | 
			
		||||
    'minecraft:lilac',
 | 
			
		||||
    'minecraft:rose_bush',
 | 
			
		||||
    'minecraft:peony',
 | 
			
		||||
    'minecraft:tall_grass',
 | 
			
		||||
    'minecraft:large_fern',
 | 
			
		||||
    'minecraft:white_banner',
 | 
			
		||||
    'minecraft:orange_banner',
 | 
			
		||||
    'minecraft:magenta_banner',
 | 
			
		||||
    'minecraft:light_blue_banner',
 | 
			
		||||
    'minecraft:yellow_banner',
 | 
			
		||||
    'minecraft:lime_banner',
 | 
			
		||||
    'minecraft:pink_banner',
 | 
			
		||||
    'minecraft:gray_banner',
 | 
			
		||||
    'minecraft:light_gray_banner',
 | 
			
		||||
    'minecraft:cyan_banner',
 | 
			
		||||
    'minecraft:purple_banner',
 | 
			
		||||
    'minecraft:blue_banner',
 | 
			
		||||
    'minecraft:brown_banner',
 | 
			
		||||
    'minecraft:green_banner',
 | 
			
		||||
    'minecraft:red_banner',
 | 
			
		||||
    'minecraft:black_banner',
 | 
			
		||||
    'minecraft:white_wall_banner',
 | 
			
		||||
    'minecraft:orange_wall_banner',
 | 
			
		||||
    'minecraft:magenta_wall_banner',
 | 
			
		||||
    'minecraft:light_blue_wall_banner',
 | 
			
		||||
    'minecraft:yellow_wall_banner',
 | 
			
		||||
    'minecraft:lime_wall_banner',
 | 
			
		||||
    'minecraft:pink_wall_banner',
 | 
			
		||||
    'minecraft:gray_wall_banner',
 | 
			
		||||
    'minecraft:light_gray_wall_banner',
 | 
			
		||||
    'minecraft:cyan_wall_banner',
 | 
			
		||||
    'minecraft:purple_wall_banner',
 | 
			
		||||
    'minecraft:blue_wall_banner',
 | 
			
		||||
    'minecraft:brown_wall_banner',
 | 
			
		||||
    'minecraft:green_wall_banner',
 | 
			
		||||
    'minecraft:red_wall_banner',
 | 
			
		||||
    'minecraft:black_wall_banner',
 | 
			
		||||
    'minecraft:beetroots',
 | 
			
		||||
    'minecraft:bamboo_sapling',
 | 
			
		||||
    'minecraft:void_air',
 | 
			
		||||
    'minecraft:cave_air',
 | 
			
		||||
    'minecraft:lantern',
 | 
			
		||||
    'air',
 | 
			
		||||
    'powered_rail',
 | 
			
		||||
    'detector_rail',
 | 
			
		||||
    'grass',
 | 
			
		||||
    'fern',
 | 
			
		||||
    'dead_bush',
 | 
			
		||||
    'seagrass',
 | 
			
		||||
    'tall_seagrass',
 | 
			
		||||
    'dandelion',
 | 
			
		||||
    'poppy',
 | 
			
		||||
    'blue_orchid',
 | 
			
		||||
    'allium',
 | 
			
		||||
    'azure_bluet',
 | 
			
		||||
    'red_tulip',
 | 
			
		||||
    'orange_tulip',
 | 
			
		||||
    'white_tulip',
 | 
			
		||||
    'pink_tulip',
 | 
			
		||||
    'oxeye_daisy',
 | 
			
		||||
    'cornflower',
 | 
			
		||||
    'wither_rose',
 | 
			
		||||
    'lily_of_the_valley',
 | 
			
		||||
    'brown_mushroom',
 | 
			
		||||
    'red_mushroom',
 | 
			
		||||
    'torch',
 | 
			
		||||
    'wall_torch',
 | 
			
		||||
    'redstone_wire',
 | 
			
		||||
    'wheat',
 | 
			
		||||
    'oak_sign',
 | 
			
		||||
    'spruce_sign',
 | 
			
		||||
    'birch_sign',
 | 
			
		||||
    'acacia_sign',
 | 
			
		||||
    'jungle_sign',
 | 
			
		||||
    'dark_oak_sign',
 | 
			
		||||
    'rail',
 | 
			
		||||
    'oak_wall_sign',
 | 
			
		||||
    'spruce_wall_sign',
 | 
			
		||||
    'birch_wall_sign',
 | 
			
		||||
    'acacia_wall_sign',
 | 
			
		||||
    'jungle_wall_sign',
 | 
			
		||||
    'dark_oak_wall_sign',
 | 
			
		||||
    'lever',
 | 
			
		||||
    'stone_pressure_plate',
 | 
			
		||||
    'oak_pressure_plate',
 | 
			
		||||
    'spruce_pressure_plate',
 | 
			
		||||
    'birch_pressure_plate',
 | 
			
		||||
    'jungle_pressure_plate',
 | 
			
		||||
    'acacia_pressure_plate',
 | 
			
		||||
    'dark_oak_pressure_plate',
 | 
			
		||||
    'redstone_torch',
 | 
			
		||||
    'redstone_wall_torch',
 | 
			
		||||
    'stone_button',
 | 
			
		||||
    'sugar_cane',
 | 
			
		||||
    'repeater',
 | 
			
		||||
    'attached_pumpkin_stem',
 | 
			
		||||
    'attached_melon_stem',
 | 
			
		||||
    'pumpkin_stem',
 | 
			
		||||
    'melon_stem',
 | 
			
		||||
    'nether_wart',
 | 
			
		||||
    'tripwire_hook',
 | 
			
		||||
    'tripwire',
 | 
			
		||||
    'carrots',
 | 
			
		||||
    'potatoes',
 | 
			
		||||
    'oak_button',
 | 
			
		||||
    'spruce_button',
 | 
			
		||||
    'birch_button',
 | 
			
		||||
    'jungle_button',
 | 
			
		||||
    'acacia_button',
 | 
			
		||||
    'dark_oak_button',
 | 
			
		||||
    'light_weighted_pressure_plate',
 | 
			
		||||
    'heavy_weighted_pressure_plate',
 | 
			
		||||
    'comparator',
 | 
			
		||||
    'activator_rail',
 | 
			
		||||
    'white_carpet',
 | 
			
		||||
    'orange_carpet',
 | 
			
		||||
    'magenta_carpet',
 | 
			
		||||
    'light_blue_carpet',
 | 
			
		||||
    'yellow_carpet',
 | 
			
		||||
    'lime_carpet',
 | 
			
		||||
    'pink_carpet',
 | 
			
		||||
    'gray_carpet',
 | 
			
		||||
    'light_gray_carpet',
 | 
			
		||||
    'cyan_carpet',
 | 
			
		||||
    'purple_carpet',
 | 
			
		||||
    'blue_carpet',
 | 
			
		||||
    'brown_carpet',
 | 
			
		||||
    'green_carpet',
 | 
			
		||||
    'red_carpet',
 | 
			
		||||
    'black_carpet',
 | 
			
		||||
    'sunflower',
 | 
			
		||||
    'lilac',
 | 
			
		||||
    'rose_bush',
 | 
			
		||||
    'peony',
 | 
			
		||||
    'tall_grass',
 | 
			
		||||
    'large_fern',
 | 
			
		||||
    'white_banner',
 | 
			
		||||
    'orange_banner',
 | 
			
		||||
    'magenta_banner',
 | 
			
		||||
    'light_blue_banner',
 | 
			
		||||
    'yellow_banner',
 | 
			
		||||
    'lime_banner',
 | 
			
		||||
    'pink_banner',
 | 
			
		||||
    'gray_banner',
 | 
			
		||||
    'light_gray_banner',
 | 
			
		||||
    'cyan_banner',
 | 
			
		||||
    'purple_banner',
 | 
			
		||||
    'blue_banner',
 | 
			
		||||
    'brown_banner',
 | 
			
		||||
    'green_banner',
 | 
			
		||||
    'red_banner',
 | 
			
		||||
    'black_banner',
 | 
			
		||||
    'white_wall_banner',
 | 
			
		||||
    'orange_wall_banner',
 | 
			
		||||
    'magenta_wall_banner',
 | 
			
		||||
    'light_blue_wall_banner',
 | 
			
		||||
    'yellow_wall_banner',
 | 
			
		||||
    'lime_wall_banner',
 | 
			
		||||
    'pink_wall_banner',
 | 
			
		||||
    'gray_wall_banner',
 | 
			
		||||
    'light_gray_wall_banner',
 | 
			
		||||
    'cyan_wall_banner',
 | 
			
		||||
    'purple_wall_banner',
 | 
			
		||||
    'blue_wall_banner',
 | 
			
		||||
    'brown_wall_banner',
 | 
			
		||||
    'green_wall_banner',
 | 
			
		||||
    'red_wall_banner',
 | 
			
		||||
    'black_wall_banner',
 | 
			
		||||
    'beetroots',
 | 
			
		||||
    'bamboo_sapling',
 | 
			
		||||
    'void_air',
 | 
			
		||||
    'cave_air',
 | 
			
		||||
    'lantern',
 | 
			
		||||
]
 | 
			
		||||
SINGLE_SNOW = 3919
 | 
			
		||||
 | 
			
		||||
LOGS = [
 | 
			
		||||
    'minecraft:oak_log',
 | 
			
		||||
    'minecraft:spruce_log',
 | 
			
		||||
    'minecraft:birch_log',
 | 
			
		||||
    'minecraft:jungle_log',
 | 
			
		||||
    'minecraft:acacia_log',
 | 
			
		||||
    'minecraft:dark_oak_log',
 | 
			
		||||
    'oak_log',
 | 
			
		||||
    'spruce_log',
 | 
			
		||||
    'birch_log',
 | 
			
		||||
    'jungle_log',
 | 
			
		||||
    'acacia_log',
 | 
			
		||||
    'dark_oak_log',
 | 
			
		||||
]
 | 
			
		||||
 | 
			
		||||
LEAVES = [
 | 
			
		||||
    'minecraft:oak_leaves',
 | 
			
		||||
    'minecraft:spruce_leaves',
 | 
			
		||||
    'minecraft:birch_leaves',
 | 
			
		||||
    'minecraft:jungle_leaves',
 | 
			
		||||
    'minecraft:acacia_leaves',
 | 
			
		||||
    'minecraft:dark_oak_leaves',
 | 
			
		||||
    'oak_leaves',
 | 
			
		||||
    'spruce_leaves',
 | 
			
		||||
    'birch_leaves',
 | 
			
		||||
    'jungle_leaves',
 | 
			
		||||
    'acacia_leaves',
 | 
			
		||||
    'dark_oak_leaves',
 | 
			
		||||
]
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
NON_SOLID_IDS = set([SINGLE_SNOW])
 | 
			
		||||
for block_name in NON_SOLID:
 | 
			
		||||
    for state in BLOCKS[block_name]['states']:
 | 
			
		||||
    for state in JSON_BLOCKS['minecraft:' + block_name]['states']:
 | 
			
		||||
        NON_SOLID_IDS.add(state['id'])
 | 
			
		||||
 | 
			
		||||
AVOID_IDS = set()
 | 
			
		||||
for block_name in AVOID:
 | 
			
		||||
    for state in BLOCKS[block_name]['states']:
 | 
			
		||||
    for state in JSON_BLOCKS['minecraft:' + block_name]['states']:
 | 
			
		||||
        AVOID_IDS.add(state['id'])
 | 
			
		||||
 | 
			
		||||
LOG_IDS = set()
 | 
			
		||||
for block_name in LOGS:
 | 
			
		||||
    for state in BLOCKS[block_name]['states']:
 | 
			
		||||
    for state in JSON_BLOCKS['minecraft:' + block_name]['states']:
 | 
			
		||||
        LOG_IDS.add(state['id'])
 | 
			
		||||
 | 
			
		||||
LEAF_IDS = set()
 | 
			
		||||
for block_name in LEAVES:
 | 
			
		||||
    for state in BLOCKS[block_name]['states']:
 | 
			
		||||
    for state in JSON_BLOCKS['minecraft:' + block_name]['states']:
 | 
			
		||||
        LEAF_IDS.add(state['id'])
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
def get(bid):
 | 
			
		||||
    name = BLOCKS[bid]
 | 
			
		||||
    return MCD_BLOCKS[name]
 | 
			
		||||
 | 
			
		||||
def find(name):
 | 
			
		||||
    return MCD_BLOCKS[name]
 | 
			
		||||
 
 | 
			
		||||
@@ -10,6 +10,7 @@ idna==2.10
 | 
			
		||||
itsdangerous==1.1.0
 | 
			
		||||
Jinja2==2.11.2
 | 
			
		||||
MarkupSafe==1.1.1
 | 
			
		||||
minecraft-data==2.67.0
 | 
			
		||||
panda3d==1.10.6.post2
 | 
			
		||||
pathtools==0.1.2
 | 
			
		||||
pycparser==2.20
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user