package Ġcom . ref ined mods . ref ined storage . tile Ċ Ċ import Ġcom . ref ined mods . ref ined storage . RS Ċ import Ġcom . ref ined mods . ref ined storage . api . network . IN etwork Ċ import Ġcom . ref ined mods . ref ined storage . api . network . Network Type Ċ import Ġcom . ref ined mods . ref ined storage . api . network . node . IN etwork Node Proxy Ċ import Ġcom . ref ined mods . ref ined storage . api impl . API Ċ import Ġcom . ref ined mods . ref ined storage . api impl . network . Network Ċ import Ġcom . ref ined mods . ref ined storage . api impl . network . node . Root Network Node Ċ import Ġcom . ref ined mods . ref ined storage . block . Controller Block Ċ import Ġcom . ref ined mods . ref ined storage . block . Controller Block . Energy Type Ċ import Ġcom . ref ined mods . ref ined storage . extensions . on Server Ċ import Ġcom . ref ined mods . ref ined storage . tile . config . IR ed stone Configurable Ċ import Ġcom . ref ined mods . ref ined storage . tile . config . Red stone Mode Ċ import Ġcom . ref ined mods . ref ined storage . tile . config . Red stone Mode . Companion . create Parameter Ċ import Ġcom . ref ined mods . ref ined storage . tile . data . RS Serial izers Ċ import Ġcom . ref ined mods . ref ined storage . tile . data . RS Serial izers . DOUBLE _ SERIAL IZER Ċ import Ġcom . ref ined mods . ref ined storage . tile . data . Tile Data Parameter Ċ import Ġcom . think s ly nk . fabric . annotations . registry . Register Block Entity Ċ import Ġcom . think s ly nk . fabric . generated . Block Entity Registry Generated Ċ import Ġnet . minecraft . block . entity . Block EntityType Ċ import Ġnet . minecraft . nbt . Compound Tag Ċ import Ġteam . re born . energy . Energy Side Ċ import Ġteam . re born . energy . Energy Storage Ċ import Ġteam . re born . energy . Energy Tier Ċ import Ġjava . util . function . Function Ċ Ċ open Ġclass ĠController Tile ( type : ĠNetwork Type , Ġentity : ĠBlock EntityType < *> ?): ĊĠĠĠĠĠĠĠ ĠBase Tile ( entity ), ĊĠĠĠĠĠĠĠ ĠIN etwork Node Proxy < Root Network Node >, ĊĠĠĠĠĠĠĠ ĠI Red stone Configurable , ĊĠĠĠĠĠĠĠ ĠEnergy Storage Ċ { ĊĠĠĠ Ġprivate Ġval Ġtype : ĠNetwork Type ĊĠĠĠ Ġvar Ġremoved Network : ĠIN etwork ? Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġprivate Ġset ĊĠĠĠ Ġprivate Ġvar Ġdummy Network : ĠNetwork ? Ġ= Ġnull ĊĠĠĠ Ġoverride Ġvar Ġmarked For Removal : ĠBoolean Ġ= Ġfalse ĊĊĠĠĠ Ġoverride Ġfun Ġwrite Update ( tag : ĠCompound Tag ): ĠCompound Tag Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . write Update ( tag ) ĊĠĠĠĠĠĠĠ Ġtag . put Int ( NBT _ ENER GY _ TYPE , Ġ( network Ġas ĠNetwork ). energy Type . ordinal ) ĊĠĠĠĠĠĠĠ Ġreturn Ġtag ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġread Update ( tag : ĠCompound Tag ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( tag . contains ( NBT _ ENER GY _ TYPE )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġworld !!. set BlockState ( pos , Ġworld !!. getBlock State ( pos ). with ( Controller Block . ENER GY _ TYPE , ĠEnergy Type . values ()[ tag . getInt ( NBT _ ENER GY _ TYPE )])) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġsuper . read Update ( tag ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġval Ġnetwork : ĠIN etwork ĊĠĠĠĠĠĠĠ Ġget () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġon Server { world -> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠAPI . get Network Manager ( world ). get Network ( pos ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġthrow ĠIllegalStateException (" No Ġnetwork Ġpresent Ġat Ġ$ pos ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnet Ġ= Ġdummy Network Ġ?: ĠNetwork ( world !! , Ġpos , Ġtype ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdummy Network Ġ= Ġnet ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġnet ĊĠĠĠĠĠĠĠ Ġ} ĊĊĊĊĠĠĠ Ġoverride Ġfun Ġcancel Removal () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . cancel Removal () ĊĠĠĠĠĠĠĠ Ġon Server { world -> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmanager Ġ= ĠAPI . get Network Manager ( world ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( manager . get Network ( pos ) Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmanager . set Network ( pos , ĠNetwork ( world , Ġpos , Ġtype )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġmark Removed () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . mark Removed () ĊĠĠĠĠĠĠĠ Ġon Server { world -> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmanager Ġ= ĠAPI . get Network Manager ( world ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnetwork Ġ= Ġmanager . get Network ( pos ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġremoved Network Ġ= Ġnetwork ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġmanager . remove Network ( pos ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmanager . mark Dirty () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġnetwork !!. on Removed () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġval Ġnode : ĠRoot Network Node ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġ( network Ġas ĠNetwork ). root ĊĠĠĠ Ġoverride Ġvar Ġred stone Mode : ĠRed stone Mode ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġ( network Ġas ĠNetwork ). red stone Mode ĊĠĠĠĠĠĠĠ Ġset ( mode ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ( network Ġas ĠNetwork ). red stone Mode Ġ= Ġmode ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ// ĠTODO ĠReplace Ġcapability Ġ( do Ġwe Ġneed Ġthis ?) Ċ // ĠĠĠ Ġfun Ġ< T > Ġget Capability (@ Nonnull Ġcap : ĠCap ability < T >, Ġ@ Nullable Ġdirection : ĠDirection ?): ĠLazy Optional < T > Ġ{ Ċ // ĠĠĠĠĠĠĠ Ġif Ġ( cap Ġ=== ĠCap ability Energy . ENER GY ) Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġenergy Proxy Cap . cast () Ċ // ĠĠĠĠĠĠĠ Ġ} Ċ // ĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( cap Ġ=== ĠNetwork Node Proxy Capability . NETWORK _ NODE _ PROXY _ CAP ABILITY ) Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġnetwork Node Proxy Cap . cast () Ċ // ĠĠĠĠĠĠĠ Ġ} Ġelse Ġsuper . get Capability ( cap , Ġdirection ) Ċ // ĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġval ĠRED ST ONE _ MODE Ġ= Ġcreate Parameter < Controller Tile >() ĊĠĠĠĠĠĠĠ Ġval ĠEN ER GY _ USAGE Ġ= ĠTile Data Parameter < Double , ĠController Tile >( 0 . 0 , ĠDOUBLE _ SERIAL IZER , ĠFunction Ġ{ Ġt : ĠController Tile ? Ġ-> Ġt !!. network . energy Usage Ġ}) ĊĠĠĠĠĠĠĠ Ġval ĠEN ER GY _ STO RED Ġ= ĠTile Data Parameter < Double , ĠController Tile >( 0 . 0 , ĠDOUBLE _ SERIAL IZER , ĠFunction Ġ{ Ġt : ĠController Tile ? Ġ-> Ġt !!. network . energy Storage . get Stored ( Energy Side . UNKNOWN ) Ġ}) ĊĠĠĠĠĠĠĠ Ġval ĠEN ER GY _ CAP ACITY Ġ= ĠTile Data Parameter < Double , ĠController Tile >( 0 . 0 , ĠDOUBLE _ SERIAL IZER , ĠFunction Ġ{ Ġt : ĠController Tile ? Ġ-> Ġt !!. network . energy Storage . max Stored Power Ġ}) ĊĠĠĠĠĠĠĠ Ġval ĠNODE S : ĠTile Data Parameter < List < Client Node >, ĠController Tile > Ġ= ĠTile Data Parameter ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġempty List (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠRS Serial izers . CLIENT _ NODE _ SERIAL IZER , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠFunction Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtile : ĠController Tile Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcollect Client Nodes ( tile ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠN BT _ ENER GY _ TYPE Ġ= Ġ" Energy Type " ĊĠĠĠĠĠĠĠ Ġprivate Ġfun Ġcollect Client Nodes ( tile : ĠController Tile ): ĠList < Client Node > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnodes : ĠMutable List < Client Node > Ġ= ĠArrayList () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( node Ġin Ġtile . network . node Graph . all ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( node . isActive ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġstack Ġ= Ġnode . item Stack ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( stack . isEmpty ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontinue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġclient Node Ġ= ĠClient Node ( stack , Ġ 1 , Ġnode . energy Usage ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( nodes . contains ( client Node )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġother Ġ= Ġnodes [ nodes . indexOf ( client Node )] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġother . amount Ġ= Ġother . amount Ġ+ Ġ 1 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnodes . add ( client Node ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġnodes . sort With ( Comparator Ġ{ Ġa : ĠClient Node , Ġb : ĠClient Node Ġ-> Ġb . energy Usage . compareTo ( a . energy Usage ) Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġnodes ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġdata Manager . add W atched Parameter ( RED ST ONE _ MODE ) ĊĠĠĠĠĠĠĠ Ġdata Manager . add W atched Parameter ( ENER GY _ USAGE ) ĊĠĠĠĠĠĠĠ Ġdata Manager . add W atched Parameter ( ENER GY _ STO RED ) ĊĠĠĠĠĠĠĠ Ġdata Manager . add Parameter ( ENER GY _ CAP ACITY ) Ċ // ĠĠĠĠĠĠĠ Ġdata Manager . add Parameter ( NODES ) Ġ// TODO ĠAdd ĠNodes ĠParameter ĊĠĠĠĠĠĠĠ Ġthis . type Ġ= Ġtype ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġset Stored ( amount : ĠDouble ) Ġ{ ĊĠĠĠĠĠĠĠ Ġnetwork . energy Storage . set Stored ( amount ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠgetMax Stored Power (): ĠDouble Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġnetwork . energy Storage . max Stored Power ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget Tier (): ĠEnergy Tier Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġnetwork . energy Storage . tier ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget Stored ( face : ĠEnergy Side ?): ĠDouble Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġnetwork . energy Storage . get Stored ( face ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Suppress (" Un stable Api Usage ") ĊĠĠĠ Ġ// Ġthis Ġis Ġgoing Ġto Ġbe Ġremoved Ġin ĠComponent V 3 Ġso Ġthat Ġshould Ġfix Ġit ĊĠĠĠ Ġoverride Ġfun Ġto Tag ( tag : ĠCompound Tag ): ĠCompound Tag Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġsuper < Base Tile >. to Tag ( tag ) ĊĠĠĠ Ġ} Ċ } Ċ Ċ @ Register Block Entity ( RS . ID , ĠController Block . ID , Ġ[" CONTROLLER _ BLOCK "]) Ċ class ĠNormal Controller Tile : ĠController Tile ( Network Type . NORMAL , ĠBlock Entity Registry Generated . NORMAL _ CONTROLLER _ TILE ) Ċ Ċ @ Register Block Entity ( RS . ID , ĠController Block . CRE ATIVE _ ID , Ġ[" CRE ATIVE _ CONTROLLER _ BLOCK "]) Ċ class ĠCreative Controller Tile : ĠController Tile ( Network Type . CRE ATIVE , ĠBlock Entity Registry Generated . CRE ATIVE _ CONTROLLER _ TILE )