Documentation
¶
Index ¶
- Constants
- func NewBlockData(opcode uint16, isOut bool) xivnet.BlockData
- func ParseBlock(block *xivnet.Block, isOut bool) (*xivnet.Block, error)
- func UnmarshalBlockBytes(data []byte, block xivnet.BlockData) error
- type Action
- type ActionEffect
- type ActionEffects
- type ActionHeader
- type AddStatus
- type AddStatusEntry
- type AoEAction8
- type AoEAction16
- type AoEAction24
- type AoEAction32
- type BeginCrafting
- type Casting
- type CraftState
- type EntityName
- type EquipChange
- type FCTag
- type Gauge
- type Gear
- type HateEntry
- type HateList
- type HateRanking
- type HateRankingEntry
- type InitZone
- type MapChange
- type Marker
- type ModelInfo
- type Mount
- type MountInfo
- type Movement
- type MyAction
- type MyMovement
- type MyMovement2
- type NPCSpawn
- type NPCSpawn2
- type Notify
- type Notify3
- type Notify4
- type PackedCoord
- type PackedPosition
- type Perform
- type PlayerSpawn
- type RemoveEntity
- type SetPos
- type StatusEffect
- type UpdateHPMPTP
- type UpdateStatuses
- type WeaponGear
- type WeatherChange
- type XWorldPartyList
- type XWorldPlayerEntry
Constants ¶
const ( AddStatusOpcode = 0x141 // Unchanged for 4.5 ActionOpcode = 0x154 // Updated for 4.5 AoEAction8Opcode = 0x157 // Updated for 4.5 AoEAction16Opcode = 0x158 // Updated for 4.5 AoEAction24Opcode = 0x159 // Updated for 4.5 AoEAction32Opcode = 0x15A // Updated for 4.5 CastingOpcode = 0x17C // Updated for 4.5 CraftStateOpcode = 0x1AF // Updated for 4.5 EquipChangeOpcode = 0x18B // Updated for 4.5 GaugeOpcode = 0x29A // Updated for 4.5 HateRankingOpcode = 0x17F // Updated for 4.5 HateListOpcode = 0x180 // Updated for 4.5 InitZoneOpcode = 0x19A // Updated for 4.5 MapChangeOpcode = 0x299 // Updated for 4.5 MarkerOpcode = 0x267 // Updated for 4.5 MountOpcode = 0x1E8 // Updated for 4.5 MovementOpcode = 0x178 // Updated for 4.5 NotifyOpcode = 0x142 // Unchanged 4.5 Notify3Opcode = 0x143 // Unchanged 4.5 Notify4Opcode = 0x144 // Unchanged 4.5 NPCSpawnOpcode = 0x176 // Updated for 4.5 NPCSpawn2Opcode = 0x177 // Updated for 4.5 PerformOpcode = 0x2A5 // Updated for 4.5 PlayerSpawnOpcode = 0x175 // Updated for 4.5 RemoveEntityOpcode = 0x191 // Unchanged 4.5 SetPosOpcode = 0x17A // Updated for 4.5 UpdateHPMPTPOpcode = 0x145 // Unchanged 4.5 UpdateStatusesOpcode = 0x151 // Updated for 4.5 WeatherChangeOpcode = 0x205 // Updated for 4.5 XWorldPartyListOpcode = 0xA1 // Updated 4.18 )
Opcodes that define the datatypes of incoming (from server) network blocks
const ( MyActionOpcode = 0x138 // Updated for 4.5 MyMovementOpcode = 0x13F // Updated for 4.5 MyMovement2Opcode = 0x17E // Updated for 4.5 MyPerformOpcode = 0x188 // Updated for 4.5 BeginCraftingOpcode = 0x15D // Updated for 4.5 )
Opcodes that define the datatypes of outgoing (to server) network blocks
Variables ¶
This section is empty.
Functions ¶
func NewBlockData ¶
NewBlockData is a factory for BlockData that uses the opcode to determine which BlockData to create
func ParseBlock ¶ added in v1.44.2
ParseBlock takes in raw, unparsed blocks and returns a parsed block if possible. isOut toggles whether we should parse this block as an outgoing block (sent packet) or as an incoming block (recv'd packet)
Types ¶
type Action ¶
type Action struct {
ActionHeader
Effects ActionEffects
U9 uint32
U10 uint16
TargetID2 uint32 // Target of effects
EffectFlags uint32
U12 uint32
}
Action defines the data array for an ability block
func (Action) IsBlockData ¶ added in v1.45.2
func (Action) IsBlockData()
type ActionEffect ¶
type ActionEffect struct {
Type byte
HitSeverity byte
P3 byte
Percentage byte
// Total Damage = 65535 * Multiplier * (Flags & 0x40) + Damage
Multiplier byte
Flags byte // (Flags & 0xA0) means attacker receives damage instead
Damage uint16
}
ActionEffect defines the data array for an effect that resulted from the action
type ActionEffects ¶
type ActionEffects [8]ActionEffect
ActionEffects defines a block of 8 action effects
type ActionHeader ¶ added in v1.45.2
type ActionHeader struct {
TargetID uint32 // Target of actions
U1 uint32
ActionIDName uint32
GlobalCounter uint32
AnimationLockTime float32
UnkID1 uint32
HiddenAnimation uint16
Direction uint16 // Quantized direction 0x0000 ~ 0xFFFF, NWSE <=> 0,0x4000,0x8000,0xC000
ActionID uint16
Variation byte
EffectDisplayType byte
U6a byte
NumAffected byte
U6b uint16
U7 uint32
U8 uint16
}
ActionHeader defines the header for an action packet. This is common for single target or multi-target action packets.
type AddStatus ¶
type AddStatus struct {
U1 uint32
ActorID uint32
U2, U3 byte
Pad1 uint16
CurrentHP uint32
CurrentMP uint16
CurrentTP uint16
MaxHP uint32
MaxMP uint16
Count byte
U5 byte
Entries [4]AddStatusEntry
U8 uint32
}
AddStatus defines the data array for an add status effect block This block is used more for updating HP, MP, TP than adding a status effect
func (AddStatus) IsBlockData ¶ added in v1.45.2
func (AddStatus) IsBlockData()
type AddStatusEntry ¶
type AddStatusEntry struct {
Index byte // Position of status effect
U6 byte
EffectID uint16
Extra uint16
U7 uint16
Duration float32
ActorID uint32
}
AddStatusEntry is an entry of AddStatus
type AoEAction8 ¶
type AoEAction8 struct {
ActionHeader
EffectsList [8]ActionEffects
U9 uint32
U10 uint16
Targets [8]uint64
Position PackedPosition
U11 uint16
U12 uint32
}
AoEAction8 defines the data array for an AoE action block
func (AoEAction8) IsBlockData ¶ added in v1.45.2
func (AoEAction8) IsBlockData()
type AoEAction16 ¶
type AoEAction16 struct {
ActionHeader
EffectsList [16]ActionEffects
U9 uint32
U10 uint16
Targets [16]uint64
Position PackedPosition
U11 uint16
U12 uint32
}
AoEAction16 defines the data array for an AoE action block
func (AoEAction16) IsBlockData ¶ added in v1.45.2
func (AoEAction16) IsBlockData()
type AoEAction24 ¶
type AoEAction24 struct {
ActionHeader
EffectsList [24]ActionEffects
U9 uint32
U10 uint16
Targets [24]uint64
Position PackedPosition
U11 uint16
U12 uint32
}
AoEAction24 defines the data array for an AoE action block
func (AoEAction24) IsBlockData ¶ added in v1.45.2
func (AoEAction24) IsBlockData()
type AoEAction32 ¶
type AoEAction32 struct {
ActionHeader
EffectsList [32]ActionEffects
U9 uint32
U10 uint16
Targets [32]uint64
Position PackedPosition
U11 uint16
U12 uint32
}
AoEAction32 defines the data array for an AoE action block
func (AoEAction32) IsBlockData ¶ added in v1.45.2
func (AoEAction32) IsBlockData()
type BeginCrafting ¶
type BeginCrafting struct {
U1, U2, U3 uint32
Ingredients [9]uint32
U4 [21]uint32
Amounts [9]byte
U5 [3]byte
U6 [30]uint32
}
BeginCrafting defines the data array for a begin crafting message
func (BeginCrafting) IsBlockData ¶ added in v1.45.2
func (BeginCrafting) IsBlockData()
type Casting ¶
type Casting struct {
ActionIDName uint16
U1 uint16
ActionID uint32
CastTime float32
TargetID uint32
Direction float32
UnkID1 uint32
Position PackedPosition
U3 uint16
}
Casting defines the data array for a casting block
func (Casting) IsBlockData ¶ added in v1.45.2
func (Casting) IsBlockData()
type CraftState ¶
type CraftState struct {
CharID uint64
U1 [9]uint32
CraftAction uint32
U2 uint32
StepNum uint32
TotalProgress uint32
ProgressDelta int32
TotalQuality uint32
QualityDelta int32
HQChance uint32
Durability uint32
DurabilityDelta int32
CurrentCondition uint32
PreviousCondition uint32
U6 [17]uint32
}
CraftState defines the data array for an crafting state block
func (CraftState) IsBlockData ¶ added in v1.45.2
func (CraftState) IsBlockData()
type EntityName ¶
type EntityName [32]byte
EntityName is the storage structure for a UTF-8 entity name
func StringToEntityName ¶
func StringToEntityName(s string) EntityName
StringToEntityName converts a string to an entity name data
func (EntityName) MarshalJSON ¶
func (e EntityName) MarshalJSON() ([]byte, error)
MarshalJSON writes the string representation of the entity name to JSON
func (EntityName) String ¶
func (e EntityName) String() string
String returns the string represenation of the entity name data
func (*EntityName) UnmarshalJSON ¶
func (e *EntityName) UnmarshalJSON(data []byte) error
UnmarshalJSON converts the string representation of the entity name to the data structure
type EquipChange ¶
type EquipChange struct {
WeaponMain WeaponGear
WeaponSub WeaponGear
U1a byte
ClassJob byte
U1c byte
U1d byte
Head Gear
Body Gear
Hand Gear
Leg Gear
Foot Gear
Ear Gear
Neck Gear
Wrist Gear
Ring1 Gear
Ring2 Gear
U2 uint32
}
EquipChange defines the data array for a equip change block
func (EquipChange) IsBlockData ¶ added in v1.45.2
func (EquipChange) IsBlockData()
type FCTag ¶
type FCTag [6]byte
FCTag is the storage structure for a UTF-8 FC tag
func StringToFCTag ¶
StringToFCTag converts a string to an entity name data
func (FCTag) MarshalJSON ¶
MarshalJSON writes the string representation of the entity name to JSON
func (*FCTag) UnmarshalJSON ¶
UnmarshalJSON converts the string representation of the entity name to the data structure
type Gauge ¶
type Gauge struct {
ClassJob byte
Duration2 uint16 // In millseconds. Indicates duration of gauge 3. (Enochian)
Duration uint16 // In milliseconds. Indicates duration of gauge 0.
Gauge0 int8 // Main gauge. Negative number can mean umbral ice for instance.
Gauge1 int8 // For example, umbral hearts lives in this gauge
Gauge2 byte // Enochian is set via bitfields in this gauge.
U1 uint32
U2 uint32
}
Gauge defines the data array for an add status effect block
func (Gauge) IsBlockData ¶ added in v1.45.2
func (Gauge) IsBlockData()
type HateEntry ¶
type HateEntry struct {
EnemyID uint32 // OwnerID is the entity that has enmity against the Actor
HatePct byte // HatePct is how close to aggro aggro this mob (100% is aggro)
U1 byte // U1 and U2 are leftovers from reuse of the HateRanking struct
U2 uint16
}
HateEntry defines the a full hate list entry
type HateList ¶
HateList defines the data array for a hate list
func (HateList) IsBlockData ¶ added in v1.45.2
func (HateList) IsBlockData()
type HateRanking ¶
type HateRanking struct {
Count byte
U1 byte
U2 uint16
Entries [32]HateRankingEntry
Pad uint32
}
HateRanking defines the data array for the enmity list for the current target
func (HateRanking) IsBlockData ¶ added in v1.45.2
func (HateRanking) IsBlockData()
type HateRankingEntry ¶
type HateRankingEntry struct {
ActorID uint32 // ActorID is the entity towards which the threat is directed
Hate uint32 // Hate is the total amount of enmity accrued by ActorID
}
HateRankingEntry defines a single hate entry for the current target
type InitZone ¶
type InitZone struct {
U1a uint16
TerritoryTypeID uint16
U1b uint16
U2 uint16
U3, U4 uint32
WeatherID, Bitmask byte
U5b uint16
U6, U7, U8, U9, U10, U11, U12, U13, U14 uint32
X, Z, Y float32
U15 uint32
}
InitZone defines the data array for a map change block
func (InitZone) IsBlockData ¶ added in v1.45.2
func (InitZone) IsBlockData()
type MapChange ¶
MapChange defines the data array for a map change block
func (MapChange) IsBlockData ¶ added in v1.45.2
func (MapChange) IsBlockData()
type Marker ¶
type Marker struct {
Type byte
U1 byte
U2 uint16
U3 uint32
X float32
Z float32
Y float32
U4 uint32
}
Marker defines the data array for a place marker block
func (Marker) IsBlockData ¶ added in v1.45.2
func (Marker) IsBlockData()
type ModelInfo ¶
type ModelInfo struct {
Race byte // 2 Elezen, 3 Lalafell, 4 Miqo'te, 5 Roe, 6 Au Ra, else Hyur
Gender byte // 0 is male, 1 is female
BodyType byte // CHANGE AT OWN RISK
Height byte // Scale from 0-100
Tribe byte
Face byte
Hairstyle byte
HairHighlight byte // 8th bit toggles highlight
SkinTone byte
OddEyeColor byte
HairColor byte
HairHighlightColor byte
FacialFeatures byte // Race specific toggles. i.e. 6th bit toggles right limbal ring. 7th bit toggles left limbal ring.
FacialFeaturesColor byte
Eyebrows byte
EyeColor byte
EyeShape byte
Nose byte
Jaw byte
Mouth byte // Bitfield toggles light/dark/none lip color
LipColor byte
TailLength byte // Scale from 1-100
TailType byte
BustSize byte // Scale from 1-100
FacePaintType byte
FacePaintColor byte
}
ModelInfo enumerates all of the different options for customizing the character model
type Mount ¶
type Mount struct {
ID byte
Color byte
U1 byte
U2 byte
U3 uint32 // Highly likely to be a Gear
U4 uint32 // Highly likely to be a Gear
U5 uint32 // Highly likely to be a Gear
}
Mount defines the data array for a getting on mount block
func (Mount) IsBlockData ¶ added in v1.45.2
func (Mount) IsBlockData()
type Movement ¶
type Movement struct {
Direction uint8 // Quantized direction 0x00~0xFF. NWSE <=> 0,0x40,0x80,0xC0
U1 uint8
U2 uint32
Position PackedPosition
U3 uint32
}
Movement defines the data array for a movement block
func (Movement) IsBlockData ¶ added in v1.45.2
func (Movement) IsBlockData()
type MyAction ¶
type MyAction struct {
Type uint16 // 3 means P1 is target
U1 uint16
P1 uint32
P2 uint32
P3 uint32
P4 uint32
P5 uint32
P6 uint32
P7 uint32
}
MyAction defines the data array for a my action block
func (MyAction) IsBlockData ¶ added in v1.45.2
func (MyAction) IsBlockData()
type MyMovement ¶
type MyMovement struct {
Direction float32 // 0 is South. Range [-pi,pi] <=> Counterclockwise from North
U1 uint32
U2 uint32
X float32
Z float32
Y float32
}
MyMovement defines the data array for a my movement block
func (MyMovement) IsBlockData ¶ added in v1.45.2
func (MyMovement) IsBlockData()
type MyMovement2 ¶
type MyMovement2 struct {
Direction float32 // 0 is South. Range [-pi,pi] <=> Counterclockwise from North
U1 [6]uint32
X float32
Z float32
Y float32
}
MyMovement2 defines the data array for a my movement block
func (MyMovement2) IsBlockData ¶ added in v1.45.2
func (MyMovement2) IsBlockData()
type NPCSpawn ¶
type NPCSpawn struct {
PlayerSpawn
U31 uint64
}
NPCSpawn defines the data array for a new entity block Notes: GMRank from PlayerSpawn corresponds to MobAggression in this struct
func (NPCSpawn) IsBlockData ¶ added in v1.45.2
func (NPCSpawn) IsBlockData()
type NPCSpawn2 ¶ added in v1.45.1
type NPCSpawn2 struct {
PlayerSpawn
U31 [47]uint64
}
NPCSpawn2 defines the data array for a new entity block Notes: GMRank from PlayerSpawn corresponds to MobAggression in this struct This packet type is encountered in the wild when spawning Alliance Raid bosses
func (NPCSpawn2) IsBlockData ¶ added in v1.45.2
func (NPCSpawn2) IsBlockData()
type Notify ¶
Notify defines the data array for a notify block
func (Notify) IsBlockData ¶ added in v1.45.2
func (Notify) IsBlockData()
type Notify3 ¶
type Notify3 struct {
Type uint16
Pad1 uint16
P1 uint32
P2 uint32
P3 uint32
P4 uint32
P5 uint32
P6 uint32
Pad2 uint32
}
Notify3 defines the data array for a notify3 block
func (Notify3) IsBlockData ¶ added in v1.45.2
func (Notify3) IsBlockData()
type Notify4 ¶
type Notify4 struct {
Type uint16
Pad1 uint16
P1 uint32
P2 uint32
P3 uint32
P4 uint32
Pad2 uint32
TargetID uint32 // 0xE0000000 means deselect target
U1 uint32
}
Notify4 defines the data array for a notify4 block
func (Notify4) IsBlockData ¶ added in v1.45.2
func (Notify4) IsBlockData()
type PackedCoord ¶
type PackedCoord uint16
PackedCoord represents a 16 bit packed representation of a float32
func (PackedCoord) Float ¶
func (pc PackedCoord) Float() float32
Float returns the floating point representation of the coord
func (PackedCoord) MarshalJSON ¶
func (pc PackedCoord) MarshalJSON() ([]byte, error)
MarshalJSON marhals the packed coordinate as a floating point value
func (*PackedCoord) SetFloat ¶
func (pc *PackedCoord) SetFloat(coord float32)
SetFloat sets the PackedCoord to the uint16 representation of the floating point coord
func (*PackedCoord) UnmarshalJSON ¶
func (pc *PackedCoord) UnmarshalJSON(data []byte) error
UnmarshalJSON marhals the floating point value as a packed coordinate
type PackedPosition ¶
type PackedPosition struct {
X, Z, Y PackedCoord
}
PackedPosition defines the data array for position
type Perform ¶
Perform defines the struct for a perform block
func (Perform) IsBlockData ¶ added in v1.45.2
func (Perform) IsBlockData()
type PlayerSpawn ¶
type PlayerSpawn struct {
Title uint16
U1b uint16
CurrentWorld uint16
HomeWorld uint16
GMRank byte
U3c, U4 byte
OnlineStatus byte
Pose byte
U5a, U5b, U5c byte
TargetID uint64
U6, U7 uint32
WeaponMain WeaponGear
WeaponSub WeaponGear
CraftSub WeaponGear
U14, U15 uint32
BNPCBase, BNPCName uint32
U18, U19, DirectorID uint32
OwnerID uint32
UnkID3 uint32
MaxHP, CurrentHP uint32
DisplayFlags uint32
FateID uint16
CurrentMP uint16
CurrentTP uint16
MaxMP uint16
U21a uint16
ModelChara uint16
Direction uint16 // Quantized direction 0x0000 ~ 0xFFFF, NWSE <=> 0,0x4000,0x8000,0xC000
Minion uint16
Index byte
State byte // 0-1 for alive, 2 for dead, 3 for persistent emote
Emote byte // Applies for when State is 3
Type byte // 1 for player, 2 for NPC, else furniture
Subtype byte // 4 for players, 2 pet, 3 companion, 5 mob, 7 minion
Voice byte
U25c uint16
EnemyType byte // 0 for friendly, anything else is an enemy
Level byte
ClassJob byte
U26d byte
U27a uint16
MountInfo MountInfo
StatusLoopVFX byte
U28c uint32
U29 uint32
Statuses [30]StatusEffect
X float32
Z float32
Y float32
Head Gear
Body Gear
Hand Gear
Leg Gear
Foot Gear
Ear Gear
Neck Gear
Wrist Gear
Ring1 Gear
Ring2 Gear
Name EntityName
Model ModelInfo
FCTag FCTag
U30 uint64
}
PlayerSpawn defines the data array for a new entity block
func (PlayerSpawn) IsBlockData ¶ added in v1.45.2
func (PlayerSpawn) IsBlockData()
type RemoveEntity ¶
RemoveEntity defines the data array for a remove entity block
func (RemoveEntity) IsBlockData ¶ added in v1.45.2
func (RemoveEntity) IsBlockData()
type SetPos ¶
type SetPos struct {
Direction uint16
WaitForLoad byte
U1 byte
U2 uint32
X float32
Z float32
Y float32
U3 uint32
}
SetPos defines the data array for a movement block
func (SetPos) IsBlockData ¶ added in v1.45.2
func (SetPos) IsBlockData()
type StatusEffect ¶
StatusEffect represents the data structure for a status effect
type UpdateHPMPTP ¶
UpdateHPMPTP defines the data array for a updateHPMPTP block
func (UpdateHPMPTP) IsBlockData ¶ added in v1.45.2
func (UpdateHPMPTP) IsBlockData()
type UpdateStatuses ¶
type UpdateStatuses struct {
U1 uint32
CurrentHP uint32
MaxHP uint32
CurrentMP uint16
MaxMP uint16
CurrentTP uint16
U2 uint16 // 0?
Statuses [30]StatusEffect
U3 uint32
}
UpdateStatuses defines the data array for an update statuses block
func (UpdateStatuses) IsBlockData ¶ added in v1.45.2
func (UpdateStatuses) IsBlockData()
type WeaponGear ¶
type WeaponGear struct {
Model1, Model2, Model3, Model4 uint16
}
WeaponGear defines the data struct for a weapon gear
type WeatherChange ¶
WeatherChange defines the data array for a weather change block
func (WeatherChange) IsBlockData ¶ added in v1.45.2
func (WeatherChange) IsBlockData()
type XWorldPartyList ¶
type XWorldPartyList struct {
PartyLeader uint64
Entries [8]XWorldPlayerEntry
}
XWorldPartyList defines the data array for a cross world party list
func (XWorldPartyList) IsBlockData ¶ added in v1.45.2
func (XWorldPartyList) IsBlockData()
type XWorldPlayerEntry ¶
type XWorldPlayerEntry struct {
PlayerID uint64
U1 uint32 // Bitfield, affects the icon in various ways
U2 uint32
CharacterID uint32
ClientLanguage byte
U3b byte
U3c uint16
Level byte
U4 byte
WorldID uint16
ClassJob byte
U6 byte
Languages byte // Bitfield, affects available languages
GrandCompany byte
Name EntityName
}
XWorldPlayerEntry defines the player entry for a party list
Source Files
¶
- action.go
- addstatus.go
- aoeaction16.go
- aoeaction24.go
- aoeaction32.go
- aoeaction8.go
- begincrafting.go
- casting.go
- craftstate.go
- equipchange.go
- gauge.go
- gear.go
- hatelist.go
- hateranking.go
- initzone.go
- mapchange.go
- marker.go
- mount.go
- movement.go
- myaction.go
- mymovement.go
- mymovement2.go
- notify.go
- notify3.go
- notify4.go
- npcspawn.go
- npcspawn2.go
- packedposition.go
- perform.go
- playerspawn.go
- removeentity.go
- setpos.go
- statuseffect.go
- string.go
- types.go
- updatehpmptp.go
- updatestatuses.go
- weatherchange.go
- xworldpartylist.go