From 7834315dd339555f6d5a5aa3e24e4ceba0802689 Mon Sep 17 00:00:00 2001 From: Matthias Schiffer Date: Sat, 6 Jan 2024 22:59:37 +0100 Subject: [PATCH] viewer: add sign images --- resource/sign_textures.py | 90 ++++++++++++++++++ viewer/images/README.md | 7 ++ viewer/images/bg/acacia_hanging_sign.png | Bin 0 -> 321 bytes viewer/images/bg/acacia_hanging_wall_sign.png | Bin 0 -> 232 bytes viewer/images/bg/acacia_sign.png | Bin 0 -> 441 bytes viewer/images/bg/acacia_wall_sign.png | Bin 0 -> 328 bytes viewer/images/bg/bamboo_hanging_sign.png | Bin 0 -> 384 bytes viewer/images/bg/bamboo_hanging_wall_sign.png | Bin 0 -> 244 bytes viewer/images/bg/bamboo_sign.png | Bin 0 -> 564 bytes viewer/images/bg/bamboo_wall_sign.png | Bin 0 -> 459 bytes viewer/images/bg/birch_hanging_sign.png | Bin 0 -> 363 bytes viewer/images/bg/birch_hanging_wall_sign.png | Bin 0 -> 239 bytes viewer/images/bg/birch_sign.png | Bin 0 -> 460 bytes viewer/images/bg/birch_wall_sign.png | Bin 0 -> 341 bytes viewer/images/bg/cherry_hanging_sign.png | Bin 0 -> 311 bytes viewer/images/bg/cherry_hanging_wall_sign.png | Bin 0 -> 224 bytes viewer/images/bg/cherry_sign.png | Bin 0 -> 442 bytes viewer/images/bg/cherry_wall_sign.png | Bin 0 -> 323 bytes viewer/images/bg/crimson_hanging_sign.png | Bin 0 -> 371 bytes .../images/bg/crimson_hanging_wall_sign.png | Bin 0 -> 235 bytes viewer/images/bg/crimson_sign.png | Bin 0 -> 531 bytes viewer/images/bg/crimson_wall_sign.png | Bin 0 -> 392 bytes viewer/images/bg/dark_oak_hanging_sign.png | Bin 0 -> 307 bytes .../images/bg/dark_oak_hanging_wall_sign.png | Bin 0 -> 240 bytes viewer/images/bg/dark_oak_sign.png | Bin 0 -> 416 bytes viewer/images/bg/dark_oak_wall_sign.png | Bin 0 -> 315 bytes viewer/images/bg/jungle_hanging_sign.png | Bin 0 -> 412 bytes viewer/images/bg/jungle_hanging_wall_sign.png | Bin 0 -> 242 bytes viewer/images/bg/jungle_sign.png | Bin 0 -> 451 bytes viewer/images/bg/jungle_wall_sign.png | Bin 0 -> 308 bytes viewer/images/bg/mangrove_hanging_sign.png | Bin 0 -> 329 bytes .../images/bg/mangrove_hanging_wall_sign.png | Bin 0 -> 224 bytes viewer/images/bg/mangrove_sign.png | Bin 0 -> 451 bytes viewer/images/bg/mangrove_wall_sign.png | Bin 0 -> 342 bytes viewer/images/bg/oak_hanging_sign.png | Bin 0 -> 339 bytes viewer/images/bg/oak_hanging_wall_sign.png | Bin 0 -> 225 bytes viewer/images/bg/oak_sign.png | Bin 0 -> 440 bytes viewer/images/bg/oak_wall_sign.png | Bin 0 -> 332 bytes viewer/images/bg/spruce_hanging_sign.png | Bin 0 -> 345 bytes viewer/images/bg/spruce_hanging_wall_sign.png | Bin 0 -> 236 bytes viewer/images/bg/spruce_sign.png | Bin 0 -> 421 bytes viewer/images/bg/spruce_wall_sign.png | Bin 0 -> 316 bytes viewer/images/bg/warped_hanging_sign.png | Bin 0 -> 374 bytes viewer/images/bg/warped_hanging_wall_sign.png | Bin 0 -> 236 bytes viewer/images/bg/warped_sign.png | Bin 0 -> 531 bytes viewer/images/bg/warped_wall_sign.png | Bin 0 -> 394 bytes viewer/images/icon/acacia_hanging_sign.png | Bin 0 -> 268 bytes .../images/icon/acacia_hanging_wall_sign.png | Bin 0 -> 327 bytes viewer/images/icon/acacia_sign.png | Bin 0 -> 301 bytes viewer/images/icon/acacia_wall_sign.png | Bin 0 -> 237 bytes viewer/images/icon/bamboo_hanging_sign.png | Bin 0 -> 391 bytes .../images/icon/bamboo_hanging_wall_sign.png | Bin 0 -> 469 bytes viewer/images/icon/bamboo_sign.png | Bin 0 -> 416 bytes viewer/images/icon/bamboo_wall_sign.png | Bin 0 -> 348 bytes viewer/images/icon/birch_hanging_sign.png | Bin 0 -> 273 bytes .../images/icon/birch_hanging_wall_sign.png | Bin 0 -> 340 bytes viewer/images/icon/birch_sign.png | Bin 0 -> 298 bytes viewer/images/icon/birch_wall_sign.png | Bin 0 -> 235 bytes viewer/images/icon/cherry_hanging_sign.png | Bin 0 -> 280 bytes .../images/icon/cherry_hanging_wall_sign.png | Bin 0 -> 347 bytes viewer/images/icon/cherry_sign.png | Bin 0 -> 298 bytes viewer/images/icon/cherry_wall_sign.png | Bin 0 -> 229 bytes viewer/images/icon/crimson_hanging_sign.png | Bin 0 -> 284 bytes .../images/icon/crimson_hanging_wall_sign.png | Bin 0 -> 341 bytes viewer/images/icon/crimson_sign.png | Bin 0 -> 340 bytes viewer/images/icon/crimson_wall_sign.png | Bin 0 -> 262 bytes viewer/images/icon/dark_oak_hanging_sign.png | Bin 0 -> 276 bytes .../icon/dark_oak_hanging_wall_sign.png | Bin 0 -> 332 bytes viewer/images/icon/dark_oak_sign.png | Bin 0 -> 302 bytes viewer/images/icon/dark_oak_wall_sign.png | Bin 0 -> 244 bytes viewer/images/icon/jungle_hanging_sign.png | Bin 0 -> 272 bytes .../images/icon/jungle_hanging_wall_sign.png | Bin 0 -> 335 bytes viewer/images/icon/jungle_sign.png | Bin 0 -> 315 bytes viewer/images/icon/jungle_wall_sign.png | Bin 0 -> 238 bytes viewer/images/icon/mangrove_hanging_sign.png | Bin 0 -> 276 bytes .../icon/mangrove_hanging_wall_sign.png | Bin 0 -> 337 bytes viewer/images/icon/mangrove_sign.png | Bin 0 -> 299 bytes viewer/images/icon/mangrove_wall_sign.png | Bin 0 -> 234 bytes viewer/images/icon/oak_hanging_sign.png | Bin 0 -> 289 bytes viewer/images/icon/oak_hanging_wall_sign.png | Bin 0 -> 345 bytes viewer/images/icon/oak_sign.png | Bin 0 -> 298 bytes viewer/images/icon/oak_wall_sign.png | Bin 0 -> 237 bytes viewer/images/icon/spruce_hanging_sign.png | Bin 0 -> 274 bytes .../images/icon/spruce_hanging_wall_sign.png | Bin 0 -> 332 bytes viewer/images/icon/spruce_sign.png | Bin 0 -> 289 bytes viewer/images/icon/spruce_wall_sign.png | Bin 0 -> 233 bytes viewer/images/icon/warped_hanging_sign.png | Bin 0 -> 296 bytes .../images/icon/warped_hanging_wall_sign.png | Bin 0 -> 353 bytes viewer/images/icon/warped_sign.png | Bin 0 -> 327 bytes viewer/images/icon/warped_wall_sign.png | Bin 0 -> 244 bytes 90 files changed, 97 insertions(+) create mode 100755 resource/sign_textures.py create mode 100644 viewer/images/README.md create mode 100644 viewer/images/bg/acacia_hanging_sign.png create mode 100644 viewer/images/bg/acacia_hanging_wall_sign.png create mode 100644 viewer/images/bg/acacia_sign.png create mode 100644 viewer/images/bg/acacia_wall_sign.png create mode 100644 viewer/images/bg/bamboo_hanging_sign.png create mode 100644 viewer/images/bg/bamboo_hanging_wall_sign.png create mode 100644 viewer/images/bg/bamboo_sign.png create mode 100644 viewer/images/bg/bamboo_wall_sign.png create mode 100644 viewer/images/bg/birch_hanging_sign.png create mode 100644 viewer/images/bg/birch_hanging_wall_sign.png create mode 100644 viewer/images/bg/birch_sign.png create mode 100644 viewer/images/bg/birch_wall_sign.png create mode 100644 viewer/images/bg/cherry_hanging_sign.png create mode 100644 viewer/images/bg/cherry_hanging_wall_sign.png create mode 100644 viewer/images/bg/cherry_sign.png create mode 100644 viewer/images/bg/cherry_wall_sign.png create mode 100644 viewer/images/bg/crimson_hanging_sign.png create mode 100644 viewer/images/bg/crimson_hanging_wall_sign.png create mode 100644 viewer/images/bg/crimson_sign.png create mode 100644 viewer/images/bg/crimson_wall_sign.png create mode 100644 viewer/images/bg/dark_oak_hanging_sign.png create mode 100644 viewer/images/bg/dark_oak_hanging_wall_sign.png create mode 100644 viewer/images/bg/dark_oak_sign.png create mode 100644 viewer/images/bg/dark_oak_wall_sign.png create mode 100644 viewer/images/bg/jungle_hanging_sign.png create mode 100644 viewer/images/bg/jungle_hanging_wall_sign.png create mode 100644 viewer/images/bg/jungle_sign.png create mode 100644 viewer/images/bg/jungle_wall_sign.png create mode 100644 viewer/images/bg/mangrove_hanging_sign.png create mode 100644 viewer/images/bg/mangrove_hanging_wall_sign.png create mode 100644 viewer/images/bg/mangrove_sign.png create mode 100644 viewer/images/bg/mangrove_wall_sign.png create mode 100644 viewer/images/bg/oak_hanging_sign.png create mode 100644 viewer/images/bg/oak_hanging_wall_sign.png create mode 100644 viewer/images/bg/oak_sign.png create mode 100644 viewer/images/bg/oak_wall_sign.png create mode 100644 viewer/images/bg/spruce_hanging_sign.png create mode 100644 viewer/images/bg/spruce_hanging_wall_sign.png create mode 100644 viewer/images/bg/spruce_sign.png create mode 100644 viewer/images/bg/spruce_wall_sign.png create mode 100644 viewer/images/bg/warped_hanging_sign.png create mode 100644 viewer/images/bg/warped_hanging_wall_sign.png create mode 100644 viewer/images/bg/warped_sign.png create mode 100644 viewer/images/bg/warped_wall_sign.png create mode 100644 viewer/images/icon/acacia_hanging_sign.png create mode 100644 viewer/images/icon/acacia_hanging_wall_sign.png create mode 100644 viewer/images/icon/acacia_sign.png create mode 100644 viewer/images/icon/acacia_wall_sign.png create mode 100644 viewer/images/icon/bamboo_hanging_sign.png create mode 100644 viewer/images/icon/bamboo_hanging_wall_sign.png create mode 100644 viewer/images/icon/bamboo_sign.png create mode 100644 viewer/images/icon/bamboo_wall_sign.png create mode 100644 viewer/images/icon/birch_hanging_sign.png create mode 100644 viewer/images/icon/birch_hanging_wall_sign.png create mode 100644 viewer/images/icon/birch_sign.png create mode 100644 viewer/images/icon/birch_wall_sign.png create mode 100644 viewer/images/icon/cherry_hanging_sign.png create mode 100644 viewer/images/icon/cherry_hanging_wall_sign.png create mode 100644 viewer/images/icon/cherry_sign.png create mode 100644 viewer/images/icon/cherry_wall_sign.png create mode 100644 viewer/images/icon/crimson_hanging_sign.png create mode 100644 viewer/images/icon/crimson_hanging_wall_sign.png create mode 100644 viewer/images/icon/crimson_sign.png create mode 100644 viewer/images/icon/crimson_wall_sign.png create mode 100644 viewer/images/icon/dark_oak_hanging_sign.png create mode 100644 viewer/images/icon/dark_oak_hanging_wall_sign.png create mode 100644 viewer/images/icon/dark_oak_sign.png create mode 100644 viewer/images/icon/dark_oak_wall_sign.png create mode 100644 viewer/images/icon/jungle_hanging_sign.png create mode 100644 viewer/images/icon/jungle_hanging_wall_sign.png create mode 100644 viewer/images/icon/jungle_sign.png create mode 100644 viewer/images/icon/jungle_wall_sign.png create mode 100644 viewer/images/icon/mangrove_hanging_sign.png create mode 100644 viewer/images/icon/mangrove_hanging_wall_sign.png create mode 100644 viewer/images/icon/mangrove_sign.png create mode 100644 viewer/images/icon/mangrove_wall_sign.png create mode 100644 viewer/images/icon/oak_hanging_sign.png create mode 100644 viewer/images/icon/oak_hanging_wall_sign.png create mode 100644 viewer/images/icon/oak_sign.png create mode 100644 viewer/images/icon/oak_wall_sign.png create mode 100644 viewer/images/icon/spruce_hanging_sign.png create mode 100644 viewer/images/icon/spruce_hanging_wall_sign.png create mode 100644 viewer/images/icon/spruce_sign.png create mode 100644 viewer/images/icon/spruce_wall_sign.png create mode 100644 viewer/images/icon/warped_hanging_sign.png create mode 100644 viewer/images/icon/warped_hanging_wall_sign.png create mode 100644 viewer/images/icon/warped_sign.png create mode 100644 viewer/images/icon/warped_wall_sign.png diff --git a/resource/sign_textures.py b/resource/sign_textures.py new file mode 100755 index 0000000..e0b548d --- /dev/null +++ b/resource/sign_textures.py @@ -0,0 +1,90 @@ +#!/usr/bin/env python3 + +import shutil +import sys + +from PIL import Image + +MATERIALS = [ + 'acacia', + 'bamboo', + 'birch', + 'cherry', + 'crimson', + 'dark_oak', + 'jungle', + 'mangrove', + 'oak', + 'spruce', + 'warped', +] + +in_dir = sys.argv[1] +out_dir = sys.argv[2] + +def sign_bg_image(material): + in_path = f'{in_dir}/assets/minecraft/textures/entity/signs/{material}.png' + out_path = f'{out_dir}/bg/{material}_sign.png' + out_path_wall = f'{out_dir}/bg/{material}_wall_sign.png' + + in_image = Image.open(in_path) + + out_image = Image.new('RGBA', (24, 26)) + out_image.paste(in_image.crop((2, 2, 26, 14)), (0, 0)) + out_image.paste(in_image.crop((2, 16, 4, 30)), (11, 12)) + out_image.save(out_path) + + out_image = Image.new('RGBA', (24, 12)) + out_image.paste(in_image.crop((2, 2, 26, 14)), (0, 0)) + out_image.save(out_path_wall) + +def hanging_sign_bg_image(material): + in_path = f'{in_dir}/assets/minecraft/textures/gui/hanging_signs/{material}.png' + out_path = f'{out_dir}/bg/{material}_hanging_sign.png' + out_path_wall = f'{out_dir}/bg/{material}_hanging_wall_sign.png' + + in_image = Image.open(in_path) + + out_image = Image.new('RGBA', (16, 14)) + out_image.paste(in_image.crop((0, 2, 16, 16)), (0, 0)) + out_image.save(out_path) + + shutil.copyfile(in_path, out_path_wall) + + +def sign_icon_image(material): + in_path = f'{in_dir}/assets/minecraft/textures/item/{material}_sign.png' + out_path = f'{out_dir}/icon/{material}_sign.png' + out_path_wall = f'{out_dir}/icon/{material}_wall_sign.png' + + in_image = Image.open(in_path) + + out_image = Image.new('RGBA', (13, 14)) + out_image.paste(in_image.crop((2, 2, 15, 16)), (0, 0)) + out_image.save(out_path) + + out_image = Image.new('RGBA', (13, 9)) + out_image.paste(in_image.crop((2, 2, 15, 11)), (0, 0)) + out_image.save(out_path_wall) + + +def hanging_sign_icon_image(material): + in_path = f'{in_dir}/assets/minecraft/textures/item/{material}_hanging_sign.png' + out_path = f'{out_dir}/icon/{material}_hanging_sign.png' + out_path_wall = f'{out_dir}/icon/{material}_hanging_wall_sign.png' + + in_image = Image.open(in_path) + + out_image = Image.new('RGBA', (14, 12)) + out_image.paste(in_image.crop((1, 3, 15, 15)), (0, 0)) + out_image.save(out_path) + + out_image = Image.new('RGBA', (14, 14)) + out_image.paste(in_image.crop((1, 1, 15, 15)), (0, 0)) + out_image.save(out_path_wall) + +for material in MATERIALS: + sign_bg_image(material) + hanging_sign_bg_image(material) + sign_icon_image(material) + hanging_sign_icon_image(material) diff --git a/viewer/images/README.md b/viewer/images/README.md new file mode 100644 index 0000000..2e840f1 --- /dev/null +++ b/viewer/images/README.md @@ -0,0 +1,7 @@ +# README + +The images in this directory are assets directly taken from Minecraft, or are derived from Minecraft +assets. They are copyrighted by Mojang/Microsoft, and are used in accordance with the +[Minecraft Usage Guidelines](https://www.minecraft.net/en-us/usage-guidelines). + + diff --git a/viewer/images/bg/acacia_hanging_sign.png b/viewer/images/bg/acacia_hanging_sign.png new file mode 100644 index 0000000000000000000000000000000000000000..33e319123c44d09445c845a1299c2bf9db230a3f GIT binary patch literal 321 zcmV-H0lxl;P)XQu{alw*QQ0 z#&E37{e#~=K6_47Iaf)uUf-R<&dyco=Hs(DizJ9bxV|!Z21{RMU?J>=Kr;M>^IEIe3nnV4bQir ziUbl!=?{n@3Rv#55G62qS?bWcSJT1}R^?8z#~}rG1MY T#;oaB00000NkvXXu0mjf1pX7P60{i^uaftz<-x8-4AUc?~c!la_a zz%*Na@4BSQ*Kf?{{XYFh>y&W>M`W@Ox44{~97p!u8J&}yTsTvcgPfN8zF+_CA4kf{ aPJ8v)y2q>=ugL%%z~JfX=d#Wzp$P!E2~Q3H literal 0 HcmV?d00001 diff --git a/viewer/images/bg/acacia_sign.png b/viewer/images/bg/acacia_sign.png new file mode 100644 index 0000000000000000000000000000000000000000..ccc6e4701b043a5d7943e9a690aff8b11b63628c GIT binary patch literal 441 zcmV;q0Y?6bP)Kyq{Y6MD49skiNK2X!CsoVPT;jToD_4rd zTM|e2?%CftgW3JvCK?H_;!HtbcYP~X6#yVrYuNl0jYLx%kPlv`Y7Hqoq-qUSR)_&e z;Wc#u`Sm-jeu^{Iq@_wh3a>VAO;UJJC3beD?_Sp-KP7p&Qr<)>*RaZDy-9mO#bABn|AzP^k`57Fmi%JdVnVy=9b^&du+ z6|TZ@)6|@g%}*`EwwUiS(DM9BmV0+zSC`*OuP;xV=f{WclmqgPm$bSJC-_O1PMdNH zczgeFYVI6xF30@_oFb=yWHEO>#s4}%QT+BB006f)*Zlf$wC|U%)AH j4(Rm+$ztx*902|RONs&Lteo+u00000NkvXXu0mjfdvL|Q literal 0 HcmV?d00001 diff --git a/viewer/images/bg/acacia_wall_sign.png b/viewer/images/bg/acacia_wall_sign.png new file mode 100644 index 0000000000000000000000000000000000000000..f7ec6214ecad2b96dd79e9de5f366b18faf5d7a5 GIT binary patch literal 328 zcmV-O0k{5%P)-@25Jex%GV++HNI{p{bxxD>Ek@(r5(myQ9A%!IZMHCyNBmLt|Lua^Ng2EW3!G`MJ_pBT<`JY1gpEv zZ50Y*71|fQ0$E;~+Td3BB-No`ZE(B^EWOF`qHg0}oTUKR`CZ&TdROjbcjYTw?`3w$o4n^Vx{$Z-nW1u=3Qra+`}-V2M(umCca~0BF?> z%4YTGwNo90fuHGFz_%A*#QPcd3?e18OB*xbO0000UUzJ@AlQ6yI1&l2Bg}#1gq-U_AqpR0xD%J3GxeOaCmkj4alkXba4!+xRq=W z`SwMU(xzLj3zPkWpY!zE=JN0?my}RAlEtR6v5nE|O=5$9&cSnPdgqq$@tk@4)OdM# zn1q2rtHkad61%kwHu!j-ev$FIAR&R1ag|{itC7{|bf5KeI74I}F!>QrWkQD}YC8z^M>cc_= zrp?edN#v1t@4b5*eZBfvI_?C=Ly9n(p&3$U=mulKAm(^Tq3@*n(D(Zd*4qT!8@0gu zr?U0WJ<(dvNda0Ab50y{0KmJqfg%W_83I1VJY2zXC%sDhRK{^&)-_hj3{jOqz^4EJ zdUy8|QIui5&5@H00KjKsV81h$J<8v$%k_S}zJbri=ARY>j{5^bh`K}<=P4ZbtaZ_I zS@iC4rC#qF0x2`x?hc^EgE_>#5rh!fKb6QyVU+1wCo6?*_Mq7>$5o`%X9NH+4_)J; zrrKt$yUP1Q%FJZpGoms8fb}--b&*zTTvBDF)ps)kl*1O4MAJ>DPO4qxvvCVU3xfG#ia2iA^x~YtanE`u zwX3$T4^n0TSKr4&ieLAYO?^hdSb${p0Pcxajq5sZ+SA&=bZf8A=t;JUt55ICFP}e@ z!^k?`*nqh=LL6UOiLxTlhOh}b45{PWa*27kvLdj`Ks{oUVc<&%x>Nqo30@Lb1mc(v zK6ZaaKnr4Zxi!K6--A~lwCkG$i`nV>|6II!5B>m*rv-D5Y(V$`00000$ literal 0 HcmV?d00001 diff --git a/viewer/images/bg/bamboo_wall_sign.png b/viewer/images/bg/bamboo_wall_sign.png new file mode 100644 index 0000000000000000000000000000000000000000..818286295f6828c4244b9e993a6acb0772825f64 GIT binary patch literal 459 zcmV;+0W|)JP)qe)PyCr( z&g>2+zixk?!{~z3u_VnF^h4{4VMv+$7jrt6*qXv7-Mwtt>{h7R!~-8b&fZ?l3h%rQ z8blMgyy8>?@Z)=89!RqViJG%a*M!lIam;M5S8Idq&!9iAFfxydSOx$r)5y7~&$i#|A@i}&x^gOF z85jisn_WHXBFogdq*Z0v50!y&*iGwr@va-v%*-Io7GHWjQ~;1=zH^2V%d(q6o_`}z zbAJC>@wC5h0mc!1H+^+d=b~6nJ&b4qmN#?qyl2zvD?u1tj{ejk+p#%lU4b&|)3N0B zrL}1+1Efq?t=~|y!s~I@=dJ%+dzfMGZI1oPe*q|*@s@4RMi>A9002ovPDHLkV1j=h B)L;Mr literal 0 HcmV?d00001 diff --git a/viewer/images/bg/birch_hanging_sign.png b/viewer/images/bg/birch_hanging_sign.png new file mode 100644 index 0000000000000000000000000000000000000000..4b4972ce7a71f9a87c0f4edf5abf42f560328590 GIT binary patch literal 363 zcmV-x0hIoUP)MJYI=`q%SLYh!>z|8?`?>+Z*XR2IK*d+? zqbhfFb5*(X?#;g9@%3Y%02Z?pV>Gc&TC6Z6n=iQ@U$+I@5}R4Zw-bU$k=qrUP2pPr zD2r{IjFf96VT`7!YXJ0U=A77IgrWPZwj}^XpFr>dntkPHgh*(* zdDp=C2}7EFMX}DEK#ztjW+_3WSj^IPz|o3FAQQyD5H)p;F`C@2JpcM=`>#QyPKt#@ zkA}oLalTJ101i(k36agLcV_b?HnaW`qa>8({q z))ehpl(}(6f@eUgolCH)j_qGHH5Q;E#*!evUYyJIS8;` z*dJe!KGhd5fPe2MG#Hs%S1>A8ev?dlTO}T zq~O^E?woVaopUqV{oR%DTpKEaFhRM-`4#{W#cAQJj;q$Rr-y67`4&-}!eIuYIK_r* zuuK7m82|v&?A4mddYfM7d|PPXFasO@Q^JmjUY_&rd@h{He128 z833)2;cB_NSt;Aq^1JYroF;v~gA5jc>c1U?qLO(XuTHP4Wc6w)N!DZ>Zt~6hxmT6A37clm^Nu?cOUVNS{OG3XyVzl(|9ZX?;%pe80`sj+|_anj1i^GQ3{?Z??(ydbzDu z(H!~R3>IX-{%zOIyvsbK3;DG#_OIrPgp)Y7F~t13Zh8unP?fnG&|nqMPnj#)c2h88 n;bVUH4+Kk|3-0}k5Vrn5N3`3BIZ6==00000NkvXXu0mjf89bLZ literal 0 HcmV?d00001 diff --git a/viewer/images/bg/cherry_hanging_sign.png b/viewer/images/bg/cherry_hanging_sign.png new file mode 100644 index 0000000000000000000000000000000000000000..2d6cf71ccc07da7c4289809da8055311185b69c1 GIT binary patch literal 311 zcmV-70m%M|P)SJ|QY_`E8_`cgpGeqRNbz7+txzrKx*co7()008X! z5CzhAxPN(G5dcWvA<7W|K+JI7n1dk76tb>2XLkeuQ3S*czNw*s&U0?$d{&Vi6jWHx z(-(XO_P<|qK!`sG5%9E4ZM3R3)E0Km8hF}fCc6iFo;CR^g^3yKdXvmU5IFK@)yu%t zpj?jgj3I{f4I6A#=?=<}_SB#~HH&Z*Nla>>7a`8+x>O64`U590j}WhNI}rc?002ov JPDHLkV1jYFgeL$1 literal 0 HcmV?d00001 diff --git a/viewer/images/bg/cherry_hanging_wall_sign.png b/viewer/images/bg/cherry_hanging_wall_sign.png new file mode 100644 index 0000000000000000000000000000000000000000..a7325f34714f9ad4b4f0cd39dae864b33c01241a GIT binary patch literal 224 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPGa3-AeX1=6ZIwstPTo&l+6TN^HQ z_Fn6sd~?doJ2U3ppRn2m9c!6Ny=VQJHjuxM*Jo8_i z|8>^bP0l+XkKxZG2D literal 0 HcmV?d00001 diff --git a/viewer/images/bg/cherry_sign.png b/viewer/images/bg/cherry_sign.png new file mode 100644 index 0000000000000000000000000000000000000000..91b1949046b4aa2d4d13904804840d89b7028e67 GIT binary patch literal 442 zcmV;r0Y(0aP)e3Eu{CKC1-TE74sVapkQxheC0m&VbGls^2liFKipYQqk z-m@dJmuDl=1Qezy;m&F>r)rak6hxa6N&$6s+JSTWljy+9O`fAG8J z;iV}`?CT04c@a4}w}q}0AUd+^eliBlQq`clpX+q$h^M#4+0CF$B4=suWzT_K!K?WRU+ zd(SW7z3+g6^xS2c_s;)WEM{}Fn9U6bBRR$6^tKs%UXQuq5CA|jh*|Zl4nFb~25P_} zV0Cam8nHHK6V$r{n}8+JMsL^zY?HYjusV1cPnyAhUemnzX4SI@xSO*Hh9OH)KEdQ} keEeNp8LT5MzcO|gKiQAn2ZzXpumAu607*qoM6N<$f+xGixc~qF literal 0 HcmV?d00001 diff --git a/viewer/images/bg/cherry_wall_sign.png b/viewer/images/bg/cherry_wall_sign.png new file mode 100644 index 0000000000000000000000000000000000000000..48d9511b151578c15989ccb4b0f20ff68348c19a GIT binary patch literal 323 zcmV-J0lfZ+P)a2J!><`%d=&zRq{ssH{8)U}WZ z!-zP~)o}CAp7$u}nYvboVGSe?-h+%m@E)_9PyrxgbPo3UPSzCl9ES0=tEC8QKud{? z0o=6ygJ}1wNa*?ZazQG1*Wm81n%__7&6!k>evXGwVk{_1QPOi5M$B$PEne7&^D-Et z5MSg8pr~i+T2!Kr414FR21g$OfGs^=g>B>o?-~F|^8LqMbQwK2pC8(IXIW?JRf>5= z&uS*t807d$Ef(wCEss(3tSp7=Vqkn>W;dbU?{(4Oy`J+eefAzm2+zO1&z|{GJOIqD V#mlX_=I#Ih002ovPDHLkV1iJFl;!{c literal 0 HcmV?d00001 diff --git a/viewer/images/bg/crimson_hanging_sign.png b/viewer/images/bg/crimson_hanging_sign.png new file mode 100644 index 0000000000000000000000000000000000000000..aa3dabe922b5d3c96d140eb20b867bd4d57ba5f8 GIT binary patch literal 371 zcmV-(0gV2MP) z4q}E%VXOsUs1yL*H-LHZ%bteUk9QFPd~ObsR<;Hpvs?0AgRz!nnFlswEnmeC0Q=VU zEdY#_KA^X*$5^>KScov}Z;=Si zvdn|*ZUg|2IvJ%%d61d!n$YXs0YK^G1mKHU2#mFil_nzYEq1MVf}Vm%ik>uYWnngf zRZ1OH{W~H+xvPSIFIP%UX1Af&wF@A9QWplL6XxshLye(4TJr=-JIpcn@dx~dp+I?E RFP8uS002ovPDHLkV1iWvq0|5X literal 0 HcmV?d00001 diff --git a/viewer/images/bg/crimson_hanging_wall_sign.png b/viewer/images/bg/crimson_hanging_wall_sign.png new file mode 100644 index 0000000000000000000000000000000000000000..35a78922998204e89892e7117b11534d6dff7054 GIT binary patch literal 235 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPFv4DbnY1=6ZIwstPTo&l*9I-YeV zK@AqcO%_p|meJGfk`}mR{L^D)2P$GL3GxeOaCmkj4alkRba4#fkY#N+D9C6i(zgH4 zW_9Be&(5WkEaHp`=!#l#pp!3*HHY<6*?N`pEuWt<)Y+D;-BacD(}BsOgJ*&u-vbV2 zgIz~8{a063UfzDy=-1(vwtYu)ikc&~cZjj?b?mVg7ZW`+r^CtRQEb|$sM^mtEqU(~ cZGXP!mzrjz;qvjHJJ1abp00i_>zopr0Nqkk!~g&Q literal 0 HcmV?d00001 diff --git a/viewer/images/bg/crimson_sign.png b/viewer/images/bg/crimson_sign.png new file mode 100644 index 0000000000000000000000000000000000000000..08e23220070570a027a2b4628305bb2a54b122a5 GIT binary patch literal 531 zcmV+u0_^>XP)!EA#}E(seZX$@_ale+-jyrs*$IpK!jUOxP@gL zaqKEQ+hKa7N>aGh0A(%63ZAKT>4ka0+Y5p$s&(VpPT8$5CtR+V*9Qod(r_Q z&Qh$rSjervguHmJ)~y_r;}BpPbY>zWRMzt5u_lcPYM{0HCCJz&+Fp zUrzX`*TlON&vuA+DXT%7tYqEu6{%5MOMQg;5FYz9eO52_X0_uC;FL&2dPsx83hoIu|G!zjU4oCr zd!wY_Iy*ecYBC9o74cjv3=|K^P5tET>MOm!@+T6xioy*~NF>FlU=_U@Nw%b%DtPb0@&^>>!oG+SKMgWwiB53SE6Z{Dp`|Rg~22>PLn#$H5 z@Qdj3IFK@8o<`<+&o22>?opf7)xmNM*v8K2V-3;xM8-R}@FhnmutCwX7Wq zhrxzLHslwMtuKvQOjA`~2clI!|74#pKylP9dw({!{GyMq8?b)~(AgkRz4LK?@tJ?$++(nO m9b2&bzr+4SyCUys`ux9E(e_FzKJ<0~00008MAls+THdc8T-`=`(3A8+rUXF+mb0(>9(vzkj^1+abGM1ZEQlHkL#j{IIU z=L63#uT=x!e89~O*Ii5hWm98YS2zzYMA{iN*a_<=Jwg&k&(&&KjevcKsm^s%ng%;1 z@i>O`VhL0LIT9=*|0QcvVqdnNgD(7XYN}0q{z4IeU!Y? jPqTAp7tdIcz`C!pL$-He)vpGiLl`_={an^LB{Ts5`8!uH literal 0 HcmV?d00001 diff --git a/viewer/images/bg/dark_oak_sign.png b/viewer/images/bg/dark_oak_sign.png new file mode 100644 index 0000000000000000000000000000000000000000..8b1307d9f89ae16eb91240b74a278373ecf8b218 GIT binary patch literal 416 zcmV;R0bl-!P)6*MNmWYs*I_%2s-bS&@@8f&RMXCW};Zw?rKJ?{u-31Rfant22p|PS5T{CLq z2j*ZdjGqR^SMvqfDh*Mc+svkeA9VR^25gG}%p*aDY>E!?z2zd+vG4&}Jv?v5JaDaaRo?JRP8lA=aw(X|Njl@!Hu*Axd&L+K^QU@tntixnbn&6^&<|ABggm< zww%ln059R`Zcm$Yc4!X87uCO8zv19NUcdGJln~ISK#2mW!0r zI23t|CBGdX%R=M}Glj@k|CWk+3HVKyIv3rAl0WT%Li2?EOwX|O{{iZq$;jY~4ygbD N002ovPDHLkV1maCkAMIG literal 0 HcmV?d00001 diff --git a/viewer/images/bg/jungle_hanging_sign.png b/viewer/images/bg/jungle_hanging_sign.png new file mode 100644 index 0000000000000000000000000000000000000000..ecf1e87821b9d05c83e6089417bd40fe06091d78 GIT binary patch literal 412 zcmV;N0b~A&P)+_4NHGkADuGekGrrU6hL`6xa3GTD+E8uC2HT8sCdf&{HK z^x2w1b^a#I81;uO2(Z?+dfwAC4FKiJZRH^X`zoU%FkQ~cqNY-T(m5F&pi)8dnKBm< z)m?T0g%Bu6C|8b31<7TkQLT;5k-Q%XZ8x zYLX-oauzj<#iI2ezsVxt{RiD@?SNPR{oAY^P*V$Lw>|+K6RtVWgm7d40000ORQ6Vg5JOvMd1rY-EmYeCPJ+yrAYF2ut!t=I~t) z8<|5Y4Y%8Y?|PNK`Z60|#Or0*NJVpi?|P6*SFSRzH(}!osdS}DDvh@^K^>3JPrqt5 z)cImMo^18FZifxq_#$2}K`OE=DF@d5Bv3B&rK_9xA{vZ9IRru2=r09qE&+fxzH@zX zTC{rb4~Xe_QvTSywAKIG2LOU30aY7FHq}fr)l6;^UyxViD+L%0MrFWKX^>K?*)p>6 zcb)+Yi}|cr%xA2F1gH7#^&N2{Sx4=0n&U*`;Lv3)U@3?~7f`JEyaheC!<)`skV=gY z^~GAi$^Za{J+HmV082rfNW5rX2rLCh!vH78ebxe&f>oMhmFDe@23QLEk%#>*>n5Ip t`-cqQ+S%QLDCE6j_JYqY(DQkZ?FZSv^rsoE7bXAz002ovPDHLkV1iT_%eMdk literal 0 HcmV?d00001 diff --git a/viewer/images/bg/jungle_wall_sign.png b/viewer/images/bg/jungle_wall_sign.png new file mode 100644 index 0000000000000000000000000000000000000000..6eb610b5928ff182b22c0ff41d4ee3e5e6dcfd88 GIT binary patch literal 308 zcmV-40n7f0P)2jMHdA^fuz-|7PZY zFE}5zeU|2+%Bq0Qrxmlx~hYBFOt4xgrYQC0=G zMbp&gKsQf{z3|IdkMSZ)bFhabS&Zh(g6&HH;1eI5_M84=20uuwmn-w*%hKn6I|l%Q zD*?k8xHdf-rf0KbykJ($l?7&LZVHx4gPYRxb>!p!-oXnhvd&kZX_>qL0000BWhkG#EqEG&TZ5ibJ(odaBK4q^xbo`LQ?qAV?Cro3xSi*+daLHx(9GT}U63 zFq3gH2?4jx)IO!~!=V|--vJrGEiH(tA|xdW0%70Gbc&k5Ep3a+^bWOGY79u?n9bb4Kp#;Fy#jG-TW@%cX9ehb(5m02}&bB2g+(ek}%EH b`^fkQ6`_DE6{Z5X00000NkvXXu0mjfKemSv literal 0 HcmV?d00001 diff --git a/viewer/images/bg/mangrove_hanging_wall_sign.png b/viewer/images/bg/mangrove_hanging_wall_sign.png new file mode 100644 index 0000000000000000000000000000000000000000..4fd994833c96e895eef7076852a18644f73fa817 GIT binary patch literal 224 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPGa3-AeX1=6ZIwstPTo&l-(db*{C zhE?WLMo}0)=ApRWk@b{(%O}&a*LbG zd-r_r>~!$?{IXMt0fkN(>}OZ5$g9;9?RQ-)SBYuBLIU(`3I-+&Ou?`&b0C#q!ZbJ` z>k87(=Q?G3^#WkRKuDlKRg4J(lxXeB-hHdnBYd7_^A-qMwTy-etF>;@t1pdibTP;H zd@@a(9t%W!D;yCc^76S(D~}bTDp?n#mHecjxzGy0%jYUFKq>*$-Z}iG0ox)#JsS^y z@bPfJ>$W`_DgZe27Y^S&d_I{b&5N#=F`}dSVJZ(ickwy3M6KIkJ7<$AXLDVAPF|6( zbe8Q4vo3SQw^38n6s$Str}+DOkXc)?ev_Yz@3QT^jrZ__;{Ek;H+y?JI268Mry=cF z=9?gVu)w9f=vScE4zvy{9xQM(R>1;11pG7iezMa@(eB14{-Dnl$n-XN27jM4@&KAR;1mD=002ovPDHLkV1jL#%Tcwk3xxPS`K2cwxFWjk1MWyHxlEK%3m^isWy%>ytgFoQ(`S$*B zp1?K)1vxLp;+Q;Sb*mg6_g=RRG6m`2o}mv&NFtYVC#B41hwuS0c8lr z0uia0G6YQ6oJyX4)9Ha;hyG`igg&`*<8Ysc9KL@I*xNqmNUtwfUu101t|$uDp{?rm z5E5gDHU*c0?3pJU-wS&HRlRnefM5YE>EreG*tdOd8~{A?MS*)o zuP;}h7xpYWw1@E~*eB*Cz2=s4#fCDQG40%egNHQetT0lYjtv_+mF zQA{Yp)>^EoI8Dw0*jfufC<4H0y#nCw@p%*gEMDI!Z9|%W0bot#28%p%yq*CzY3@gu z%EVJwH;PaMYbqp)y$DV~qL^87=ISo5;-zi8Wlo^p8E1Pc6SrBj552?5IPx8ow)tmK zMU_*B>ck1CnqKHHbn`3pjq0889rU*j@p@N$|3wP`va<5XzD>>FYbrZ4a^eW lmKy**><<8u1ekr@$1h1un&VF+;Q;^u002ovPDHLkV1j6Sjeh_D literal 0 HcmV?d00001 diff --git a/viewer/images/bg/oak_hanging_wall_sign.png b/viewer/images/bg/oak_hanging_wall_sign.png new file mode 100644 index 0000000000000000000000000000000000000000..9212d0787635ef5c56ce50007c651e5ce7555a0c GIT binary patch literal 225 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPFv4DbnY1=2^CWFDBCv~z02y1t-A z4c;?roF|q#dIqH0xdf}~*uFe_XB$uvV@Z%-FoVOh8)-mJo~MgrNX0GDBO3(|8Hl(X zEN?H~Co+rS@r(mK+|Aowc$p+{c6bOJX4@T|Un;|YJ-1+%wr1*%!}h@pTy6}9SR52$ zPkr22Ki@Vb^P0)bZ6Wh`HCyv9PYhyY9C0r@=Da-JX1q(@O&O|Yw5=Dkp##d3K)KQi0Evo#P4;{?CcP-jmj=vD0Kgyg5wND} z^v-NL$%Z`_0E`*_bv9*sad~l;e~dTlcE-Dg%uPI#UT`x1HBO=$#X;aPmgz;X3gO9a z;lU&-!uaGkzf|eem@(C>^!Ym=P@aG}(>nZ1|9E$m-QS#N^~_)F*pNG&4%SN76Pp?| zftA7gJZ#sX39JpmukZE@)=J}aA4r00001sx5JjIsg(Ed)4Q6qZVj++dY#?XI9l{=DtDGWD&XEh5u&_aeWxI14j~E--&Tk~o z%$LS*Q1%R&%?vjCCOZ;KMM>rD}D|)Ky6r0zM2BF2{#~-nTSB;c@`1b6Dr% zUM{oFvFA5k2+__^>*YKG91oVC-;OP9)vV>R@6Y#9cd5Hs)7FfZ zej^)62v3o4l@*}(Ellk7Y*K!+##aWcF9E2ll14SP=g+Q}^LRX1fF#5J&SuSTUSFQ$ z$7x!Zj2{xrQ*|l7(Z%}Lbdkgahe%^w^PA>&r*Qe~!Suf6^z;}H^|RH+>)l3(7u z@ys)vaC`qaJw3lnT)>hi=EHt}cWL%4PvphdcXO3U&Wi$nzwK4SOI`)=_WCe&7L*9z zv7gYgVxt1-*iY2DLWxux?|A?CtQ0_FEC98T+^j2%cW9}w9@_rYLlr#ZTp3}j6bkL4NaciElF-h2XS40*7hpy)wtWR-r r+xZUE@`rJbVYD2&KH7}EMGf!|w&au6%J{1?00000NkvXXu0mjfg|3~2nJ7AKbLh*2~7YAXH{PS literal 0 HcmV?d00001 diff --git a/viewer/images/bg/spruce_sign.png b/viewer/images/bg/spruce_sign.png new file mode 100644 index 0000000000000000000000000000000000000000..cc5cbab2870257696cc9e9d5d50f1a6bd78627aa GIT binary patch literal 421 zcmV;W0b2fvP)=?UzON?Z6c?GwIo#8x1fbC6-kFcL#BEgt~Hnee?&Z4{PnbYNdH-4lo zGdk8sc3}@}o)$J&`vp)2CR?sM8=pRE%GVCqH32rAtGq7Sr5`L8^Gb*Wz?>hX43bu)K33n5D(`S@G~H5Fv=`t}}FJlNpkeAKVODF`wsRyz0= z|LX>8z3$fl;A(pOPx>>1p&SMk4>m|f5^Z#U2B#p{Aj`k{GbmPJ@c?`SB=F;21sx5JjIsSi%?X;cWJuziM%yh0L#EegXpXgi*fU_;m{+;DAXIswvCZ=4> z0G(^`X+5Q$UQ3!D`J3nCHUn7Oky7ADM>Tsn^Yw96Q?93}t3TM$yWhw`62em?T;&Vk z6AZ6fy_=ff?D3Ta>q~%TazB-(Xa45-xXspf09A(n-OZlA>|oKtb<244yfLrU)%->m z>tEAF5)&LEjd9O!#@B<;55_0>y!NGOh`GvG;z$1S4n)Ee>P*kH_5T9oNXvKIM+U9{ O0000R8Rwt> zF$$dO{&9GCdVV=@rOt7lZ3csfYr7Y5UU~SPOm8A7;~c>zncuX0j;jF-Ki&`da)t7J zj4zSe0APFxK=~VhnN7${&gbh}%>zh&z5!Ur3jm@pBGnqH4f%5A)TA~fqw#UbO*H~Q zC+K5l6Ua?Pahq&h-)y%4*ze+kV84sWvh-qR<@>IW!U(U|B})rz#lbpWAcS&Ydy8hf zb&PVdT`ospS-oBtp^hY}*6yu*2Y`AbC#cyo~&4NQKn<3 zDwJ}r{v8ouyPmuJ)~-;BD2&`&IWEARZT32(-UyhEz5s}I$o3S?3XlirRrPoO1Js(F U;%w=8PXGV_07*qoM6N<$f-(N0&Hw-a literal 0 HcmV?d00001 diff --git a/viewer/images/bg/warped_hanging_wall_sign.png b/viewer/images/bg/warped_hanging_wall_sign.png new file mode 100644 index 0000000000000000000000000000000000000000..a80b913b4f57582eccfdc3d702d0b96cf0e4f4cf GIT binary patch literal 236 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPFv4DbnY1=6-Fm$@vQZ#{Fm*_1xR z-X6p5R=w5=&wx}rmta*LTcfm~*FZ&#B|(0{3=Yq3qyagVo-U3d6}Lo>DGD7j5MaHq z-~Q+}=@diVm2dX_xdj@El6GzQ(K2@1Faj f!zR} literal 0 HcmV?d00001 diff --git a/viewer/images/bg/warped_sign.png b/viewer/images/bg/warped_sign.png new file mode 100644 index 0000000000000000000000000000000000000000..8fdc1811466fdfd0f9516760a56828ad680bef21 GIT binary patch literal 531 zcmV+u0_^>XP)09=GCaDYk(q?!dRDy%GO zxw4u}5w;P-A{mng*oK5&0BeHa07XHmTS^#jvK&u-*tq7r$E z4nhECQqH+8dM7$L)|JW-c}nT|h&<(@vt8#2fATk2olBeEHQAcxO3#NYg$_cxD;tVD zoqvtfV$(LgGdLRS)l8ev#%cQJ4xU6eGX8OYx7EZi3Y;WH2Vs5x+w^X~D1fD$FDG>r zrsd^)0WLb*_`ufXq}Da*-KKoafR{}GbPzI1Vy05kXV^F&qhI?D{&hA@dMo&^-{|Mj z3vHw6SUDtTR&;BFgHwmoS5G%*pw$_NZ$EF&zzov{t_^voE1~>iWnk68bydtwEMV2a zZSJ{M2cKS!DaGT>863Qe`FLpc&g=|4{f+(i@p|HI4FK-#^fza4T@_ZF!+*F%zX4r? V2qbK`zpMZN002ovPDHLkV1lR2_ALMa literal 0 HcmV?d00001 diff --git a/viewer/images/bg/warped_wall_sign.png b/viewer/images/bg/warped_wall_sign.png new file mode 100644 index 0000000000000000000000000000000000000000..86a7cab7ffc5850fd99b43b4577d9de826a6fcc1 GIT binary patch literal 394 zcmV;50d@X~P)*ja_Gl+@>BF5d&{W@K|B~DK@FuzO1B5ITTR*6xrCj} z+u41SIMHgUPEyj0VNqbqC)+jtbVik@bO&Q=-APK^Do^Ry=NfN@NKt2mv@rd9H2YooKaGRh}ZUgwpd7S;DT< zH$LIlzmDcy+IUyH)t4(h9}YPx2Q42hZM-vD%vIB=E!t{q@7&Q#bmjQ- zVcOcnFAAJZj0!^Y{kQS%uqc2F&-<-Wp|5=D7hu=v;{(0@)^Il7wfWTpzH9=Zf{@83 o<|rjY#@6|0{^o!1-`UvsA2SZ)klU!ZLI3~&07*qoM6N<$f-AqeT>t<8 literal 0 HcmV?d00001 diff --git a/viewer/images/icon/acacia_hanging_sign.png b/viewer/images/icon/acacia_hanging_sign.png new file mode 100644 index 0000000000000000000000000000000000000000..79c8ee59aa2db7815ae483cc5e194352b4536103 GIT binary patch literal 268 zcmeAS@N?(olHy`uVBq!ia0vp^d_c^@!3HFQ8hUO4smq=&jv*Cuk`o-5;^N}|OBOJc zSgJ`JK5^oOy-_dEhLeVh+Bdf4N-OJ0UwkSdDIp=j_w?5P^n`?jA0OYcGlKxTID4Dh zj62Wc_e(a3&reQi(3Ag|N002ovPDHLkV1fc%jzs_f literal 0 HcmV?d00001 diff --git a/viewer/images/icon/acacia_sign.png b/viewer/images/icon/acacia_sign.png new file mode 100644 index 0000000000000000000000000000000000000000..c698b7d3e16b3bdd08af2de3c9dbdcb8f90e7ccc GIT binary patch literal 301 zcmV+|0n+}7P)fggC z*|@aM0SaRY#MpY8o8wCEz0UtVFNj~%&VoxYdw$(p@|xhy)n)bmk)ib`clV=T9luGs zI6tG)KG}MyQ35#awD*_(O3(z8r3XJW0002ANkljpHB<4fLu n=6~Y_`Av-;cmEgt9b z4n?f6@G1_jLEd>E9>l?+*50`$Yinr7?w?~(Lz;Klvr{;YIiV1jf7c?hUkwRVyn}YKI~~9 zsYICm$RU@G&qpof^VAwGHqP1&M^zfH-rJ68eEv1h%KN{j*Mj~s6&Cp5o%F3l`z lN7w1;Uv%}ElYj2<7r)?!lX74GjavW!002ovPDHLkV1k%JwzL2M literal 0 HcmV?d00001 diff --git a/viewer/images/icon/bamboo_hanging_wall_sign.png b/viewer/images/icon/bamboo_hanging_wall_sign.png new file mode 100644 index 0000000000000000000000000000000000000000..a23377edec284b4cfc9310c02864fce00ea24789 GIT binary patch literal 469 zcmV;`0V@89P)7>1uqg2n5l^fZAGF%l5kAyeq=EE$B3rRZRXfUTntq(c|8rc?HIEV$lM=um_> zI65en9CybZiI?P}hMX;da|r+CPMdf6zwdv4zW4oJe#tu93&!IS&0`gS;c&>;!!<^C zJphz+hA+*VkURVkAj=A=i$5mmMTx7c9@%Ub*LAt>26&zafU1sSoaZGmodGdaDwTja zc+4e4Q7)H*=o!WTxJ2}UrfJeV#mAfkaQS;DkYxpc@py!&MGp|=Uu}Gs65?|E;}2}x z;@{s}hMt3MTiCY6=KEu+2U^&R0STB!Za6;gKK)|h*$cLIe^RTrSXo&Gz;JwO^%knC zqNFo%tL?6fx{%_zoTSsAkY1dwbmvd=$StSn^d}VZOL42EVv$@t>^Mb+5x+t2400000 LNkvXXu0mjfynfuq literal 0 HcmV?d00001 diff --git a/viewer/images/icon/bamboo_sign.png b/viewer/images/icon/bamboo_sign.png new file mode 100644 index 0000000000000000000000000000000000000000..d8702d1d0fa5a2521307741c8d1cfcdc74d0f911 GIT binary patch literal 416 zcmV;R0bl-!P)YU6vlsPN=k1N@j^i`R8Smz3U@&S2L}fgTokmU;7}YKd=EGA0dx=@r05H{bg`r{ zLGjNmwkEbD#-SLLrr@2c>#du zxj23Z5p3<94dP$)*@Jz68~G&7x`Wfd+?788I-k6BnbAL_|xk>+Nn zFs(A(&P%3SCh4x(L>exgFv%q4GL>Q-+pb_0GpElc!Qf+#a{2}qd7IvGJ;g2n0000< KMNUMnLSTYTe7V5@ literal 0 HcmV?d00001 diff --git a/viewer/images/icon/bamboo_wall_sign.png b/viewer/images/icon/bamboo_wall_sign.png new file mode 100644 index 0000000000000000000000000000000000000000..9af0ac2de38d0103c1e0b2aaef2264c5bb273a65 GIT binary patch literal 348 zcmV-i0i*tjP)3XJW0003aNkljSijT8Pv$xJkzGAC%C4 zD4R(cn-=0wNYGu~bGY}M%RNTF+en14`EP~coQx1Q^=1d9Je2YnOhyFSM=6i}!&~aj z4uSU586j*kwo}ISBaY4=ky3Je_CTxMqgves!1W_q?H;ZlQ4l7!Q^x3b8;RDMf-w0A zR{#`*3GfT+iQ`a%K{vn+ykJLhwDcW!|BD{ zy8pqCf(5l5*5@r3Zag00000NkvXXu0mjfG-P!u literal 0 HcmV?d00001 diff --git a/viewer/images/icon/birch_hanging_wall_sign.png b/viewer/images/icon/birch_hanging_wall_sign.png new file mode 100644 index 0000000000000000000000000000000000000000..85f9c2ec551db3d387b258ae220430c03b564e6c GIT binary patch literal 340 zcmV-a0jvIrP)|8Ns-pi74iIlmd_>3AgPN4v&uj*yha_YfS(3gUS1p z$#f6PvIxVFk@rPab?@x_RP%8hC!;}iucZ>(wzF!iYMa-p7I>a#G)=5~20$?G=Qqjk z{PbY|Z|AQkWXi?WqtQ}_H|{+`rumBEVma4$nm1ppOH?6KX3>U@I{={L4(N4<#jshl zDfY`$=%^x!o1UjB5i2g+PbDf)+}i67wY(bTGXEn}p(;#;rixXrqK^9VkO`UYglYl= mpWCVdf`LB+VBpV)!nj^Yvw|p$NwWfgjS-w=F;&S{w9U8tlzKpYJqqK! zPrE&U-8gt+O|4exR7=&o+y7h7OP)Vk17#e%$K|pk)TFTf($}XKozHKzHKeLK8us<{ wEj>hhe2`@6=YTWU~{Y!^3{cK`qY07*qoM6N<$f_y)Qb^rhX literal 0 HcmV?d00001 diff --git a/viewer/images/icon/birch_wall_sign.png b/viewer/images/icon/birch_wall_sign.png new file mode 100644 index 0000000000000000000000000000000000000000..b82e681116fa5bb435d6f7395c11cdd67c6c499c GIT binary patch literal 235 zcmeAS@N?(olHy`uVBq!ia0vp@K+MU(1|(lrEz1H@n><|{Ln`LX?K9+V3J__vKdPAX zqW&v)R%ubewVkRN861DYo19tR@dbWpdG{gD$&>e!+|JN+E17dUzjM#Z`p@K0&ETTz z*Ii*ZtAg#8a+YQMyp|0ASvdk*Co>)>+NyfCtmCD}=DFvc1HH4^uAO9TC@orW!aF|W zti#0VThbUFXzrb4MkCS_by&~9>DkKvIo#g01$+ut3l&w zC3$*#@qAPKS%0CGL@SBtTKiTX?`NKtVnEeOQdTv2mNFVo$g`B~rm@$`s~&r-^&wrB>=t^EsXXttP5zf}kz e_Paj~0UQC!qlXDA^IReT0000>VV(ZR1E_zfJ2gU}&`I%V%S=+L<65(^co2z3aB zfJDRPjyRNDFSP{)|8Tr_?|=8+k7rH0{ZdIm=jjoEG)=iYJf`8a09f^|j!sZg;D|iq zBY9;qnc%uENs^GhKV!=D=5H}=cdzE-`+ms=t$KEqc%E09(bPK6HXjTI18dX7RnG#L zcKanP76ItRn5sM_3l1*MEW0YcJlvyXfszFx&-A&wy{UPs5KB}g3x=bJuouwU+9B)( z%*L^vHXKFzE`?a4#@C&)(fo&v7xr1LS{q;x6Lsop|+f(_)=35;W#*phY?fl{o! z$V34-)BG?yv-1V1k~IJ($6brp>B;V%yLV$Lm!I@7Ir?$t!p#COy?;Q@o?yLlcc&i4 zA```QJaNJC1RcdbAQOd-Vq~HKsIr_ORkCKiqN{3a9UkC+*HL`1)bs(qvn>K+J=$P2 z^cZ`zrau@B|Bolix0lX^y~N`6{peEAX5L-j)?r_;*lc*7fBedbwo=#^gl89IWz~+? wX1ef}!WP|2H2gk1R(~%208B227xnu%Pyhe`07*qoM6N<$f=D!nPyhe` literal 0 HcmV?d00001 diff --git a/viewer/images/icon/cherry_wall_sign.png b/viewer/images/icon/cherry_wall_sign.png new file mode 100644 index 0000000000000000000000000000000000000000..8ca0429bf6e8726221df53e9306bf611b8b0808f GIT binary patch literal 229 zcmV^P)3XJW00022Nkl9rYIM3AXU3q*0*|vWq5IENrktU-Ocg_hvq? zl41ZrcUU(#tyiOO>|PuC#~mNtp$?f1&kMkQyF+D1Xlm=De6&H7l6{ieV3MNp!UaSr zQF(zVB>?ZX!>gniXlj;fFvj8m?z+m0uTS$iz^i={pp8Qdb;@5JjKKidcwr$kig6l&*XO%J>wVB}d3H($JY3P^6#&DFqeY3PnOe30P<&rqwDhSslKiu6dm>P!vUU>tfrB0N%!v8sO*e1VI0xd$A~9 zHm3cvh1TQ3@Q_>P_i=Zls1l+KaHiK0okJ!_!G#wgM?yl^I{2EZM@ ixmOL;)pm3DqUaxC<7U|#8Y+eW0000Gyx%@8<$xHe1I;^Q}kJUgg%BFcj+6r=%OnH!7ikkRTFG0Z4=9s zxR9AnVhjB@=klF1=ZCTS-CmXdtXbUO0x+M?>3kHl&&~nZ$MVezdpMhreq~%-FL7O$ zEX(*5DW;k%xN&QoIF2h0sL5I?iK3`7qp5wYWey}sVja5JWEMcb+p7SU+YJDhC#U}w z6)UCW@#V>~RrC3M$irQvp;9UYujN#;e6!kFEu|!MJW?U_@L)XB%c0}x`dbzN*udYP z`Mw?ue4hYc=YXzfg>g~&SFaAnqgrmp&Q*JNv6PZj2tvox*3@vbSF`Hawzjm-p4n4Y nZ2+-eaI9)p-=>qJ7nObiisO*Y{#yFg00000NkvXXu0mjf4Je&o literal 0 HcmV?d00001 diff --git a/viewer/images/icon/crimson_sign.png b/viewer/images/icon/crimson_sign.png new file mode 100644 index 0000000000000000000000000000000000000000..7cf1ae7e0ee77ddffabd26ca1c013bcb8177b125 GIT binary patch literal 340 zcmV-a0jvIrP)2F)U`j55Ua#amRi2z%eY`aUaL909eY1Qm56<=gFE~=l<>K zs~(`--En^_X_Et-9Mur9l+1iz#TRE$={H}>2vMsXK)tS<8{hW^KWvk~M=ON)@w)SW zRK3B=^k1Ss=Nj@$+srSH&vM6o5~AKYH(&QoTw500003XJW0002ZNkl))H!cCmX6&%2_7qF7(PSQjd=vz^dQ2I2}u%OSM72jqizs!8| zO=UC~-T=}f2f&C>%25h{R;^B2{7f}1a>k1(M&x4wV7Xc`31=kN3zKkWdDV#E zIWDo*0K{73M}Zyi92Y+d@EjL_qhwS@gW)Z?Uiek>{rV9PusQa)buyufQHm;~sdE6DIwy&jc3M$ocHfKfQTxHnJu*Ockg%a-v2mbHXf=hmt0J)09Y=Uyg%G=dU60j8(XCU>*e)}&rN|bpEDQ?NRou- zw>7$&tap4^;{-vV=unfHW#TxF(xa|6X6gsxI5xT_Hkko18xIx0R{Q{99hrNLB@Jo(>08!{MvisFEf9h8IOvt*`ESFu+ zt0@%)_fH=?t3Y+@$nMv2J#GtCw;F{W{?x6kmG<=7p4Cg|TnX9v_pMeffMossrzTw% ez+%1mcjGS(V3`n&rxsBF0000Nkl1Pj6 zR~9A4I<>`Y?lic6aC6%)X7m5+spV^VFwjOlzkmE0^190FD{a@Cg3qeq@oDvI$M1qJ z&-(mk=%#ftiFU!p8wPM{Ou>Fm@-~6 z3M5N%q{}flzF54}z31sSff`-glSzFN)>;g2wrNk(TJ)C3TXg3g@np?YJ-ecq1H!W} zsg!ZM&YY-b=sJ_}Lf1i{G27-QYVlXreqkuL^?h`4`Fk0M{W^^judn!>J(#({eplrQ r|FaM4_dck3t0vCYbo%el;+MQ}abX7q-hC?vdV|5!)z4*}Q$iB}w31*C literal 0 HcmV?d00001 diff --git a/viewer/images/icon/jungle_hanging_sign.png b/viewer/images/icon/jungle_hanging_sign.png new file mode 100644 index 0000000000000000000000000000000000000000..ec89fff07f8257102a95c0d3d210063d4c045b0a GIT binary patch literal 272 zcmV+r0q_2aP)ZcKKQL5xyjvD?l5F0_)mLR2C(ow`L6zU7>I zzw@2@yP(N+-IM~od!{swQ_y5sdZ{_oiQi0>ivL2j0G8X;Pa$0vz&nsR%D+50000Qr)s4`EctLpsm{Zo%B zMB4Vfn)1b*tJ}n~&HQ?6Z!oI$W?d9Z0301v$JEjEuYBT}>eBVcFjfmo9s&KW|9G{*cq817OM)qDQ&g9p^# z!zf-@n)d;6J;M`GHJZUOA#>0B|HkvKZ*NvE7E zPJ!kwnSO!h3~&0y=cHQXtX}mbI`;i`ak&ez{g?hczFf^$aGiZ!$IA;keY%nV=l$<} mo>z8zJ$u-@tlA%yUs!~W6zqG$T9OC!0E4HipUXO@geCy8nPJZW literal 0 HcmV?d00001 diff --git a/viewer/images/icon/mangrove_hanging_sign.png b/viewer/images/icon/mangrove_hanging_sign.png new file mode 100644 index 0000000000000000000000000000000000000000..f53bf222da33086ace8342d24d0d0a592f3cf0eb GIT binary patch literal 276 zcmV+v0qg#WP)lXrql?z&0lcR+g3l&txsRi3i9P1d-SXHYscZDa5E4^9RO4ceC*iea-C7 zn>X`;BFAwmKIqxg#lyDkO0BBidAd5_d7k#^;>} zL~|WPSbg(h7BVo~Zm?Uu+B@boYL}=GIUIzM4Etp)|4DIaqV9I}m2bLcI__$r z=_0Wburz_c*&%lN)Nykm-x;agI1U2OvojoX30G?Ir-*Jh8~I9)cG#QSjD!!nSQ@vl*+& zE6)>@Hob$x1~qlN-I5*J^i28iJg?NNu5F&F4-AJxW7ow^&j9H6Iwip8G6&%JsQD`> zJ(0rI^~kVf^Dc~VPn;h!SAoGez-zQBZ;@4~A_c#gGZ+VIIGjc*>=$$OU*=zR)HtrL z{H2vJ>EGTMrp_<7hSR9_)@z=n09X=LV!Al^#eBVfy2g|}7pIPTd2w2bbT3kcY5^os jwqHt<1@Qi{_;>Idv6iKaZ^;r{00000NkvXXu0mjfDzuY_ literal 0 HcmV?d00001 diff --git a/viewer/images/icon/mangrove_sign.png b/viewer/images/icon/mangrove_sign.png new file mode 100644 index 0000000000000000000000000000000000000000..467c922f098c01aac3f08f2166f05fa46d3bf2c8 GIT binary patch literal 299 zcmV+`0o4A9P)q-sOO+=T`D3oM;k`(^zL#(oC_Q>03jvba)(h{zBc3W@F7h%iJoMKw~( zTb_0FuI~wE(@6_ZHwFN$aMK@jdw9{KZVXz1-tGwN#_+g!>cBw&;6BS(ih{BBPV!qA*n6EQL{&SGp3XvD2wgR9rl3+HSv}I{Hb-r}i=>hI{kr%(34mp6?DI%?K zYGX!DgBqXD2kCOxYi8k-svqOOo-rZieNfNVp`{ZG3XJW00027Nkl>Q}J8Qx!<3AJ}?jjK}HFRT173s?`P&TaZRh3hA<4RvWrE{0{9&CG5{fu0Mu&_ z7eS@TRM72zShgaE<1aex*OQnBqBvo-J!ow)-{e(gD)3x~C{DC_G@0tK=Q{em+zJ3} zfM(;7_qUcdmhAw~FHiYJ)nENOnoQ4jbIRR5zbI2d6eoDDqpK-%kvpqetJeRmXL72l n4e&clE{wNe1APCi?+*R}C`(~`{oRq)00000NkvXXu0mjfhOK@N literal 0 HcmV?d00001 diff --git a/viewer/images/icon/oak_hanging_wall_sign.png b/viewer/images/icon/oak_hanging_wall_sign.png new file mode 100644 index 0000000000000000000000000000000000000000..2bb9dff4474e0a9c3206ee8e0883638ccda22954 GIT binary patch literal 345 zcmV-f0jBKZ@vgI{>U>v*`lqN`HsLC3m84ibOu@<$CHHr&{VMuist4snIkMtBEioXD8 zH8)m_g2hS1#pSgmi{Z`fJ!hu}KQK4gj>kM$W^6WH|Bf z5<~#V0R3)<`zZfSGwv+!@QBBKTnU$h8H(S5P rE6zkz8Q^K+tt|c}8Q|g3|F`iQJ6ws~TX2!D00000NkvXXu0mjfja!!` literal 0 HcmV?d00001 diff --git a/viewer/images/icon/oak_sign.png b/viewer/images/icon/oak_sign.png new file mode 100644 index 0000000000000000000000000000000000000000..41b46a58a2b11ae8efdc0309192c26b857636321 GIT binary patch literal 298 zcmV+_0oDGAP)!MYIAi-6C!;f*qjiI z6}^5``L;HK>nMUS0U!tyJU^}iuA}h$7}rq%%$9;R=yr-lwqjqUAD>_Ifa<&F$6HO` zeE^-VQQ8PWm{j%UEhqi-|23XJW0002ANklYh|7wo;9o0|fs2y6+GP^!s5h#E3P>)zl;YzU>AsYP)^+T$=FvN2F`blV6|kHDx*woQNr2qf`07*qoM6N<$f-B#28UO$Q literal 0 HcmV?d00001 diff --git a/viewer/images/icon/spruce_hanging_wall_sign.png b/viewer/images/icon/spruce_hanging_wall_sign.png new file mode 100644 index 0000000000000000000000000000000000000000..c1c872b0fd748cb55781b3d82c822b2fd7768c96 GIT binary patch literal 332 zcmV-S0ki&zP)`R*Grg!^yO*8>SY%Yc3hjSIqCuBdKkrLpH6##wFPag zlxp3h4ge=gMc@68p8i^7R|7@#JXzihsjBk1{pj7^gY5ZOnO`?S71U}zaTiqXU4{T2 n?i;s5e??c7^Y0&=aTlQjmE?l0{sXrk00000NkvXXu0mjf%?ovl literal 0 HcmV?d00001 diff --git a/viewer/images/icon/spruce_wall_sign.png b/viewer/images/icon/spruce_wall_sign.png new file mode 100644 index 0000000000000000000000000000000000000000..69a9ad95ac48bba261dc08e3325ae69aaf95102a GIT binary patch literal 233 zcmV3XJW00026Nkl=KXnUxAg}A z=@bCg31c?v6#y$eAf3WG;Z+Krbc)02ighvr0QSc-QF@`OTcY$b^`3QtDSE>A20$3! zNV0r7Fhx(2<(Q%ez_|vs+xkOQw=7L#KYGBlo@Dv#({~S0I?&e1q!xU10QgcG``{lv jeSg-Afie1FUOz)`xeIfTX8BKf00000NkvXXu0mjf9}HgU literal 0 HcmV?d00001 diff --git a/viewer/images/icon/warped_hanging_sign.png b/viewer/images/icon/warped_hanging_sign.png new file mode 100644 index 0000000000000000000000000000000000000000..80dd99e650d28dce790437d0c2602479d2fffb63 GIT binary patch literal 296 zcmV+@0oVSCP)YBID=fRePJycY`Xc8aMDMi%c))^F)W;z}LOI zS?>t|c0-R5pYU6vlsPV?Z5>LI#UMiGp+}k`8%@EaC&{JM;lM>RP&F78jkYrC_Xrh+3i6+Ga>7 zYPk+_Z~mA6H7uUFPKy0D0bIJV2jaob%FuWn+wl>lkp%%6=8&7Rq%TqwcKsDRM@a8 zsy8O@e*^&Ya)~OoTCCP=sM&E1st;ybd{OetU%TyAs!qPETV{Mwgb{wPgJD$^nq1D# zQmEScT8xx~mz+sd9pLl%fn}9K9bR289hCY7XKIA#?efzh00000NkvXXu0mjfaXXsB literal 0 HcmV?d00001 diff --git a/viewer/images/icon/warped_sign.png b/viewer/images/icon/warped_sign.png new file mode 100644 index 0000000000000000000000000000000000000000..4c3530b4bbd0d36439cd7b429c01b0a4fe11999a GIT binary patch literal 327 zcmV-N0l5B&P)UIXeN9TZ$71RQkfqQ%#66c>E~-=!{21($XWnVlR2hd>fin!&AL20=o^ zL`a0|5EHH5A$pd3?tjjA{$C8oBLyI{3ILTCG$q#80C?Y6L1q;yFG!ysF=SRTyShf@ z#S#E8zrQ1xPUs~W!F1B}+aiv90OH6ebe(p=v@Jr{!L+UVpFSam;9%Il!_h9@`2a4LO0gO3y=3H&0Q@3 Z@Btdga>hhx^~L}I002ovPDHLkV1m@KiY@>E literal 0 HcmV?d00001 diff --git a/viewer/images/icon/warped_wall_sign.png b/viewer/images/icon/warped_wall_sign.png new file mode 100644 index 0000000000000000000000000000000000000000..59614c66b1631a307595245cd6d526d7d9fb39a2 GIT binary patch literal 244 zcmV3XJW0002HNklzFV3eknH5mhNpAHeS#wgA8a>5p}Cg1EZN`C|ZisOM~A26sS$v)_O+bE6W zxs+K9K$*p)QP>?go=X~qIG)?=*E5#CU7JBA>8mPF8a$x;o<`wE)4LBaTFenfY04~q u)jwy8^zHwRCvI8MJJ8};v(?i4lmZ^6w_6