package Ġnet . cy dh ra . tech n ocracy . opt ics . content . tile entities . logic Ċ Ċ import Ġnet . cy dh ra . tech n ocracy . foundation . api . ecs . logic . I Logic Ċ import Ġnet . cy dh ra . tech n ocracy . foundation . content . tile entities . components . TileEntity Energy Storage Component Ċ import Ġnet . cy dh ra . tech n ocracy . foundation . content . tile entities . components . TileEntity Inventory Component Ċ import Ġnet . cy dh ra . tech n ocracy . foundation . content . tile entities . components . TileEntity Progress Component Ċ import Ġnet . cy dh ra . tech n ocracy . opt ics . T CO pt ics Ċ import Ġnet . minecraft . item . ItemStack Ċ import Ġnet . minecraft . world . World Ċ Ċ class ĠL aser Dr ill Logic ( ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġprogress Component : ĠTile Entity Progress Component , ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġenergy Component : ĠTile Entity Energy Storage Component , ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġoutput Inventory : ĠTile Entity Inventory Component , ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġenergy Per Progress : ĠInt , ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġworld : ĠWorld Ċ ) Ġ: ĠI Logic Ġ{ ĊĊĠĠĠ Ġprivate Ġvar Ġnext Resource : ĠItemStack Ġ= ĠItemStack . EMPTY ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġregistered O res Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠT CO pt ics . shadow O re Dictionary . keys . toList () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġpre Processing (): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġenergy Component . energy Storage . current Energy Ġ> Ġenergy Per Progress Ġ&& ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( next Resource . isEmpty Ġ|| Ġoutput Inventory . inventory . stacks . any Ġ{ Ġit . isEmpty Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġprocessing () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġenergy Available Ġ= Ġenergy Component . energy Storage . current Energy ĊĠĠĠĠĠĠĠ Ġval Ġprogress Ġ= Ġenergy Available Ġ/ Ġenergy Per Progress ĊĊĠĠĠĠĠĠĠ Ġif Ġ( energy Component . energy Storage . consume Energy ( progress Ġ* Ġenergy Per Progress )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . progress Component . progress Ġ+= Ġprogress ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ( this . progress Component . progress Ġ> Ġ 1 0 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnext Resource Ġ= Ġthis . generate Resource () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ(! next Resource . isEmpty ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġi Ġ= Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhile Ġ( i Ġ< Ġthis . output Inventory . inventory . size ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnext Resource Ġ= Ġthis . output Inventory . inventory . insert Item ( i , Ġnext Resource , Ġsimulate Ġ= Ġfalse , Ġforced Ġ= Ġtrue ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( next Resource . isEmpty ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis . progress Component . progress Ġ-= Ġ 1 0 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis . output Inventory . mark Dirty ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbreak ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġi ++ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġpost Processing ( was Processing : ĠBoolean ) Ġ{ ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġgenerate Resource (): ĠItemStack Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġrandom O re Ġ= Ġregistered O res [ world . rand . nextInt ( registered O res . size )] ĊĠĠĠĠĠĠĠ Ġreturn Ġ( T CO pt ics . shadow O re Dictionary [ random O re ] Ġ?: Ġerror ("$ random O re Ġis Ġnot Ġpart Ġof Ġthe Ġshadow Ġo re Ġdictionary ")) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. copy () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. apply Ġ{ Ġthis . count Ġ= Ġ 1 Ġ} ĊĠĠĠ Ġ} Ċ }