package Ġgg . r sm od . game . model . entity Ċ Ċ import Ġgg . r sm od . game . model . EntityType Ċ import Ġgg . r sm od . game . model . World Ċ Ċ /** Ċ Ġ* ĠA Ġreference Ġto Ġa Ġ[ Pawn ] Ġthat Ġmay Ġor Ġmay Ġnot Ġstill Ġexist Ġinside Ġthe Ġ[ World ]. Ċ Ġ*/ Ċ class ĠP awn Reference ( pawn : ĠP awn ) Ġ{ ĊĊĠĠĠ Ġval Ġhash : ĠInt ĊĠĠĠ Ġval Ġentity Type : ĠEntityType ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġcheck ( pawn . entity Type Ġ== ĠEntityType . PLAYER ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ|| Ġp awn . entity Type Ġ== ĠEntityType . CLIENT ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ|| Ġp awn . entity Type Ġ== ĠEntityType . NPC ) Ġ{ Ġ" Unsupported Ġentity Ġtype Ġ${ pawn . entity Type }" Ġ} ĊĠĠĠĠĠĠĠ Ġhash Ġ= Ġp awn . hashCode () ĊĠĠĠĠĠĠĠ Ġentity Type Ġ= Ġif Ġ( pawn . entity Type Ġ== ĠEntityType . CLIENT ) ĠEntityType . PLAYER Ġelse Ġp awn . entity Type ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget ( world : ĠWorld ): ĠP awn ? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġwhen Ġ( entity Type ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠEntityType . PLAYER Ġ-> Ġworld . players . get From Hash ( hash ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠEntityType . NPC Ġ-> Ġworld . np cs . get From Hash ( hash ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġthrow ĠUnsupportedOperationException () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġequals ( other : ĠAny ?): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( this Ġ=== Ġother ) Ġreturn Ġtrue ĊĠĠĠĠĠĠĠ Ġif Ġ( java Class Ġ!= Ġother ?. java Class ) Ġreturn Ġfalse ĊĊĠĠĠĠĠĠĠ Ġother Ġas ĠP awn Reference ĊĊĠĠĠĠĠĠĠ Ġif Ġ( hash Ġ!= Ġother . hash ) Ġreturn Ġfalse ĊĠĠĠĠĠĠĠ Ġif Ġ( entity Type Ġ!= Ġother . entity Type ) Ġreturn Ġfalse ĊĊĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠhashCode (): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġresult Ġ= Ġhash ĊĠĠĠĠĠĠĠ Ġresult Ġ= Ġ 3 1 Ġ* Ġresult Ġ+ Ġentity Type . hashCode () ĊĠĠĠĠĠĠĠ Ġreturn Ġresult ĊĠĠĠ Ġ} ĊĊ Ċ }