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):
|
||||
|
||||
@@ -1155,6 +1155,8 @@ class RegionSet(object):
|
||||
data |= {'south': 0, 'west': 1, 'north': 2, 'east': 3}[facing]
|
||||
if palette_entry['Properties'].get('eye', 'false') == 'true':
|
||||
data |= 4
|
||||
elif key == 'minecraft:cauldron':
|
||||
data = int(palette_entry['Properties'].get('level', '0'))
|
||||
|
||||
return (block, data)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user