From 1450d7967288b34c19afc77b8d0246ae878b5d1e Mon Sep 17 00:00:00 2001
From: Monty Marz <m.marzouq@gmx.de>
Date: Mon, 10 Aug 2020 09:57:01 +0200
Subject: [PATCH] added grass sprites

---
 .../voxel/sprite/grass/grass_snow_0.vox       | Bin 0 -> 55651 bytes
 .../voxel/sprite/grass/grass_snow_1.vox       | Bin 0 -> 55663 bytes
 .../voxel/sprite/grass/grass_snow_2.vox       | Bin 0 -> 55663 bytes
 .../voxel/sprite/grass/grass_snow_3.vox       | Bin 0 -> 55643 bytes
 .../voxel/sprite/grass/grass_snow_4.vox       | Bin 0 -> 55679 bytes
 .../voxel/sprite/grass/grass_snow_5.vox       | Bin 0 -> 55767 bytes
 .../voxel/sprite/grass/grass_snow_6.vox       | Bin 0 -> 55823 bytes
 .../voxel/sprite/grass/grass_snow_7.vox       | Bin 0 -> 55787 bytes
 .../voxel/sprite/grass/grass_snow_8.vox       | Bin 0 -> 55791 bytes
 .../voxel/sprite/grass/grass_snow_9.vox       | Bin 0 -> 55787 bytes
 common/src/terrain/block.rs                   |   9 +-
 voxygen/src/scene/terrain.rs                  |  88 +++++++-
 world/src/layer/mod.rs                        | 209 +++++++++++-------
 13 files changed, 223 insertions(+), 83 deletions(-)
 create mode 100644 assets/voxygen/voxel/sprite/grass/grass_snow_0.vox
 create mode 100644 assets/voxygen/voxel/sprite/grass/grass_snow_1.vox
 create mode 100644 assets/voxygen/voxel/sprite/grass/grass_snow_2.vox
 create mode 100644 assets/voxygen/voxel/sprite/grass/grass_snow_3.vox
 create mode 100644 assets/voxygen/voxel/sprite/grass/grass_snow_4.vox
 create mode 100644 assets/voxygen/voxel/sprite/grass/grass_snow_5.vox
 create mode 100644 assets/voxygen/voxel/sprite/grass/grass_snow_6.vox
 create mode 100644 assets/voxygen/voxel/sprite/grass/grass_snow_7.vox
 create mode 100644 assets/voxygen/voxel/sprite/grass/grass_snow_8.vox
 create mode 100644 assets/voxygen/voxel/sprite/grass/grass_snow_9.vox

diff --git a/assets/voxygen/voxel/sprite/grass/grass_snow_0.vox b/assets/voxygen/voxel/sprite/grass/grass_snow_0.vox
new file mode 100644
index 0000000000000000000000000000000000000000..8b38be6b1cd8099b87dca7c876bdb1e2f5841e53
GIT binary patch
literal 55651
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
CFpiJ_

literal 0
HcmV?d00001

diff --git a/assets/voxygen/voxel/sprite/grass/grass_snow_1.vox b/assets/voxygen/voxel/sprite/grass/grass_snow_1.vox
new file mode 100644
index 0000000000000000000000000000000000000000..75403d9adb77059d36e27f0a98eb372d1b9781f8
GIT binary patch
literal 55663
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
AaR2}S

literal 0
HcmV?d00001

diff --git a/assets/voxygen/voxel/sprite/grass/grass_snow_2.vox b/assets/voxygen/voxel/sprite/grass/grass_snow_2.vox
new file mode 100644
index 0000000000000000000000000000000000000000..33fa19e11128da0e6387f809022b3191932de0d5
GIT binary patch
literal 55663
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

literal 0
HcmV?d00001

diff --git a/assets/voxygen/voxel/sprite/grass/grass_snow_3.vox b/assets/voxygen/voxel/sprite/grass/grass_snow_3.vox
new file mode 100644
index 0000000000000000000000000000000000000000..5c74f6f593263f5fd28fcc27ae0584f37e44fd78
GIT binary patch
literal 55643
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

literal 0
HcmV?d00001

