You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
282 lines
5.6 KiB
282 lines
5.6 KiB
import json |
|
import importlib |
|
|
|
import data |
|
importlib.reload(data) |
|
|
|
MCD_BLOCKS = {} |
|
for d in data.mcd.blocks.values(): |
|
MCD_BLOCKS[d['name']] = d |
|
|
|
with open('mcdata/blocks.json') as 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:', '') |
|
|
|
AIR = 0 |
|
SAND = 66 |
|
SINGLE_SNOW = 3921 |
|
SOUL_TORCH = 4008 |
|
|
|
TEST_BLOCK = (616, 78, 496) |
|
|
|
|
|
AVOID = [ |
|
'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 = [ |
|
'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', |
|
'soul_torch', |
|
#'oak_sapling', # saplings can grow up and hurt |
|
#'spruce_sapling', |
|
#'birch_sapling', |
|
#'jungle_sapling', |
|
#'acacia_sapling', |
|
#'dark_oak_sapling', |
|
] |
|
|
|
LOGS = [ |
|
'oak_log', |
|
'spruce_log', |
|
'birch_log', |
|
'jungle_log', |
|
'acacia_log', |
|
'dark_oak_log', |
|
] |
|
|
|
LEAVES = [ |
|
'oak_leaves', |
|
'spruce_leaves', |
|
'birch_leaves', |
|
'jungle_leaves', |
|
'acacia_leaves', |
|
'dark_oak_leaves', |
|
] |
|
|
|
SAPLINGS = [ |
|
'oak_sapling', |
|
'spruce_sapling', |
|
'birch_sapling', |
|
'jungle_sapling', |
|
'acacia_sapling', |
|
'dark_oak_sapling', |
|
] |
|
|
|
CHESTS = [ |
|
'chest', |
|
] |
|
|
|
INDEXED = [ |
|
'chest', |
|
] |
|
|
|
|
|
NON_SOLID_IDS = set([SINGLE_SNOW]) |
|
for block_name in NON_SOLID: |
|
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 JSON_BLOCKS['minecraft:' + block_name]['states']: |
|
AVOID_IDS.add(state['id']) |
|
|
|
LOG_IDS = set() |
|
for block_name in LOGS: |
|
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 JSON_BLOCKS['minecraft:' + block_name]['states']: |
|
LEAF_IDS.add(state['id']) |
|
|
|
CHEST_IDS = set() |
|
for block_name in CHESTS: |
|
for state in JSON_BLOCKS['minecraft:' + block_name]['states']: |
|
CHEST_IDS.add(state['id']) |
|
|
|
INDEXED_IDS = set() |
|
for block_name in INDEXED: |
|
for state in JSON_BLOCKS['minecraft:' + block_name]['states']: |
|
INDEXED_IDS.add(state['id']) |
|
|
|
SAPLING_IDS = set() |
|
for block_name in SAPLINGS: |
|
for state in JSON_BLOCKS['minecraft:' + block_name]['states']: |
|
SAPLING_IDS.add(state['id']) |
|
|
|
|
|
def get(bid): |
|
name = BLOCKS[bid] |
|
return MCD_BLOCKS[name] |
|
|
|
def find(name): |
|
return MCD_BLOCKS[name]
|
|
|