package Ġal 1 3 2 . al che mistry . tiles Ċ Ċ import Ġal 1 3 2 . al che mistry . Config Handler Ċ import Ġal 1 3 2 . al che mistry . items . Mod Items Ċ import Ġal 1 3 2 . al che mistry . recipes . Combin er Recipe Ċ import Ġal 1 3 2 . alib . tiles .* Ċ import Ġal 1 3 2 . alib . utils . extensions . are ItemStack s Equal Ċ import Ġal 1 3 2 . alib . utils . extensions . are Items Equal Ċ import Ġal 1 3 2 . alib . utils . extensions . get Ċ import Ġnet . dark h ax . game stages . Game Stage Helper Ċ import Ġnet . minecraft . entity . player . Entity Player MP Ċ import Ġnet . minecraft . item . ItemStack Ċ import Ġnet . minecraft . nbt . NBT Tag Compound Ċ import Ġnet . minecraft . nbt . NBT Tag List Ċ import Ġnet . minecraft . util . IT ick able Ċ import Ġnet . minecraftforge . common . util . Constants Ċ import Ġnet . minecraftforge . fml . common . F ML Common Handler Ċ import Ġnet . minecraftforge . fml . common . Loader Ċ import Ġnet . minecraftforge . items . ItemStack Handler Ċ Ċ /** Ċ Ġ* ĠCreated Ġby Ġal 1 3 2 Ġon Ġ 1 / 2 2 / 2 0 1 7 . Ċ Ġ*/ Ċ class ĠTile Che mical Combin er Ġ: ĠTile Base (), ĠI Gui Tile , ĠI Tick able , ĠI Item Tile , ĊĠĠĠĠĠĠĠ ĠI Energy Tile Ġby ĠEnergy Tile Impl ( capacity Ġ= ĠConfig Handler . combin er Energy Capacity !! ) Ġ{ ĊĊĠĠĠ Ġvar Ġcurrent Recipe : ĠCombin er Recipe ? Ġ= Ġnull ĊĠĠĠ Ġvar Ġrecipe Is Locked Ġ= Ġfalse ĊĠĠĠ Ġvar Ġprogress Ticks Ġ= Ġ 0 ĊĠĠĠ Ġvar Ġpaused Ġ= Ġfalse ĊĠĠĠ Ġval Ġclient Recipe Target : ĠAL Tile Stack Handler ĊĠĠĠ Ġvar Ġowner : ĠString Ġ= Ġ"" ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġinit Inventory Capability ( 9 , Ġ 1 ) ĊĠĠĠĠĠĠĠ Ġclient Recipe Target Ġ= Ġobject Ġ: ĠAL Tile Stack Handler ( 1 , Ġthis ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġinsert Item ( slot : ĠInt , Ġstack : ĠItemStack , Ġsimulate : ĠBoolean ) Ġ= Ġstack ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġextract Item ( slot : ĠInt , Ġamount : ĠInt , Ġsimulate : ĠBoolean ) Ġ= ĠItemStack . EMPTY ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġinit Inventory Input Capability () Ġ{ ĊĠĠĠĠĠĠĠ Ġinput Ġ= Ġobject Ġ: ĠAL Tile Stack Handler ( input Slots , Ġthis ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġinsert Item ( slot : ĠInt , Ġstack : ĠItemStack , Ġsimulate : ĠBoolean ): ĠItemStack Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! recipe Is Locked ) Ġreturn Ġsuper . insert Item ( slot , Ġstack , Ġsimulate ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġif Ġ( recipe Is Locked Ġ&& Ġ( current Recipe ?. inputs ?. get ( slot )?. are Items Equal ( stack ) Ġ== Ġtrue )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġsuper . insert Item ( slot , Ġstack , Ġsimulate ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġreturn Ġstack ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Contents Changed ( slot : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! recipe Is Locked ) Ġupdate Recipe () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġupdate Recipe () Ġ{ ĊĠĠĠĠĠĠĠ Ġcurrent Recipe Ġ= ĠCombin er Recipe . match Inputs ( this . input ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġupdate () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ(! get World (). is Remote ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( recipe Is Locked ) Ġclient Recipe Target . set Stack In Slot ( 0 , Ġ( current Recipe ?. output ?. copy ()) Ġ?: ĠItemStack . EMPTY ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! this . paused Ġ&& Ġcan Process ()) Ġprocess () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . mark Dirty GUI Every ( 5 ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġprocess () Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . energy Storage . extract Energy ( Config Handler . combin er Energy Per Tick !! , Ġfalse ) ĊĊĠĠĠĠĠĠĠ Ġif Ġ( progress Ticks Ġ< ĠConfig Handler . combin er Processing Ticks !! ) Ġprogress Ticks ++ ĊĠĠĠĠĠĠĠ Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprogress Ticks Ġ= Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcurrent Recipe ?. let Ġ{ Ġoutput . set Or Increment ( 0 , Ġit . output . copy ()) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcurrent Recipe ?. inputs ?. forEach Indexed Ġ{ Ġindex , Ġstack Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! stack . isEmpty ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( input . decrement Slot ( index , Ġstack . count )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( input . get Stack In Slot ( index ). item Ġ== ĠMod Items . slot Fill er ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinput . decrement Slot ( index , Ġ 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġhas Current Recipe Stage (): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġif ( Loader . is Mod Loaded (" game stages ")) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġplayer List Ġ= ĠF ML Common Handler . instance (). minecraft Server Instance . player List ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġplayer Owner : ĠEntity Player MP Ġ= Ġplayer List . getPlayer By Username ( owner ) Ġ?: Ġreturn Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠGame Stage Helper . has Stage ( player Owner , Ġcurrent Recipe ?. game stage ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġreturn Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġcan Process (): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġcurrent Recipe Ġ!= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ&& Ġ( current Recipe !!. game stage Ġ== Ġ"" Ġ|| Ġhas Current Recipe Stage ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ&& Ġenergy Storage . energy Stored Ġ>= ĠConfig Handler . combin er Energy Per Tick !! Ġ// has Ġenough Ġenergy ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ&& Ġ( current Recipe !!. output . count Ġ+ Ġoutput [ 0 ]. count Ġ<= Ġcurrent Recipe !!. output . max Stack Size ) Ġ// output Ġquant ities Ġcan Ġstack ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ&& Ġ( ItemStack . are Items Equal ( output [ 0 ], Ġcurrent Recipe !!. output ) Ġ|| Ġoutput [ 0 ]. isEmpty ) Ġ// output Ġitem Ġtypes Ġcan Ġstack ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ&& Ġcurrent Recipe !!. matches Handler Stack s ( this . input ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ&& Ġ(! recipe Is Locked Ġ|| ĠCombin er Recipe . match Inputs ( input )?. output ?. are ItemStack s Equal ( current Recipe !!. output ) Ġ?: Ġfalse ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġread From NBT ( compound : ĠN BT Tag Compound ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . read From NBT ( compound ) ĊĠĠĠĠĠĠĠ Ġthis . recipe Is Locked Ġ= Ġcompound . getBoolean (" Recipe Is Locked ") ĊĠĠĠĠĠĠĠ Ġthis . progress Ticks Ġ= Ġcompound . getInteger (" Progress Ticks ") ĊĠĠĠĠĠĠĠ Ġthis . paused Ġ= Ġcompound . getBoolean (" Paused ") ĊĠĠĠĠĠĠĠ Ġthis . owner Ġ= Ġcompound . getString (" Owner ") ĊĊĠĠĠĠĠĠĠ Ġif Ġ( this . recipe Is Locked ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtemp Item Handler Ġ= ĠItemStack Handler ( 9 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġrecipe Inputs List Ġ= Ġcompound . getTag List (" Recipe Inputs ", ĠConstants . NBT . TAG _ COMP O UND ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 0 Ġuntil Ġrecipe Inputs List . tag Count ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtemp Item Handler . set Stack In Slot ( i , ĠItemStack ( recipe Inputs List . get Compound Tag At ( i ))) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġrecipe Target Ġ= ĠItemStack ( compound . get Compound Tag (" Recipe Target ")) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . current Recipe Ġ= ĠCombin er Recipe . match Output ( recipe Target ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġclient Recipe Target . set Stack In Slot ( 0 , Ġ( current Recipe ?. output ?. copy ()) Ġ?: ĠItemStack . EMPTY !! ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . update Recipe () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġclient Recipe Target . set Stack In Slot ( 0 , ĠItemStack . EMPTY ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠwriteTo NBT ( compound : ĠN BT Tag Compound ): ĠN BT Tag Compound Ġ{ ĊĠĠĠĠĠĠĠ Ġcompound . set Boolean (" Recipe Is Locked ", Ġthis . recipe Is Locked ) ĊĠĠĠĠĠĠĠ Ġcompound . set Integer (" Progress Ticks ", Ġthis . progress Ticks ) ĊĠĠĠĠĠĠĠ Ġcompound . set Boolean (" Paused ", Ġthis . paused ) ĊĠĠĠĠĠĠĠ Ġcompound . setString (" Owner ", Ġthis . owner ) ĊĠĠĠĠĠĠĠ Ġif Ġ( this . recipe Is Locked Ġ&& Ġthis . current Recipe Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġrecipe Inputs Ġ= ĠN BT Tag List () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġthis . current Recipe !!. inputs . indices ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġrecipe Input Entry Ġ= ĠN BT Tag Compound () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtemp Stack Ġ= Ġthis . current Recipe !!. inputs [ i ]. copy () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtemp Stack . writeTo NBT ( recipe Input Entry ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrecipe Inputs . append Tag ( recipe Input Entry ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcompound . setTag (" Recipe Inputs ", Ġrecipe Inputs ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġcompound . setTag (" Recipe Target ", Ġclient Recipe Target [ 0 ]. serialize NBT ()) ĊĠĠĠĠĠĠĠ Ġreturn Ġsuper . writeTo NBT ( compound ) ĊĠĠĠ Ġ} Ċ }