Fix cauldron water rendering
- Use cauldron 'level' property to determine water level
This commit is contained in:
@@ -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):
|
||||
|
||||
Reference in New Issue
Block a user