package Ġorg . r sm od . game . model . mob Ċ Ċ import Ġcom . github . m ichael bull . logging . Inline Logger Ċ import Ġcom . google . common . base . More Objects Ċ import Ġjava . time . LocalDateTime Ċ import Ġjava . util . Array Deque Ċ import Ġjava . util . Queue Ċ import Ġorg . r sm od . game . action . Action Bus Ċ import Ġorg . r sm od . game . attribute . Attribute Map Ċ import Ġorg . r sm od . game . event . Event Ċ import Ġorg . r sm od . game . event . EventBus Ċ import Ġorg . r sm od . game . event . impl . Login Event Ċ import Ġorg . r sm od . game . message . Server Packet Ċ import Ġorg . r sm od . game . message . Server Packet Listener Ċ import Ġorg . r sm od . game . model . client . Entity Ċ import Ġorg . r sm od . game . model . client . Npc Entity Ċ import Ġorg . r sm od . game . model . client . Player Entity Ċ import Ġorg . r sm od . game . model . domain . Appearance Ċ import Ġorg . r sm od . game . model . domain . Direction Ċ import Ġorg . r sm od . game . model . domain . Player Id Ċ import Ġorg . r sm od . game . model . item . container . Item Container Ċ import Ġorg . r sm od . game . model . item . container . Item Container Map Ċ import Ġorg . r sm od . game . model . map . Coordinates Ċ import Ġorg . r sm od . game . model . map . Viewport Ċ import Ġorg . r sm od . game . model . snapshot . Snapshot Ċ import Ġorg . r sm od . game . model . step . Step Queue Ċ import Ġorg . r sm od . game . model . step . Step Speed Ċ import Ġorg . r sm od . game . model . ui . Interface List Ċ import Ġorg . r sm od . game . queue . Game Queue Stack Ċ import Ġorg . r sm od . game . queue . Queue Type Ċ import Ġorg . r sm od . game . timer . Timer Map Ċ Ċ private Ġval Ġlogger Ġ= ĠInline Logger () Ċ private Ġval ĠDEFAULT _ DIRECTION Ġ= ĠDirection . South Ċ Ċ sealed Ġclass ĠMob ( ĊĠĠĠ Ġval Ġsteps : ĠStep Queue Ġ= ĠStep Queue (), ĊĠĠĠ Ġvar Ġspeed : ĠStep Speed Ġ= ĠStep Speed . Walk , ĊĠĠĠ Ġval Ġmovement : ĠQueue < Coordinates > Ġ= ĠArray Deque (), ĊĠĠĠ Ġvar Ġface Direction : ĠDirection Ġ= ĠDEFAULT _ DIRECTION , ĊĠĠĠ Ġvar Ġdis place : ĠBoolean Ġ= Ġfalse , ĊĠĠĠ Ġval Ġtimers : ĠTimer Map Ġ= ĠTimer Map (), ĊĠĠĠ Ġval Ġat tribs : ĠAttribute Map Ġ= ĠAttribute Map (), ĊĠĠĠ Ġval Ġqueue Stack : ĠGame Queue Stack Ġ= ĠGame Queue Stack () Ċ ) Ġ{ ĊĊĠĠĠ Ġabstract Ġval Ġentity : ĠEntity ĊĊĠĠĠ Ġvar Ġindex : ĠInt ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġentity . index ĊĠĠĠĠĠĠĠ Ġset ( value ) Ġ{ Ġentity . index Ġ= Ġvalue Ġ} ĊĊĠĠĠ Ġvar Ġcoords : ĠCoordinates ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġentity . coords ĊĠĠĠĠĠĠĠ Ġset ( value ) Ġ{ Ġentity . coords Ġ= Ġvalue Ġ} ĊĊĠĠĠ Ġfun Ġdis place ( coords : ĠCoordinates ) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . coords Ġ= Ġcoords ĊĠĠĠĠĠĠĠ Ġthis . dis place Ġ= Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġweak Queue ( block : Ġsuspend Ġ() Ġ-> ĠUnit ) Ġ= Ġqueue Stack . queue ( Queue Type . Weak , Ġblock ) ĊĊĠĠĠ Ġfun Ġnormal Queue ( block : Ġsuspend Ġ() Ġ-> ĠUnit ) Ġ= Ġqueue Stack . queue ( Queue Type . Normal , Ġblock ) ĊĊĠĠĠ Ġfun Ġstrong Queue ( block : Ġsuspend Ġ() Ġ-> ĠUnit ) Ġ= Ġqueue Stack . queue ( Queue Type . Strong , Ġblock ) ĊĊĠĠĠ Ġfun Ġclear Queues () Ġ= Ġqueue Stack . clear () Ċ } Ċ Ċ class ĠPlayer ( ĊĠĠĠ Ġval Ġid : ĠPlayer Id , ĊĠĠĠ Ġval Ġlogin Name : ĠString , ĊĠĠĠ Ġval Ġevent Bus : ĠEvent Bus , ĊĠĠĠ Ġval Ġaction Bus : ĠAction Bus , ĊĠĠĠ Ġoverride Ġval Ġentity : ĠPlayer Entity , ĊĠĠĠ Ġvar Ġsnapshot : ĠSnapshot Ġ= ĠSnapshot . INITIAL , ĊĠĠĠ Ġvar Ġviewport : ĠView port Ġ= ĠView port . ZERO , ĊĠĠĠ Ġvar Ġappearance : ĠAp pearance Ġ= ĠAp pearance . ZERO , ĊĠĠĠ Ġval Ġinventory : ĠItem Container Ġ= ĠItem Container (), ĊĠĠĠ Ġval Ġequipment : ĠItem Container Ġ= ĠItem Container (), ĊĠĠĠ Ġval Ġbank : ĠItem Container Ġ= ĠItem Container (), ĊĠĠĠ Ġval Ġcontainers : ĠItem Container Map Ġ= ĠItem Container Map (), ĊĠĠĠ Ġval Ġui : ĠInterface List Ġ= ĠInterface List (), ĊĠĠĠ Ġprivate Ġval Ġmessage Listeners : ĠList < Server Packet Listener > Ġ= Ġmutable ListOf () Ċ ) Ġ: ĠMob () Ġ{ ĊĊĠĠĠ Ġval Ġusername : ĠString ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġentity . username ĊĊĠĠĠ Ġfun Ġlogin () Ġ{ ĊĠĠĠĠĠĠĠ Ġevent Bus . publish ( Login Event ( this , ĠLogin Event . Priority . High )) ĊĠĠĠĠĠĠĠ Ġevent Bus . publish ( Login Event ( this , ĠLogin Event . Priority . Normal )) ĊĠĠĠĠĠĠĠ Ġevent Bus . publish ( Login Event ( this , ĠLogin Event . Priority . Low )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġel igible Rank ( rank : ĠInt ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġentity . rank Ġ>= Ġrank ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġwrite ( packet : ĠServer Packet ) Ġ{ ĊĠĠĠĠĠĠĠ Ġmessage Listeners . forEach Ġ{ Ġit . write ( packet ) Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġflush () Ġ{ ĊĠĠĠĠĠĠĠ Ġmessage Listeners . forEach Ġ{ Ġit . flush () Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġsnapshot () Ġ= ĠSnapshot ( ĊĠĠĠĠĠĠĠ Ġtimestamp Ġ= ĠLocalDateTime . now (), ĊĠĠĠĠĠĠĠ Ġcoords Ġ= Ġcoords ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġfun Ġwarn ( message : Ġ() Ġ-> ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġlogger . warn Ġ{ Ġ"$ username : Ġ${ message () }" Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinline Ġfun Ġ< re ified ĠT Ġ: ĠEvent > Ġsubmit Event ( event : ĠT ) Ġ{ ĊĠĠĠĠĠĠĠ Ġqueue Stack . submit Event ( event ) ĊĠĠĠĠĠĠĠ Ġevent Bus . publish ( event ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠtoString (): ĠString Ġ= ĠMore Objects ĊĠĠĠĠĠĠĠ Ġ. toString Helper ( this ) ĊĠĠĠĠĠĠĠ Ġ. add (" login Name ", Ġlogin Name ) ĊĠĠĠĠĠĠĠ Ġ. add (" displayName ", Ġusername ) ĊĠĠĠĠĠĠĠ Ġ. add (" id ", Ġid ) ĊĠĠĠĠĠĠĠ Ġ. add (" index ", Ġindex ) ĊĠĠĠĠĠĠĠ Ġ. add (" coords ", Ġcoords ) ĊĠĠĠĠĠĠĠ Ġ. toString () Ċ } Ċ Ċ class ĠNpc ( ĊĠĠĠ Ġoverride Ġval Ġentity : ĠNpc Entity Ċ ) Ġ: ĠMob () Ċ