package Ġnet . ad ri ant od t . wing ed . recipe Ċ Ċ import Ġcom . google . gson . JsonObject Ċ import Ġnet . ad ri ant od t . wing ed . identifier Ċ import Ġnet . ad ri ant od t . wing ed . mixin . Sh aped Recipe Accessor Ċ import Ġnet . ad ri ant od t . wing ed . screen . W ing Bench Craft ing Inventory Ċ import Ġnet . minecraft . item . ItemStack Ċ import Ġnet . minecraft . network . Packet Byte Buf Ċ import Ġnet . minecraft . recipe .* Ċ import Ġnet . minecraft . util . Identifier Ċ import Ġnet . minecraft . util . Json Helper Ċ import Ġnet . minecraft . util . collection . Default edList Ċ import Ġnet . minecraft . world . World Ċ Ċ class ĠW ing Recipe ( ĊĠĠĠ Ġprivate Ġval Ġid : ĠIdentifier , ĊĠĠĠ Ġval Ġinputs : ĠDefault edList < Ingredient >, ĊĠĠĠ Ġprivate Ġval Ġoutput : ĠItemStack Ċ ) Ġ: ĠRecipe < W ing Bench Craft ing Inventory > Ġ{ ĊĊĠĠĠ Ġoverride Ġfun Ġmatches ( inv : ĠW ing Bench Craft ing Inventory , Ġworld : ĠWorld ?): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 0 Ġuntil Ġ 7 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! inputs [ i ]. test ( inv . get Stack ( i ))) Ġreturn Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġcraft ( inv : ĠW ing Bench Craft ing Inventory ?): ĠItemStack Ġ= Ġoutput . copy () ĊĊĠĠĠ Ġoverride Ġfun Ġfits ( width : ĠInt , Ġheight : ĠInt ): ĠBoolean Ġ= Ġtrue ĊĊĠĠĠ Ġoverride Ġfun Ġget Output (): ĠItemStack Ġ= Ġoutput ĊĊĠĠĠ Ġoverride Ġfun ĠgetId (): ĠIdentifier Ġ= Ġid ĊĊĠĠĠ Ġoverride Ġfun Ġget Serializer (): ĠRecipe Serializer < *> Ġ= ĠSERIAL IZER ĊĊĠĠĠ Ġoverride Ġfun ĠgetType (): ĠRecipe Type < *> Ġ= ĠTYPE ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġval ĠTYPE Ġ= Ġobject Ġ: ĠRecipe Type < W ing Recipe > Ġ{} ĊĠĠĠĠĠĠĠ Ġval ĠSERIAL IZER Ġ= ĠSerializer () ĊĠĠĠĠĠĠĠ Ġval ĠID Ġ= Ġidentifier (" wing recipe ") ĊĊĠĠĠĠĠĠĠ Ġclass ĠSerializer Ġ: ĠRecipe Serializer < W ing Recipe > Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġread ( identifier : ĠIdentifier , ĠjsonObject : ĠJsonObject ?): ĠW ing Recipe Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmap Ġ= ĠSh aped Recipe Accessor . wing ed _ get Components ( Json Helper . getObject ( jsonObject , Ġ" key ")) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġstrings Ġ= ĠSh aped Recipe Accessor . wing ed _ combine Pattern (* Sh aped Recipe Accessor . wing ed _ get Pattern ( Json Helper . get Array ( jsonObject , Ġ" pattern "))) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġi Ġ= Ġstrings [ 0 ]. length ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġj Ġ= Ġstrings . size ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdefault edList Ġ= ĠSh aped Recipe Accessor . wing ed _ get Ing redients ( strings , Ġmap , Ġi , Ġj ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġassert ( default edList [ 4 ]. isEmpty ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// sil ently Ġignoring Ġit Ġbecause Ġi Ġdon 't Ġwant Ġto Ġmodify Ġevery Ġrecipe ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// assert ( default edList [ 7 ]. isEmpty ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġactual Ġ= ĠDefault edList . of Size ( 7 , ĠIng redient . EMPTY ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdefault edList . forEach Indexed Ġ{ Ġindex , Ġing Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( index Ġ!= Ġ 7 Ġ&& Ġindex Ġ!= Ġ 4 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( index Ġ< Ġ 4 ) Ġactual [ index ] Ġ= Ġing ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġif Ġ( index Ġ< Ġ 7 ) Ġactual [ index Ġ- Ġ 1 ] Ġ= Ġing ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġactual [ index Ġ- Ġ 2 ] Ġ= Ġing ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġitem Stack Ġ= ĠSh aped Recipe . getItem Stack ( Json Helper . getObject ( jsonObject , Ġ" result ")) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠW ing Recipe ( identifier , Ġactual , Ġitem Stack ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġread ( identifier : ĠIdentifier , Ġpacket Byte Buf : ĠPacket Byte Buf ): ĠW ing Recipe Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdefault edList Ġ= ĠDefault edList . of Size ( 7 , ĠIng redient . EMPTY ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( k Ġin Ġdefault edList . indices ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdefault edList [ k ] Ġ= ĠIng redient . from Packet ( packet Byte Buf ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġitem Stack Ġ= Ġpacket Byte Buf . read ItemStack () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠW ing Recipe ( identifier , Ġdefault edList , Ġitem Stack ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġwrite ( packet Byte Buf : ĠPacket Byte Buf , Ġsh aped Recipe : ĠW ing Recipe ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġvar 3 : ĠIterator < *> Ġ= Ġsh aped Recipe . inputs . iterator () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhile Ġ( var 3 . hasNext ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġingredient Ġ= Ġvar 3 . next () Ġas ĠIng redient ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġingredient . write ( packet Byte Buf ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpacket Byte Buf . write ItemStack ( sh aped Recipe . output ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }