55from minecraft_data .v1_8 import windows_list
66
77from spockbot .mcdata import constants , get_item_or_block
8+ from spockbot .mcdata .blocks import Block
89from spockbot .mcdata .items import Item
910from spockbot .mcdata .utils import camel_case , snake_case
1011
@@ -23,10 +24,17 @@ def make_slot_check(wanted):
2324 if isinstance (wanted , int ):
2425 item , meta = wanted , None
2526 elif isinstance (wanted , Slot ):
26- item , meta = wanted .item_id , wanted .damage
27- # TODO compare NBT
28- else : # wanted is list of (id, meta)
29- item , meta = wanted
27+ item , meta = wanted .item_id , wanted .damage # TODO compare NBT
28+ elif isinstance (wanted , (Item , Block )):
29+ item , meta = wanted .id , wanted .metadata
30+ elif isinstance (wanted , str ):
31+ item_or_block = get_item_or_block (wanted , init = True )
32+ item , meta = item_or_block .id , item_or_block .metadata
33+ else : # wanted is (id, meta)
34+ try :
35+ item , meta = wanted
36+ except TypeError :
37+ raise ValueError ('Illegal args for make_slot_check(): %s' % wanted )
3038
3139 return lambda slot : item == slot .item_id and meta in (None , slot .damage )
3240
0 commit comments