package Ġnet . cer ulan . lum inality . block . entity . lum us Ċ Ċ import Ġnet . cer ulan . lum inality . L um inality Blocks Ċ import Ġnet . cer ulan . lum inality . api . L um us Ratio Changes Ċ import Ġnet . cer ulan . lum inality . api . Ratio L um us Power Ċ import Ġnet . cer ulan . lum inality . api . attr . L um us Sink Ċ import Ġnet . cer ulan . lum inality . api . attr . L um us Source Ċ import Ġnet . cer ulan . lum inality . api . client . Beam Render BE Ċ import Ġnet . cer ulan . lum inality . block . lum us . L um us Pump Block Ċ import Ġnet . cer ulan . lum inality . block . lum us . L um us Redirect or Block Ċ import Ġnet . cer ulan . lum inality . block . lum us . L um us Reg ulator Block Ċ import Ġnet . cer ulan . lum inality . get Vec 3 d Ċ import Ġnet . cer ulan . lum inality . lum us . Beam Handler Ċ import Ġnet . cer ulan . lum inality . put Vec 3 d Ċ import Ġnet . cer ulan . lum inality . to Vec 3 d Ċ import Ġnet . fabric mc . fabric . api . block . entity . Block Entity Client Serializable Ċ import Ġnet . minecraft . block . entity . Block Entity Ċ import Ġnet . minecraft . nbt . Compound Tag Ċ import Ġnet . minecraft . util . Tick able Ċ import Ġnet . minecraft . util . math . Block Pos Ċ import Ġnet . minecraft . util . math . Direction Ċ import Ġnet . minecraft . util . math . Vec 3 d Ċ import Ġnet . minecraft . world . World Ċ Ċ class ĠL um us Reg ulator Ġ: ĠBlock Entity ( L um inality Blocks . Block Entities . lum us Reg ulator Entity ), ĊĠĠĠ ĠTick able , ĊĠĠĠ ĠBlock Entity Client Serializable , ĊĠĠĠ ĠBe am Render BE Ġ{ ĊĊĠĠĠ Ġval Ġinput Sink Ġ= ĠL um us Sink () ĊĠĠĠ Ġval Ġoutput Source Ġ= ĠL um us Source () ĊĊĠĠĠ Ġprivate Ġval Ġbeam Handler Ġ= ĠBe am Handler ( this , Ġnull , ĠL um us Pump . range , Ġpos , Ġ{ ĊĠĠĠĠĠĠĠ Ġworld !!. set BlockState ( pos , Ġcached State . with ( L um us Pump Block . Props . valid , Ġit )) ĊĠĠĠĠĠĠĠ Ġsync () ĊĠĠĠ Ġ}, Ġ{ sync () }) ĊĊĠĠĠ Ġprivate Ġval Ġratio Power Ġ= ĠR atio L um us Power ( 0 , Ġ 0 , Ġ 0 , ĠL um us Ratio Changes . INCRE ASE _ FLOW , Ġ 2 ) ĊĊĠĠĠ Ġval Ġinput Direction : ĠDirection ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġcached State [ L um us Pump Block . Props . input ] ĊĊĠĠĠ Ġval Ġoutput Direction : ĠDirection ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġinput Direction . op pos ite ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġbeam Handler . input Node Ġ= Ġoutput Source ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġset Location ( world : ĠWorld ?, Ġpos : ĠBlockPos ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . setLocation ( world , Ġpos ) ĊĠĠĠĠĠĠĠ Ġif Ġ( world Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbeam Handler . target . change World ( world ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbeam Handler . start Block Pos Ġ= Ġpos ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġtick () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( world !!. is Client ) Ġreturn ĊĠĠĠĠĠĠĠ Ġif Ġ( input Sink . power . copy To Other ( ratio Power )) Ġsync () ĊĠĠĠĠĠĠĠ Ġif Ġ( ratio Power . copy To Other ( output Source . power )) Ġsync () ĊĠĠĠĠĠĠĠ Ġif Ġ( beam Handler . direction Ġ!== Ġoutput Direction ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġon Broken () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbeam Handler . direction Ġ= Ġoutput Direction ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġbeam Handler . tick () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġon Broken () Ġ{ ĊĠĠĠĠĠĠĠ Ġbeam Handler . target . cached Sink ?. power ?. zero () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġfrom Tag ( tag : ĠCompound Tag ) Ġ{ ĊĠĠĠĠĠĠĠ Ġratio Power . mode Ġ= ĠL um us Ratio Changes . values ()[ tag . getInt (" mode ")] ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġto Tag ( tag : ĠCompound Tag ): ĠCompound Tag Ġ{ ĊĠĠĠĠĠĠĠ Ġtag . put Int (" mode ", Ġratio Power . mode . ordinal ) ĊĠĠĠĠĠĠĠ Ġreturn Ġsuper . to Tag ( tag ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġto Client Tag ( tag : ĠCompound Tag ): ĠCompound Tag Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( beam Handler . target . block Pos Ġ!= Ġnull Ġ&& Ġbeam Handler . input Node ?. power ?. rad iance Ġ?: Ġ 0 Ġ> Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtag . put Vec 3 d (" target ", Ġbeam Handler . target . block Pos !!. to Vec 3 d () !! ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġtag ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġfrom Client Tag ( tag : ĠCompound Tag ) Ġ{ ĊĠĠĠĠĠĠĠ Ġtarget Pos Ġ= Ġtag . get Vec 3 d (" target ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġvar Ġtarget Pos : ĠVec 3 d ? Ġ= Ġnull ĊĠĠĠ Ġoverride Ġval Ġstart Pos : ĠVec 3 d ? ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġpos . to Vec 3 d () Ċ Ċ }