/* Ċ Ġ* ĠĠĠĠĠ ĠSand stone API Ġ- ĠMinecraft ĠServer ĠMod ding ĠAPI Ċ Ġ* Ċ Ġ* ĠĠĠĠĠĠĠĠ ĠThe ĠMIT ĠLicense Ġ( MIT ) Ċ Ġ* Ċ Ġ* ĠĠĠĠĠ ĠCopyright Ġ( c ) ĠSand stone Ġ< https :// github . com / Project Sand stone /> Ċ Ġ* ĠĠĠĠĠ ĠCopyright Ġ( c ) Ġcontributors Ċ Ġ* Ċ Ġ* Ċ Ġ* ĠĠĠĠĠ ĠPermission Ġis Ġhereby Ġgranted , Ġfree Ġof Ġcharge , Ġto Ġany Ġperson Ġobtaining Ġa Ġcopy Ċ Ġ* ĠĠĠĠĠ Ġof Ġthis Ġsoftware Ġand Ġassociated Ġdocumentation Ġfiles Ġ( the Ġ" Software "), Ġto Ġdeal Ċ Ġ* ĠĠĠĠĠ Ġin Ġthe ĠSoftware Ġwithout Ġrestriction , Ġincluding Ġwithout Ġlimitation Ġthe Ġrights Ċ Ġ* ĠĠĠĠĠ Ġto Ġuse , Ġcopy , Ġmodify , Ġmerge , Ġpublish , Ġdistribute , Ġsublicense , Ġand / or Ġsell Ċ Ġ* ĠĠĠĠĠ Ġcopies Ġof Ġthe ĠSoftware , Ġand Ġto Ġpermit Ġpersons Ġto Ġwhom Ġthe ĠSoftware Ġis Ċ Ġ* ĠĠĠĠĠ Ġfurnished Ġto Ġdo Ġso , Ġsubject Ġto Ġthe Ġfollowing Ġconditions : Ċ Ġ* Ċ Ġ* ĠĠĠĠĠ ĠThe Ġabove Ġcopyright Ġnotice Ġand Ġthis Ġpermission Ġnotice Ġshall Ġbe Ġincluded Ġin Ċ Ġ* ĠĠĠĠĠ Ġall Ġcopies Ġor Ġsubstantial Ġportions Ġof Ġthe ĠSoftware . Ċ Ġ* Ċ Ġ* ĠĠĠĠĠ ĠTHE ĠSOFTWARE ĠIS ĠPROVIDED Ġ" AS ĠIS ", ĠWITHOUT ĠWARRANTY ĠOF ĠANY ĠKIND , ĠEXPRESS ĠOR Ċ Ġ* ĠĠĠĠĠ ĠIMPLIED , ĠINCLUDING ĠBUT ĠNOT ĠLIMITED ĠTO ĠTHE ĠWARRANTIES ĠOF ĠMERCHANTABILITY , Ċ Ġ* ĠĠĠĠĠ ĠFITNESS ĠFOR ĠA ĠPARTICULAR ĠPURPOSE ĠAND ĠNONINFRINGEMENT . ĠIN ĠNO ĠEVENT ĠSHALL ĠTHE Ċ Ġ* ĠĠĠĠĠ ĠAUTHORS ĠOR ĠCOPYRIGHT ĠHOLDERS ĠBE ĠLIABLE ĠFOR ĠANY ĠCLAIM , ĠDAMAGES ĠOR ĠOTHER Ċ Ġ* ĠĠĠĠĠ ĠLIABILITY , ĠWHETHER ĠIN ĠAN ĠACTION ĠOF ĠCONTRACT , ĠTORT ĠOR ĠOTHERWISE , ĠARISING ĠFROM , Ċ Ġ* ĠĠĠĠĠ ĠOUT ĠOF ĠOR ĠIN ĠCONNECTION ĠWITH ĠTHE ĠSOFTWARE ĠOR ĠTHE ĠUSE ĠOR ĠOTHER ĠDEALINGS ĠIN Ċ Ġ* ĠĠĠĠĠ ĠTHE ĠSOFTWARE . Ċ Ġ*/ Ċ package Ġcom . github . projects and stone . api . util . extension . sponge . math Ċ Ċ import Ġorg . spongepowered . math . vector .* Ċ Ċ // ĠVector Ġ 2 Ċ Ċ internal Ġclass ĠVector 2 i Iterator ( val Ġstart : ĠVector 2 i , Ġend Inclusive : ĠVector 2 i ) Ġ: ĠIterator < Vector 2 i > Ġ{ ĊĊĠĠĠ Ġprivate Ġvar Ġx : ĠInt Ġ= Ġstart . x Ġ- Ġ 1 ĊĠĠĠ Ġprivate Ġvar Ġy : ĠInt Ġ= Ġstart . y ĊĊĠĠĠ Ġprivate Ġval Ġend X : ĠInt Ġ= Ġend Inclusive . x ĊĠĠĠ Ġprivate Ġval Ġend Y : ĠInt Ġ= Ġend Inclusive . y ĊĊĠĠĠ Ġoverride Ġfun Ġhas Next () Ġ= Ġhas Next X () Ġ|| Ġhas Next Y () ĊĊĠĠĠ Ġfun Ġhas Next X () Ġ= Ġx Ġ+ Ġ 1 Ġ<= Ġend X ĊĠĠĠ Ġfun Ġhas Next Y () Ġ= Ġy Ġ+ Ġ 1 Ġ<= Ġend Y ĊĊĠĠĠ Ġoverride Ġfun Ġnext (): ĠVector 2 i Ġ{ ĊĊĠĠĠĠĠĠĠ Ġif Ġ( this . hasNext X ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ++ x ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( this . hasNext Y ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġx Ġ= Ġstart . x ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ++ y ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠNoSuch ElementException () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn ĠVector 2 i ( x , Ġy ) ĊĠĠĠ Ġ} Ċ Ċ } Ċ Ċ internal Ġclass ĠVector 2 l Iterator ( val Ġstart : ĠVector 2 l , Ġend Inclusive : ĠVector 2 l ) Ġ: ĠIterator < Vector 2 l > Ġ{ ĊĊĠĠĠ Ġprivate Ġvar Ġx : ĠLong Ġ= Ġstart . x Ġ- Ġ 1 ĊĠĠĠ Ġprivate Ġvar Ġy : ĠLong Ġ= Ġstart . y ĊĊĠĠĠ Ġprivate Ġval Ġend X : ĠLong Ġ= Ġend Inclusive . x ĊĠĠĠ Ġprivate Ġval Ġend Y : ĠLong Ġ= Ġend Inclusive . y ĊĊĠĠĠ Ġoverride Ġfun Ġhas Next () Ġ= Ġhas Next X () Ġ|| Ġhas Next Y () ĊĊĠĠĠ Ġfun Ġhas Next X () Ġ= Ġx Ġ+ Ġ 1 Ġ<= Ġend X ĊĠĠĠ Ġfun Ġhas Next Y () Ġ= Ġy Ġ+ Ġ 1 Ġ<= Ġend Y ĊĊĠĠĠ Ġoverride Ġfun Ġnext (): ĠVector 2 l Ġ{ ĊĊĠĠĠĠĠĠĠ Ġif Ġ( hasNext X ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ++ x ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( hasNext Y ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġx Ġ= Ġstart . x ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ++ y ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠNoSuch ElementException () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn ĠVector 2 l ( x , Ġy ) ĊĠĠĠ Ġ} Ċ Ċ } Ċ Ċ // ĠVector Ġ 3 Ċ Ċ internal Ġclass ĠVector 3 i Iterator ( val Ġstart : ĠVector 3 i , Ġend Inclusive : ĠVector 3 i ) Ġ: ĠIterator < Vector 3 i > Ġ{ ĊĊĠĠĠ Ġprivate Ġvar Ġx : ĠInt Ġ= Ġstart . x Ġ- Ġ 1 ĊĠĠĠ Ġprivate Ġvar Ġy : ĠInt Ġ= Ġstart . y ĊĠĠĠ Ġprivate Ġvar Ġz : ĠInt Ġ= Ġstart . z ĊĊĠĠĠ Ġprivate Ġval Ġend X : ĠInt Ġ= Ġend Inclusive . x ĊĠĠĠ Ġprivate Ġval Ġend Y : ĠInt Ġ= Ġend Inclusive . y ĊĠĠĠ Ġprivate Ġval Ġend Z : ĠInt Ġ= Ġend Inclusive . z ĊĊĠĠĠ Ġoverride Ġfun Ġhas Next () Ġ= Ġhas Next X () Ġ|| Ġhas Next Y () Ġ|| Ġhas Next Z () ĊĊĠĠĠ Ġfun Ġhas Next X () Ġ= Ġx Ġ+ Ġ 1 Ġ<= Ġend X ĊĠĠĠ Ġfun Ġhas Next Y () Ġ= Ġy Ġ+ Ġ 1 Ġ<= Ġend Y ĊĠĠĠ Ġfun Ġhas Next Z () Ġ= Ġz Ġ+ Ġ 1 Ġ<= Ġend Z ĊĊĠĠĠ Ġoverride Ġfun Ġnext (): ĠVector 3 i Ġ{ ĊĊĠĠĠĠĠĠĠ Ġif Ġ( hasNext X ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ++ x ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( hasNext Y ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġx Ġ= Ġstart . x ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ++ y ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( hasNext Z ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġx Ġ= Ġstart . x ĊĠĠĠĠĠĠĠĠĠĠĠ Ġy Ġ= Ġstart . y ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ++ z ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠNoSuch ElementException () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn ĠVector 3 i ( x , Ġy , Ġz ) ĊĠĠĠ Ġ} Ċ Ċ } Ċ Ċ internal Ġclass ĠVector 3 l Iterator ( val Ġstart : ĠVector 3 l , Ġend Inclusive : ĠVector 3 l ) Ġ: ĠIterator < Vector 3 l > Ġ{ ĊĊĠĠĠ Ġprivate Ġvar Ġx : ĠLong Ġ= Ġstart . x Ġ- Ġ 1 ĊĠĠĠ Ġprivate Ġvar Ġy : ĠLong Ġ= Ġstart . y ĊĠĠĠ Ġprivate Ġvar Ġz : ĠLong Ġ= Ġstart . z ĊĊĠĠĠ Ġprivate Ġval Ġend X : ĠLong Ġ= Ġend Inclusive . x ĊĠĠĠ Ġprivate Ġval Ġend Y : ĠLong Ġ= Ġend Inclusive . y ĊĠĠĠ Ġprivate Ġval Ġend Z : ĠLong Ġ= Ġend Inclusive . z ĊĊĠĠĠ Ġoverride Ġfun Ġhas Next () Ġ= Ġhas Next X () Ġ|| Ġhas Next Y () Ġ|| Ġhas Next Z () ĊĊĠĠĠ Ġfun Ġhas Next X () Ġ= Ġx Ġ+ Ġ 1 Ġ<= Ġend X ĊĠĠĠ Ġfun Ġhas Next Y () Ġ= Ġy Ġ+ Ġ 1 Ġ<= Ġend Y ĊĠĠĠ Ġfun Ġhas Next Z () Ġ= Ġz Ġ+ Ġ 1 Ġ<= Ġend Z ĊĊĠĠĠ Ġoverride Ġfun Ġnext (): ĠVector 3 l Ġ{ ĊĊĠĠĠĠĠĠĠ Ġif Ġ( hasNext X ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ++ x ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( hasNext Y ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġx Ġ= Ġstart . x ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ++ y ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( hasNext Z ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġx Ġ= Ġstart . x ĊĠĠĠĠĠĠĠĠĠĠĠ Ġy Ġ= Ġstart . y ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ++ z ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠNoSuch ElementException () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn ĠVector 3 l ( x , Ġy , Ġz ) ĊĠĠĠ Ġ} Ċ Ċ } Ċ Ċ // ĠVector Ġ 4 Ċ Ċ internal Ġclass ĠVector 4 i Iterator ( val Ġstart : ĠVector 4 i , Ġend Inclusive : ĠVector 4 i ) Ġ: ĠIterator < Vector 4 i > Ġ{ ĊĊĠĠĠ Ġprivate Ġvar Ġx : ĠInt Ġ= Ġstart . x Ġ- Ġ 1 ĊĠĠĠ Ġprivate Ġvar Ġy : ĠInt Ġ= Ġstart . y ĊĠĠĠ Ġprivate Ġvar Ġz : ĠInt Ġ= Ġstart . z ĊĠĠĠ Ġprivate Ġvar Ġw : ĠInt Ġ= Ġstart . w ĊĊĠĠĠ Ġprivate Ġval Ġend X : ĠInt Ġ= Ġend Inclusive . x ĊĠĠĠ Ġprivate Ġval Ġend Y : ĠInt Ġ= Ġend Inclusive . y ĊĠĠĠ Ġprivate Ġval Ġend Z : ĠInt Ġ= Ġend Inclusive . z ĊĠĠĠ Ġprivate Ġval Ġend W : ĠInt Ġ= Ġend Inclusive . w ĊĊĠĠĠ Ġoverride Ġfun Ġhas Next () Ġ= Ġhas Next X () Ġ|| Ġhas Next Y () Ġ|| Ġhas Next Z () Ġ|| Ġhas Next W () ĊĊĠĠĠ Ġfun Ġhas Next X () Ġ= Ġx Ġ+ Ġ 1 Ġ<= Ġend X ĊĠĠĠ Ġfun Ġhas Next Y () Ġ= Ġy Ġ+ Ġ 1 Ġ<= Ġend Y ĊĠĠĠ Ġfun Ġhas Next Z () Ġ= Ġz Ġ+ Ġ 1 Ġ<= Ġend Z ĊĠĠĠ Ġfun Ġhas Next W () Ġ= Ġw Ġ+ Ġ 1 Ġ<= Ġend W ĊĊĠĠĠ Ġoverride Ġfun Ġnext (): ĠVector 4 i Ġ{ ĊĊĠĠĠĠĠĠĠ Ġif Ġ( hasNext X ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ++ x ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( hasNext Y ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġx Ġ= Ġstart . x ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ++ y ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( hasNext Z ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġx Ġ= Ġstart . x ĊĠĠĠĠĠĠĠĠĠĠĠ Ġy Ġ= Ġstart . y ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ++ z ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( hasNext W ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġx Ġ= Ġstart . x ĊĠĠĠĠĠĠĠĠĠĠĠ Ġy Ġ= Ġstart . y ĊĠĠĠĠĠĠĠĠĠĠĠ Ġz Ġ= Ġstart . z ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ++ w ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠNoSuch ElementException () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn ĠVector 4 i ( x , Ġy , Ġz , Ġw ) ĊĠĠĠ Ġ} Ċ Ċ } Ċ Ċ internal Ġclass ĠVector 4 l Iterator ( val Ġstart : ĠVector 4 l , Ġend Inclusive : ĠVector 4 l ) Ġ: ĠIterator < Vector 4 l > Ġ{ ĊĊĠĠĠ Ġprivate Ġvar Ġx : ĠLong Ġ= Ġstart . x Ġ- Ġ 1 ĊĠĠĠ Ġprivate Ġvar Ġy : ĠLong Ġ= Ġstart . y ĊĠĠĠ Ġprivate Ġvar Ġz : ĠLong Ġ= Ġstart . z ĊĠĠĠ Ġprivate Ġvar Ġw : ĠLong Ġ= Ġstart . w ĊĊĠĠĠ Ġprivate Ġval Ġend X : ĠLong Ġ= Ġend Inclusive . x ĊĠĠĠ Ġprivate Ġval Ġend Y : ĠLong Ġ= Ġend Inclusive . y ĊĠĠĠ Ġprivate Ġval Ġend Z : ĠLong Ġ= Ġend Inclusive . z ĊĠĠĠ Ġprivate Ġval Ġend W : ĠLong Ġ= Ġend Inclusive . w ĊĊĠĠĠ Ġoverride Ġfun Ġhas Next () Ġ= Ġhas Next X () Ġ|| Ġhas Next Y () Ġ|| Ġhas Next Z () Ġ|| Ġhas Next W () ĊĊĠĠĠ Ġfun Ġhas Next X () Ġ= Ġx Ġ+ Ġ 1 Ġ<= Ġend X ĊĠĠĠ Ġfun Ġhas Next Y () Ġ= Ġy Ġ+ Ġ 1 Ġ<= Ġend Y ĊĠĠĠ Ġfun Ġhas Next Z () Ġ= Ġz Ġ+ Ġ 1 Ġ<= Ġend Z ĊĠĠĠ Ġfun Ġhas Next W () Ġ= Ġw Ġ+ Ġ 1 Ġ<= Ġend W ĊĊĠĠĠ Ġoverride Ġfun Ġnext (): ĠVector 4 l Ġ{ ĊĊĠĠĠĠĠĠĠ Ġif Ġ( hasNext X ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ++ x ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( hasNext Y ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġx Ġ= Ġstart . x ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ++ y ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( hasNext Z ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġx Ġ= Ġstart . x ĊĠĠĠĠĠĠĠĠĠĠĠ Ġy Ġ= Ġstart . y ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ++ z ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( hasNext W ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġx Ġ= Ġstart . x ĊĠĠĠĠĠĠĠĠĠĠĠ Ġy Ġ= Ġstart . y ĊĠĠĠĠĠĠĠĠĠĠĠ Ġz Ġ= Ġstart . z ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ++ w ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠNoSuch ElementException () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn ĠVector 4 l ( x , Ġy , Ġz , Ġw ) ĊĠĠĠ Ġ} Ċ Ċ }