def lookup_block_type(block_type): """ Find block types based on input string. Looks for a hex value iff the block type is two hex digits. In other words, if you specify `-b be` you'll get the block with hex value 'be', not bedrock. @param block_type: Name or hex ID of a block type. @return: Hex IDs of matching blocks. """ if block_type is None or len(block_type) == 0: warnings.warn('Empty block type') return [] block_type = block_type.lower() if [char in HEX_DIGITS for char in block_type] == [True, True]: # 2 hex digits return [unhexlify(block_type)] # Name substring search, could have multiple results result = [] for block_hex, block_names in BLOCK_TYPES.iteritems(): # Block for block_name in block_names: # Synonyms if block_name.lower().find(block_type) != -1: result.append(block_hex) if result == []: warnings.warn('Unknown block type %s' % block_type) return result
def print_block_types(): """Print the block block_names and hexadecimal IDs""" for block_hex, block_names in sorted( BLOCK_TYPES.iteritems(), key=itemgetter(0)): if block_names != [UNUSED_NAME]: sys.stdout.write(hex(ord(block_hex))[2:].upper().zfill(2) + ' ') sys.stdout.write(', '.join(block_names) + '\n')