From 6d5ccdfd546d1eb0a6e3e9ef3f95664d938b2c5f Mon Sep 17 00:00:00 2001 From: Joseph Camp Date: Sat, 2 May 2020 22:30:33 +0000 Subject: [PATCH] Amend farmland rendering - Use 'moisture' property to determine when to render farmland as moist --- overviewer_core/textures.py | 13 +++++++------ overviewer_core/world.py | 3 +++ 2 files changed, 10 insertions(+), 6 deletions(-) diff --git a/overviewer_core/textures.py b/overviewer_core/textures.py index 8858c89..3ac5dbc 100644 --- a/overviewer_core/textures.py +++ b/overviewer_core/textures.py @@ -2574,24 +2574,25 @@ def crops8(self, blockid, data): alpha_over(img, crop3, (6,3), crop3) return img + # farmland and grass path (15/16 blocks) -@material(blockid=[60,208], data=list(range(9)), solid=True) +@material(blockid=[60, 208], data=list(range(2)), solid=True, transparent=True, nospawn=True) def farmland(self, blockid, data): if blockid == 60: - side = self.load_image_texture("assets/minecraft/textures/block/dirt.png") - top = self.load_image_texture("assets/minecraft/textures/block/farmland_moist.png") + side = self.load_image_texture("assets/minecraft/textures/block/dirt.png").copy() if data == 0: top = self.load_image_texture("assets/minecraft/textures/block/farmland.png") + else: + top = self.load_image_texture("assets/minecraft/textures/block/farmland_moist.png") # dirt.png is 16 pixels tall, so we need to crop it before building full block side = side.crop((0, 1, 16, 16)) - return self.build_full_block((top, 1), side, side, side, side) - else: top = self.load_image_texture("assets/minecraft/textures/block/grass_path_top.png") side = self.load_image_texture("assets/minecraft/textures/block/grass_path_side.png") # side already has 1 transparent pixel at the top, so it doesn't need to be modified # just shift the top image down 1 pixel - return self.build_full_block((top, 1), side, side, side, side) + + return self.build_full_block((top, 1), side, side, side, side) # signposts diff --git a/overviewer_core/world.py b/overviewer_core/world.py index 5b2eaad..a008688 100644 --- a/overviewer_core/world.py +++ b/overviewer_core/world.py @@ -1165,6 +1165,9 @@ class RegionSet(object): data = {'save': 0, 'load': 1, 'corner': 2, 'data': 3}.get(block_mode, 0) elif key == 'minecraft:cake': data = int(palette_entry['Properties'].get('bites', '0')) + elif key == 'minecraft:farmland': + # A moisture level of 7 has a different texture from other farmland + data = 1 if palette_entry['Properties'].get('moisture', '0') == '7' else 0 return (block, data)