diff --git a/overviewer_core/textures.py b/overviewer_core/textures.py index 7b8f743..5517391 100644 --- a/overviewer_core/textures.py +++ b/overviewer_core/textures.py @@ -1693,6 +1693,49 @@ def generate_special_texture(blockID, data): return generate_texture_tuple(img, blockID) + if blockID == 99 or blockID == 100: # huge brown and red mushroom + if blockID == 99: # brown + cap = terrain_images[126] + else: # red + cap = terrain_images[125] + stem = terrain_images[141] + porous = terrain_images[142] + + if data == 0: # fleshy piece + img = _build_full_block(porous, None, None, porous, porous) + + if data == 1: # north-east corner + img = _build_full_block(cap, None, None, cap, porous) + + if data == 2: # east side + img = _build_full_block(cap, None, None, porous, porous) + + if data == 3: # south-east corner + img = _build_full_block(cap, None, None, porous, cap) + + if data == 4: # north side + img = _build_full_block(cap, None, None, cap, porous) + + if data == 5: # top piece + img = _build_full_block(cap, None, None, porous, porous) + + if data == 6: # south side + img = _build_full_block(cap, None, None, cap, porous) + + if data == 7: # north-west corner + img = _build_full_block(cap, None, None, cap, cap) + + if data == 8: # west side + img = _build_full_block(cap, None, None, porous, cap) + + if data == 9: # south-west corner + img = _build_full_block(cap, None, None, porous, cap) + + if data == 10: # stem + img = _build_full_block(porous, None, None, stem, stem) + + return generate_texture_tuple(img, blockID) + if blockID == 101 or blockID == 102: # iron bars and glass panes if blockID == 101: # iron bars @@ -1961,7 +2004,34 @@ def convert_data(blockID, data): elif (data & 0b0011) == 1: data = data & 0b1100 | 3 elif (data & 0b0011) == 2: data = data & 0b1100 | 1 elif (data & 0b0011) == 3: data = data & 0b1100 | 0 - + if blockID == 99 or blockID == 100: # huge red and brown mushroom + if _north == 'upper-left': + if data == 1: data = 3 + elif data == 2: data = 6 + elif data == 3: data = 9 + elif data == 4: data = 2 + elif data == 6: data = 8 + elif data == 7: data = 1 + elif data == 8: data = 4 + elif data == 9: data = 7 + elif _north == 'upper-right': + if data == 1: data = 9 + elif data == 2: data = 8 + elif data == 3: data = 7 + elif data == 4: data = 6 + elif data == 6: data = 4 + elif data == 7: data = 3 + elif data == 8: data = 2 + elif data == 9: data = 1 + elif _north == 'lower-right': + if data == 1: data = 7 + elif data == 2: data = 4 + elif data == 3: data = 1 + elif data == 4: data = 2 + elif data == 6: data = 8 + elif data == 7: data = 9 + elif data == 8: data = 6 + elif data == 9: data = 3 return data def tintTexture(im, c): @@ -2056,7 +2126,7 @@ def getBiomeData(worlddir, chunkX, chunkY): special_blocks = set([ 2, 6, 9, 17, 18, 20, 26, 23, 27, 28, 29, 31, 33, 34, 35, 43, 44, 50, 51, 53, 54, 55, 58, 59, 61, 62, 63, 64, 65, 66, 67, 68, 71, 75, 76, 79, 85, 86, 90, - 91, 92, 93, 94, 96, 101, 102, 108, 109]) + 91, 92, 93, 94, 96, 99, 100, 101, 102, 108, 109]) # this is a map of special blockIDs to a list of all # possible values for ancillary data that it might have. @@ -2104,6 +2174,8 @@ special_map[92] = range(6) # cake, eaten amount, (not implemented) special_map[93] = range(16) # OFF redstone repeater, orientation and delay special_map[94] = range(16) # ON redstone repeater, orientation and delay special_map[96] = range(8) # trapdoor, open, closed, orientation +special_map[99] = range(11) # huge brown mushroom, side, corner, etc, piece +special_map[100] = range(11) # huge red mushroom, side, corner, etc, piece special_map[101]= range(16) # iron bars, all the possible combination, uses pseudo data special_map[102]= range(16) # glass panes, all the possible combination, uses pseudo data special_map[108]= range(4) # red stairs, orientation