-
Notifications
You must be signed in to change notification settings - Fork 19
/
Copy pathexample.js
82 lines (78 loc) · 1.49 KB
/
example.js
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
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
const ProtoDef = require('protodef').ProtoDef
const Serializer = require('protodef').Serializer
const Parser = require('protodef').Parser
// the protocol can be in a separate json file
const exampleProtocol = {
'container': 'native',
'varint': 'native',
'byte': 'native',
'bool': 'native',
'switch': 'native',
'entity_look': [
'container',
[
{
'name': 'entityId',
'type': 'varint'
},
{
'name': 'yaw',
'type': 'i8'
},
{
'name': 'pitch',
'type': 'i8'
},
{
'name': 'onGround',
'type': 'bool'
}
]
],
'packet': [
'container',
[
{
'name': 'name',
'type': [
'mapper',
{
'type': 'varint',
'mappings': {
'22': 'entity_look'
}
}
]
},
{
'name': 'params',
'type': [
'switch',
{
'compareTo': 'name',
'fields': {
'entity_look': 'entity_look'
}
}
]
}
]
]
}
const proto = new ProtoDef()
proto.addTypes(exampleProtocol)
const parser = new Parser(proto, 'packet')
const serializer = new Serializer(proto, 'packet')
serializer.write({
name: 'entity_look',
params: {
'entityId': 1,
'yaw': 1,
'pitch': 1,
'onGround': true
}
})
serializer.pipe(parser)
parser.on('data', function (chunk) {
console.log(JSON.stringify(chunk, null, 2))
})