Documentation
¶
Index ¶
- Variables
- type ClientCacheBlobStatusHandler
- type CommandRequestHandler
- type ContainerCloseHandler
- type Controllable
- type EmoteHandler
- type InteractHandler
- type InventoryTransactionHandler
- type ItemStackRequestHandler
- type MobEquipmentHandler
- type ModalFormResponseHandler
- type NetworkStackLatencyHandler
- type PlayerActionHandler
- type PlayerAuthInputHandler
- type RequestChunkRadiusHandler
- type RespawnHandler
- type Session
- func (s *Session) Close() error
- func (s *Session) CloseConnection()
- func (s *Session) Disconnect(message string)
- func (s *Session) EnableCoordinates(enable bool)
- func (s *Session) HandleInventories() (inv, offHand *inventory.Inventory, armour *inventory.Armour, heldSlot *uint32)
- func (s *Session) HideEntity(e world.Entity)
- func (s *Session) OpenBlockContainer(pos world.BlockPos)
- func (s *Session) Ping()
- func (s *Session) Position() mgl64.Vec3
- func (s *Session) RemoveBossBar()
- func (s *Session) RemoveScoreboard()
- func (s *Session) SendActionBarMessage(text string)
- func (s *Session) SendAnnouncement(message string)
- func (s *Session) SendAvailableCommands()
- func (s *Session) SendBossBar(text string, healthPercentage float64)
- func (s *Session) SendCommandOutput(output *cmd.Output)
- func (s *Session) SendForm(f form.Form)
- func (s *Session) SendGameMode(mode gamemode.GameMode)
- func (s *Session) SendHealth(health, max float64)
- func (s *Session) SendJukeboxPopup(message string)
- func (s *Session) SendMessage(message string)
- func (s *Session) SendPopup(message string)
- func (s *Session) SendRespawn()
- func (s *Session) SendScoreboard(displayName string)
- func (s *Session) SendScoreboardLines(v []string)
- func (s *Session) SendSpeed(speed float64)
- func (s *Session) SendSubtitle(text string)
- func (s *Session) SendTip(message string)
- func (s *Session) SendTitle(text string)
- func (s *Session) SendVelocity(velocity mgl64.Vec3)
- func (s *Session) SetTitleDurations(fadeInDuration, remainDuration, fadeOutDuration time.Duration)
- func (s *Session) Start(c Controllable, w *world.World, onStop func(controllable Controllable))
- func (s *Session) Transfer(ip net.IP, port int)
- func (s *Session) ViewBlockAction(pos world.BlockPos, a blockAction.Action)
- func (s *Session) ViewBlockUpdate(pos world.BlockPos, b world.Block, layer int)
- func (s *Session) ViewChunk(pos world.ChunkPos, c *chunk.Chunk)
- func (s *Session) ViewEmote(player world.Entity, emote uuid.UUID)
- func (s *Session) ViewEntity(e world.Entity)
- func (s *Session) ViewEntityAction(e world.Entity, a action.Action)
- func (s *Session) ViewEntityArmour(e world.Entity)
- func (s *Session) ViewEntityItems(e world.Entity)
- func (s *Session) ViewEntityMovement(e world.Entity, deltaPos mgl64.Vec3, deltaYaw, deltaPitch float64)
- func (s *Session) ViewEntityState(e world.Entity, states []state.State)
- func (s *Session) ViewEntityTeleport(e world.Entity, position mgl64.Vec3)
- func (s *Session) ViewParticle(pos mgl64.Vec3, p world.Particle)
- func (s *Session) ViewSlotChange(slot int, newItem item.Stack)
- func (s *Session) ViewSound(pos mgl64.Vec3, soundType world.Sound)
- func (s *Session) ViewTime(time int)
- type TextHandler
Constants ¶
This section is empty.
Variables ¶
var ErrSelfRuntimeID = errors.New("invalid entity runtime ID: runtime ID for self must always be 1")
ErrSelfRuntimeID is an error returned during packet handling for fields that refer to the player itself and must therefore always be 1.
var Nop = &Session{}
Nop represents a no-operation session. It does not do anything when sending a packet to it.
Functions ¶
This section is empty.
Types ¶
type ClientCacheBlobStatusHandler ¶
type ClientCacheBlobStatusHandler struct {
}
ClientCacheBlobStatusHandler handles the ClientCacheBlobStatus packet.
type CommandRequestHandler ¶
type CommandRequestHandler struct {
// contains filtered or unexported fields
}
CommandRequestHandler handles the CommandRequest packet.
type ContainerCloseHandler ¶
type ContainerCloseHandler struct{}
ContainerCloseHandler handles the ContainerClose packet.
type Controllable ¶
type Controllable interface {
world.Entity
item.Carrier
form.Submitter
Move(deltaPos mgl64.Vec3)
Speed() float64
EyeHeight() float64
Rotate(deltaYaw, deltaPitch float64)
Chat(msg ...interface{})
ExecuteCommand(commandLine string)
GameMode() gamemode.GameMode
SetGameMode(mode gamemode.GameMode)
UseItem()
UseItemOnBlock(pos world.BlockPos, face world.Face, clickPos mgl64.Vec3)
UseItemOnEntity(e world.Entity)
BreakBlock(pos world.BlockPos)
AttackEntity(e world.Entity)
Respawn()
StartSneaking()
StopSneaking()
StartSprinting()
StopSprinting()
StartSwimming()
StopSwimming()
StartBreaking(pos world.BlockPos)
ContinueBreaking(face world.Face)
FinishBreaking()
AbortBreaking()
// Name returns the display name of the controllable. This name is shown in-game to other viewers of the
// world.
Name() string
// UUID returns the UUID of the controllable. It must be unique for all controllable entities present in
// the server.
UUID() uuid.UUID
// XUID returns the XBOX Live User ID of the controllable. Every controllable must have one of these, as
// they must be connected to an XBOX Live account.
XUID() string
// Skin returns the skin of the controllable. Each controllable must have a skin, as it defines how the
// entity looks in the world.
Skin() skin.Skin
}
Controllable represents an entity that may be controlled by a Session. Generally, a Controllable is implemented in the form of a Player. Methods in Controllable will be added as Session needs them in order to handle packets.
type EmoteHandler ¶
EmoteHandler handles the Emote packet.
type InventoryTransactionHandler ¶
type InventoryTransactionHandler struct{}
InventoryTransactionHandler handles the InventoryTransaction packet.
type ItemStackRequestHandler ¶
type ItemStackRequestHandler struct {
// contains filtered or unexported fields
}
ItemStackRequestHandler handles the ItemStackRequest packet. It handles the actions done within the inventory.
type MobEquipmentHandler ¶
type MobEquipmentHandler struct{}
MobEquipmentHandler handles the MobEquipment packet.
type ModalFormResponseHandler ¶
type ModalFormResponseHandler struct {
// contains filtered or unexported fields
}
ModalFormResponseHandler handles the ModalFormResponse packet.
type NetworkStackLatencyHandler ¶
type NetworkStackLatencyHandler struct{}
NetworkStackLatencyHandler handles the NetworkStackLatency packet.
type PlayerActionHandler ¶
type PlayerActionHandler struct{}
PlayerActionHandler handles the PlayerAction packet.
type PlayerAuthInputHandler ¶
type PlayerAuthInputHandler struct{}
PlayerAuthInputHandler handles the PlayerAuthInput packet.
type RequestChunkRadiusHandler ¶
type RequestChunkRadiusHandler struct{}
RequestChunkRadiusHandler handles the RequestChunkRadius packet.
type Session ¶
type Session struct {
// contains filtered or unexported fields
}
Session handles incoming packets from connections and sends outgoing packets by providing a thin layer of abstraction over direct packets. A Session basically 'controls' an entity.
func New ¶
New returns a new session using a controllable entity. The session will control this entity using the packets that it receives. New takes the connection from which to accept packets. It will start handling these packets after a call to Session.Start().
func (*Session) Close ¶
Close closes the session, which in turn closes the controllable and the connection that the session manages.
func (*Session) CloseConnection ¶
func (s *Session) CloseConnection()
CloseConnection closes the underlying connection of the session so that the session ends up being closed eventually.
func (*Session) Disconnect ¶
Disconnect disconnects the client and ultimately closes the session. If the message passed is non-empty, it will be shown to the client.
func (*Session) EnableCoordinates ¶
EnableCoordinates will either enable or disable coordinates for the player depending on the value given.
func (*Session) HandleInventories ¶
func (s *Session) HandleInventories() (inv, offHand *inventory.Inventory, armour *inventory.Armour, heldSlot *uint32)
HandleInventories starts handling the inventories of the Controllable of the session. It sends packets when slots in the inventory are changed.
func (*Session) OpenBlockContainer ¶
OpenBlockContainer ...
func (*Session) Ping ¶
func (s *Session) Ping()
Ping sends a ping packet to the client and returns once a response is received.
func (*Session) RemoveBossBar ¶
func (s *Session) RemoveBossBar()
RemoveBossBar removes any boss bar currently active on the player's screen.
func (*Session) SendActionBarMessage ¶
SendActionBarMessage ...
func (*Session) SendAnnouncement ¶
SendAnnouncement ...
func (*Session) SendAvailableCommands ¶
func (s *Session) SendAvailableCommands()
SendAvailableCommands sends all available commands of the server. Once sent, they will be visible in the /help list and will be auto-completed.
func (*Session) SendBossBar ¶
SendBossBar sends a boss bar to the player with the text passed and the health percentage of the bar. SendBossBar removes any boss bar that might be active before sending the new one.
func (*Session) SendCommandOutput ¶
SendCommandOutput sends the output of a command to the player. It will be shown to the caller of the command, which might be the player or a websocket server.
func (*Session) SendForm ¶
SendForm sends a form to the client of the connection. The Submit method of the form is called when the client submits the form.
func (*Session) SendGameMode ¶
SendGameMode sends the game mode of the Controllable of the session to the client. It makes sure the right flags are set to create the full game mode.
func (*Session) SendHealth ¶
SendHealth sends the health and max health to the player.
func (*Session) SendJukeboxPopup ¶
SendJukeboxPopup ...
func (*Session) SendRespawn ¶
func (s *Session) SendRespawn()
SendRespawn spawns the controllable of the session client-side in the world, provided it is has died.
func (*Session) SendScoreboard ¶
SendScoreboard ...
func (*Session) SendScoreboardLines ¶
SendScoreboardLines sends a list of scoreboard lines for the scoreboard currently active on the player's screen.
func (*Session) SendSpeed ¶
SendSpeed sends the speed of the player in an UpdateAttributes packet, so that it is updated client-side.
func (*Session) SendVelocity ¶
SendVelocity sends the velocity of the player to the client.
func (*Session) SetTitleDurations ¶
SetTitleDurations ...
func (*Session) Start ¶
func (s *Session) Start(c Controllable, w *world.World, onStop func(controllable Controllable))
Start makes the session start handling incoming packets from the client and initialises the controllable of the session in the world. The function passed will be called when the session stops running.
func (*Session) ViewBlockAction ¶
func (s *Session) ViewBlockAction(pos world.BlockPos, a blockAction.Action)
ViewBlockAction ...
func (*Session) ViewBlockUpdate ¶
ViewBlockUpdate ...
func (*Session) ViewEntityAction ¶
ViewEntityAction ...
func (*Session) ViewEntityArmour ¶
ViewEntityArmour ...
func (*Session) ViewEntityItems ¶
ViewEntityItems ...
func (*Session) ViewEntityMovement ¶
func (s *Session) ViewEntityMovement(e world.Entity, deltaPos mgl64.Vec3, deltaYaw, deltaPitch float64)
ViewEntityMovement ...
func (*Session) ViewEntityState ¶
ViewEntityState ...
func (*Session) ViewEntityTeleport ¶
ViewEntityTeleport ...
func (*Session) ViewParticle ¶
ViewParticle ...
func (*Session) ViewSlotChange ¶
ViewSlotChange ...
Source Files
¶
- command.go
- controllable.go
- entity_metadata.go
- handler.go
- handler_client_cache_blob_status.go
- handler_command_request.go
- handler_container_close.go
- handler_emote.go
- handler_interact.go
- handler_inventory_transaction.go
- handler_item_stack_request.go
- handler_mob_equipment.go
- handler_modal_form_response.go
- handler_network_stack_latency.go
- handler_player_action.go
- handler_player_auth_input.go
- handler_request_chunk_radius.go
- handler_respawn.go
- handler_text.go
- player.go
- session.go
- text.go
- world.go