proto

package
v0.0.0-...-c982c26 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jun 3, 2014 License: MIT Imports: 9 Imported by: 0

Documentation

Index

Constants

View Source
const (

	// Packet type IDs
	PacketIdKeepAlive            = 0x00
	PacketIdLogin                = 0x01
	PacketIdHandshake            = 0x02
	PacketIdChatMessage          = 0x03
	PacketIdTimeUpdate           = 0x04
	PacketIdEntityEquipment      = 0x05
	PacketIdSpawnPosition        = 0x06
	PacketIdUseEntity            = 0x07
	PacketIdUpdateHealth         = 0x08
	PacketIdRespawn              = 0x09
	PacketIdPlayer               = 0x0a
	PacketIdPlayerPosition       = 0x0b
	PacketIdPlayerLook           = 0x0c
	PacketIdPlayerPositionLook   = 0x0d
	PacketIdPlayerBlockHit       = 0x0e
	PacketIdPlayerBlockInteract  = 0x0f
	PacketIdHoldingChange        = 0x10
	PacketIdBedUse               = 0x11
	PacketIdEntityAnimation      = 0x12
	PacketIdEntityAction         = 0x13
	PacketIdNamedEntitySpawn     = 0x14
	PacketIdItemSpawn            = 0x15
	PacketIdItemCollect          = 0x16
	PacketIdObjectSpawn          = 0x17
	PacketIdEntitySpawn          = 0x18
	PacketIdPaintingSpawn        = 0x19
	PacketIdExperienceOrb        = 0x1a
	PacketIdEntityVelocity       = 0x1c
	PacketIdEntityDestroy        = 0x1d
	PacketIdEntity               = 0x1e
	PacketIdEntityRelMove        = 0x1f
	PacketIdEntityLook           = 0x20
	PacketIdEntityLookAndRelMove = 0x21
	PacketIdEntityTeleport       = 0x22
	PacketIdEntityStatus         = 0x26
	PacketIdEntityMetadata       = 0x28
	PacketIdEntityEffect         = 0x29
	PacketIdEntityRemoveEffect   = 0x2a
	PacketIdPlayerExperience     = 0x2b
	PacketIdPreChunk             = 0x32
	PacketIdMapChunk             = 0x33
	PacketIdBlockChangeMulti     = 0x34
	PacketIdBlockChange          = 0x35
	PacketIdNoteBlockPlay        = 0x36
	PacketIdExplosion            = 0x3c
	PacketIdSoundEffect          = 0x3d
	PacketIdState                = 0x46
	PacketIdWeather              = 0x47
	PacketIdWindowOpen           = 0x64
	PacketIdWindowClose          = 0x65
	PacketIdWindowClick          = 0x66
	PacketIdWindowSetSlot        = 0x67
	PacketIdWindowItems          = 0x68
	PacketIdWindowProgressBar    = 0x69
	PacketIdWindowTransaction    = 0x6a
	PacketIdQuickbarSlotUpdate   = 0x6b
	PacketIdSignUpdate           = 0x82
	PacketIdItemData             = 0x83
	PacketIdIncrementStatistic   = 0xc8
	PacketIdUserListItem         = 0xc9
	PacketIdServerListPing       = 0xfe
	PacketIdDisconnect           = 0xff
)

Variables

This section is empty.

Functions

func ClientReadPacket

func ClientReadPacket(reader io.Reader, handler IClientPacketHandler) (err error)

A client should call this to receive a single packet from a client. It will block until a packet was successfully handled, or there was an error.

func ClientReadPacketExpect

func ClientReadPacketExpect(reader io.Reader, handler IClientPacketHandler, expectedIds []byte) (err error)

func ClientWriteLogin

func ClientWriteLogin(writer io.Writer, username, password string) (err error)

func ClientWritePlayerPositionLook

func ClientWritePlayerPositionLook(writer io.Writer, position *AbsXyz, stance AbsCoord, look *LookDegrees, onGround bool) (err error)

func ServerReadPacket

