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