package Ġcom . k ne el awk . not sos imple pipes . pipes Ċ Ċ import Ġa lex i il . mc . lib . attributes . fluid . Fluid Attributes Ċ import Ġa lex i il . mc . lib . attributes . fluid . volume . Fluid Volume Ċ import Ġa lex i il . mc . mod . pipes . blocks . Block Pipe Ċ import Ġa lex i il . mc . mod . pipes . blocks . Pipe Flow Fluid Ċ import Ġa lex i il . mc . mod . pipes . blocks . Tile Pipe Ċ import Ġcom . k ne el awk . not sos imple pipes . N SS P Blocks Ċ import Ġcom . k ne el awk . not sos imple pipes . handler . Handler Pipe Fluid Source Ċ import Ġcom . k ne el awk . not sos imple pipes . util . Reflection Field Ċ import Ġnet . fabric mc . fabric . api . screen handler . v 1 . Extended Screen Handler Factory Ċ import Ġnet . minecraft . block . BlockState Ċ import Ġnet . minecraft . entity . player . Player Entity Ċ import Ġnet . minecraft . entity . player . Player Inventory Ċ import Ġnet . minecraft . inventory . Simple Inventory Ċ import Ġnet . minecraft . item . Block Item Ċ import Ġnet . minecraft . item . ItemStack Ċ import Ġnet . minecraft . nbt . Compound Tag Ċ import Ġnet . minecraft . network . Packet Byte Buf Ċ import Ġnet . minecraft . screen . Screen Handler Ċ import Ġnet . minecraft . server . network . Server Player Entity Ċ import Ġnet . minecraft . text . Text Ċ import Ġnet . minecraft . text . Trans latable Text Ċ import Ġnet . minecraft . util . ActionResult Ċ import Ġnet . minecraft . util . Hand Ċ import Ġnet . minecraft . util . hit . Block Hit Result Ċ import Ġnet . minecraft . util . math . Block Pos Ċ import Ġnet . minecraft . world . Block View Ċ import Ġnet . minecraft . world . World Ċ Ċ /** Ċ Ġ* ĠBlock Ġfor ĠFluid ĠSource ĠPipe . Ċ Ġ*/ Ċ class ĠBlock Pipe Fluid Source ( settings : ĠSettings ) Ġ: ĠBlock Pipe ( settings ) Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġcreate Block Entity ( var 1 : ĠBlock View ?): ĠTile Pipe Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠTile Pipe Fluid Source () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Use ( ĊĠĠĠĠĠĠĠ Ġstate : ĠBlock State , ĊĠĠĠĠĠĠĠ Ġworld : ĠWorld , ĊĠĠĠĠĠĠĠ Ġpos : ĠBlockPos , ĊĠĠĠĠĠĠĠ Ġplayer : ĠPlayer Entity , ĊĠĠĠĠĠĠĠ Ġhand : ĠHand , ĊĠĠĠĠĠĠĠ Ġhit : ĠBlock Hit Result ĊĠĠĠ Ġ): ĠActionResult Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġitem Stack Ġ= Ġplayer . get Stack In Hand ( hand ) ĊĠĠĠĠĠĠĠ Ġprintln (" USE : Ġ$ item Stack ") ĊĠĠĠĠĠĠĠ Ġif Ġ( item Stack Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġitem Ġ= Ġitem Stack . item ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( item Ġis ĠBlock Item Ġ&& Ġitem . block Ġis ĠBlock Pipe ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠActionResult . PASS ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ(! player . is Creative ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠActionResult . PASS ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ(! world . is Client ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġplayer . open Handled Screen ( world . getBlock Entity ( pos ) Ġas ĠTile Pipe Fluid Source ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn ĠActionResult . SUCCESS ĊĠĠĠ Ġ} Ċ } Ċ Ċ /** Ċ Ġ* ĠBlock Entity Ġfor ĠFluid ĠSource ĠPipe . Ċ Ġ*/ Ċ class ĠTile Pipe Fluid Source Ġ: ĊĠĠĠ ĠTile Pipe ( N SS P Blocks . TILE _ TYPE _ PIPE _ FL UID _ SOURCE , ĠN SS P Blocks . BLOCK _ PIPE _ FL UID _ SOURCE , Ġ:: Pipe Flow Fluid Source ), ĊĠĠĠ ĠExtended Screen Handler Factory Ġ{ ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠIN VENT ORY _ SIZE Ġ= Ġ 1 ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġval Ġsource Inv Ġ= Ġobject Ġ: ĠSimple Inventory ( IN VENT ORY _ SIZE ) Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun ĠisValid ( slot : ĠInt , Ġstack : ĠItemStack ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġstored Fluid s Ġ= ĠFluid Attributes . GRO U PED _ INV _ VIEW [ stack ]. stored Fluid s ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġstored Fluid s . size Ġ== Ġ 1 Ġ&& Ġ! stored Fluid s . first (). isEmpty ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġto Tag ( tag : ĠCompound Tag ?): ĠCompound Tag Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġnew Tag Ġ= Ġsuper . to Tag ( tag ) ĊĊĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 0 Ġuntil ĠIN VENT ORY _ SIZE ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġstack Ġ= Ġsource Inv . get Stack ( i ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! stack . isEmpty ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnew Tag . put (" source Stack _$ i ", Ġstack . to Tag ( Compound Tag ())) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġnew Tag ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġfrom Tag ( state : ĠBlock State , Ġtag : ĠCompound Tag ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . from Tag ( state , Ġtag ) ĊĊĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 0 Ġuntil ĠIN VENT ORY _ SIZE ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( tag . contains (" source Stack _$ i ")) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsource Inv . set Stack ( i , ĠItemStack . from Tag ( tag . get Compound (" source Stack _$ i "))) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsource Inv . set Stack ( i , ĠItemStack . EMPTY ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġcreate Menu ( sync Id : ĠInt , Ġinv : ĠPlayer Inventory , Ġplayer : ĠPlayer Entity ): ĠScreen Handler Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠHandler Pipe Fluid Source ( sync Id , Ġinv , Ġpos ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġwrite Screen Opening Data ( player : ĠServer Player Entity , Ġbuf : ĠPacket Byte Buf ) Ġ{ ĊĠĠĠĠĠĠĠ Ġbuf . write Block Pos ( pos ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget DisplayName (): ĠText Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠTrans latable Text ( pipe Block . translation Key ) ĊĠĠĠ Ġ} Ċ } Ċ Ċ /** Ċ Ġ* ĠPipe Flow Ġfor ĠFluid ĠSource ĠPipe . Ċ Ġ*/ Ċ class ĠPipe Flow Fluid Source ( pipe : ĠTile Pipe ) Ġ: ĠPipe Flow Fluid ( pipe ) Ġ{ ĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġcenter Section Field Ġ= ĠReflection Field ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPipe Flow Fluid :: class . java , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠClass . forName (" ale xi il . mc . mod . pipes . blocks . Pipe Flow Fluid \$ Center Section "), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" center Section " ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġfluid Field Ġ= ĠReflection Field ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠClass . forName (" ale xi il . mc . mod . pipes . blocks . Pipe Flow Fluid \$ Section "), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠFluid Volume :: class . java , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" fluid " ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġcenter Section Ġby Ġcenter Section Field ĊĠĠĠ Ġprivate Ġvar Ġfluid : ĠFluid Volume ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġfluid Field [ center Section ] ĊĠĠĠĠĠĠĠ Ġset ( value ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfluid Field [ center Section ] Ġ= Ġvalue ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġtick () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ(! world (). is Client ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtile Ġ= Ġpipe Ġas ĠTile Pipe Fluid Source ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġview Ġ= ĠFluid Attributes . GRO U PED _ INV _ VIEW [ tile . source Inv . get Stack ( 0 )] ĊĠĠĠĠĠĠĠĠĠĠĠ Ġview . stored Fluid s . first OrNull ()?. let Ġ{ Ġfluid Key Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġamount Ġ= ĠSECTION _ CAP ACITY Ġ- Ġfluid . amount ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! fluid Key . isEmpty Ġ&& Ġamount Ġ> Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmerged Ġ= ĠFluid Volume . merge ( fluid , Ġfluid Key . with Amount ( amount )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmerged ?. let Ġ{ Ġfluid Ġ= Ġit Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġsuper . tick () ĊĠĠĠ Ġ} Ċ } Ċ