Skip to content

Commit 9f9cd1e

Browse files
Merge PR #1963 from buscher
Added more 1.17 blocks
2 parents a5b36f5 + 2c0e968 commit 9f9cd1e

File tree

3 files changed

+355
-12
lines changed

3 files changed

+355
-12
lines changed

overviewer_core/src/mc_id.h

+11
Original file line numberDiff line numberDiff line change
@@ -394,6 +394,17 @@ enum mc_block_id {
394394
block_tuff = 1109,
395395
block_pointed_dripstone = 1110,
396396

397+
block_powder_snow = 1111,
398+
block_hanging_roots = 1112,
399+
block_small_amethyst_bud = 1113,
400+
block_medium_amethyst_bud = 1114,
401+
block_large_amethyst_bud = 1115,
402+
block_cave_vines_plant = 1116,
403+
block_cave_vines = 1117,
404+
block_lightning_rod = 1118,
405+
block_glow_lichen = 1119,
406+
block_spore_blossom = 1120,
407+
397408
// adding a gap in the numbering of walls to keep them all
398409
// in one numbering block starting at 1792
399410
// all blocks between 1792 and 2047 are considered walls

overviewer_core/textures.py

+303-9
Original file line numberDiff line numberDiff line change
@@ -4654,24 +4654,29 @@ def brewing_stand(self, blockid, data):
46544654

46554655

46564656
# cauldron
4657-
@material(blockid=118, data=list(range(4)), transparent=True, solid=True, nospawn=True)
4657+
@material(blockid=118, data=list(range(16)), transparent=True, solid=True, nospawn=True)
46584658
def cauldron(self, blockid, data):
46594659
side = self.load_image_texture("assets/minecraft/textures/block/cauldron_side.png").copy()
46604660
top = self.load_image_texture("assets/minecraft/textures/block/cauldron_top.png")
4661-
bottom = self.load_image_texture("assets/minecraft/textures/block/cauldron_inner.png")
4662-
water = self.transform_image_top(self.load_image_texture("water.png"))
4661+
filltype = (data & (3 << 2)) >> 2
4662+
if filltype == 3:
4663+
water = self.transform_image_top(self.load_image_texture("assets/minecraft/textures/block/powder_snow.png"))
4664+
elif filltype == 2:
4665+
water = self.transform_image_top(self.load_image_texture("assets/minecraft/textures/block/lava_still.png"))
4666+
else: # filltype == 1 or 0
4667+
water = self.transform_image_top(self.load_image_texture("water.png"))
46634668
# Side texture isn't transparent between the feet, so adjust the texture
46644669
ImageDraw.Draw(side).rectangle((5, 14, 11, 16), outline=(0, 0, 0, 0), fill=(0, 0, 0, 0))
46654670

4666-
if data == 0: # Empty
4671+
level = (data & 3)
4672+
if level == 0: # Empty
46674673
img = self.build_full_block(top, side, side, side, side)
46684674
else: # Part or fully filled
4669-
# Is filled in increments of a third, with data indicating how many thirds are filled
4675+
# Is filled in increments of a third, with level indicating how many thirds are filled
46704676
img = self.build_full_block(None, side, side, None, None)
4671-
alpha_over(img, water, (0, 12 - data * 4), water)
4677+
alpha_over(img, water, (0, 12 - level * 4), water)
46724678
img2 = self.build_full_block(top, None, None, side, side)
46734679
alpha_over(img, img2, (0, 0), img2)
4674-
46754680
return img
46764681

46774682

@@ -5289,9 +5294,12 @@ def hayblock(self, blockid, data):
52895294

52905295

52915296
# carpet - wool block that's small?
5292-
@material(blockid=171, data=list(range(16)), transparent=True)
5297+
@material(blockid=171, data=list(range(17)), transparent=True)
52935298
def carpet(self, blockid, data):
5294-
texture = self.load_image_texture("assets/minecraft/textures/block/%s_wool.png" % color_map[data])
5299+
if data < 16:
5300+
texture = self.load_image_texture("assets/minecraft/textures/block/%s_wool.png" % color_map[data])
5301+
elif data == 16:
5302+
texture = self.load_image_texture("assets/minecraft/textures/block/moss_block.png")
52955303

52965304
return self.build_full_block((texture,15),texture,texture,texture,texture)
52975305

@@ -6080,3 +6088,289 @@ def pointed_dripstone(self, blockid, data):
60806088
else: # 0 - tip
60816089
tex = self.load_image_texture("assets/minecraft/textures/block/pointed_dripstone_%s_tip.png" % (up_down))
60826090
return self.build_sprite(tex)
6091+
6092+
6093+
block(blockid=1111, top_image="assets/minecraft/textures/block/powder_snow.png")
6094+
6095+
6096+
@material(blockid=1112, data=0, transparent=True)
6097+
def hangings_roots(self, blockid, data):
6098+
tex = self.load_image_texture("assets/minecraft/textures/block/hanging_roots.png")
6099+
return self.build_sprite(tex)
6100+
6101+
6102+
@material(blockid=[1113, 1114, 1115], data=list(range(6)), transparent=True)
6103+
def amethyst_bud(self, blockid, data):
6104+
if blockid == 1113:
6105+
tex = self.load_image_texture("assets/minecraft/textures/block/small_amethyst_bud.png")
6106+
elif blockid == 1114:
6107+
tex = self.load_image_texture("assets/minecraft/textures/block/medium_amethyst_bud.png")
6108+
elif blockid == 1115:
6109+
tex = self.load_image_texture("assets/minecraft/textures/block/large_amethyst_bud.png")
6110+
6111+
def draw_north():
6112+
rotated = tex.rotate(90)
6113+
side = self.transform_image_side(rotated)
6114+
otherside = self.transform_image_top(rotated)
6115+
otherside = otherside.transpose(Image.FLIP_TOP_BOTTOM)
6116+
alpha_over(img, side, (6, 3), side)
6117+
alpha_over(img, otherside, (0, 6), otherside)
6118+
6119+
def draw_south():
6120+
rotated = tex.rotate(-90)
6121+
side = self.transform_image_side(rotated)
6122+
otherside = self.transform_image_top(rotated)
6123+
otherside = otherside.transpose(Image.FLIP_TOP_BOTTOM)
6124+
alpha_over(img, side, (6, 3), side)
6125+
alpha_over(img, otherside, (0, 6), otherside)
6126+
6127+
def draw_west():
6128+
rotated = tex.rotate(-90)
6129+
side = self.transform_image_side(rotated)
6130+
side = side.transpose(Image.FLIP_LEFT_RIGHT)
6131+
otherside = self.transform_image_top(rotated)
6132+
otherside = otherside.transpose(Image.FLIP_LEFT_RIGHT)
6133+
otherside = otherside.transpose(Image.FLIP_TOP_BOTTOM)
6134+
alpha_over(img, side, (6, 3), side)
6135+
alpha_over(img, otherside, (0, 6), otherside)
6136+
6137+
def draw_east():
6138+
rotated = tex.rotate(90)
6139+
side = self.transform_image_side(rotated)
6140+
side = side.transpose(Image.FLIP_LEFT_RIGHT)
6141+
otherside = self.transform_image_top(rotated)
6142+
otherside = otherside.transpose(Image.FLIP_LEFT_RIGHT)
6143+
otherside = otherside.transpose(Image.FLIP_TOP_BOTTOM)
6144+
alpha_over(img, side, (6, 3), side)
6145+
alpha_over(img, otherside, (0, 6), otherside)
6146+
6147+
draw_funcs = [draw_east, draw_south, draw_west, draw_north]
6148+
6149+
if data == 0: # down
6150+
tex = tex.transpose(Image.FLIP_TOP_BOTTOM)
6151+
return self.build_sprite(tex)
6152+
elif data == 1: # up
6153+
return self.build_sprite(tex)
6154+
elif data == 5: # north
6155+
img = Image.new("RGBA", (24, 24), self.bgcolor)
6156+
draw_funcs[(self.rotation + 3) % len(draw_funcs)]()
6157+
return img
6158+
elif data == 3: # south
6159+
img = Image.new("RGBA", (24, 24), self.bgcolor)
6160+
draw_funcs[(self.rotation + 1) % len(draw_funcs)]()
6161+
return img
6162+
elif data == 4: # west
6163+
img = Image.new("RGBA", (24,24), self.bgcolor)
6164+
draw_funcs[(self.rotation + 2) % len(draw_funcs)]()
6165+
return img
6166+
elif data == 2: # east
6167+
img = Image.new("RGBA", (24, 24), self.bgcolor)
6168+
draw_funcs[(self.rotation + 0) % len(draw_funcs)]()
6169+
return img
6170+
6171+
return self.build_sprite(tex)
6172+
6173+
6174+
@material(blockid=[1116, 1117], data=list(range(2)), transparent=True)
6175+
def cave_vines(self, blockid, data):
6176+
if blockid == 1116:
6177+
if data == 1:
6178+
tex = self.load_image_texture("assets/minecraft/textures/block/cave_vines_plant_lit.png")
6179+
else:
6180+
tex = self.load_image_texture("assets/minecraft/textures/block/cave_vines_plant.png")
6181+
elif blockid == 1117:
6182+
if data == 1:
6183+
tex = self.load_image_texture("assets/minecraft/textures/block/cave_vines_lit.png")
6184+
else:
6185+
tex = self.load_image_texture("assets/minecraft/textures/block/cave_vines.png")
6186+
return self.build_sprite(tex)
6187+
6188+
6189+
@material(blockid=1118, data=list(range(6)), transparent=True, solid=True)
6190+
def lightning_rod(self, blockid, data):
6191+
tex = self.load_image_texture("assets/minecraft/textures/block/lightning_rod.png")
6192+
img = Image.new("RGBA", (24, 24), self.bgcolor)
6193+
6194+
mask = tex.crop((0, 4, 2, 16))
6195+
sidetex = Image.new(tex.mode, tex.size, self.bgcolor)
6196+
alpha_over(sidetex, mask, (14, 4), mask)
6197+
6198+
mask = tex.crop((0, 0, 4, 4))
6199+
toptex = Image.new(tex.mode, tex.size, self.bgcolor)
6200+
alpha_over(toptex, mask, (12, 0), mask)
6201+
6202+
mask = tex.crop((0, 4, 2, 6))
6203+
side_toptex = Image.new(tex.mode, tex.size, self.bgcolor)
6204+
alpha_over(side_toptex, mask, (12, 0), mask)
6205+
6206+
def draw_east():
6207+
toptex_rotated = toptex.rotate(90)
6208+
top_side = self.transform_image_side(toptex_rotated)
6209+
top_side = top_side.transpose(Image.FLIP_LEFT_RIGHT)
6210+
top_otherside = self.transform_image_top(toptex)
6211+
top_otherside = top_otherside.transpose(Image.FLIP_LEFT_RIGHT)
6212+
top_top = self.transform_image_side(toptex)
6213+
6214+
# top
6215+
alpha_over(img, top_otherside, (6, 6), top_otherside)
6216+
# side
6217+
alpha_over(img, top_side, (8, 7), top_side)
6218+
alpha_over(img, top_top, (6, 2), top_top)
6219+
6220+
roated_side = sidetex.rotate(90)
6221+
side = self.transform_image_side(roated_side)
6222+
side = side.transpose(Image.FLIP_TOP_BOTTOM)
6223+
otherside = self.transform_image_top(sidetex)
6224+
otherside = otherside.transpose(Image.FLIP_TOP_BOTTOM)
6225+
side_top = self.transform_image_side(side_toptex)
6226+
6227+
alpha_over(img, otherside, (-7, 4), otherside)
6228+
alpha_over(img, side, (5, -1), side)
6229+
alpha_over(img, side_top, (-2, 9), side_top)
6230+
6231+
def draw_south():
6232+
roated_side = sidetex.rotate(90)
6233+
side = self.transform_image_side(roated_side)
6234+
otherside = self.transform_image_top(sidetex)
6235+
6236+
alpha_over(img, side, (3, 6), side)
6237+
alpha_over(img, otherside, (-8, 6), otherside)
6238+
6239+
toptex_rotated = toptex.rotate(90)
6240+
top_side = self.transform_image_side(toptex_rotated)
6241+
top_otherside = self.transform_image_top(toptex)
6242+
top_top = self.transform_image_side(toptex)
6243+
top_top = top_top.transpose(Image.FLIP_LEFT_RIGHT)
6244+
6245+
alpha_over(img, top_side, (15, 12), top_side)
6246+
alpha_over(img, top_otherside, (5, 10), top_otherside)
6247+
alpha_over(img, top_top, (17, 7), top_top)
6248+
6249+
def draw_west():
6250+
roated_side = sidetex.rotate(90)
6251+
side = self.transform_image_side(roated_side)
6252+
side = side.transpose(Image.FLIP_LEFT_RIGHT)
6253+
otherside = self.transform_image_top(sidetex)
6254+
otherside = otherside.transpose(Image.FLIP_LEFT_RIGHT)
6255+
6256+
alpha_over(img, side, (10, 6), side)
6257+
alpha_over(img, otherside, (8, 6), otherside)
6258+
6259+
toptex_rotated = toptex.rotate(90)
6260+
top_side = self.transform_image_side(toptex_rotated)
6261+
top_side = top_side.transpose(Image.FLIP_LEFT_RIGHT)
6262+
top_otherside = self.transform_image_top(toptex)
6263+
top_otherside = top_otherside.transpose(Image.FLIP_LEFT_RIGHT)
6264+
top_top = self.transform_image_side(toptex)
6265+
6266+
# top
6267+
alpha_over(img, top_otherside, (-3, 10), top_otherside)
6268+
# side
6269+
alpha_over(img, top_side, (0, 11), top_side)
6270+
alpha_over(img, top_top, (-3, 7), top_top)
6271+
6272+
def draw_north():
6273+
roated_side = sidetex.rotate(90)
6274+
side = self.transform_image_side(roated_side)
6275+
otherside = self.transform_image_top(sidetex)
6276+
6277+
alpha_over(img, side, (4, 7), side)
6278+
alpha_over(img, otherside, (-6, 7), otherside)
6279+
6280+
toptex_rotated = toptex.rotate(90)
6281+
top_side = self.transform_image_side(toptex_rotated)
6282+
top_otherside = self.transform_image_top(toptex)
6283+
top_top = self.transform_image_side(toptex)
6284+
top_top = top_top.transpose(Image.FLIP_LEFT_RIGHT)
6285+
alpha_over(img, top_otherside, (-4, 6), top_otherside)
6286+
alpha_over(img, top_side, (5, 7), top_side)
6287+
alpha_over(img, top_top, (8, 3), top_top)
6288+
6289+
draw_funcs = [draw_east, draw_south, draw_west, draw_north]
6290+
6291+
if data == 1: # up
6292+
side = self.transform_image_side(sidetex)
6293+
otherside = side.transpose(Image.FLIP_LEFT_RIGHT)
6294+
alpha_over(img, side, (0, 6 - 4), side)
6295+
alpha_over(img, otherside, (12, 6 - 4), otherside)
6296+
6297+
top_top = self.transform_image_top(toptex)
6298+
top_side = self.transform_image_side(toptex)
6299+
top_otherside = top_side.transpose(Image.FLIP_LEFT_RIGHT)
6300+
alpha_over(img, top_side, (0, 6 - 4), top_side)
6301+
alpha_over(img, top_otherside, (12, 6 - 4), top_otherside)
6302+
alpha_over(img, top_top, (0, 5), top_top)
6303+
elif data == 0: # down
6304+
toptex_flipped = toptex.transpose(Image.FLIP_TOP_BOTTOM)
6305+
top_top = self.transform_image_top(toptex)
6306+
top_side = self.transform_image_side(toptex_flipped)
6307+
top_otherside = top_side.transpose(Image.FLIP_LEFT_RIGHT)
6308+
alpha_over(img, top_side, (0, 6 - 4), top_side)
6309+
alpha_over(img, top_otherside, (12, 6 - 4), top_otherside)
6310+
alpha_over(img, top_top, (0, 14), top_top)
6311+
6312+
flipped = sidetex.transpose(Image.FLIP_TOP_BOTTOM)
6313+
side_top = self.transform_image_top(side_toptex)
6314+
side = self.transform_image_side(flipped)
6315+
otherside = side.transpose(Image.FLIP_LEFT_RIGHT)
6316+
alpha_over(img, side, (0, 6 - 4), side)
6317+
alpha_over(img, otherside, (12, 6 - 4), otherside)
6318+
alpha_over(img, side_top, (2, 6), side_top)
6319+
elif data == 3: # south
6320+
draw_funcs[(self.rotation + 1) % len(draw_funcs)]()
6321+
elif data == 4: # west
6322+
draw_funcs[(self.rotation + 2) % len(draw_funcs)]()
6323+
elif data == 2: # east
6324+
draw_funcs[(self.rotation + 0) % len(draw_funcs)]()
6325+
elif data == 5: # north
6326+
draw_funcs[(self.rotation + 3) % len(draw_funcs)]()
6327+
6328+
return img
6329+
6330+
6331+
@material(blockid=1119, data=list(range(1 << 6)), transparent=True)
6332+
def glow_lichen(self, blockid, data):
6333+
tex = self.load_image_texture("assets/minecraft/textures/block/glow_lichen.png")
6334+
6335+
bottom = tex if data & 1 << 0 else None
6336+
top = tex if data & 1 << 1 else None
6337+
east = tex if data & 1 << 2 else None
6338+
south = tex if data & 1 << 3 else None
6339+
west = tex if data & 1 << 4 else None
6340+
north = tex if data & 1 << 5 else None
6341+
6342+
if self.rotation == 0:
6343+
return self.build_full_block(top, north, east, west, south, bottom)
6344+
elif self.rotation == 1:
6345+
return self.build_full_block(top, west, north, south, east, bottom)
6346+
elif self.rotation == 2:
6347+
return self.build_full_block(top, south, west, east, north, bottom)
6348+
else: # self.rotation == 3:
6349+
return self.build_full_block(top, east, south, north, west, bottom)
6350+
6351+
6352+
@material(blockid=1120, data=list(range(1)), transparent=True)
6353+
def spore_blossom(self, blockid, data):
6354+
leaf = self.load_image_texture("assets/minecraft/textures/block/spore_blossom.png")
6355+
base = self.load_image_texture("assets/minecraft/textures/block/spore_blossom_base.png")
6356+
img = Image.new("RGBA", (24, 24), self.bgcolor)
6357+
6358+
side_leaf = self.transform_image_top(leaf)
6359+
alpha_over(img, side_leaf, (-6, -5), side_leaf)
6360+
6361+
roated_leaf = leaf.rotate(90)
6362+
side_leaf = self.transform_image_top(roated_leaf)
6363+
alpha_over(img, side_leaf, (-7, 4), side_leaf)
6364+
6365+
roated_leaf = roated_leaf.rotate(90)
6366+
side_leaf = self.transform_image_top(roated_leaf)
6367+
alpha_over(img, side_leaf, (5, 4), side_leaf)
6368+
6369+
roated_leaf = roated_leaf.rotate(90)
6370+
side_leaf = self.transform_image_top(roated_leaf)
6371+
alpha_over(img, side_leaf, (5, -5), side_leaf)
6372+
6373+
base_top = self.transform_image_top(base)
6374+
alpha_over(img, base_top, (0, 0), base_top)
6375+
return img
6376+

0 commit comments

Comments
 (0)