func ServerReadPacket(reader io.Reader, handler IServerPacketHandler) (err error)

A server should call this to receive a single packet from a client. It will block until a packet was successfully handled, or there was an error.

func ServerReadPacketExpect

func ServerReadPacketExpect(reader io.Reader, handler IServerPacketHandler, expectedIds []byte) (err error)

func ServerWriteHandshake

func ServerWriteHandshake(writer io.Writer, reply string) (err error)

func ServerWriteLogin

func ServerWriteLogin(writer io.Writer, entityId EntityId, mapSeed RandomSeed, serverMode int32, dimension DimensionId, difficulty GameDifficulty, worldHeight, maxPlayers byte) (err error)

func ServerWritePlayerPositionLook

func ServerWritePlayerPositionLook(writer io.Writer, position *AbsXyz, stance AbsCoord, look *LookDegrees, onGround bool) (err error)

func ServerWriteTimeUpdate

func ServerWriteTimeUpdate(writer io.Writer, time Ticks) error

func WriteBedUse

func WriteBedUse(writer io.Writer, flag bool, bedLoc *BlockXyz) (err error)

func WriteBlockChange

func WriteBlockChange(writer io.Writer, blockLoc *BlockXyz, blockType BlockId, blockMetaData byte) (err error)

func WriteBlockChangeMulti

func WriteBlockChangeMulti(writer io.Writer, chunkLoc *ChunkXz, blockCoords []SubChunkXyz, blockTypes []BlockId, blockMetaData []byte) (err error)

func WriteChatMessage

func WriteChatMessage(writer io.Writer, message string) (err error)

func WriteDisconnect

func WriteDisconnect(writer io.Writer, reason string) (err error)

func WriteEntity

func WriteEntity(writer io.Writer, entityId EntityId) (err error)

func WriteEntityAction

func WriteEntityAction(writer io.Writer, entityId EntityId, action EntityAction) (err error)

func WriteEntityAnimation

func WriteEntityAnimation(writer io.Writer, entityId EntityId, animation EntityAnimation) (err error)

func WriteEntityDestroy

func WriteEntityDestroy(writer io.Writer, entityId EntityId) error

func WriteEntityEffect

func WriteEntityEffect(writer io.Writer, entityId EntityId, effect EntityEffect, value int8, duration int16) (err error)

func WriteEntityEquipment

func WriteEntityEquipment(writer io.Writer, entityId EntityId, slot SlotId, itemTypeId ItemTypeId, data ItemData) (err error)

func WriteEntityLook

func WriteEntityLook(writer io.Writer, entityId EntityId, look *LookBytes) error

func WriteEntityLookAndRelMove

func WriteEntityLookAndRelMove(writer io.Writer, entityId EntityId, movement *RelMove, look *LookBytes) (err error)

func WriteEntityMetadata

func WriteEntityMetadata(writer io.Writer, entityId EntityId, data []EntityMetadata) (err error)

func WriteEntityRelMove

func WriteEntityRelMove(writer io.Writer, entityId EntityId, movement *RelMove) (err error)

func WriteEntityRemoveEffect

func WriteEntityRemoveEffect(writer io.Writer, entityId EntityId, effect EntityEffect) (err error)

func WriteEntitySpawn

func WriteEntitySpawn(writer io.Writer, entityId EntityId, mobType EntityMobType, position *AbsIntXyz, look *LookBytes, data []EntityMetadata) (err error)

func WriteEntityStatus

func WriteEntityStatus(writer io.Writer, entityId EntityId, status EntityStatus) (err error)

func WriteEntityTeleport

func WriteEntityTeleport(writer io.Writer, entityId EntityId, position *AbsIntXyz, look *LookBytes) error

func WriteEntityVelocity

func WriteEntityVelocity(writer io.Writer, entityId EntityId, velocity *Velocity) (err error)

func WriteExperienceOrb

func WriteExperienceOrb(writer io.Writer, entityId EntityId, position AbsIntXyz, count int16) (err error)

func WriteExplosion

