-
Notifications
You must be signed in to change notification settings - Fork 6
/
resource_pack_client_response.go
50 lines (43 loc) · 1.34 KB
/
resource_pack_client_response.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
package packet
import (
"dotcs/minecraft/protocol"
)
const (
PackResponseRefused = iota + 1
PackResponseSendPacks
PackResponseAllPacksDownloaded
PackResponseCompleted
)
// ResourcePackClientResponse is sent by the client in response to resource packets sent by the server. It is
// used to let the server know what action needs to be taken for the client to have all resource packs ready
// and set.
type ResourcePackClientResponse struct {
// Response is the response type of the response. It is one of the constants found above.
Response byte
// PacksToDownload is a list of resource pack UUIDs combined with their version that need to be downloaded
// (for example SomePack_1.0.0), if the Response field is PackResponseSendPacks.
PacksToDownload []string
}
// ID ...
func (*ResourcePackClientResponse) ID() uint32 {
return IDResourcePackClientResponse
}
// Marshal ...
func (pk *ResourcePackClientResponse) Marshal(w *protocol.Writer) {
w.Uint8(&pk.Response)
l := uint16(len(pk.PacksToDownload))
w.Uint16(&l)
for _, pack := range pk.PacksToDownload {
w.String(&pack)
}
}
// Unmarshal ...
func (pk *ResourcePackClientResponse) Unmarshal(r *protocol.Reader) {
var length uint16
r.Uint8(&pk.Response)
r.Uint16(&length)
pk.PacksToDownload = make([]string, length)
for i := uint16(0); i < length; i++ {
r.String(&pk.PacksToDownload[i])
}
}