From cde059e9a677cd3c5eebe5b42bb4866884accfee Mon Sep 17 00:00:00 2001 From: Joseph Camp Date: Mon, 4 May 2020 20:13:50 +0000 Subject: [PATCH] Amend stonecutter rendering - Account for facing when generating textures - Render block top at the appropriate height & add saw blade --- overviewer_core/textures.py | 27 ++++++++++++++++++++++----- overviewer_core/world.py | 3 ++- 2 files changed, 24 insertions(+), 6 deletions(-) diff --git a/overviewer_core/textures.py b/overviewer_core/textures.py index ad3a8c1..4974904 100644 --- a/overviewer_core/textures.py +++ b/overviewer_core/textures.py @@ -2541,12 +2541,29 @@ def loom(self, blockid, data): img = self.build_full_block(top, None, None, side3, side4, None) return img -@material(blockid=11368, solid=True, nodata=True) -def stonecutter(self, blockid, data): - top = self.load_image_texture("assets/minecraft/textures/block/stonecutter_top.png") - side3 = side4 = self.load_image_texture("assets/minecraft/textures/block/stonecutter_side.png") - img = self.build_full_block(top, None, None, side3, side4, None) +@material(blockid=11368, data=list(range(4)), transparent=True, solid=True, nospawn=True) +def stonecutter(self, blockid, data): + # Do rotation + data = (self.rotation + data) % 4 + + top_t = self.load_image_texture("assets/minecraft/textures/block/stonecutter_top.png").copy() + side_t = self.load_image_texture("assets/minecraft/textures/block/stonecutter_side.png") + # Stonecutter saw texture contains multiple tiles, since it's + # 16px wide rely on load_image_texture() to crop appropriately + blade_t = self.load_image_texture("assets/minecraft/textures/block/stonecutter_saw.png").copy() + + top_t = top_t.rotate([180, 90, 0, 270][data]) + img = self.build_full_block((top_t, 7), None, None, side_t, side_t, None) + + # Add saw blade + if data in [0, 2]: + blade_t = blade_t.transpose(Image.FLIP_LEFT_RIGHT) + blade_t = self.transform_image_side(blade_t) + if data in [0, 2]: + blade_t = blade_t.transpose(Image.FLIP_LEFT_RIGHT) + alpha_over(img, blade_t, (6, -4), blade_t) + return img diff --git a/overviewer_core/world.py b/overviewer_core/world.py index 7e607fe..24f6a25 100644 --- a/overviewer_core/world.py +++ b/overviewer_core/world.py @@ -1035,7 +1035,8 @@ class RegionSet(object): data = {'east': 1, 'west': 2, 'south': 3, 'north': 4}[facing] else: data = 5 - elif (key in ['minecraft:carved_pumpkin', 'minecraft:jack_o_lantern'] or + elif (key in ['minecraft:carved_pumpkin', 'minecraft:jack_o_lantern', + 'minecraft:stonecutter'] or key.endswith('glazed_terracotta')): facing = palette_entry['Properties']['facing'] data = {'south': 0, 'west': 1, 'north': 2, 'east': 3}[facing]