func WriteExplosion(writer io.Writer, position *AbsXyz, power float32, blockOffsets []ExplosionOffsetXyz) (err error)

func WriteHoldingChange

func WriteHoldingChange(writer io.Writer, slotId SlotId) (err error)

func WriteIncrementStatistic

func WriteIncrementStatistic(writer io.Writer, statisticId StatisticId, delta int8) (err error)

func WriteItemCollect

func WriteItemCollect(writer io.Writer, collectedItem EntityId, collector EntityId) (err error)

func WriteItemData

func WriteItemData(writer io.Writer, itemTypeId ItemTypeId, itemDataId ItemData, data []byte) (err error)

func WriteItemSpawn

func WriteItemSpawn(writer io.Writer, entityId EntityId, itemTypeId ItemTypeId, amount ItemCount, data ItemData, position *AbsIntXyz, orientation *OrientationBytes) error

func WriteKeepAlive

func WriteKeepAlive(writer io.Writer, id int32) error

func WriteMapChunk

func WriteMapChunk(writer io.Writer, chunkLoc *ChunkXz, blocks, blockData, blockLight, skyLight []byte) (err error)

func WriteNamedEntitySpawn

func WriteNamedEntitySpawn(writer io.Writer, entityId EntityId, name string, position *AbsIntXyz, look *LookBytes, currentItem ItemTypeId) (err error)

func WriteNoteBlockPlay

func WriteNoteBlockPlay(writer io.Writer, position *BlockXyz, instrument InstrumentId, pitch NotePitch) (err error)

func WriteObjectSpawn

func WriteObjectSpawn(writer io.Writer, entityId EntityId, objType ObjTypeId, position *AbsIntXyz, objectData *ObjectData) (err error)

func WritePaintingSpawn

func WritePaintingSpawn(writer io.Writer, entityId EntityId, title string, position *BlockXyz, paintingType PaintingTypeId) (err error)

func WritePlayer

func WritePlayer(writer io.Writer, onGround bool) (err error)

func WritePlayerBlockHit

func WritePlayerBlockHit(writer io.Writer, status DigStatus, blockLoc *BlockXyz, face Face) (err error)

func WritePlayerBlockInteract

func WritePlayerBlockInteract(writer io.Writer, itemTypeId ItemTypeId, blockLoc *BlockXyz, face Face, amount ItemCount, data ItemData) (err error)

func WritePlayerExperience

func WritePlayerExperience(writer io.Writer, experience, level int8, totalExperience int16) (err error)

func WritePlayerLook

func WritePlayerLook(writer io.Writer, look *LookDegrees, onGround bool) (err error)

func WritePlayerPosition

func WritePlayerPosition(writer io.Writer, position *AbsXyz, stance AbsCoord, onGround bool) error

func WritePreChunk

func WritePreChunk(writer io.Writer, chunkLoc *ChunkXz, mode ChunkLoadMode) error

func WriteQuickbarSlotUpdate

func WriteQuickbarSlotUpdate(writer io.Writer, slot SlotId, itemId ItemTypeId, count ItemCount, data ItemData) (err error)

func WriteRespawn

func WriteRespawn(writer io.Writer, dimension DimensionId, unknown int8, gameType GameType, worldHeight int16, mapSeed RandomSeed) error

func WriteServerListPing

func WriteServerListPing(writer io.Writer) (err error)

func WriteSignUpdate

func WriteSignUpdate(writer io.Writer, position *BlockXyz, lines [4]string) (err error)

func WriteSoundEffect

func WriteSoundEffect(writer io.Writer, sound SoundEffect, position BlockXyz, data int32) (err error)

func WriteSpawnPosition

func WriteSpawnPosition(writer io.Writer, position *BlockXyz) error

func WriteState

func WriteState(writer io.Writer, reason, gameMode byte) (err error)

func WriteUpdateHealth

func WriteUpdateHealth(writer io.Writer, health Health, food FoodUnits, foodSaturation float32) (err error)

func WriteUseEntity

func WriteUseEntity(writer io.Writer, user EntityId, target EntityId, leftClick bool) (err error)