diff --git a/assets/voxygen/voxel/sprite/grass/grass_snow_4.vox b/assets/voxygen/voxel/sprite/grass/grass_snow_4.vox
new file mode 100644
index 0000000000000000000000000000000000000000..3179fd185bb78707f1fad77dbf4392370c3ec4da
GIT binary patch
literal 55679
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
KqFWXvD1QS0PL*u{

literal 0
HcmV?d00001

diff --git a/assets/voxygen/voxel/sprite/grass/grass_snow_5.vox b/assets/voxygen/voxel/sprite/grass/grass_snow_5.vox
new file mode 100644
index 0000000000000000000000000000000000000000..f375db3c4218e721c0bbc2c455ac3ff51c276ba8
GIT binary patch
literal 55767
zcmeI)d3+pY83*upc6K-ADy@oEfw~y6UWqfwZWAh?DbzO5rZugYR$-j%&Q6BR?yP$>
zi3$iPU={Jedf<UoR1{AXv5G+Jh1A<3NvMkVh4+2%`aaJ)*&Ms#|Gy8DPIsPnp7(j@
z`@S>NPm_Ln-qw-KULnMmfx#j5Ar4Lpv3+pYhGQvETZh`0sXeXsk)68+?@*t#JwxqA
zhnO}~VmfJx=~Plor&XLvCT0y43qwpB9mb4d8Z)V+F_TUtW`#lL60=E>m^D-MY2GK)
zZl>uodBjxx(+O2iP%UG|Oc^st)jyq3pTd|ChN{=0YNV4#4AsY^92E<Zl7?wYVVE*0
zk}_!~WIAEWRMM2`j)XK*rZm$@X?B>>pgo<E<sHLAC$VJyH$xrDc%x(5${UBbt<Z;x
zq&NCZsGVv&EpDTjHdF0Xf{rO~F4w82RAgnWj9uQoY1^adyxJ(8wz<-Dym?^f@Z;zp
z-sl{4cFJzaqrjp87G_anOP0Mfi!QMxt7mBzT~SL`@6s%_M6FrbrCD^<Ewyq>v*^}p
z$y&QKi*Cf0tUk&b-nf21&;_ZD;+9Rd&Yilae}%j&yIkJVwY(*b8x9Kj;C>-*-P69*
zy@NaC-5ZAF?E`~t`|mrmBCkEIDEH)?w&zy`Q}TohN^<4qk+$cDRtZ^HE#yRJ`|;1}
zTq6tFb@JkYO>O(%c;a#L!0O}W;Zs(~!`V|?a&9~Mf4EyRA8vSf23lu8oPLrN=XT1K
zyL#o?V2d1@bmg)ug<Q5*?KcQHv;Pu#|DBh&c8psdIJ8GT)GjU>m*T3L6xUrU#ZA}9
z<kdo^_No15RsT@?XJT$Jdj7Wz?AUyO4%9|(3;JV>-<|cTibsErIfbBDY}7n@oj4O-
z;E&ZQ&!(4<Q;iz_7`*_kZkv16Dqdd4IqpEQQ;A#XmE#0aRfoMCx^*sRQJdpi)YfHn
z=X7Z6%zhnB=%|keDu#_ox(@E)goP>x3pMoi#?g=+M?=euqoErTM?()bj)vYsI2w8(
z<7ke8(i{z?IR;8Y&kW9Ua~zarIh5vjC=Goh2j{t238i@il;)988v1S}&U14Dl;+V;
zn#VwCRzYbV3#Fl-u;9GYPK46X59V;z=42?%YADU)p)?sN%_&ftCqQXBp)^l~(wqvV
zc@mUn4V31|P@1PeX`TwDp?_wF^EZO0LutC8G~G}d`e(X0&y5A8v7t0QP?}ySO%_U%
zgVL;p()2-T`k^$ZL21@OX`TtCIUP!K29)MZD9y8=G|z_83_xktLut-}(wq&Y*#M<^
z4wPmilx7o@W)Mnq4wU9xD9vUl%@!yP{VygsKk?WKrP&6hc`lS@7)rApO0xq>^E@cc
zc~F|?Lup2!G&`X*yPz~LfYQ7WN^?Gx<^m{<1EqNpl*Wb9j6!MhP?`di#)Hxnp)@{}
zW(-ObKxr<7(u_lCLMTlMN>hf?L{ORvl;*`ynktm02BoP(X&O+P-B6kdD9t34W(rF4
z5-80}p)@ap(p&_kxfn`w36$pLP?}4jG?zhXE{D>*0!s5rD9sg6nk%6+S3zlB1*O>o
zrFk`!<~2~7tD!Wnh0<IDrFk8c=JimTH$Z9L2&K6eO7kWt&0Z+Yo1rvsfzrGcO7k`-
z&2><kw?k>(0i}5-l;&Mfn(Lu7?}pOsgVMYQO7mVQ%?(hR_d#ji52g74l;%b#%?F`0
zAA-`{1f}^fl;$H)nvX(hJ_e=vIF#lSP@0>eG@pdhd<sf)3zX*5P?}qzG@pUe?1$2P
z7E1FuD9vq9n$JUNZimv`0j0SUN^<~8a}Y}N1t`rIp)_BD(tH_8^A#w~T~L~@LTT=X
z(j0=)d<{zTbtug@pfulv(tHa_^KB^2cc3)ih0+{`(%b{3`5u(!UMS5plx7A>GYh4;
z4@z?cO7ndv%@3e7KZMfU52g7Ll;+1!nx8;vehQ`e8I<PdP?}#rX?_W%`4yDr*HD_@
zKxrO;()<=m^E)Wb@1Zn*fYSUCO7kZu&7Yw(e}U5c6-x6rD9zuYH2;9o{1Zy^FDT8w
zp)~)2(mV*Ikx&|82yv_urPS`!rz+kuIw%CiVx#7D(D8&9_+xdIChRoD)u`c*nd->u
zwz*fW;^lRm;|>%%mAEBIU4p2p!(I;EI+wGk&G9X2>$19YI<$3Wzm6t!)W-uA!^R|C
z2lsHoLY0H+*7fIfs#e+(YHvz-EU&zq8%j~ZYo-UBEChKLrw8RC)o_A%Tn@&MQB6I$
zTqfRm8r-rUdek{*WpWl*ajTw7gIe8|zTiSo8*dKUr_Rtul@|}%C<p(4P-1p*fp#T=
z(NLG5;cS*yBR$L1@%p$UE$-s6-Fiu{sypQrG&<XC7(ZI&XLA|b%95SiOM$mIks8|0
z5S{S#eDvpd)Tq}f@O;cg+|Rc3%-Xg^*Lrq*t<<x5t$bG&Bj1^uD_y7U@^GWyocFei
z&4oj+T;qdEHM)@VdE$!EZYq(@9i@JE+=^GNH>#e7^yK(TMnkvYIc4s%pke-o9EuTC
zzKP(2Vi1=2z?-Z@R6wuR?m%BLpK|kFZT@<Ew?qrm)7?YUGt#ayugqu|MI{!Lf=RuU
zddX^eH`F&jKc6l=p!(jR^>ylFRj)P{g*>G;jd4ai#-dx5`}*qXFBf>Yd=y4i!uMMl
z{>4L&%{}T|XiZ#*=Ce5sRMi>v=Znx8E2F+>>~(RMMPus;EBIcUPTVvR6zcIyiD&8j
zxC(V_4$KFBHCS-{)Wk#cD%L7)J}C1-=yx5L)hloHaEf}QE1^5Zt3#K2Sv(M(Y!0N0
udG)#~wqV+LwVM~gB{=dFY(5(Go&2K6<%pTQlGMk}s4woE_rj18?EeBl*{iz%

literal 0
HcmV?d00001

diff --git a/assets/voxygen/voxel/sprite/grass/grass_snow_6.vox b/assets/voxygen/voxel/sprite/grass/grass_snow_6.vox
new file mode 100644
index 0000000000000000000000000000000000000000..6806bd1cdf841f2f97853e88969a0c406fbd10d4
GIT binary patch
literal 55823
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

literal 0
HcmV?d00001

diff --git a/assets/voxygen/voxel/sprite/grass/grass_snow_7.vox b/assets/voxygen/voxel/sprite/grass/grass_snow_7.vox
new file mode 100644
index 0000000000000000000000000000000000000000..39618b57e8d0a41db14aedae4b594db4d88b2cc2
GIT binary patch
literal 55787
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
FPXLEju_*um

literal 0
HcmV?d00001

diff --git a/assets/voxygen/voxel/sprite/grass/grass_snow_8.vox b/assets/voxygen/voxel/sprite/grass/grass_snow_8.vox
new file mode 100644
index 0000000000000000000000000000000000000000..bdcfc73399f7bd637cdf1ed6a470f65484bff03d
GIT binary patch
literal 55791
zcmeI)d3+pY83*upj@^W-v?^K!>SDxtCC(<hO{jpTP}@M8*0f?;g>kYwI~g*&v+mI(
zDj=YORm219fd^JmQ9Mz^Dk8-Tskg=E@WA`R`#yMmpJ!&b+3c$S|2|AQnR(uM-sAhe
zGm|DgF4#7n+9!nAIy^F}4q{<Wh#e!lHy%%c+Pc+#jM|fGAK$fm<cK=bmZeXIK5rz%
zT(VotX_}Zz=wePc#9WsUbHY^RroNyX+I&LS<_*<!G9gq<WyYeen~TEK=Cv+Ww@V$9
z`n;y8qoyxt!dOV?y4sCJLr`6Pp-UaR)G?V*G4JZUTboaI>kFo8!&Ge~O=D5h45<lI
z3d4}X)TNeGahEQQgduf3A$7x)hA?D8H)WSPCQVZ&6S_22PO{sOrJZA=r;u&Qrm1ro
zZ*)#uY17#DmC>nal+jVAYpRVW#n&jNP5HSEI;Xrwu3by0$VyqMbZN)t?GK~tYNK@8
z8coyrmf>AvkD`-!qia;zE;&V)0*l7DG>Zz`veL`5XoziD{mZjxL~U6E%d^Z*S()Wo
zH0rjtvdgpRmTSvew>(STZ0%Wtlr^?#!?3yyd84>(QwyRla`C-GE9Kpp74p{J6>Vu;
zaF>t|91!xhz0EtJCGW_{PI=G9QF+JkNK1Jm*nf6eUUx=8?#<ebqL$-oe^#D!QBkhi
zGTu_&2u4>6nO`I1bWi90&*@n!^O^PX(&5dGDlNyGPCh{%Tyvs4eA-HRICFZ-H41J&
z^}o2=G9N5>a0c3EK%9As6zBKIRl5h|I)AGiopEIMRYG>}Q~QlV&L6l;-goDf?G@va
z`w#7v|7#bQOi6KdRf_8`m*VDYrFo5ziT!H7MYVsZ^E1)tj9vg+hj(r{$Zvw^Z9!k&
z_}y8XExYtJ&d&RVLcQwJ>%^XReQ&Zx@18WhgzQRK_a^BDX!WJJR<-QrqBzSHD7MRS
z3B7V`KdeOI0EbSEo3p6Q_ADyvwfeGAn2s`sqG&pb2Dzg`P@kc3a1A@iS2$Rzp|>}V
zhU_>RT4o##-H<pMda!Xc^cKR=&<hzyL*G8(XpV)_90#SLyA0<}I{`|w0!nitl!ktg
zgY(?1g3>$$O7l=C4gItd=eaovO7n0i%_E>RtD!WHgwoKTu;9GYPKMIZAI#yb&8bkD
zHBg#ILupb_n$w^(kAc$kKxrNer8yl+^EfEYS}4uqp)^l`(mWALLx0T<=R1NYLuq=U
zG<{H-r$A{eC`}ql(+{N?fYM~3H1tmraDFea4oWi!r5S?KoB^d-52bl3l;%t*%~?>I
zv!OIkgVH=5N;3?l*#M<E2TF4;lx8E8<{40$O;DQ6P?`}a&3RCo^Px0bpfp>dH1xll
z;QVxO8<b`{l;)XGnlUKN4k*n|D9y8=G#5Z=o(-iLhtlkV((H!PJO@hiTqw<jP@0RN
zG&Ypxc~BY$N;3ha$w6uIP#PCXQ-IQVP?||7jSr={7)mn*r3s)kMJP=PN)tk9%21l;
zLuo2dnktm02BoP(Y4$*ArlB-5P?}jN%?qG3FND&(2ugDal;%<>&1F!U7ei?-htgaD
zrMVJH^Aae{OQAF`gVJ0DrMVhP^KvN7UMS5gpfs<9(p&?jc@>oAS}4t{p){|7(!3T*
z^ExQabx@kuLuvLwY2E;(c_WnOO;DOQLusyu(!2#q^HwO$+n_XWhtk{trFjRGW<QkX
zolu&0L1}J;(!3i=^ByS8d!aNpL22FxrFlP;=4L3(2cR?`gwlKnO7meT%}1a#ABED~
z0;TyFl;-15np>eXpMcWb2BrBVl;!}G=2K9bPeW;LhthloN^=L4=Ce?mJE1fOp)_|v
zX+8&~`8<^73s9ObLTSDPrMVkQ^JOT_Jy4oMP@1nmX}$`j`5Khw>rk3+Kxw`SrTG?=
z=G#!3!%&)gp)}ut(j0-(%t2}9p)?CnnnfthccC=jgVKB-O7jCK&3#asA3|w<1f}^g
zl;$T;nx8^xeg>uaIh5uXP?}#tX?_Kz`8Aa0ekjdvpftaQ()<oe^Lr@GAD}dUgwp&8
zO7mwZ&0nB2e}&Tg4NCKOD9t~hH2;Ls{0mC+Zz#<JP#OuP5t<OkD^Wu2c5SxocGF4T
zFBIxkw~NlFUEiCmsWg#JQd|k^-lU<<tiCkYs+Qec6lb{t#dbL^F{z3lR-$l#L#M{g
zSyX0w7M1l{ec32XN0~!WG#y2Q+)*K@&(Juyh8^T998|V#IIl;Q(x$7uDdE1{(jG1-
zhIzM{?sKvb<Y`U!O9g7f_Tzpzm^w}s^=GrGc;{(wN?zbn<*b#;THK0LaUJT^>a(H&
z=l$wbv(rI!g*IxrwbOdZ|Nos5vzHs_)Pz3~L`_h4X_i;QXqKts4RJ+U+}6IGS}|Hx
zXV%U~=uER<>R6SZ$)?g)hU{Ek^xf7(D(E;vbis?}V<^kLh68q<=c5sEy|fk0Y&vbx
zSkH~eN;R8f<-4*FdUj*3qINni4;OmPdGEN`+;HHQs(ezegcox@Ph26~Lrr9|$EeS?
zQ+6x0dc}<({aGH#MBwCIyTo;t6db)FM`Hvv-$d|9!4Haj;?9&qY9LyzJ$^J|zU1WG
z>e2CdPLUR-zptOBXS`F(yfPC(7#3Mj^k<@_jFzmLbAssR=jYR*2Q<1jXnpP4WW}vc
zh5=7$n))~^?xW>a<+`4F`b&B4E*A!2h44dGihps}lZ{868(JGTMDy9425Qxw@QyY@
zSFDu!puX3~Ra*LvCM@r{9V&6rw4blVFD0I(3*%O(VzXmD@hbk3@lz3Z&8t`~J2}6^
z3lY8RxY=mst$t2Xk90Y3W_fjJxL3p-(Zyy*QDbhcrW#u^ZM@peL2wfsxe9hPn(*vg
YOXP6GOkPQ<lTN7*uAFm&fD+RG0Vyi6vj6}9

literal 0
HcmV?d00001

diff --git a/assets/voxygen/voxel/sprite/grass/grass_snow_9.vox b/assets/voxygen/voxel/sprite/grass/grass_snow_9.vox
new file mode 100644
index 0000000000000000000000000000000000000000..a042764d2515d8a591698843f4025949ab1f4c8f
GIT binary patch
literal 55787
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
K&hdQ;FrNe3y0G~G

literal 0
HcmV?d00001

diff --git a/common/src/terrain/block.rs b/common/src/terrain/block.rs
index 39e940448b..ad2c551ffc 100644
--- a/common/src/terrain/block.rs
+++ b/common/src/terrain/block.rs
@@ -90,6 +90,7 @@ pub enum BlockKind {
     ShinyGem,
     DropGate,
     DropGateBottom,
+    GrassSnow,
 }
 
 impl fmt::Display for BlockKind {
@@ -195,6 +196,7 @@ impl BlockKind {
             BlockKind::ShinyGem => true,
             BlockKind::DropGate => false,
             BlockKind::DropGateBottom => false,
+            BlockKind::GrassSnow => true,
             _ => false,
         }
     }
@@ -294,6 +296,7 @@ impl BlockKind {
             BlockKind::ShinyGem => false,
             BlockKind::DropGate => false,
             BlockKind::DropGateBottom => false,
+            BlockKind::GrassSnow => false,
             _ => true,
         }
     }
@@ -370,13 +373,14 @@ impl BlockKind {
             BlockKind::ShinyGem => false,
             BlockKind::DropGate => true,
             BlockKind::DropGateBottom => false,
+            BlockKind::GrassSnow => false,
             _ => true,
         }
     }
 
     pub fn is_explodable(&self) -> bool {
         match self {
-            BlockKind::Leaves | BlockKind::Grass | BlockKind::Rock => true,
+            BlockKind::Leaves | BlockKind::Grass | BlockKind::Rock | BlockKind::GrassSnow => true,
             _ => false,
         }
     }
@@ -494,10 +498,9 @@ impl Block {
             | BlockKind::WardrobeSingle
             | BlockKind::WardrobeDouble
             | BlockKind::Pot
-            | BlockKind::DropGate 
+            | BlockKind::DropGate
             | BlockKind::DropGateBottom
             | BlockKind::Door => Some(self.color[0] & 0b111),
-            
             _ => None,
         }
     }
diff --git a/voxygen/src/scene/terrain.rs b/voxygen/src/scene/terrain.rs
index 5f18cd4880..52438575bd 100644
--- a/voxygen/src/scene/terrain.rs
+++ b/voxygen/src/scene/terrain.rs
@@ -19,8 +19,8 @@ use crossbeam::channel;
 use dot_vox::DotVoxData;
 use hashbrown::HashMap;
 use std::{f32, fmt::Debug, i32, marker::PhantomData, time::Duration};
-use treeculler::{BVol, Frustum, AABB};
 use tracing::warn;
+use treeculler::{BVol, Frustum, AABB};
 use vek::*;
 
 struct TerrainChunkData {
@@ -359,6 +359,10 @@ fn sprite_config_for(kind: BlockKind) -> Option<SpriteConfig> {
             variations: 1,
             wind_sway: 0.0,
         }),
+        BlockKind::GrassSnow => Some(SpriteConfig {
+            variations: 10,
+            wind_sway: 0.2,
+        }),
         _ => None,
     }
 }
@@ -2759,6 +2763,87 @@ impl<V: RectRasterableVol> Terrain<V> {
                         Vec3::one(),
                     ),
                 ),
+                // Snow covered Grass
+                (
+                    (BlockKind::GrassSnow, 0),
+                    make_models(
+                        "voxygen.voxel.sprite.grass.grass_snow_0",
+                        Vec3::new(-2.5, -2.5, 0.0),
+                        Vec3::one(),
+                    ),
+                ),
+                (
+                    (BlockKind::GrassSnow, 1),
+                    make_models(
+                        "voxygen.voxel.sprite.grass.grass_snow_1",
+                        Vec3::new(-2.5, -2.5, 0.0),
+                        Vec3::one(),
+                    ),
+                ),
+                (
+                    (BlockKind::GrassSnow, 2),
+                    make_models(
+                        "voxygen.voxel.sprite.grass.grass_snow_2",
+                        Vec3::new(-2.5, -2.5, 0.0),
+                        Vec3::one(),
+                    ),
+                ),
+                (
+                    (BlockKind::GrassSnow, 3),
+                    make_models(
+                        "voxygen.voxel.sprite.grass.grass_snow_3",
+                        Vec3::new(-2.5, -2.5, 0.0),
+                        Vec3::one(),
+                    ),
+                ),
+                (
+                    (BlockKind::GrassSnow, 4),
+                    make_models(
+                        "voxygen.voxel.sprite.grass.grass_snow_4",
+                        Vec3::new(-2.5, -2.5, 0.0),
+                        Vec3::one(),
+                    ),
+                ),
+                (
+                    (BlockKind::GrassSnow, 5),
+                    make_models(
+                        "voxygen.voxel.sprite.grass.grass_snow_5",
+                        Vec3::new(-2.5, -2.5, 0.0),
+                        Vec3::one(),
+                    ),
+                ),
+                (
+                    (BlockKind::GrassSnow, 6),
+                    make_models(
+                        "voxygen.voxel.sprite.grass.grass_snow_6",
+                        Vec3::new(-2.5, -2.5, 0.0),
+                        Vec3::one(),
+                    ),
+                ),
+                (
+                    (BlockKind::GrassSnow, 7),
+                    make_models(
+                        "voxygen.voxel.sprite.grass.grass_snow_7",
+                        Vec3::new(-2.5, -2.5, 0.0),
+                        Vec3::one(),
+                    ),
+                ),
+                (
+                    (BlockKind::GrassSnow, 8),
+                    make_models(
+                        "voxygen.voxel.sprite.grass.grass_snow_8",
+                        Vec3::new(-2.5, -2.5, 0.0),
+                        Vec3::one(),
+                    ),
+                ),
+                (
+                    (BlockKind::GrassSnow, 9),
+                    make_models(
+                        "voxygen.voxel.sprite.grass.grass_snow_9",
+                        Vec3::new(-2.5, -2.5, 0.0),
+                        Vec3::one(),
+                    ),
+                ),
             ]
             .into_iter()
             .collect(),
@@ -3142,7 +3227,6 @@ impl<V: RectRasterableVol> Terrain<V> {
                 let dist_sqrd = Vec2::from(focus_pos).distance_squared(chunk_center);
                 if dist_sqrd < sprite_render_distance.powf(2.0) {
                     for (kind, instances) in &chunk.sprite_instances {
-
                         if let Some(models) = self.sprite_models.get(&kind) {
                             renderer.render_sprites(
                                 if dist_sqrd < sprite_high_detail_distance.powf(2.0) {
diff --git a/world/src/layer/mod.rs b/world/src/layer/mod.rs
index 7cd5ceb449..6d989cb4f6 100644
--- a/world/src/layer/mod.rs
+++ b/world/src/layer/mod.rs
@@ -1,26 +1,27 @@
 use crate::{
     column::ColumnSample,
-    util::{RandomField, Sampler},
     sim::SimChunk,
+    util::{RandomField, Sampler},
     Index,
 };
 use common::{
-    assets,
-    comp,
+    assets, comp,
+    generation::{ChunkSupplement, EntityInfo},
     lottery::Lottery,
     terrain::{Block, BlockKind},
     vol::{BaseVol, ReadVol, RectSizedVol, Vox, WriteVol},
-    generation::{ChunkSupplement, EntityInfo},
 };
 use noise::NoiseFn;
+use rand::prelude::*;
 use std::{
     f32,
     ops::{Mul, Sub},
 };
 use vek::*;
-use rand::prelude::*;
 
-fn close(x: f32, tgt: f32, falloff: f32) -> f32 { (1.0 - (x - tgt).abs() / falloff).max(0.0).powf(0.5) }
+fn close(x: f32, tgt: f32, falloff: f32) -> f32 {
+    (1.0 - (x - tgt).abs() / falloff).max(0.0).powf(0.5)
+}
 
 pub fn apply_scatter_to<'a>(
     wpos2d: Vec2<i32>,
@@ -32,11 +33,50 @@ pub fn apply_scatter_to<'a>(
     use BlockKind::*;
     let scatter: &[(_, fn(&SimChunk) -> (f32, Option<(f32, f32)>))] = &[
         // (density, Option<(wavelen, threshold)>)
-        (BlueFlower, |c| (close(c.temp, -0.3, 0.7).min(close(c.humidity, 0.6, 0.35)) * 0.05, Some((48.0, 0.6)))),
-        (PinkFlower, |c| (close(c.temp, 0.15, 0.5).min(close(c.humidity, 0.6, 0.35)) * 0.05, Some((48.0, 0.6)))),
-        (DeadBush, |c| (close(c.temp, 0.8, 0.3).min(close(c.humidity, 0.0, 0.4)) * 0.015, None)),
+        (BlueFlower, |c| {
+            (
+                close(c.temp, -0.3, 0.7).min(close(c.humidity, 0.6, 0.35)) * 0.05,
+                Some((48.0, 0.6)),
+            )
+        }),
+        (PinkFlower, |c| {
+            (
+                close(c.temp, 0.15, 0.5).min(close(c.humidity, 0.6, 0.35)) * 0.05,
+                Some((48.0, 0.6)),
+            )
+        }),
+        (DeadBush, |c| {
+            (
+                close(c.temp, 0.8, 0.3).min(close(c.humidity, 0.0, 0.4)) * 0.015,
+                None,
+            )
+        }),
         (Twigs, |c| ((c.tree_density - 0.5).max(0.0) * 0.0025, None)),
         (Stones, |c| ((c.rockiness - 0.5).max(0.0) * 0.005, None)),
+        (ShortGrass, |c| {
+            (
+                close(c.temp, 0.3, 0.4).min(close(c.humidity, 0.6, 0.35)) * 0.05,
+                Some((48.0, 0.4)),
+            )
+        }),
+        (MediumGrass, |c| {
+            (
+                close(c.temp, 0.0, 0.6).min(close(c.humidity, 0.6, 0.35)) * 0.05,
+                Some((48.0, 0.2)),
+            )
+        }),
+        (LongGrass, |c| {
+            (
+                close(c.temp, 0.4, 0.4).min(close(c.humidity, 0.8, 0.2)) * 0.05,
+                Some((48.0, 0.1)),
+            )
+        }),
+        (GrassSnow, |c| {
+            (
+                close(c.temp, -0.4, 0.4).min(close(c.rockiness, 0.0, 0.5)),
+                Some((48.0, 0.6)),
+            )
+        }),
     ];
 
     for y in 0..vol.size_xy().y as i32 {
@@ -52,29 +92,38 @@ pub fn apply_scatter_to<'a>(
                 continue;
             };
 
-            let bk = scatter
-                .iter()
-                .enumerate()
-                .find_map(|(i, (bk, f))| {
-                    let (density, patch) = f(chunk);
-                    if density <= 0.0 || patch.map(|(wavelen, threshold)| index
-                        .noise
-                        .scatter_nz
-                        .get(wpos2d.map(|e| e as f64 / wavelen as f64 + i as f64 * 43.0).into_array()) < threshold as f64)
+            let bk = scatter.iter().enumerate().find_map(|(i, (bk, f))| {
+                let (density, patch) = f(chunk);
+                if density <= 0.0
+                    || patch
+                        .map(|(wavelen, threshold)| {
+                            index.noise.scatter_nz.get(
+                                wpos2d
+                                    .map(|e| e as f64 / wavelen as f64 + i as f64 * 43.0)
+                                    .into_array(),
+                            ) < threshold as f64
+                        })
                         .unwrap_or(false)
-                        || !RandomField::new(i as u32).chance(Vec3::new(wpos2d.x, wpos2d.y, 0), density)
-                    {
-                        None
-                    } else {
-                        Some(*bk)
-                    }
-                });
+                    || !RandomField::new(i as u32).chance(Vec3::new(wpos2d.x, wpos2d.y, 0), density)
+                {
+                    None
+                } else {
+                    Some(*bk)
+                }
+            });
 
             if let Some(bk) = bk {
                 let mut z = col_sample.alt as i32 - 4;
                 for _ in 0..8 {
-                    if vol.get(Vec3::new(offs.x, offs.y, z)).map(|b| !b.is_solid()).unwrap_or(true) {
-                        let _ = vol.set(Vec3::new(offs.x, offs.y, z), Block::new(bk, Rgb::broadcast(0)));
+                    if vol
+                        .get(Vec3::new(offs.x, offs.y, z))
+                        .map(|b| !b.is_solid())
+                        .unwrap_or(true)
+                    {
+                        let _ = vol.set(
+                            Vec3::new(offs.x, offs.y, z),
+                            Block::new(bk, Rgb::broadcast(0)),
+                        );
                         break;
                     }
                     z += 1;
@@ -295,57 +344,61 @@ pub fn apply_caves_supplement<'a>(
                 if RandomField::new(index.seed).chance(wpos2d.into(), 0.00005)
                     && cave_base < surface_z as i32 - 40
                 {
-                    let entity = EntityInfo::at(Vec3::new(wpos2d.x as f32, wpos2d.y as f32, cave_base as f32))
-                        .with_alignment(comp::Alignment::Enemy)
-                        .with_body(match rng.gen_range(0, 6) {
-                            0 => {
-                                let species = match rng.gen_range(0, 2) {
-                                    0 => comp::quadruped_small::Species::Truffler,
-                                    _ => comp::quadruped_small::Species::Hyena,
-                                };
-                                comp::quadruped_small::Body::random_with(rng, &species).into()
-                            },
-                            1 => {
-                                let species = match rng.gen_range(0, 3) {
-                                    0 => comp::quadruped_medium::Species::Tarasque,
-                                    1 => comp::quadruped_medium::Species::Frostfang,
-                                    _ => comp::quadruped_medium::Species::Bonerattler,
-                                };
-                                comp::quadruped_medium::Body::random_with(rng, &species).into()
-                            },
-                            2 => {
-                                let species = match rng.gen_range(0, 3) {
-                                    0 => comp::quadruped_low::Species::Maneater,
-                                    1 => comp::quadruped_low::Species::Rocksnapper,
-                                    _ => comp::quadruped_low::Species::Salamander,
-                                };
-                                comp::quadruped_low::Body::random_with(rng, &species).into()
-                            },
-                            3 => {
-                                let species = match rng.gen_range(0, 3) {
-                                    0 => comp::critter::Species::Fungome,
-                                    1 => comp::critter::Species::Axolotl,
-                                    _ => comp::critter::Species::Rat,
-                                };
-                                comp::critter::Body::random_with(rng, &species).into()
-                            },
-                            4 => {
-                                let species = match rng.gen_range(0, 1) {
-                                    _ => comp::golem::Species::StoneGolem,
-                                };
-                                comp::golem::Body::random_with(rng, &species).into()
-                            },
-                            _ => {
-                                let species = match rng.gen_range(0, 4) {
-                                    0 => comp::biped_large::Species::Ogre,
-                                    1 => comp::biped_large::Species::Cyclops,
-                                    2 => comp::biped_large::Species::Wendigo,
-                                    _ => comp::biped_large::Species::Troll,
-                                };
-                                comp::biped_large::Body::random_with(rng, &species).into()
-                            },
-                        })
-                        .with_automatic_name();
+                    let entity = EntityInfo::at(Vec3::new(
+                        wpos2d.x as f32,
+                        wpos2d.y as f32,
+                        cave_base as f32,
+                    ))
+                    .with_alignment(comp::Alignment::Enemy)
+                    .with_body(match rng.gen_range(0, 6) {
+                        0 => {
+                            let species = match rng.gen_range(0, 2) {
+                                0 => comp::quadruped_small::Species::Truffler,
+                                _ => comp::quadruped_small::Species::Hyena,
+                            };
+                            comp::quadruped_small::Body::random_with(rng, &species).into()
+                        },
+                        1 => {
+                            let species = match rng.gen_range(0, 3) {
+                                0 => comp::quadruped_medium::Species::Tarasque,
+                                1 => comp::quadruped_medium::Species::Frostfang,
+                                _ => comp::quadruped_medium::Species::Bonerattler,
+                            };
+                            comp::quadruped_medium::Body::random_with(rng, &species).into()
+                        },
+                        2 => {
+                            let species = match rng.gen_range(0, 3) {
+                                0 => comp::quadruped_low::Species::Maneater,
+                                1 => comp::quadruped_low::Species::Rocksnapper,
+                                _ => comp::quadruped_low::Species::Salamander,
+                            };
+                            comp::quadruped_low::Body::random_with(rng, &species).into()
+                        },
+                        3 => {
+                            let species = match rng.gen_range(0, 3) {
+                                0 => comp::critter::Species::Fungome,
+                                1 => comp::critter::Species::Axolotl,
+                                _ => comp::critter::Species::Rat,
+                            };
+                            comp::critter::Body::random_with(rng, &species).into()
+                        },
+                        4 => {
+                            let species = match rng.gen_range(0, 1) {
+                                _ => comp::golem::Species::StoneGolem,
+                            };
+                            comp::golem::Body::random_with(rng, &species).into()
+                        },
+                        _ => {
+                            let species = match rng.gen_range(0, 4) {
+                                0 => comp::biped_large::Species::Ogre,
+                                1 => comp::biped_large::Species::Cyclops,
+                                2 => comp::biped_large::Species::Wendigo,
+                                _ => comp::biped_large::Species::Troll,
+                            };
+                            comp::biped_large::Body::random_with(rng, &species).into()
+                        },
+                    })
+                    .with_automatic_name();
 
                     supplement.add_entity(entity);
                 }