// Package cmd implements a Minecraft specific command system, which may be used simply by 'plugging' it in // and sending commands registered in an AvailableCommandsPacket. // // The cmd package handles commands in a specific way: It requires a struct to be passed to the cmd.New() // function, which implements the Runnable interface. For every exported field in the struct, executing the // command will result in the parsing of the arguments using the types of the fields of the struct, in the // order that they appear in. Fields unexported or ignored using the `cmd:"-"` struct tag (see below) have // their values copied but retained. // // A Runnable may have exported fields only of the following types: // int8, int16, int32, int64, int, uint8, uint16, uint32, uint64, uint, // float32, float64, string, bool, mgl64.Vec3, Varargs, []Target, cmd.SubCommand, Optional[T] (to make a parameter // optional), or a type that implements the cmd.Parameter or cmd.Enum interface. cmd.Enum implementations must be of the // type string. // Fields in the Runnable struct may have `cmd:` struct tag to specify the name and suffix of a parameter as such: // // type T struct { // Param int `cmd:"name,suffix"` // } // // If no name is set, the field name is used. Additionally, the name as specified in the struct tag may be '-' to make // the parser ignore the field. In this case, the field does not have to be of one of the types above. // // Commands may be registered using the cmd.Register() method. By itself, this method will not ensure that the // client will be able to use the command: The user of the cmd package must handle commands itself and run the // appropriate one using the cmd.ByAlias function. package cmd