From 3c3e958eae96196d5d26aa45ab48afc318d9c082 Mon Sep 17 00:00:00 2001 From: InrcedibleHolg Date: Fri, 1 Nov 2019 10:50:20 +0100 Subject: [PATCH 1/2] add bamboo --- overviewer_core/src/mc_id.h | 3 +- overviewer_core/textures.py | 59 +++++++++++++++++++++++++++++++++++++ overviewer_core/world.py | 1 + 3 files changed, 62 insertions(+), 1 deletion(-) diff --git a/overviewer_core/src/mc_id.h b/overviewer_core/src/mc_id.h index 2ded723..f472184 100644 --- a/overviewer_core/src/mc_id.h +++ b/overviewer_core/src/mc_id.h @@ -324,6 +324,7 @@ enum mc_block_id { block_dark_oak_wall_sign = 11412, block_bamboo_sapling = 11413, block_scaffolding = 11414, + block_bamboo = 11416, // adding a gap in the numbering of walls to keep them all // in one numbering block starting at 21000 block_andesite_wall = 21000, @@ -339,7 +340,7 @@ enum mc_block_id { block_red_nether_brick_wall = 21010, block_red_sandstone_wall = 21011, block_sandstone_wall = 21012, - block_stone_brick_wall = 21013 + block_stone_brick_wall = 21013 }; typedef uint16_t mc_block_t; diff --git a/overviewer_core/textures.py b/overviewer_core/textures.py index 7f27b3b..467576e 100644 --- a/overviewer_core/textures.py +++ b/overviewer_core/textures.py @@ -1935,6 +1935,65 @@ def lantern(self, blockid, data): alpha_over(img, top, (0, 8-hangoff), top) return img +# bamboo +@material(blockid=11416, data=[0], transparent=True) +def bamboo(self, blockid, data): + # get the multipart texture of the lantern + inputtexture = self.load_image_texture("assets/minecraft/textures/block/bamboo_stalk.png") + + # # now create a textures, using the parts defined in bamboo1_age0.json + # { "from": [ 7, 0, 7 ], + # "to": [ 9, 16, 9 ], + # "faces": { + # "down": { "uv": [ 13, 4, 15, 6 ], "texture": "#all", "cullface": "down" }, + # "up": { "uv": [ 13, 0, 15, 2], "texture": "#all", "cullface": "up" }, + # "north": { "uv": [ 0, 0, 2, 16 ], "texture": "#all" }, + # "south": { "uv": [ 0, 0, 2, 16 ], "texture": "#all" }, + # "west": { "uv": [ 0, 0, 2, 16 ], "texture": "#all" }, + # "east": { "uv": [ 0, 0, 2, 16 ], "texture": "#all" } + # } + # } + + side_crop = inputtexture.crop((0, 0, 3, 16)) + side_slice = side_crop.copy() + side_texture = Image.new("RGBA", (16, 16), self.bgcolor) + side_texture.paste(side_slice,(0, 0)) + + # JSON data for top + # "up": { "uv": [ 13, 0, 15, 2], "texture": "#all", "cullface": "up" }, + top_crop = inputtexture.crop((13, 0, 16, 3)) + top_slice = top_crop.copy() + top_texture = Image.new("RGBA", (16, 16), self.bgcolor) + top_texture.paste(top_slice,(5, 5)) + + # mimic parts of build_full_block, to get an object smaller than a block + # build_full_block(self, top, side1, side2, side3, side4, bottom=None): + # a non transparent block uses top, side 3 and side 4. + img = Image.new("RGBA", (24, 24), self.bgcolor) + # prepare the side textures + # side3 + side3 = self.transform_image_side(side_texture) + # Darken this side + sidealpha = side3.split()[3] + side3 = ImageEnhance.Brightness(side3).enhance(0.9) + side3.putalpha(sidealpha) + # place the transformed texture + xoff = 3 + yoff = 0 + alpha_over(img, side3, (4+xoff, yoff), side3) + # side4 + side4 = self.transform_image_side(side_texture) + side4 = side4.transpose(Image.FLIP_LEFT_RIGHT) + # Darken this side + sidealpha = side4.split()[3] + side4 = ImageEnhance.Brightness(side4).enhance(0.8) + side4.putalpha(sidealpha) + alpha_over(img, side4, (-4+xoff, yoff), side4) + # top + top = self.transform_image_top(top_texture) + alpha_over(img, top, (-4+xoff, -5), top) + return img + # fire @material(blockid=51, data=list(range(16)), transparent=True) def fire(self, blockid, data): diff --git a/overviewer_core/world.py b/overviewer_core/world.py index 0558d91..8fc0ff9 100644 --- a/overviewer_core/world.py +++ b/overviewer_core/world.py @@ -832,6 +832,7 @@ class RegionSet(object): 'minecraft:bamboo_sapling': (11413, 0), 'minecraft:scaffolding': (11414, 0), "minecraft:smooth_red_sandstone_stairs": (11415, 0), + 'minecraft:bamboo': (11416, 0), # adding a gap in the numbering of walls to keep them all # in one numbering block starting at 21000 'minecraft:andesite_wall': (21000, 0), From 9e27e6adc9c0a469100773a4b0db0a67e1c50b8e Mon Sep 17 00:00:00 2001 From: Ian Salmons Date: Fri, 1 Nov 2019 11:45:00 +0100 Subject: [PATCH 2/2] add composter --- overviewer_core/src/mc_id.h | 1 + overviewer_core/src/overviewer.h | 2 +- overviewer_core/textures.py | 27 ++++++++++++++++++++++++++- overviewer_core/world.py | 3 +++ 4 files changed, 31 insertions(+), 2 deletions(-) diff --git a/overviewer_core/src/mc_id.h b/overviewer_core/src/mc_id.h index f472184..2787112 100644 --- a/overviewer_core/src/mc_id.h +++ b/overviewer_core/src/mc_id.h @@ -325,6 +325,7 @@ enum mc_block_id { block_bamboo_sapling = 11413, block_scaffolding = 11414, block_bamboo = 11416, + block_composter = 11417, // adding a gap in the numbering of walls to keep them all // in one numbering block starting at 21000 block_andesite_wall = 21000, diff --git a/overviewer_core/src/overviewer.h b/overviewer_core/src/overviewer.h index 49955ad..7e450dc 100644 --- a/overviewer_core/src/overviewer.h +++ b/overviewer_core/src/overviewer.h @@ -31,7 +31,7 @@ // increment this value if you've made a change to the c extesion // and want to force users to rebuild -#define OVERVIEWER_EXTENSION_VERSION 76 +#define OVERVIEWER_EXTENSION_VERSION 77 #include #include diff --git a/overviewer_core/textures.py b/overviewer_core/textures.py index 467576e..39e1ce8 100644 --- a/overviewer_core/textures.py +++ b/overviewer_core/textures.py @@ -1936,7 +1936,7 @@ def lantern(self, blockid, data): return img # bamboo -@material(blockid=11416, data=[0], transparent=True) +@material(blockid=11416, transparent=True) def bamboo(self, blockid, data): # get the multipart texture of the lantern inputtexture = self.load_image_texture("assets/minecraft/textures/block/bamboo_stalk.png") @@ -1994,6 +1994,31 @@ def bamboo(self, blockid, data): alpha_over(img, top, (-4+xoff, -5), top) return img +# composter +@material(blockid=11417, data=list(range(9)), transparent=True) +def composter(self, blockid, data): + side = self.load_image_texture("assets/minecraft/textures/block/composter_side.png") + top = self.load_image_texture("assets/minecraft/textures/block/composter_top.png") + # bottom = self.load_image_texture("assets/minecraft/textures/block/composter_bottom.png") + + if data == 0: # empty + return self.build_full_block(top, side, side, side, side) + + if data == 8: + compost = self.transform_image_top( + self.load_image_texture("assets/minecraft/textures/block/composter_ready.png")) + else: + compost = self.transform_image_top( + self.load_image_texture("assets/minecraft/textures/block/composter_compost.png")) + + nudge = {1: (0, 9), 2: (0, 8), 3: (0, 7), 4: (0, 6), 5: (0, 4), 6: (0, 2), 7: (0, 0), 8: (0, 0)} + + img = self.build_full_block(None, side, side, None, None) + alpha_over(img, compost, nudge[data], compost) + img2 = self.build_full_block(top, None, None, side, side) + alpha_over(img, img2, (0, 0), img2) + return img + # fire @material(blockid=51, data=list(range(16)), transparent=True) def fire(self, blockid, data): diff --git a/overviewer_core/world.py b/overviewer_core/world.py index 8fc0ff9..4db4151 100644 --- a/overviewer_core/world.py +++ b/overviewer_core/world.py @@ -833,6 +833,7 @@ class RegionSet(object): 'minecraft:scaffolding': (11414, 0), "minecraft:smooth_red_sandstone_stairs": (11415, 0), 'minecraft:bamboo': (11416, 0), + "minecraft:composter": (11417, 0), # adding a gap in the numbering of walls to keep them all # in one numbering block starting at 21000 'minecraft:andesite_wall': (21000, 0), @@ -1128,6 +1129,8 @@ class RegionSet(object): data = 1 else: data = 0 + elif key == "minecraft:composter": + data = palette_entry['Properties']['level'] return (block, data) def get_type(self):