1 /*
2  * This file has been automatically generated by Soupply and released under the MIT license.
3  * Generated from data/java210.xml
4  */
5 module soupply.java210.types;
6 
7 static import std.conv;
8 import packetmaker;
9 import packetmaker.maker : EndianType, writeLength, readLength;
10 
11 import xbuffer.memory : xalloc, xfree;
12 
13 import soupply.util;
14 import soupply.java210.metadata;
15 
16 struct Statistic
17 {
18 
19     enum string[] __fields = ["name", "value"];
20 
21     string name;
22     @Var uint value;
23 
24     mixin Make!(Endian.bigEndian, varuint);
25 
26     string toString()
27     {
28         return "Statistic(name: " ~ std.conv.to!string(this.name) ~ ", value: " ~ std.conv.to!string(this.value) ~ ")";
29     }
30 
31 }
32 
33 struct BlockChange
34 {
35 
36     enum string[] __fields = ["xz", "y", "block"];
37 
38     ubyte xz;
39     ubyte y;
40     @Var uint block;
41 
42     mixin Make!(Endian.bigEndian, varuint);
43 
44     string toString()
45     {
46         return "BlockChange(xz: " ~ std.conv.to!string(this.xz) ~ ", y: " ~ std.conv.to!string(this.y) ~ ", block: " ~ std.conv.to!string(this.block) ~ ")";
47     }
48 
49 }
50 
51 struct Slot
52 {
53 
54     enum string[] __fields = ["id", "count", "damage", "nbt"];
55 
56     short id;
57     @Condition("id>0") ubyte count;
58     @Condition("id>0") ushort damage;
59     @Condition("id>0") @Bytes ubyte[] nbt;
60 
61     mixin Make!(Endian.bigEndian, varuint);
62 
63     string toString()
64     {
65         return "Slot(id: " ~ std.conv.to!string(this.id) ~ ", count: " ~ std.conv.to!string(this.count) ~ ", damage: " ~ std.conv.to!string(this.damage) ~ ", nbt: " ~ std.conv.to!string(this.nbt) ~ ")";
66     }
67 
68 }
69 
70 struct Icon
71 {
72 
73     // direction and type
74     enum ubyte WHITE_ARROW = 0;
75     enum ubyte GREEN_ARROW = 1;
76     enum ubyte RED_ARROW = 2;
77     enum ubyte BLUE_ARROW = 3;
78     enum ubyte WHITE_CROSS = 4;
79     enum ubyte RED_POINTER = 5;
80     enum ubyte WHITE_CIRCLE = 6;
81 
82     enum string[] __fields = ["directionAndType", "position"];
83 
84     ubyte directionAndType;
85     Vector!(ubyte, "xz") position;
86 
87     mixin Make!(Endian.bigEndian, varuint);
88 
89     string toString()
90     {
91         return "Icon(directionAndType: " ~ std.conv.to!string(this.directionAndType) ~ ", position: " ~ std.conv.to!string(this.position) ~ ")";
92     }
93 
94 }
95 
96 struct Property
97 {
98 
99     enum string[] __fields = ["name", "value", "signed", "signature"];
100 
101     string name;
102     string value;
103     bool signed;
104     @Condition("signed==true") string signature;
105 
106     mixin Make!(Endian.bigEndian, varuint);
107 
108     string toString()
109     {
110         return "Property(name: " ~ std.conv.to!string(this.name) ~ ", value: " ~ std.conv.to!string(this.value) ~ ", signed: " ~ std.conv.to!string(this.signed) ~ ", signature: " ~ std.conv.to!string(this.signature) ~ ")";
111     }
112 
113 }
114 
115 struct ListAddPlayer
116 {
117 
118     // gamemode
119     enum uint SURVIVAL = 0;
120     enum uint CREATIVE = 1;
121     enum uint ADVENTURE = 2;
122     enum uint SPECTATOR = 3;
123 
124     enum string[] __fields = ["uuid", "name", "properties", "gamemode", "latency", "hasDisplayName", "displayName"];
125 
126     UUID uuid;
127     string name;
128     soupply.java210.types.Property[] properties;
129     @Var uint gamemode;
130     @Var uint latency;
131     bool hasDisplayName;
132     @Condition("hasDisplayName==true") string displayName;
133 
134     mixin Make!(Endian.bigEndian, varuint);
135 
136     string toString()
137     {
138         return "ListAddPlayer(uuid: " ~ std.conv.to!string(this.uuid) ~ ", name: " ~ std.conv.to!string(this.name) ~ ", properties: " ~ std.conv.to!string(this.properties) ~ ", gamemode: " ~ std.conv.to!string(this.gamemode) ~ ", latency: " ~ std.conv.to!string(this.latency) ~ ", hasDisplayName: " ~ std.conv.to!string(this.hasDisplayName) ~ ", displayName: " ~ std.conv.to!string(this.displayName) ~ ")";
139     }
140 
141 }
142 
143 struct ListUpdateGamemode
144 {
145 
146     // gamemode
147     enum uint SURVIVAL = 0;
148     enum uint CREATIVE = 1;
149     enum uint ADVENTURE = 2;
150     enum uint SPECTATOR = 3;
151 
152     enum string[] __fields = ["uuid", "gamemode"];
153 
154     UUID uuid;
155     @Var uint gamemode;
156 
157     mixin Make!(Endian.bigEndian, varuint);
158 
159     string toString()
160     {
161         return "ListUpdateGamemode(uuid: " ~ std.conv.to!string(this.uuid) ~ ", gamemode: " ~ std.conv.to!string(this.gamemode) ~ ")";
162     }
163 
164 }
165 
166 struct ListUpdateLatency
167 {
168 
169     enum string[] __fields = ["uuid", "latency"];
170 
171     UUID uuid;
172     @Var uint latency;
173 
174     mixin Make!(Endian.bigEndian, varuint);
175 
176     string toString()
177     {
178         return "ListUpdateLatency(uuid: " ~ std.conv.to!string(this.uuid) ~ ", latency: " ~ std.conv.to!string(this.latency) ~ ")";
179     }
180 
181 }
182 
183 struct ListUpdateDisplayName
184 {
185 
186     enum string[] __fields = ["uuid", "hasDisplayName", "displayName"];
187 
188     UUID uuid;
189     bool hasDisplayName;
190     @Condition("hasDisplayName==true") string displayName;
191 
192     mixin Make!(Endian.bigEndian, varuint);
193 
194     string toString()
195     {
196         return "ListUpdateDisplayName(uuid: " ~ std.conv.to!string(this.uuid) ~ ", hasDisplayName: " ~ std.conv.to!string(this.hasDisplayName) ~ ", displayName: " ~ std.conv.to!string(this.displayName) ~ ")";
197     }
198 
199 }
200 
201 struct Modifier
202 {
203 
204     // operation
205     enum ubyte ADD_SUBSTRACT_AMOUNT = 0;
206     enum ubyte ADD_SUBSTRACT_AMOUNT_PERCENTAGE = 1;
207     enum ubyte MULTIPLY_AMOUNT_PERCENTAGE = 2;
208 
209     enum string[] __fields = ["uuid", "amount", "operation"];
210 
211     UUID uuid;
212     double amount;
213     ubyte operation;
214 
215     mixin Make!(Endian.bigEndian, varuint);
216 
217     string toString()
218     {
219         return "Modifier(uuid: " ~ std.conv.to!string(this.uuid) ~ ", amount: " ~ std.conv.to!string(this.amount) ~ ", operation: " ~ std.conv.to!string(this.operation) ~ ")";
220     }
221 
222 }
223 
224 struct Attribute
225 {
226 
227     enum string[] __fields = ["key", "value", "modifiers"];
228 
229     string key;
230     double value;
231     soupply.java210.types.Modifier[] modifiers;
232 
233     mixin Make!(Endian.bigEndian, varuint);
234 
235     string toString()
236     {
237         return "Attribute(key: " ~ std.conv.to!string(this.key) ~ ", value: " ~ std.conv.to!string(this.value) ~ ", modifiers: " ~ std.conv.to!string(this.modifiers) ~ ")";
238     }
239 
240 }
241 
242 struct OptionalPosition
243 {
244 
245     enum string[] __fields = ["hasPosition", "position"];
246 
247     bool hasPosition;
248     @Condition("hasPosition==true") ulong position;
249 
250     mixin Make!(Endian.bigEndian, varuint);
251 
252     string toString()
253     {
254         return "OptionalPosition(hasPosition: " ~ std.conv.to!string(this.hasPosition) ~ ", position: " ~ std.conv.to!string(this.position) ~ ")";
255     }
256 
257 }
258 
259 struct OptionalUuid
260 {
261 
262     enum string[] __fields = ["hasUuid", "uuid"];
263 
264     bool hasUuid;
265     UUID uuid;
266 
267     mixin Make!(Endian.bigEndian, varuint);
268 
269     string toString()
270     {
271         return "OptionalUuid(hasUuid: " ~ std.conv.to!string(this.hasUuid) ~ ", uuid: " ~ std.conv.to!string(this.uuid) ~ ")";
272     }
273 
274 }