package Ġnet . mod cr after s . workbench . bench Ċ Ċ import Ġcom . google . gson . JsonObject Ċ import Ġnet . minecraft . item . craft ing . I Recipe Ċ import Ġnet . minecraftforge . common . craft ing . I Recipe Factory Ċ import Ġnet . minecraftforge . common . craft ing . Json Context Ċ import Ġnet . minecraftforge . common . craft ing . Craft ing Helper . Sh aped Pri mer Ċ import Ġnet . minecraft . util . Resource Location Ċ import Ġnet . mod cr after s . workbench . MOD _ ID Ċ Ċ import Ġnet . minecraftforge . ore dict . Sh aped O re Recipe Ċ import Ġnet . minecraft . item . ItemStack Ċ import Ġnet . minecraftforge . common . Forge Hooks Ċ import Ġnet . minecraftforge . event . Forge Event Factory Ċ import Ġnet . minecraft . client . Minecraft Ċ import Ġnet . minecraft . init . Items Ċ import Ġnet . minecraft . util . NonNull List Ċ import Ġnet . minecraft . inventory . Inventory Craft ing Ċ import Ġnet . minecraft . item . craft ing . Ingredient Ċ import Ġnet . minecraft . world . World Ċ import Ġnet . minecraftforge . regist ries . I Forge Registry Entry Ċ import Ġnet . minecraft . util . Json Utils Ċ import Ġjavax . annotation . Nullable ĊĊĊĊĊ Ċ class ĠRecipe Tool Ġ: ĠI Recipe Factory Ġ{ ĊĊĠĠĠ Ġoverride Ġfun Ġparse ( context : ĠJson Context ?, Ġjson : ĠJsonObject ?): ĠI Recipe Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġrecipe Ġ= ĠSh aped O re Recipe . factory ( context , Ġjson ) ĊĠĠĠĠĠĠĠ Ġval Ġprimer Ġ= ĠSh aped Pri mer () ĊĊĠĠĠĠĠĠĠ Ġprimer . width Ġ= Ġrecipe . width ĊĠĠĠĠĠĠĠ Ġprimer . height Ġ= Ġrecipe . height ĊĠĠĠĠĠĠĠ Ġprimer . mir rored Ġ= ĠJson Utils . getBoolean ( json , Ġ" mir rored ", Ġtrue ) ĊĠĠĠĠĠĠĠ Ġprimer . input Ġ= Ġrecipe . get Ing redients () ĊĊĊĠĠĠĠĠĠĠ Ġreturn ĠSh aped Tool Recipe ( Resource Location ( MOD _ ID , Ġ" sh aped _ tool _ recipe "), Ġrecipe . get Recipe Output (), Ġprimer ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġclass ĠSh aped Tool Recipe ( group : ĠResource Location , Ġprivate Ġval Ġrecipe Output : ĠItemStack , Ġprimer : ĠSh aped Pri mer ) Ġ: ĠI Forge Registry Entry . Impl < I Recipe >(), ĠI Recipe Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġrecipe Items : ĠList < Ingredient > ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġrecipe Width Ġ= Ġ 3 ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġrecipe Height Ġ= Ġ 3 ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠReturns Ġthe Ġsize Ġof Ġthe Ġrecipe Ġarea ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġval Ġrecipe Size : ĠInt ĊĠĠĠĠĠĠĠĠĠĠĠ Ġget () Ġ= Ġthis . recipe Items . size ĊĊĠĠĠĠĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . recipe Items Ġ= Ġprimer . input ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ@ Nullable ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġget Recipe Output (): ĠItemStack Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġthis . recipe Output ĊĠĠĠĠĠĠĠ Ġ} ĊĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠUsed Ġto Ġcheck Ġif Ġa Ġrecipe Ġmatches Ġcurrent Ġcraft ing Ġinventory ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġmatches ( inv : ĠInventory Craft ing , Ġworld In : ĠWorld ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 0 .. 3 Ġ- Ġthis . recipe Width ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( j Ġin Ġ 0 .. 3 Ġ- Ġthis . recipe Height ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( this . check Match ( inv , Ġi , Ġj , Ġtrue )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( this . check Match ( inv , Ġi , Ġj , Ġfalse )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠChecks Ġif Ġthe Ġregion Ġof Ġa Ġcraft ing Ġinventory Ġis Ġmatch Ġfor Ġthe Ġrecipe . ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġprivate Ġfun Ġcheck Match ( p _ 7 7 5 7 3 _ 1 _: ĠInventory Craft ing , Ġp _ 7 7 5 7 3 _ 2 _: ĠInt , Ġp _ 7 7 5 7 3 _ 3 _: ĠInt , Ġp _ 7 7 5 7 3 _ 4 _: ĠBoolean ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 0 .. 2 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( j Ġin Ġ 0 .. 2 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġk Ġ= Ġi Ġ- Ġp _ 7 7 5 7 3 _ 2 _ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġl Ġ= Ġj Ġ- Ġp _ 7 7 5 7 3 _ 3 _ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġingredient Ġ= ĠIng redient . EMPTY ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( k Ġ>= Ġ 0 Ġ&& Ġl Ġ>= Ġ 0 Ġ&& Ġk Ġ< Ġthis . recipe Width Ġ&& Ġl Ġ< Ġthis . recipe Height ) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen ( p _ 7 7 5 7 3 _ 4 _ ){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrue Ġ-> Ġingredient Ġ= Ġthis . recipe Items [ this . recipe Width Ġ- Ġk Ġ- Ġ 1 Ġ+ Ġl Ġ* Ġthis . recipe Width ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfalse Ġ-> Ġingredient Ġ= Ġthis . recipe Items [ k Ġ+ Ġl Ġ* Ġthis . recipe Width ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! ingredient . apply ( p _ 7 7 5 7 3 _ 1 _. get Stack In Row And Column ( i , Ġj ))) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠReturns Ġan ĠItem Ġthat Ġis Ġthe Ġresult Ġof Ġthis Ġrecipe ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġ@ Nullable ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġget Craft ing Result ( inv : ĠInventory Craft ing ): ĠItemStack Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġthis . recipe Output . copy () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġget Remaining Items ( inv : ĠInventory Craft ing ): ĠNon Null List < ItemStack > Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġa item stack Ġ= ĠNon Null List . with Size ( inv . size Inventory , ĠItemStack . EMPTY ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġa item stack . indices ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġitem stack Ġ= Ġinv . get Stack In Slot ( i ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! item stack . isEmpty ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( item stack . item Ġ=== ĠItems . SHE ARS ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġshe ars copy Ġ= Ġitem stack . copy () ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( she ars copy . attempt Damage Item ( 1 , ĠMinecraft . getM inecraft (). world . rand , Ġnull )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠFor ge Event Factory . on Player Destroy Item ( Forge Hooks . getC raft ing Player (), Ġitem stack , Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġa item stack [ i ] Ġ= ĠItemStack . EMPTY ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġa item stack [ i ] Ġ= Ġshe ars copy ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġa item stack [ i ] Ġ= Ġitem stack ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġa item stack ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġcan Fit ( width : ĠInt , Ġheight : ĠInt ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġwidth Ġ* Ġheight Ġ>= Ġ 1 ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊ Ċ } Ċ