1 /*
2  * This file has been automatically generated by Soupply and released under the MIT license.
3  * Generated from java315
4  */
5 module soupply.java315.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.java315.types;
14 
15 class MetadataValue : PacketImpl!(Endian.bigEndian, varuint, varuint)
16 {
17 
18     @EncodeOnly ubyte type;
19 
20     this(ubyte 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 MetadataInt : MetadataValue
50 {
51 
52     @Var uint value;
53 
54     this() pure nothrow @safe @nogc
55     {
56         super(1);
57     }
58 
59     this(uint value) pure nothrow @safe @nogc
60     {
61         this();
62         this.value = value;
63     }
64 
65     mixin Make;
66 
67 }
68 
69 class MetadataFloat : MetadataValue
70 {
71 
72     float value;
73 
74     this() pure nothrow @safe @nogc
75     {
76         super(2);
77     }
78 
79     this(float value) pure nothrow @safe @nogc
80     {
81         this();
82         this.value = value;
83     }
84 
85     mixin Make;
86 
87 }
88 
89 class MetadataString : MetadataValue
90 {
91 
92     string value;
93 
94     this() pure nothrow @safe @nogc
95     {
96         super(3);
97     }
98 
99     this(string value) pure nothrow @safe @nogc
100     {
101         this();
102         this.value = value;
103     }
104 
105     mixin Make;
106 
107 }
108 
109 class MetadataChat : 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.java315.types.Slot value;
133 
134     this() pure nothrow @safe @nogc
135     {
136         super(5);
137     }
138 
139     this(soupply.java315.types.Slot value) pure nothrow @safe @nogc
140     {
141         this();
142         this.value = value;
143     }
144 
145     mixin Make;
146 
147 }
148 
149 class MetadataBool : MetadataValue
150 {
151 
152     bool value;
153 
154     this() pure nothrow @safe @nogc
155     {
156         super(6);
157     }
158 
159     this(bool value) pure nothrow @safe @nogc
160     {
161         this();
162         this.value = value;
163     }
164 
165     mixin Make;
166 
167 }
168 
169 class MetadataRotation : MetadataValue
170 {
171 
172     Vector!(float, "xyz") value;
173 
174     this() pure nothrow @safe @nogc
175     {
176         super(7);
177     }
178 
179     this(Vector!(float, "xyz") value) pure nothrow @safe @nogc
180     {
181         this();
182         this.value = value;
183     }
184 
185     mixin Make;
186 
187 }
188 
189 class MetadataPosition : MetadataValue
190 {
191 
192     ulong value;
193 
194     this() pure nothrow @safe @nogc
195     {
196         super(8);
197     }
198 
199     this(ulong value) pure nothrow @safe @nogc
200     {
201         this();
202         this.value = value;
203     }
204 
205     mixin Make;
206 
207 }
208 
209 class MetadataOptionalPosition : MetadataValue
210 {
211 
212     soupply.java315.types.OptionalPosition value;
213 
214     this() pure nothrow @safe @nogc
215     {
216         super(9);
217     }
218 
219     this(soupply.java315.types.OptionalPosition value) pure nothrow @safe @nogc
220     {
221         this();
222         this.value = value;
223     }
224 
225     mixin Make;
226 
227 }
228 
229 class MetadataDirection : MetadataValue
230 {
231 
232     @Var uint value;
233 
234     this() pure nothrow @safe @nogc
235     {
236         super(10);
237     }
238 
239     this(uint value) pure nothrow @safe @nogc
240     {
241         this();
242         this.value = value;
243     }
244 
245     mixin Make;
246 
247 }
248 
249 class MetadataUuid : MetadataValue
250 {
251 
252     soupply.java315.types.OptionalUuid value;
253 
254     this() pure nothrow @safe @nogc
255     {
256         super(11);
257     }
258 
259     this(soupply.java315.types.OptionalUuid value) pure nothrow @safe @nogc
260     {
261         this();
262         this.value = value;
263     }
264 
265     mixin Make;
266 
267 }
268 
269 class MetadataBlock : MetadataValue
270 {
271 
272     @Var uint value;
273 
274     this() pure nothrow @safe @nogc
275     {
276         super(12);
277     }
278 
279     this(uint value) pure nothrow @safe @nogc
280     {
281         this();
282         this.value = value;
283     }
284 
285     mixin Make;
286 
287 }
288 
289 class Metadata
290 {
291 
292     MetadataValue[ubyte] values;
293 
294     this()
295     {
296         this.values[0] = new MetadataByte((byte).init);
297     }
298 
299     void serialize(Buffer buffer)
300     {
301         foreach(id, value; values)
302         {
303             serializeNumber!(EndianType.bigEndian, ubyte)(buffer, id);
304             value.encodeBody(buffer);
305         }
306         buffer.write(ubyte(255));
307     }
308 
309     void deserialize(Buffer buffer)
310     {
311         ubyte id;
312         while((id = buffer.read!ubyte()) != 255)
313         {
314             switch(deserializeNumber!(EndianType.bigEndian, ubyte)(buffer))
315             {
316                 case 0:
317                     auto value = new MetadataByte();
318                     value.decodeBody(buffer);
319                     this.values[id] = value;
320                     break;
321                 case 1:
322                     auto value = new MetadataInt();
323                     value.decodeBody(buffer);
324                     this.values[id] = value;
325                     break;
326                 case 2:
327                     auto value = new MetadataFloat();
328                     value.decodeBody(buffer);
329                     this.values[id] = value;
330                     break;
331                 case 3:
332                     auto value = new MetadataString();
333                     value.decodeBody(buffer);
334                     this.values[id] = value;
335                     break;
336                 case 4:
337                     auto value = new MetadataChat();
338                     value.decodeBody(buffer);
339                     this.values[id] = value;
340                     break;
341                 case 5:
342                     auto value = new MetadataSlot();
343                     value.decodeBody(buffer);
344                     this.values[id] = value;
345                     break;
346                 case 6:
347                     auto value = new MetadataBool();
348                     value.decodeBody(buffer);
349                     this.values[id] = value;
350                     break;
351                 case 7:
352                     auto value = new MetadataRotation();
353                     value.decodeBody(buffer);
354                     this.values[id] = value;
355                     break;
356                 case 8:
357                     auto value = new MetadataPosition();
358                     value.decodeBody(buffer);
359                     this.values[id] = value;
360                     break;
361                 case 9:
362                     auto value = new MetadataOptionalPosition();
363                     value.decodeBody(buffer);
364                     this.values[id] = value;
365                     break;
366                 case 10:
367                     auto value = new MetadataDirection();
368                     value.decodeBody(buffer);
369                     this.values[id] = value;
370                     break;
371                 case 11:
372                     auto value = new MetadataUuid();
373                     value.decodeBody(buffer);
374                     this.values[id] = value;
375                     break;
376                 case 12:
377                     auto value = new MetadataBlock();
378                     value.decodeBody(buffer);
379                     this.values[id] = value;
380                     break;
381                 default: throw new Exception("Unknown metadata type");
382             }
383         }
384     }
385 
386     @property byte entityFlags()
387     {
388         auto ptr = 0 in this.values;
389         if(ptr && cast(MetadataByte)*ptr) return (cast(MetadataByte)*ptr).value;
390         return (byte).init;
391     }
392 
393     @property byte entityFlags(byte value)
394     {
395         auto ptr = 0 in this.values;
396         if(ptr && cast(MetadataByte)*ptr) (cast(MetadataByte)*ptr).value = value;
397         else this.values[0] = new MetadataByte(value);
398         return value;
399     }
400 
401     @property uint air()
402     {
403         auto ptr = 1 in this.values;
404         if(ptr && cast(MetadataInt)*ptr) return (cast(MetadataInt)*ptr).value;
405         return uint(300);
406     }
407 
408     @property uint air(uint value)
409     {
410         auto ptr = 1 in this.values;
411         if(ptr && cast(MetadataInt)*ptr) (cast(MetadataInt)*ptr).value = value;
412         else this.values[1] = new MetadataInt(value);
413         return value;
414     }
415 
416     @property string nametag()
417     {
418         auto ptr = 2 in this.values;
419         if(ptr && cast(MetadataString)*ptr) return (cast(MetadataString)*ptr).value;
420         return (string).init;
421     }
422 
423     @property string nametag(string value)
424     {
425         auto ptr = 2 in this.values;
426         if(ptr && cast(MetadataString)*ptr) (cast(MetadataString)*ptr).value = value;
427         else this.values[2] = new MetadataString(value);
428         return value;
429     }
430 
431     @property bool showNametag()
432     {
433         auto ptr = 3 in this.values;
434         if(ptr && cast(MetadataBool)*ptr) return (cast(MetadataBool)*ptr).value;
435         return (bool).init;
436     }
437 
438     @property bool showNametag(bool value)
439     {
440         auto ptr = 3 in this.values;
441         if(ptr && cast(MetadataBool)*ptr) (cast(MetadataBool)*ptr).value = value;
442         else this.values[3] = new MetadataBool(value);
443         return value;
444     }
445 
446     @property bool silent()
447     {
448         auto ptr = 4 in this.values;
449         if(ptr && cast(MetadataBool)*ptr) return (cast(MetadataBool)*ptr).value;
450         return (bool).init;
451     }
452 
453     @property bool silent(bool value)
454     {
455         auto ptr = 4 in this.values;
456         if(ptr && cast(MetadataBool)*ptr) (cast(MetadataBool)*ptr).value = value;
457         else this.values[4] = new MetadataBool(value);
458         return value;
459     }
460 
461     @property bool noGravity()
462     {
463         auto ptr = 5 in this.values;
464         if(ptr && cast(MetadataBool)*ptr) return (cast(MetadataBool)*ptr).value;
465         return (bool).init;
466     }
467 
468     @property bool noGravity(bool value)
469     {
470         auto ptr = 5 in this.values;
471         if(ptr && cast(MetadataBool)*ptr) (cast(MetadataBool)*ptr).value = value;
472         else this.values[5] = new MetadataBool(value);
473         return value;
474     }
475 
476     @property soupply.java315.types.Slot potion()
477     {
478         auto ptr = 6 in this.values;
479         if(ptr && cast(MetadataSlot)*ptr) return (cast(MetadataSlot)*ptr).value;
480         return (soupply.java315.types.Slot).init;
481     }
482 
483     @property soupply.java315.types.Slot potion(soupply.java315.types.Slot value)
484     {
485         auto ptr = 6 in this.values;
486         if(ptr && cast(MetadataSlot)*ptr) (cast(MetadataSlot)*ptr).value = value;
487         else this.values[6] = new MetadataSlot(value);
488         return value;
489     }
490 
491     @property ulong spawnPosition()
492     {
493         auto ptr = 6 in this.values;
494         if(ptr && cast(MetadataPosition)*ptr) return (cast(MetadataPosition)*ptr).value;
495         return (ulong).init;
496     }
497 
498     @property ulong spawnPosition(ulong value)
499     {
500         auto ptr = 6 in this.values;
501         if(ptr && cast(MetadataPosition)*ptr) (cast(MetadataPosition)*ptr).value = value;
502         else this.values[6] = new MetadataPosition(value);
503         return value;
504     }
505 
506     @property float radius()
507     {
508         auto ptr = 6 in this.values;
509         if(ptr && cast(MetadataFloat)*ptr) return (cast(MetadataFloat)*ptr).value;
510         return float(0.5);
511     }
512 
513     @property float radius(float value)
514     {
515         auto ptr = 6 in this.values;
516         if(ptr && cast(MetadataFloat)*ptr) (cast(MetadataFloat)*ptr).value = value;
517         else this.values[6] = new MetadataFloat(value);
518         return value;
519     }
520 
521     @property uint color()
522     {
523         auto ptr = 7 in this.values;
524         if(ptr && cast(MetadataInt)*ptr) return (cast(MetadataInt)*ptr).value;
525         return (uint).init;
526     }
527 
528     @property uint color(uint value)
529     {
530         auto ptr = 7 in this.values;
531         if(ptr && cast(MetadataInt)*ptr) (cast(MetadataInt)*ptr).value = value;
532         else this.values[7] = new MetadataInt(value);
533         return value;
534     }
535 
536     @property bool isSinglePoint()
537     {
538         auto ptr = 8 in this.values;
539         if(ptr && cast(MetadataBool)*ptr) return (cast(MetadataBool)*ptr).value;
540         return (bool).init;
541     }
542 
543     @property bool isSinglePoint(bool value)
544     {
545         auto ptr = 8 in this.values;
546         if(ptr && cast(MetadataBool)*ptr) (cast(MetadataBool)*ptr).value = value;
547         else this.values[8] = new MetadataBool(value);
548         return value;
549     }
550 
551     @property uint particleId()
552     {
553         auto ptr = 9 in this.values;
554         if(ptr && cast(MetadataInt)*ptr) return (cast(MetadataInt)*ptr).value;
555         return (uint).init;
556     }
557 
558     @property uint particleId(uint value)
559     {
560         auto ptr = 9 in this.values;
561         if(ptr && cast(MetadataInt)*ptr) (cast(MetadataInt)*ptr).value = value;
562         else this.values[9] = new MetadataInt(value);
563         return value;
564     }
565 
566     @property uint particleParameter1()
567     {
568         auto ptr = 10 in this.values;
569         if(ptr && cast(MetadataInt)*ptr) return (cast(MetadataInt)*ptr).value;
570         return (uint).init;
571     }
572 
573     @property uint particleParameter1(uint value)
574     {
575         auto ptr = 10 in this.values;
576         if(ptr && cast(MetadataInt)*ptr) (cast(MetadataInt)*ptr).value = value;
577         else this.values[10] = new MetadataInt(value);
578         return value;
579     }
580 
581     @property uint particleParameter2()
582     {
583         auto ptr = 11 in this.values;
584         if(ptr && cast(MetadataInt)*ptr) return (cast(MetadataInt)*ptr).value;
585         return (uint).init;
586     }
587 
588     @property uint particleParameter2(uint value)
589     {
590         auto ptr = 11 in this.values;
591         if(ptr && cast(MetadataInt)*ptr) (cast(MetadataInt)*ptr).value = value;
592         else this.values[11] = new MetadataInt(value);
593         return value;
594     }
595 
596     @property uint hookedEntity()
597     {
598         auto ptr = 6 in this.values;
599         if(ptr && cast(MetadataInt)*ptr) return (cast(MetadataInt)*ptr).value;
600         return (uint).init;
601     }
602 
603     @property uint hookedEntity(uint value)
604     {
605         auto ptr = 6 in this.values;
606         if(ptr && cast(MetadataInt)*ptr) (cast(MetadataInt)*ptr).value = value;
607         else this.values[6] = new MetadataInt(value);
608         return value;
609     }
610 
611     @property byte arrowFlags()
612     {
613         auto ptr = 6 in this.values;
614         if(ptr && cast(MetadataByte)*ptr) return (cast(MetadataByte)*ptr).value;
615         return (byte).init;
616     }
617 
618     @property byte arrowFlags(byte value)
619     {
620         auto ptr = 6 in this.values;
621         if(ptr && cast(MetadataByte)*ptr) (cast(MetadataByte)*ptr).value = value;
622         else this.values[6] = new MetadataByte(value);
623         return value;
624     }
625 
626     @property uint timeSinceLastHit()
627     {
628         auto ptr = 6 in this.values;
629         if(ptr && cast(MetadataInt)*ptr) return (cast(MetadataInt)*ptr).value;
630         return (uint).init;
631     }
632 
633     @property uint timeSinceLastHit(uint value)
634     {
635         auto ptr = 6 in this.values;
636         if(ptr && cast(MetadataInt)*ptr) (cast(MetadataInt)*ptr).value = value;
637         else this.values[6] = new MetadataInt(value);
638         return value;
639     }
640 
641     @property uint forwardDirection()
642     {
643         auto ptr = 7 in this.values;
644         if(ptr && cast(MetadataInt)*ptr) return (cast(MetadataInt)*ptr).value;
645         return uint(1);
646     }
647 
648     @property uint forwardDirection(uint value)
649     {
650         auto ptr = 7 in this.values;
651         if(ptr && cast(MetadataInt)*ptr) (cast(MetadataInt)*ptr).value = value;
652         else this.values[7] = new MetadataInt(value);
653         return value;
654     }
655 
656     @property float damageTaken()
657     {
658         auto ptr = 8 in this.values;
659         if(ptr && cast(MetadataFloat)*ptr) return (cast(MetadataFloat)*ptr).value;
660         return float(0);
661     }
662 
663     @property float damageTaken(float value)
664     {
665         auto ptr = 8 in this.values;
666         if(ptr && cast(MetadataFloat)*ptr) (cast(MetadataFloat)*ptr).value = value;
667         else this.values[8] = new MetadataFloat(value);
668         return value;
669     }
670 
671     @property uint boatVariant()
672     {
673         auto ptr = 9 in this.values;
674         if(ptr && cast(MetadataInt)*ptr) return (cast(MetadataInt)*ptr).value;
675         return (uint).init;
676     }
677 
678     @property uint boatVariant(uint value)
679     {
680         auto ptr = 9 in this.values;
681         if(ptr && cast(MetadataInt)*ptr) (cast(MetadataInt)*ptr).value = value;
682         else this.values[9] = new MetadataInt(value);
683         return value;
684     }
685 
686     @property bool rightPaddleTurning()
687     {
688         auto ptr = 10 in this.values;
689         if(ptr && cast(MetadataBool)*ptr) return (cast(MetadataBool)*ptr).value;
690         return (bool).init;
691     }
692 
693     @property bool rightPaddleTurning(bool value)
694     {
695         auto ptr = 10 in this.values;
696         if(ptr && cast(MetadataBool)*ptr) (cast(MetadataBool)*ptr).value = value;
697         else this.values[10] = new MetadataBool(value);
698         return value;
699     }
700 
701     @property bool leftPaddleTurning()
702     {
703         auto ptr = 11 in this.values;
704         if(ptr && cast(MetadataBool)*ptr) return (cast(MetadataBool)*ptr).value;
705         return (bool).init;
706     }
707 
708     @property bool leftPaddleTurning(bool value)
709     {
710         auto ptr = 11 in this.values;
711         if(ptr && cast(MetadataBool)*ptr) (cast(MetadataBool)*ptr).value = value;
712         else this.values[11] = new MetadataBool(value);
713         return value;
714     }
715 
716     @property soupply.java315.types.OptionalPosition beamTarget()
717     {
718         auto ptr = 6 in this.values;
719         if(ptr && cast(MetadataOptionalPosition)*ptr) return (cast(MetadataOptionalPosition)*ptr).value;
720         return (soupply.java315.types.OptionalPosition).init;
721     }
722 
723     @property soupply.java315.types.OptionalPosition beamTarget(soupply.java315.types.OptionalPosition value)
724     {
725         auto ptr = 6 in this.values;
726         if(ptr && cast(MetadataOptionalPosition)*ptr) (cast(MetadataOptionalPosition)*ptr).value = value;
727         else this.values[6] = new MetadataOptionalPosition(value);
728         return value;
729     }
730 
731     @property bool showBottom()
732     {
733         auto ptr = 7 in this.values;
734         if(ptr && cast(MetadataBool)*ptr) return (cast(MetadataBool)*ptr).value;
735         return (bool).init;
736     }
737 
738     @property bool showBottom(bool value)
739     {
740         auto ptr = 7 in this.values;
741         if(ptr && cast(MetadataBool)*ptr) (cast(MetadataBool)*ptr).value = value;
742         else this.values[7] = new MetadataBool(value);
743         return value;
744     }
745 
746     @property soupply.java315.types.Slot firework()
747     {
748         auto ptr = 6 in this.values;
749         if(ptr && cast(MetadataSlot)*ptr) return (cast(MetadataSlot)*ptr).value;
750         return (soupply.java315.types.Slot).init;
751     }
752 
753     @property soupply.java315.types.Slot firework(soupply.java315.types.Slot value)
754     {
755         auto ptr = 6 in this.values;
756         if(ptr && cast(MetadataSlot)*ptr) (cast(MetadataSlot)*ptr).value = value;
757         else this.values[6] = new MetadataSlot(value);
758         return value;
759     }
760 
761     @property soupply.java315.types.Slot item()
762     {
763         auto ptr = 6 in this.values;
764         if(ptr && cast(MetadataSlot)*ptr) return (cast(MetadataSlot)*ptr).value;
765         return (soupply.java315.types.Slot).init;
766     }
767 
768     @property soupply.java315.types.Slot item(soupply.java315.types.Slot value)
769     {
770         auto ptr = 6 in this.values;
771         if(ptr && cast(MetadataSlot)*ptr) (cast(MetadataSlot)*ptr).value = value;
772         else this.values[6] = new MetadataSlot(value);
773         return value;
774     }
775 
776     @property uint rotation()
777     {
778         auto ptr = 7 in this.values;
779         if(ptr && cast(MetadataInt)*ptr) return (cast(MetadataInt)*ptr).value;
780         return (uint).init;
781     }
782 
783     @property uint rotation(uint value)
784     {
785         auto ptr = 7 in this.values;
786         if(ptr && cast(MetadataInt)*ptr) (cast(MetadataInt)*ptr).value = value;
787         else this.values[7] = new MetadataInt(value);
788         return value;
789     }
790 
791     @property byte livingFlags()
792     {
793         auto ptr = 6 in this.values;
794         if(ptr && cast(MetadataByte)*ptr) return (cast(MetadataByte)*ptr).value;
795         return (byte).init;
796     }
797 
798     @property byte livingFlags(byte value)
799     {
800         auto ptr = 6 in this.values;
801         if(ptr && cast(MetadataByte)*ptr) (cast(MetadataByte)*ptr).value = value;
802         else this.values[6] = new MetadataByte(value);
803         return value;
804     }
805 
806     @property float health()
807     {
808         auto ptr = 7 in this.values;
809         if(ptr && cast(MetadataFloat)*ptr) return (cast(MetadataFloat)*ptr).value;
810         return float(1);
811     }
812 
813     @property float health(float value)
814     {
815         auto ptr = 7 in this.values;
816         if(ptr && cast(MetadataFloat)*ptr) (cast(MetadataFloat)*ptr).value = value;
817         else this.values[7] = new MetadataFloat(value);
818         return value;
819     }
820 
821     @property uint potionColor()
822     {
823         auto ptr = 8 in this.values;
824         if(ptr && cast(MetadataInt)*ptr) return (cast(MetadataInt)*ptr).value;
825         return (uint).init;
826     }
827 
828     @property uint potionColor(uint value)
829     {
830         auto ptr = 8 in this.values;
831         if(ptr && cast(MetadataInt)*ptr) (cast(MetadataInt)*ptr).value = value;
832         else this.values[8] = new MetadataInt(value);
833         return value;
834     }
835 
836     @property bool potionAmbient()
837     {
838         auto ptr = 9 in this.values;
839         if(ptr && cast(MetadataBool)*ptr) return (cast(MetadataBool)*ptr).value;
840         return (bool).init;
841     }
842 
843     @property bool potionAmbient(bool value)
844     {
845         auto ptr = 9 in this.values;
846         if(ptr && cast(MetadataBool)*ptr) (cast(MetadataBool)*ptr).value = value;
847         else this.values[9] = new MetadataBool(value);
848         return value;
849     }
850 
851     @property uint arrows()
852     {
853         auto ptr = 10 in this.values;
854         if(ptr && cast(MetadataInt)*ptr) return (cast(MetadataInt)*ptr).value;
855         return (uint).init;
856     }
857 
858     @property uint arrows(uint value)
859     {
860         auto ptr = 10 in this.values;
861         if(ptr && cast(MetadataInt)*ptr) (cast(MetadataInt)*ptr).value = value;
862         else this.values[10] = new MetadataInt(value);
863         return value;
864     }
865 
866     @property float additionalHearts()
867     {
868         auto ptr = 11 in this.values;
869         if(ptr && cast(MetadataFloat)*ptr) return (cast(MetadataFloat)*ptr).value;
870         return float(0);
871     }
872 
873     @property float additionalHearts(float value)
874     {
875         auto ptr = 11 in this.values;
876         if(ptr && cast(MetadataFloat)*ptr) (cast(MetadataFloat)*ptr).value = value;
877         else this.values[11] = new MetadataFloat(value);
878         return value;
879     }
880 
881     @property uint score()
882     {
883         auto ptr = 12 in this.values;
884         if(ptr && cast(MetadataInt)*ptr) return (cast(MetadataInt)*ptr).value;
885         return (uint).init;
886     }
887 
888     @property uint score(uint value)
889     {
890         auto ptr = 12 in this.values;
891         if(ptr && cast(MetadataInt)*ptr) (cast(MetadataInt)*ptr).value = value;
892         else this.values[12] = new MetadataInt(value);
893         return value;
894     }
895 
896     @property byte skinParts()
897     {
898         auto ptr = 13 in this.values;
899         if(ptr && cast(MetadataByte)*ptr) return (cast(MetadataByte)*ptr).value;
900         return byte(0);
901     }
902 
903     @property byte skinParts(byte value)
904     {
905         auto ptr = 13 in this.values;
906         if(ptr && cast(MetadataByte)*ptr) (cast(MetadataByte)*ptr).value = value;
907         else this.values[13] = new MetadataByte(value);
908         return value;
909     }
910 
911     @property byte mainHand()
912     {
913         auto ptr = 14 in this.values;
914         if(ptr && cast(MetadataByte)*ptr) return (cast(MetadataByte)*ptr).value;
915         return byte(1);
916     }
917 
918     @property byte mainHand(byte value)
919     {
920         auto ptr = 14 in this.values;
921         if(ptr && cast(MetadataByte)*ptr) (cast(MetadataByte)*ptr).value = value;
922         else this.values[14] = new MetadataByte(value);
923         return value;
924     }
925 
926     @property byte armorStandFlags()
927     {
928         auto ptr = 11 in this.values;
929         if(ptr && cast(MetadataByte)*ptr) return (cast(MetadataByte)*ptr).value;
930         return (byte).init;
931     }
932 
933     @property byte armorStandFlags(byte value)
934     {
935         auto ptr = 11 in this.values;
936         if(ptr && cast(MetadataByte)*ptr) (cast(MetadataByte)*ptr).value = value;
937         else this.values[11] = new MetadataByte(value);
938         return value;
939     }
940 
941     @property Vector!(float, "xyz") headRotation()
942     {
943         auto ptr = 12 in this.values;
944         if(ptr && cast(MetadataRotation)*ptr) return (cast(MetadataRotation)*ptr).value;
945         return (Vector!(float, "xyz")).init;
946     }
947 
948     @property Vector!(float, "xyz") headRotation(Vector!(float, "xyz") value)
949     {
950         auto ptr = 12 in this.values;
951         if(ptr && cast(MetadataRotation)*ptr) (cast(MetadataRotation)*ptr).value = value;
952         else this.values[12] = new MetadataRotation(value);
953         return value;
954     }
955 
956     @property Vector!(float, "xyz") bodyRotation()
957     {
958         auto ptr = 13 in this.values;
959         if(ptr && cast(MetadataRotation)*ptr) return (cast(MetadataRotation)*ptr).value;
960         return (Vector!(float, "xyz")).init;
961     }
962 
963     @property Vector!(float, "xyz") bodyRotation(Vector!(float, "xyz") value)
964     {
965         auto ptr = 13 in this.values;
966         if(ptr && cast(MetadataRotation)*ptr) (cast(MetadataRotation)*ptr).value = value;
967         else this.values[13] = new MetadataRotation(value);
968         return value;
969     }
970 
971     @property Vector!(float, "xyz") leftArmRotation()
972     {
973         auto ptr = 14 in this.values;
974         if(ptr && cast(MetadataRotation)*ptr) return (cast(MetadataRotation)*ptr).value;
975         return (Vector!(float, "xyz")).init;
976     }
977 
978     @property Vector!(float, "xyz") leftArmRotation(Vector!(float, "xyz") value)
979     {
980         auto ptr = 14 in this.values;
981         if(ptr && cast(MetadataRotation)*ptr) (cast(MetadataRotation)*ptr).value = value;
982         else this.values[14] = new MetadataRotation(value);
983         return value;
984     }
985 
986     @property Vector!(float, "xyz") rightArmRotation()
987     {
988         auto ptr = 15 in this.values;
989         if(ptr && cast(MetadataRotation)*ptr) return (cast(MetadataRotation)*ptr).value;
990         return (Vector!(float, "xyz")).init;
991     }
992 
993     @property Vector!(float, "xyz") rightArmRotation(Vector!(float, "xyz") value)
994     {
995         auto ptr = 15 in this.values;
996         if(ptr && cast(MetadataRotation)*ptr) (cast(MetadataRotation)*ptr).value = value;
997         else this.values[15] = new MetadataRotation(value);
998         return value;
999     }
1000 
1001     @property Vector!(float, "xyz") leftLegRotation()
1002     {
1003         auto ptr = 16 in this.values;
1004         if(ptr && cast(MetadataRotation)*ptr) return (cast(MetadataRotation)*ptr).value;
1005         return (Vector!(float, "xyz")).init;
1006     }
1007 
1008     @property Vector!(float, "xyz") leftLegRotation(Vector!(float, "xyz") value)
1009     {
1010         auto ptr = 16 in this.values;
1011         if(ptr && cast(MetadataRotation)*ptr) (cast(MetadataRotation)*ptr).value = value;
1012         else this.values[16] = new MetadataRotation(value);
1013         return value;
1014     }
1015 
1016     @property Vector!(float, "xyz") rightLegRotation()
1017     {
1018         auto ptr = 17 in this.values;
1019         if(ptr && cast(MetadataRotation)*ptr) return (cast(MetadataRotation)*ptr).value;
1020         return (Vector!(float, "xyz")).init;
1021     }
1022 
1023     @property Vector!(float, "xyz") rightLegRotation(Vector!(float, "xyz") value)
1024     {
1025         auto ptr = 17 in this.values;
1026         if(ptr && cast(MetadataRotation)*ptr) (cast(MetadataRotation)*ptr).value = value;
1027         else this.values[17] = new MetadataRotation(value);
1028         return value;
1029     }
1030 
1031     @property byte instentientFlags()
1032     {
1033         auto ptr = 11 in this.values;
1034         if(ptr && cast(MetadataByte)*ptr) return (cast(MetadataByte)*ptr).value;
1035         return (byte).init;
1036     }
1037 
1038     @property byte instentientFlags(byte value)
1039     {
1040         auto ptr = 11 in this.values;
1041         if(ptr && cast(MetadataByte)*ptr) (cast(MetadataByte)*ptr).value = value;
1042         else this.values[11] = new MetadataByte(value);
1043         return value;
1044     }
1045 
1046     @property byte hanging()
1047     {
1048         auto ptr = 12 in this.values;
1049         if(ptr && cast(MetadataByte)*ptr) return (cast(MetadataByte)*ptr).value;
1050         return (byte).init;
1051     }
1052 
1053     @property byte hanging(byte value)
1054     {
1055         auto ptr = 12 in this.values;
1056         if(ptr && cast(MetadataByte)*ptr) (cast(MetadataByte)*ptr).value = value;
1057         else this.values[12] = new MetadataByte(value);
1058         return value;
1059     }
1060 
1061     @property bool baby()
1062     {
1063         auto ptr = 12 in this.values;
1064         if(ptr && cast(MetadataBool)*ptr) return (cast(MetadataBool)*ptr).value;
1065         return (bool).init;
1066     }
1067 
1068     @property bool baby(bool value)
1069     {
1070         auto ptr = 12 in this.values;
1071         if(ptr && cast(MetadataBool)*ptr) (cast(MetadataBool)*ptr).value = value;
1072         else this.values[12] = new MetadataBool(value);
1073         return value;
1074     }
1075 
1076     @property byte horseFlags()
1077     {
1078         auto ptr = 13 in this.values;
1079         if(ptr && cast(MetadataByte)*ptr) return (cast(MetadataByte)*ptr).value;
1080         return (byte).init;
1081     }
1082 
1083     @property byte horseFlags(byte value)
1084     {
1085         auto ptr = 13 in this.values;
1086         if(ptr && cast(MetadataByte)*ptr) (cast(MetadataByte)*ptr).value = value;
1087         else this.values[13] = new MetadataByte(value);
1088         return value;
1089     }
1090 
1091     @property soupply.java315.types.OptionalUuid ownerUuid()
1092     {
1093         auto ptr = 14 in this.values;
1094         if(ptr && cast(MetadataUuid)*ptr) return (cast(MetadataUuid)*ptr).value;
1095         return (soupply.java315.types.OptionalUuid).init;
1096     }
1097 
1098     @property soupply.java315.types.OptionalUuid ownerUuid(soupply.java315.types.OptionalUuid value)
1099     {
1100         auto ptr = 14 in this.values;
1101         if(ptr && cast(MetadataUuid)*ptr) (cast(MetadataUuid)*ptr).value = value;
1102         else this.values[14] = new MetadataUuid(value);
1103         return value;
1104     }
1105 
1106     @property uint horseVariant()
1107     {
1108         auto ptr = 15 in this.values;
1109         if(ptr && cast(MetadataInt)*ptr) return (cast(MetadataInt)*ptr).value;
1110         return (uint).init;
1111     }
1112 
1113     @property uint horseVariant(uint value)
1114     {
1115         auto ptr = 15 in this.values;
1116         if(ptr && cast(MetadataInt)*ptr) (cast(MetadataInt)*ptr).value = value;
1117         else this.values[15] = new MetadataInt(value);
1118         return value;
1119     }
1120 
1121     @property uint horseArmor()
1122     {
1123         auto ptr = 16 in this.values;
1124         if(ptr && cast(MetadataInt)*ptr) return (cast(MetadataInt)*ptr).value;
1125         return (uint).init;
1126     }
1127 
1128     @property uint horseArmor(uint value)
1129     {
1130         auto ptr = 16 in this.values;
1131         if(ptr && cast(MetadataInt)*ptr) (cast(MetadataInt)*ptr).value = value;
1132         else this.values[16] = new MetadataInt(value);
1133         return value;
1134     }
1135 
1136     @property bool chested()
1137     {
1138         auto ptr = 15 in this.values;
1139         if(ptr && cast(MetadataBool)*ptr) return (cast(MetadataBool)*ptr).value;
1140         return (bool).init;
1141     }
1142 
1143     @property bool chested(bool value)
1144     {
1145         auto ptr = 15 in this.values;
1146         if(ptr && cast(MetadataBool)*ptr) (cast(MetadataBool)*ptr).value = value;
1147         else this.values[15] = new MetadataBool(value);
1148         return value;
1149     }
1150 
1151     @property uint llamaStrength()
1152     {
1153         auto ptr = 16 in this.values;
1154         if(ptr && cast(MetadataInt)*ptr) return (cast(MetadataInt)*ptr).value;
1155         return (uint).init;
1156     }
1157 
1158     @property uint llamaStrength(uint value)
1159     {
1160         auto ptr = 16 in this.values;
1161         if(ptr && cast(MetadataInt)*ptr) (cast(MetadataInt)*ptr).value = value;
1162         else this.values[16] = new MetadataInt(value);
1163         return value;
1164     }
1165 
1166     @property uint carpetColor()
1167     {
1168         auto ptr = 17 in this.values;
1169         if(ptr && cast(MetadataInt)*ptr) return (cast(MetadataInt)*ptr).value;
1170         return uint(-1);
1171     }
1172 
1173     @property uint carpetColor(uint value)
1174     {
1175         auto ptr = 17 in this.values;
1176         if(ptr && cast(MetadataInt)*ptr) (cast(MetadataInt)*ptr).value = value;
1177         else this.values[17] = new MetadataInt(value);
1178         return value;
1179     }
1180 
1181     @property uint llamaVariant()
1182     {
1183         auto ptr = 18 in this.values;
1184         if(ptr && cast(MetadataInt)*ptr) return (cast(MetadataInt)*ptr).value;
1185         return (uint).init;
1186     }
1187 
1188     @property uint llamaVariant(uint value)
1189     {
1190         auto ptr = 18 in this.values;
1191         if(ptr && cast(MetadataInt)*ptr) (cast(MetadataInt)*ptr).value = value;
1192         else this.values[18] = new MetadataInt(value);
1193         return value;
1194     }
1195 
1196     @property bool pigSaddled()
1197     {
1198         auto ptr = 13 in this.values;
1199         if(ptr && cast(MetadataBool)*ptr) return (cast(MetadataBool)*ptr).value;
1200         return (bool).init;
1201     }
1202 
1203     @property bool pigSaddled(bool value)
1204     {
1205         auto ptr = 13 in this.values;
1206         if(ptr && cast(MetadataBool)*ptr) (cast(MetadataBool)*ptr).value = value;
1207         else this.values[13] = new MetadataBool(value);
1208         return value;
1209     }
1210 
1211     @property uint rabbitVariant()
1212     {
1213         auto ptr = 13 in this.values;
1214         if(ptr && cast(MetadataInt)*ptr) return (cast(MetadataInt)*ptr).value;
1215         return (uint).init;
1216     }
1217 
1218     @property uint rabbitVariant(uint value)
1219     {
1220         auto ptr = 13 in this.values;
1221         if(ptr && cast(MetadataInt)*ptr) (cast(MetadataInt)*ptr).value = value;
1222         else this.values[13] = new MetadataInt(value);
1223         return value;
1224     }
1225 
1226     @property bool standingUp()
1227     {
1228         auto ptr = 13 in this.values;
1229         if(ptr && cast(MetadataBool)*ptr) return (cast(MetadataBool)*ptr).value;
1230         return (bool).init;
1231     }
1232 
1233     @property bool standingUp(bool value)
1234     {
1235         auto ptr = 13 in this.values;
1236         if(ptr && cast(MetadataBool)*ptr) (cast(MetadataBool)*ptr).value = value;
1237         else this.values[13] = new MetadataBool(value);
1238         return value;
1239     }
1240 
1241     @property byte sheepFlagsAndColor()
1242     {
1243         auto ptr = 13 in this.values;
1244         if(ptr && cast(MetadataByte)*ptr) return (cast(MetadataByte)*ptr).value;
1245         return (byte).init;
1246     }
1247 
1248     @property byte sheepFlagsAndColor(byte value)
1249     {
1250         auto ptr = 13 in this.values;
1251         if(ptr && cast(MetadataByte)*ptr) (cast(MetadataByte)*ptr).value = value;
1252         else this.values[13] = new MetadataByte(value);
1253         return value;
1254     }
1255 
1256     @property byte tameableFlags()
1257     {
1258         auto ptr = 13 in this.values;
1259         if(ptr && cast(MetadataByte)*ptr) return (cast(MetadataByte)*ptr).value;
1260         return (byte).init;
1261     }
1262 
1263     @property byte tameableFlags(byte value)
1264     {
1265         auto ptr = 13 in this.values;
1266         if(ptr && cast(MetadataByte)*ptr) (cast(MetadataByte)*ptr).value = value;
1267         else this.values[13] = new MetadataByte(value);
1268         return value;
1269     }
1270 
1271     @property uint ocelotVariant()
1272     {
1273         auto ptr = 15 in this.values;
1274         if(ptr && cast(MetadataInt)*ptr) return (cast(MetadataInt)*ptr).value;
1275         return (uint).init;
1276     }
1277 
1278     @property uint ocelotVariant(uint value)
1279     {
1280         auto ptr = 15 in this.values;
1281         if(ptr && cast(MetadataInt)*ptr) (cast(MetadataInt)*ptr).value = value;
1282         else this.values[15] = new MetadataInt(value);
1283         return value;
1284     }
1285 
1286     @property float wolfHealth()
1287     {
1288         auto ptr = 15 in this.values;
1289         if(ptr && cast(MetadataFloat)*ptr) return (cast(MetadataFloat)*ptr).value;
1290         return (float).init;
1291     }
1292 
1293     @property float wolfHealth(float value)
1294     {
1295         auto ptr = 15 in this.values;
1296         if(ptr && cast(MetadataFloat)*ptr) (cast(MetadataFloat)*ptr).value = value;
1297         else this.values[15] = new MetadataFloat(value);
1298         return value;
1299     }
1300 
1301     @property bool begging()
1302     {
1303         auto ptr = 16 in this.values;
1304         if(ptr && cast(MetadataBool)*ptr) return (cast(MetadataBool)*ptr).value;
1305         return (bool).init;
1306     }
1307 
1308     @property bool begging(bool value)
1309     {
1310         auto ptr = 16 in this.values;
1311         if(ptr && cast(MetadataBool)*ptr) (cast(MetadataBool)*ptr).value = value;
1312         else this.values[16] = new MetadataBool(value);
1313         return value;
1314     }
1315 
1316     @property uint collarColor()
1317     {
1318         auto ptr = 17 in this.values;
1319         if(ptr && cast(MetadataInt)*ptr) return (cast(MetadataInt)*ptr).value;
1320         return uint(14);
1321     }
1322 
1323     @property uint collarColor(uint value)
1324     {
1325         auto ptr = 17 in this.values;
1326         if(ptr && cast(MetadataInt)*ptr) (cast(MetadataInt)*ptr).value = value;
1327         else this.values[17] = new MetadataInt(value);
1328         return value;
1329     }
1330 
1331     @property uint profession()
1332     {
1333         auto ptr = 13 in this.values;
1334         if(ptr && cast(MetadataInt)*ptr) return (cast(MetadataInt)*ptr).value;
1335         return (uint).init;
1336     }
1337 
1338     @property uint profession(uint value)
1339     {
1340         auto ptr = 13 in this.values;
1341         if(ptr && cast(MetadataInt)*ptr) (cast(MetadataInt)*ptr).value = value;
1342         else this.values[13] = new MetadataInt(value);
1343         return value;
1344     }
1345 
1346     @property byte createdByPlayer()
1347     {
1348         auto ptr = 12 in this.values;
1349         if(ptr && cast(MetadataByte)*ptr) return (cast(MetadataByte)*ptr).value;
1350         return (byte).init;
1351     }
1352 
1353     @property byte createdByPlayer(byte value)
1354     {
1355         auto ptr = 12 in this.values;
1356         if(ptr && cast(MetadataByte)*ptr) (cast(MetadataByte)*ptr).value = value;
1357         else this.values[12] = new MetadataByte(value);
1358         return value;
1359     }
1360 
1361     @property byte snowmanFlags()
1362     {
1363         auto ptr = 12 in this.values;
1364         if(ptr && cast(MetadataByte)*ptr) return (cast(MetadataByte)*ptr).value;
1365         return (byte).init;
1366     }
1367 
1368     @property byte snowmanFlags(byte value)
1369     {
1370         auto ptr = 12 in this.values;
1371         if(ptr && cast(MetadataByte)*ptr) (cast(MetadataByte)*ptr).value = value;
1372         else this.values[12] = new MetadataByte(value);
1373         return value;
1374     }
1375 
1376     @property uint shulkerDirection()
1377     {
1378         auto ptr = 12 in this.values;
1379         if(ptr && cast(MetadataDirection)*ptr) return (cast(MetadataDirection)*ptr).value;
1380         return (uint).init;
1381     }
1382 
1383     @property uint shulkerDirection(uint value)
1384     {
1385         auto ptr = 12 in this.values;
1386         if(ptr && cast(MetadataDirection)*ptr) (cast(MetadataDirection)*ptr).value = value;
1387         else this.values[12] = new MetadataDirection(value);
1388         return value;
1389     }
1390 
1391     @property soupply.java315.types.OptionalPosition shulkerAttachment()
1392     {
1393         auto ptr = 13 in this.values;
1394         if(ptr && cast(MetadataOptionalPosition)*ptr) return (cast(MetadataOptionalPosition)*ptr).value;
1395         return (soupply.java315.types.OptionalPosition).init;
1396     }
1397 
1398     @property soupply.java315.types.OptionalPosition shulkerAttachment(soupply.java315.types.OptionalPosition value)
1399     {
1400         auto ptr = 13 in this.values;
1401         if(ptr && cast(MetadataOptionalPosition)*ptr) (cast(MetadataOptionalPosition)*ptr).value = value;
1402         else this.values[13] = new MetadataOptionalPosition(value);
1403         return value;
1404     }
1405 
1406     @property byte shulkerShieldHeight()
1407     {
1408         auto ptr = 14 in this.values;
1409         if(ptr && cast(MetadataByte)*ptr) return (cast(MetadataByte)*ptr).value;
1410         return (byte).init;
1411     }
1412 
1413     @property byte shulkerShieldHeight(byte value)
1414     {
1415         auto ptr = 14 in this.values;
1416         if(ptr && cast(MetadataByte)*ptr) (cast(MetadataByte)*ptr).value = value;
1417         else this.values[14] = new MetadataByte(value);
1418         return value;
1419     }
1420 
1421     @property byte shulkerColor()
1422     {
1423         auto ptr = 15 in this.values;
1424         if(ptr && cast(MetadataByte)*ptr) return (cast(MetadataByte)*ptr).value;
1425         return (byte).init;
1426     }
1427 
1428     @property byte shulkerColor(byte value)
1429     {
1430         auto ptr = 15 in this.values;
1431         if(ptr && cast(MetadataByte)*ptr) (cast(MetadataByte)*ptr).value = value;
1432         else this.values[15] = new MetadataByte(value);
1433         return value;
1434     }
1435 
1436     @property byte blazeOnFire()
1437     {
1438         auto ptr = 12 in this.values;
1439         if(ptr && cast(MetadataByte)*ptr) return (cast(MetadataByte)*ptr).value;
1440         return (byte).init;
1441     }
1442 
1443     @property byte blazeOnFire(byte value)
1444     {
1445         auto ptr = 12 in this.values;
1446         if(ptr && cast(MetadataByte)*ptr) (cast(MetadataByte)*ptr).value = value;
1447         else this.values[12] = new MetadataByte(value);
1448         return value;
1449     }
1450 
1451     @property uint creeperState()
1452     {
1453         auto ptr = 12 in this.values;
1454         if(ptr && cast(MetadataInt)*ptr) return (cast(MetadataInt)*ptr).value;
1455         return uint(-1);
1456     }
1457 
1458     @property uint creeperState(uint value)
1459     {
1460         auto ptr = 12 in this.values;
1461         if(ptr && cast(MetadataInt)*ptr) (cast(MetadataInt)*ptr).value = value;
1462         else this.values[12] = new MetadataInt(value);
1463         return value;
1464     }
1465 
1466     @property bool charged()
1467     {
1468         auto ptr = 13 in this.values;
1469         if(ptr && cast(MetadataBool)*ptr) return (cast(MetadataBool)*ptr).value;
1470         return (bool).init;
1471     }
1472 
1473     @property bool charged(bool value)
1474     {
1475         auto ptr = 13 in this.values;
1476         if(ptr && cast(MetadataBool)*ptr) (cast(MetadataBool)*ptr).value = value;
1477         else this.values[13] = new MetadataBool(value);
1478         return value;
1479     }
1480 
1481     @property bool ignited()
1482     {
1483         auto ptr = 14 in this.values;
1484         if(ptr && cast(MetadataBool)*ptr) return (cast(MetadataBool)*ptr).value;
1485         return (bool).init;
1486     }
1487 
1488     @property bool ignited(bool value)
1489     {
1490         auto ptr = 14 in this.values;
1491         if(ptr && cast(MetadataBool)*ptr) (cast(MetadataBool)*ptr).value = value;
1492         else this.values[14] = new MetadataBool(value);
1493         return value;
1494     }
1495 
1496     @property bool rectractingSpikes()
1497     {
1498         auto ptr = 12 in this.values;
1499         if(ptr && cast(MetadataBool)*ptr) return (cast(MetadataBool)*ptr).value;
1500         return (bool).init;
1501     }
1502 
1503     @property bool rectractingSpikes(bool value)
1504     {
1505         auto ptr = 12 in this.values;
1506         if(ptr && cast(MetadataBool)*ptr) (cast(MetadataBool)*ptr).value = value;
1507         else this.values[12] = new MetadataBool(value);
1508         return value;
1509     }
1510 
1511     @property uint guardianTarget()
1512     {
1513         auto ptr = 13 in this.values;
1514         if(ptr && cast(MetadataInt)*ptr) return (cast(MetadataInt)*ptr).value;
1515         return (uint).init;
1516     }
1517 
1518     @property uint guardianTarget(uint value)
1519     {
1520         auto ptr = 13 in this.values;
1521         if(ptr && cast(MetadataInt)*ptr) (cast(MetadataInt)*ptr).value = value;
1522         else this.values[13] = new MetadataInt(value);
1523         return value;
1524     }
1525 
1526     @property byte spell()
1527     {
1528         auto ptr = 12 in this.values;
1529         if(ptr && cast(MetadataByte)*ptr) return (cast(MetadataByte)*ptr).value;
1530         return (byte).init;
1531     }
1532 
1533     @property byte spell(byte value)
1534     {
1535         auto ptr = 12 in this.values;
1536         if(ptr && cast(MetadataByte)*ptr) (cast(MetadataByte)*ptr).value = value;
1537         else this.values[12] = new MetadataByte(value);
1538         return value;
1539     }
1540 
1541     @property byte attackMode()
1542     {
1543         auto ptr = 12 in this.values;
1544         if(ptr && cast(MetadataByte)*ptr) return (cast(MetadataByte)*ptr).value;
1545         return (byte).init;
1546     }
1547 
1548     @property byte attackMode(byte value)
1549     {
1550         auto ptr = 12 in this.values;
1551         if(ptr && cast(MetadataByte)*ptr) (cast(MetadataByte)*ptr).value = value;
1552         else this.values[12] = new MetadataByte(value);
1553         return value;
1554     }
1555 
1556     @property bool swingingArms()
1557     {
1558         auto ptr = 12 in this.values;
1559         if(ptr && cast(MetadataBool)*ptr) return (cast(MetadataBool)*ptr).value;
1560         return (bool).init;
1561     }
1562 
1563     @property bool swingingArms(bool value)
1564     {
1565         auto ptr = 12 in this.values;
1566         if(ptr && cast(MetadataBool)*ptr) (cast(MetadataBool)*ptr).value = value;
1567         else this.values[12] = new MetadataBool(value);
1568         return value;
1569     }
1570 
1571     @property byte climbing()
1572     {
1573         auto ptr = 12 in this.values;
1574         if(ptr && cast(MetadataByte)*ptr) return (cast(MetadataByte)*ptr).value;
1575         return (byte).init;
1576     }
1577 
1578     @property byte climbing(byte value)
1579     {
1580         auto ptr = 12 in this.values;
1581         if(ptr && cast(MetadataByte)*ptr) (cast(MetadataByte)*ptr).value = value;
1582         else this.values[12] = new MetadataByte(value);
1583         return value;
1584     }
1585 
1586     @property uint centerHeadTarget()
1587     {
1588         auto ptr = 12 in this.values;
1589         if(ptr && cast(MetadataInt)*ptr) return (cast(MetadataInt)*ptr).value;
1590         return (uint).init;
1591     }
1592 
1593     @property uint centerHeadTarget(uint value)
1594     {
1595         auto ptr = 12 in this.values;
1596         if(ptr && cast(MetadataInt)*ptr) (cast(MetadataInt)*ptr).value = value;
1597         else this.values[12] = new MetadataInt(value);
1598         return value;
1599     }
1600 
1601     @property uint leftHeadTarget()
1602     {
1603         auto ptr = 13 in this.values;
1604         if(ptr && cast(MetadataInt)*ptr) return (cast(MetadataInt)*ptr).value;
1605         return (uint).init;
1606     }
1607 
1608     @property uint leftHeadTarget(uint value)
1609     {
1610         auto ptr = 13 in this.values;
1611         if(ptr && cast(MetadataInt)*ptr) (cast(MetadataInt)*ptr).value = value;
1612         else this.values[13] = new MetadataInt(value);
1613         return value;
1614     }
1615 
1616     @property uint rightHeadTarget()
1617     {
1618         auto ptr = 14 in this.values;
1619         if(ptr && cast(MetadataInt)*ptr) return (cast(MetadataInt)*ptr).value;
1620         return (uint).init;
1621     }
1622 
1623     @property uint rightHeadTarget(uint value)
1624     {
1625         auto ptr = 14 in this.values;
1626         if(ptr && cast(MetadataInt)*ptr) (cast(MetadataInt)*ptr).value = value;
1627         else this.values[14] = new MetadataInt(value);
1628         return value;
1629     }
1630 
1631     @property uint invulnerableTime()
1632     {
1633         auto ptr = 15 in this.values;
1634         if(ptr && cast(MetadataInt)*ptr) return (cast(MetadataInt)*ptr).value;
1635         return (uint).init;
1636     }
1637 
1638     @property uint invulnerableTime(uint value)
1639     {
1640         auto ptr = 15 in this.values;
1641         if(ptr && cast(MetadataInt)*ptr) (cast(MetadataInt)*ptr).value = value;
1642         else this.values[15] = new MetadataInt(value);
1643         return value;
1644     }
1645 
1646     @property bool handsHeldUp()
1647     {
1648         auto ptr = 14 in this.values;
1649         if(ptr && cast(MetadataBool)*ptr) return (cast(MetadataBool)*ptr).value;
1650         return (bool).init;
1651     }
1652 
1653     @property bool handsHeldUp(bool value)
1654     {
1655         auto ptr = 14 in this.values;
1656         if(ptr && cast(MetadataBool)*ptr) (cast(MetadataBool)*ptr).value = value;
1657         else this.values[14] = new MetadataBool(value);
1658         return value;
1659     }
1660 
1661     @property bool converting()
1662     {
1663         auto ptr = 15 in this.values;
1664         if(ptr && cast(MetadataBool)*ptr) return (cast(MetadataBool)*ptr).value;
1665         return (bool).init;
1666     }
1667 
1668     @property bool converting(bool value)
1669     {
1670         auto ptr = 15 in this.values;
1671         if(ptr && cast(MetadataBool)*ptr) (cast(MetadataBool)*ptr).value = value;
1672         else this.values[15] = new MetadataBool(value);
1673         return value;
1674     }
1675 
1676     @property uint zombieVillagerProfession()
1677     {
1678         auto ptr = 16 in this.values;
1679         if(ptr && cast(MetadataInt)*ptr) return (cast(MetadataInt)*ptr).value;
1680         return (uint).init;
1681     }
1682 
1683     @property uint zombieVillagerProfession(uint value)
1684     {
1685         auto ptr = 16 in this.values;
1686         if(ptr && cast(MetadataInt)*ptr) (cast(MetadataInt)*ptr).value = value;
1687         else this.values[16] = new MetadataInt(value);
1688         return value;
1689     }
1690 
1691     @property uint carriedBlock()
1692     {
1693         auto ptr = 12 in this.values;
1694         if(ptr && cast(MetadataBlock)*ptr) return (cast(MetadataBlock)*ptr).value;
1695         return (uint).init;
1696     }
1697 
1698     @property uint carriedBlock(uint value)
1699     {
1700         auto ptr = 12 in this.values;
1701         if(ptr && cast(MetadataBlock)*ptr) (cast(MetadataBlock)*ptr).value = value;
1702         else this.values[12] = new MetadataBlock(value);
1703         return value;
1704     }
1705 
1706     @property bool screaming()
1707     {
1708         auto ptr = 13 in this.values;
1709         if(ptr && cast(MetadataBool)*ptr) return (cast(MetadataBool)*ptr).value;
1710         return (bool).init;
1711     }
1712 
1713     @property bool screaming(bool value)
1714     {
1715         auto ptr = 13 in this.values;
1716         if(ptr && cast(MetadataBool)*ptr) (cast(MetadataBool)*ptr).value = value;
1717         else this.values[13] = new MetadataBool(value);
1718         return value;
1719     }
1720 
1721     @property uint dragonPhase()
1722     {
1723         auto ptr = 12 in this.values;
1724         if(ptr && cast(MetadataInt)*ptr) return (cast(MetadataInt)*ptr).value;
1725         return (uint).init;
1726     }
1727 
1728     @property uint dragonPhase(uint value)
1729     {
1730         auto ptr = 12 in this.values;
1731         if(ptr && cast(MetadataInt)*ptr) (cast(MetadataInt)*ptr).value = value;
1732         else this.values[12] = new MetadataInt(value);
1733         return value;
1734     }
1735 
1736     @property bool ghastAttacking()
1737     {
1738         auto ptr = 12 in this.values;
1739         if(ptr && cast(MetadataBool)*ptr) return (cast(MetadataBool)*ptr).value;
1740         return (bool).init;
1741     }
1742 
1743     @property bool ghastAttacking(bool value)
1744     {
1745         auto ptr = 12 in this.values;
1746         if(ptr && cast(MetadataBool)*ptr) (cast(MetadataBool)*ptr).value = value;
1747         else this.values[12] = new MetadataBool(value);
1748         return value;
1749     }
1750 
1751     @property uint slimeSize()
1752     {
1753         auto ptr = 12 in this.values;
1754         if(ptr && cast(MetadataInt)*ptr) return (cast(MetadataInt)*ptr).value;
1755         return uint(1);
1756     }
1757 
1758     @property uint slimeSize(uint value)
1759     {
1760         auto ptr = 12 in this.values;
1761         if(ptr && cast(MetadataInt)*ptr) (cast(MetadataInt)*ptr).value = value;
1762         else this.values[12] = new MetadataInt(value);
1763         return value;
1764     }
1765 
1766     @property uint shakingPower()
1767     {
1768         auto ptr = 6 in this.values;
1769         if(ptr && cast(MetadataInt)*ptr) return (cast(MetadataInt)*ptr).value;
1770         return (uint).init;
1771     }
1772 
1773     @property uint shakingPower(uint value)
1774     {
1775         auto ptr = 6 in this.values;
1776         if(ptr && cast(MetadataInt)*ptr) (cast(MetadataInt)*ptr).value = value;
1777         else this.values[6] = new MetadataInt(value);
1778         return value;
1779     }
1780 
1781     @property uint shakingDirection()
1782     {
1783         auto ptr = 7 in this.values;
1784         if(ptr && cast(MetadataInt)*ptr) return (cast(MetadataInt)*ptr).value;
1785         return (uint).init;
1786     }
1787 
1788     @property uint shakingDirection(uint value)
1789     {
1790         auto ptr = 7 in this.values;
1791         if(ptr && cast(MetadataInt)*ptr) (cast(MetadataInt)*ptr).value = value;
1792         else this.values[7] = new MetadataInt(value);
1793         return value;
1794     }
1795 
1796     @property float shakingMultiplier()
1797     {
1798         auto ptr = 8 in this.values;
1799         if(ptr && cast(MetadataFloat)*ptr) return (cast(MetadataFloat)*ptr).value;
1800         return float(0);
1801     }
1802 
1803     @property float shakingMultiplier(float value)
1804     {
1805         auto ptr = 8 in this.values;
1806         if(ptr && cast(MetadataFloat)*ptr) (cast(MetadataFloat)*ptr).value = value;
1807         else this.values[8] = new MetadataFloat(value);
1808         return value;
1809     }
1810 
1811     @property uint minecartBlock()
1812     {
1813         auto ptr = 9 in this.values;
1814         if(ptr && cast(MetadataInt)*ptr) return (cast(MetadataInt)*ptr).value;
1815         return (uint).init;
1816     }
1817 
1818     @property uint minecartBlock(uint value)
1819     {
1820         auto ptr = 9 in this.values;
1821         if(ptr && cast(MetadataInt)*ptr) (cast(MetadataInt)*ptr).value = value;
1822         else this.values[9] = new MetadataInt(value);
1823         return value;
1824     }
1825 
1826     @property uint minecartBlockPosition()
1827     {
1828         auto ptr = 10 in this.values;
1829         if(ptr && cast(MetadataInt)*ptr) return (cast(MetadataInt)*ptr).value;
1830         return uint(6);
1831     }
1832 
1833     @property uint minecartBlockPosition(uint value)
1834     {
1835         auto ptr = 10 in this.values;
1836         if(ptr && cast(MetadataInt)*ptr) (cast(MetadataInt)*ptr).value = value;
1837         else this.values[10] = new MetadataInt(value);
1838         return value;
1839     }
1840 
1841     @property bool minecartCustomBlock()
1842     {
1843         auto ptr = 11 in this.values;
1844         if(ptr && cast(MetadataBool)*ptr) return (cast(MetadataBool)*ptr).value;
1845         return (bool).init;
1846     }
1847 
1848     @property bool minecartCustomBlock(bool value)
1849     {
1850         auto ptr = 11 in this.values;
1851         if(ptr && cast(MetadataBool)*ptr) (cast(MetadataBool)*ptr).value = value;
1852         else this.values[11] = new MetadataBool(value);
1853         return value;
1854     }
1855 
1856     @property bool furnacePowered()
1857     {
1858         auto ptr = 12 in this.values;
1859         if(ptr && cast(MetadataBool)*ptr) return (cast(MetadataBool)*ptr).value;
1860         return (bool).init;
1861     }
1862 
1863     @property bool furnacePowered(bool value)
1864     {
1865         auto ptr = 12 in this.values;
1866         if(ptr && cast(MetadataBool)*ptr) (cast(MetadataBool)*ptr).value = value;
1867         else this.values[12] = new MetadataBool(value);
1868         return value;
1869     }
1870 
1871     @property string command()
1872     {
1873         auto ptr = 12 in this.values;
1874         if(ptr && cast(MetadataString)*ptr) return (cast(MetadataString)*ptr).value;
1875         return (string).init;
1876     }
1877 
1878     @property string command(string value)
1879     {
1880         auto ptr = 12 in this.values;
1881         if(ptr && cast(MetadataString)*ptr) (cast(MetadataString)*ptr).value = value;
1882         else this.values[12] = new MetadataString(value);
1883         return value;
1884     }
1885 
1886     @property string lastOutput()
1887     {
1888         auto ptr = 13 in this.values;
1889         if(ptr && cast(MetadataChat)*ptr) return (cast(MetadataChat)*ptr).value;
1890         return (string).init;
1891     }
1892 
1893     @property string lastOutput(string value)
1894     {
1895         auto ptr = 13 in this.values;
1896         if(ptr && cast(MetadataChat)*ptr) (cast(MetadataChat)*ptr).value = value;
1897         else this.values[13] = new MetadataChat(value);
1898         return value;
1899     }
1900 
1901     @property uint fuseTime()
1902     {
1903         auto ptr = 6 in this.values;
1904         if(ptr && cast(MetadataInt)*ptr) return (cast(MetadataInt)*ptr).value;
1905         return (uint).init;
1906     }
1907 
1908     @property uint fuseTime(uint value)
1909     {
1910         auto ptr = 6 in this.values;
1911         if(ptr && cast(MetadataInt)*ptr) (cast(MetadataInt)*ptr).value = value;
1912         else this.values[6] = new MetadataInt(value);
1913         return value;
1914     }
1915 
1916 }