Add texturing ability

master
sfan5 2014-08-16 22:21:48 +02:00
parent a2a2238862
commit 558634174c
3 changed files with 402 additions and 307 deletions

View File

@ -1,7 +1,16 @@
Ka 1.0 1.0 1.0 Ka 1.0 1.0 1.0
# Only the diffuse colors seems to have any effect, the ambient color stays white
Kd {r} {g} {b}
Ks 0.0 0.0 0.0 Ks 0.0 0.0 0.0
d {a}
illum 1 illum 1
#if {TEXTURES}
# Only the diffuse colors seems to have any effect, the ambient color stays white
Kd {r} {g} {b}
d {a}
#else
Kd 1.0 1.0 1.0
d 1.0
map_Ka {texture}
map_Kd {texture}
#endif

128
mt2obj.py
View File

@ -31,7 +31,9 @@ def convert(desc, vals):
i += 1 i += 1
continue continue
c = desc[i] c = desc[i]
if c == 'x': # copy if c == '0': # skip
pass
elif c == 'x': # copy
out += val, out += val,
elif c == 's': # string elif c == 's': # string
out += str(val), out += str(val),
@ -46,24 +48,98 @@ def convert(desc, vals):
i += 1 i += 1
return out return out
def pp_new(var, strip_empty=False):
return ({'if_state': 0, '_strip_empty': strip_empty}, var)
def pp_process(ctx, line):
for k in ctx[1]:
line = line.replace('{' + k + '}', ctx[1][k])
if ctx[0]['_strip_empty'] and line.strip() == '':
return None
elif line.startswith('# '): # e.g.: # comment
return None
elif line.startswith('#define'): # e.g.: #define name value that may contain spaces
tmp = line.split(' ')
if len(tmp) < 3:
raise Exception('missing something...')
ctx[1][tmp[1]] = ' '.join(tmp[2:])[:-1] # [:-1] to cut off the \n at the end
return None
elif line.startswith('#if'): #e.g.: #if {name}
tmp = line.split(' ')
if len(tmp) < 2:
raise Exception('Missing something..')
tmp = tmp[1]
if tmp.strip().lower() in ['1', 'true', 'yes']:
ctx[0]['if_state'] = 1 # don't ignore current lines, expecting #else or #endif
else:
ctx[0]['if_state'] = 2 # ignore current lines, expecting #else or #endif
return None
elif line.startswith('#else') and ctx[0]['if_state'] == 1:
ctx[0]['if_state'] = 4 # ignore current lines, expecting #endif
elif line.startswith('#else') and ctx[0]['if_state'] == 2:
ctx[0]['if_state'] = 3 # don't ignore current lines, expecting #endif
elif line.startswith('#endif'):
if ctx[0]['if_state'] not in [3, 4]:
raise Exception('stray #endif')
ctx[0]['if_state'] = 0 # no #if in sight
else:
if ctx[0]['if_state'] in [2, 4]:
pass # ignore, see above
else:
return line
return None
def parse_arglist(s):
if s == ':':
return {}
state = 1
tmp1 = ''
tmp2 = ''
out = {}
for c in s:
if state == 1: # part before =
if c == ':':
if tmp1 == '':
raise Exception('name must be non-empty')
out[tmp1] = '1' # set to '1' if no value given, e.g. 'foo=1:bar:cats=yes' would set bar to '1'
elif c == '=':
state = 2
else:
tmp1 += c
elif state == 2: # part after =
if c == ':':
if tmp1 == '':
raise Exception('name must be non-empty')
out[tmp1] = tmp2
else:
tmp2 += c
if tmp1 != '' and state == 1:
out[tmp1] = '1'
elif tmp1 != '' and state == 2:
out[tmp1] = tmp2
return out
nodetbl = {} nodetbl = {}
r_entry = re.compile(r'^(\S+) (\S+) (\d+) (\d+) (\d+)(?: (\d+))?$') r_entry = re.compile(r'^(\S+) (\S+) (\d+) (\d+) (\d+) (\S+)(?: (\d+))?$')
f = open("nodes.txt", "r") f = open("nodes.txt", "r")
for l in f: for l in f:
m = r_entry.match(l) m = r_entry.match(l)
nodetbl[m.group(1)] = convert('siiii', m.groups()[1:]) nodetbl[m.group(1)] = convert('siiisi', m.groups()[1:])
f.close() f.close()
optargs, args = getopt.getopt(sys.argv[1:], '') optargs, args = getopt.getopt(sys.argv[1:], 't')
if len(args) < 1: if len(args) < 1:
print("Usage: %s <.mts schematic>" % sys.argv[0]) print("Usage: %s <.mts schematic>" % sys.argv[0])
print("Converts .mts schematics to Wavefront .obj geometry files") print("Converts .mts schematics to Wavefront .obj geometry files")
print("") print("")
print("Output files are written into directory of source file.") print("Output files are written into directory of source file.")
print('')
print('Options:')
print('\t-t\t\tEnable textures')
exit(1) exit(1)
else: else:
sch = open(args[0], "rb") sch = open(args[0], "rb")
@ -82,7 +158,7 @@ else:
l = struct.unpack("!H", sch.read(2))[0] l = struct.unpack("!H", sch.read(2))[0]
name = sch.read(l).decode('ascii') name = sch.read(l).decode('ascii')
nodemap[i] = name nodemap[i] = name
# TODO use zlib.compressobj # TODO use zlib.decompressobj() instead of decompressing everything at once
cdata = sch.read() cdata = sch.read()
sch.close() sch.close()
data = zlib.decompress(cdata) data = zlib.decompress(cdata)
@ -111,12 +187,14 @@ else:
obj.write("o node%d\n" % i) obj.write("o node%d\n" % i)
obj.write("usemtl %s\n" % nname.replace(":", "__")) obj.write("usemtl %s\n" % nname.replace(":", "__"))
objd = open("models/" + nodetbl[nname][0] + ".obj", 'r') objd = open("models/" + nodetbl[nname][0] + ".obj", 'r')
tmp = parse_arglist(nodetbl[nname][4])
tmp['TEXTURES'] = str('-t' in optargs)
ppctx = pp_new(tmp, strip_empty=True)
for line in objd: for line in objd:
if line.strip() == "": line = pp_process(ppctx, line)
pass if line is None:
elif line.startswith("#"): continue
pass # comment if line.startswith("v "):
elif line.startswith("v "):
tmp = line.split(" ") tmp = line.split(" ")
vx, vy, vz = float(tmp[1]), float(tmp[2]), float(tmp[3]) vx, vy, vz = float(tmp[1]), float(tmp[2]), float(tmp[3])
vx += x vx += x
@ -125,6 +203,7 @@ else:
obj.write("v %f %f %f\n" % (vx, vy, vz)) obj.write("v %f %f %f\n" % (vx, vy, vz))
else: else:
obj.write(line) obj.write(line)
del ppctx
objd.close() objd.close()
obj.write("\n") obj.write("\n")
i += 1 i += 1
@ -135,18 +214,25 @@ else:
mtl.write("newmtl %s\n" % node.replace(":", "__")) mtl.write("newmtl %s\n" % node.replace(":", "__"))
c = nodetbl[node] c = nodetbl[node]
mtld = open("models/" + nodetbl[node][0] + ".mtl", 'r') mtld = open("models/" + nodetbl[node][0] + ".mtl", 'r')
if len(c) > 5: # if there is transparency
tmp1 = c[5]/255
else:
tmp1 = 1.0
tmp = {
'r': str(c[1]/255),
'g': str(c[2]/255),
'b': str(c[3]/255),
'a': str(tmp1),
'TEXTURES': str('-t' in optargs),
}
tmp.update(parse_arglist(nodetbl[node][4]))
ppctx = pp_new(tmp, strip_empty=True)
for line in mtld: for line in mtld:
if line.strip() == "": line = pp_process(ppctx, line)
pass if line is None:
elif line.startswith("#"): continue
pass # comment mtl.write(line)
else: del ppctx
if len(c) > 4: # if there is transparency
tmp1 = c[4]/255
else:
tmp1 = 1.0
tmp2 = line.replace("{r}", str(c[1]/255)).replace("{g}", str(c[2]/255)).replace("{b}", str(c[3]/255)).replace("{a}", str(tmp1))
mtl.write(tmp2)
mtl.write("\n") mtl.write("\n")
mtld.close() mtld.close()
mtl.close() mtl.close()

566
nodes.txt
View File

@ -1,283 +1,283 @@
beds:bed_top_red cube 131 22 22 beds:bed_top_red cube 131 22 22 :
beds:bed_bottom_blue cube 10 11 122 beds:bed_bottom_blue cube 10 11 122 :
beds:bed_bottom_grey cube 147 147 147 beds:bed_bottom_grey cube 147 147 147 :
beds:bed_bottom_white cube 215 215 215 beds:bed_bottom_white cube 215 215 215 :
beds:bed_bottom_green cube 12 92 10 beds:bed_bottom_green cube 12 92 10 :
beds:bed_bottom_orange cube 217 123 10 beds:bed_bottom_orange cube 217 123 10 :
beds:bed_top_blue cube 11 12 122 beds:bed_top_blue cube 11 12 122 :
beds:bed_bottom_violet cube 129 10 180 beds:bed_bottom_violet cube 129 10 180 :
beds:bed_top_green cube 13 92 11 beds:bed_top_green cube 13 92 11 :
beds:bed_bottom_black cube 10 10 10 beds:bed_bottom_black cube 10 10 10 :
beds:bed_bottom_yellow cube 215 214 0 beds:bed_bottom_yellow cube 215 214 0 :
beds:bed_bottom_red cube 131 21 21 beds:bed_bottom_red cube 131 21 21 :
beds:bed_top_white cube 215 215 215 beds:bed_top_white cube 215 215 215 :
beds:bed_top_yellow cube 215 214 0 beds:bed_top_yellow cube 215 214 0 :
beds:bed_top_violet cube 129 11 180 beds:bed_top_violet cube 129 11 180 :
beds:bed_top_grey cube 147 147 147 beds:bed_top_grey cube 147 147 147 :
beds:bed_top_black cube 11 11 11 beds:bed_top_black cube 11 11 11 :
beds:bed_top_orange cube 216 123 11 beds:bed_top_orange cube 216 123 11 :
nuke:hardcore_mese_tnt cube 173 173 0 nuke:hardcore_mese_tnt cube 173 173 0 :
nuke:iron_tnt cube 158 158 157 nuke:iron_tnt cube 158 158 157 :
nuke:hardcore_iron_tnt cube 158 158 157 nuke:hardcore_iron_tnt cube 158 158 157 :
nuke:mese_tnt cube 173 173 0 nuke:mese_tnt cube 173 173 0 :
christmas:present_green_violet cube 189 36 157 christmas:present_green_violet cube 189 36 157 :
christmas:present_blue_green cube 62 186 50 christmas:present_blue_green cube 62 186 50 :
christmas:present_orange_green cube 62 186 50 christmas:present_orange_green cube 62 186 50 :
christmas:tree cube 45 36 24 christmas:tree cube 45 36 24 :
christmas:present_orange_violet cube 189 36 157 christmas:present_orange_violet cube 189 36 157 :
christmas:present_blue_orange cube 245 207 20 christmas:present_blue_orange cube 245 207 20 :
christmas:present_blue_violet cube 189 36 157 christmas:present_blue_violet cube 189 36 157 :
christmas:star cube 236 252 55 christmas:star cube 236 252 55 :
christmas:present_green_orange cube 245 207 20 christmas:present_green_orange cube 245 207 20 :
christmas:leaves cube 33 54 30 christmas:leaves cube 33 54 30 :
snow:moss cube 51 64 29 snow:moss cube 51 64 29 :
snow:snow5 cube 225 227 255 snow:snow5 cube 225 227 255 :
snow:snow3 cube 225 227 255 snow:snow3 cube 225 227 255 :
snow:needles_decorated cube 7 50 19 snow:needles_decorated cube 7 50 19 :
snow:needles cube 6 49 18 snow:needles cube 6 49 18 :
snow:snow8 cube 225 227 255 snow:snow8 cube 225 227 255 :
snow:star cube 214 142 0 snow:star cube 214 142 0 :
snow:snow cube 225 227 255 snow:snow cube 225 227 255 :
snow:xmas_tree cube 87 88 28 snow:xmas_tree cube 87 88 28 :
snow:sapling_pine cube 3 54 20 snow:sapling_pine cube 3 54 20 :
snow:snow6 cube 225 227 255 snow:snow6 cube 225 227 255 :
snow:snow_block cube 225 227 255 snow:snow_block cube 225 227 255 :
snow:snow7 cube 225 227 255 snow:snow7 cube 225 227 255 :
snow:snow_brick cube 223 225 253 snow:snow_brick cube 223 225 253 :
snow:dirt_with_snow cube 225 227 255 snow:dirt_with_snow cube 225 227 255 :
snow:snow4 cube 225 227 255 snow:snow4 cube 225 227 255 :
snow:snow2 cube 225 227 255 snow:snow2 cube 225 227 255 :
snow:ice cube 155 155 254 snow:ice cube 155 155 254 :
stairs:stair_wood_tile_full cube 78 64 44 stairs:stair_wood_tile_full cube 78 64 44 :
stairs:stair_mossycobble cube 102 116 85 stairs:stair_mossycobble cube 102 116 85 :
stairs:slab_jungle_wood cube 51 35 12 stairs:slab_jungle_wood cube 51 35 12 :
stairs:slab_wood_tile_center cube 128 100 57 stairs:slab_wood_tile_center cube 128 100 57 :
stairs:stair_wood_tile cube 78 65 44 stairs:stair_wood_tile cube 78 65 44 :
stairs:stair_cobble cube 133 133 133 stairs:stair_cobble cube 133 133 133 :
stairs:slab_invisible cube 0 0 0 stairs:slab_invisible cube 0 0 0 :
stairs:stair_stonebrick cube 104 100 99 stairs:stair_stonebrick cube 104 100 99 :
stairs:slab_iron_glass cube 222 222 222 stairs:slab_iron_glass cube 222 222 222 :
stairs:stair_wood cube 128 100 57 stairs:stair_wood cube 128 100 57 :
stairs:stair_stone cube 91 88 87 stairs:stair_stone cube 91 88 87 :
stairs:stair_obsidian cube 16 16 16 stairs:stair_obsidian cube 16 16 16 :
stairs:stair_copperblock cube 110 86 60 stairs:stair_copperblock cube 110 86 60 :
stairs:stair_super_glow_glass cube 255 255 120 stairs:stair_super_glow_glass cube 255 255 120 :
stairs:slab_iron_stone cube 134 134 134 stairs:slab_iron_stone cube 134 134 134 :
stairs:stair_stone_tile cube 97 97 97 stairs:stair_stone_tile cube 97 97 97 :
stairs:stair_desert_stone cube 122 74 57 stairs:stair_desert_stone cube 122 74 57 :
stairs:slab_bronzeblock cube 116 70 26 stairs:slab_bronzeblock cube 116 70 26 :
stairs:stair_goldblock cube 126 116 35 stairs:stair_goldblock cube 126 116 35 :
stairs:stair_iron_checker cube 142 142 142 stairs:stair_iron_checker cube 142 142 142 :
stairs:stair_steelblock cube 153 153 153 stairs:stair_steelblock cube 153 153 153 :
stairs:slab_coal_stone cube 70 70 70 stairs:slab_coal_stone cube 70 70 70 :
stairs:slab_obsidian_glass cube 16 17 17 stairs:slab_obsidian_glass cube 16 17 17 :
stairs:stair_sandstone cube 180 162 121 stairs:stair_sandstone cube 180 162 121 :
stairs:stair_iron_stone cube 134 134 134 stairs:stair_iron_stone cube 134 134 134 :
stairs:slab_steelblock cube 153 153 153 stairs:slab_steelblock cube 153 153 153 :
stairs:stair_split_stone_tile cube 97 97 97 stairs:stair_split_stone_tile cube 97 97 97 :
stairs:stair_brick cube 156 157 151 stairs:stair_brick cube 156 157 151 :
stairs:stair_sandstonebrick cube 160 144 108 stairs:stair_sandstonebrick cube 160 144 108 :
stairs:slab_mossycobble cube 102 116 85 stairs:slab_mossycobble cube 102 116 85 :
stairs:stair_glass cube 192 192 227 stairs:stair_glass cube 192 192 227 :
stairs:slab_cactus_checker cube 130 138 130 stairs:slab_cactus_checker cube 130 138 130 :
stairs:slab_jungletree cube 120 106 78 stairs:slab_jungletree cube 120 106 78 :
stairs:stair_coal_stone cube 70 70 70 stairs:stair_coal_stone cube 70 70 70 :
stairs:slab_junglewood cube 51 35 12 stairs:slab_junglewood cube 51 35 12 :
stairs:stair_jungletree cube 120 106 78 stairs:stair_jungletree cube 120 106 78 :
stairs:slab_wood cube 128 100 57 stairs:slab_wood cube 128 100 57 :
stairs:stair_iron_stone_bricks cube 104 98 97 stairs:stair_iron_stone_bricks cube 104 98 97 :
stairs:stair_coal_checker cube 133 133 133 stairs:stair_coal_checker cube 133 133 133 :
stairs:stair_plankstone cube 66 51 23 stairs:stair_plankstone cube 66 51 23 :
stairs:stair_obsidian_glass cube 16 17 17 stairs:stair_obsidian_glass cube 16 17 17 :
stairs:slab_desert_stone cube 122 74 57 stairs:slab_desert_stone cube 122 74 57 :
stairs:slab_iron_stone_bricks cube 104 98 97 stairs:slab_iron_stone_bricks cube 104 98 97 :
stairs:slab_glass cube 192 192 227 stairs:slab_glass cube 192 192 227 :
stairs:stair_bronzeblock cube 116 70 26 stairs:stair_bronzeblock cube 116 70 26 :
stairs:slab_desert_stonebrick cube 105 64 49 stairs:slab_desert_stonebrick cube 105 64 49 :
stairs:slab_tree cube 66 52 35 stairs:slab_tree cube 66 52 35 :
stairs:slab_stone cube 91 88 87 stairs:slab_stone cube 91 88 87 :
stairs:stair_cactus_checker cube 130 138 130 stairs:stair_cactus_checker cube 130 138 130 :
stairs:slab_diamondblock cube 103 195 201 stairs:slab_diamondblock cube 103 195 201 :
stairs:slab_super_glow_glass cube 255 255 120 stairs:slab_super_glow_glass cube 255 255 120 :
stairs:slab_cobble cube 133 133 133 stairs:slab_cobble cube 133 133 133 :
stairs:stair_tree cube 66 52 35 stairs:stair_tree cube 66 52 35 :
stairs:slab_wood_tile cube 78 65 44 stairs:slab_wood_tile cube 78 65 44 :
stairs:slab_glow_glass cube 255 226 114 stairs:slab_glow_glass cube 255 226 114 :
stairs:slab_wood_tile_full cube 78 64 44 stairs:slab_wood_tile_full cube 78 64 44 :
stairs:stair_coal_stone_bricks cube 79 76 75 stairs:stair_coal_stone_bricks cube 79 76 75 :
stairs:slab_coal_glass cube 130 130 130 stairs:slab_coal_glass cube 130 130 130 :
stairs:stair_coal_glass cube 130 130 130 stairs:stair_coal_glass cube 130 130 130 :
stairs:slab_brick cube 156 157 151 stairs:slab_brick cube 156 157 151 :
stairs:slab_stone_tile cube 97 97 97 stairs:slab_stone_tile cube 97 97 97 :
stairs:slab_goldblock cube 126 116 35 stairs:slab_goldblock cube 126 116 35 :
stairs:slab_plankstone cube 66 51 23 stairs:slab_plankstone cube 66 51 23 :
stairs:slab_coal_stone_bricks cube 79 76 75 stairs:slab_coal_stone_bricks cube 79 76 75 :
stairs:stair_jungle_wood cube 51 35 12 stairs:stair_jungle_wood cube 51 35 12 :
stairs:stair_circle_stone_bricks cube 91 88 87 stairs:stair_circle_stone_bricks cube 91 88 87 :
stairs:slab_iron_checker cube 142 142 142 stairs:slab_iron_checker cube 142 142 142 :
stairs:stair_wood_tile_center cube 128 100 57 stairs:stair_wood_tile_center cube 128 100 57 :
stairs:slab_stonebrick cube 104 100 99 stairs:slab_stonebrick cube 104 100 99 :
stairs:slab_sandstonebrick cube 160 144 108 stairs:slab_sandstonebrick cube 160 144 108 :
stairs:stair_invisible cube 0 0 0 stairs:stair_invisible cube 0 0 0 :
stairs:stair_iron_glass cube 222 222 222 stairs:stair_iron_glass cube 222 222 222 :
stairs:stair_desert_stonebrick cube 105 64 49 stairs:stair_desert_stonebrick cube 105 64 49 :
stairs:stair_diamondblock cube 103 195 201 stairs:stair_diamondblock cube 103 195 201 :
stairs:slab_sandstone cube 180 162 121 stairs:slab_sandstone cube 180 162 121 :
stairs:slab_copperblock cube 110 86 60 stairs:slab_copperblock cube 110 86 60 :
stairs:stair_glow_glass cube 255 226 114 stairs:stair_glow_glass cube 255 226 114 :
stairs:stair_junglewood cube 51 35 12 stairs:stair_junglewood cube 51 35 12 :
stairs:slab_circle_stone_bricks cube 91 88 87 stairs:slab_circle_stone_bricks cube 91 88 87 :
stairs:slab_obsidian cube 16 16 16 stairs:slab_obsidian cube 16 16 16 :
stairs:slab_coal_checker cube 133 133 133 stairs:slab_coal_checker cube 133 133 133 :
stairs:slab_split_stone_tile cube 97 97 97 stairs:slab_split_stone_tile cube 97 97 97 :
mg:savannawood cube 128 113 57 mg:savannawood cube 128 113 57 :
mg:pineleaves cube 16 30 14 mg:pineleaves cube 16 30 14 :
mg:savannasapling cube 32 36 13 mg:savannasapling cube 32 36 13 :
mg:pinewood cube 120 93 66 mg:pinewood cube 120 93 66 :
mg:pinetree cube 26 21 14 mg:pinetree cube 26 21 14 :
mg:savannaleaves cube 70 62 41 mg:savannaleaves cube 70 62 41 :
mg:pinesapling cube 12 12 5 mg:pinesapling cube 12 12 5 :
mg:savannatree cube 52 51 37 mg:savannatree cube 52 51 37 :
mg:dirt_with_dry_grass cube 114 99 53 mg:dirt_with_dry_grass cube 114 99 53 :
bones:bones cube 74 74 74 bones:bones cube 74 74 74 :
default:glass cube 192 192 227 64 default:glass cube 192 192 227 : 64
default:water_flowing cube 39 66 106 128 default:water_flowing cube 39 66 106 : 128
default:junglesapling cube 37 34 14 default:junglesapling cube 37 34 14 :
default:sandstonebrick cube 160 144 108 default:sandstonebrick cube 160 144 108 :
default:furnace_active cube 97 93 91 default:furnace_active cube 97 93 91 :
default:sign_wall cube 163 141 106 default:sign_wall cube 163 141 106 :
default:lava_source cube 255 100 0 default:lava_source cube 255 100 0 :
default:goldblock cube 126 116 35 default:goldblock cube 126 116 35 :
default:obsidian_glass cube 16 17 17 64 default:obsidian_glass cube 16 17 17 : 64
default:stone_with_copper cube 91 88 87 default:stone_with_copper cube 91 88 87 :
default:grass_1 cube 72 109 32 default:grass_1 cube 72 109 32 :
default:papyrus cube 98 173 32 default:papyrus cube 98 173 32 :
default:ice cube 155 155 254 default:ice cube 155 155 254 :
default:wood cube 128 100 57 default:wood cube 128 100 57 :
default:stone_with_mese cube 91 88 87 default:stone_with_mese cube 91 88 87 :
default:diamondblock cube 103 195 201 default:diamondblock cube 103 195 201 :
default:coalblock cube 58 58 58 default:coalblock cube 58 58 58 :
default:stone_with_gold cube 91 88 87 default:stone_with_gold cube 91 88 87 :
default:apple cube 50 0 0 default:apple cube 50 0 0 :
default:grass_4 cube 73 112 33 default:grass_4 cube 73 112 33 :
default:dirt_with_grass_footsteps cube 101 138 35 default:dirt_with_grass_footsteps cube 101 138 35 :
default:desert_stonebrick cube 105 64 49 default:desert_stonebrick cube 105 64 49 :
default:cloud cube 255 255 255 default:cloud cube 255 255 255 :
default:stone_with_iron cube 91 88 87 default:stone_with_iron cube 91 88 87 :
default:bronzeblock cube 116 70 26 default:bronzeblock cube 116 70 26 :
default:dirt_with_snow cube 225 227 255 default:dirt_with_snow cube 225 227 255 :
default:fence_wood cube 128 100 57 default:fence_wood cube 128 100 57 :
default:desert_sand cube 209 165 97 default:desert_sand cube 209 165 97 :
default:steelblock cube 153 153 153 default:steelblock cube 153 153 153 :
default:rail cube 114 82 33 default:rail cube 114 82 33 :
default:nyancat_rainbow cube 58 19 128 default:nyancat_rainbow cube 58 19 128 :
default:lava_flowing cube 255 100 0 default:lava_flowing cube 255 100 0 :
default:sapling cube 63 59 40 default:sapling cube 63 59 40 :
default:snow cube 225 227 255 default:snow cube 225 227 255 :
default:furnace cube 97 93 91 default:furnace cube 97 93 91 :
default:desert_stone cube 122 74 57 default:desert_stone cube 122 74 57 :
default:tree cube 66 52 35 default:tree cube 66 52 35 :
default:jungletree cube 120 106 78 default:jungletree cube 120 106 78 :
default:cactus cube 132 143 108 default:cactus cube 132 143 108 :
default:water_source cube 39 66 106 128 default:water_source cube 39 66 106 : 128
default:mese cube 200 202 0 default:mese cube 200 202 0 :
default:stone_with_coal cube 91 88 87 default:stone_with_coal cube 91 88 87 :
default:nyancat cube 38 16 66 default:nyancat cube 38 16 66 :
default:snowblock cube 225 227 255 default:snowblock cube 225 227 255 :
default:stonebrick cube 104 100 99 default:stonebrick cube 104 100 99 :
default:jungleleaves cube 18 25 14 default:jungleleaves cube 18 25 14 :
default:sandstone cube 180 162 121 default:sandstone cube 180 162 121 :
default:dirt_with_grass cube 72 107 44 default:dirt_with_grass cube 72 107 44 :
default:brick cube 156 157 151 default:brick cube 156 157 151 :
default:junglegrass cube 82 133 35 default:junglegrass cube 82 133 35 :
default:cobble cube 133 133 133 default:cobble cube 133 133 133 :
default:grass_3 cube 71 109 32 default:grass_3 cube 71 109 32 :
default:stone cube 91 88 87 default:stone cube 91 88 87 :
default:sand cube 219 209 167 default:sand cube 219 209 167 :
default:obsidian cube 16 16 16 default:obsidian cube 16 16 16 :
default:bookshelf cube 128 100 57 default:bookshelf cube 128 100 57 :
default:leaves cube 30 47 28 default:leaves cube 30 47 28 :
default:grass_5 cube 73 112 33 default:grass_5 cube 73 112 33 :
default:ladder cube 153 109 39 default:ladder cube 153 109 39 :
default:dirt cube 122 83 58 default:dirt cube 122 83 58 :
default:mossycobble cube 102 116 85 default:mossycobble cube 102 116 85 :
default:stone_with_diamond cube 91 88 87 default:stone_with_diamond cube 91 88 87 :
default:grass_2 cube 71 109 32 default:grass_2 cube 71 109 32 :
default:chest cube 238 219 171 default:chest cube 238 219 171 :
default:gravel cube 92 84 76 default:gravel cube 92 84 76 :
default:torch cube 213 154 84 default:torch cube 213 154 84 :
default:clay cube 178 178 178 default:clay cube 178 178 178 :
default:chest_locked cube 238 219 171 default:chest_locked cube 238 219 171 :
default:copperblock cube 110 86 60 default:copperblock cube 110 86 60 :
default:dry_shrub cube 117 75 14 default:dry_shrub cube 117 75 14 :
default:junglewood cube 51 35 12 default:junglewood cube 51 35 12 :
signs:sign_yard cube 163 141 106 signs:sign_yard cube 163 141 106 :
signs:sign_post cube 4 2 0 signs:sign_post cube 4 2 0 :
junglegrass:shortest cube 55 92 21 junglegrass:shortest cube 55 92 21 :
junglegrass:short cube 49 89 15 junglegrass:short cube 49 89 15 :
junglegrass:medium cube 83 135 36 junglegrass:medium cube 83 135 36 :
doors:door_wood_t_2 cube 87 64 30 doors:door_wood_t_2 cube 87 64 30 :
doors:door_wood_b_1 cube 87 64 30 doors:door_wood_b_1 cube 87 64 30 :
doors:door_wood_t_1 cube 87 64 30 doors:door_wood_t_1 cube 87 64 30 :
doors:door_steel_t_1 cube 162 162 162 doors:door_steel_t_1 cube 162 162 162 :
doors:door_steel_t_2 cube 162 162 162 doors:door_steel_t_2 cube 162 162 162 :
doors:door_steel_b_1 cube 162 162 162 doors:door_steel_b_1 cube 162 162 162 :
doors:door_wood_b_2 cube 87 64 30 doors:door_wood_b_2 cube 87 64 30 :
doors:door_steel_b_2 cube 162 162 162 doors:door_steel_b_2 cube 162 162 162 :
poisonivy:climbing cube 91 143 24 poisonivy:climbing cube 91 143 24 :
poisonivy:sproutling cube 111 166 30 poisonivy:sproutling cube 111 166 30 :
poisonivy:seedling cube 127 190 34 poisonivy:seedling cube 127 190 34 :
wool:magenta cube 210 3 121 wool:magenta cube 210 3 121 texture=wool_magenta.png
wool:blue cube 0 78 152 wool:blue cube 0 78 152 texture=wool_blue.png
wool:cyan cube 0 142 150 wool:cyan cube 0 142 150 :
wool:orange cube 220 91 24 wool:orange cube 220 91 24 texture=wool_orange.png
wool:grey cube 141 141 141 wool:grey cube 141 141 141 :
wool:dark_grey cube 65 65 65 wool:dark_grey cube 65 65 65 :
wool:pink cube 255 144 144 wool:pink cube 255 144 144 :
wool:white cube 228 228 228 wool:white cube 228 228 228 :
wool:violet cube 96 2 177 wool:violet cube 96 2 177 :
wool:black cube 33 33 33 wool:black cube 33 33 33 :
wool:green cube 99 230 28 wool:green cube 99 230 28 :
wool:brown cube 95 49 0 wool:brown cube 95 49 0 :
wool:yellow cube 253 237 16 wool:yellow cube 253 237 16 texture=wool_yellow.png
wool:dark_green cube 36 109 0 wool:dark_green cube 36 109 0 :
wool:red cube 180 20 20 wool:red cube 180 20 20 :
fire:basic_flame cube 147 47 11 fire:basic_flame cube 147 47 11 :
vessels:glass_bottle cube 211 212 211 vessels:glass_bottle cube 211 212 211 :
vessels:steel_bottle cube 109 109 109 vessels:steel_bottle cube 109 109 109 :
vessels:drinking_glass cube 220 220 220 vessels:drinking_glass cube 220 220 220 :
flowers:rose cube 159 9 0 flowers:rose cube 159 9 0 :
flowers:potted_tulip cube 114 41 22 flowers:potted_tulip cube 114 41 22 :
flowers:viola cube 108 83 106 flowers:viola cube 108 83 106 :
flowers:tulip cube 91 146 5 flowers:tulip cube 91 146 5 :
flowers:geranium cube 54 72 184 flowers:geranium cube 54 72 184 :
flowers:potted_dandelion_yellow cube 116 43 22 flowers:potted_dandelion_yellow cube 116 43 22 :
flowers:waterlily cube 46 108 0 flowers:waterlily cube 46 108 0 :
flowers:waterlily_225 cube 49 110 2 flowers:waterlily_225 cube 49 110 2 :
flowers:dandelion_yellow cube 147 178 3 flowers:dandelion_yellow cube 147 178 3 :
flowers:potted_geranium cube 76 60 124 flowers:potted_geranium cube 76 60 124 :
flowers:dandelion_white cube 136 179 95 flowers:dandelion_white cube 136 179 95 :
flowers:potted_rose cube 115 40 22 flowers:potted_rose cube 115 40 22 :
flowers:waterlily_675 cube 165 194 103 flowers:waterlily_675 cube 165 194 103 :
flowers:waterlily_45 cube 150 179 101 flowers:waterlily_45 cube 150 179 101 :
flowers:potted_dandelion_white cube 116 43 25 flowers:potted_dandelion_white cube 116 43 25 :
flowers:seaweed cube 28 112 11 flowers:seaweed cube 28 112 11 :
flowers:potted_viola cube 115 41 24 flowers:potted_viola cube 115 41 24 :
farming:wheat_6 cube 165 151 74 farming:wheat_6 cube 165 151 74 :
farming:cotton_4 cube 58 46 27 farming:cotton_4 cube 58 46 27 :
farming:cotton_7 cube 194 189 185 farming:cotton_7 cube 194 189 185 :
farming:soil_wet cube 73 40 19 farming:soil_wet cube 73 40 19 :
farming:cotton_3 cube 57 48 27 farming:cotton_3 cube 57 48 27 :
farming:wheat_1 cube 130 186 84 farming:wheat_1 cube 130 186 84 :
farming:wheat_7 cube 178 159 81 farming:wheat_7 cube 178 159 81 :
farming:cotton_5 cube 65 49 31 farming:cotton_5 cube 65 49 31 :
farming:soil cube 110 75 53 farming:soil cube 110 75 53 :
farming:wheat_8 cube 177 160 81 farming:wheat_8 cube 177 160 81 :
farming:wheat_2 cube 142 190 86 farming:wheat_2 cube 142 190 86 :
farming:wheat_4 cube 168 186 83 farming:wheat_4 cube 168 186 83 :
farming:wheat_5 cube 177 166 79 farming:wheat_5 cube 177 166 79 :
farming:wheat_3 cube 148 185 83 farming:wheat_3 cube 148 185 83 :
farming:cotton_1 cube 66 61 31 farming:cotton_1 cube 66 61 31 :
farming:cotton_2 cube 59 51 28 farming:cotton_2 cube 59 51 28 :
farming:cotton_6 cube 75 60 44 farming:cotton_6 cube 75 60 44 :
farming:cotton_8 cube 228 226 225 farming:cotton_8 cube 228 226 225 :