func WriteUserListItem

func WriteUserListItem(writer io.Writer, username string, online bool, pingMs int16) (err error)

func WriteWeather

func WriteWeather(writer io.Writer, entityId EntityId, raining bool, position *AbsIntXyz) (err error)

func WriteWindowClick

func WriteWindowClick(writer io.Writer, windowId WindowId, slot SlotId, rightClick bool, txId TxId, shiftClick bool, expectedSlot WindowSlot) (err error)

func WriteWindowClose

func WriteWindowClose(writer io.Writer, windowId WindowId) (err error)

func WriteWindowItems

func WriteWindowItems(writer io.Writer, windowId WindowId, items []WindowSlot) (err error)

func WriteWindowOpen

func WriteWindowOpen(writer io.Writer, windowId WindowId, invTypeId InvTypeId, windowTitle string, numSlots byte) (err error)

func WriteWindowProgressBar

func WriteWindowProgressBar(writer io.Writer, windowId WindowId, prgBarId PrgBarId, value PrgBarValue) error

func WriteWindowSetSlot

func WriteWindowSetSlot(writer io.Writer, windowId WindowId, slot SlotId, itemTypeId ItemTypeId, amount ItemCount, data ItemData) (err error)

func WriteWindowTransaction

func WriteWindowTransaction(writer io.Writer, windowId WindowId, txId TxId, accepted bool) (err error)

Types

type EntityMetadata

type EntityMetadata struct {
	Field1 byte
	Field2 byte
	Field3 interface{}
}

type ExplosionOffsetXyz

type ExplosionOffsetXyz struct {
	X, Y, Z int8
}

type IClientPacketHandler

type IClientPacketHandler interface {
	IPacketHandler
	PacketClientLogin(entityId EntityId, mapSeed RandomSeed, serverMode int32, dimension DimensionId, unknown int8, worldHeight, maxPlayers byte)
	PacketClientHandshake(serverId string)
	PacketTimeUpdate(time Ticks)
	PacketBedUse(flag bool, bedLoc *BlockXyz)
	PacketNamedEntitySpawn(entityId EntityId, name string, position *AbsIntXyz, look *LookBytes, currentItem ItemTypeId)
	PacketEntityEquipment(entityId EntityId, slot SlotId, itemTypeId ItemTypeId, data ItemData)
	PacketSpawnPosition(position *BlockXyz)
	PacketUpdateHealth(health Health, food FoodUnits, foodSaturation float32)
	PacketItemSpawn(entityId EntityId, itemTypeId ItemTypeId, count ItemCount, data ItemData, location *AbsIntXyz, orientation *OrientationBytes)
	PacketItemCollect(collectedItem EntityId, collector EntityId)
	PacketObjectSpawn(entityId EntityId, objType ObjTypeId, position *AbsIntXyz, objectData *ObjectData)
	PacketEntitySpawn(entityId EntityId, mobType EntityMobType, position *AbsIntXyz, look *LookBytes, data []EntityMetadata)
	PacketPaintingSpawn(entityId EntityId, title string, position *BlockXyz, paintingType PaintingTypeId)
	PacketExperienceOrb(entityId EntityId, position AbsIntXyz, count int16)
	PacketEntityVelocity(entityId EntityId, velocity *Velocity)
	PacketEntityDestroy(entityId EntityId)
	PacketEntity(entityId EntityId)
	PacketEntityRelMove(entityId EntityId, movement *RelMove)
	PacketEntityLook(entityId EntityId, look *LookBytes)
	PacketEntityTeleport(entityId EntityId, position *AbsIntXyz, look *LookBytes)
	PacketEntityStatus(entityId EntityId, status EntityStatus)
	PacketEntityMetadata(entityId EntityId, metadata []EntityMetadata)
	PacketEntityEffect(entityId EntityId, effect EntityEffect, value int8, duration int16)
	PacketEntityRemoveEffect(entityId EntityId, effect EntityEffect)
	PacketPlayerExperience(experience, level int8, totalExperience int16)

	PacketPreChunk(position *ChunkXz, mode ChunkLoadMode)
	PacketMapChunk(position *BlockXyz, size *SubChunkSize, data []byte)
	PacketBlockChangeMulti(chunkLoc *ChunkXz, blockCoords []SubChunkXyz, blockTypes []BlockId, blockMetaData []byte)
	PacketBlockChange(blockLoc *BlockXyz, blockType BlockId, blockMetaData byte)
	PacketNoteBlockPlay(position *BlockXyz, instrument InstrumentId, pitch NotePitch)

	// NOTE method signature likely to change
	PacketExplosion(position *AbsXyz, power float32, blockOffsets []ExplosionOffsetXyz)
	PacketSoundEffect(sound SoundEffect, position BlockXyz, data int32)

	PacketState(reason, gameMode byte)
	PacketWeather(entityId EntityId, raining bool, position *AbsIntXyz)

	PacketWindowOpen(windowId WindowId, invTypeId InvTypeId, windowTitle string, numSlots byte)
	PacketWindowSetSlot(windowId WindowId, slot SlotId, itemTypeId ItemTypeId, amount ItemCount, data ItemData)
	PacketWindowItems(windowId WindowId, items []WindowSlot)
	PacketWindowProgressBar(windowId WindowId, prgBarId PrgBarId, value PrgBarValue)
	PacketQuickbarSlotUpdate(slot SlotId, itemId ItemTypeId, count ItemCount, data ItemData)
	PacketItemData(itemTypeId ItemTypeId, itemDataId ItemData, data []byte)
	PacketIncrementStatistic(statisticId StatisticId, delta int8)
	PacketUserListItem(username string, unknown bool, ping int16)
}

