package Ġme . ste ven . ind rev . block entities . far ms Ċ Ċ import Ġme . ste ven . ind rev . block entities . cr after s . Upgrade Provider Ċ import Ġme . ste ven . ind rev . components . Inventory Component Ċ import Ġme . ste ven . ind rev . config . Basic Machine Config Ċ import Ġme . ste ven . ind rev . invent ories . IR Inventory Ċ import Ġme . ste ven . ind rev . items . misc . IR Cool er Item Ċ import Ġme . ste ven . ind rev . items . upgrade . IR Upgrade Item Ċ import Ġme . ste ven . ind rev . items . upgrade . Upgrade Ċ import Ġme . ste ven . ind rev . registry . Machine Registry Ċ import Ġme . ste ven . ind rev . utils . Fake Player Entity Ċ import Ġme . ste ven . ind rev . utils . Tier Ċ import Ġme . ste ven . ind rev . utils . to IntArray Ċ import Ġme . ste ven . ind rev . utils . to Vec 3 d Ċ import Ġnet . fabric mc . fabric . api . tool . attribute . v 1 . Fabric Tool Tags Ċ import Ġnet . minecraft . block . BlockState Ċ import Ġnet . minecraft . block . Le aves Block Ċ import Ġnet . minecraft . block . S ap ling Block Ċ import Ġnet . minecraft . item .* Ċ import Ġnet . minecraft . loot . context . Lo ot Context Ċ import Ġnet . minecraft . loot . context . Lo ot Context Parameters Ċ import Ġnet . minecraft . server . world . Server World Ċ import Ġnet . minecraft . tag . Block Tags Ċ import Ġnet . minecraft . util . Hand Ċ import Ġnet . minecraft . util . Item Scatter er Ċ import Ġnet . minecraft . util . hit . Block Hit Result Ċ import Ġnet . minecraft . util . math . Block Pos Ċ import Ġnet . minecraft . util . math . Direction Ċ import Ġnet . minecraft . world . chunk . Chunk Ċ import Ġnet . minecraft . world . chunk . Chunk Section Ċ import Ġnet . minecraft . world . chunk . World Chunk Ċ import Ġteam . re born . energy . Energy Ċ import Ġteam . re born . energy . Energy Side Ċ Ċ class ĠCh op per Block Entity ( tier : ĠT ier ) Ġ: ĠA O EM achine Block Entity < Basic Machine Config >( tier , ĠMachine Registry . CH OP PER _ REGISTRY ), ĠUpgrade Provider Ġ{ ĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . inventory Component Ġ= ĠInventory Component ({ Ġthis Ġ}) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠIR Inventory ( 1 9 , Ġ( 2 .. 5 ). to IntArray (), Ġ( 6 Ġuntil Ġ 1 5 ). to IntArray ()) Ġ{ Ġslot , Ġstack Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġitem Ġ= Ġstack ?. item ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġitem Ġis ĠIR Upgrade Item Ġ-> Ġget Upgrade Slots (). contains ( slot ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠEnergy . valid ( stack ) Ġ&& ĠEnergy . of ( stack ). max Output Ġ> Ġ 0 Ġ-> Ġslot Ġ== Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġitem Ġis ĠIRC ool er Item Ġ-> Ġslot Ġ== Ġ 1 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġslot Ġin Ġ 2 .. 5 Ġ-> Ġitem ?. isIn ( Fabric Tool Tags . AX ES ) Ġ== Ġtrue Ġ|| Ġitem Ġis ĠB one Me al Item Ġ|| Ġ( item Ġis ĠBlock Item Ġ&& Ġitem . block Ġis ĠS ap ling Block ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġslot Ġin Ġ 6 Ġuntil Ġ 1 5 Ġ-> Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġvar Ġscheduled Blocks Ġ= Ġmutable ListOf < Block Pos >(). iterator () ĊĠĠĠ Ġprivate Ġval Ġfake Player Ġby Ġlazy Ġ{ ĠFake Player Entity ( world Ġas ĠServer World , Ġpos ) Ġ} ĊĠĠĠ Ġoverride Ġvar Ġrange Ġ= Ġ 5 ĊĠĠĠ Ġvar Ġcool down Ġ= Ġ 0 . 0 ĊĊĠĠĠ Ġoverride Ġfun Ġmachine Tick () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( world ?. is Client Ġ== Ġtrue ) Ġreturn ĊĠĠĠĠĠĠĠ Ġval Ġinventory Ġ= Ġinventory Component ?. inventory Ġ?: Ġreturn ĊĠĠĠĠĠĠĠ Ġval Ġupgrades Ġ= Ġget Upgrade s ( inventory ) ĊĠĠĠĠĠĠĠ Ġcool down Ġ+= ĠUpgrade . get Speed ( upgrade s , Ġthis ) ĊĠĠĠĠĠĠĠ Ġif Ġ( co old own Ġ< Ġconfig . process Speed Ġ|| Ġ! Energy . of ( this ). simulate (). use ( Upgrade . get Energy Cost ( upgrade s , Ġthis ))) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġif Ġ(! scheduled Blocks . hasNext ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlist Ġ= Ġmutable ListOf < Block Pos >() ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġarea Ġ= Ġget Working Area () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( y Ġin Ġarea . min Y . toInt () Ġuntil Ġarea . max Y . toInt ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( x Ġin Ġarea . min X . toInt () Ġuntil Ġarea . max X . toInt ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( z Ġin Ġarea . min Z . toInt () Ġuntil Ġarea . max Z . toInt ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlist . add ( Block Pos ( x , Ġy , Ġz )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġscheduled Blocks Ġ= Ġlist . iterator () ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġcurrent Chunk : ĠChunk ? Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġcurrent Section : ĠChunk Section ? Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġperformed Action Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġa xe Stack Ġ= Ġinventory . input Slots . map Ġ{ Ġslot Ġ-> Ġinventory . get Stack ( slot ) Ġ}. first OrNull Ġ{ Ġstack Ġ-> Ġstack . item Ġis ĠA xe Item Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġouter @ Ġwhile Ġ( scheduled Blocks . hasNext ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpos Ġ= Ġscheduled Blocks . next () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( pos . x Ġshr Ġ 4 Ġ!= Ġcurrent Chunk ?. pos ?. x Ġ|| Ġpos . z Ġshr Ġ 4 Ġ!= Ġcurrent Chunk . pos . z ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcurrent Chunk Ġ= Ġworld ?. get Chunk ( pos ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcurrent Section Ġ= Ġcurrent Chunk !!. section Array [ pos . y Ġshr Ġ 4 ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( current Section Ġ== ĠWorld Chunk . EMPTY _ SECTION ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcurrent Section Ġ= ĠChunk Section ( pos . y Ġshr Ġ 4 Ġshl Ġ 4 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcurrent Chunk . section Array [ pos . y Ġshr Ġ 4 ] Ġ= Ġcurrent Section ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġblock State Ġ= Ġcurrent Section ?. getBlock State ( pos . x Ġand Ġ 1 5 , Ġpos . y Ġand Ġ 1 5 , Ġpos . z Ġand Ġ 1 5 ) Ġ?: Ġcontinue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( axe Stack Ġ!= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ&& Ġ! axe Stack . isEmpty ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ&& Ġtry Ch op ( axe Stack , Ġpos , Ġblock State , Ġinventory ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġperformed Action Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbreak ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( slot Ġin Ġinventory . input Slots ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġstack Ġ= Ġinventory . get Stack ( slot ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( axe Stack Ġ!= Ġnull Ġ&& Ġstack . is Item Equal ( axe Stack )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ|| Ġstack . isEmpty ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ|| Ġ! try Use ( block State , Ġstack , Ġpos ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġcontinue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġperformed Action Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbreak @ outer ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( per formed Action ) ĠEnergy . of ( this ). use ( Upgrade . get Energy Cost ( upgrade s , Ġthis )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtemperature Component ?. tick ( per formed Action ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Working State ( per formed Action ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġcool down Ġ= Ġ 0 . 0 ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġtry Ch op ( ĊĠĠĠĠĠĠĠ Ġa xe Stack : ĠItemStack , ĊĠĠĠĠĠĠĠ Ġblock Pos : ĠBlockPos , ĊĠĠĠĠĠĠĠ Ġblock State : ĠBlock State , ĊĠĠĠĠĠĠĠ Ġinventory : ĠIR Inventory ĊĠĠĠ Ġ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġblock Ġ= Ġblock State . block ĊĠĠĠĠĠĠĠ Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġblock . isIn ( Block Tags . LOG S ) Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( Energy . valid ( axe Stack ) Ġ&& Ġ! Energy . of ( axe Stack ). use ( 1 . 0 )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġa xe Stack . damage ( 1 , Ġworld ?. random , Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( axe Stack . damage Ġ>= Ġa xe Stack . max Damage ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġa xe Stack . decrement ( 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġworld ?. break Block ( block Pos , Ġfalse ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġblock Ġis ĠLe aves Block Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġworld ?. break Block ( block Pos , Ġfalse ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġreturn Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġdropped Stack s Ġ= Ġblock State . get Dropped Stack s ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠL oot Context . Builder ( world Ġas ĠServer World ). random ( world ?. random ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. parameter ( Lo ot Context Parameters . ORIGIN , Ġblock Pos . to Vec 3 d ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. parameter ( Lo ot Context Parameters . TOOL , Ġa xe Stack ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġdropped Stack s . map Ġ{ Ġinventory . add Stack ( it ) Ġ}. filter Not ( ItemStack :: isEmpty ). forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠItem Scatter er . spawn ( world , Ġblock Pos . x . toDouble (), Ġblock Pos . y . toDouble (), Ġblock Pos . z . toDouble (), Ġit ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġtry Use ( block State : ĠBlock State , Ġitem Stack : ĠItemStack , Ġpos : ĠBlockPos ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġfake Player . set Stack In Hand ( Hand . MAIN _ HAND , Ġitem Stack ) ĊĠĠĠĠĠĠĠ Ġval Ġitem Ġ= Ġitem Stack . item ĊĠĠĠĠĠĠĠ Ġval Ġis S ap ling Or Bone Me al Ġ= Ġ( item Ġis ĠB one Me al Item Ġ&& Ġblock State . block Ġis ĠS ap ling Block Ġ&& Ġitem Stack . count Ġ> Ġ 1 ) Ġ|| Ġ( item Ġis ĠBlock Item Ġ&& Ġitem . block Ġis ĠS ap ling Block ) ĊĠĠĠĠĠĠĠ Ġif Ġ(! is S ap ling Or Bone Me al ) Ġreturn Ġfalse ĊĠĠĠĠĠĠĠ Ġval Ġuse Result Ġ= Ġitem Stack . use On Block ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠItem Usage Context ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfake Player , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠHand . MAIN _ HAND , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠBlock Hit Result ( pos . to Vec 3 d (), ĠDirection . UP , Ġpos , Ġfalse ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġfake Player . inventory . clear () ĊĠĠĠĠĠĠĠ Ġreturn Ġuse Result . is Accepted ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget Upgrade Slots (): ĠInt Array Ġ= Ġint ArrayOf ( 1 5 , Ġ 1 6 , Ġ 1 7 , Ġ 1 8 ) ĊĊĠĠĠ Ġoverride Ġfun Ġget Available Upgrade s (): ĠArray < Upgrade > Ġ= ĠUpgrade . DEFAULT ĊĊĠĠĠ Ġoverride Ġfun Ġget Base Value ( upgrade : ĠUpgrade ): ĠDouble Ġ= ĊĠĠĠĠĠĠĠ Ġwhen Ġ( upgrade ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠUpgrade . ENER GY Ġ-> Ġconfig . energy Cost ĊĠĠĠĠĠĠĠĠĠĠĠ ĠUpgrade . SPEED Ġ-> Ġ 1 . 0 ĊĠĠĠĠĠĠĠĠĠĠĠ ĠUpgrade . BUFFER Ġ-> Ġget Base Buffer () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ 0 . 0 ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠgetMax Stored Power (): ĠDouble Ġ= ĠUpgrade . get Buffer ( this ) ĊĊĠĠĠ Ġoverride Ġfun ĠgetMax Input ( side : ĠEnergy Side ?): ĠDouble Ġ= Ġconfig . max Input ĊĊĠĠĠ Ġoverride Ġfun ĠgetMax Output ( side : ĠEnergy Side ?): ĠDouble Ġ= Ġ 0 . 0 Ċ }