0

Merge 'jvaskonen/minecraft113' and 'jvaskonen/pillar' into master

This commit is contained in:
Aaron Griffith
2019-02-21 16:30:34 -05:00
2 changed files with 337 additions and 76 deletions

View File

@@ -1077,7 +1077,7 @@ block(blockid=15, top_image="assets/minecraft/textures/block/iron_ore.png")
# coal ore
block(blockid=16, top_image="assets/minecraft/textures/block/coal_ore.png")
@material(blockid=[17,162], data=range(12), solid=True)
@material(blockid=[17,162,11306,11307,11308,11309,11310,11311], data=range(12), solid=True)
def wood(self, blockid, data):
# extract orientation and wood type frorm data bits
wood_type = data & 3
@@ -1113,6 +1113,75 @@ def wood(self, blockid, data):
else:
top = self.load_image_texture("assets/minecraft/textures/block/acacia_log_top.png")
side = self.load_image_texture("assets/minecraft/textures/block/acacia_log.png")
if blockid == 11306: # stripped regular wood:
if wood_type == 0: # normal
top = self.load_image_texture("assets/minecraft/textures/block/stripped_oak_log_top.png")
side = self.load_image_texture("assets/minecraft/textures/block/stripped_oak_log.png")
if wood_type == 1: # spruce
top = self.load_image_texture("assets/minecraft/textures/block/stripped_spruce_log_top.png")
side = self.load_image_texture("assets/minecraft/textures/block/stripped_spruce_log.png")
if wood_type == 2: # birch
top = self.load_image_texture("assets/minecraft/textures/block/stripped_birch_log_top.png")
side = self.load_image_texture("assets/minecraft/textures/block/stripped_birch_log.png")
if wood_type == 3: # jungle wood
top = self.load_image_texture("assets/minecraft/textures/block/stripped_jungle_log_top.png")
side = self.load_image_texture("assets/minecraft/textures/block/stripped_jungle_log.png")
elif blockid == 11307: # stripped acacia/dark wood:
if wood_type == 0: # acacia
top = self.load_image_texture("assets/minecraft/textures/block/stripped_acacia_log_top.png")
side = self.load_image_texture("assets/minecraft/textures/block/stripped_acacia_log.png")
elif wood_type == 1: # dark oak
top = self.load_image_texture("assets/minecraft/textures/block/stripped_dark_oak_log_top.png")
side = self.load_image_texture("assets/minecraft/textures/block/stripped_dark_oak_log.png")
else:
top = self.load_image_texture("assets/minecraft/textures/block/stripped_acacia_log_top.png")
side = self.load_image_texture("assets/minecraft/textures/block/stripped_acacia_log.png")
if blockid == 11308: # regular bark:
if wood_type == 0: # normal
top = self.load_image_texture("assets/minecraft/textures/block/oak_log.png")
side = top
if wood_type == 1: # spruce
top = self.load_image_texture("assets/minecraft/textures/block/spruce_log.png")
side = top
if wood_type == 2: # birch
top = self.load_image_texture("assets/minecraft/textures/block/birch_log.png")
side = top
if wood_type == 3: # jungle wood
top = self.load_image_texture("assets/minecraft/textures/block/jungle_log.png")
side = top
elif blockid == 11309: # acacia/dark bark:
if wood_type == 0: # acacia
top = self.load_image_texture("assets/minecraft/textures/block/acacia_log.png")
side = top
elif wood_type == 1: # dark oak
top = self.load_image_texture("assets/minecraft/textures/block/dark_oak_log.png")
side = top
else:
top = self.load_image_texture("assets/minecraft/textures/block/acacia_log.png")
side = top
if blockid == 11310: # stripped regular wood:
if wood_type == 0: # normal
top = self.load_image_texture("assets/minecraft/textures/block/stripped_oak_log.png")
side = top
if wood_type == 1: # spruce
top = self.load_image_texture("assets/minecraft/textures/block/stripped_spruce_log.png")
side = top
if wood_type == 2: # birch
top = self.load_image_texture("assets/minecraft/textures/block/stripped_birch_log.png")
side = top
if wood_type == 3: # jungle wood
top = self.load_image_texture("assets/minecraft/textures/block/stripped_jungle_log.png")
side = top
elif blockid == 11311: # stripped acacia/dark wood:
if wood_type == 0: # acacia
top = self.load_image_texture("assets/minecraft/textures/block/stripped_acacia_log.png")
side = top
elif wood_type == 1: # dark oak
top = self.load_image_texture("assets/minecraft/textures/block/stripped_dark_oak_log.png")
side = top
else:
top = self.load_image_texture("assets/minecraft/textures/block/stripped_acacia_log.png")
side = top
# choose orientation and paste textures
if wood_orientation == 0:
@@ -2692,16 +2761,19 @@ def levers(self, blockid, data):
return img
# wooden and stone pressure plates, and weighted pressure plates
@material(blockid=[70, 72,147,148], data=[0,1], transparent=True)
@material(blockid=[70, 72,147,148,11301,11302,11303,11304,11305], data=[0,1], transparent=True)
def pressure_plate(self, blockid, data):
if blockid == 70: # stone
t = self.load_image_texture("assets/minecraft/textures/block/stone.png").copy()
elif blockid == 72: # wooden
t = self.load_image_texture("assets/minecraft/textures/block/oak_planks.png").copy()
elif blockid == 147: # light golden
t = self.load_image_texture("assets/minecraft/textures/block/gold_block.png").copy()
else: # blockid == 148: # heavy iron
t = self.load_image_texture("assets/minecraft/textures/block/iron_block.png").copy()
texture_name = {70:"assets/minecraft/textures/block/stone.png", # stone
72:"assets/minecraft/textures/block/oak_planks.png", # oak
11301:"assets/minecraft/textures/block/spruce_planks.png", # spruce
11302:"assets/minecraft/textures/block/birch_planks.png", # birch
11303:"assets/minecraft/textures/block/jungle_planks.png", # jungle
11304:"assets/minecraft/textures/block/acacia_planks.png", # acacia
11305:"assets/minecraft/textures/block/dark_oak_planks.png", # dark oak
147:"assets/minecraft/textures/block/gold_block.png", # light golden
148:"assets/minecraft/textures/block/iron_block.png", # heavy iron
}[blockid]
t = self.load_image_texture(texture_name).copy()
# cut out the outside border, pressure plates are smaller
# than a normal block
@@ -2730,7 +2802,7 @@ def pressure_plate(self, blockid, data):
block(blockid=[73, 74], top_image="assets/minecraft/textures/block/redstone_ore.png")
# stone a wood buttons
@material(blockid=(77,143), data=range(16), transparent=True)
@material(blockid=(77,143,11326,11327,11328,11329,11330), data=range(16), transparent=True)
def buttons(self, blockid, data):
# 0x8 is set if the button is pressed mask this info and render
@@ -2742,6 +2814,8 @@ def buttons(self, blockid, data):
elif data == 2: data = 4
elif data == 3: data = 2
elif data == 4: data = 1
elif data == 5: data = 6
elif data == 6: data = 5
elif self.rotation == 2:
if data == 1: data = 2
elif data == 2: data = 1
@@ -2752,11 +2826,18 @@ def buttons(self, blockid, data):
elif data == 2: data = 3
elif data == 3: data = 1
elif data == 4: data = 2
elif data == 5: data = 6
elif data == 6: data = 5
if blockid == 77:
t = self.load_image_texture("assets/minecraft/textures/block/stone.png").copy()
else:
t = self.load_image_texture("assets/minecraft/textures/block/oak_planks.png").copy()
texturepath = {77:"assets/minecraft/textures/block/stone.png",
143:"assets/minecraft/textures/block/oak_planks.png",
11326:"assets/minecraft/textures/block/spruce_planks.png",
11327:"assets/minecraft/textures/block/birch_planks.png",
11328:"assets/minecraft/textures/block/jungle_planks.png",
11329:"assets/minecraft/textures/block/acacia_planks.png",
11330:"assets/minecraft/textures/block/dark_oak_planks.png"
}[blockid]
t = self.load_image_texture(texturepath).copy()
# generate the texture for the button
ImageDraw.Draw(t).rectangle((0,0,15,5),outline=(0,0,0,0),fill=(0,0,0,0))
@@ -2766,38 +2847,54 @@ def buttons(self, blockid, data):
img = Image.new("RGBA", (24,24), self.bgcolor)
button = self.transform_image_side(t)
if data == 1: # facing SOUTH
# buttons can't be placed in transparent blocks, so this
# direction can't be seen
return None
if data < 5:
button = self.transform_image_side(t)
if data == 1: # facing SOUTH
# buttons can't be placed in transparent blocks, so this
# direction can't be seen
return None
elif data == 2: # facing NORTH
# paste it twice with different brightness to make a 3D effect
alpha_over(img, button, (12,-1), button)
alpha = button.split()[3]
button = ImageEnhance.Brightness(button).enhance(0.9)
button.putalpha(alpha)
alpha_over(img, button, (11,0), button)
elif data == 3: # facing WEST
# paste it twice with different brightness to make a 3D effect
button = button.transpose(Image.FLIP_LEFT_RIGHT)
alpha_over(img, button, (0,-1), button)
alpha = button.split()[3]
button = ImageEnhance.Brightness(button).enhance(0.9)
button.putalpha(alpha)
alpha_over(img, button, (1,0), button)
elif data == 4: # facing EAST
# buttons can't be placed in transparent blocks, so this
# direction can't be seen
return None
else:
if data == 5: # long axis east-west
button = self.transform_image_top(t)
else: # long axis north-south
button = self.transform_image_top(t.rotate(90))
elif data == 2: # facing NORTH
# paste it twice with different brightness to make a 3D effect
alpha_over(img, button, (12,-1), button)
alpha_over(img, button, (0,12), button)
alpha = button.split()[3]
button = ImageEnhance.Brightness(button).enhance(0.9)
button.putalpha(alpha)
alpha_over(img, button, (11,0), button)
elif data == 3: # facing WEST
# paste it twice with different brightness to make a 3D effect
button = button.transpose(Image.FLIP_LEFT_RIGHT)
alpha_over(img, button, (0,-1), button)
alpha = button.split()[3]
button = ImageEnhance.Brightness(button).enhance(0.9)
button.putalpha(alpha)
alpha_over(img, button, (1,0), button)
elif data == 4: # facing EAST
# buttons can't be placed in transparent blocks, so this
# direction can't be seen
return None
alpha_over(img, button, (0,11), button)
return img
@@ -2985,7 +3082,7 @@ def fence(self, blockid, data):
return img
# pumpkin
@material(blockid=[86, 91], data=range(4), solid=True)
@material(blockid=[86, 91,11300], data=range(4), solid=True)
def pumpkin(self, blockid, data): # pumpkins, jack-o-lantern
# rotation
if self.rotation == 1:
@@ -3006,7 +3103,10 @@ def pumpkin(self, blockid, data): # pumpkins, jack-o-lantern
# texture generation
top = self.load_image_texture("assets/minecraft/textures/block/pumpkin_top.png")
frontName = "assets/minecraft/textures/block/carved_pumpkin.png" if blockid == 86 else "assets/minecraft/textures/block/jack_o_lantern.png"
frontName = {86: "assets/minecraft/textures/block/pumpkin_side.png",
91: "assets/minecraft/textures/block/jack_o_lantern.png",
11300: "assets/minecraft/textures/block/carved_pumpkin.png"
}[blockid]
front = self.load_image_texture(frontName)
side = self.load_image_texture("assets/minecraft/textures/block/pumpkin_side.png")
@@ -3383,7 +3483,7 @@ def comparator(self, blockid, data):
# trapdoor
# the trapdoor is looks like a sprite when opened, that's not good
@material(blockid=[96,167], data=range(16), transparent=True, nospawn=True)
@material(blockid=[96,167,11332,11333,11334,11335,11336], data=range(16), transparent=True, nospawn=True)
def trapdoor(self, blockid, data):
# rotation
@@ -3405,11 +3505,19 @@ def trapdoor(self, blockid, data):
elif (data & 0b0011) == 3: data = data & 0b1100 | 0
# texture generation
if blockid == 96:
texture = self.load_image_texture("assets/minecraft/textures/block/oak_trapdoor.png")
else:
texture = self.load_image_texture("assets/minecraft/textures/block/iron_trapdoor.png")
texturepath = {96:"assets/minecraft/textures/block/oak_trapdoor.png",
167:"assets/minecraft/textures/block/iron_trapdoor.png",
11332:"assets/minecraft/textures/block/spruce_trapdoor.png",
11333:"assets/minecraft/textures/block/birch_trapdoor.png",
11334:"assets/minecraft/textures/block/jungle_trapdoor.png",
11335:"assets/minecraft/textures/block/acacia_trapdoor.png",
11336:"assets/minecraft/textures/block/dark_oak_trapdoor.png"
}[blockid]
if data & 0x4 == 0x4: # opened trapdoor
if data & 0x08 == 0x08: texture = self.load_image_texture(texturepath).transpose(Image.FLIP_TOP_BOTTOM)
else: texture = self.load_image_texture(texturepath)
if data & 0x3 == 0: # west
img = self.build_full_block(None, None, None, None, texture)
if data & 0x3 == 1: # east
@@ -3418,8 +3526,9 @@ def trapdoor(self, blockid, data):
img = self.build_full_block(None, None, texture, None, None)
if data & 0x3 == 3: # north
img = self.build_full_block(None, None, None, texture, None)
elif data & 0x4 == 0: # closed trapdoor
texture = self.load_image_texture(texturepath)
if data & 0x8 == 0x8: # is a top trapdoor
img = Image.new("RGBA", (24,24), self.bgcolor)
t = self.build_full_block((texture, 12), None, None, texture, texture)
@@ -4357,13 +4466,13 @@ def quartz_block(self, blockid, data):
return self.build_block(top, side)
elif data == 3: # north-south oriented
if self.rotation in (0,2):
return self.build_full_block(side, None, None, top, side.rotate(90))
return self.build_full_block(side.rotate(90), None, None, side.rotate(90), top)
return self.build_full_block(side.rotate(90), None, None, top, side.rotate(90))
return self.build_full_block(side, None, None, side.rotate(90), top)
elif data == 4: # east-west oriented
if self.rotation in (0,2):
return self.build_full_block(side.rotate(90), None, None, side.rotate(90), top)
return self.build_full_block(side, None, None, top, side.rotate(90))
return self.build_full_block(side, None, None, side.rotate(90), top)
return self.build_full_block(side.rotate(90), None, None, top, side.rotate(90))
# hopper
@material(blockid=154, data=range(4), transparent=True)
@@ -4455,6 +4564,28 @@ block(blockid=173, top_image="assets/minecraft/textures/block/coal_block.png")
# packed ice block
block(blockid=174, top_image="assets/minecraft/textures/block/packed_ice.png")
#blue ice
block(blockid=11312, top_image="assets/minecraft/textures/block/blue_ice.png")
#smooth stones
block(blockid=11313, top_image="assets/minecraft/textures/block/stone_slab_top.png") # stone
block(blockid=11314, top_image="assets/minecraft/textures/block/sandstone_top.png") # sandstone
block(blockid=11315, top_image="assets/minecraft/textures/block/red_sandstone_top.png") # red sandstone
#coral blocks
block(blockid=11316, top_image="assets/minecraft/textures/block/brain_coral_block.png")
block(blockid=11317, top_image="assets/minecraft/textures/block/bubble_coral_block.png")
block(blockid=11318, top_image="assets/minecraft/textures/block/fire_coral_block.png")
block(blockid=11319, top_image="assets/minecraft/textures/block/horn_coral_block.png")
block(blockid=11320, top_image="assets/minecraft/textures/block/tube_coral_block.png")
#dead coral blocks
block(blockid=11321, top_image="assets/minecraft/textures/block/dead_brain_coral_block.png")
block(blockid=11322, top_image="assets/minecraft/textures/block/dead_bubble_coral_block.png")
block(blockid=11323, top_image="assets/minecraft/textures/block/dead_fire_coral_block.png")
block(blockid=11324, top_image="assets/minecraft/textures/block/dead_horn_coral_block.png")
block(blockid=11325, top_image="assets/minecraft/textures/block/dead_tube_coral_block.png")
@material(blockid=175, data=range(16), transparent=True)
def flower(self, blockid, data):
double_plant_map = ["sunflower", "lilac", "tall_grass", "large_fern", "rose_bush", "peony", "peony", "peony"]
@@ -4728,3 +4859,8 @@ def glazed_terracotta(self, blockid, data):
elif glazed_terracotta_orientation == 3: # east / Player was facing west
return self.build_full_block(texture.rotate(180), None, None, texture.rotate(180), texture.rotate(180))
# dried kelp block
@material(blockid=11331, data=[0], solid=True)
def sandstone(self, blockid, data):
top = self.load_image_texture("assets/minecraft/textures/block/dried_kelp_top.png")
return self.build_block(top, self.load_image_texture("assets/minecraft/textures/block/dried_kelp_side.png"))

View File

@@ -305,6 +305,7 @@ class RegionSet(object):
'minecraft:coarse_dirt': (3, 1),
'minecraft:podzol': (3, 2),
'minecraft:cobblestone': (4, 0),
'minecraft:infested_cobblestone': (4, 0),
'minecraft:oak_planks': (5, 0),
'minecraft:spruce_planks': (5, 1),
'minecraft:birch_planks': (5, 2),
@@ -345,7 +346,7 @@ class RegionSet(object):
'minecraft:sandstone': (24, 0),
'minecraft:cut_sandstone': (24, 2),
'minecraft:chiseled_sandstone': (24, 3),
'minecraft:note_block': (25, 0),
'minecraft:white_bed': (26, 0),
'minecraft:orange_bed': (26, 0),
'minecraft:magenta_bed': (26, 0),
@@ -427,9 +428,9 @@ class RegionSet(object):
'minecraft:wheat': (59, 0),
'minecraft:farmland': (60, 0),
'minecraft:furnace': (61, 0),
'minecraft:standing_sign': (63, 0),
'minecraft:sign': (63, 0),
'minecraft:oak_door': (64, 0),
'minecraft:ladder': (65, 0), # todo: incorporate facing
'minecraft:ladder': (65, 0),
'minecraft:rail': (66, 0),
'minecraft:stone_stairs': (67, 0),
'minecraft:cobblestone_stairs': (67, 0),
@@ -459,22 +460,21 @@ class RegionSet(object):
'minecraft:cake': (92, 0),
'minecraft:repeater': (93,0),
'minecraft:oak_trapdoor': (96, 0),
'minecraft:spruce_trapdoor': (96, 0), #wrong
'minecraft:birch_trapdoor': (96, 0),
'minecraft:jungle_trapdoor': (96, 0),
'minecraft:acacia_trapdoor': (96, 0),
'minecraft:dark_oak_trapdoor': (96, 0),
'minecraft:infested_stone': (97, 0),
'minecraft:stone_bricks': (98, 0),
'minecraft:infested_stone_bricks': (98, 0),
'minecraft:mossy_stone_bricks': (98, 1),
'minecraft:infested_mossy_stone_bricks': (98, 1),
'minecraft:cracked_stone_bricks': (98, 2),
'minecraft:infested_cracked_stone_bricks': (98, 2),
'minecraft:chiseled_stone_bricks': (98, 3),
'minecraft:infested_chiseled_stone_bricks': (98, 3),
'minecraft:brown_mushroom_block': (99, 0),
'minecraft:red_mushroom_block': (100, 0),
'minecraft:mushroom_stem': (100,10),
'minecraft:iron_bars': (101, 0),
'minecraft:glass_pane': (102, 0),
'minecraft:melon': (103,0),
'minecraft:attached_pumpkin_stem': (104, 0),
'minecraft:attached_melon_stem': (104, 0),
'minecraft:pumpkin_stem': (105, 0),
@@ -518,6 +518,27 @@ class RegionSet(object):
'minecraft:mossy_cobblestone': (139, 16),
'minecraft:cobblestone_wall': (139, 0),
'minecraft:flower_pot': (140, 0),
'minecraft:potted_poppy': (140, 0), # Pots not rendering
'minecraft:potted_blue_orchid': (140, 0),
'minecraft:potted_allium': (140, 0),
'minecraft:potted_azure_bluet': (140, 0),
'minecraft:potted_red_tulip': (140, 0),
'minecraft:potted_orange_tulip': (140, 0),
'minecraft:potted_white_tulip': (140, 0),
'minecraft:potted_pink_tulip': (140, 0),
'minecraft:potted_oxeye_daisy': (140, 0),
'minecraft:potted_oak_sapling': (140, 0),
'minecraft:potted_spruce_sapling': (140, 0),
'minecraft:potted_birch_sapling': (140, 0),
'minecraft:potted_jungle_sapling': (140, 0),
'minecraft:potted_acacia_sapling': (140, 0),
'minecraft:potted_dark_oak_sapling': (140, 0),
'minecraft:potted_red_mushroom': (140, 0),
'minecraft:potted_brown_mushroom': (140, 0),
'minecraft:potted_fern': (140, 0),
'minecraft:potted_dead_bush': (140, 0),
'minecraft:potted_cactus': (140, 0),
'minecraft:potted_bamboo': (140, 0),
'minecraft:carrots': (141, 0),
'minecraft:potatoes': (142, 0),
'minecraft:oak_button': (143, 0),
@@ -527,7 +548,9 @@ class RegionSet(object):
'minecraft:player_wall_head': (144, 3), #not rendering
'minecraft:creeper_wall_head': (144, 4), #not rendering
'minecraft:dragon_wall_head': (144, 5), #not rendering
'minecraft:anvil': (145, 0), #not rendering
'minecraft:anvil': (145, 0),
'minecraft:chipped_anvil': (145, 4),
'minecraft:damaged_anvil': (145, 8),
'minecraft:trapped_chest': (146, 0),
'minecraft:light_weighted_pressure_plate': (147, 0),
'minecraft:heavy_weighted_pressure_plate': (148, 0),
@@ -536,8 +559,10 @@ class RegionSet(object):
'minecraft:redstone_block': (152, 0),
'minecraft:nether_quartz_ore': (153, 0),
'minecraft:hopper': (154, 0),
'minecraft:smooth_quartz': (155, 0),
'minecraft:quartz_block': (155, 0),
'minecraft:smooth_quartz': (155, 0), # Only bottom texture is different
'minecraft:quartz_pillar': (155, 2),
'minecraft:chiseled_quartz_block': (155, 1),
'minecraft:quartz_stairs': (156, 0),
'minecraft:activator_rail': (157, 0),
'minecraft:dropper': (158, 0),
@@ -549,7 +574,7 @@ class RegionSet(object):
'minecraft:lime_terracotta': (159, 5),
'minecraft:pink_terracotta': (159, 6),
'minecraft:gray_terracotta': (159, 7),
'minecraft:silver_terracotta': (159, 8),
'minecraft:light_gray_terracotta': (159, 8),
'minecraft:cyan_terracotta': (159, 9),
'minecraft:purple_terracotta': (159, 10),
'minecraft:blue_terracotta': (159, 11),
@@ -587,7 +612,6 @@ class RegionSet(object):
'minecraft:terracotta': (172, 0),
'minecraft:coal_block': (173, 0),
'minecraft:packed_ice': (174, 0),
'minecraft:blue_ice': (174, 0), # close enough
'minecraft:sunflower': (175, 0),
'minecraft:lilac': (175, 1),
'minecraft:tall_grass': (175, 2),
@@ -672,20 +696,16 @@ class RegionSet(object):
# The following blocks are underwater and are not yet rendered.
# To avoid spurious warnings, we'll treat them as water for now.
'minecraft:brain_coral': (8, 0),
'minecraft:brain_coral_block': (8, 0),
'minecraft:brain_coral_fan': (8, 0),
'minecraft:brain_coral_wall_fan': (8, 0),
'minecraft:bubble_column': (8, 0),
'minecraft:bubble_coral': (8, 0),
'minecraft:bubble_coral_block': (8, 0),
'minecraft:bubble_coral_fan': (8, 0),
'minecraft:bubble_coral_wall_fan': (8, 0),
'minecraft:fire_coral': (8, 0),
'minecraft:fire_coral_block': (8, 0),
'minecraft:fire_coral_fan': (8, 0),
'minecraft:fire_coral_wall_fan': (8, 0),
'minecraft:horn_coral': (8, 0),
'minecraft:horn_coral_block': (8, 0),
'minecraft:horn_coral_fan': (8, 0),
'minecraft:horn_coral_wall_fan': (8, 0),
'minecraft:kelp': (8, 0),
@@ -694,9 +714,59 @@ class RegionSet(object):
'minecraft:seagrass': (8, 0),
'minecraft:tall_seagrass': (8, 0),
'minecraft:tube_coral': (8, 0),
'minecraft:tube_coral_block': (8, 0),
'minecraft:tube_coral_fan': (8, 0),
'minecraft:tube_coral_wall_fan': (8, 0),
#New blocks
'minecraft:carved_pumpkin': (11300, 0),
'minecraft:spruce_pressure_plate': (11301, 0),
'minecraft:birch_pressure_plate': (11302, 0),
'minecraft:jungle_pressure_plate': (11303, 0),
'minecraft:acacia_pressure_plate': (11304, 0),
'minecraft:dark_oak_pressure_plate': (11305, 0),
'minecraft:stripped_oak_log': (11306, 0),
'minecraft:stripped_spruce_log': (11306, 1),
'minecraft:stripped_birch_log': (11306, 2),
'minecraft:stripped_jungle_log': (11306, 3),
'minecraft:stripped_acacia_log': (11307, 0),
'minecraft:stripped_dark_oak_log': (11307, 1),
'minecraft:oak_wood': (11308, 0),
'minecraft:spruce_wood': (11308, 1),
'minecraft:birch_wood': (11308, 2),
'minecraft:jungle_wood': (11308, 3),
'minecraft:acacia_wood': (11309, 0),
'minecraft:dark_oak_wood': (11309, 1),
'minecraft:stripped_oak_wood': (11310, 0),
'minecraft:stripped_spruce_wood': (11310, 1),
'minecraft:stripped_birch_wood': (11310, 2),
'minecraft:stripped_jungle_wood': (11310, 3),
'minecraft:stripped_acacia_wood': (11311, 0),
'minecraft:stripped_dark_oak_wood': (11311, 1),
'minecraft:blue_ice': (11312, 0),
'minecraft:smooth_stone': (11313, 0),
'minecraft:smooth_sandstone': (11314, 0),
'minecraft:smooth_red_sandstone': (11315, 0),
'minecraft:brain_coral_block': (11316, 0),
'minecraft:bubble_coral_block': (11317, 0),
'minecraft:fire_coral_block': (11318, 0),
'minecraft:horn_coral_block': (11319, 0),
'minecraft:tube_coral_block': (11320, 0),
'minecraft:dead_brain_coral_block': (11321, 0),
'minecraft:dead_bubble_coral_block': (11322, 0),
'minecraft:dead_fire_coral_block': (11323, 0),
'minecraft:dead_horn_coral_block': (11324, 0),
'minecraft:dead_tube_coral_block': (11325, 0),
'minecraft:spruce_button': (11326,0),
'minecraft:birch_button': (11327,0),
'minecraft:jungle_button': (11328,0),
'minecraft:acacia_button': (11329,0),
'minecraft:dark_oak_button': (11330,0),
'minecraft:dried_kelp_block': (11331,0),
'minecraft:spruce_trapdoor': (11332, 0),
'minecraft:birch_trapdoor': (11333, 0),
'minecraft:jungle_trapdoor': (11334, 0),
'minecraft:acacia_trapdoor': (11335, 0),
'minecraft:dark_oak_trapdoor': (11336, 0),
}
colors = [ 'white', 'orange', 'magenta', 'light_blue',
@@ -761,31 +831,81 @@ class RegionSet(object):
elif key in ['minecraft:ladder', 'minecraft:chest', 'minecraft:ender_chest', 'minecraft:trapped_chest', 'minecraft:furnace']:
facing = palette_entry['Properties']['facing']
data = {'north': 2, 'south': 3, 'west': 4, 'east': 5}[facing]
elif key in ['minecraft:stone_button', 'minecraft:oak_button']:
elif key.endswith('_button'):
facing = palette_entry['Properties']['facing']
data = {'east': 1, 'west': 2, 'south': 3, 'north': 4}[facing]
face = palette_entry['Properties']['face']
if face == 'ceiling':
block = 0
data = 0
elif face == 'wall':
data = {'east': 1, 'west': 2, 'south': 3, 'north': 4}[facing]
elif face == 'floor':
data = {'east': 6, 'west': 6, 'south': 5, 'north': 5}[facing]
elif key == 'minecraft:nether_wart':
data = int(palette_entry['Properties']['age'])
elif key.endswith('shulker_box') or key.endswith('piston') or key in ['minecraft:observer', 'minecraft:dropper', 'minecraft:dispenser']:
facing = palette_entry['Properties']['facing']
data = {'down': 0, 'up': 1, 'north': 2, 'south': 3, 'west': 4, 'east': 5}[facing]
elif key.endswith('_log'):
elif key.endswith('_log') or key.endswith('_wood') or key == 'minecraft:bone_block':
axis = palette_entry['Properties']['axis']
if axis == 'x':
data |= 4
elif axis == 'z':
data |= 8
elif key in ['minecraft:redstone_torch','minecraft:redstone_wall_torch', 'minecraft:wall_torch']:
if palette_entry['Properties']['lit'] == 'true':
elif key == 'minecraft:quartz_pillar':
axis = palette_entry['Properties']['axis']
if axis == 'x':
data = 3
if axis == 'z':
data = 4
elif key in ['minecraft:redstone_torch','minecraft:redstone_wall_torch','minecraft:wall_torch']:
if key.startswith('minecraft:redstone_') and palette_entry['Properties']['lit'] == 'true':
block += 1
facing = palette_entry['Properties'].get('facing', 'up')
data = {'east': 1, 'west': 2, 'south': 3, 'north': 4, 'up': 5}[facing]
if key.endswith('wall_torch'):
facing = palette_entry['Properties'].get('facing')
data = {'east': 1, 'west': 2, 'south': 3, 'north': 4}[facing]
else:
data = 5
elif key in ['minecraft:brown_mushroom_block','minecraft:red_mushroom_block']:
p = palette_entry['Properties']
if p['up'] == 'true': data = 5
else: data = 0
if p['north'] == 'true':
if p['south'] == 'true': data = 14
elif p['east'] == 'true': data = 3
elif p['west'] == 'true': data = 1
else: data = 2
elif p['east'] == 'true':
if p['west'] == 'true': data = 14
elif p['south'] == 'true': data = 9
else: data = 6
elif p['south'] == 'true':
if p['west'] == 'true': data = 7
else: data = 8
elif p['west'] == 'true': data = 4
elif key in ['minecraft:carved_pumpkin', 'minecraft:jack_o_lantern'] or key.endswith('glazed_terracotta'):
facing = palette_entry['Properties']['facing']
data = {'south': 0, 'west': 1, 'north': 2, 'east': 3}[facing]
elif key == 'minecraft:vine':
p = palette_entry['Properties']
if p['south'] == 'true': data |= 1
if p['west'] == 'true': data |= 2
if p['north'] == 'true': data |= 4
if p['east'] == 'true': data |= 8
elif key.endswith('anvil'):
facing = palette_entry['Properties']['facing']
if facing == 'west': data += 1
if facing == 'north': data += 2
if facing == 'east': data += 3
elif key == 'minecraft:sign':
p = palette_entry['Properties']
data = p['rotation']
elif key == 'minecraft:wall_sign':
facing = palette_entry['Properties']['facing']
if facing == 'north': data = 2
elif facing == 'west': data = 4
elif facing == 'south': data = 3
elif facing == 'east': data = 5
elif key.endswith('_fence'):
p = palette_entry['Properties']
if p['north'] == 'true': data |= 1
@@ -808,6 +928,11 @@ class RegionSet(object):
'south': 0x03,
'east': 0x02,
}[p['facing']]
elif key.endswith('_trapdoor'):
p = palette_entry['Properties']
data = {'south': 1, 'north': 0, 'east': 3, 'west': 2}[p['facing']]
if p['open'] == 'true': data |= 0x04
if p['half'] == 'top': data |= 0x08
return (block, data)