0

textures.py: Fix beds for 1.12

Bed textures are now one unified texture, so some cropping and
fiddling needs to be done.

Bed colours not yet implemented.
This commit is contained in:
Nicolas F
2017-06-09 18:06:29 +02:00
parent 461f8647e0
commit 711488e07d

View File

@@ -1247,47 +1247,74 @@ def bed(self, blockid, data):
elif (data & 0b0011) == 2: data = data & 0b1100 | 1
elif (data & 0b0011) == 3: data = data & 0b1100 | 2
bed_texture = self.load_image("assets/minecraft/textures/entity/bed/red.png") # FIXME: do tile entity colours
increment = 8
left_face = None
right_face = None
top_face = None
if data & 0x8 == 0x8: # head of the bed
top = self.load_image_texture("assets/minecraft/textures/blocks/bed_head_top.png")
if data & 0x00 == 0x00: # head pointing to West
top = top.copy().rotate(270)
left_face = self.load_image_texture("assets/minecraft/textures/blocks/bed_head_side.png")
right_face = self.load_image_texture("assets/minecraft/textures/blocks/bed_head_end.png")
if data & 0x01 == 0x01: # ... North
top = top.rotate(270)
left_face = self.load_image_texture("assets/minecraft/textures/blocks/bed_head_end.png")
right_face = self.load_image_texture("assets/minecraft/textures/blocks/bed_head_side.png")
if data & 0x02 == 0x02: # East
top = top.rotate(180)
left_face = self.load_image_texture("assets/minecraft/textures/blocks/bed_head_side.png").transpose(Image.FLIP_LEFT_RIGHT)
right_face = None
if data & 0x03 == 0x03: # South
right_face = None
right_face = self.load_image_texture("assets/minecraft/textures/blocks/bed_head_side.png").transpose(Image.FLIP_LEFT_RIGHT)
top = bed_texture.copy().crop((6,6,22,22))
# Composing the side
side = Image.new("RGBA", (16,16))
side_part1 = bed_texture.copy().crop((0,6,6,22)).rotate(90, expand=True)
# foot of the bed
side_part2 = bed_texture.copy().crop((53,3,56,6))
side_part2_f = side_part2.transpose(Image.FLIP_LEFT_RIGHT)
alpha_over(side, side_part1, (0,7), side_part1)
alpha_over(side, side_part2, (0,13), side_part2)
end = Image.new("RGBA", (16,16))
end_part = bed_texture.copy().crop((6,0,22,6)).rotate(180)
alpha_over(end, end_part, (0,7), end_part)
alpha_over(end, side_part2, (0,13), side_part2)
alpha_over(end, side_part2_f, (13,13), side_part2_f)
if data & 0x00 == 0x00: # South
top_face = top.rotate(180)
left_face = side.transpose(Image.FLIP_LEFT_RIGHT)
right_face = end
if data & 0x01 == 0x01: # West
top_face = top.rotate(90)
left_face = end
right_face = side.transpose(Image.FLIP_LEFT_RIGHT)
if data & 0x02 == 0x02: # North
top_face = top
left_face = side
if data & 0x03 == 0x03: # East
top_face = top.rotate(270)
right_face = side
else: # foot of the bed
top = self.load_image_texture("assets/minecraft/textures/blocks/bed_feet_top.png")
if data & 0x00 == 0x00: # head pointing to West
top = top.rotate(270)
left_face = self.load_image_texture("assets/minecraft/textures/blocks/bed_feet_side.png")
right_face = None
if data & 0x01 == 0x01: # ... North
top = top.rotate(270)
left_face = None
right_face = self.load_image_texture("assets/minecraft/textures/blocks/bed_feet_side.png")
if data & 0x02 == 0x02: # East
top = top.rotate(180)
left_face = self.load_image_texture("assets/minecraft/textures/blocks/bed_feet_side.png").transpose(Image.FLIP_LEFT_RIGHT)
right_face = self.load_image_texture("assets/minecraft/textures/blocks/bed_feet_end.png").transpose(Image.FLIP_LEFT_RIGHT)
if data & 0x03 == 0x03: # South
left_face = self.load_image_texture("assets/minecraft/textures/blocks/bed_feet_end.png")
right_face = self.load_image_texture("assets/minecraft/textures/blocks/bed_feet_side.png").transpose(Image.FLIP_LEFT_RIGHT)
top = (top, increment)
return self.build_full_block(top, None, None, left_face, right_face)
top = bed_texture.copy().crop((6,28,22,44))
side = Image.new("RGBA", (16,16))
side_part1 = bed_texture.copy().crop((0,28,6,44)).rotate(90, expand=True)
side_part2 = bed_texture.copy().crop((53,3,56,6))
side_part2_f = side_part2.transpose(Image.FLIP_LEFT_RIGHT)
alpha_over(side, side_part1, (0,7), side_part1)
alpha_over(side, side_part2, (13,13), side_part2)
end = Image.new("RGBA", (16,16))
end_part = bed_texture.copy().crop((22,22,38,28)).rotate(180)
alpha_over(end, end_part, (0,7), end_part)
alpha_over(end, side_part2, (0,13), side_part2)
alpha_over(end, side_part2_f, (13,13), side_part2_f)
if data & 0x00 == 0x00: # South
top_face = top.rotate(180)
left_face = side.transpose(Image.FLIP_LEFT_RIGHT)
if data & 0x01 == 0x01: # West
top_face = top.rotate(90)
right_face = side.transpose(Image.FLIP_LEFT_RIGHT)
if data & 0x02 == 0x02: # North
top_face = top
left_face = side
right_face = end
if data & 0x03 == 0x03: # East
top_face = top.rotate(270)
left_face = end
right_face = side
top_face = (top_face, increment)
return self.build_full_block(top_face, None, None, left_face, right_face)
# powered, detector, activator and normal rails
@material(blockid=[27, 28, 66, 157], data=range(14), transparent=True)