package Ġk ot x . custom gui . gui Ċ Ċ import Ġcom . moj ang . bl aze 3 d . matrix . Matrix Stack Ċ import Ġk ot x . custom gui . util . font Renderer Ċ import Ġk ot x . custom gui . util . mc Ċ import Ġnet . minecraft . client . gui . screen . Screen Ċ import Ġnet . minecraft . client . gui . widget . TextField Widget Ċ import Ġnet . minecraft . client . gui . widget . button . Button Ċ import Ġjava . awt . Color Ċ import Ġkotlin . math . max Ċ import Ġkotlin . math . min Ċ Ċ open Ġclass ĠGUI Ġ{ ĊĠĠĠ Ġprotected Ġval Ġhandler Ġ= ĠGUI Handler ( this ) ĊĠĠĠ Ġval Ġwidth ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġhandler . width ĊĠĠĠ Ġval Ġheight ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġhandler . height ĊĠĠĠ Ġval Ġbuttons ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġhandler . buttons ĊĊĠĠĠ Ġopen Ġfun Ġinitialize () Ġ{ ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġopen Ġfun Ġdraw ( stack : ĠMatrix Stack , Ġmouse X : ĠInt , ĠmouseY : ĠInt ) Ġ{ ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġopen Ġfun ĠonMouse Drag ( button : ĠMouse Button , Ġmouse X : ĠInt , ĠmouseY : ĠInt ) Ġ{ ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġopen Ġfun ĠonMouse Drag Diff ( button : ĠMouse Button , Ġx : ĠInt , Ġy : ĠInt ) Ġ{ ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġopen Ġfun ĠonMouse Move ( mouse X : ĠInt , ĠmouseY : ĠInt ) Ġ{ ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġopen Ġfun ĠonMouse Press ( button : ĠMouse Button , Ġmouse X : ĠInt , ĠmouseY : ĠInt ) Ġ{ ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġopen Ġfun ĠonMouse Release ( button : ĠMouse Button , Ġmouse X : ĠInt , ĠmouseY : ĠInt ) Ġ{ ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġopen Ġfun Ġon KeyPress ( key : ĠInt , Ġmodifiers : ĠInt ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġopen Ġfun Ġon Key Release ( key : ĠInt , Ġmodifiers : ĠInt ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġopen Ġfun ĠonClose () Ġ{ ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġbutton ( text : ĠString , Ġx : ĠInt , Ġy : ĠInt , Ġwidth : ĠInt , Ġheight : ĠInt , ĠonClick : ĠButton . () Ġ-> ĠUnit Ġ= Ġ{} ): ĠButton Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġhandler . button ( text , Ġx , Ġy , Ġwidth , Ġheight , ĠonClick ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġbutton ( text : ĠString , Ġx : ĠInt , Ġy : ĠInt , ĠonClick : ĠButton . () Ġ-> ĠUnit Ġ= Ġ{} ): ĠButton Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġwidth Ġ= Ġfont Renderer . getString Width ( text ) Ġ+ Ġ 5 0 ĊĠĠĠĠĠĠĠ Ġval Ġheight Ġ= Ġfont Renderer . FONT _ HEIGHT Ġ+ Ġ 1 1 ĊĊĠĠĠĠĠĠĠ Ġreturn Ġhandler . button ( text , Ġx , Ġy , Ġwidth , Ġheight , ĠonClick ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġbutton Center ( text : ĠString , Ġx : ĠInt , Ġy : ĠInt , Ġwidth : ĠInt , Ġheight : ĠInt , ĠonClick : ĠButton . () Ġ-> ĠUnit Ġ= Ġ{} ): ĠButton Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġhandler . button ( text , Ġx Ġ- Ġwidth Ġ/ Ġ 2 , Ġy Ġ- Ġheight Ġ/ Ġ 2 , Ġwidth , Ġheight , ĠonClick ) ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġfun Ġbutton Center ( text : ĠString , Ġx : ĠInt , Ġy : ĠInt , ĠonClick : ĠButton . () Ġ-> ĠUnit Ġ= Ġ{} ): ĠButton Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġwidth Ġ= Ġfont Renderer . getString Width ( text ) Ġ+ Ġ 5 0 ĊĠĠĠĠĠĠĠ Ġval Ġheight Ġ= Ġfont Renderer . FONT _ HEIGHT Ġ+ Ġ 1 1 ĊĊĠĠĠĠĠĠĠ Ġreturn Ġhandler . button ( text , Ġx Ġ- Ġwidth Ġ/ Ġ 2 , Ġy Ġ- Ġheight Ġ/ Ġ 2 , Ġwidth , Ġheight , ĠonClick ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġtext Field ( title : ĠString , Ġx : ĠInt , Ġy : ĠInt , Ġwidth : ĠInt , Ġheight : ĠInt ): ĠTextField Widget Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġhandler . textField ( title , Ġx , Ġy , Ġwidth , Ġheight ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġtext Field ( title : ĠString , Ġx : ĠInt , Ġy : ĠInt ): ĠTextField Widget Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġwidth Ġ= Ġfont Renderer . getString Width ( title ) Ġ+ Ġ 5 0 ĊĠĠĠĠĠĠĠ Ġval Ġheight Ġ= Ġfont Renderer . FONT _ HEIGHT Ġ+ Ġ 1 1 ĊĊĠĠĠĠĠĠĠ Ġreturn Ġhandler . textField ( title , Ġx , Ġy , Ġwidth , Ġheight ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġtext Field Center ( title : ĠString , Ġx : ĠInt , Ġy : ĠInt , Ġwidth : ĠInt , Ġheight : ĠInt ): ĠTextField Widget Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġhandler . textField ( title , Ġx Ġ- Ġwidth Ġ/ Ġ 2 , Ġy Ġ- Ġheight Ġ/ Ġ 2 , Ġwidth , Ġheight ) ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġfun Ġtext Field Center ( title : ĠString , Ġx : ĠInt , Ġy : ĠInt ): ĠTextField Widget Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġwidth Ġ= Ġfont Renderer . getString Width ( title ) Ġ+ Ġ 5 0 ĊĠĠĠĠĠĠĠ Ġval Ġheight Ġ= Ġfont Renderer . FONT _ HEIGHT Ġ+ Ġ 1 1 ĊĊĠĠĠĠĠĠĠ Ġreturn Ġhandler . textField ( title , Ġx Ġ- Ġwidth Ġ/ Ġ 2 , Ġy Ġ- Ġheight Ġ/ Ġ 2 , Ġwidth , Ġheight ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġfun Ġrect ( stack : ĠMatrix Stack , Ġx 1 : ĠInt , Ġy 1 : ĠInt , Ġx 2 : ĠInt , Ġy 2 : ĠInt , Ġcolor : ĠColor ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmin X Ġ= Ġmin ( x 1 , Ġx 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmax X Ġ= Ġmax ( x 1 , Ġx 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmin Y Ġ= Ġmin ( y 1 , Ġy 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmax Y Ġ= Ġmax ( y 1 , Ġy 2 ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠScreen . fill ( stack , Ġmin X , Ġmin Y , Ġmax X , Ġmax Y , Ġcolor . rgb ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġrect Center ( stack : ĠMatrix Stack , Ġx : ĠInt , Ġy : ĠInt , Ġwidth : ĠInt , Ġheight : ĠInt , Ġcolor : ĠColor ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġis Even Width Ġ= Ġwidth Ġ% Ġ 2 Ġ== Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġis Even Height Ġ= Ġheight Ġ% Ġ 2 Ġ== Ġ 0 ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdx Ġ= Ġif Ġ( is Even Width ) Ġwidth Ġ/ Ġ 2 Ġelse Ġ( width Ġ- Ġ 1 ) Ġ/ Ġ 2 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdy Ġ= Ġif Ġ( is Even Height ) Ġ( height Ġ/ Ġ 2 ) Ġelse Ġ( height Ġ- Ġ 1 ) Ġ/ Ġ 2 ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġrect ( stack , Ġx Ġ- Ġdx , Ġy Ġ- Ġdy , Ġx Ġ+ Ġdx , Ġy Ġ+ Ġdy , Ġcolor ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġtext ( stack : ĠMatrix Stack , Ġtext : ĠString , Ġx : ĠInt , Ġy : ĠInt , Ġcolor : ĠColor , Ġshadow : ĠBoolean Ġ= Ġfalse ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( shadow ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfont Renderer . draw String With Shadow ( stack , Ġtext , Ġx . toFloat (), Ġy . toFloat (), Ġcolor . rgb ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfont Renderer . draw String ( stack , Ġtext , Ġx . toFloat (), Ġy . toFloat (), Ġcolor . rgb ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġtext Center ( stack : ĠMatrix Stack , Ġtext : ĠString , Ġx : ĠInt , Ġy : ĠInt , Ġcolor : ĠColor ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġwidth Ġ= Ġfont Renderer . getString Width ( text ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġheight Ġ= Ġfont Renderer . FONT _ HEIGHT ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtext ( stack , Ġtext , Ġx Ġ- Ġwidth Ġ/ Ġ 2 , Ġy Ġ- Ġheight Ġ/ Ġ 2 , Ġcolor ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġtext Right ( stack : ĠMatrix Stack , Ġtext : ĠString , Ġx : ĠInt , Ġy : ĠInt , Ġcolor : ĠColor ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġwidth Ġ= Ġfont Renderer . getString Width ( text ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġheight Ġ= Ġfont Renderer . FONT _ HEIGHT ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtext ( stack , Ġtext , Ġx Ġ- Ġwidth , Ġy Ġ- Ġheight , Ġcolor ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġtext Shadow ( stack : ĠMatrix Stack , Ġtext : ĠString , Ġx : ĠInt , Ġy : ĠInt , Ġcolor : ĠColor ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtext ( stack , Ġtext , Ġx , Ġy , Ġcolor , Ġtrue ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġtext Shadow Center ( stack : ĠMatrix Stack , Ġtext : ĠString , Ġx : ĠInt , Ġy : ĠInt , Ġcolor : ĠColor ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġwidth Ġ= Ġfont Renderer . getString Width ( text ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġheight Ġ= Ġfont Renderer . FONT _ HEIGHT ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtext ( stack , Ġtext , Ġx Ġ- Ġwidth Ġ/ Ġ 2 , Ġy Ġ- Ġheight Ġ/ Ġ 2 , Ġcolor , Ġtrue ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġtext Shadow Right ( stack : ĠMatrix Stack , Ġtext : ĠString , Ġx : ĠInt , Ġy : ĠInt , Ġcolor : ĠColor ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġwidth Ġ= Ġfont Renderer . getString Width ( text ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġheight Ġ= Ġfont Renderer . FONT _ HEIGHT ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtext ( stack , Ġtext , Ġx Ġ- Ġwidth , Ġy Ġ- Ġheight , Ġcolor , Ġtrue ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġdisplay ( gui : ĠGUI ? Ġ= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmc . display Gui Screen ( gui ?. handler ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }