0

Fix cauldron water rendering

- Use cauldron 'level' property to determine water level
This commit is contained in:
Joseph Camp
2020-05-02 20:14:11 +00:00
parent c30e976cbd
commit 46d48bf1f8
2 changed files with 17 additions and 19 deletions

View File

@@ -4227,33 +4227,29 @@ def brewing_stand(self, blockid, data):
alpha_over(img,stand,(0,-2))
return img
# cauldron
@material(blockid=118, data=list(range(4)), transparent=True)
@material(blockid=118, data=list(range(4)), transparent=True, solid=True, nospawn=True)
def cauldron(self, blockid, data):
side = self.load_image_texture("assets/minecraft/textures/block/cauldron_side.png")
side = self.load_image_texture("assets/minecraft/textures/block/cauldron_side.png").copy()
top = self.load_image_texture("assets/minecraft/textures/block/cauldron_top.png")
bottom = self.load_image_texture("assets/minecraft/textures/block/cauldron_inner.png")
water = self.transform_image_top(self.load_water())
if data == 0: # empty
water = self.transform_image_top(self.load_image_texture("water.png"))
# Side texture isn't transparent between the feet, so adjust the texture
ImageDraw.Draw(side).rectangle((5, 14, 11, 16), outline=(0, 0, 0, 0), fill=(0, 0, 0, 0))
if data == 0: # Empty
img = self.build_full_block(top, side, side, side, side)
if data == 1: # 1/3 filled
img = self.build_full_block(None , side, side, None, None)
alpha_over(img, water, (0,8), water)
img2 = self.build_full_block(top , None, None, side, side)
alpha_over(img, img2, (0,0), img2)
if data == 2: # 2/3 filled
img = self.build_full_block(None , side, side, None, None)
alpha_over(img, water, (0,4), water)
img2 = self.build_full_block(top , None, None, side, side)
alpha_over(img, img2, (0,0), img2)
if data == 3: # 3/3 filled
img = self.build_full_block(None , side, side, None, None)
alpha_over(img, water, (0,0), water)
img2 = self.build_full_block(top , None, None, side, side)
alpha_over(img, img2, (0,0), img2)
else: # Part or fully filled
# Is filled in increments of a third, with data indicating how many thirds are filled
img = self.build_full_block(None, side, side, None, None)
alpha_over(img, water, (0, 12 - data * 4), water)
img2 = self.build_full_block(top, None, None, side, side)
alpha_over(img, img2, (0, 0), img2)
return img
# end portal and end_gateway
@material(blockid=[119,209], transparent=True, nodata=True)
def end_portal(self, blockid, data):