package Ġme . tech chr ism . portal gun Ċ Ċ import Ġorg . bukkit . Color Ċ import Ġorg . bukkit . entity . Fall ing Block Ċ Ċ class ĠPortal Pair Ġ{ ĊĠĠĠ Ġprivate Ġvar Ġfirst : ĠPortal ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġsecond : ĠPortal ? Ġ= Ġnull ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠF ires Ġthe Ġfirst Ġportal ĊĠĠĠĠ Ġ* Ġ@ param Ġcandidate ĠPortal Candidate Ġthe Ġvalid Ġcandidate Ġlocation Ġto Ġfire Ġto ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġfire First ( candidate : ĠPortal Candidate ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( first Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfirst !!. destroy () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġfirst Ġ= ĠPortal ( candidate ) ĊĠĠĠĠĠĠĠ Ġfirst !!. color Ġ= ĠColor . BLUE ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠF ires Ġthe Ġsecond Ġportal ĊĠĠĠĠ Ġ* Ġ@ param Ġcandidate ĠPortal Candidate Ġthe Ġvalid Ġcandidate Ġlocation Ġto Ġfire Ġto ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġfire Second ( candidate : ĠPortal Candidate ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( second Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsecond !!. destroy () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġsecond Ġ= ĠPortal ( candidate ) ĊĠĠĠĠĠĠĠ Ġsecond !!. color Ġ= ĠColor . OR ANGE ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠRemoves Ġboth Ġport als ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġclear () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( first Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfirst !!. destroy () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfirst Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( second Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsecond !!. destroy () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsecond Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠEns ures Ġthe Ġfalling Ġs and Ġdoesn 't Ġdrop Ġas Ġan Ġitem ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġreset Fall ing Timer () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( first Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( first !!. top Entity Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfirst !!. top Entity !!. ticks L ived Ġ= Ġ 1 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( first !!. bottom Entity Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfirst !!. bottom Entity !!. ticks L ived Ġ= Ġ 1 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( second Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( second !!. top Entity Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsecond !!. top Entity !!. ticks L ived Ġ= Ġ 1 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( second !!. bottom Entity Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsecond !!. bottom Entity !!. ticks L ived Ġ= Ġ 1 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠDraw s Ġparticles Ġfor Ġthe Ġport als ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġdraw Particles () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( first Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfirst !!. draw Particles () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( second Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsecond !!. draw Particles () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠRuns Ġtele port ation Ġchecks Ġif Ġboth Ġport als Ġare Ġformed ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġcheck Teleport ation () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( first Ġ== Ġnull Ġ|| Ġsecond Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( first !!. bottom Entity Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcheck Entity ( first !!. bottom Entity !! , Ġsecond !! , Ġfirst !! , Ġfalse ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( first !!. top Entity Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcheck Entity ( first !!. top Entity !! , Ġsecond !! , Ġfirst !! , Ġtrue ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( second !!. bottom Entity Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcheck Entity ( second !!. bottom Entity !! , Ġfirst !! , Ġsecond !! , Ġfalse ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( second !!. top Entity Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcheck Entity ( second !!. top Entity !! , Ġfirst !! , Ġsecond !! , Ġtrue ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠChecks Ġs uction ing Ġfor Ġboth Ġport als ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġcheck S uction ing () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( first Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfirst !!. check S uction ing () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( second Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsecond !!. check S uction ing () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠPredict s Ġtele port ation Ġif Ġboth Ġport als Ġare Ġformed ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġpredict Teleport ation () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( first Ġ!= Ġnull Ġ&& Ġsecond Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfirst !!. predict Teleport ation ( second !! ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsecond !!. predict Teleport ation ( first !! ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠChecks Ġfor Ġand Ġtele ports Ġnearby Ġentities ĊĠĠĠĠ Ġ* Ġ@ param Ġfalling ĠFall ing Block Ġthe Ġfalling Ġs and Ġused Ġas Ġa Ġbounding Ġbox Ġto Ġfind Ġnearby Ġentities ĊĠĠĠĠ Ġ* Ġ@ param Ġto ĠPortal Ġthe Ġportal Ġbeing Ġtele port ed Ġto ĊĠĠĠĠ Ġ* Ġ@ param Ġfrom ĠPortal Ġthe Ġportal Ġbeing Ġtele port ed Ġfrom ĊĠĠĠĠ Ġ* Ġ@ param Ġtop ĠBoolean Ġwhether Ġthe Ġfalling Ġs and Ġis Ġfrom Ġthe Ġtop Ġor Ġbottom Ġof Ġthe Ġportal ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġcheck Entity ( fall ing : ĠFall ing Block , Ġto : ĠPortal , Ġfrom : ĠPortal , Ġtop : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ Ġfor Ġ( e Ġin Ġfalling . get Near by Entities ( 0 . 0 , Ġ 0 . 0 , Ġ 0 . 0 )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġid Ġ= Ġe . unique Id ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( first !!. top ID Ġ=== Ġid ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontinue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( first !!. bottom ID Ġ=== Ġid ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontinue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( second !!. top ID Ġ=== Ġid ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontinue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( second !!. bottom ID Ġ=== Ġid ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontinue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġto . tele port Here ( e , Ġfrom . facing , Ġtop ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }