package Ġme . ste ven . ind rev . components . mult ib lock Ċ Ċ import Ġme . ste ven . ind rev . blocks . machine . Horizontal Facing Machine Block Ċ import Ġnet . minecraft . block . BlockState Ċ import Ġnet . minecraft . util . Block Rotation Ċ import Ġnet . minecraft . util . math . Block Pos Ċ import Ġnet . minecraft . world . World Ċ import Ġnet . minecraft . world . chunk . Chunk Ċ Ċ abstract Ġclass ĠStructure Definition Ġ{ ĊĠĠĠ Ġabstract Ġval Ġidentifier : ĠString ĊĠĠĠ Ġabstract Ġval Ġis Optional : ĠBoolean ĊĠĠĠ Ġabstract Ġval Ġholder : ĠStructure Holder ĊĊĠĠĠ Ġopen Ġval Ġappend ices : ĠArray < StructureDefinition > Ġ= Ġempty Array () ĊĊĠĠĠ Ġopen Ġfun Ġto Matcher (): ĠAbstract Mult ib lock Matcher Ġ= ĠDefault Mult ib lock Matcher ( array Of (* append ices , Ġthis )) ĊĊĠĠĠ Ġfun Ġget Built Structure Id ( world : ĠWorld , Ġpos : ĠBlockPos , Ġstate : ĠBlock State ): ĠSet < Structure Identifier > Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġcurrent Chunk : ĠChunk Ġ= Ġworld . get Chunk ( pos ) ĊĠĠĠĠĠĠĠ Ġif Ġ( pos . y Ġ< Ġ 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġempty Set () ĊĠĠĠĠĠĠĠ Ġval Ġrotation Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠAbstract Mult ib lock Matcher . rotate Block ( state [ Horizontal Facing Machine Block . HORIZONTAL _ F ACING ]) ĊĠĠĠĠĠĠĠ Ġreturn ĠarrayOf (* append ices , Ġthis ). map Ġ{ Ġit . holder . variants Ġ}. flatMap Ġ{ Ġit . entries Ġ}. filter Ġ{ Ġ(_, Ġstructure ) Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstructure . all Ġ{ Ġ( offset , Ġstate Predicate ) Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġstate Pos Ġ= Ġpos . subtract ( offset . rotate ( rotation ). rotate ( Block Rotation . CLOCK WISE _ 1 8 0 )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( current Chunk . pos . start X Ġ< Ġstate Pos . x Ġ|| Ġcurrent Chunk . pos . end X Ġ> Ġstate Pos . x Ġ|| Ġcurrent Chunk . pos . start Z Ġ< Ġstate Pos . z Ġ|| Ġcurrent Chunk . pos . end Z Ġ> Ġstate Pos . z ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcurrent Chunk Ġ= Ġworld . get Chunk ( state Pos ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġblock State Ġ= Ġcurrent Chunk . getBlock State ( state Pos ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. rotate ( Abstract Mult ib lock Matcher . rotate Block 0 ( state [ Horizontal Facing Machine Block . HORIZONTAL _ F ACING ])) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstate Predicate ( block State ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}. map Ġ{ Ġit . key Ġ}. toSet () ĊĠĠĠ Ġ} Ċ }