package Ġcom . github . hot m . command Ċ Ċ import Ġcom . github . hot m . Hot M Constants Ċ import Ġcom . github . hot m . world . Hot MD im ensions Ċ import Ġcom . github . hot m . world . gen . Hot MP ort al Gen Ċ import Ġcom . moj ang . b rig ad ier . Command Dispatcher Ċ import Ġcom . moj ang . b rig ad ier . context . Command Context Ċ import Ġcom . moj ang . b rig ad ier . exceptions . Simple Command Exception Type Ċ import Ġnet . minecraft . server . command . Command Manager Ċ import Ġnet . minecraft . server . command . Server Command Source Ċ import Ġnet . minecraft . text .* Ċ import Ġnet . minecraft . util . Formatting Ċ import Ġnet . minecraft . util . math . Block Pos Ċ import Ġnet . minecraft . util . math . Math Helper Ċ import Ġnet . minecraft . util . math . Vec 3 i Ċ Ċ object ĠRet ro gen Portal Command Ġ{ ĊĠĠĠ Ġprivate Ġconst Ġval ĠCOMMAND _ NAME Ġ= Ġ" ret ro gen _ nect ere _ portal " ĊĠĠĠ Ġprivate Ġval ĠFAILED _ EXCEPTION Ġ= ĠSimple Command Exception Type ( Hot M Constants . command Text ("$ COMMAND _ NAME . failed ")) ĊĠĠĠ Ġprivate Ġval ĠWR ONG _ WORLD _ EXCEPTION Ġ= ĊĠĠĠĠĠĠĠ ĠSimple Command Exception Type ( Hot M Constants . command Text ("$ COMMAND _ NAME . wrong _ world ")) ĊĊĠĠĠ Ġfun Ġregister ( dispatcher : ĠCommand Dispatcher < Server Command Source >) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcommand Ġ= ĠCommand Manager . literal ( COMMAND _ NAME ). requires Ġ{ Ġit . has Permission Level ( 2 ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. exec utes ( Ret ro gen Portal Command :: execute ) ĊĊĠĠĠĠĠĠĠ Ġdispatcher . register ( command ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġexecute ( context : ĠCommand Context < Server Command Source >): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġsource Ġ= Ġcontext . source ĊĠĠĠĠĠĠĠ Ġval Ġsource Pos Ġ= ĠBlockPos ( source . position ) ĊĠĠĠĠĠĠĠ Ġval Ġsource World Ġ= Ġsource . world ĊĊĠĠĠĠĠĠĠ Ġif Ġ( source World . registry Key Ġ== ĠHot MD im ensions . NECT ERE _ KEY ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠWR ONG _ WORLD _ EXCEPTION . create () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġwhen Ġ( val Ġres Ġ= ĠHot MP ort al Gen . ret ro gen Non N ect ere Side Portal ( source . world , Ġsource Pos , Ġ 1 0 0 )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠHot MP ort al Gen . Ret ro gen Portal Result . Failure Ġ-> Ġthrow ĠFAILED _ EXCEPTION . create () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠHot MP ort al Gen . Ret ro gen Portal Result . Found Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsend Coordinates ( source , Ġsource Pos , Ġres . block Pos , Ġ" found ", Ġfalse ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠHot MP ort al Gen . Ret ro gen Portal Result . Generated Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsend Coordinates ( source , Ġsource Pos , Ġres . block Pos , Ġ" generated ", Ġtrue ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 1 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġsend Coordinates ( ĊĠĠĠĠĠĠĠ Ġsource : ĠServer Command Source , ĊĠĠĠĠĠĠĠ Ġsource Pos : ĠBlockPos , ĊĠĠĠĠĠĠĠ Ġstructure Pos : ĠBlockPos , ĊĠĠĠĠĠĠĠ Ġsuffix : ĠString , ĊĠĠĠĠĠĠĠ Ġbroadcast To Ops : ĠBoolean ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġi Ġ= ĠMath Helper . floor ( get Distance ( source Pos , Ġstructure Pos )) ĊĠĠĠĠĠĠĠ Ġval Ġtext : ĠText Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠText s . bracket ed ( Trans latable Text (" chat . coordinates ", Ġstructure Pos . x , Ġstructure Pos . y , Ġstructure Pos . z )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. styled Ġ{ Ġstyle : ĠStyle Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstyle . with Color ( Formatting . GREEN ). with Click Event ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠClick Event ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠClick Event . Action . SU G GEST _ COMMAND , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"/ tp Ġ@ s Ġ${ structure Pos . x } Ġ${ structure Pos . y } Ġ${ structure Pos . z }" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ). with Hover Event ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠHover Event ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠHover Event . Action . SHOW _ TEXT , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTrans latable Text (" chat . coordinates . tooltip ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġsource . send Feedback ( Hot M Constants . command Text ("$ COMMAND _ NAME .$ suffix ", Ġtext , Ġi ), Ġbroadcast To Ops ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġget Distance ( pos 1 : ĠVec 3 i , Ġpos 2 : ĠVec 3 i ): ĠFloat Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġi Ġ= Ġpos 2 . x Ġ- Ġpos 1 . x ĊĠĠĠĠĠĠĠ Ġval Ġj Ġ= Ġpos 2 . y Ġ- Ġpos 1 . y ĊĠĠĠĠĠĠĠ Ġreturn ĠMath Helper . sqrt (( i Ġ* Ġi Ġ+ Ġj Ġ* Ġj ). toFloat ()) ĊĠĠĠ Ġ} Ċ }