package Ġfe . k art if ice . impl Ċ Ċ import Ġcom . google . gson . Gson Builder Ċ import Ġcom . google . gson . Json Element Ċ import Ġcom . google . gson . JsonObject Ċ import Ġcom . s word glow s blue . art if ice . common . Art if ice Registry Ċ import Ġfe . k art if ice . Client Resource Pack Builder Ċ import Ġfe . k art if ice . K Art if ice Resource Pack Ċ import Ġfe . k art if ice . Resource Pack Builder Ċ import Ġfe . k art if ice . Server Resource Pack Builder Ċ import Ġfe . k art if ice . builder . Builder Transform Ċ import Ġfe . k art if ice . builder . JsonObject Builder Ċ import Ġfe . k art if ice . builder . Typed Json Builder Ċ import Ġfe . k art if ice . builder . assets .* Ċ import Ġfe . k art if ice . builder . data . Advance ment Builder Ċ import Ġfe . k art if ice . builder . data . Lo ot Table Builder Ċ import Ġfe . k art if ice . builder . data . Tag Builder Ċ import Ġfe . k art if ice . builder . data . recipe .* Ċ import Ġfe . k art if ice . resource . Json Resource Ċ import Ġfe . k art if ice . resource . K Art if ice Resource Ċ import Ġfe . k art if ice . util . Id Utils Ċ import Ġfe . k art if ice . virtual pack . K Art if ice Resource Pack Container Ċ import Ġnet . fabric mc . api . Env Type Ċ import Ġnet . fabric mc . api . Environment Interface Ċ import Ġnet . minecraft . Shared Constants Ċ import Ġnet . minecraft . client . resource . Client Resource Pack Profile Ċ import Ġnet . minecraft . client . resource . language . Language Definition Ċ import Ġnet . minecraft . resource . Resource Pack Profile Ċ import Ġnet . minecraft . resource . ResourceType Ċ import Ġnet . minecraft . resource . metadata . Resource Metadata Reader Ċ import Ġnet . minecraft . util . Identifier Ċ import Ġorg . apache . commons . io . input . Null InputStream Ċ import Ġorg . apache . logging . log 4 j . Log Manager Ċ import Ġjava . io .* Ċ import Ġjava . util .* Ċ import Ġjava . util . function . Predicate Ċ import Ġjava . util . function . Supplier Ċ Ċ class ĠK Art if ice Resource Pack Impl < T Ġ: ĠResource Pack Builder >( ĊĠĠĠ Ġoverride Ġval Ġtype : ĠResource Type , ĊĠĠĠ Ġprivate Ġval Ġid : ĠIdentifier , ĊĠĠĠ Ġregister Resources : ĠT . () Ġ-> ĠUnit Ċ ) Ġ: ĠK Art if ice Resource Pack Ġ{ ĊĠĠĠ Ġprivate Ġval Ġnamespaces : ĠMutable Set < String > Ġ= Ġmutable Set Of () ĊĠĠĠ Ġprivate Ġval Ġresources : ĠMutable Map < Identifier , ĠK Art if ice Resource <* >> Ġ= Ġmutable Map Of () ĊĠĠĠ Ġprivate Ġval Ġlanguages : ĠMutable Set < Language Definition > Ġ= Ġmutable Set Of () ĊĠĠĠ Ġprivate Ġval Ġmetadata : ĠJson Resource < JsonObject > Ċ // ĠĠĠ Ġprivate Ġvar Ġtransforms : ĠList < Builder Transform <* >> Ġ= ĠBuilder Transform . Default Transforms ĊĊĠĠĠ Ġ// TODO : Ġremove Ġtransforms Ġentirely ĊĠĠĠ Ġoverride Ġfun Ġset Transforms ( transforms : ĠList < Builder Transform <* >>) Ġ{ Ċ // ĠĠĠĠĠĠĠ Ġthis . transforms Ġ= Ġtransforms ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġvar Ġdescription : ĠString ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar ĠdisplayName : ĠString ? Ġ= Ġnull ĊĠĠĠ Ġoverride Ġvar Ġis Optional : ĠBoolean Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġprivate Ġset ĊĠĠĠ Ġoverride Ġvar Ġis Visible : ĠBoolean Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġprivate Ġset ĊĊĠĠĠ Ġ@ Environment Interface ( ĊĠĠĠĠĠĠĠ Ġvalue Ġ= ĠEnv Type . CLIENT , ĊĠĠĠĠĠĠĠ Ġit f Ġ= ĠClient Resource Pack Builder :: class ĊĠĠĠ Ġ) ĊĠĠĠ Ġprivate Ġinner Ġclass ĠArt if ice Resource Pack Builder Ġ: ĠClient Resource Pack Builder , ĊĠĠĠĠĠĠĠ ĠServer Resource Pack Builder Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġset DisplayName ( name : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠdisplayName Ġ= Ġname ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġset Description ( desc : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdescription Ġ= Ġdesc ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġset Visible () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis Visible Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġset Optional () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis Optional Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis Visible Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġadd ( id : ĠIdentifier , Ġresource : ĠK Art if ice Resource <* >) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresources [ id ] Ġ= Ġresource ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnamespaces . add ( id . namespace ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġadd Item Model ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġid : ĠIdentifier , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġparent : ĠIdentifier ?, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġf : ĠModel Builder . () Ġ-> ĠUnit ĊĠĠĠĠĠĠĠ Ġ) Ġ= Ġadd Json (" models / item /", Ġid , ĠModel Builder (), Ġf ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġparent ?. let Ġ{ Ġparent ( it ) Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġadd Block Model ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġid : ĠIdentifier , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġparent : ĠIdentifier ?, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġf : ĠModel Builder . () Ġ-> ĠUnit ĊĠĠĠĠĠĠĠ Ġ): ĠIdentifier Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadd Json (" models / block /", Ġid , ĠModel Builder (), Ġf ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġparent ?. let Ġ{ Ġparent ( it ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġid ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġadd Model ( id : ĠIdentifier , Ġparent : ĠIdentifier ?, Ġf : ĠModel Builder . () Ġ-> ĠUnit ) Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadd Json (" models /", Ġid , ĠModel Builder (), Ġf ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġparent ?. let Ġ{ Ġparent ( it ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}. run Ġ{ Ġid Ġ} ĊĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġadd BlockState ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġid : ĠIdentifier , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġf : ĠBlock State Builder . () Ġ-> ĠUnit ĊĠĠĠĠĠĠĠ Ġ) Ġ= Ġadd Json (" block states /", Ġid , ĠBlock State Builder (), Ġf ). run Ġ{ Ġid Ġ} ĊĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġadd Translations ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġid : ĠIdentifier , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġf : ĠTranslation Builder . () Ġ-> ĠUnit ĊĠĠĠĠĠĠĠ Ġ) Ġ= Ġadd Json (" lang /", Ġid , ĠTranslation Builder (), Ġf ) ĊĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġadd Particle ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġid : ĠIdentifier , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġf : ĠParticle Builder . () Ġ-> ĠUnit ĊĠĠĠĠĠĠĠ Ġ) Ġ= Ġadd Json (" particles /", Ġid , ĠParticle Builder (), Ġf ) ĊĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġadd Item Animation ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġid : ĠIdentifier , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġf : ĠAnimation Builder . () Ġ-> ĠUnit ĊĠĠĠĠĠĠĠ Ġ) Ġ= Ġadd Mc meta (" textures / item /", Ġid , ĠAnimation Builder (), Ġf ) ĊĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġadd Block Animation ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġid : ĠIdentifier , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġf : ĠAnimation Builder . () Ġ-> ĠUnit ĊĠĠĠĠĠĠĠ Ġ) Ġ= Ġadd Mc meta ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" textures / block /", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġid , ĠAnimation Builder (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġf ĊĠĠĠĠĠĠĠ Ġ) ĊĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġadd Language ( def : ĠLanguage Definition ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlanguages . add ( def ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġadd Language ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcode : ĠString , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġregion : ĠString , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġname : ĠString , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrtl : ĠBoolean ĊĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . add Language ( Language Definition ( code , Ġregion , Ġname , Ġrtl )) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġadd Advance ment ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġid : ĠIdentifier , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġf : ĠAdv ance ment Builder . () Ġ-> ĠUnit ĊĠĠĠĠĠĠĠ Ġ) Ġ= Ġadd Json (" advance ments /", Ġid , ĠAdv ance ment Builder (), Ġf ) ĊĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġadd Lo ot Table ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġid : ĠIdentifier , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġf : ĠL oot Table Builder . () Ġ-> ĠUnit ĊĠĠĠĠĠĠĠ Ġ) Ġ= Ġadd Json (" loot _ tables /", Ġid , ĠL oot Table Builder (), Ġf ) ĊĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġadd Item Tag ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġid : ĠIdentifier , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġf : ĠTag Builder . () Ġ-> ĠUnit ĊĠĠĠĠĠĠĠ Ġ) Ġ= Ġadd Json (" tags / items /", Ġid , ĠTag Builder (), Ġf ) ĊĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġadd Block Tag ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġid : ĠIdentifier , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġf : ĠTag Builder . () Ġ-> ĠUnit ĊĠĠĠĠĠĠĠ Ġ) Ġ= Ġadd Json (" tags / blocks /", Ġid , ĠTag Builder (), Ġf ) ĊĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġadd EntityType Tag ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġid : ĠIdentifier , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġf : ĠTag Builder . () Ġ-> ĠUnit ĊĠĠĠĠĠĠĠ Ġ) Ġ= Ġadd Json (" tags / entity _ types /", Ġid , ĠTag Builder (), Ġf ) ĊĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġadd Fluid Tag ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġid : ĠIdentifier , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġf : ĠTag Builder . () Ġ-> ĠUnit ĊĠĠĠĠĠĠĠ Ġ) Ġ= Ġadd Json (" tags / fluid s /", Ġid , ĠTag Builder (), Ġf ) ĊĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġadd Function Tag ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġid : ĠIdentifier , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġf : ĠTag Builder . () Ġ-> ĠUnit ĊĠĠĠĠĠĠĠ Ġ) Ġ= Ġadd Json (" tags / functions /", Ġid , ĠTag Builder (), Ġf ) ĊĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġadd Generic Recipe ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġid : ĠIdentifier , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġf : ĠGeneric Recipe Builder . () Ġ-> ĠUnit ĊĠĠĠĠĠĠĠ Ġ) Ġ= Ġadd Json (" recipes /", Ġid , ĠGeneric Recipe Builder (), Ġf ) ĊĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġadd Sh aped Recipe ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġid : ĠIdentifier , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġf : ĠSh aped Recipe Builder . () Ġ-> ĠUnit ĊĠĠĠĠĠĠĠ Ġ) Ġ= Ġadd Json (" recipes /", Ġid , ĠSh aped Recipe Builder (), Ġf ) ĊĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġadd Shape less Recipe ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġid : ĠIdentifier , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġf : ĠShape less Recipe Builder . () Ġ-> ĠUnit ĊĠĠĠĠĠĠĠ Ġ) Ġ= Ġadd Json (" recipes /", Ġid , ĠShape less Recipe Builder (), Ġf ) ĊĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġadd Stone cut ting Recipe ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġid : ĠIdentifier , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġf : ĠSt one cut ting Recipe Builder . () Ġ-> ĠUnit ĊĠĠĠĠĠĠĠ Ġ) Ġ= Ġadd Json (" recipes /", Ġid , ĠSt one cut ting Recipe Builder (), Ġf ) ĊĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġadd S mel ting Recipe ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġid : ĠIdentifier , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġf : ĠCook ing Recipe Builder . () Ġ-> ĠUnit ĊĠĠĠĠĠĠĠ Ġ) Ġ= Ġadd Json (" recipes /", Ġid , ĠCook ing Recipe Builder ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtype ( Identifier (" s mel ting ")) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġf () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġadd B last ing Recipe ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġid : ĠIdentifier , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġf : ĠCook ing Recipe Builder . () Ġ-> ĠUnit ĊĠĠĠĠĠĠĠ Ġ) Ġ= Ġadd Json (" recipes /", Ġid , ĠCook ing Recipe Builder ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtype ( Identifier (" blast ing ")) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġf () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġadd S mo king Recipe ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġid : ĠIdentifier , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġf : ĠCook ing Recipe Builder . () Ġ-> ĠUnit ĊĠĠĠĠĠĠĠ Ġ) Ġ= Ġadd Json (" recipes /", Ġid , ĠCook ing Recipe Builder ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtype ( Identifier (" smo king ")) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġf () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġadd Camp fire Recipe ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġid : ĠIdentifier , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġf : ĠCook ing Recipe Builder . () Ġ-> ĠUnit ĊĠĠĠĠĠĠĠ Ġ) Ġ= Ġadd Json (" recipes /", Ġid , ĠCook ing Recipe Builder ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtype ( Identifier (" camp fire _ cook ing ")) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġf () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġprivate Ġinline Ġfun Ġ< T Ġ: ĠTyped Json Builder < out ĠJson Resource <* >>> Ġadd Mc meta ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpath : ĠString , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġid : ĠIdentifier , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġobj : ĠT , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinit : ĠT . () Ġ-> ĠUnit Ġ= Ġ{} ĊĠĠĠĠĠĠĠ Ġ) Ġ= Ġadd Any Ext (". mc meta ", Ġpath , Ġid , Ġobj , Ġinit ) ĊĊĊĠĠĠĠĠĠĠ Ġprivate Ġinline Ġfun Ġ< T Ġ: ĠTyped Json Builder < out ĠJson Resource <* >>> Ġadd Json ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpath : ĠString , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġid : ĠIdentifier , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġobj : ĠT , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinit : ĠT . () Ġ-> ĠUnit Ġ= Ġ{}, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadditional Init : ĠT . () Ġ-> ĠUnit Ġ= Ġ{} ĊĠĠĠĠĠĠĠ Ġ) Ġ= Ġadd Any Ext (". json ", Ġpath , Ġid , Ġobj , Ġinit , Ġadditional Init ) Ċ Ċ // ĠĠĠĠĠĠĠ Ġprivate Ġinline Ġfun Ġ< T Ġ: ĠTyped Json Builder < out ĠJson Resource <* >>> Ġadd Json ( Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġpath : ĠString , Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġid : ĠIdentifier , Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġobj : ĠT , Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġinit : ĠT . () Ġ-> ĠUnit Ġ= Ġ{} Ċ // ĠĠĠĠĠĠĠ Ġ) Ġ= Ġadd Any Ext (". json ", Ġpath , Ġid , Ġobj , Ġinit ) ĊĊĠĠĠĠĠĠĠ Ġprivate Ġinline Ġfun Ġ< T Ġ: ĠTyped Json Builder < out ĠJson Resource <* >>> Ġadd Any Ext ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġext : ĠString , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpath : ĠString , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġid : ĠIdentifier , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġobj : ĠT , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinit : ĠT . () Ġ-> ĠUnit , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadditional Init : ĠT . () Ġ-> ĠUnit Ġ= Ġ{} ĊĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . add ( Id Utils . wrap Path ( path , Ġid , Ġext ), Ġobj . apply Ġ{ Ġinit (); additional Init () Ġ}. build ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġopen Root ( fname : ĠString ): ĠInputStream Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( fname Ġ== Ġ" pack . mc meta ") Ġmetadata . to InputStream () Ġelse ĠNull InputStream ( 0 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Throws ( IOException :: class ) ĊĠĠĠ Ġoverride Ġfun Ġopen ( type : ĠResource Type , Ġid : ĠIdentifier ): ĠInputStream Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ(! contains ( type , Ġid )) Ġthrow ĠFileNotFoundException ( id . path ) ĊĠĠĠĠĠĠĠ Ġreturn Ġresources [ id ] !!. to InputStream () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġfind Resources ( ĊĠĠĠĠĠĠĠ Ġtype : ĠResource Type , ĊĠĠĠĠĠĠĠ Ġnamespace : ĠString , ĊĠĠĠĠĠĠĠ Ġprefix : ĠString , ĊĠĠĠĠĠĠĠ Ġmax Depth : ĠInt , ĊĠĠĠĠĠĠĠ Ġpath Filter : ĠPredicate < String > ĊĠĠĠ Ġ): ĠCollection < Identifier > Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( type Ġ!= Ġthis . type ) Ġreturn ĠHashSet () ĊĠĠĠĠĠĠĠ Ġval Ġkeys : ĠMutable Set < Identifier > Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠHashSet ( resources . keys ) ĊĠĠĠĠĠĠĠ Ġkeys . remove If Ġ{ Ġid : ĠIdentifier Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ! id . path . startsWith ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprefix ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ|| Ġ! path Filter . test ( id . path ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġkeys ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġcontains ( type : ĠResource Type , Ġid : ĠIdentifier ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġtype Ġ== Ġthis . type Ġ&& Ġresources . containsKey ( id ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġ< T > Ġparse Metadata ( reader : ĠResource Metadata Reader < T >): ĠT ? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( metadata . data . has ( reader . key )) Ġreader . fromJson ( metadata . data . getAs JsonObject ( reader . key )) Ġelse Ġnull ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠgetName spaces ( type : ĠResource Type ): ĠSet < String > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠHashSet ( namespaces ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġclose () Ġ{} ĊĠĠĠ Ġoverride Ġfun ĠgetName (): ĠString Ġ= ĠdisplayName Ġ?: Ġrun Ġ{ ĊĠĠĠĠĠĠĠ Ġwhen Ġ( type ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠResource Type . CLIENT _ RESOURCES Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġaid Ġ= ĠArt if ice Registry . AS SETS . getId ( this ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġaid ?. toString () Ġ?: Ġ" Generated ĠResources ". also Ġ{ ĠdisplayName Ġ= Ġit Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠResource Type . SERVER _ DATA Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdid Ġ= ĠArt if ice Registry . DATA . getId ( this ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdid ?. toString () Ġ?: Ġ" Generated ĠData ". also Ġ{ ĠdisplayName Ġ= Ġit Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġ< T Ġ: ĠResource Pack Profile > Ġto Client Resource Pack Profile ( factory : ĠResource Pack Profile . Factory < T >): ĠClient Resource Pack Profile Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠK Art if ice Resource Pack Container ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis Optional , Ġis Visible , ĠResource Pack Profile . of < T >( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġid . toString (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfalse , ĠSupplier Ġ{ Ġthis Ġ}, Ġfactory , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( is Optional ) ĠResource Pack Profile . Insertion Position . TOP Ġelse ĠResource Pack Profile . Insertion Position . BOTTOM ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ?: Ġerror (" Could Ġnot Ġcreate Ġ") ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġ< T Ġ: ĠResource Pack Profile > Ġto Server Resource Pack Profile ( factory : ĠResource Pack Profile . Factory < T >): ĠResource Pack Profile Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠResource Pack Profile . of < T >( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġid . toString (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfalse , ĠSupplier Ġ{ Ġthis Ġ}, Ġfactory , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠResource Pack Profile . Insertion Position . BOTTOM ĊĠĠĠĠĠĠĠ Ġ) Ġ?: Ġerror (" Could Ġnot Ġcreate Ġserver Ġresource Ġpack Ġprofile ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Throws ( IOException :: class , ĠIllegalArgumentException :: class ) ĊĠĠĠ Ġoverride Ġfun Ġdump Resources ( folder Path : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ ĠLog Manager . getLogger () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. info ("[ Art if ice ] ĠDumping Ġ" Ġ+ Ġname Ġ+ Ġ" Ġ" Ġ+ Ġtype . directory Ġ+ Ġ" Ġto Ġ" Ġ+ Ġfolder Path Ġ+ Ġ", Ġthis Ġmay Ġtake Ġa Ġwhile .") ĊĠĠĠĠĠĠĠ Ġval Ġdir Ġ= ĠFile ( folder Path ) ĊĠĠĠĠĠĠĠ Ġif Ġ(! dir . exists () Ġ&& Ġ! dir . mkdir s ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠIOException (" Can 't Ġdump Ġresources Ġto Ġ$ folder Path ; Ġcouldn 't Ġcreate Ġparent Ġdirectories ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġrequire ( dir . isDirectory ) Ġ{ Ġ" Can 't Ġdump Ġresources Ġto Ġ$ folder Path Ġas Ġit 's Ġnot Ġa Ġdirectory " Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ(! dir . can Write ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠIOException (" Can 't Ġdump Ġresources Ġto Ġ$ folder Path ; Ġpermission Ġdenied ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġwrite Resource File ( File ("$ folder Path / pack . mc meta "), Ġmetadata ) ĊĠĠĠĠĠĠĠ Ġresources . forEach Ġ{ Ġ( id : ĠIdentifier , Ġresource : ĠK Art if ice Resource <* >) Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpath Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠString . format ("./ % s /% s /% s /% s ", Ġfolder Path , Ġtype . directory , Ġid . namespace , Ġid . path ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwrite Resource File ( File ( path ), Ġresource ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ ĠLog Manager . getLogger () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. info ("[ Art if ice ] ĠFinished Ġdump ing Ġ" Ġ+ Ġname Ġ+ Ġ" Ġ" Ġ+ Ġtype . directory Ġ+ Ġ". ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġwrite Resource File ( output : ĠFile , Ġresource : ĠK Art if ice Resource <* >) Ġ{ ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( output . parent File . exists () Ġ|| Ġoutput . parent File . mkdir s ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġwriter Ġ= ĠBuffered Writer ( FileWriter ( output )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdata Ġ= Ġresource . data ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( data Ġis ĠJson Element ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġgson Ġ= ĠGson Builder (). set Pretty Print ing (). create () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwriter . write ( gson . toJson ( data )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwriter . write ( resource . data . toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwriter . close () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠIOException (" Failed Ġto Ġdump Ġresource Ġfile Ġ" Ġ+ Ġoutput . path Ġ+ Ġ"; Ġcouldn 't Ġcreate Ġparent Ġdirectories ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠIOException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġe . printStackTrace () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġregister Resources ( Art if ice Resource Pack Builder () Ġas ĠT ) ĊĠĠĠĠĠĠĠ Ġval Ġpack Meta Ġ= ĠJsonObject Builder () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. add (" pack _ format ", ĠShared Constants . get Game Version (). pack Version ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. add (" description ", Ġif Ġ( description Ġ!= Ġnull ) Ġdescription !! Ġelse Ġ" In - memory Ġresource Ġpack Ġcreated Ġwith ĠArt if ice ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠĠĠĠĠ Ġval Ġlanguage Meta Ġ= ĠJsonObject () ĊĠĠĠĠĠĠĠ Ġfor Ġ( def Ġin Ġlanguages ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlanguage Meta . add ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdef . code , ĠJsonObject Builder () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. add (" name ", Ġdef . name ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. add (" region ", Ġdef . region ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. add (" bid irectional ", Ġdef . is Right To Left ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġbuilder Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠJsonObject Builder () ĊĠĠĠĠĠĠĠ Ġbuilder . add (" pack ", Ġpack Meta ) ĊĠĠĠĠĠĠĠ Ġif Ġ( languages . size Ġ> Ġ 0 ) Ġbuilder . add (" language ", Ġlanguage Meta ) ĊĠĠĠĠĠĠĠ Ġmetadata Ġ= ĠJson Resource ( builder . build ()) ĊĠĠĠ Ġ} Ċ }