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))
|
alpha_over(img,stand,(0,-2))
|
||||||
return img
|
return img
|
||||||
|
|
||||||
|
|
||||||
# cauldron
|
# 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):
|
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")
|
top = self.load_image_texture("assets/minecraft/textures/block/cauldron_top.png")
|
||||||
bottom = self.load_image_texture("assets/minecraft/textures/block/cauldron_inner.png")
|
bottom = self.load_image_texture("assets/minecraft/textures/block/cauldron_inner.png")
|
||||||
water = self.transform_image_top(self.load_water())
|
water = self.transform_image_top(self.load_image_texture("water.png"))
|
||||||
if data == 0: # empty
|
# 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)
|
img = self.build_full_block(top, side, side, side, side)
|
||||||
if data == 1: # 1/3 filled
|
else: # Part or fully filled
|
||||||
img = self.build_full_block(None , side, side, None, None)
|
# Is filled in increments of a third, with data indicating how many thirds are filled
|
||||||
alpha_over(img, water, (0,8), water)
|
img = self.build_full_block(None, side, side, None, None)
|
||||||
img2 = self.build_full_block(top , None, None, side, side)
|
alpha_over(img, water, (0, 12 - data * 4), water)
|
||||||
alpha_over(img, img2, (0,0), img2)
|
img2 = self.build_full_block(top, None, None, side, side)
|
||||||
if data == 2: # 2/3 filled
|
alpha_over(img, img2, (0, 0), img2)
|
||||||
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)
|
|
||||||
|
|
||||||
return img
|
return img
|
||||||
|
|
||||||
|
|
||||||
# end portal and end_gateway
|
# end portal and end_gateway
|
||||||
@material(blockid=[119,209], transparent=True, nodata=True)
|
@material(blockid=[119,209], transparent=True, nodata=True)
|
||||||
def end_portal(self, blockid, data):
|
def end_portal(self, blockid, data):
|
||||||
|
|||||||
@@ -1155,6 +1155,8 @@ class RegionSet(object):
|
|||||||
data |= {'south': 0, 'west': 1, 'north': 2, 'east': 3}[facing]
|
data |= {'south': 0, 'west': 1, 'north': 2, 'east': 3}[facing]
|
||||||
if palette_entry['Properties'].get('eye', 'false') == 'true':
|
if palette_entry['Properties'].get('eye', 'false') == 'true':
|
||||||
data |= 4
|
data |= 4
|
||||||
|
elif key == 'minecraft:cauldron':
|
||||||
|
data = int(palette_entry['Properties'].get('level', '0'))
|
||||||
|
|
||||||
return (block, data)
|
return (block, data)
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user