1 /*
2  * This file has been automatically generated by Soupply and released under the MIT license.
3  * Generated from data/java393.xml
4  */
5 module soupply.java393.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.java393.metadata;
15 
16 struct Slot
17 {
18 
19     enum string[] __fields = ["id", "count", "nbt"];
20 
21     short id;
22     @Condition("id>0") ubyte count;
23     @Condition("id>0") @Bytes ubyte[] nbt;
24 
25     mixin Make!(Endian.bigEndian, varuint);
26 
27     string toString()
28     {
29         return "Slot(id: " ~ std.conv.to!string(this.id) ~ ", count: " ~ std.conv.to!string(this.count) ~ ", nbt: " ~ std.conv.to!string(this.nbt) ~ ")";
30     }
31 
32 }
33 
34 struct Particle
35 {
36 
37     enum string[] __fields = ["id", "dataVaruint", "dataFloat", "dataSlot"];
38 
39     @Var uint id;
40     @Condition("id==3||id==20") @Var uint dataVaruint;
41     @Condition("id==11") float dataFloat;
42     @Condition("id==27") soupply.java393.types.Slot dataSlot;
43 
44     mixin Make!(Endian.bigEndian, varuint);
45 
46     string toString()
47     {
48         return "Particle(id: " ~ std.conv.to!string(this.id) ~ ", dataVaruint: " ~ std.conv.to!string(this.dataVaruint) ~ ", dataFloat: " ~ std.conv.to!string(this.dataFloat) ~ ", dataSlot: " ~ std.conv.to!string(this.dataSlot) ~ ")";
49     }
50 
51 }
52 
53 struct Property
54 {
55 
56     enum string[] __fields = ["name", "value", "signed", "signature"];
57 
58     string name;
59     string value;
60     bool signed;
61     @Condition("signed==true") string signature;
62 
63     mixin Make!(Endian.bigEndian, varuint);
64 
65     string toString()
66     {
67         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) ~ ")";
68     }
69 
70 }
71 
72 struct ListAddPlayer
73 {
74 
75     // gamemode
76     enum uint SURVIVAL = 0;
77     enum uint CREATIVE = 1;
78     enum uint ADVENTURE = 2;
79     enum uint SPECTATOR = 3;
80 
81     enum string[] __fields = ["uuid", "name", "properties", "gamemode", "latency", "hasDisplayName", "displayName"];
82 
83     UUID uuid;
84     string name;
85     soupply.java393.types.Property[] properties;
86     @Var uint gamemode;
87     @Var uint latency;
88     bool hasDisplayName;
89     @Condition("hasDisplayName==true") string displayName;
90 
91     mixin Make!(Endian.bigEndian, varuint);
92 
93     string toString()
94     {
95         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) ~ ")";
96     }
97 
98 }
99 
100 struct ListUpdateGamemode
101 {
102 
103     // gamemode
104     enum uint SURVIVAL = 0;
105     enum uint CREATIVE = 1;
106     enum uint ADVENTURE = 2;
107     enum uint SPECTATOR = 3;
108 
109     enum string[] __fields = ["uuid", "gamemode"];
110 
111     UUID uuid;
112     @Var uint gamemode;
113 
114     mixin Make!(Endian.bigEndian, varuint);
115 
116     string toString()
117     {
118         return "ListUpdateGamemode(uuid: " ~ std.conv.to!string(this.uuid) ~ ", gamemode: " ~ std.conv.to!string(this.gamemode) ~ ")";
119     }
120 
121 }
122 
123 struct ListUpdateLatency
124 {
125 
126     enum string[] __fields = ["uuid", "latency"];
127 
128     UUID uuid;
129     @Var uint latency;
130 
131     mixin Make!(Endian.bigEndian, varuint);
132 
133     string toString()
134     {
135         return "ListUpdateLatency(uuid: " ~ std.conv.to!string(this.uuid) ~ ", latency: " ~ std.conv.to!string(this.latency) ~ ")";
136     }
137 
138 }
139 
140 struct ListUpdateDisplayName
141 {
142 
143     enum string[] __fields = ["uuid", "hasDisplayName", "displayName"];
144 
145     UUID uuid;
146     bool hasDisplayName;
147     @Condition("hasDisplayName==true") string displayName;
148 
149     mixin Make!(Endian.bigEndian, varuint);
150 
151     string toString()
152     {
153         return "ListUpdateDisplayName(uuid: " ~ std.conv.to!string(this.uuid) ~ ", hasDisplayName: " ~ std.conv.to!string(this.hasDisplayName) ~ ", displayName: " ~ std.conv.to!string(this.displayName) ~ ")";
154     }
155 
156 }
157 
158 struct Modifier
159 {
160 
161     // operation
162     enum ubyte ADD_SUBSTRACT_AMOUNT = 0;
163     enum ubyte ADD_SUBSTRACT_AMOUNT_PERCENTAGE = 1;
164     enum ubyte MULTIPLY_AMOUNT_PERCENTAGE = 2;
165 
166     enum string[] __fields = ["uuid", "amount", "operation"];
167 
168     UUID uuid;
169     double amount;
170     ubyte operation;
171 
172     mixin Make!(Endian.bigEndian, varuint);
173 
174     string toString()
175     {
176         return "Modifier(uuid: " ~ std.conv.to!string(this.uuid) ~ ", amount: " ~ std.conv.to!string(this.amount) ~ ", operation: " ~ std.conv.to!string(this.operation) ~ ")";
177     }
178 
179 }
180 
181 struct Attribute
182 {
183 
184     enum string[] __fields = ["key", "value", "modifiers"];
185 
186     string key;
187     double value;
188     soupply.java393.types.Modifier[] modifiers;
189 
190     mixin Make!(Endian.bigEndian, varuint);
191 
192     string toString()
193     {
194         return "Attribute(key: " ~ std.conv.to!string(this.key) ~ ", value: " ~ std.conv.to!string(this.value) ~ ", modifiers: " ~ std.conv.to!string(this.modifiers) ~ ")";
195     }
196 
197 }
198 
199 struct Entry
200 {
201 
202     enum string[] __fields = ["item", "craftingSlot", "playerSlot"];
203 
204     soupply.java393.types.Slot item;
205     ubyte craftingSlot;
206     ubyte playerSlot;
207 
208     mixin Make!(Endian.bigEndian, varuint);
209 
210     string toString()
211     {
212         return "Entry(item: " ~ std.conv.to!string(this.item) ~ ", craftingSlot: " ~ std.conv.to!string(this.craftingSlot) ~ ", playerSlot: " ~ std.conv.to!string(this.playerSlot) ~ ")";
213     }
214 
215 }
216 
217 struct OptionalChat
218 {
219 
220     enum string[] __fields = ["hasChat", "chat"];
221 
222     bool hasChat;
223     @Condition("hasChat==true") string chat;
224 
225     mixin Make!(Endian.bigEndian, varuint);
226 
227     string toString()
228     {
229         return "OptionalChat(hasChat: " ~ std.conv.to!string(this.hasChat) ~ ", chat: " ~ std.conv.to!string(this.chat) ~ ")";
230     }
231 
232 }
233 
234 struct OptionalPosition
235 {
236 
237     enum string[] __fields = ["hasPosition", "position"];
238 
239     bool hasPosition;
240     @Condition("hasPosition==true") ulong position;
241 
242     mixin Make!(Endian.bigEndian, varuint);
243 
244     string toString()
245     {
246         return "OptionalPosition(hasPosition: " ~ std.conv.to!string(this.hasPosition) ~ ", position: " ~ std.conv.to!string(this.position) ~ ")";
247     }
248 
249 }
250 
251 struct OptionalUuid
252 {
253 
254     enum string[] __fields = ["hasUuid", "uuid"];
255 
256     bool hasUuid;
257     @Condition("hasUuid==true") UUID uuid;
258 
259     mixin Make!(Endian.bigEndian, varuint);
260 
261     string toString()
262     {
263         return "OptionalUuid(hasUuid: " ~ std.conv.to!string(this.hasUuid) ~ ", uuid: " ~ std.conv.to!string(this.uuid) ~ ")";
264     }
265 
266 }
267 
268 struct Tag
269 {
270 
271     enum string[] __fields = ["name", "entries"];
272 
273     string name;
274     @Var uint[] entries;
275 
276     mixin Make!(Endian.bigEndian, varuint);
277 
278     string toString()
279     {
280         return "Tag(name: " ~ std.conv.to!string(this.name) ~ ", entries: " ~ std.conv.to!string(this.entries) ~ ")";
281     }
282 
283 }
284 
285 struct Statistic
286 {
287 
288     enum string[] __fields = ["category", "statistic", "value"];
289 
290     @Var uint category;
291     @Var uint statistic;
292     @Var uint value;
293 
294     mixin Make!(Endian.bigEndian, varuint);
295 
296     string toString()
297     {
298         return "Statistic(category: " ~ std.conv.to!string(this.category) ~ ", statistic: " ~ std.conv.to!string(this.statistic) ~ ", value: " ~ std.conv.to!string(this.value) ~ ")";
299     }
300 
301 }
302 
303 struct BlockChange
304 {
305 
306     enum string[] __fields = ["xz", "y", "block"];
307 
308     ubyte xz;
309     ubyte y;
310     @Var uint block;
311 
312     mixin Make!(Endian.bigEndian, varuint);
313 
314     string toString()
315     {
316         return "BlockChange(xz: " ~ std.conv.to!string(this.xz) ~ ", y: " ~ std.conv.to!string(this.y) ~ ", block: " ~ std.conv.to!string(this.block) ~ ")";
317     }
318 
319 }
320 
321 struct Match
322 {
323 
324     enum string[] __fields = ["match", "hasTooltip", "tooltip"];
325 
326     string match;
327     bool hasTooltip;
328     @Condition("hasTooltip==true") string tooltip;
329 
330     mixin Make!(Endian.bigEndian, varuint);
331 
332     string toString()
333     {
334         return "Match(match: " ~ std.conv.to!string(this.match) ~ ", hasTooltip: " ~ std.conv.to!string(this.hasTooltip) ~ ", tooltip: " ~ std.conv.to!string(this.tooltip) ~ ")";
335     }
336 
337 }
338 
339 struct Node
340 {
341 
342     enum string[] __fields = ["flags", "children", "redirectNode", "name", "parser", "properties"];
343 
344     ubyte flags;
345     @Var uint[] children;
346     @Condition("(flags&8)!=0") @Var uint redirectNode;
347     @Condition("(flags&1)!=0||(flags&2)!=0") string name;
348     @Condition("(flags&2)!=0") string parser;
349     @Condition("(flags&2)!=0") @Bytes ubyte[] properties;
350 
351     mixin Make!(Endian.bigEndian, varuint);
352 
353     string toString()
354     {
355         return "Node(flags: " ~ std.conv.to!string(this.flags) ~ ", children: " ~ std.conv.to!string(this.children) ~ ", redirectNode: " ~ std.conv.to!string(this.redirectNode) ~ ", name: " ~ std.conv.to!string(this.name) ~ ", parser: " ~ std.conv.to!string(this.parser) ~ ", properties: " ~ std.conv.to!string(this.properties) ~ ")";
356     }
357 
358 }
359 
360 struct Icon
361 {
362 
363     // type
364     enum uint WHITE_ARROW = 0;
365     enum uint GREEN_ARROW = 1;
366     enum uint RED_ARROW = 2;
367     enum uint BLUE_ARROW = 3;
368     enum uint WHITE_CROSS = 4;
369     enum uint RED_POINTER = 5;
370     enum uint WHITE_CIRCLE = 6;
371     enum uint SMALL_WHITE_CIRCLE = 7;
372     enum uint MANSION = 8;
373     enum uint TEMPLE = 9;
374     enum uint WHITE_BANNER = 10;
375     enum uint ORANGE_BANNER = 11;
376     enum uint MAGENTA_BANNER = 12;
377     enum uint LIGHT_BLUE_BANNER = 13;
378     enum uint YELLOW_BANNER = 14;
379     enum uint LIME_BANNER = 15;
380     enum uint PINK_BANNER = 16;
381     enum uint GRAY_BANNER = 17;
382     enum uint LIGHT_GRAY_BANNER = 18;
383     enum uint CYAN_BANNER = 19;
384     enum uint PURPLE_BANNER = 20;
385     enum uint BLUE_BANNER = 21;
386     enum uint BROWN_BANNER = 22;
387     enum uint GREEN_BANNER = 23;
388     enum uint RED_BANNER = 24;
389     enum uint BLACK_BANNER = 25;
390     enum uint TREASURE_MARKER = 26;
391 
392     enum string[] __fields = ["type", "x", "z", "direction", "hasDisplayName", "displayName"];
393 
394     @Var uint type;
395     ubyte x;
396     ubyte z;
397     ubyte direction;
398     bool hasDisplayName;
399     @Condition("hasDisplayName==true") string displayName;
400 
401     mixin Make!(Endian.bigEndian, varuint);
402 
403     string toString()
404     {
405         return "Icon(type: " ~ std.conv.to!string(this.type) ~ ", x: " ~ std.conv.to!string(this.x) ~ ", z: " ~ std.conv.to!string(this.z) ~ ", direction: " ~ std.conv.to!string(this.direction) ~ ", hasDisplayName: " ~ std.conv.to!string(this.hasDisplayName) ~ ", displayName: " ~ std.conv.to!string(this.displayName) ~ ")";
406     }
407 
408 }
409 
410 struct Recipe
411 {
412 
413     enum string[] __fields = ["recipeId"];
414 
415     @Var uint recipeId;
416 
417     mixin Make!(Endian.bigEndian, varuint);
418 
419     string toString()
420     {
421         return "Recipe(recipeId: " ~ std.conv.to!string(this.recipeId) ~ ")";
422     }
423 
424 }