Package server.movement
package server.movement
角色與物件移動指令的解析與資料模型:各種移動片段(LifeMovement)的型別階層。
客戶端送出的一次移動由多個「移動片段」組成,本 package 將其建模為
LifeMovementFragment 介面(serialize 寫入封包、
getPosition 取得座標)。LifeMovement 再擴充出
型別/持續時間/新狀態(type/duration/newstate),
由抽象基底 AbstractLifeMovement 提供共用欄位與存取子。
具體片段依移動方式分為:絕對座標 AbsoluteLifeMovement、
相對位移 RelativeLifeMovement、瞬間移動
TeleportMovement、彈跳 BounceMovement
與貼地 GroundMovement;另有特殊片段
ChangeEquipSpecialAwesome(直接實作
LifeMovementFragment)用於移動中切換裝備外觀。
每個片段以 MaplePacketLittleEndianWriter 序列化為封包位元組,
供 handling.channel.handler.MovementParse 於解析玩家/怪物移動封包後重建並廣播。
-
ClassDescription以絕對世界座標表達的生物移動片段,對應移動指令類型
0、7、14、16、44、45、46。所有具體移動片段類別的抽象基底,實作LifeMovement的四個共用欄位。代表彈跳(跳躍落地反彈)類型的生物移動片段。移動序列中的換裝特殊事件片段,直接實作LifeMovementFragment而非攜帶移動資料。代表地面靜止或接地狀態的生物移動片段。具備狀態(newstate)、持續時間(duration)與移動類型(type)的移動片段介面。所有生物移動序列片段的最基礎介面。以相對位移表達的生物移動片段,對應移動指令類型1、2、18、19等。代表傳送類型的生物移動片段,序列化時附帶目標腳架(foothold)ID。