package Ġcom . r pk it . locks . bukkit . listener Ċ Ċ import Ġcom . r pk it . characters . bukkit . character . RP K Character Ċ import Ġcom . r pk it . characters . bukkit . character . RP K Character Provider Ċ import Ġcom . r pk it . locks . bukkit . RP K Locks Bu kkit Ċ import Ġcom . r pk it . locks . bukkit . key ring . RP K Key ring Provider Ċ import Ġcom . r pk it . locks . bukkit . lock . RP K Lock Provider Ċ import Ġcom . r pk it . players . bukkit . profile . RP KM inecraft Profile Provider Ċ import Ġorg . bukkit . block . Block Ċ import Ġorg . bukkit . event . EventHandler Ċ import Ġorg . bukkit . event . Listener Ċ import Ġorg . bukkit . event . player . Player Interact Event Ċ import Ġorg . bukkit . inventory . ItemStack Ċ Ċ class ĠPlayer Interact Listener ( private Ġval Ġplugin : ĠRP K Locks Bu kkit ): ĠListener Ġ{ ĊĊĠĠĠ Ġ@ EventHandler ĊĠĠĠ Ġfun Ġon Player Interact ( event : ĠPlayer Interact Event ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġclicked Block Ġ= Ġevent . clicked Block ĊĠĠĠĠĠĠĠ Ġif Ġ( clicked Block Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġm inecraft Profile Provider Ġ= Ġplugin . core . service Manager . get ServiceProvider ( RP KM inecraft Profile Provider :: class ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcharacter Provider Ġ= Ġplugin . core . service Manager . get ServiceProvider ( RP K Character Provider :: class ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġm inecraft Profile Ġ= Ġm inecraft Profile Provider . getM inecraft Profile ( event . player ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( minecraft Profile Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcharacter Ġ= Ġcharacter Provider . getActive Character ( minecraft Profile ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( character Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlock Provider Ġ= Ġplugin . core . service Manager . get ServiceProvider ( RP K Lock Provider :: class ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġblock : ĠBlock ? Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġx Loop @ Ġfor Ġ( x Ġin Ġclicked Block . x Ġ- Ġ 1 .. clicked Block . x Ġ+ Ġ 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( y Ġin Ġclicked Block . y Ġ- Ġ 1 .. clicked Block . y Ġ+ Ġ 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( z Ġin Ġclicked Block . z Ġ- Ġ 1 .. clicked Block . z Ġ+ Ġ 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( lock Provider . is Locked ( clicked Block . world . getBlock At ( x , Ġy , Ġz ))) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġblock Ġ= Ġclicked Block . world . getBlock At ( x , Ġy , Ġz ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbreak @ x Loop ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( lock Provider . is Claim ing ( minecraft Profile )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( block Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( event . player . inventory . item In Main Hand . amount Ġ== Ġ 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġevent . player . inventory . setItem In Main Hand ( null ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġevent . player . inventory . item In Main Hand . amount Ġ= Ġevent . player . inventory . item In Main Hand . amount Ġ- Ġ 1 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlock Provider . set Locked ( clicked Block , Ġtrue ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( item Ġin Ġevent . player . inventory . addItem ( lock Provider . getKey For ( clicked Block )). values ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġevent . player . world . drop Item ( event . player . location , Ġitem ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġevent . player . update Inventory () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġevent . player . sendMessage ( plugin . messages [" lock - successful "]) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġevent . player . sendMessage ( plugin . messages [" lock - invalid - already - locked "]) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġevent . is Cancelled Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( lock Provider . is Un claim ing ( minecraft Profile )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( block Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( has Key ( character , Ġblock )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlock Provider . set Locked ( block , Ġfalse ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġevent . player . sendMessage ( plugin . messages [" unlock - successful "]) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġremove Key ( character , Ġblock ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġevent . player . inventory . addItem ( lock Provider . lock Item ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġevent . player . update Inventory () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġevent . player . sendMessage ( plugin . messages [" unlock - invalid - no - key "]) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġevent . player . sendMessage ( plugin . messages [" unlock - invalid - not - locked "]) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlock Provider . set Un claim ing ( minecraft Profile , Ġfalse ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġevent . is Cancelled Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( lock Provider . is Getting Key ( minecraft Profile )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( block Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġevent . player . sendMessage ( plugin . messages [" get - key - invalid - not - locked "]) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( item Ġin Ġevent . player . inventory . addItem ( lock Provider . getKey For ( block )). values ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġevent . player . world . drop Item ( event . player . location , Ġitem ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġevent . player . update Inventory () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġevent . player . sendMessage ( plugin . messages [" get - key - successful "]) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlock Provider . set Getting Key ( minecraft Profile , Ġfalse ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġevent . is Cancelled Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( block Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( has Key ( character , Ġblock )) Ġreturn ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! has Key ( character , Ġblock )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġevent . is Cancelled Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġevent . player . sendMessage ( plugin . messages [" block - locked ", Ġmap Of ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPair (" block ", Ġblock . type . toString (). toLowerCase (). replace ('_ ', Ġ' Ġ')) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ]) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġevent . is Cancelled Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġevent . is Cancelled Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġhas Key ( character : ĠRP K Character , Ġblock : ĠBlock ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġlock Provider Ġ= Ġplugin . core . service Manager . get ServiceProvider ( RP K Lock Provider :: class ) ĊĠĠĠĠĠĠĠ Ġval Ġkey ring Provider Ġ= Ġplugin . core . service Manager . get ServiceProvider ( RP K Key ring Provider :: class ) ĊĠĠĠĠĠĠĠ Ġval Ġm inecraft Profile Ġ= Ġcharacter . minecraft Profile ĊĠĠĠĠĠĠĠ Ġif Ġ( minecraft Profile Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġoffline Bu kkit Player Ġ= Ġplugin . server . get Offline Player ( minecraft Profile . minecraft UUID ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbu kkit Player Ġ= Ġoffline Bu kkit Player . player ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( bukkit Player Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġinventory Ġ= Ġbu kkit Player . inventory ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrepeat ( key ring Provider . getKey ring ( character ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. filter Ġ{ Ġit . is Similar ( lock Provider . getKey For ( block )) Ġ}. size ) Ġ{ Ġreturn Ġtrue Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrepeat ( inventory . contents ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. filter Ġ{ Ġit Ġ!= Ġnull Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. filter Ġ{ Ġit . is Similar ( lock Provider . getKey For ( block )) Ġ}. size ) Ġ{ Ġreturn Ġtrue Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġremove Key ( character : ĠRP K Character , Ġblock : ĠBlock ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġlock Provider Ġ= Ġplugin . core . service Manager . get ServiceProvider ( RP K Lock Provider :: class ) ĊĠĠĠĠĠĠĠ Ġval Ġkey ring Provider Ġ= Ġplugin . core . service Manager . get ServiceProvider ( RP K Key ring Provider :: class ) ĊĠĠĠĠĠĠĠ Ġval Ġkey ring Ġ= Ġkey ring Provider . getKey ring ( character ) ĊĠĠĠĠĠĠĠ Ġval Ġiterator Ġ= Ġkey ring . iterator () ĊĠĠĠĠĠĠĠ Ġwhile Ġ( iterator . hasNext ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġkey Ġ= Ġiterator . next () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( key . is Similar ( lock Provider . getKey For ( block ))) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( key . amount Ġ> Ġ 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġkey . amount Ġ= Ġkey . amount Ġ- Ġ 1 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġiterator . remove () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġkey ring Provider . set Key ring ( character , Ġkey ring ) ĊĠĠĠĠĠĠĠ Ġval Ġm inecraft Profile Ġ= Ġcharacter . minecraft Profile ĊĠĠĠĠĠĠĠ Ġif Ġ( minecraft Profile Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġoffline Bu kkit Player Ġ= Ġplugin . server . get Offline Player ( minecraft Profile . minecraft UUID ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbu kkit Player Ġ= Ġoffline Bu kkit Player . player ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( bukkit Player Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġinventory Ġ= Ġbu kkit Player . inventory ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġinventory Contents Ġ= Ġinventory . contents ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( key Ġin Ġinventory Contents ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( key . is Similar ( lock Provider . getKey For ( block ))) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġone Key Ġ= ĠItemStack ( key ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġone Key . amount Ġ= Ġ 1 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinventory . removeItem ( one Key ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} Ċ } Ċ