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