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