1 /*
2  * This file has been automatically generated by Soupply and released under the MIT license.
3  * Generated from bedrock160
4  */
5 module soupply.bedrock160.metadata;
6 
7 import xpacket;
8 
9 import xserial.serial : EndianType, serializeLength, serializeNumber, deserializeLength, deserializeNumber;
10 
11 import soupply.util;
12 
13 static import soupply.bedrock160.types;
14 
15 class MetadataValue : PacketImpl!(Endian.littleEndian, varuint, varuint)
16 {
17 
18     @Var @EncodeOnly uint type;
19 
20     this(uint type) pure nothrow @safe @nogc
21     {
22         this.type = type;
23     }
24 
25     mixin Make;
26 
27 }
28 
29 class MetadataByte : MetadataValue
30 {
31 
32     byte value;
33 
34     this() pure nothrow @safe @nogc
35     {
36         super(0);
37     }
38 
39     this(byte value) pure nothrow @safe @nogc
40     {
41         this();
42         this.value = value;
43     }
44 
45     mixin Make;
46 
47 }
48 
49 class MetadataShort : MetadataValue
50 {
51 
52     short value;
53 
54     this() pure nothrow @safe @nogc
55     {
56         super(1);
57     }
58 
59     this(short value) pure nothrow @safe @nogc
60     {
61         this();
62         this.value = value;
63     }
64 
65     mixin Make;
66 
67 }
68 
69 class MetadataInt : MetadataValue
70 {
71 
72     @Var int value;
73 
74     this() pure nothrow @safe @nogc
75     {
76         super(2);
77     }
78 
79     this(int value) pure nothrow @safe @nogc
80     {
81         this();
82         this.value = value;
83     }
84 
85     mixin Make;
86 
87 }
88 
89 class MetadataFloat : MetadataValue
90 {
91 
92     float value;
93 
94     this() pure nothrow @safe @nogc
95     {
96         super(3);
97     }
98 
99     this(float value) pure nothrow @safe @nogc
100     {
101         this();
102         this.value = value;
103     }
104 
105     mixin Make;
106 
107 }
108 
109 class MetadataString : MetadataValue
110 {
111 
112     string value;
113 
114     this() pure nothrow @safe @nogc
115     {
116         super(4);
117     }
118 
119     this(string value) pure nothrow @safe @nogc
120     {
121         this();
122         this.value = value;
123     }
124 
125     mixin Make;
126 
127 }
128 
129 class MetadataSlot : MetadataValue
130 {
131 
132     soupply.bedrock160.types.Slot value;
133 
134     this() pure nothrow @safe @nogc
135     {
136         super(5);
137     }
138 
139     this(soupply.bedrock160.types.Slot value) pure nothrow @safe @nogc
140     {
141         this();
142         this.value = value;
143     }
144 
145     mixin Make;
146 
147 }
148 
149 class MetadataBlockPosition : MetadataValue
150 {
151 
152     @Var Vector!(int, "xyz") value;
153 
154     this() pure nothrow @safe @nogc
155     {
156         super(6);
157     }
158 
159     this(Vector!(int, "xyz") value) pure nothrow @safe @nogc
160     {
161         this();
162         this.value = value;
163     }
164 
165     mixin Make;
166 
167 }
168 
169 class MetadataLong : MetadataValue
170 {
171 
172     @Var long value;
173 
174     this() pure nothrow @safe @nogc
175     {
176         super(7);
177     }
178 
179     this(long value) pure nothrow @safe @nogc
180     {
181         this();
182         this.value = value;
183     }
184 
185     mixin Make;
186 
187 }
188 
189 class MetadataEntityPosition : MetadataValue
190 {
191 
192     Vector!(float, "xyz") value;
193 
194     this() pure nothrow @safe @nogc
195     {
196         super(8);
197     }
198 
199     this(Vector!(float, "xyz") value) pure nothrow @safe @nogc
200     {
201         this();
202         this.value = value;
203     }
204 
205     mixin Make;
206 
207 }
208 
209 class Metadata
210 {
211 
212     MetadataValue[uint] values;
213 
214     this()
215     {
216         this.values[0] = new MetadataLong(long(0));
217         this.values[7] = new MetadataShort(short(0));
218         this.values[38] = new MetadataLong(long(-1));
219     }
220 
221     void serialize(Buffer buffer)
222     {
223         serializeLength!(EndianType.var, uint)(buffer, values.length);
224         foreach(id, value; values)
225         {
226             serializeNumber!(EndianType.var, uint)(buffer, id);
227             value.encodeBody(buffer);
228         }
229     }
230 
231     void deserialize(Buffer buffer)
232     {
233         foreach(i ; 0..deserializeLength!(EndianType.var, uint)(buffer))
234         {
235             uint id = deserializeNumber!(EndianType.var, uint)(buffer);
236             switch(deserializeNumber!(EndianType.var, uint)(buffer))
237             {
238                 case 0:
239                     auto value = new MetadataByte();
240                     value.decodeBody(buffer);
241                     this.values[id] = value;
242                     break;
243                 case 1:
244                     auto value = new MetadataShort();
245                     value.decodeBody(buffer);
246                     this.values[id] = value;
247                     break;
248                 case 2:
249                     auto value = new MetadataInt();
250                     value.decodeBody(buffer);
251                     this.values[id] = value;
252                     break;
253                 case 3:
254                     auto value = new MetadataFloat();
255                     value.decodeBody(buffer);
256                     this.values[id] = value;
257                     break;
258                 case 4:
259                     auto value = new MetadataString();
260                     value.decodeBody(buffer);
261                     this.values[id] = value;
262                     break;
263                 case 5:
264                     auto value = new MetadataSlot();
265                     value.decodeBody(buffer);
266                     this.values[id] = value;
267                     break;
268                 case 6:
269                     auto value = new MetadataBlockPosition();
270                     value.decodeBody(buffer);
271                     this.values[id] = value;
272                     break;
273                 case 7:
274                     auto value = new MetadataLong();
275                     value.decodeBody(buffer);
276                     this.values[id] = value;
277                     break;
278                 case 8:
279                     auto value = new MetadataEntityPosition();
280                     value.decodeBody(buffer);
281                     this.values[id] = value;
282                     break;
283                 default: throw new Exception("Unknown metadata type");
284             }
285         }
286     }
287 
288     @property long entityFlags()
289     {
290         auto ptr = 0 in this.values;
291         if(ptr && cast(MetadataLong)*ptr) return (cast(MetadataLong)*ptr).value;
292         return long(0);
293     }
294 
295     @property long entityFlags(long value)
296     {
297         auto ptr = 0 in this.values;
298         if(ptr && cast(MetadataLong)*ptr) (cast(MetadataLong)*ptr).value = value;
299         else this.values[0] = new MetadataLong(value);
300         return value;
301     }
302 
303     @property int health()
304     {
305         auto ptr = 1 in this.values;
306         if(ptr && cast(MetadataInt)*ptr) return (cast(MetadataInt)*ptr).value;
307         return (int).init;
308     }
309 
310     @property int health(int value)
311     {
312         auto ptr = 1 in this.values;
313         if(ptr && cast(MetadataInt)*ptr) (cast(MetadataInt)*ptr).value = value;
314         else this.values[1] = new MetadataInt(value);
315         return value;
316     }
317 
318     @property int variant()
319     {
320         auto ptr = 2 in this.values;
321         if(ptr && cast(MetadataInt)*ptr) return (cast(MetadataInt)*ptr).value;
322         return (int).init;
323     }
324 
325     @property int variant(int value)
326     {
327         auto ptr = 2 in this.values;
328         if(ptr && cast(MetadataInt)*ptr) (cast(MetadataInt)*ptr).value = value;
329         else this.values[2] = new MetadataInt(value);
330         return value;
331     }
332 
333     @property byte color()
334     {
335         auto ptr = 3 in this.values;
336         if(ptr && cast(MetadataByte)*ptr) return (cast(MetadataByte)*ptr).value;
337         return (byte).init;
338     }
339 
340     @property byte color(byte value)
341     {
342         auto ptr = 3 in this.values;
343         if(ptr && cast(MetadataByte)*ptr) (cast(MetadataByte)*ptr).value = value;
344         else this.values[3] = new MetadataByte(value);
345         return value;
346     }
347 
348     @property string nametag()
349     {
350         auto ptr = 4 in this.values;
351         if(ptr && cast(MetadataString)*ptr) return (cast(MetadataString)*ptr).value;
352         return (string).init;
353     }
354 
355     @property string nametag(string value)
356     {
357         auto ptr = 4 in this.values;
358         if(ptr && cast(MetadataString)*ptr) (cast(MetadataString)*ptr).value = value;
359         else this.values[4] = new MetadataString(value);
360         return value;
361     }
362 
363     @property long owner()
364     {
365         auto ptr = 5 in this.values;
366         if(ptr && cast(MetadataLong)*ptr) return (cast(MetadataLong)*ptr).value;
367         return long(-1);
368     }
369 
370     @property long owner(long value)
371     {
372         auto ptr = 5 in this.values;
373         if(ptr && cast(MetadataLong)*ptr) (cast(MetadataLong)*ptr).value = value;
374         else this.values[5] = new MetadataLong(value);
375         return value;
376     }
377 
378     @property long target()
379     {
380         auto ptr = 6 in this.values;
381         if(ptr && cast(MetadataLong)*ptr) return (cast(MetadataLong)*ptr).value;
382         return (long).init;
383     }
384 
385     @property long target(long value)
386     {
387         auto ptr = 6 in this.values;
388         if(ptr && cast(MetadataLong)*ptr) (cast(MetadataLong)*ptr).value = value;
389         else this.values[6] = new MetadataLong(value);
390         return value;
391     }
392 
393     @property short air()
394     {
395         auto ptr = 7 in this.values;
396         if(ptr && cast(MetadataShort)*ptr) return (cast(MetadataShort)*ptr).value;
397         return short(0);
398     }
399 
400     @property short air(short value)
401     {
402         auto ptr = 7 in this.values;
403         if(ptr && cast(MetadataShort)*ptr) (cast(MetadataShort)*ptr).value = value;
404         else this.values[7] = new MetadataShort(value);
405         return value;
406     }
407 
408     @property int potionColor()
409     {
410         auto ptr = 8 in this.values;
411         if(ptr && cast(MetadataInt)*ptr) return (cast(MetadataInt)*ptr).value;
412         return (int).init;
413     }
414 
415     @property int potionColor(int value)
416     {
417         auto ptr = 8 in this.values;
418         if(ptr && cast(MetadataInt)*ptr) (cast(MetadataInt)*ptr).value = value;
419         else this.values[8] = new MetadataInt(value);
420         return value;
421     }
422 
423     @property byte potionAmbient()
424     {
425         auto ptr = 9 in this.values;
426         if(ptr && cast(MetadataByte)*ptr) return (cast(MetadataByte)*ptr).value;
427         return (byte).init;
428     }
429 
430     @property byte potionAmbient(byte value)
431     {
432         auto ptr = 9 in this.values;
433         if(ptr && cast(MetadataByte)*ptr) (cast(MetadataByte)*ptr).value = value;
434         else this.values[9] = new MetadataByte(value);
435         return value;
436     }
437 
438     @property int hurtTime()
439     {
440         auto ptr = 11 in this.values;
441         if(ptr && cast(MetadataInt)*ptr) return (cast(MetadataInt)*ptr).value;
442         return (int).init;
443     }
444 
445     @property int hurtTime(int value)
446     {
447         auto ptr = 11 in this.values;
448         if(ptr && cast(MetadataInt)*ptr) (cast(MetadataInt)*ptr).value = value;
449         else this.values[11] = new MetadataInt(value);
450         return value;
451     }
452 
453     @property int hurtDirection()
454     {
455         auto ptr = 12 in this.values;
456         if(ptr && cast(MetadataInt)*ptr) return (cast(MetadataInt)*ptr).value;
457         return (int).init;
458     }
459 
460     @property int hurtDirection(int value)
461     {
462         auto ptr = 12 in this.values;
463         if(ptr && cast(MetadataInt)*ptr) (cast(MetadataInt)*ptr).value = value;
464         else this.values[12] = new MetadataInt(value);
465         return value;
466     }
467 
468     @property float paddleTimeLeft()
469     {
470         auto ptr = 13 in this.values;
471         if(ptr && cast(MetadataFloat)*ptr) return (cast(MetadataFloat)*ptr).value;
472         return (float).init;
473     }
474 
475     @property float paddleTimeLeft(float value)
476     {
477         auto ptr = 13 in this.values;
478         if(ptr && cast(MetadataFloat)*ptr) (cast(MetadataFloat)*ptr).value = value;
479         else this.values[13] = new MetadataFloat(value);
480         return value;
481     }
482 
483     @property float paddleTimeRight()
484     {
485         auto ptr = 14 in this.values;
486         if(ptr && cast(MetadataFloat)*ptr) return (cast(MetadataFloat)*ptr).value;
487         return (float).init;
488     }
489 
490     @property float paddleTimeRight(float value)
491     {
492         auto ptr = 14 in this.values;
493         if(ptr && cast(MetadataFloat)*ptr) (cast(MetadataFloat)*ptr).value = value;
494         else this.values[14] = new MetadataFloat(value);
495         return value;
496     }
497 
498     @property int experienceCount()
499     {
500         auto ptr = 15 in this.values;
501         if(ptr && cast(MetadataInt)*ptr) return (cast(MetadataInt)*ptr).value;
502         return (int).init;
503     }
504 
505     @property int experienceCount(int value)
506     {
507         auto ptr = 15 in this.values;
508         if(ptr && cast(MetadataInt)*ptr) (cast(MetadataInt)*ptr).value = value;
509         else this.values[15] = new MetadataInt(value);
510         return value;
511     }
512 
513     @property int minecartBlock()
514     {
515         auto ptr = 16 in this.values;
516         if(ptr && cast(MetadataInt)*ptr) return (cast(MetadataInt)*ptr).value;
517         return (int).init;
518     }
519 
520     @property int minecartBlock(int value)
521     {
522         auto ptr = 16 in this.values;
523         if(ptr && cast(MetadataInt)*ptr) (cast(MetadataInt)*ptr).value = value;
524         else this.values[16] = new MetadataInt(value);
525         return value;
526     }
527 
528     @property int minecartOffset()
529     {
530         auto ptr = 17 in this.values;
531         if(ptr && cast(MetadataInt)*ptr) return (cast(MetadataInt)*ptr).value;
532         return (int).init;
533     }
534 
535     @property int minecartOffset(int value)
536     {
537         auto ptr = 17 in this.values;
538         if(ptr && cast(MetadataInt)*ptr) (cast(MetadataInt)*ptr).value = value;
539         else this.values[17] = new MetadataInt(value);
540         return value;
541     }
542 
543     @property byte minecartHasBlock()
544     {
545         auto ptr = 18 in this.values;
546         if(ptr && cast(MetadataByte)*ptr) return (cast(MetadataByte)*ptr).value;
547         return (byte).init;
548     }
549 
550     @property byte minecartHasBlock(byte value)
551     {
552         auto ptr = 18 in this.values;
553         if(ptr && cast(MetadataByte)*ptr) (cast(MetadataByte)*ptr).value = value;
554         else this.values[18] = new MetadataByte(value);
555         return value;
556     }
557 
558     @property short endermanItemId()
559     {
560         auto ptr = 23 in this.values;
561         if(ptr && cast(MetadataShort)*ptr) return (cast(MetadataShort)*ptr).value;
562         return (short).init;
563     }
564 
565     @property short endermanItemId(short value)
566     {
567         auto ptr = 23 in this.values;
568         if(ptr && cast(MetadataShort)*ptr) (cast(MetadataShort)*ptr).value = value;
569         else this.values[23] = new MetadataShort(value);
570         return value;
571     }
572 
573     @property short endermanItemDamage()
574     {
575         auto ptr = 24 in this.values;
576         if(ptr && cast(MetadataShort)*ptr) return (cast(MetadataShort)*ptr).value;
577         return (short).init;
578     }
579 
580     @property short endermanItemDamage(short value)
581     {
582         auto ptr = 24 in this.values;
583         if(ptr && cast(MetadataShort)*ptr) (cast(MetadataShort)*ptr).value = value;
584         else this.values[24] = new MetadataShort(value);
585         return value;
586     }
587 
588     @property short age()
589     {
590         auto ptr = 25 in this.values;
591         if(ptr && cast(MetadataShort)*ptr) return (cast(MetadataShort)*ptr).value;
592         return (short).init;
593     }
594 
595     @property short age(short value)
596     {
597         auto ptr = 25 in this.values;
598         if(ptr && cast(MetadataShort)*ptr) (cast(MetadataShort)*ptr).value = value;
599         else this.values[25] = new MetadataShort(value);
600         return value;
601     }
602 
603     @property byte playerFlags()
604     {
605         auto ptr = 27 in this.values;
606         if(ptr && cast(MetadataByte)*ptr) return (cast(MetadataByte)*ptr).value;
607         return (byte).init;
608     }
609 
610     @property byte playerFlags(byte value)
611     {
612         auto ptr = 27 in this.values;
613         if(ptr && cast(MetadataByte)*ptr) (cast(MetadataByte)*ptr).value = value;
614         else this.values[27] = new MetadataByte(value);
615         return value;
616     }
617 
618     @property int playerIndex()
619     {
620         auto ptr = 28 in this.values;
621         if(ptr && cast(MetadataInt)*ptr) return (cast(MetadataInt)*ptr).value;
622         return (int).init;
623     }
624 
625     @property int playerIndex(int value)
626     {
627         auto ptr = 28 in this.values;
628         if(ptr && cast(MetadataInt)*ptr) (cast(MetadataInt)*ptr).value = value;
629         else this.values[28] = new MetadataInt(value);
630         return value;
631     }
632 
633     @property Vector!(int, "xyz") bedPosition()
634     {
635         auto ptr = 29 in this.values;
636         if(ptr && cast(MetadataBlockPosition)*ptr) return (cast(MetadataBlockPosition)*ptr).value;
637         return (Vector!(int, "xyz")).init;
638     }
639 
640     @property Vector!(int, "xyz") bedPosition(Vector!(int, "xyz") value)
641     {
642         auto ptr = 29 in this.values;
643         if(ptr && cast(MetadataBlockPosition)*ptr) (cast(MetadataBlockPosition)*ptr).value = value;
644         else this.values[29] = new MetadataBlockPosition(value);
645         return value;
646     }
647 
648     @property float fireballPowerX()
649     {
650         auto ptr = 30 in this.values;
651         if(ptr && cast(MetadataFloat)*ptr) return (cast(MetadataFloat)*ptr).value;
652         return (float).init;
653     }
654 
655     @property float fireballPowerX(float value)
656     {
657         auto ptr = 30 in this.values;
658         if(ptr && cast(MetadataFloat)*ptr) (cast(MetadataFloat)*ptr).value = value;
659         else this.values[30] = new MetadataFloat(value);
660         return value;
661     }
662 
663     @property float fireballPowerY()
664     {
665         auto ptr = 31 in this.values;
666         if(ptr && cast(MetadataFloat)*ptr) return (cast(MetadataFloat)*ptr).value;
667         return (float).init;
668     }
669 
670     @property float fireballPowerY(float value)
671     {
672         auto ptr = 31 in this.values;
673         if(ptr && cast(MetadataFloat)*ptr) (cast(MetadataFloat)*ptr).value = value;
674         else this.values[31] = new MetadataFloat(value);
675         return value;
676     }
677 
678     @property float fireballPowerZ()
679     {
680         auto ptr = 32 in this.values;
681         if(ptr && cast(MetadataFloat)*ptr) return (cast(MetadataFloat)*ptr).value;
682         return (float).init;
683     }
684 
685     @property float fireballPowerZ(float value)
686     {
687         auto ptr = 32 in this.values;
688         if(ptr && cast(MetadataFloat)*ptr) (cast(MetadataFloat)*ptr).value = value;
689         else this.values[32] = new MetadataFloat(value);
690         return value;
691     }
692 
693     @property short potionAuxValue()
694     {
695         auto ptr = 37 in this.values;
696         if(ptr && cast(MetadataShort)*ptr) return (cast(MetadataShort)*ptr).value;
697         return (short).init;
698     }
699 
700     @property short potionAuxValue(short value)
701     {
702         auto ptr = 37 in this.values;
703         if(ptr && cast(MetadataShort)*ptr) (cast(MetadataShort)*ptr).value = value;
704         else this.values[37] = new MetadataShort(value);
705         return value;
706     }
707 
708     @property long leadHolder()
709     {
710         auto ptr = 38 in this.values;
711         if(ptr && cast(MetadataLong)*ptr) return (cast(MetadataLong)*ptr).value;
712         return long(-1);
713     }
714 
715     @property long leadHolder(long value)
716     {
717         auto ptr = 38 in this.values;
718         if(ptr && cast(MetadataLong)*ptr) (cast(MetadataLong)*ptr).value = value;
719         else this.values[38] = new MetadataLong(value);
720         return value;
721     }
722 
723     @property float scale()
724     {
725         auto ptr = 39 in this.values;
726         if(ptr && cast(MetadataFloat)*ptr) return (cast(MetadataFloat)*ptr).value;
727         return float(1);
728     }
729 
730     @property float scale(float value)
731     {
732         auto ptr = 39 in this.values;
733         if(ptr && cast(MetadataFloat)*ptr) (cast(MetadataFloat)*ptr).value = value;
734         else this.values[39] = new MetadataFloat(value);
735         return value;
736     }
737 
738     @property string interactiveTag()
739     {
740         auto ptr = 40 in this.values;
741         if(ptr && cast(MetadataString)*ptr) return (cast(MetadataString)*ptr).value;
742         return (string).init;
743     }
744 
745     @property string interactiveTag(string value)
746     {
747         auto ptr = 40 in this.values;
748         if(ptr && cast(MetadataString)*ptr) (cast(MetadataString)*ptr).value = value;
749         else this.values[40] = new MetadataString(value);
750         return value;
751     }
752 
753     @property string npcId()
754     {
755         auto ptr = 41 in this.values;
756         if(ptr && cast(MetadataString)*ptr) return (cast(MetadataString)*ptr).value;
757         return (string).init;
758     }
759 
760     @property string npcId(string value)
761     {
762         auto ptr = 41 in this.values;
763         if(ptr && cast(MetadataString)*ptr) (cast(MetadataString)*ptr).value = value;
764         else this.values[41] = new MetadataString(value);
765         return value;
766     }
767 
768     @property string interactiveTagUrl()
769     {
770         auto ptr = 42 in this.values;
771         if(ptr && cast(MetadataString)*ptr) return (cast(MetadataString)*ptr).value;
772         return (string).init;
773     }
774 
775     @property string interactiveTagUrl(string value)
776     {
777         auto ptr = 42 in this.values;
778         if(ptr && cast(MetadataString)*ptr) (cast(MetadataString)*ptr).value = value;
779         else this.values[42] = new MetadataString(value);
780         return value;
781     }
782 
783     @property short maxAir()
784     {
785         auto ptr = 43 in this.values;
786         if(ptr && cast(MetadataShort)*ptr) return (cast(MetadataShort)*ptr).value;
787         return (short).init;
788     }
789 
790     @property short maxAir(short value)
791     {
792         auto ptr = 43 in this.values;
793         if(ptr && cast(MetadataShort)*ptr) (cast(MetadataShort)*ptr).value = value;
794         else this.values[43] = new MetadataShort(value);
795         return value;
796     }
797 
798     @property int markVariant()
799     {
800         auto ptr = 44 in this.values;
801         if(ptr && cast(MetadataInt)*ptr) return (cast(MetadataInt)*ptr).value;
802         return (int).init;
803     }
804 
805     @property int markVariant(int value)
806     {
807         auto ptr = 44 in this.values;
808         if(ptr && cast(MetadataInt)*ptr) (cast(MetadataInt)*ptr).value = value;
809         else this.values[44] = new MetadataInt(value);
810         return value;
811     }
812 
813     @property Vector!(int, "xyz") blockTarget()
814     {
815         auto ptr = 48 in this.values;
816         if(ptr && cast(MetadataBlockPosition)*ptr) return (cast(MetadataBlockPosition)*ptr).value;
817         return (Vector!(int, "xyz")).init;
818     }
819 
820     @property Vector!(int, "xyz") blockTarget(Vector!(int, "xyz") value)
821     {
822         auto ptr = 48 in this.values;
823         if(ptr && cast(MetadataBlockPosition)*ptr) (cast(MetadataBlockPosition)*ptr).value = value;
824         else this.values[48] = new MetadataBlockPosition(value);
825         return value;
826     }
827 
828     @property int invulnerableTime()
829     {
830         auto ptr = 49 in this.values;
831         if(ptr && cast(MetadataInt)*ptr) return (cast(MetadataInt)*ptr).value;
832         return (int).init;
833     }
834 
835     @property int invulnerableTime(int value)
836     {
837         auto ptr = 49 in this.values;
838         if(ptr && cast(MetadataInt)*ptr) (cast(MetadataInt)*ptr).value = value;
839         else this.values[49] = new MetadataInt(value);
840         return value;
841     }
842 
843     @property long centerHeadTarget()
844     {
845         auto ptr = 50 in this.values;
846         if(ptr && cast(MetadataLong)*ptr) return (cast(MetadataLong)*ptr).value;
847         return (long).init;
848     }
849 
850     @property long centerHeadTarget(long value)
851     {
852         auto ptr = 50 in this.values;
853         if(ptr && cast(MetadataLong)*ptr) (cast(MetadataLong)*ptr).value = value;
854         else this.values[50] = new MetadataLong(value);
855         return value;
856     }
857 
858     @property long leftHeadTarget()
859     {
860         auto ptr = 51 in this.values;
861         if(ptr && cast(MetadataLong)*ptr) return (cast(MetadataLong)*ptr).value;
862         return (long).init;
863     }
864 
865     @property long leftHeadTarget(long value)
866     {
867         auto ptr = 51 in this.values;
868         if(ptr && cast(MetadataLong)*ptr) (cast(MetadataLong)*ptr).value = value;
869         else this.values[51] = new MetadataLong(value);
870         return value;
871     }
872 
873     @property long rightHeadTarget()
874     {
875         auto ptr = 52 in this.values;
876         if(ptr && cast(MetadataLong)*ptr) return (cast(MetadataLong)*ptr).value;
877         return (long).init;
878     }
879 
880     @property long rightHeadTarget(long value)
881     {
882         auto ptr = 52 in this.values;
883         if(ptr && cast(MetadataLong)*ptr) (cast(MetadataLong)*ptr).value = value;
884         else this.values[52] = new MetadataLong(value);
885         return value;
886     }
887 
888     @property float boundingBoxWidth()
889     {
890         auto ptr = 54 in this.values;
891         if(ptr && cast(MetadataFloat)*ptr) return (cast(MetadataFloat)*ptr).value;
892         return (float).init;
893     }
894 
895     @property float boundingBoxWidth(float value)
896     {
897         auto ptr = 54 in this.values;
898         if(ptr && cast(MetadataFloat)*ptr) (cast(MetadataFloat)*ptr).value = value;
899         else this.values[54] = new MetadataFloat(value);
900         return value;
901     }
902 
903     @property float boundingBoxHeight()
904     {
905         auto ptr = 55 in this.values;
906         if(ptr && cast(MetadataFloat)*ptr) return (cast(MetadataFloat)*ptr).value;
907         return (float).init;
908     }
909 
910     @property float boundingBoxHeight(float value)
911     {
912         auto ptr = 55 in this.values;
913         if(ptr && cast(MetadataFloat)*ptr) (cast(MetadataFloat)*ptr).value = value;
914         else this.values[55] = new MetadataFloat(value);
915         return value;
916     }
917 
918     @property int fuseLength()
919     {
920         auto ptr = 56 in this.values;
921         if(ptr && cast(MetadataInt)*ptr) return (cast(MetadataInt)*ptr).value;
922         return (int).init;
923     }
924 
925     @property int fuseLength(int value)
926     {
927         auto ptr = 56 in this.values;
928         if(ptr && cast(MetadataInt)*ptr) (cast(MetadataInt)*ptr).value = value;
929         else this.values[56] = new MetadataInt(value);
930         return value;
931     }
932 
933     @property Vector!(float, "xyz") riderSeatPosition()
934     {
935         auto ptr = 57 in this.values;
936         if(ptr && cast(MetadataEntityPosition)*ptr) return (cast(MetadataEntityPosition)*ptr).value;
937         return (Vector!(float, "xyz")).init;
938     }
939 
940     @property Vector!(float, "xyz") riderSeatPosition(Vector!(float, "xyz") value)
941     {
942         auto ptr = 57 in this.values;
943         if(ptr && cast(MetadataEntityPosition)*ptr) (cast(MetadataEntityPosition)*ptr).value = value;
944         else this.values[57] = new MetadataEntityPosition(value);
945         return value;
946     }
947 
948     @property byte riderRotationLocked()
949     {
950         auto ptr = 58 in this.values;
951         if(ptr && cast(MetadataByte)*ptr) return (cast(MetadataByte)*ptr).value;
952         return (byte).init;
953     }
954 
955     @property byte riderRotationLocked(byte value)
956     {
957         auto ptr = 58 in this.values;
958         if(ptr && cast(MetadataByte)*ptr) (cast(MetadataByte)*ptr).value = value;
959         else this.values[58] = new MetadataByte(value);
960         return value;
961     }
962 
963     @property float riderMaxRotation()
964     {
965         auto ptr = 59 in this.values;
966         if(ptr && cast(MetadataFloat)*ptr) return (cast(MetadataFloat)*ptr).value;
967         return (float).init;
968     }
969 
970     @property float riderMaxRotation(float value)
971     {
972         auto ptr = 59 in this.values;
973         if(ptr && cast(MetadataFloat)*ptr) (cast(MetadataFloat)*ptr).value = value;
974         else this.values[59] = new MetadataFloat(value);
975         return value;
976     }
977 
978     @property float riderMinRotation()
979     {
980         auto ptr = 60 in this.values;
981         if(ptr && cast(MetadataFloat)*ptr) return (cast(MetadataFloat)*ptr).value;
982         return (float).init;
983     }
984 
985     @property float riderMinRotation(float value)
986     {
987         auto ptr = 60 in this.values;
988         if(ptr && cast(MetadataFloat)*ptr) (cast(MetadataFloat)*ptr).value = value;
989         else this.values[60] = new MetadataFloat(value);
990         return value;
991     }
992 
993     @property float areaEffectCloudRadius()
994     {
995         auto ptr = 61 in this.values;
996         if(ptr && cast(MetadataFloat)*ptr) return (cast(MetadataFloat)*ptr).value;
997         return float(0.5);
998     }
999 
1000     @property float areaEffectCloudRadius(float value)
1001     {
1002         auto ptr = 61 in this.values;
1003         if(ptr && cast(MetadataFloat)*ptr) (cast(MetadataFloat)*ptr).value = value;
1004         else this.values[61] = new MetadataFloat(value);
1005         return value;
1006     }
1007 
1008     @property int areaEffectCloudWaiting()
1009     {
1010         auto ptr = 62 in this.values;
1011         if(ptr && cast(MetadataInt)*ptr) return (cast(MetadataInt)*ptr).value;
1012         return (int).init;
1013     }
1014 
1015     @property int areaEffectCloudWaiting(int value)
1016     {
1017         auto ptr = 62 in this.values;
1018         if(ptr && cast(MetadataInt)*ptr) (cast(MetadataInt)*ptr).value = value;
1019         else this.values[62] = new MetadataInt(value);
1020         return value;
1021     }
1022 
1023     @property int areaEffectCloudParticle()
1024     {
1025         auto ptr = 63 in this.values;
1026         if(ptr && cast(MetadataInt)*ptr) return (cast(MetadataInt)*ptr).value;
1027         return (int).init;
1028     }
1029 
1030     @property int areaEffectCloudParticle(int value)
1031     {
1032         auto ptr = 63 in this.values;
1033         if(ptr && cast(MetadataInt)*ptr) (cast(MetadataInt)*ptr).value = value;
1034         else this.values[63] = new MetadataInt(value);
1035         return value;
1036     }
1037 
1038     @property int shulkerPeakHeight()
1039     {
1040         auto ptr = 64 in this.values;
1041         if(ptr && cast(MetadataInt)*ptr) return (cast(MetadataInt)*ptr).value;
1042         return (int).init;
1043     }
1044 
1045     @property int shulkerPeakHeight(int value)
1046     {
1047         auto ptr = 64 in this.values;
1048         if(ptr && cast(MetadataInt)*ptr) (cast(MetadataInt)*ptr).value = value;
1049         else this.values[64] = new MetadataInt(value);
1050         return value;
1051     }
1052 
1053     @property byte shulkerDirection()
1054     {
1055         auto ptr = 65 in this.values;
1056         if(ptr && cast(MetadataByte)*ptr) return (cast(MetadataByte)*ptr).value;
1057         return (byte).init;
1058     }
1059 
1060     @property byte shulkerDirection(byte value)
1061     {
1062         auto ptr = 65 in this.values;
1063         if(ptr && cast(MetadataByte)*ptr) (cast(MetadataByte)*ptr).value = value;
1064         else this.values[65] = new MetadataByte(value);
1065         return value;
1066     }
1067 
1068     @property Vector!(int, "xyz") shulkerAttachment()
1069     {
1070         auto ptr = 67 in this.values;
1071         if(ptr && cast(MetadataBlockPosition)*ptr) return (cast(MetadataBlockPosition)*ptr).value;
1072         return (Vector!(int, "xyz")).init;
1073     }
1074 
1075     @property Vector!(int, "xyz") shulkerAttachment(Vector!(int, "xyz") value)
1076     {
1077         auto ptr = 67 in this.values;
1078         if(ptr && cast(MetadataBlockPosition)*ptr) (cast(MetadataBlockPosition)*ptr).value = value;
1079         else this.values[67] = new MetadataBlockPosition(value);
1080         return value;
1081     }
1082 
1083     @property long tradingPlayer()
1084     {
1085         auto ptr = 68 in this.values;
1086         if(ptr && cast(MetadataLong)*ptr) return (cast(MetadataLong)*ptr).value;
1087         return (long).init;
1088     }
1089 
1090     @property long tradingPlayer(long value)
1091     {
1092         auto ptr = 68 in this.values;
1093         if(ptr && cast(MetadataLong)*ptr) (cast(MetadataLong)*ptr).value = value;
1094         else this.values[68] = new MetadataLong(value);
1095         return value;
1096     }
1097 
1098     @property string commandBlockCommand()
1099     {
1100         auto ptr = 71 in this.values;
1101         if(ptr && cast(MetadataString)*ptr) return (cast(MetadataString)*ptr).value;
1102         return (string).init;
1103     }
1104 
1105     @property string commandBlockCommand(string value)
1106     {
1107         auto ptr = 71 in this.values;
1108         if(ptr && cast(MetadataString)*ptr) (cast(MetadataString)*ptr).value = value;
1109         else this.values[71] = new MetadataString(value);
1110         return value;
1111     }
1112 
1113     @property string commandBlockLastOutput()
1114     {
1115         auto ptr = 72 in this.values;
1116         if(ptr && cast(MetadataString)*ptr) return (cast(MetadataString)*ptr).value;
1117         return (string).init;
1118     }
1119 
1120     @property string commandBlockLastOutput(string value)
1121     {
1122         auto ptr = 72 in this.values;
1123         if(ptr && cast(MetadataString)*ptr) (cast(MetadataString)*ptr).value = value;
1124         else this.values[72] = new MetadataString(value);
1125         return value;
1126     }
1127 
1128     @property string commandBlockTrackOutput()
1129     {
1130         auto ptr = 73 in this.values;
1131         if(ptr && cast(MetadataString)*ptr) return (cast(MetadataString)*ptr).value;
1132         return (string).init;
1133     }
1134 
1135     @property string commandBlockTrackOutput(string value)
1136     {
1137         auto ptr = 73 in this.values;
1138         if(ptr && cast(MetadataString)*ptr) (cast(MetadataString)*ptr).value = value;
1139         else this.values[73] = new MetadataString(value);
1140         return value;
1141     }
1142 
1143     @property byte controllingRiderSeatNumber()
1144     {
1145         auto ptr = 74 in this.values;
1146         if(ptr && cast(MetadataByte)*ptr) return (cast(MetadataByte)*ptr).value;
1147         return (byte).init;
1148     }
1149 
1150     @property byte controllingRiderSeatNumber(byte value)
1151     {
1152         auto ptr = 74 in this.values;
1153         if(ptr && cast(MetadataByte)*ptr) (cast(MetadataByte)*ptr).value = value;
1154         else this.values[74] = new MetadataByte(value);
1155         return value;
1156     }
1157 
1158     @property int strength()
1159     {
1160         auto ptr = 75 in this.values;
1161         if(ptr && cast(MetadataInt)*ptr) return (cast(MetadataInt)*ptr).value;
1162         return (int).init;
1163     }
1164 
1165     @property int strength(int value)
1166     {
1167         auto ptr = 75 in this.values;
1168         if(ptr && cast(MetadataInt)*ptr) (cast(MetadataInt)*ptr).value = value;
1169         else this.values[75] = new MetadataInt(value);
1170         return value;
1171     }
1172 
1173     @property int maxStrength()
1174     {
1175         auto ptr = 76 in this.values;
1176         if(ptr && cast(MetadataInt)*ptr) return (cast(MetadataInt)*ptr).value;
1177         return (int).init;
1178     }
1179 
1180     @property int maxStrength(int value)
1181     {
1182         auto ptr = 76 in this.values;
1183         if(ptr && cast(MetadataInt)*ptr) (cast(MetadataInt)*ptr).value = value;
1184         else this.values[76] = new MetadataInt(value);
1185         return value;
1186     }
1187 
1188 }