package Ġgg . r sm od . game . message . handler Ċ Ċ import Ġgg . r sm od . game . action . Pawn Path Action Ċ import Ġgg . r sm od . game . message . Message Ċ import Ġgg . r sm od . game . message . MessageHandler Ċ import Ġgg . r sm od . game . model . World Ċ import Ġgg . r sm od . game . model . attr . INTER ACT ING _ OPT _ ATTR Ċ import Ġgg . r sm od . game . model . attr . INTER ACT ING _ PLAYER _ ATTR Ċ import Ġgg . r sm od . game . model . entity . Client Ċ import Ġjava . lang . ref . Weak Reference Ċ Ċ object ĠOp Player Handler Ġ{ ĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠHandles Ġa Ġclicked Ġ[ gg . r sm od . game . model . entity . Player ] Ġoption . ĊĠĠĠĠ Ġ* Ġ@ param Ġclient ĠThe Ġ[ Client ]. ĊĠĠĠĠ Ġ* Ġ@ param Ġworld ĠThe Ġ[ Client ]' s Ġworld . ĊĠĠĠĠ Ġ* Ġ@ param Ġindex ĠThe Ġindex Ġof Ġclicked Ġ[ gg . r sm od . game . model . entity . Player ]. ĊĠĠĠĠ Ġ* Ġ@ param Ġoption ĠThe Ġinteraction Ġoption Ġid . ĊĠĠĠĠ Ġ* Ġ@ para Ġmessage Handler ĠThe Ġmessage Ġhandler Ġthat Ġreceived Ġthis Ġclicked Ġoption . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġhandle ( client : ĠClient , Ġworld : ĠWorld , Ġindex : ĠInt , Ġoption : ĠInt , Ġmessage Handler : ĠMessage Handler < out ĠMessage >) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġoption Index Ġ= Ġoption Ġ- Ġ 1 ĊĊĠĠĠĠĠĠĠ Ġif Ġ(! client . lock . can Player Interact ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġother Ġ= Ġworld . players [ index ] Ġ?: Ġreturn ĊĊĠĠĠĠĠĠĠ Ġif Ġ( client . options [ option Index ] Ġ== Ġnull Ġ|| Ġother Ġ== Ġclient ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġmessage Handler . log ( client , Ġ" Player Ġoption : Ġname =% s , Ġopt =% d ", Ġother . username , Ġoption ) ĊĊĠĠĠĠĠĠĠ Ġclient . close Interface Modal () ĊĠĠĠĠĠĠĠ Ġclient . interrupt Queues () ĊĠĠĠĠĠĠĠ Ġclient . reset Interactions () ĊĊĠĠĠĠĠĠĠ Ġclient . attr [ INTER ACT ING _ PLAYER _ ATTR ] Ġ= ĠWeak Reference ( other ) ĊĠĠĠĠĠĠĠ Ġclient . attr [ INTER ACT ING _ OPT _ ATTR ] Ġ= Ġoption ĊĊĠĠĠĠĠĠĠ Ġ// ĠAttack Ġis Ġthe Ġonly Ġoption Ġthat Ġis Ġimmediately Ġhandled Ġby Ġthe Ġcom bat Ġsystem . ĊĠĠĠĠĠĠĠ Ġif Ġ( client . options [ option Index ]. equals (" Attack ")) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġclient . attack ( other ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġworld . plugins . execute Attack Pawn ( client ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġclient . execute Plugin ( Pawn Path Action . walk Plugin ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } ĊĊĊ