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