package Ġcom . github . hot m . client . block model . static Ċ Ċ import Ġcom . github . hot m . client . block model . B aked Model Layer Ċ import Ġcom . github . hot m . client . block model . util . Quad Pos Ċ import Ġnet . fabric mc . fabric . api . renderer . v 1 . Renderer Access Ċ import Ġnet . fabric mc . fabric . api . renderer . v 1 . material . Render Material Ċ import Ġnet . fabric mc . fabric . api . renderer . v 1 . mesh . Mesh Ċ import Ġnet . fabric mc . fabric . api . renderer . v 1 . mesh . Mutable Quad View Ċ import Ġnet . fabric mc . fabric . api . renderer . v 1 . mesh . Quad Emitter Ċ import Ġnet . fabric mc . fabric . api . renderer . v 1 . render . Render Context Ċ import Ġnet . minecraft . block . BlockState Ċ import Ġnet . minecraft . client . render . model . Model B ake Settings Ċ import Ġnet . minecraft . client . texture . Sprite Ċ import Ġnet . minecraft . item . ItemStack Ċ import Ġnet . minecraft . util . math . Block Pos Ċ import Ġnet . minecraft . util . math . Direction Ċ import Ġnet . minecraft . util . math . Math Helper Ċ import Ġnet . minecraft . world . Block Render View Ċ import Ġjava . util .* Ċ import Ġjava . util . function . Supplier Ċ Ċ class ĠStatic Model Layer ( private Ġval Ġmesh : ĠMesh ) Ġ: ĠB aked Model Layer Ġ{ ĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġfun Ġcreate Block ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrotation Container : ĠModel B ake Settings , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrender Material : ĠRender Material , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrotate : ĠBoolean , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġc ull Faces : ĠBoolean , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġside Depth : ĠFloat , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġface Depth : ĠFloat , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġquarter Faces : ĠBoolean , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdown : ĠSprite , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdown Tint Index : ĠInt , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġup : ĠSprite , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġup Tint Index : ĠInt , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnorth : ĠSprite , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnorth Tint Index : ĠInt , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsouth : ĠSprite , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsouth Tint Index : ĠInt , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwest : ĠSprite , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwest Tint Index : ĠInt , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġeast : ĠSprite , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġeast Tint Index : ĠInt ĊĠĠĠĠĠĠĠ Ġ): ĠStatic Model Layer Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġrenderer Ġ= ĠRenderer Access . INSTANCE . renderer !! ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmesh Builder Ġ= Ġrenderer . mesh Builder () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġemitter Ġ= Ġmesh Builder . emitter ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( normal Ġin ĠDirection . values ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsprite Ġ= Ġwhen Ġ( normal ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠDirection . DOWN Ġ-> Ġdown ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠDirection . UP Ġ-> Ġup ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠDirection . NORTH Ġ-> Ġnorth ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠDirection . SO UTH Ġ-> Ġsouth ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠDirection . WEST Ġ-> Ġwest ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠDirection . EAST Ġ-> Ġeast ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġt int Index Ġ= Ġwhen Ġ( normal ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠDirection . DOWN Ġ-> Ġdown Tint Index ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠDirection . UP Ġ-> Ġup Tint Index ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠDirection . NORTH Ġ-> Ġnorth Tint Index ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠDirection . SO UTH Ġ-> Ġsouth Tint Index ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠDirection . WEST Ġ-> Ġwest Tint Index ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠDirection . EAST Ġ-> Ġeast Tint Index ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( quarter Faces ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbuild Qu arter ed Face ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġemitter , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnormal , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrotation Container , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrender Material , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrotate , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġc ull Faces , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġside Depth , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġface Depth , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsprite , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġt int Index ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbuild Face ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġemitter , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnormal , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrotation Container , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrender Material , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrotate , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġc ull Faces , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġside Depth , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġface Depth , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsprite , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġt int Index , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠStatic Model Layer ( mesh Builder . build ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġprivate Ġfun ĠgetC orners ( side Depth : ĠFloat , Ġface Depth : ĠFloat ): ĠArray < Quad Pos > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdepth Clamp ed Ġ= ĠMath Helper . clamp ( side Depth , Ġ 0 . 0 f , Ġ 0 . 5 f ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdepth Max ed Ġ= Ġface Depth . coerce At Most ( 0 . 5 f ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠarrayOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠQuad Pos ( 0 . 0 f Ġ+ Ġdepth Clamp ed , Ġ 0 . 0 f Ġ+ Ġdepth Clamp ed , Ġ 0 . 5 f , Ġ 0 . 5 f , Ġdepth Max ed ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠQuad Pos ( 0 . 5 f , Ġ 0 . 0 f Ġ+ Ġdepth Clamp ed , Ġ 1 . 0 f Ġ- Ġdepth Clamp ed , Ġ 0 . 5 f , Ġdepth Max ed ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠQuad Pos ( 0 . 0 f Ġ+ Ġdepth Clamp ed , Ġ 0 . 5 f , Ġ 0 . 5 f , Ġ 1 . 0 f Ġ- Ġdepth Clamp ed , Ġdepth Max ed ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠQuad Pos ( 0 . 5 f , Ġ 0 . 5 f , Ġ 1 . 0 f Ġ- Ġdepth Clamp ed , Ġ 1 . 0 f Ġ- Ġdepth Clamp ed , Ġdepth Max ed ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġprivate Ġfun Ġbuild Qu arter ed Face ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġemitter : ĠQuad Emitter , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnormal : ĠDirection , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrotation Container : ĠModel B ake Settings , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrender Material : ĠRender Material , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrotate : ĠBoolean , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġc ull Faces : ĠBoolean , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġside Depth : ĠFloat , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġface Depth : ĠFloat , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsprite : ĠSprite , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġt int Index : ĠInt ĊĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcorners Ġ= ĠgetC orners ( side Depth , Ġface Depth ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( corner Ġin Ġcorners ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcorner . emit ( emitter , Ġnormal , Ġif Ġ( rotate ) Ġrotation Container Ġelse Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġput Quad Settings ( emitter , Ġrender Material , Ġt int Index , Ġsprite , Ġc ull Faces , Ġrotation Container , Ġnormal ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġprivate Ġfun Ġbuild Face ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġemitter : ĠQuad Emitter , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnormal : ĠDirection , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrotation Container : ĠModel B ake Settings , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrender Material : ĠRender Material , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrotate : ĠBoolean , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġc ull Faces : ĠBoolean , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġside Depth : ĠFloat , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġface Depth : ĠFloat , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsprite : ĠSprite , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġt int Index : ĠInt , ĊĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠQuad Pos ( 0 . 0 f Ġ+ Ġside Depth , Ġ 0 . 0 f Ġ+ Ġside Depth , Ġ 1 . 0 f Ġ- Ġside Depth , Ġ 1 . 0 f Ġ- Ġside Depth , Ġface Depth ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. emit ( emitter , Ġnormal , Ġif Ġ( rotate ) Ġrotation Container Ġelse Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġput Quad Settings ( emitter , Ġrender Material , Ġt int Index , Ġsprite , Ġc ull Faces , Ġrotation Container , Ġnormal ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġprivate Ġfun Ġput Quad Settings ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġemitter : ĠQuad Emitter , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrender Material : ĠRender Material , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġt int Index : ĠInt , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsprite : ĠSprite , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġc ull Faces : ĠBoolean , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrotation Container : ĠModel B ake Settings , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnormal : ĠDirection ĊĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġemitter . sprite Color ( 0 , Ġ- 1 , Ġ- 1 , Ġ- 1 , Ġ- 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġemitter . material ( render Material ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġemitter . color Index ( tint Index ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġemitter . sprite B ake ( 0 , Ġsprite , ĠMutable Quad View . BA KE _ NORMAL IZED ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġemitter . c ull Face ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( c ull Faces ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠDirection . transform ( rotation Container . rotation . matrix , Ġnormal ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġemitter . emit () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġemit Block Qu ads ( ĊĠĠĠĠĠĠĠ Ġblock View : ĠBlock Render View , ĊĠĠĠĠĠĠĠ Ġstate : ĠBlock State , ĊĠĠĠĠĠĠĠ Ġpos : ĠBlockPos , ĊĠĠĠĠĠĠĠ Ġrandom Supplier : ĠSupplier < Random >, ĊĠĠĠĠĠĠĠ Ġcontext : ĠRender Context ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġcontext . mesh Consumer (). accept ( mesh ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġemit Item Qu ads ( stack : ĠItemStack , Ġrandom Supplier : ĠSupplier < Random >, Ġcontext : ĠRender Context ) Ġ{ ĊĠĠĠĠĠĠĠ Ġcontext . mesh Consumer (). accept ( mesh ) ĊĠĠĠ Ġ} Ċ }