package Ġme . nan ig ans . infinite blocks . gui Ċ Ċ import Ġme . nan ig ans . infinite blocks . Infinite Blocks Ċ import Ġorg . bukkit . Chat Color Ċ import Ġorg . bukkit . Material Ċ import Ġorg . bukkit . Name spaced Key Ċ import Ġorg . bukkit . entity . Player Ċ import Ġorg . bukkit . inventory . ItemStack Ċ import Ġorg . bukkit . persistence . Persistent DataType Ċ Ċ class ĠShop Ġ{ ĊĊĠĠĠ Ġcompanion Ġobject { ĊĊĠĠĠĠĠĠĠ Ġprivate Ġfun Ġget Purchase Page ( shop GUI : ĠShop GUI ): ĠPage { ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpage : ĠPage Ġ= ĠPage (" Purchase ", Ġ 2 7 ); ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġposition : ĠInt Ġ= Ġ 9 ; ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor ( j Ġin Ġ- 1 .. 1 Ġstep Ġ 2 ) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġi : ĠInt Ġ= Ġ 5 0 0 0 ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmaterial : ĠMaterial Ġ= Ġif ( j Ġ== Ġ- 1 ) ĠMaterial . RED _ ST AIN ED _ GL ASS _ P ANE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse ĠMaterial . LI ME _ ST AIN ED _ GL ASS _ P ANE ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhile Ġ( i Ġ> Ġ 2 0 ) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġitem Stack Ġ= ĠItemStack ( material ); ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġitem Meta 1 Ġ= Ġitem Stack . item Meta ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( item Meta 1 Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġitem Meta 1 . set DisplayName ("${ Chat Color . BOLD }${ i }"); ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġitem Stack . item Meta Ġ= Ġitem Meta 1 ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}; ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġi Copy Ġ= Ġi ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpage . add Button ( position , ĠButton ( item Stack , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ{ player Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrun Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠIn finite Blocks . shop Manager . item In Purchase [ player . unique Id ]?. add Amount ( i Copy Ġ* Ġj ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis . open Item ( shop GUI , Ġplayer , ĠIn finite Blocks . shop Manager . item In Purchase [ player . unique Id ] !!. item ); ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}, Ġtrue )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġi Ġ/= Ġ 5 ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġposition ++; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif ( position Ġ== Ġ 1 3 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġposition ++; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġpage ; ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġpurchase Item ( player : ĠPlayer , Ġitem Stack : ĠItemStack ){ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġamount Ġ= ĠIn finite Blocks . shop Manager . item In Purchase [ player . unique Id ] !!. item Amount ĊĠĠĠĠĠĠĠĠĠĠĠ ĠIn finite Blocks . block Manager . set NBT ( item Stack , Ġ" item Amount ", ĠPersistent DataType . INTEGER , Ġamount ); ĊĠĠĠĠĠĠĠĠĠĠĠ Ġplayer . close Inventory (); ĊĠĠĠĠĠĠĠĠĠĠĠ Ġplayer . inventory . addItem ( item Stack ); ĊĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġopen Item ( shop GUI : ĠShop GUI , Ġplayer : ĠPlayer , Ġitem Stack : ĠItemStack ){ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġclone Ġ= Ġitem Stack . clone (); ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġitem Meta Ġ= Ġclone . item Meta !! ; ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġitem In Purchase Ġ= ĠIn finite Blocks . shop Manager . item In Purchase ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif ( item In Purchase . containsKey ( player . unique Id )){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġitem Meta . lo re Ġ= Ġarray ListOf (" Amount : Ġ${ item In Purchase [ player . unique Id ] !!. item Amount }") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġitem Meta . lo re Ġ= Ġarray ListOf (" Amount : Ġ 6 4 "); ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġitem In Purchase [ player . unique Id ] Ġ= ĠP urch asing Item ( item Stack , Ġ 6 4 ); ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}; ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġclone . item Meta Ġ= Ġitem Meta ; ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġshop GUI . pages [ shop GUI . pages . size - 1 ]. add Button ( 1 3 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠButton ( clone , Ġ{ player Ġ-> Ġthis . purchase Item ( player , Ġclone ) Ġ}, Ġtrue )); ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġshop GUI . open ( player , Ġshop GUI . pages . size - 1 ); ĊĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġsetup Shop Inventory (): ĠShop GUI { ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpages : ĠArrayList < Page > Ġ= Ġarray ListOf (); ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġshop GUI Ġ= ĠShop GUI ( pages , ĠIn finite Blocks . instance ); ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġpage : ĠPage Ġ= ĠPage (" Shop ", Ġ 5 4 ); ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġi : ĠInt Ġ= Ġ 0 ; ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( material Ġin ĠMaterial . values ()) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif ( material . is Block Ġ&& Ġ! material . is Air Ġ&& Ġ! material . is Legacy ){ ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif ( i Ġ< Ġ 4 5 ){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġitem Ġ= ĠItemStack ( material ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpage . add Button ( i , ĠButton ( item , Ġ{ Ġplayer Ġ-> Ġthis . open Item ( shop GUI , Ġplayer , Ġitem ) Ġ}, Ġtrue )); ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} else { ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġi Ġ= Ġ- 1 ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshop GUI . pages . add ( page ); ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpage Ġ= ĠPage (" Shop ", Ġ 5 4 ); ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġi ++; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif ( i Ġ< Ġ 4 5 ) Ġpages . add ( page ); ĊĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġshop GUI . pages . forEach Ġ{ Ġpage Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrun Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġitem Stack Ġ= ĠItemStack ( Material . COMP ASS ); ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġitem Meta Ġ= Ġitem Stack . item Meta ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġitem Meta ?. set DisplayName ("${ Chat Color . G OLD } Page ĠBack "); ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġitem Stack . item Meta Ġ= Ġitem Meta ; ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpage . add Button ( 4 5 , ĠButton ( item Stack . clone (), Ġshop GUI :: page Back wards , Ġtrue )); ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġitem Meta ?. set DisplayName ("${ Chat Color . G OLD } Page ĠForward "); ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġitem Stack . item Meta Ġ= Ġitem Meta ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpage . add Button ( 5 3 , ĠButton ( item Stack , Ġshop GUI :: page Forward , Ġtrue )); ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġshop GUI . pages . add ( this . get Purchase Page ( shop GUI )); ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġshop GUI ; ĊĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} Ċ Ċ }