Clients to the protocol must implement this interface to receive packets

type IPacketHandler

type IPacketHandler interface {
	PacketKeepAlive(id int32)
	PacketChatMessage(message string)
	PacketEntityAction(entityId EntityId, action EntityAction)
	PacketUseEntity(user EntityId, target EntityId, leftClick bool)
	PacketRespawn(dimension DimensionId, unknown int8, gameType GameType, worldHeight int16, mapSeed RandomSeed)
	PacketPlayerPosition(position *AbsXyz, stance AbsCoord, onGround bool)
	PacketPlayerLook(look *LookDegrees, onGround bool)
	PacketPlayerBlockHit(status DigStatus, blockLoc *BlockXyz, face Face)
	PacketPlayerBlockInteract(itemTypeId ItemTypeId, blockLoc *BlockXyz, face Face, amount ItemCount, data ItemData)
	PacketEntityAnimation(entityId EntityId, animation EntityAnimation)
	PacketWindowTransaction(windowId WindowId, txId TxId, accepted bool)
	PacketSignUpdate(position *BlockXyz, lines [4]string)
	PacketDisconnect(reason string)
}

Packets commonly received by both client and server

type IServerPacketHandler

type IServerPacketHandler interface {
	IPacketHandler
	PacketServerLogin(username string)
	PacketServerHandshake(username string)
	PacketPlayer(onGround bool)
	PacketHoldingChange(slotId SlotId)
	PacketWindowClose(windowId WindowId)
	PacketWindowClick(windowId WindowId, slot SlotId, rightClick bool, txId TxId, shiftClick bool, expectedSlot *WindowSlot)
	PacketServerListPing()
}

Servers to the protocol must implement this interface to receive packets

type ObjectData

type ObjectData struct {
	Field1 int32
	Field2 [3]uint16
}

type UnexpectedPacketIdError

type UnexpectedPacketIdError byte

func (UnexpectedPacketIdError) Error

func (err UnexpectedPacketIdError) Error() string

type UnknownPacketIdError

type UnknownPacketIdError byte

func (UnknownPacketIdError) Error

func (err UnknownPacketIdError) Error() string

type WindowSlot

type WindowSlot struct {
	ItemTypeId ItemTypeId
	Count      ItemCount
	Data       ItemData
}

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL