package Ġcom . le oct h . d run kf let ch int able . old . widgets Ċ Ċ import Ġcom . le oct h . d run kf let ch int able . F let ch in Table Block Entity . Companion . TI PP ING _ MAX _ USE S Ċ import Ġcom . le oct h . d run kf let ch int able . F let ch in Table Screen Handler Ċ import Ġcom . le oct h . d run kf let ch int able . old . MOD ID Ċ import Ġcom . le oct h . d run kf let ch int able . old . PACKET _ C 2 S _ FT _ DR AIN Ċ import Ġcom . le oct h . d run kf let ch int able . old . is Shift Pressed Ċ import Ġcom . moj ang . bl aze 3 d . systems . Render System Ċ import Ġio . netty . buffer . Un p ooled Ċ import Ġnet . fabric mc . fabric . api . network . Client Side Packet Registry Ċ import Ġnet . minecraft . client . Minecraft Client Ċ import Ġnet . minecraft . client . util . math . Matrix Stack Ċ import Ġnet . minecraft . entity . effect . Status Effect Util Ċ import Ġnet . minecraft . network . Packet Byte Buf Ċ import Ġnet . minecraft . p otion . P otion Util Ċ import Ġnet . minecraft . p otion . Pot ions Ċ import Ġnet . minecraft . text . Text Ċ import Ġnet . minecraft . text . TextColor Ċ import Ġnet . minecraft . text . Trans latable Text Ċ import Ġnet . minecraft . util . Identifier Ċ import Ġkotlin . math . abs Ċ Ċ class ĠT ipping Screen Widget ( ĊĠĠĠ Ġprivate Ġval Ġclient : ĠMinecraft Client ?, ĊĠĠĠ Ġprivate Ġval Ġx : ĠInt , ĊĠĠĠ Ġprivate Ġval Ġy : ĠInt , ĊĠĠĠ Ġprivate Ġval Ġhandler : ĠF let ch in Table Screen Handler Ċ ): ĠF let ch in Screen Widget () Ġ{ ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġval ĠTEXT URE Ġ= ĠIdentifier ( MOD ID , Ġ" textures / gui / f let ch in _ table / t ipping . png ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonMouse Click ( mouse X : ĠDouble , ĠmouseY : ĠDouble , Ġbutton : ĠInt ): ĠBoolean ? Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġp otion Ġ= Ġhandler . getP otion () ĊĠĠĠĠĠĠĠ Ġif Ġ( p otion Ġ!= ĠPot ions . EMPTY ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġprogress Ġ= Ġhandler . getDisplay Progress () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġoffset Ġ= Ġ( 3 4 Ġ* Ġprogress Ġ/ ĠT IP PING _ MAX _ USE S ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmx Ġ= Ġmouse X . toInt () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmy Ġ= ĠmouseY . toInt () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( mx Ġin Ġx + 9 0 .. x + 1 4 5 Ġ&& Ġmy Ġin Ġy + 5 1 - offset .. y + 5 1 Ġ&& Ġis Shift Pressed ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdrain P otion () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġnull ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġrender ( matrices : ĠMatrix Stack ?, Ġmouse X : ĠInt , ĠmouseY : ĠInt , Ġdelta : ĠFloat ) Ġ{ ĊĠĠĠĠĠĠĠ ĠRender System . color 4 f ( 1 . 0 f , Ġ 1 . 0 f , Ġ 1 . 0 f , Ġ 1 . 0 f ) ĊĠĠĠĠĠĠĠ Ġclient ?. texture Manager ?. bind Texture ( TEXTURE ) ĊĠĠĠĠĠĠĠ Ġdraw Texture ( matrices , Ġx + 4 5 , Ġy + 1 7 , Ġ 0 , Ġ 0 , Ġ 1 6 0 , Ġ 6 1 ) ĊĠĠĠĠĠĠĠ Ġval Ġp otion Ġ= Ġhandler . getP otion () ĊĠĠĠĠĠĠĠ Ġif Ġ( p otion Ġ!= ĠPot ions . EMPTY ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcolor Ġ= ĠP otion Util . getColor ( p otion ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġprogress Ġ= Ġhandler . getDisplay Progress () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġprog Ġ= Ġhandler . getT ipping Progress () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġoffset Ġ= Ġ( 3 4 Ġ* Ġprogress Ġ/ ĠT IP PING _ MAX _ USE S ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġr Ġ= Ġ( color Ġshr Ġ 1 6 Ġand Ġ 2 5 5 ) Ġ/ Ġ 2 5 5 f ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġg Ġ= Ġ( color Ġshr Ġ 8 Ġ Ġand Ġ 2 5 5 ) Ġ/ Ġ 2 5 5 f ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġb Ġ= Ġ( color ĠĠĠĠĠĠĠ Ġand Ġ 2 5 5 ) Ġ/ Ġ 2 5 5 f ĊĠĠĠĠĠĠĠĠĠĠĠ ĠRender System . color 4 f ( r , Ġg , Ġb , Ġ 1 . 0 f ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdraw Texture ( matrices , Ġx + 9 0 , Ġy + 5 1 - offset , Ġ 4 5 , Ġ 9 5 - offset , Ġ 5 5 , Ġoffset ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( prog Ġ> Ġ 0 f ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdraw Texture ( matrices , Ġx + 1 6 7 , Ġy + 4 2 , Ġ 1 2 2 , Ġ 8 6 , Ġ 2 7 , Ġ 3 6 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠRender System . color 4 f ( 1 . 0 f , Ġ 1 . 0 f , Ġ 1 . 0 f , Ġ 1 . 0 f ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( mouse X Ġin Ġx + 9 0 .. x + 1 4 5 Ġ&& ĠmouseY Ġin Ġy + 5 1 - offset .. y + 5 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtooltip Ġ= Ġp otion . effects . map Ġ{ Ġeffect Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġtext Ġ= ĠTrans latable Text ( effect . translation Key ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( effect . amp l ifier Ġ> Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtext Ġ= ĠTrans latable Text (" p otion . with A mpl ifier ", Ġtext , ĠTrans latable Text (" p otion . pot ency .${ effect . amp l ifier } ")) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtext . styled Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġi Ġneed Ġpol ish Ġnotation ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnr Ġ= Ġabs ((( r Ġ- Ġ 0 . 2 5 f ) Ġ* Ġ 1 . 7 f ) Ġ* Ġ 2 5 5 ). toInt () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġng Ġ= Ġabs ((( g Ġ- Ġ 0 . 2 5 f ) Ġ* Ġ 1 . 7 f ) Ġ* Ġ 2 5 5 ). toInt () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnb Ġ= Ġabs ((( b Ġ- Ġ 0 . 2 5 f ) Ġ* Ġ 1 . 7 f ) Ġ* Ġ 2 5 5 ). toInt () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġn rgb Ġ= Ġ( nr Ġshl Ġ 1 6 ) Ġor Ġ( ng Ġshl Ġ 8 ) Ġor Ġnb ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . with Color ( TextColor . from Rgb ( n rgb )). with Bold ( effect . amp l ifier Ġ> Ġ 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( effect . duration Ġ> Ġ 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtext Ġ= ĠTrans latable Text (" p otion . with Duration ", Ġtext , ĠStatus Effect Util . duration ToString ( effect , Ġ 1 . 0 f )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtext ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}. to Mutable List () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtooltip . add ( Trans latable Text (" tooltip . d run kf let ch int able . t ipping . drain ")) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġclient ?. current Screen ?. render Tooltip ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmatrices , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtooltip Ġas ĠList < Text >, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmouse X , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠmouseY ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġdrain P otion () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġbuf Ġ= ĠPacket Byte Buf ( Un p ooled . buffer ()) ĊĠĠĠĠĠĠĠ Ġbuf . write Var Int ( handler . sync Id ) ĊĠĠĠĠĠĠĠ ĠClient Side Packet Registry . INSTANCE . send ToServer ( PACKET _ C 2 S _ FT _ DR AIN , Ġbuf ) ĊĠĠĠ Ġ} Ċ }