1 /*
2  * This file was automatically generated by sel-utils and
3  * released under the MIT License.
4  * 
5  * License: https://github.com/sel-project/sel-utils/blob/master/LICENSE
6  * Repository: https://github.com/sel-project/sel-utils
7  * Generated from https://github.com/sel-project/sel-utils/blob/master/xml/metadata/java315.xml
8  */
9 module sul.metadata.java315;
10 
11 import std.typecons : Tuple, tuple;
12 
13 import sul.utils.buffer : Buffer;
14 import sul.utils.metadataflags;
15 import sul.utils.var;
16 
17 static import sul.protocol.java315.types;
18 
19 alias Changed(T) = Tuple!(T, "value", bool, "changed");
20 
21 enum MetadataType : ubyte {
22 
23 	BYTE = 0,
24 	INT = 1,
25 	FLOAT = 2,
26 	STRING = 3,
27 	CHAT = 4,
28 	SLOT = 5,
29 	BOOL = 6,
30 	ROTATION = 7,
31 	POSITION = 8,
32 	OPTIONAL_POSITION = 9,
33 	DIRECTION = 10,
34 	UUID = 11,
35 	BLOCK = 12,
36 }
37 
38 class Metadata {
39 
40 	public enum ENTITY_FLAGS : size_t {
41 		ON_FIRE = 0,
42 		SNEAKING = 1,
43 		SPRINTING = 3,
44 		INVISIBLE = 5,
45 		GLOWING = 6,
46 		GLIDING = 7,
47 	}
48 	public enum ubyte AIR = 1;
49 	public enum ubyte NAMETAG = 2;
50 	public enum ubyte SHOW_NAMETAG = 3;
51 	public enum ubyte SILENT = 4;
52 	public enum ubyte NO_GRAVITY = 5;
53 	public enum ubyte POTION = 6;
54 	public enum ubyte SPAWN_POSITION = 6;
55 	public enum ubyte RADIUS = 6;
56 	public enum ubyte COLOR = 7;
57 	public enum ubyte IS_SINGLE_POINT = 8;
58 	public enum ubyte PARTICLE_ID = 9;
59 	public enum ubyte PARTICLE_PARAMETER_1 = 10;
60 	public enum ubyte PARTICLE_PARAMETER_2 = 11;
61 	public enum ubyte HOOKED_ENTITY = 6;
62 	public enum ARROW_FLAGS : size_t {
63 		CRITICAL = 0,
64 	}
65 	public enum ubyte TIME_SINCE_LAST_HIT = 6;
66 	public enum ubyte FORWARD_DIRECTION = 7;
67 	public enum ubyte DAMAGE_TAKEN = 8;
68 	public enum ubyte BOAT_VARIANT = 9;
69 	public enum ubyte RIGHT_PADDLE_TURNING = 10;
70 	public enum ubyte LEFT_PADDLE_TURNING = 11;
71 	public enum ubyte BEAM_TARGET = 6;
72 	public enum ubyte SHOW_BOTTOM = 7;
73 	public enum ubyte FIREWORK = 6;
74 	public enum ubyte ITEM = 6;
75 	public enum ubyte ROTATION = 7;
76 	public enum LIVING_FLAGS : size_t {
77 		HAND_ACTIVE = 0,
78 		OFFHAND = 1,
79 	}
80 	public enum ubyte HEALTH = 7;
81 	public enum ubyte POTION_COLOR = 8;
82 	public enum ubyte POTION_AMBIENT = 9;
83 	public enum ubyte ARROWS = 10;
84 	public enum ubyte ADDITIONAL_HEARTS = 11;
85 	public enum ubyte SCORE = 12;
86 	public enum SKIN_PARTS : size_t {
87 		CAPE = 0,
88 		JACKET = 1,
89 		LEFT_SLEEVE = 2,
90 		RIGHT_SLEEVE = 3,
91 		LEFT_PANTS = 4,
92 		RIGHT_PANTS = 5,
93 		HAT = 6,
94 	}
95 	public enum ubyte MAIN_HAND = 14;
96 	public enum ARMOR_STAND_FLAGS : size_t {
97 		IS_SMALL = 0,
98 		HAS_ARMS = 2,
99 		NO_BASE_PLATE = 3,
100 		SET_MARKER = 4,
101 	}
102 	public enum ubyte HEAD_ROTATION = 12;
103 	public enum ubyte BODY_ROTATION = 13;
104 	public enum ubyte LEFT_ARM_ROTATION = 14;
105 	public enum ubyte RIGHT_ARM_ROTATION = 15;
106 	public enum ubyte LEFT_LEG_ROTATION = 16;
107 	public enum ubyte RIGHT_LEG_ROTATION = 17;
108 	public enum INSTENTIENT_FLAGS : size_t {
109 		NO_AI = 0,
110 		LEFT_HANDED = 1,
111 	}
112 	public enum ubyte HANGING = 12;
113 	public enum ubyte BABY = 12;
114 	public enum HORSE_FLAGS : size_t {
115 		HORSE_TAMED = 1,
116 		HORSE_SADDLED = 2,
117 		HORSE_CHESTED = 3,
118 		HORSE_EATING = 5,
119 		HORSE_REARING = 6,
120 		MOUTH_OPEN = 7,
121 	}
122 	public enum ubyte OWNER_UUID = 14;
123 	public enum ubyte HORSE_VARIANT = 15;
124 	public enum ubyte HORSE_ARMOR = 16;
125 	public enum ubyte CHESTED = 15;
126 	public enum ubyte LLAMA_STRENGTH = 16;
127 	public enum ubyte CARPET_COLOR = 17;
128 	public enum ubyte LLAMA_VARIANT = 18;
129 	public enum ubyte PIG_SADDLED = 13;
130 	public enum ubyte RABBIT_VARIANT = 13;
131 	public enum ubyte STANDING_UP = 13;
132 	public enum SHEEP_FLAGS_AND_COLOR : size_t {
133 		SHEARED = 7,
134 	}
135 	public enum TAMEABLE_FLAGS : size_t {
136 		SITTING = 0,
137 		ANGRY = 1,
138 		TAMED = 2,
139 	}
140 	public enum ubyte OCELOT_VARIANT = 15;
141 	public enum ubyte WOLF_HEALTH = 15;
142 	public enum ubyte BEGGING = 16;
143 	public enum ubyte COLLAR_COLOR = 17;
144 	public enum ubyte PROFESSION = 13;
145 	public enum ubyte CREATED_BY_PLAYER = 12;
146 	public enum SNOWMAN_FLAGS : size_t {
147 		PUMPKINLESS = 4,
148 	}
149 	public enum ubyte SHULKER_DIRECTION = 12;
150 	public enum ubyte SHULKER_ATTACHMENT = 13;
151 	public enum ubyte SHULKER_SHIELD_HEIGHT = 14;
152 	public enum ubyte SHULKER_COLOR = 15;
153 	public enum ubyte BLAZE_ON_FIRE = 12;
154 	public enum ubyte CREEPER_STATE = 12;
155 	public enum ubyte CHARGED = 13;
156 	public enum ubyte IGNITED = 14;
157 	public enum ubyte RECTRACTING_SPIKES = 12;
158 	public enum ubyte GUARDIAN_TARGET = 13;
159 	public enum ubyte SPELL = 12;
160 	public enum ubyte ATTACK_MODE = 12;
161 	public enum ubyte SWINGING_ARMS = 12;
162 	public enum ubyte CLIMBING = 12;
163 	public enum ubyte CENTER_HEAD_TARGET = 12;
164 	public enum ubyte LEFT_HEAD_TARGET = 13;
165 	public enum ubyte RIGHT_HEAD_TARGET = 14;
166 	public enum ubyte INVULNERABLE_TIME = 15;
167 	public enum ubyte HANDS_HELD_UP = 14;
168 	public enum ubyte CONVERTING = 15;
169 	public enum ubyte ZOMBIE_VILLAGER_PROFESSION = 16;
170 	public enum ubyte CARRIED_BLOCK = 12;
171 	public enum ubyte SCREAMING = 13;
172 	public enum ubyte DRAGON_PHASE = 12;
173 	public enum ubyte GHAST_ATTACKING = 12;
174 	public enum ubyte SLIME_SIZE = 12;
175 	public enum ubyte SHAKING_POWER = 6;
176 	public enum ubyte SHAKING_DIRECTION = 7;
177 	public enum ubyte SHAKING_MULTIPLIER = 8;
178 	public enum ubyte MINECART_BLOCK = 9;
179 	public enum ubyte MINECART_BLOCK_POSITION = 10;
180 	public enum ubyte MINECART_CUSTOM_BLOCK = 11;
181 	public enum ubyte FURNACE_POWERED = 12;
182 	public enum ubyte COMMAND = 12;
183 	public enum ubyte LAST_OUTPUT = 13;
184 	public enum ubyte FUSE_TIME = 6;
185 
186 	public DecodedMetadata[] decoded;
187 
188 	private bool _cached = false;
189 	private ubyte[] _cache;
190 
191 	private void delegate(Buffer) pure nothrow @safe[] _changed;
192 
193 	private MetadataFlags!(byte) _entityFlags;
194 	private Changed!(uint) _air = tuple(cast(uint)300, false);
195 	private Changed!(string) _nametag;
196 	private Changed!(bool) _showNametag;
197 	private Changed!(bool) _silent;
198 	private Changed!(bool) _noGravity;
199 	private Changed!(sul.protocol.java315.types.Slot) _potion;
200 	private Changed!(ulong) _spawnPosition;
201 	private Changed!(float) _radius = tuple(cast(float)0.5, false);
202 	private Changed!(uint) _color;
203 	private Changed!(bool) _isSinglePoint;
204 	private Changed!(uint) _particleId;
205 	private Changed!(uint) _particleParameter1;
206 	private Changed!(uint) _particleParameter2;
207 	private Changed!(uint) _hookedEntity;
208 	private Changed!(MetadataFlags!(byte)) _arrowFlags;
209 	private Changed!(uint) _timeSinceLastHit;
210 	private Changed!(uint) _forwardDirection = tuple(cast(uint)1, false);
211 	private Changed!(float) _damageTaken = tuple(cast(float)0, false);
212 	private Changed!(uint) _boatVariant;
213 	private Changed!(bool) _rightPaddleTurning;
214 	private Changed!(bool) _leftPaddleTurning;
215 	private Changed!(sul.protocol.java315.types.OptionalPosition) _beamTarget;
216 	private Changed!(bool) _showBottom;
217 	private Changed!(sul.protocol.java315.types.Slot) _firework;
218 	private Changed!(sul.protocol.java315.types.Slot) _item;
219 	private Changed!(uint) _rotation;
220 	private Changed!(MetadataFlags!(byte)) _livingFlags;
221 	private Changed!(float) _health = tuple(cast(float)1, false);
222 	private Changed!(uint) _potionColor;
223 	private Changed!(bool) _potionAmbient;
224 	private Changed!(uint) _arrows;
225 	private Changed!(float) _additionalHearts = tuple(cast(float)0, false);
226 	private Changed!(uint) _score;
227 	private Changed!(MetadataFlags!(byte)) _skinParts = tuple(cast(MetadataFlags!(byte))0, false);
228 	private Changed!(byte) _mainHand = tuple(cast(byte)1, false);
229 	private Changed!(MetadataFlags!(byte)) _armorStandFlags;
230 	private Changed!(Tuple!(float, "x", float, "y", float, "z")) _headRotation;
231 	private Changed!(Tuple!(float, "x", float, "y", float, "z")) _bodyRotation;
232 	private Changed!(Tuple!(float, "x", float, "y", float, "z")) _leftArmRotation;
233 	private Changed!(Tuple!(float, "x", float, "y", float, "z")) _rightArmRotation;
234 	private Changed!(Tuple!(float, "x", float, "y", float, "z")) _leftLegRotation;
235 	private Changed!(Tuple!(float, "x", float, "y", float, "z")) _rightLegRotation;
236 	private Changed!(MetadataFlags!(byte)) _instentientFlags;
237 	private Changed!(byte) _hanging;
238 	private Changed!(bool) _baby;
239 	private Changed!(MetadataFlags!(byte)) _horseFlags;
240 	private Changed!(sul.protocol.java315.types.OptionalUuid) _ownerUuid;
241 	private Changed!(uint) _horseVariant;
242 	private Changed!(uint) _horseArmor;
243 	private Changed!(bool) _chested;
244 	private Changed!(uint) _llamaStrength;
245 	private Changed!(uint) _carpetColor = tuple(cast(uint)-1, false);
246 	private Changed!(uint) _llamaVariant;
247 	private Changed!(bool) _pigSaddled;
248 	private Changed!(uint) _rabbitVariant;
249 	private Changed!(bool) _standingUp;
250 	private Changed!(MetadataFlags!(byte)) _sheepFlagsAndColor;
251 	private Changed!(MetadataFlags!(byte)) _tameableFlags;
252 	private Changed!(uint) _ocelotVariant;
253 	private Changed!(float) _wolfHealth;
254 	private Changed!(bool) _begging;
255 	private Changed!(uint) _collarColor = tuple(cast(uint)14, false);
256 	private Changed!(uint) _profession;
257 	private Changed!(byte) _createdByPlayer;
258 	private Changed!(MetadataFlags!(byte)) _snowmanFlags;
259 	private Changed!(uint) _shulkerDirection;
260 	private Changed!(sul.protocol.java315.types.OptionalPosition) _shulkerAttachment;
261 	private Changed!(byte) _shulkerShieldHeight;
262 	private Changed!(byte) _shulkerColor;
263 	private Changed!(byte) _blazeOnFire;
264 	private Changed!(uint) _creeperState = tuple(cast(uint)-1, false);
265 	private Changed!(bool) _charged;
266 	private Changed!(bool) _ignited;
267 	private Changed!(bool) _rectractingSpikes;
268 	private Changed!(uint) _guardianTarget;
269 	private Changed!(byte) _spell;
270 	private Changed!(byte) _attackMode;
271 	private Changed!(bool) _swingingArms;
272 	private Changed!(byte) _climbing;
273 	private Changed!(uint) _centerHeadTarget;
274 	private Changed!(uint) _leftHeadTarget;
275 	private Changed!(uint) _rightHeadTarget;
276 	private Changed!(uint) _invulnerableTime;
277 	private Changed!(bool) _handsHeldUp;
278 	private Changed!(bool) _converting;
279 	private Changed!(uint) _zombieVillagerProfession;
280 	private Changed!(uint) _carriedBlock;
281 	private Changed!(bool) _screaming;
282 	private Changed!(uint) _dragonPhase;
283 	private Changed!(bool) _ghastAttacking;
284 	private Changed!(uint) _slimeSize = tuple(cast(uint)1, false);
285 	private Changed!(uint) _shakingPower;
286 	private Changed!(uint) _shakingDirection;
287 	private Changed!(float) _shakingMultiplier = tuple(cast(float)0, false);
288 	private Changed!(uint) _minecartBlock;
289 	private Changed!(uint) _minecartBlockPosition = tuple(cast(uint)6, false);
290 	private Changed!(bool) _minecartCustomBlock;
291 	private Changed!(bool) _furnacePowered;
292 	private Changed!(string) _command;
293 	private Changed!(string) _lastOutput;
294 	private Changed!(uint) _fuseTime;
295 
296 	public pure nothrow @safe this() {
297 		this.reset();
298 	}
299 
300 	public pure nothrow @safe void reset() {
301 		this._changed = [
302 			&this.encodeEntityFlags,
303 		];
304 	}
305 
306 	public pure nothrow @property @safe @nogc byte entityFlags() {
307 		return _entityFlags;
308 	}
309 
310 	public pure nothrow @property @safe byte entityFlags(byte value) {
311 		this._cached = false;
312 		this._entityFlags = value;
313 		return value;
314 	}
315 
316 	public pure nothrow @safe encodeEntityFlags(Buffer buffer) {
317 		with(buffer) {
318 			writeBigEndianUbyte(0);
319 			writeBigEndianUbyte(0);
320 			writeBigEndianByte(this._entityFlags);
321 		}
322 	}
323 
324 	public pure nothrow @property @safe bool onFire() {
325 		return _entityFlags._0;
326 	}
327 
328 	public pure nothrow @property @safe bool onFire(bool value) {
329 		_entityFlags._0 = value;
330 		return value;
331 	}
332 
333 	public pure nothrow @property @safe bool sneaking() {
334 		return _entityFlags._1;
335 	}
336 
337 	public pure nothrow @property @safe bool sneaking(bool value) {
338 		_entityFlags._1 = value;
339 		return value;
340 	}
341 
342 	public pure nothrow @property @safe bool sprinting() {
343 		return _entityFlags._3;
344 	}
345 
346 	public pure nothrow @property @safe bool sprinting(bool value) {
347 		_entityFlags._3 = value;
348 		return value;
349 	}
350 
351 	public pure nothrow @property @safe bool invisible() {
352 		return _entityFlags._5;
353 	}
354 
355 	public pure nothrow @property @safe bool invisible(bool value) {
356 		_entityFlags._5 = value;
357 		return value;
358 	}
359 
360 	public pure nothrow @property @safe bool glowing() {
361 		return _entityFlags._6;
362 	}
363 
364 	public pure nothrow @property @safe bool glowing(bool value) {
365 		_entityFlags._6 = value;
366 		return value;
367 	}
368 
369 	public pure nothrow @property @safe bool gliding() {
370 		return _entityFlags._7;
371 	}
372 
373 	public pure nothrow @property @safe bool gliding(bool value) {
374 		_entityFlags._7 = value;
375 		return value;
376 	}
377 
378 	public pure nothrow @property @safe @nogc uint air() {
379 		return _air.value;
380 	}
381 
382 	public pure nothrow @property @safe uint air(uint value) {
383 		this._cached = false;
384 		this._air.value = value;
385 		if(!this._air.changed) {
386 			this._air.changed = true;
387 			this._changed ~= &this.encodeAir;
388 		}
389 		return value;
390 	}
391 
392 	public pure nothrow @safe encodeAir(Buffer buffer) {
393 		with(buffer) {
394 			writeBigEndianUbyte(1);
395 			writeBigEndianUbyte(1);
396 			writeBytes(varuint.encode(this._air.value));
397 		}
398 	}
399 
400 	public pure nothrow @property @safe @nogc string nametag() {
401 		return _nametag.value;
402 	}
403 
404 	public pure nothrow @property @safe string nametag(string value) {
405 		this._cached = false;
406 		this._nametag.value = value;
407 		if(!this._nametag.changed) {
408 			this._nametag.changed = true;
409 			this._changed ~= &this.encodeNametag;
410 		}
411 		return value;
412 	}
413 
414 	public pure nothrow @safe encodeNametag(Buffer buffer) {
415 		with(buffer) {
416 			writeBigEndianUbyte(2);
417 			writeBigEndianUbyte(3);
418 			writeBytes(varuint.encode(cast(uint)this._nametag.value.length)); writeString(this._nametag.value);
419 		}
420 	}
421 
422 	public pure nothrow @property @safe @nogc bool showNametag() {
423 		return _showNametag.value;
424 	}
425 
426 	public pure nothrow @property @safe bool showNametag(bool value) {
427 		this._cached = false;
428 		this._showNametag.value = value;
429 		if(!this._showNametag.changed) {
430 			this._showNametag.changed = true;
431 			this._changed ~= &this.encodeShowNametag;
432 		}
433 		return value;
434 	}
435 
436 	public pure nothrow @safe encodeShowNametag(Buffer buffer) {
437 		with(buffer) {
438 			writeBigEndianUbyte(3);
439 			writeBigEndianUbyte(6);
440 			writeBigEndianBool(this._showNametag.value);
441 		}
442 	}
443 
444 	public pure nothrow @property @safe @nogc bool silent() {
445 		return _silent.value;
446 	}
447 
448 	public pure nothrow @property @safe bool silent(bool value) {
449 		this._cached = false;
450 		this._silent.value = value;
451 		if(!this._silent.changed) {
452 			this._silent.changed = true;
453 			this._changed ~= &this.encodeSilent;
454 		}
455 		return value;
456 	}
457 
458 	public pure nothrow @safe encodeSilent(Buffer buffer) {
459 		with(buffer) {
460 			writeBigEndianUbyte(4);
461 			writeBigEndianUbyte(6);
462 			writeBigEndianBool(this._silent.value);
463 		}
464 	}
465 
466 	public pure nothrow @property @safe @nogc bool noGravity() {
467 		return _noGravity.value;
468 	}
469 
470 	public pure nothrow @property @safe bool noGravity(bool value) {
471 		this._cached = false;
472 		this._noGravity.value = value;
473 		if(!this._noGravity.changed) {
474 			this._noGravity.changed = true;
475 			this._changed ~= &this.encodeNoGravity;
476 		}
477 		return value;
478 	}
479 
480 	public pure nothrow @safe encodeNoGravity(Buffer buffer) {
481 		with(buffer) {
482 			writeBigEndianUbyte(5);
483 			writeBigEndianUbyte(6);
484 			writeBigEndianBool(this._noGravity.value);
485 		}
486 	}
487 
488 	public pure nothrow @property @safe @nogc sul.protocol.java315.types.Slot potion() {
489 		return _potion.value;
490 	}
491 
492 	public pure nothrow @property @safe sul.protocol.java315.types.Slot potion(sul.protocol.java315.types.Slot value) {
493 		this._cached = false;
494 		this._potion.value = value;
495 		if(!this._potion.changed) {
496 			this._potion.changed = true;
497 			this._changed ~= &this.encodePotion;
498 		}
499 		return value;
500 	}
501 
502 	public pure nothrow @safe encodePotion(Buffer buffer) {
503 		with(buffer) {
504 			writeBigEndianUbyte(6);
505 			writeBigEndianUbyte(5);
506 			this._potion.value.encode(bufferInstance);
507 		}
508 	}
509 
510 	public pure nothrow @property @safe @nogc ulong spawnPosition() {
511 		return _spawnPosition.value;
512 	}
513 
514 	public pure nothrow @property @safe ulong spawnPosition(ulong value) {
515 		this._cached = false;
516 		this._spawnPosition.value = value;
517 		if(!this._spawnPosition.changed) {
518 			this._spawnPosition.changed = true;
519 			this._changed ~= &this.encodeSpawnPosition;
520 		}
521 		return value;
522 	}
523 
524 	public pure nothrow @safe encodeSpawnPosition(Buffer buffer) {
525 		with(buffer) {
526 			writeBigEndianUbyte(6);
527 			writeBigEndianUbyte(8);
528 			writeBigEndianUlong(this._spawnPosition.value);
529 		}
530 	}
531 
532 	public pure nothrow @property @safe @nogc float radius() {
533 		return _radius.value;
534 	}
535 
536 	public pure nothrow @property @safe float radius(float value) {
537 		this._cached = false;
538 		this._radius.value = value;
539 		if(!this._radius.changed) {
540 			this._radius.changed = true;
541 			this._changed ~= &this.encodeRadius;
542 		}
543 		return value;
544 	}
545 
546 	public pure nothrow @safe encodeRadius(Buffer buffer) {
547 		with(buffer) {
548 			writeBigEndianUbyte(6);
549 			writeBigEndianUbyte(2);
550 			writeBigEndianFloat(this._radius.value);
551 		}
552 	}
553 
554 	public pure nothrow @property @safe @nogc uint color() {
555 		return _color.value;
556 	}
557 
558 	public pure nothrow @property @safe uint color(uint value) {
559 		this._cached = false;
560 		this._color.value = value;
561 		if(!this._color.changed) {
562 			this._color.changed = true;
563 			this._changed ~= &this.encodeColor;
564 		}
565 		return value;
566 	}
567 
568 	public pure nothrow @safe encodeColor(Buffer buffer) {
569 		with(buffer) {
570 			writeBigEndianUbyte(7);
571 			writeBigEndianUbyte(1);
572 			writeBytes(varuint.encode(this._color.value));
573 		}
574 	}
575 
576 	public pure nothrow @property @safe @nogc bool isSinglePoint() {
577 		return _isSinglePoint.value;
578 	}
579 
580 	public pure nothrow @property @safe bool isSinglePoint(bool value) {
581 		this._cached = false;
582 		this._isSinglePoint.value = value;
583 		if(!this._isSinglePoint.changed) {
584 			this._isSinglePoint.changed = true;
585 			this._changed ~= &this.encodeIsSinglePoint;
586 		}
587 		return value;
588 	}
589 
590 	public pure nothrow @safe encodeIsSinglePoint(Buffer buffer) {
591 		with(buffer) {
592 			writeBigEndianUbyte(8);
593 			writeBigEndianUbyte(6);
594 			writeBigEndianBool(this._isSinglePoint.value);
595 		}
596 	}
597 
598 	public pure nothrow @property @safe @nogc uint particleId() {
599 		return _particleId.value;
600 	}
601 
602 	public pure nothrow @property @safe uint particleId(uint value) {
603 		this._cached = false;
604 		this._particleId.value = value;
605 		if(!this._particleId.changed) {
606 			this._particleId.changed = true;
607 			this._changed ~= &this.encodeParticleId;
608 		}
609 		return value;
610 	}
611 
612 	public pure nothrow @safe encodeParticleId(Buffer buffer) {
613 		with(buffer) {
614 			writeBigEndianUbyte(9);
615 			writeBigEndianUbyte(1);
616 			writeBytes(varuint.encode(this._particleId.value));
617 		}
618 	}
619 
620 	public pure nothrow @property @safe @nogc uint particleParameter1() {
621 		return _particleParameter1.value;
622 	}
623 
624 	public pure nothrow @property @safe uint particleParameter1(uint value) {
625 		this._cached = false;
626 		this._particleParameter1.value = value;
627 		if(!this._particleParameter1.changed) {
628 			this._particleParameter1.changed = true;
629 			this._changed ~= &this.encodeParticleParameter1;
630 		}
631 		return value;
632 	}
633 
634 	public pure nothrow @safe encodeParticleParameter1(Buffer buffer) {
635 		with(buffer) {
636 			writeBigEndianUbyte(10);
637 			writeBigEndianUbyte(1);
638 			writeBytes(varuint.encode(this._particleParameter1.value));
639 		}
640 	}
641 
642 	public pure nothrow @property @safe @nogc uint particleParameter2() {
643 		return _particleParameter2.value;
644 	}
645 
646 	public pure nothrow @property @safe uint particleParameter2(uint value) {
647 		this._cached = false;
648 		this._particleParameter2.value = value;
649 		if(!this._particleParameter2.changed) {
650 			this._particleParameter2.changed = true;
651 			this._changed ~= &this.encodeParticleParameter2;
652 		}
653 		return value;
654 	}
655 
656 	public pure nothrow @safe encodeParticleParameter2(Buffer buffer) {
657 		with(buffer) {
658 			writeBigEndianUbyte(11);
659 			writeBigEndianUbyte(1);
660 			writeBytes(varuint.encode(this._particleParameter2.value));
661 		}
662 	}
663 
664 	public pure nothrow @property @safe @nogc uint hookedEntity() {
665 		return _hookedEntity.value;
666 	}
667 
668 	public pure nothrow @property @safe uint hookedEntity(uint value) {
669 		this._cached = false;
670 		this._hookedEntity.value = value;
671 		if(!this._hookedEntity.changed) {
672 			this._hookedEntity.changed = true;
673 			this._changed ~= &this.encodeHookedEntity;
674 		}
675 		return value;
676 	}
677 
678 	public pure nothrow @safe encodeHookedEntity(Buffer buffer) {
679 		with(buffer) {
680 			writeBigEndianUbyte(6);
681 			writeBigEndianUbyte(1);
682 			writeBytes(varuint.encode(this._hookedEntity.value));
683 		}
684 	}
685 
686 	public pure nothrow @property @safe @nogc byte arrowFlags() {
687 		return _arrowFlags.value;
688 	}
689 
690 	public pure nothrow @property @safe byte arrowFlags(byte value) {
691 		this._cached = false;
692 		this._arrowFlags.value = value;
693 		if(!this._arrowFlags.changed) {
694 			this._arrowFlags.changed = true;
695 			this._changed ~= &this.encodeArrowFlags;
696 		}
697 		return value;
698 	}
699 
700 	public pure nothrow @safe encodeArrowFlags(Buffer buffer) {
701 		with(buffer) {
702 			writeBigEndianUbyte(6);
703 			writeBigEndianUbyte(0);
704 			writeBigEndianByte(this._arrowFlags.value);
705 		}
706 	}
707 
708 	public pure nothrow @property @safe bool critical() {
709 		return _arrowFlags.value._0;
710 	}
711 
712 	public pure nothrow @property @safe bool critical(bool value) {
713 		_arrowFlags.value._0 = value;
714 		return value;
715 	}
716 
717 	public pure nothrow @property @safe @nogc uint timeSinceLastHit() {
718 		return _timeSinceLastHit.value;
719 	}
720 
721 	public pure nothrow @property @safe uint timeSinceLastHit(uint value) {
722 		this._cached = false;
723 		this._timeSinceLastHit.value = value;
724 		if(!this._timeSinceLastHit.changed) {
725 			this._timeSinceLastHit.changed = true;
726 			this._changed ~= &this.encodeTimeSinceLastHit;
727 		}
728 		return value;
729 	}
730 
731 	public pure nothrow @safe encodeTimeSinceLastHit(Buffer buffer) {
732 		with(buffer) {
733 			writeBigEndianUbyte(6);
734 			writeBigEndianUbyte(1);
735 			writeBytes(varuint.encode(this._timeSinceLastHit.value));
736 		}
737 	}
738 
739 	public pure nothrow @property @safe @nogc uint forwardDirection() {
740 		return _forwardDirection.value;
741 	}
742 
743 	public pure nothrow @property @safe uint forwardDirection(uint value) {
744 		this._cached = false;
745 		this._forwardDirection.value = value;
746 		if(!this._forwardDirection.changed) {
747 			this._forwardDirection.changed = true;
748 			this._changed ~= &this.encodeForwardDirection;
749 		}
750 		return value;
751 	}
752 
753 	public pure nothrow @safe encodeForwardDirection(Buffer buffer) {
754 		with(buffer) {
755 			writeBigEndianUbyte(7);
756 			writeBigEndianUbyte(1);
757 			writeBytes(varuint.encode(this._forwardDirection.value));
758 		}
759 	}
760 
761 	public pure nothrow @property @safe @nogc float damageTaken() {
762 		return _damageTaken.value;
763 	}
764 
765 	public pure nothrow @property @safe float damageTaken(float value) {
766 		this._cached = false;
767 		this._damageTaken.value = value;
768 		if(!this._damageTaken.changed) {
769 			this._damageTaken.changed = true;
770 			this._changed ~= &this.encodeDamageTaken;
771 		}
772 		return value;
773 	}
774 
775 	public pure nothrow @safe encodeDamageTaken(Buffer buffer) {
776 		with(buffer) {
777 			writeBigEndianUbyte(8);
778 			writeBigEndianUbyte(2);
779 			writeBigEndianFloat(this._damageTaken.value);
780 		}
781 	}
782 
783 	public pure nothrow @property @safe @nogc uint boatVariant() {
784 		return _boatVariant.value;
785 	}
786 
787 	public pure nothrow @property @safe uint boatVariant(uint value) {
788 		this._cached = false;
789 		this._boatVariant.value = value;
790 		if(!this._boatVariant.changed) {
791 			this._boatVariant.changed = true;
792 			this._changed ~= &this.encodeBoatVariant;
793 		}
794 		return value;
795 	}
796 
797 	public pure nothrow @safe encodeBoatVariant(Buffer buffer) {
798 		with(buffer) {
799 			writeBigEndianUbyte(9);
800 			writeBigEndianUbyte(1);
801 			writeBytes(varuint.encode(this._boatVariant.value));
802 		}
803 	}
804 
805 	public pure nothrow @property @safe @nogc bool rightPaddleTurning() {
806 		return _rightPaddleTurning.value;
807 	}
808 
809 	public pure nothrow @property @safe bool rightPaddleTurning(bool value) {
810 		this._cached = false;
811 		this._rightPaddleTurning.value = value;
812 		if(!this._rightPaddleTurning.changed) {
813 			this._rightPaddleTurning.changed = true;
814 			this._changed ~= &this.encodeRightPaddleTurning;
815 		}
816 		return value;
817 	}
818 
819 	public pure nothrow @safe encodeRightPaddleTurning(Buffer buffer) {
820 		with(buffer) {
821 			writeBigEndianUbyte(10);
822 			writeBigEndianUbyte(6);
823 			writeBigEndianBool(this._rightPaddleTurning.value);
824 		}
825 	}
826 
827 	public pure nothrow @property @safe @nogc bool leftPaddleTurning() {
828 		return _leftPaddleTurning.value;
829 	}
830 
831 	public pure nothrow @property @safe bool leftPaddleTurning(bool value) {
832 		this._cached = false;
833 		this._leftPaddleTurning.value = value;
834 		if(!this._leftPaddleTurning.changed) {
835 			this._leftPaddleTurning.changed = true;
836 			this._changed ~= &this.encodeLeftPaddleTurning;
837 		}
838 		return value;
839 	}
840 
841 	public pure nothrow @safe encodeLeftPaddleTurning(Buffer buffer) {
842 		with(buffer) {
843 			writeBigEndianUbyte(11);
844 			writeBigEndianUbyte(6);
845 			writeBigEndianBool(this._leftPaddleTurning.value);
846 		}
847 	}
848 
849 	public pure nothrow @property @safe @nogc sul.protocol.java315.types.OptionalPosition beamTarget() {
850 		return _beamTarget.value;
851 	}
852 
853 	public pure nothrow @property @safe sul.protocol.java315.types.OptionalPosition beamTarget(sul.protocol.java315.types.OptionalPosition value) {
854 		this._cached = false;
855 		this._beamTarget.value = value;
856 		if(!this._beamTarget.changed) {
857 			this._beamTarget.changed = true;
858 			this._changed ~= &this.encodeBeamTarget;
859 		}
860 		return value;
861 	}
862 
863 	public pure nothrow @safe encodeBeamTarget(Buffer buffer) {
864 		with(buffer) {
865 			writeBigEndianUbyte(6);
866 			writeBigEndianUbyte(9);
867 			this._beamTarget.value.encode(bufferInstance);
868 		}
869 	}
870 
871 	public pure nothrow @property @safe @nogc bool showBottom() {
872 		return _showBottom.value;
873 	}
874 
875 	public pure nothrow @property @safe bool showBottom(bool value) {
876 		this._cached = false;
877 		this._showBottom.value = value;
878 		if(!this._showBottom.changed) {
879 			this._showBottom.changed = true;
880 			this._changed ~= &this.encodeShowBottom;
881 		}
882 		return value;
883 	}
884 
885 	public pure nothrow @safe encodeShowBottom(Buffer buffer) {
886 		with(buffer) {
887 			writeBigEndianUbyte(7);
888 			writeBigEndianUbyte(6);
889 			writeBigEndianBool(this._showBottom.value);
890 		}
891 	}
892 
893 	public pure nothrow @property @safe @nogc sul.protocol.java315.types.Slot firework() {
894 		return _firework.value;
895 	}
896 
897 	public pure nothrow @property @safe sul.protocol.java315.types.Slot firework(sul.protocol.java315.types.Slot value) {
898 		this._cached = false;
899 		this._firework.value = value;
900 		if(!this._firework.changed) {
901 			this._firework.changed = true;
902 			this._changed ~= &this.encodeFirework;
903 		}
904 		return value;
905 	}
906 
907 	public pure nothrow @safe encodeFirework(Buffer buffer) {
908 		with(buffer) {
909 			writeBigEndianUbyte(6);
910 			writeBigEndianUbyte(5);
911 			this._firework.value.encode(bufferInstance);
912 		}
913 	}
914 
915 	public pure nothrow @property @safe @nogc sul.protocol.java315.types.Slot item() {
916 		return _item.value;
917 	}
918 
919 	public pure nothrow @property @safe sul.protocol.java315.types.Slot item(sul.protocol.java315.types.Slot value) {
920 		this._cached = false;
921 		this._item.value = value;
922 		if(!this._item.changed) {
923 			this._item.changed = true;
924 			this._changed ~= &this.encodeItem;
925 		}
926 		return value;
927 	}
928 
929 	public pure nothrow @safe encodeItem(Buffer buffer) {
930 		with(buffer) {
931 			writeBigEndianUbyte(6);
932 			writeBigEndianUbyte(5);
933 			this._item.value.encode(bufferInstance);
934 		}
935 	}
936 
937 	public pure nothrow @property @safe @nogc uint rotation() {
938 		return _rotation.value;
939 	}
940 
941 	public pure nothrow @property @safe uint rotation(uint value) {
942 		this._cached = false;
943 		this._rotation.value = value;
944 		if(!this._rotation.changed) {
945 			this._rotation.changed = true;
946 			this._changed ~= &this.encodeRotation;
947 		}
948 		return value;
949 	}
950 
951 	public pure nothrow @safe encodeRotation(Buffer buffer) {
952 		with(buffer) {
953 			writeBigEndianUbyte(7);
954 			writeBigEndianUbyte(1);
955 			writeBytes(varuint.encode(this._rotation.value));
956 		}
957 	}
958 
959 	public pure nothrow @property @safe @nogc byte livingFlags() {
960 		return _livingFlags.value;
961 	}
962 
963 	public pure nothrow @property @safe byte livingFlags(byte value) {
964 		this._cached = false;
965 		this._livingFlags.value = value;
966 		if(!this._livingFlags.changed) {
967 			this._livingFlags.changed = true;
968 			this._changed ~= &this.encodeLivingFlags;
969 		}
970 		return value;
971 	}
972 
973 	public pure nothrow @safe encodeLivingFlags(Buffer buffer) {
974 		with(buffer) {
975 			writeBigEndianUbyte(6);
976 			writeBigEndianUbyte(0);
977 			writeBigEndianByte(this._livingFlags.value);
978 		}
979 	}
980 
981 	public pure nothrow @property @safe bool handActive() {
982 		return _livingFlags.value._0;
983 	}
984 
985 	public pure nothrow @property @safe bool handActive(bool value) {
986 		_livingFlags.value._0 = value;
987 		return value;
988 	}
989 
990 	public pure nothrow @property @safe bool offhand() {
991 		return _livingFlags.value._1;
992 	}
993 
994 	public pure nothrow @property @safe bool offhand(bool value) {
995 		_livingFlags.value._1 = value;
996 		return value;
997 	}
998 
999 	public pure nothrow @property @safe @nogc float health() {
1000 		return _health.value;
1001 	}
1002 
1003 	public pure nothrow @property @safe float health(float value) {
1004 		this._cached = false;
1005 		this._health.value = value;
1006 		if(!this._health.changed) {
1007 			this._health.changed = true;
1008 			this._changed ~= &this.encodeHealth;
1009 		}
1010 		return value;
1011 	}
1012 
1013 	public pure nothrow @safe encodeHealth(Buffer buffer) {
1014 		with(buffer) {
1015 			writeBigEndianUbyte(7);
1016 			writeBigEndianUbyte(2);
1017 			writeBigEndianFloat(this._health.value);
1018 		}
1019 	}
1020 
1021 	public pure nothrow @property @safe @nogc uint potionColor() {
1022 		return _potionColor.value;
1023 	}
1024 
1025 	public pure nothrow @property @safe uint potionColor(uint value) {
1026 		this._cached = false;
1027 		this._potionColor.value = value;
1028 		if(!this._potionColor.changed) {
1029 			this._potionColor.changed = true;
1030 			this._changed ~= &this.encodePotionColor;
1031 		}
1032 		return value;
1033 	}
1034 
1035 	public pure nothrow @safe encodePotionColor(Buffer buffer) {
1036 		with(buffer) {
1037 			writeBigEndianUbyte(8);
1038 			writeBigEndianUbyte(1);
1039 			writeBytes(varuint.encode(this._potionColor.value));
1040 		}
1041 	}
1042 
1043 	public pure nothrow @property @safe @nogc bool potionAmbient() {
1044 		return _potionAmbient.value;
1045 	}
1046 
1047 	public pure nothrow @property @safe bool potionAmbient(bool value) {
1048 		this._cached = false;
1049 		this._potionAmbient.value = value;
1050 		if(!this._potionAmbient.changed) {
1051 			this._potionAmbient.changed = true;
1052 			this._changed ~= &this.encodePotionAmbient;
1053 		}
1054 		return value;
1055 	}
1056 
1057 	public pure nothrow @safe encodePotionAmbient(Buffer buffer) {
1058 		with(buffer) {
1059 			writeBigEndianUbyte(9);
1060 			writeBigEndianUbyte(6);
1061 			writeBigEndianBool(this._potionAmbient.value);
1062 		}
1063 	}
1064 
1065 	public pure nothrow @property @safe @nogc uint arrows() {
1066 		return _arrows.value;
1067 	}
1068 
1069 	public pure nothrow @property @safe uint arrows(uint value) {
1070 		this._cached = false;
1071 		this._arrows.value = value;
1072 		if(!this._arrows.changed) {
1073 			this._arrows.changed = true;
1074 			this._changed ~= &this.encodeArrows;
1075 		}
1076 		return value;
1077 	}
1078 
1079 	public pure nothrow @safe encodeArrows(Buffer buffer) {
1080 		with(buffer) {
1081 			writeBigEndianUbyte(10);
1082 			writeBigEndianUbyte(1);
1083 			writeBytes(varuint.encode(this._arrows.value));
1084 		}
1085 	}
1086 
1087 	public pure nothrow @property @safe @nogc float additionalHearts() {
1088 		return _additionalHearts.value;
1089 	}
1090 
1091 	public pure nothrow @property @safe float additionalHearts(float value) {
1092 		this._cached = false;
1093 		this._additionalHearts.value = value;
1094 		if(!this._additionalHearts.changed) {
1095 			this._additionalHearts.changed = true;
1096 			this._changed ~= &this.encodeAdditionalHearts;
1097 		}
1098 		return value;
1099 	}
1100 
1101 	public pure nothrow @safe encodeAdditionalHearts(Buffer buffer) {
1102 		with(buffer) {
1103 			writeBigEndianUbyte(11);
1104 			writeBigEndianUbyte(2);
1105 			writeBigEndianFloat(this._additionalHearts.value);
1106 		}
1107 	}
1108 
1109 	public pure nothrow @property @safe @nogc uint score() {
1110 		return _score.value;
1111 	}
1112 
1113 	public pure nothrow @property @safe uint score(uint value) {
1114 		this._cached = false;
1115 		this._score.value = value;
1116 		if(!this._score.changed) {
1117 			this._score.changed = true;
1118 			this._changed ~= &this.encodeScore;
1119 		}
1120 		return value;
1121 	}
1122 
1123 	public pure nothrow @safe encodeScore(Buffer buffer) {
1124 		with(buffer) {
1125 			writeBigEndianUbyte(12);
1126 			writeBigEndianUbyte(1);
1127 			writeBytes(varuint.encode(this._score.value));
1128 		}
1129 	}
1130 
1131 	public pure nothrow @property @safe @nogc byte skinParts() {
1132 		return _skinParts.value;
1133 	}
1134 
1135 	public pure nothrow @property @safe byte skinParts(byte value) {
1136 		this._cached = false;
1137 		this._skinParts.value = value;
1138 		if(!this._skinParts.changed) {
1139 			this._skinParts.changed = true;
1140 			this._changed ~= &this.encodeSkinParts;
1141 		}
1142 		return value;
1143 	}
1144 
1145 	public pure nothrow @safe encodeSkinParts(Buffer buffer) {
1146 		with(buffer) {
1147 			writeBigEndianUbyte(13);
1148 			writeBigEndianUbyte(0);
1149 			writeBigEndianByte(this._skinParts.value);
1150 		}
1151 	}
1152 
1153 	public pure nothrow @property @safe bool cape() {
1154 		return _skinParts.value._0;
1155 	}
1156 
1157 	public pure nothrow @property @safe bool cape(bool value) {
1158 		_skinParts.value._0 = value;
1159 		return value;
1160 	}
1161 
1162 	public pure nothrow @property @safe bool jacket() {
1163 		return _skinParts.value._1;
1164 	}
1165 
1166 	public pure nothrow @property @safe bool jacket(bool value) {
1167 		_skinParts.value._1 = value;
1168 		return value;
1169 	}
1170 
1171 	public pure nothrow @property @safe bool leftSleeve() {
1172 		return _skinParts.value._2;
1173 	}
1174 
1175 	public pure nothrow @property @safe bool leftSleeve(bool value) {
1176 		_skinParts.value._2 = value;
1177 		return value;
1178 	}
1179 
1180 	public pure nothrow @property @safe bool rightSleeve() {
1181 		return _skinParts.value._3;
1182 	}
1183 
1184 	public pure nothrow @property @safe bool rightSleeve(bool value) {
1185 		_skinParts.value._3 = value;
1186 		return value;
1187 	}
1188 
1189 	public pure nothrow @property @safe bool leftPants() {
1190 		return _skinParts.value._4;
1191 	}
1192 
1193 	public pure nothrow @property @safe bool leftPants(bool value) {
1194 		_skinParts.value._4 = value;
1195 		return value;
1196 	}
1197 
1198 	public pure nothrow @property @safe bool rightPants() {
1199 		return _skinParts.value._5;
1200 	}
1201 
1202 	public pure nothrow @property @safe bool rightPants(bool value) {
1203 		_skinParts.value._5 = value;
1204 		return value;
1205 	}
1206 
1207 	public pure nothrow @property @safe bool hat() {
1208 		return _skinParts.value._6;
1209 	}
1210 
1211 	public pure nothrow @property @safe bool hat(bool value) {
1212 		_skinParts.value._6 = value;
1213 		return value;
1214 	}
1215 
1216 	public pure nothrow @property @safe @nogc byte mainHand() {
1217 		return _mainHand.value;
1218 	}
1219 
1220 	public pure nothrow @property @safe byte mainHand(byte value) {
1221 		this._cached = false;
1222 		this._mainHand.value = value;
1223 		if(!this._mainHand.changed) {
1224 			this._mainHand.changed = true;
1225 			this._changed ~= &this.encodeMainHand;
1226 		}
1227 		return value;
1228 	}
1229 
1230 	public pure nothrow @safe encodeMainHand(Buffer buffer) {
1231 		with(buffer) {
1232 			writeBigEndianUbyte(14);
1233 			writeBigEndianUbyte(0);
1234 			writeBigEndianByte(this._mainHand.value);
1235 		}
1236 	}
1237 
1238 	public pure nothrow @property @safe @nogc byte armorStandFlags() {
1239 		return _armorStandFlags.value;
1240 	}
1241 
1242 	public pure nothrow @property @safe byte armorStandFlags(byte value) {
1243 		this._cached = false;
1244 		this._armorStandFlags.value = value;
1245 		if(!this._armorStandFlags.changed) {
1246 			this._armorStandFlags.changed = true;
1247 			this._changed ~= &this.encodeArmorStandFlags;
1248 		}
1249 		return value;
1250 	}
1251 
1252 	public pure nothrow @safe encodeArmorStandFlags(Buffer buffer) {
1253 		with(buffer) {
1254 			writeBigEndianUbyte(11);
1255 			writeBigEndianUbyte(0);
1256 			writeBigEndianByte(this._armorStandFlags.value);
1257 		}
1258 	}
1259 
1260 	public pure nothrow @property @safe bool isSmall() {
1261 		return _armorStandFlags.value._0;
1262 	}
1263 
1264 	public pure nothrow @property @safe bool isSmall(bool value) {
1265 		_armorStandFlags.value._0 = value;
1266 		return value;
1267 	}
1268 
1269 	public pure nothrow @property @safe bool hasArms() {
1270 		return _armorStandFlags.value._2;
1271 	}
1272 
1273 	public pure nothrow @property @safe bool hasArms(bool value) {
1274 		_armorStandFlags.value._2 = value;
1275 		return value;
1276 	}
1277 
1278 	public pure nothrow @property @safe bool noBasePlate() {
1279 		return _armorStandFlags.value._3;
1280 	}
1281 
1282 	public pure nothrow @property @safe bool noBasePlate(bool value) {
1283 		_armorStandFlags.value._3 = value;
1284 		return value;
1285 	}
1286 
1287 	public pure nothrow @property @safe bool setMarker() {
1288 		return _armorStandFlags.value._4;
1289 	}
1290 
1291 	public pure nothrow @property @safe bool setMarker(bool value) {
1292 		_armorStandFlags.value._4 = value;
1293 		return value;
1294 	}
1295 
1296 	public pure nothrow @property @safe @nogc Tuple!(float, "x", float, "y", float, "z") headRotation() {
1297 		return _headRotation.value;
1298 	}
1299 
1300 	public pure nothrow @property @safe Tuple!(float, "x", float, "y", float, "z") headRotation(Tuple!(float, "x", float, "y", float, "z") value) {
1301 		this._cached = false;
1302 		this._headRotation.value = value;
1303 		if(!this._headRotation.changed) {
1304 			this._headRotation.changed = true;
1305 			this._changed ~= &this.encodeHeadRotation;
1306 		}
1307 		return value;
1308 	}
1309 
1310 	public pure nothrow @safe encodeHeadRotation(Buffer buffer) {
1311 		with(buffer) {
1312 			writeBigEndianUbyte(12);
1313 			writeBigEndianUbyte(7);
1314 			writeBigEndianFloat(this._headRotation.value.x); writeBigEndianFloat(this._headRotation.value.y); writeBigEndianFloat(this._headRotation.value.z);
1315 		}
1316 	}
1317 
1318 	public pure nothrow @property @safe @nogc Tuple!(float, "x", float, "y", float, "z") bodyRotation() {
1319 		return _bodyRotation.value;
1320 	}
1321 
1322 	public pure nothrow @property @safe Tuple!(float, "x", float, "y", float, "z") bodyRotation(Tuple!(float, "x", float, "y", float, "z") value) {
1323 		this._cached = false;
1324 		this._bodyRotation.value = value;
1325 		if(!this._bodyRotation.changed) {
1326 			this._bodyRotation.changed = true;
1327 			this._changed ~= &this.encodeBodyRotation;
1328 		}
1329 		return value;
1330 	}
1331 
1332 	public pure nothrow @safe encodeBodyRotation(Buffer buffer) {
1333 		with(buffer) {
1334 			writeBigEndianUbyte(13);
1335 			writeBigEndianUbyte(7);
1336 			writeBigEndianFloat(this._bodyRotation.value.x); writeBigEndianFloat(this._bodyRotation.value.y); writeBigEndianFloat(this._bodyRotation.value.z);
1337 		}
1338 	}
1339 
1340 	public pure nothrow @property @safe @nogc Tuple!(float, "x", float, "y", float, "z") leftArmRotation() {
1341 		return _leftArmRotation.value;
1342 	}
1343 
1344 	public pure nothrow @property @safe Tuple!(float, "x", float, "y", float, "z") leftArmRotation(Tuple!(float, "x", float, "y", float, "z") value) {
1345 		this._cached = false;
1346 		this._leftArmRotation.value = value;
1347 		if(!this._leftArmRotation.changed) {
1348 			this._leftArmRotation.changed = true;
1349 			this._changed ~= &this.encodeLeftArmRotation;
1350 		}
1351 		return value;
1352 	}
1353 
1354 	public pure nothrow @safe encodeLeftArmRotation(Buffer buffer) {
1355 		with(buffer) {
1356 			writeBigEndianUbyte(14);
1357 			writeBigEndianUbyte(7);
1358 			writeBigEndianFloat(this._leftArmRotation.value.x); writeBigEndianFloat(this._leftArmRotation.value.y); writeBigEndianFloat(this._leftArmRotation.value.z);
1359 		}
1360 	}
1361 
1362 	public pure nothrow @property @safe @nogc Tuple!(float, "x", float, "y", float, "z") rightArmRotation() {
1363 		return _rightArmRotation.value;
1364 	}
1365 
1366 	public pure nothrow @property @safe Tuple!(float, "x", float, "y", float, "z") rightArmRotation(Tuple!(float, "x", float, "y", float, "z") value) {
1367 		this._cached = false;
1368 		this._rightArmRotation.value = value;
1369 		if(!this._rightArmRotation.changed) {
1370 			this._rightArmRotation.changed = true;
1371 			this._changed ~= &this.encodeRightArmRotation;
1372 		}
1373 		return value;
1374 	}
1375 
1376 	public pure nothrow @safe encodeRightArmRotation(Buffer buffer) {
1377 		with(buffer) {
1378 			writeBigEndianUbyte(15);
1379 			writeBigEndianUbyte(7);
1380 			writeBigEndianFloat(this._rightArmRotation.value.x); writeBigEndianFloat(this._rightArmRotation.value.y); writeBigEndianFloat(this._rightArmRotation.value.z);
1381 		}
1382 	}
1383 
1384 	public pure nothrow @property @safe @nogc Tuple!(float, "x", float, "y", float, "z") leftLegRotation() {
1385 		return _leftLegRotation.value;
1386 	}
1387 
1388 	public pure nothrow @property @safe Tuple!(float, "x", float, "y", float, "z") leftLegRotation(Tuple!(float, "x", float, "y", float, "z") value) {
1389 		this._cached = false;
1390 		this._leftLegRotation.value = value;
1391 		if(!this._leftLegRotation.changed) {
1392 			this._leftLegRotation.changed = true;
1393 			this._changed ~= &this.encodeLeftLegRotation;
1394 		}
1395 		return value;
1396 	}
1397 
1398 	public pure nothrow @safe encodeLeftLegRotation(Buffer buffer) {
1399 		with(buffer) {
1400 			writeBigEndianUbyte(16);
1401 			writeBigEndianUbyte(7);
1402 			writeBigEndianFloat(this._leftLegRotation.value.x); writeBigEndianFloat(this._leftLegRotation.value.y); writeBigEndianFloat(this._leftLegRotation.value.z);
1403 		}
1404 	}
1405 
1406 	public pure nothrow @property @safe @nogc Tuple!(float, "x", float, "y", float, "z") rightLegRotation() {
1407 		return _rightLegRotation.value;
1408 	}
1409 
1410 	public pure nothrow @property @safe Tuple!(float, "x", float, "y", float, "z") rightLegRotation(Tuple!(float, "x", float, "y", float, "z") value) {
1411 		this._cached = false;
1412 		this._rightLegRotation.value = value;
1413 		if(!this._rightLegRotation.changed) {
1414 			this._rightLegRotation.changed = true;
1415 			this._changed ~= &this.encodeRightLegRotation;
1416 		}
1417 		return value;
1418 	}
1419 
1420 	public pure nothrow @safe encodeRightLegRotation(Buffer buffer) {
1421 		with(buffer) {
1422 			writeBigEndianUbyte(17);
1423 			writeBigEndianUbyte(7);
1424 			writeBigEndianFloat(this._rightLegRotation.value.x); writeBigEndianFloat(this._rightLegRotation.value.y); writeBigEndianFloat(this._rightLegRotation.value.z);
1425 		}
1426 	}
1427 
1428 	public pure nothrow @property @safe @nogc byte instentientFlags() {
1429 		return _instentientFlags.value;
1430 	}
1431 
1432 	public pure nothrow @property @safe byte instentientFlags(byte value) {
1433 		this._cached = false;
1434 		this._instentientFlags.value = value;
1435 		if(!this._instentientFlags.changed) {
1436 			this._instentientFlags.changed = true;
1437 			this._changed ~= &this.encodeInstentientFlags;
1438 		}
1439 		return value;
1440 	}
1441 
1442 	public pure nothrow @safe encodeInstentientFlags(Buffer buffer) {
1443 		with(buffer) {
1444 			writeBigEndianUbyte(11);
1445 			writeBigEndianUbyte(0);
1446 			writeBigEndianByte(this._instentientFlags.value);
1447 		}
1448 	}
1449 
1450 	public pure nothrow @property @safe bool noAi() {
1451 		return _instentientFlags.value._0;
1452 	}
1453 
1454 	public pure nothrow @property @safe bool noAi(bool value) {
1455 		_instentientFlags.value._0 = value;
1456 		return value;
1457 	}
1458 
1459 	public pure nothrow @property @safe bool leftHanded() {
1460 		return _instentientFlags.value._1;
1461 	}
1462 
1463 	public pure nothrow @property @safe bool leftHanded(bool value) {
1464 		_instentientFlags.value._1 = value;
1465 		return value;
1466 	}
1467 
1468 	public pure nothrow @property @safe @nogc byte hanging() {
1469 		return _hanging.value;
1470 	}
1471 
1472 	public pure nothrow @property @safe byte hanging(byte value) {
1473 		this._cached = false;
1474 		this._hanging.value = value;
1475 		if(!this._hanging.changed) {
1476 			this._hanging.changed = true;
1477 			this._changed ~= &this.encodeHanging;
1478 		}
1479 		return value;
1480 	}
1481 
1482 	public pure nothrow @safe encodeHanging(Buffer buffer) {
1483 		with(buffer) {
1484 			writeBigEndianUbyte(12);
1485 			writeBigEndianUbyte(0);
1486 			writeBigEndianByte(this._hanging.value);
1487 		}
1488 	}
1489 
1490 	public pure nothrow @property @safe @nogc bool baby() {
1491 		return _baby.value;
1492 	}
1493 
1494 	public pure nothrow @property @safe bool baby(bool value) {
1495 		this._cached = false;
1496 		this._baby.value = value;
1497 		if(!this._baby.changed) {
1498 			this._baby.changed = true;
1499 			this._changed ~= &this.encodeBaby;
1500 		}
1501 		return value;
1502 	}
1503 
1504 	public pure nothrow @safe encodeBaby(Buffer buffer) {
1505 		with(buffer) {
1506 			writeBigEndianUbyte(12);
1507 			writeBigEndianUbyte(6);
1508 			writeBigEndianBool(this._baby.value);
1509 		}
1510 	}
1511 
1512 	public pure nothrow @property @safe @nogc byte horseFlags() {
1513 		return _horseFlags.value;
1514 	}
1515 
1516 	public pure nothrow @property @safe byte horseFlags(byte value) {
1517 		this._cached = false;
1518 		this._horseFlags.value = value;
1519 		if(!this._horseFlags.changed) {
1520 			this._horseFlags.changed = true;
1521 			this._changed ~= &this.encodeHorseFlags;
1522 		}
1523 		return value;
1524 	}
1525 
1526 	public pure nothrow @safe encodeHorseFlags(Buffer buffer) {
1527 		with(buffer) {
1528 			writeBigEndianUbyte(13);
1529 			writeBigEndianUbyte(0);
1530 			writeBigEndianByte(this._horseFlags.value);
1531 		}
1532 	}
1533 
1534 	public pure nothrow @property @safe bool horseTamed() {
1535 		return _horseFlags.value._1;
1536 	}
1537 
1538 	public pure nothrow @property @safe bool horseTamed(bool value) {
1539 		_horseFlags.value._1 = value;
1540 		return value;
1541 	}
1542 
1543 	public pure nothrow @property @safe bool horseSaddled() {
1544 		return _horseFlags.value._2;
1545 	}
1546 
1547 	public pure nothrow @property @safe bool horseSaddled(bool value) {
1548 		_horseFlags.value._2 = value;
1549 		return value;
1550 	}
1551 
1552 	public pure nothrow @property @safe bool horseChested() {
1553 		return _horseFlags.value._3;
1554 	}
1555 
1556 	public pure nothrow @property @safe bool horseChested(bool value) {
1557 		_horseFlags.value._3 = value;
1558 		return value;
1559 	}
1560 
1561 	public pure nothrow @property @safe bool horseEating() {
1562 		return _horseFlags.value._5;
1563 	}
1564 
1565 	public pure nothrow @property @safe bool horseEating(bool value) {
1566 		_horseFlags.value._5 = value;
1567 		return value;
1568 	}
1569 
1570 	public pure nothrow @property @safe bool horseRearing() {
1571 		return _horseFlags.value._6;
1572 	}
1573 
1574 	public pure nothrow @property @safe bool horseRearing(bool value) {
1575 		_horseFlags.value._6 = value;
1576 		return value;
1577 	}
1578 
1579 	public pure nothrow @property @safe bool mouthOpen() {
1580 		return _horseFlags.value._7;
1581 	}
1582 
1583 	public pure nothrow @property @safe bool mouthOpen(bool value) {
1584 		_horseFlags.value._7 = value;
1585 		return value;
1586 	}
1587 
1588 	public pure nothrow @property @safe @nogc sul.protocol.java315.types.OptionalUuid ownerUuid() {
1589 		return _ownerUuid.value;
1590 	}
1591 
1592 	public pure nothrow @property @safe sul.protocol.java315.types.OptionalUuid ownerUuid(sul.protocol.java315.types.OptionalUuid value) {
1593 		this._cached = false;
1594 		this._ownerUuid.value = value;
1595 		if(!this._ownerUuid.changed) {
1596 			this._ownerUuid.changed = true;
1597 			this._changed ~= &this.encodeOwnerUuid;
1598 		}
1599 		return value;
1600 	}
1601 
1602 	public pure nothrow @safe encodeOwnerUuid(Buffer buffer) {
1603 		with(buffer) {
1604 			writeBigEndianUbyte(14);
1605 			writeBigEndianUbyte(11);
1606 			this._ownerUuid.value.encode(bufferInstance);
1607 		}
1608 	}
1609 
1610 	public pure nothrow @property @safe @nogc uint horseVariant() {
1611 		return _horseVariant.value;
1612 	}
1613 
1614 	public pure nothrow @property @safe uint horseVariant(uint value) {
1615 		this._cached = false;
1616 		this._horseVariant.value = value;
1617 		if(!this._horseVariant.changed) {
1618 			this._horseVariant.changed = true;
1619 			this._changed ~= &this.encodeHorseVariant;
1620 		}
1621 		return value;
1622 	}
1623 
1624 	public pure nothrow @safe encodeHorseVariant(Buffer buffer) {
1625 		with(buffer) {
1626 			writeBigEndianUbyte(15);
1627 			writeBigEndianUbyte(1);
1628 			writeBytes(varuint.encode(this._horseVariant.value));
1629 		}
1630 	}
1631 
1632 	public pure nothrow @property @safe @nogc uint horseArmor() {
1633 		return _horseArmor.value;
1634 	}
1635 
1636 	public pure nothrow @property @safe uint horseArmor(uint value) {
1637 		this._cached = false;
1638 		this._horseArmor.value = value;
1639 		if(!this._horseArmor.changed) {
1640 			this._horseArmor.changed = true;
1641 			this._changed ~= &this.encodeHorseArmor;
1642 		}
1643 		return value;
1644 	}
1645 
1646 	public pure nothrow @safe encodeHorseArmor(Buffer buffer) {
1647 		with(buffer) {
1648 			writeBigEndianUbyte(16);
1649 			writeBigEndianUbyte(1);
1650 			writeBytes(varuint.encode(this._horseArmor.value));
1651 		}
1652 	}
1653 
1654 	public pure nothrow @property @safe @nogc bool chested() {
1655 		return _chested.value;
1656 	}
1657 
1658 	public pure nothrow @property @safe bool chested(bool value) {
1659 		this._cached = false;
1660 		this._chested.value = value;
1661 		if(!this._chested.changed) {
1662 			this._chested.changed = true;
1663 			this._changed ~= &this.encodeChested;
1664 		}
1665 		return value;
1666 	}
1667 
1668 	public pure nothrow @safe encodeChested(Buffer buffer) {
1669 		with(buffer) {
1670 			writeBigEndianUbyte(15);
1671 			writeBigEndianUbyte(6);
1672 			writeBigEndianBool(this._chested.value);
1673 		}
1674 	}
1675 
1676 	public pure nothrow @property @safe @nogc uint llamaStrength() {
1677 		return _llamaStrength.value;
1678 	}
1679 
1680 	public pure nothrow @property @safe uint llamaStrength(uint value) {
1681 		this._cached = false;
1682 		this._llamaStrength.value = value;
1683 		if(!this._llamaStrength.changed) {
1684 			this._llamaStrength.changed = true;
1685 			this._changed ~= &this.encodeLlamaStrength;
1686 		}
1687 		return value;
1688 	}
1689 
1690 	public pure nothrow @safe encodeLlamaStrength(Buffer buffer) {
1691 		with(buffer) {
1692 			writeBigEndianUbyte(16);
1693 			writeBigEndianUbyte(1);
1694 			writeBytes(varuint.encode(this._llamaStrength.value));
1695 		}
1696 	}
1697 
1698 	public pure nothrow @property @safe @nogc uint carpetColor() {
1699 		return _carpetColor.value;
1700 	}
1701 
1702 	public pure nothrow @property @safe uint carpetColor(uint value) {
1703 		this._cached = false;
1704 		this._carpetColor.value = value;
1705 		if(!this._carpetColor.changed) {
1706 			this._carpetColor.changed = true;
1707 			this._changed ~= &this.encodeCarpetColor;
1708 		}
1709 		return value;
1710 	}
1711 
1712 	public pure nothrow @safe encodeCarpetColor(Buffer buffer) {
1713 		with(buffer) {
1714 			writeBigEndianUbyte(17);
1715 			writeBigEndianUbyte(1);
1716 			writeBytes(varuint.encode(this._carpetColor.value));
1717 		}
1718 	}
1719 
1720 	public pure nothrow @property @safe @nogc uint llamaVariant() {
1721 		return _llamaVariant.value;
1722 	}
1723 
1724 	public pure nothrow @property @safe uint llamaVariant(uint value) {
1725 		this._cached = false;
1726 		this._llamaVariant.value = value;
1727 		if(!this._llamaVariant.changed) {
1728 			this._llamaVariant.changed = true;
1729 			this._changed ~= &this.encodeLlamaVariant;
1730 		}
1731 		return value;
1732 	}
1733 
1734 	public pure nothrow @safe encodeLlamaVariant(Buffer buffer) {
1735 		with(buffer) {
1736 			writeBigEndianUbyte(18);
1737 			writeBigEndianUbyte(1);
1738 			writeBytes(varuint.encode(this._llamaVariant.value));
1739 		}
1740 	}
1741 
1742 	public pure nothrow @property @safe @nogc bool pigSaddled() {
1743 		return _pigSaddled.value;
1744 	}
1745 
1746 	public pure nothrow @property @safe bool pigSaddled(bool value) {
1747 		this._cached = false;
1748 		this._pigSaddled.value = value;
1749 		if(!this._pigSaddled.changed) {
1750 			this._pigSaddled.changed = true;
1751 			this._changed ~= &this.encodePigSaddled;
1752 		}
1753 		return value;
1754 	}
1755 
1756 	public pure nothrow @safe encodePigSaddled(Buffer buffer) {
1757 		with(buffer) {
1758 			writeBigEndianUbyte(13);
1759 			writeBigEndianUbyte(6);
1760 			writeBigEndianBool(this._pigSaddled.value);
1761 		}
1762 	}
1763 
1764 	public pure nothrow @property @safe @nogc uint rabbitVariant() {
1765 		return _rabbitVariant.value;
1766 	}
1767 
1768 	public pure nothrow @property @safe uint rabbitVariant(uint value) {
1769 		this._cached = false;
1770 		this._rabbitVariant.value = value;
1771 		if(!this._rabbitVariant.changed) {
1772 			this._rabbitVariant.changed = true;
1773 			this._changed ~= &this.encodeRabbitVariant;
1774 		}
1775 		return value;
1776 	}
1777 
1778 	public pure nothrow @safe encodeRabbitVariant(Buffer buffer) {
1779 		with(buffer) {
1780 			writeBigEndianUbyte(13);
1781 			writeBigEndianUbyte(1);
1782 			writeBytes(varuint.encode(this._rabbitVariant.value));
1783 		}
1784 	}
1785 
1786 	public pure nothrow @property @safe @nogc bool standingUp() {
1787 		return _standingUp.value;
1788 	}
1789 
1790 	public pure nothrow @property @safe bool standingUp(bool value) {
1791 		this._cached = false;
1792 		this._standingUp.value = value;
1793 		if(!this._standingUp.changed) {
1794 			this._standingUp.changed = true;
1795 			this._changed ~= &this.encodeStandingUp;
1796 		}
1797 		return value;
1798 	}
1799 
1800 	public pure nothrow @safe encodeStandingUp(Buffer buffer) {
1801 		with(buffer) {
1802 			writeBigEndianUbyte(13);
1803 			writeBigEndianUbyte(6);
1804 			writeBigEndianBool(this._standingUp.value);
1805 		}
1806 	}
1807 
1808 	public pure nothrow @property @safe @nogc byte sheepFlagsAndColor() {
1809 		return _sheepFlagsAndColor.value;
1810 	}
1811 
1812 	public pure nothrow @property @safe byte sheepFlagsAndColor(byte value) {
1813 		this._cached = false;
1814 		this._sheepFlagsAndColor.value = value;
1815 		if(!this._sheepFlagsAndColor.changed) {
1816 			this._sheepFlagsAndColor.changed = true;
1817 			this._changed ~= &this.encodeSheepFlagsAndColor;
1818 		}
1819 		return value;
1820 	}
1821 
1822 	public pure nothrow @safe encodeSheepFlagsAndColor(Buffer buffer) {
1823 		with(buffer) {
1824 			writeBigEndianUbyte(13);
1825 			writeBigEndianUbyte(0);
1826 			writeBigEndianByte(this._sheepFlagsAndColor.value);
1827 		}
1828 	}
1829 
1830 	public pure nothrow @property @safe bool sheared() {
1831 		return _sheepFlagsAndColor.value._7;
1832 	}
1833 
1834 	public pure nothrow @property @safe bool sheared(bool value) {
1835 		_sheepFlagsAndColor.value._7 = value;
1836 		return value;
1837 	}
1838 
1839 	public pure nothrow @property @safe @nogc byte tameableFlags() {
1840 		return _tameableFlags.value;
1841 	}
1842 
1843 	public pure nothrow @property @safe byte tameableFlags(byte value) {
1844 		this._cached = false;
1845 		this._tameableFlags.value = value;
1846 		if(!this._tameableFlags.changed) {
1847 			this._tameableFlags.changed = true;
1848 			this._changed ~= &this.encodeTameableFlags;
1849 		}
1850 		return value;
1851 	}
1852 
1853 	public pure nothrow @safe encodeTameableFlags(Buffer buffer) {
1854 		with(buffer) {
1855 			writeBigEndianUbyte(13);
1856 			writeBigEndianUbyte(0);
1857 			writeBigEndianByte(this._tameableFlags.value);
1858 		}
1859 	}
1860 
1861 	public pure nothrow @property @safe bool sitting() {
1862 		return _tameableFlags.value._0;
1863 	}
1864 
1865 	public pure nothrow @property @safe bool sitting(bool value) {
1866 		_tameableFlags.value._0 = value;
1867 		return value;
1868 	}
1869 
1870 	public pure nothrow @property @safe bool angry() {
1871 		return _tameableFlags.value._1;
1872 	}
1873 
1874 	public pure nothrow @property @safe bool angry(bool value) {
1875 		_tameableFlags.value._1 = value;
1876 		return value;
1877 	}
1878 
1879 	public pure nothrow @property @safe bool tamed() {
1880 		return _tameableFlags.value._2;
1881 	}
1882 
1883 	public pure nothrow @property @safe bool tamed(bool value) {
1884 		_tameableFlags.value._2 = value;
1885 		return value;
1886 	}
1887 
1888 	public pure nothrow @property @safe @nogc uint ocelotVariant() {
1889 		return _ocelotVariant.value;
1890 	}
1891 
1892 	public pure nothrow @property @safe uint ocelotVariant(uint value) {
1893 		this._cached = false;
1894 		this._ocelotVariant.value = value;
1895 		if(!this._ocelotVariant.changed) {
1896 			this._ocelotVariant.changed = true;
1897 			this._changed ~= &this.encodeOcelotVariant;
1898 		}
1899 		return value;
1900 	}
1901 
1902 	public pure nothrow @safe encodeOcelotVariant(Buffer buffer) {
1903 		with(buffer) {
1904 			writeBigEndianUbyte(15);
1905 			writeBigEndianUbyte(1);
1906 			writeBytes(varuint.encode(this._ocelotVariant.value));
1907 		}
1908 	}
1909 
1910 	public pure nothrow @property @safe @nogc float wolfHealth() {
1911 		return _wolfHealth.value;
1912 	}
1913 
1914 	public pure nothrow @property @safe float wolfHealth(float value) {
1915 		this._cached = false;
1916 		this._wolfHealth.value = value;
1917 		if(!this._wolfHealth.changed) {
1918 			this._wolfHealth.changed = true;
1919 			this._changed ~= &this.encodeWolfHealth;
1920 		}
1921 		return value;
1922 	}
1923 
1924 	public pure nothrow @safe encodeWolfHealth(Buffer buffer) {
1925 		with(buffer) {
1926 			writeBigEndianUbyte(15);
1927 			writeBigEndianUbyte(2);
1928 			writeBigEndianFloat(this._wolfHealth.value);
1929 		}
1930 	}
1931 
1932 	public pure nothrow @property @safe @nogc bool begging() {
1933 		return _begging.value;
1934 	}
1935 
1936 	public pure nothrow @property @safe bool begging(bool value) {
1937 		this._cached = false;
1938 		this._begging.value = value;
1939 		if(!this._begging.changed) {
1940 			this._begging.changed = true;
1941 			this._changed ~= &this.encodeBegging;
1942 		}
1943 		return value;
1944 	}
1945 
1946 	public pure nothrow @safe encodeBegging(Buffer buffer) {
1947 		with(buffer) {
1948 			writeBigEndianUbyte(16);
1949 			writeBigEndianUbyte(6);
1950 			writeBigEndianBool(this._begging.value);
1951 		}
1952 	}
1953 
1954 	public pure nothrow @property @safe @nogc uint collarColor() {
1955 		return _collarColor.value;
1956 	}
1957 
1958 	public pure nothrow @property @safe uint collarColor(uint value) {
1959 		this._cached = false;
1960 		this._collarColor.value = value;
1961 		if(!this._collarColor.changed) {
1962 			this._collarColor.changed = true;
1963 			this._changed ~= &this.encodeCollarColor;
1964 		}
1965 		return value;
1966 	}
1967 
1968 	public pure nothrow @safe encodeCollarColor(Buffer buffer) {
1969 		with(buffer) {
1970 			writeBigEndianUbyte(17);
1971 			writeBigEndianUbyte(1);
1972 			writeBytes(varuint.encode(this._collarColor.value));
1973 		}
1974 	}
1975 
1976 	public pure nothrow @property @safe @nogc uint profession() {
1977 		return _profession.value;
1978 	}
1979 
1980 	public pure nothrow @property @safe uint profession(uint value) {
1981 		this._cached = false;
1982 		this._profession.value = value;
1983 		if(!this._profession.changed) {
1984 			this._profession.changed = true;
1985 			this._changed ~= &this.encodeProfession;
1986 		}
1987 		return value;
1988 	}
1989 
1990 	public pure nothrow @safe encodeProfession(Buffer buffer) {
1991 		with(buffer) {
1992 			writeBigEndianUbyte(13);
1993 			writeBigEndianUbyte(1);
1994 			writeBytes(varuint.encode(this._profession.value));
1995 		}
1996 	}
1997 
1998 	public pure nothrow @property @safe @nogc byte createdByPlayer() {
1999 		return _createdByPlayer.value;
2000 	}
2001 
2002 	public pure nothrow @property @safe byte createdByPlayer(byte value) {
2003 		this._cached = false;
2004 		this._createdByPlayer.value = value;
2005 		if(!this._createdByPlayer.changed) {
2006 			this._createdByPlayer.changed = true;
2007 			this._changed ~= &this.encodeCreatedByPlayer;
2008 		}
2009 		return value;
2010 	}
2011 
2012 	public pure nothrow @safe encodeCreatedByPlayer(Buffer buffer) {
2013 		with(buffer) {
2014 			writeBigEndianUbyte(12);
2015 			writeBigEndianUbyte(0);
2016 			writeBigEndianByte(this._createdByPlayer.value);
2017 		}
2018 	}
2019 
2020 	public pure nothrow @property @safe @nogc byte snowmanFlags() {
2021 		return _snowmanFlags.value;
2022 	}
2023 
2024 	public pure nothrow @property @safe byte snowmanFlags(byte value) {
2025 		this._cached = false;
2026 		this._snowmanFlags.value = value;
2027 		if(!this._snowmanFlags.changed) {
2028 			this._snowmanFlags.changed = true;
2029 			this._changed ~= &this.encodeSnowmanFlags;
2030 		}
2031 		return value;
2032 	}
2033 
2034 	public pure nothrow @safe encodeSnowmanFlags(Buffer buffer) {
2035 		with(buffer) {
2036 			writeBigEndianUbyte(12);
2037 			writeBigEndianUbyte(0);
2038 			writeBigEndianByte(this._snowmanFlags.value);
2039 		}
2040 	}
2041 
2042 	public pure nothrow @property @safe bool pumpkinless() {
2043 		return _snowmanFlags.value._4;
2044 	}
2045 
2046 	public pure nothrow @property @safe bool pumpkinless(bool value) {
2047 		_snowmanFlags.value._4 = value;
2048 		return value;
2049 	}
2050 
2051 	public pure nothrow @property @safe @nogc uint shulkerDirection() {
2052 		return _shulkerDirection.value;
2053 	}
2054 
2055 	public pure nothrow @property @safe uint shulkerDirection(uint value) {
2056 		this._cached = false;
2057 		this._shulkerDirection.value = value;
2058 		if(!this._shulkerDirection.changed) {
2059 			this._shulkerDirection.changed = true;
2060 			this._changed ~= &this.encodeShulkerDirection;
2061 		}
2062 		return value;
2063 	}
2064 
2065 	public pure nothrow @safe encodeShulkerDirection(Buffer buffer) {
2066 		with(buffer) {
2067 			writeBigEndianUbyte(12);
2068 			writeBigEndianUbyte(10);
2069 			writeBytes(varuint.encode(this._shulkerDirection.value));
2070 		}
2071 	}
2072 
2073 	public pure nothrow @property @safe @nogc sul.protocol.java315.types.OptionalPosition shulkerAttachment() {
2074 		return _shulkerAttachment.value;
2075 	}
2076 
2077 	public pure nothrow @property @safe sul.protocol.java315.types.OptionalPosition shulkerAttachment(sul.protocol.java315.types.OptionalPosition value) {
2078 		this._cached = false;
2079 		this._shulkerAttachment.value = value;
2080 		if(!this._shulkerAttachment.changed) {
2081 			this._shulkerAttachment.changed = true;
2082 			this._changed ~= &this.encodeShulkerAttachment;
2083 		}
2084 		return value;
2085 	}
2086 
2087 	public pure nothrow @safe encodeShulkerAttachment(Buffer buffer) {
2088 		with(buffer) {
2089 			writeBigEndianUbyte(13);
2090 			writeBigEndianUbyte(9);
2091 			this._shulkerAttachment.value.encode(bufferInstance);
2092 		}
2093 	}
2094 
2095 	public pure nothrow @property @safe @nogc byte shulkerShieldHeight() {
2096 		return _shulkerShieldHeight.value;
2097 	}
2098 
2099 	public pure nothrow @property @safe byte shulkerShieldHeight(byte value) {
2100 		this._cached = false;
2101 		this._shulkerShieldHeight.value = value;
2102 		if(!this._shulkerShieldHeight.changed) {
2103 			this._shulkerShieldHeight.changed = true;
2104 			this._changed ~= &this.encodeShulkerShieldHeight;
2105 		}
2106 		return value;
2107 	}
2108 
2109 	public pure nothrow @safe encodeShulkerShieldHeight(Buffer buffer) {
2110 		with(buffer) {
2111 			writeBigEndianUbyte(14);
2112 			writeBigEndianUbyte(0);
2113 			writeBigEndianByte(this._shulkerShieldHeight.value);
2114 		}
2115 	}
2116 
2117 	public pure nothrow @property @safe @nogc byte shulkerColor() {
2118 		return _shulkerColor.value;
2119 	}
2120 
2121 	public pure nothrow @property @safe byte shulkerColor(byte value) {
2122 		this._cached = false;
2123 		this._shulkerColor.value = value;
2124 		if(!this._shulkerColor.changed) {
2125 			this._shulkerColor.changed = true;
2126 			this._changed ~= &this.encodeShulkerColor;
2127 		}
2128 		return value;
2129 	}
2130 
2131 	public pure nothrow @safe encodeShulkerColor(Buffer buffer) {
2132 		with(buffer) {
2133 			writeBigEndianUbyte(15);
2134 			writeBigEndianUbyte(0);
2135 			writeBigEndianByte(this._shulkerColor.value);
2136 		}
2137 	}
2138 
2139 	public pure nothrow @property @safe @nogc byte blazeOnFire() {
2140 		return _blazeOnFire.value;
2141 	}
2142 
2143 	public pure nothrow @property @safe byte blazeOnFire(byte value) {
2144 		this._cached = false;
2145 		this._blazeOnFire.value = value;
2146 		if(!this._blazeOnFire.changed) {
2147 			this._blazeOnFire.changed = true;
2148 			this._changed ~= &this.encodeBlazeOnFire;
2149 		}
2150 		return value;
2151 	}
2152 
2153 	public pure nothrow @safe encodeBlazeOnFire(Buffer buffer) {
2154 		with(buffer) {
2155 			writeBigEndianUbyte(12);
2156 			writeBigEndianUbyte(0);
2157 			writeBigEndianByte(this._blazeOnFire.value);
2158 		}
2159 	}
2160 
2161 	public pure nothrow @property @safe @nogc uint creeperState() {
2162 		return _creeperState.value;
2163 	}
2164 
2165 	public pure nothrow @property @safe uint creeperState(uint value) {
2166 		this._cached = false;
2167 		this._creeperState.value = value;
2168 		if(!this._creeperState.changed) {
2169 			this._creeperState.changed = true;
2170 			this._changed ~= &this.encodeCreeperState;
2171 		}
2172 		return value;
2173 	}
2174 
2175 	public pure nothrow @safe encodeCreeperState(Buffer buffer) {
2176 		with(buffer) {
2177 			writeBigEndianUbyte(12);
2178 			writeBigEndianUbyte(1);
2179 			writeBytes(varuint.encode(this._creeperState.value));
2180 		}
2181 	}
2182 
2183 	public pure nothrow @property @safe @nogc bool charged() {
2184 		return _charged.value;
2185 	}
2186 
2187 	public pure nothrow @property @safe bool charged(bool value) {
2188 		this._cached = false;
2189 		this._charged.value = value;
2190 		if(!this._charged.changed) {
2191 			this._charged.changed = true;
2192 			this._changed ~= &this.encodeCharged;
2193 		}
2194 		return value;
2195 	}
2196 
2197 	public pure nothrow @safe encodeCharged(Buffer buffer) {
2198 		with(buffer) {
2199 			writeBigEndianUbyte(13);
2200 			writeBigEndianUbyte(6);
2201 			writeBigEndianBool(this._charged.value);
2202 		}
2203 	}
2204 
2205 	public pure nothrow @property @safe @nogc bool ignited() {
2206 		return _ignited.value;
2207 	}
2208 
2209 	public pure nothrow @property @safe bool ignited(bool value) {
2210 		this._cached = false;
2211 		this._ignited.value = value;
2212 		if(!this._ignited.changed) {
2213 			this._ignited.changed = true;
2214 			this._changed ~= &this.encodeIgnited;
2215 		}
2216 		return value;
2217 	}
2218 
2219 	public pure nothrow @safe encodeIgnited(Buffer buffer) {
2220 		with(buffer) {
2221 			writeBigEndianUbyte(14);
2222 			writeBigEndianUbyte(6);
2223 			writeBigEndianBool(this._ignited.value);
2224 		}
2225 	}
2226 
2227 	public pure nothrow @property @safe @nogc bool rectractingSpikes() {
2228 		return _rectractingSpikes.value;
2229 	}
2230 
2231 	public pure nothrow @property @safe bool rectractingSpikes(bool value) {
2232 		this._cached = false;
2233 		this._rectractingSpikes.value = value;
2234 		if(!this._rectractingSpikes.changed) {
2235 			this._rectractingSpikes.changed = true;
2236 			this._changed ~= &this.encodeRectractingSpikes;
2237 		}
2238 		return value;
2239 	}
2240 
2241 	public pure nothrow @safe encodeRectractingSpikes(Buffer buffer) {
2242 		with(buffer) {
2243 			writeBigEndianUbyte(12);
2244 			writeBigEndianUbyte(6);
2245 			writeBigEndianBool(this._rectractingSpikes.value);
2246 		}
2247 	}
2248 
2249 	public pure nothrow @property @safe @nogc uint guardianTarget() {
2250 		return _guardianTarget.value;
2251 	}
2252 
2253 	public pure nothrow @property @safe uint guardianTarget(uint value) {
2254 		this._cached = false;
2255 		this._guardianTarget.value = value;
2256 		if(!this._guardianTarget.changed) {
2257 			this._guardianTarget.changed = true;
2258 			this._changed ~= &this.encodeGuardianTarget;
2259 		}
2260 		return value;
2261 	}
2262 
2263 	public pure nothrow @safe encodeGuardianTarget(Buffer buffer) {
2264 		with(buffer) {
2265 			writeBigEndianUbyte(13);
2266 			writeBigEndianUbyte(1);
2267 			writeBytes(varuint.encode(this._guardianTarget.value));
2268 		}
2269 	}
2270 
2271 	public pure nothrow @property @safe @nogc byte spell() {
2272 		return _spell.value;
2273 	}
2274 
2275 	public pure nothrow @property @safe byte spell(byte value) {
2276 		this._cached = false;
2277 		this._spell.value = value;
2278 		if(!this._spell.changed) {
2279 			this._spell.changed = true;
2280 			this._changed ~= &this.encodeSpell;
2281 		}
2282 		return value;
2283 	}
2284 
2285 	public pure nothrow @safe encodeSpell(Buffer buffer) {
2286 		with(buffer) {
2287 			writeBigEndianUbyte(12);
2288 			writeBigEndianUbyte(0);
2289 			writeBigEndianByte(this._spell.value);
2290 		}
2291 	}
2292 
2293 	public pure nothrow @property @safe @nogc byte attackMode() {
2294 		return _attackMode.value;
2295 	}
2296 
2297 	public pure nothrow @property @safe byte attackMode(byte value) {
2298 		this._cached = false;
2299 		this._attackMode.value = value;
2300 		if(!this._attackMode.changed) {
2301 			this._attackMode.changed = true;
2302 			this._changed ~= &this.encodeAttackMode;
2303 		}
2304 		return value;
2305 	}
2306 
2307 	public pure nothrow @safe encodeAttackMode(Buffer buffer) {
2308 		with(buffer) {
2309 			writeBigEndianUbyte(12);
2310 			writeBigEndianUbyte(0);
2311 			writeBigEndianByte(this._attackMode.value);
2312 		}
2313 	}
2314 
2315 	public pure nothrow @property @safe @nogc bool swingingArms() {
2316 		return _swingingArms.value;
2317 	}
2318 
2319 	public pure nothrow @property @safe bool swingingArms(bool value) {
2320 		this._cached = false;
2321 		this._swingingArms.value = value;
2322 		if(!this._swingingArms.changed) {
2323 			this._swingingArms.changed = true;
2324 			this._changed ~= &this.encodeSwingingArms;
2325 		}
2326 		return value;
2327 	}
2328 
2329 	public pure nothrow @safe encodeSwingingArms(Buffer buffer) {
2330 		with(buffer) {
2331 			writeBigEndianUbyte(12);
2332 			writeBigEndianUbyte(6);
2333 			writeBigEndianBool(this._swingingArms.value);
2334 		}
2335 	}
2336 
2337 	public pure nothrow @property @safe @nogc byte climbing() {
2338 		return _climbing.value;
2339 	}
2340 
2341 	public pure nothrow @property @safe byte climbing(byte value) {
2342 		this._cached = false;
2343 		this._climbing.value = value;
2344 		if(!this._climbing.changed) {
2345 			this._climbing.changed = true;
2346 			this._changed ~= &this.encodeClimbing;
2347 		}
2348 		return value;
2349 	}
2350 
2351 	public pure nothrow @safe encodeClimbing(Buffer buffer) {
2352 		with(buffer) {
2353 			writeBigEndianUbyte(12);
2354 			writeBigEndianUbyte(0);
2355 			writeBigEndianByte(this._climbing.value);
2356 		}
2357 	}
2358 
2359 	public pure nothrow @property @safe @nogc uint centerHeadTarget() {
2360 		return _centerHeadTarget.value;
2361 	}
2362 
2363 	public pure nothrow @property @safe uint centerHeadTarget(uint value) {
2364 		this._cached = false;
2365 		this._centerHeadTarget.value = value;
2366 		if(!this._centerHeadTarget.changed) {
2367 			this._centerHeadTarget.changed = true;
2368 			this._changed ~= &this.encodeCenterHeadTarget;
2369 		}
2370 		return value;
2371 	}
2372 
2373 	public pure nothrow @safe encodeCenterHeadTarget(Buffer buffer) {
2374 		with(buffer) {
2375 			writeBigEndianUbyte(12);
2376 			writeBigEndianUbyte(1);
2377 			writeBytes(varuint.encode(this._centerHeadTarget.value));
2378 		}
2379 	}
2380 
2381 	public pure nothrow @property @safe @nogc uint leftHeadTarget() {
2382 		return _leftHeadTarget.value;
2383 	}
2384 
2385 	public pure nothrow @property @safe uint leftHeadTarget(uint value) {
2386 		this._cached = false;
2387 		this._leftHeadTarget.value = value;
2388 		if(!this._leftHeadTarget.changed) {
2389 			this._leftHeadTarget.changed = true;
2390 			this._changed ~= &this.encodeLeftHeadTarget;
2391 		}
2392 		return value;
2393 	}
2394 
2395 	public pure nothrow @safe encodeLeftHeadTarget(Buffer buffer) {
2396 		with(buffer) {
2397 			writeBigEndianUbyte(13);
2398 			writeBigEndianUbyte(1);
2399 			writeBytes(varuint.encode(this._leftHeadTarget.value));
2400 		}
2401 	}
2402 
2403 	public pure nothrow @property @safe @nogc uint rightHeadTarget() {
2404 		return _rightHeadTarget.value;
2405 	}
2406 
2407 	public pure nothrow @property @safe uint rightHeadTarget(uint value) {
2408 		this._cached = false;
2409 		this._rightHeadTarget.value = value;
2410 		if(!this._rightHeadTarget.changed) {
2411 			this._rightHeadTarget.changed = true;
2412 			this._changed ~= &this.encodeRightHeadTarget;
2413 		}
2414 		return value;
2415 	}
2416 
2417 	public pure nothrow @safe encodeRightHeadTarget(Buffer buffer) {
2418 		with(buffer) {
2419 			writeBigEndianUbyte(14);
2420 			writeBigEndianUbyte(1);
2421 			writeBytes(varuint.encode(this._rightHeadTarget.value));
2422 		}
2423 	}
2424 
2425 	public pure nothrow @property @safe @nogc uint invulnerableTime() {
2426 		return _invulnerableTime.value;
2427 	}
2428 
2429 	public pure nothrow @property @safe uint invulnerableTime(uint value) {
2430 		this._cached = false;
2431 		this._invulnerableTime.value = value;
2432 		if(!this._invulnerableTime.changed) {
2433 			this._invulnerableTime.changed = true;
2434 			this._changed ~= &this.encodeInvulnerableTime;
2435 		}
2436 		return value;
2437 	}
2438 
2439 	public pure nothrow @safe encodeInvulnerableTime(Buffer buffer) {
2440 		with(buffer) {
2441 			writeBigEndianUbyte(15);
2442 			writeBigEndianUbyte(1);
2443 			writeBytes(varuint.encode(this._invulnerableTime.value));
2444 		}
2445 	}
2446 
2447 	public pure nothrow @property @safe @nogc bool handsHeldUp() {
2448 		return _handsHeldUp.value;
2449 	}
2450 
2451 	public pure nothrow @property @safe bool handsHeldUp(bool value) {
2452 		this._cached = false;
2453 		this._handsHeldUp.value = value;
2454 		if(!this._handsHeldUp.changed) {
2455 			this._handsHeldUp.changed = true;
2456 			this._changed ~= &this.encodeHandsHeldUp;
2457 		}
2458 		return value;
2459 	}
2460 
2461 	public pure nothrow @safe encodeHandsHeldUp(Buffer buffer) {
2462 		with(buffer) {
2463 			writeBigEndianUbyte(14);
2464 			writeBigEndianUbyte(6);
2465 			writeBigEndianBool(this._handsHeldUp.value);
2466 		}
2467 	}
2468 
2469 	public pure nothrow @property @safe @nogc bool converting() {
2470 		return _converting.value;
2471 	}
2472 
2473 	public pure nothrow @property @safe bool converting(bool value) {
2474 		this._cached = false;
2475 		this._converting.value = value;
2476 		if(!this._converting.changed) {
2477 			this._converting.changed = true;
2478 			this._changed ~= &this.encodeConverting;
2479 		}
2480 		return value;
2481 	}
2482 
2483 	public pure nothrow @safe encodeConverting(Buffer buffer) {
2484 		with(buffer) {
2485 			writeBigEndianUbyte(15);
2486 			writeBigEndianUbyte(6);
2487 			writeBigEndianBool(this._converting.value);
2488 		}
2489 	}
2490 
2491 	public pure nothrow @property @safe @nogc uint zombieVillagerProfession() {
2492 		return _zombieVillagerProfession.value;
2493 	}
2494 
2495 	public pure nothrow @property @safe uint zombieVillagerProfession(uint value) {
2496 		this._cached = false;
2497 		this._zombieVillagerProfession.value = value;
2498 		if(!this._zombieVillagerProfession.changed) {
2499 			this._zombieVillagerProfession.changed = true;
2500 			this._changed ~= &this.encodeZombieVillagerProfession;
2501 		}
2502 		return value;
2503 	}
2504 
2505 	public pure nothrow @safe encodeZombieVillagerProfession(Buffer buffer) {
2506 		with(buffer) {
2507 			writeBigEndianUbyte(16);
2508 			writeBigEndianUbyte(1);
2509 			writeBytes(varuint.encode(this._zombieVillagerProfession.value));
2510 		}
2511 	}
2512 
2513 	public pure nothrow @property @safe @nogc uint carriedBlock() {
2514 		return _carriedBlock.value;
2515 	}
2516 
2517 	public pure nothrow @property @safe uint carriedBlock(uint value) {
2518 		this._cached = false;
2519 		this._carriedBlock.value = value;
2520 		if(!this._carriedBlock.changed) {
2521 			this._carriedBlock.changed = true;
2522 			this._changed ~= &this.encodeCarriedBlock;
2523 		}
2524 		return value;
2525 	}
2526 
2527 	public pure nothrow @safe encodeCarriedBlock(Buffer buffer) {
2528 		with(buffer) {
2529 			writeBigEndianUbyte(12);
2530 			writeBigEndianUbyte(12);
2531 			writeBytes(varuint.encode(this._carriedBlock.value));
2532 		}
2533 	}
2534 
2535 	public pure nothrow @property @safe @nogc bool screaming() {
2536 		return _screaming.value;
2537 	}
2538 
2539 	public pure nothrow @property @safe bool screaming(bool value) {
2540 		this._cached = false;
2541 		this._screaming.value = value;
2542 		if(!this._screaming.changed) {
2543 			this._screaming.changed = true;
2544 			this._changed ~= &this.encodeScreaming;
2545 		}
2546 		return value;
2547 	}
2548 
2549 	public pure nothrow @safe encodeScreaming(Buffer buffer) {
2550 		with(buffer) {
2551 			writeBigEndianUbyte(13);
2552 			writeBigEndianUbyte(6);
2553 			writeBigEndianBool(this._screaming.value);
2554 		}
2555 	}
2556 
2557 	public pure nothrow @property @safe @nogc uint dragonPhase() {
2558 		return _dragonPhase.value;
2559 	}
2560 
2561 	public pure nothrow @property @safe uint dragonPhase(uint value) {
2562 		this._cached = false;
2563 		this._dragonPhase.value = value;
2564 		if(!this._dragonPhase.changed) {
2565 			this._dragonPhase.changed = true;
2566 			this._changed ~= &this.encodeDragonPhase;
2567 		}
2568 		return value;
2569 	}
2570 
2571 	public pure nothrow @safe encodeDragonPhase(Buffer buffer) {
2572 		with(buffer) {
2573 			writeBigEndianUbyte(12);
2574 			writeBigEndianUbyte(1);
2575 			writeBytes(varuint.encode(this._dragonPhase.value));
2576 		}
2577 	}
2578 
2579 	public pure nothrow @property @safe @nogc bool ghastAttacking() {
2580 		return _ghastAttacking.value;
2581 	}
2582 
2583 	public pure nothrow @property @safe bool ghastAttacking(bool value) {
2584 		this._cached = false;
2585 		this._ghastAttacking.value = value;
2586 		if(!this._ghastAttacking.changed) {
2587 			this._ghastAttacking.changed = true;
2588 			this._changed ~= &this.encodeGhastAttacking;
2589 		}
2590 		return value;
2591 	}
2592 
2593 	public pure nothrow @safe encodeGhastAttacking(Buffer buffer) {
2594 		with(buffer) {
2595 			writeBigEndianUbyte(12);
2596 			writeBigEndianUbyte(6);
2597 			writeBigEndianBool(this._ghastAttacking.value);
2598 		}
2599 	}
2600 
2601 	public pure nothrow @property @safe @nogc uint slimeSize() {
2602 		return _slimeSize.value;
2603 	}
2604 
2605 	public pure nothrow @property @safe uint slimeSize(uint value) {
2606 		this._cached = false;
2607 		this._slimeSize.value = value;
2608 		if(!this._slimeSize.changed) {
2609 			this._slimeSize.changed = true;
2610 			this._changed ~= &this.encodeSlimeSize;
2611 		}
2612 		return value;
2613 	}
2614 
2615 	public pure nothrow @safe encodeSlimeSize(Buffer buffer) {
2616 		with(buffer) {
2617 			writeBigEndianUbyte(12);
2618 			writeBigEndianUbyte(1);
2619 			writeBytes(varuint.encode(this._slimeSize.value));
2620 		}
2621 	}
2622 
2623 	public pure nothrow @property @safe @nogc uint shakingPower() {
2624 		return _shakingPower.value;
2625 	}
2626 
2627 	public pure nothrow @property @safe uint shakingPower(uint value) {
2628 		this._cached = false;
2629 		this._shakingPower.value = value;
2630 		if(!this._shakingPower.changed) {
2631 			this._shakingPower.changed = true;
2632 			this._changed ~= &this.encodeShakingPower;
2633 		}
2634 		return value;
2635 	}
2636 
2637 	public pure nothrow @safe encodeShakingPower(Buffer buffer) {
2638 		with(buffer) {
2639 			writeBigEndianUbyte(6);
2640 			writeBigEndianUbyte(1);
2641 			writeBytes(varuint.encode(this._shakingPower.value));
2642 		}
2643 	}
2644 
2645 	public pure nothrow @property @safe @nogc uint shakingDirection() {
2646 		return _shakingDirection.value;
2647 	}
2648 
2649 	public pure nothrow @property @safe uint shakingDirection(uint value) {
2650 		this._cached = false;
2651 		this._shakingDirection.value = value;
2652 		if(!this._shakingDirection.changed) {
2653 			this._shakingDirection.changed = true;
2654 			this._changed ~= &this.encodeShakingDirection;
2655 		}
2656 		return value;
2657 	}
2658 
2659 	public pure nothrow @safe encodeShakingDirection(Buffer buffer) {
2660 		with(buffer) {
2661 			writeBigEndianUbyte(7);
2662 			writeBigEndianUbyte(1);
2663 			writeBytes(varuint.encode(this._shakingDirection.value));
2664 		}
2665 	}
2666 
2667 	public pure nothrow @property @safe @nogc float shakingMultiplier() {
2668 		return _shakingMultiplier.value;
2669 	}
2670 
2671 	public pure nothrow @property @safe float shakingMultiplier(float value) {
2672 		this._cached = false;
2673 		this._shakingMultiplier.value = value;
2674 		if(!this._shakingMultiplier.changed) {
2675 			this._shakingMultiplier.changed = true;
2676 			this._changed ~= &this.encodeShakingMultiplier;
2677 		}
2678 		return value;
2679 	}
2680 
2681 	public pure nothrow @safe encodeShakingMultiplier(Buffer buffer) {
2682 		with(buffer) {
2683 			writeBigEndianUbyte(8);
2684 			writeBigEndianUbyte(2);
2685 			writeBigEndianFloat(this._shakingMultiplier.value);
2686 		}
2687 	}
2688 
2689 	public pure nothrow @property @safe @nogc uint minecartBlock() {
2690 		return _minecartBlock.value;
2691 	}
2692 
2693 	public pure nothrow @property @safe uint minecartBlock(uint value) {
2694 		this._cached = false;
2695 		this._minecartBlock.value = value;
2696 		if(!this._minecartBlock.changed) {
2697 			this._minecartBlock.changed = true;
2698 			this._changed ~= &this.encodeMinecartBlock;
2699 		}
2700 		return value;
2701 	}
2702 
2703 	public pure nothrow @safe encodeMinecartBlock(Buffer buffer) {
2704 		with(buffer) {
2705 			writeBigEndianUbyte(9);
2706 			writeBigEndianUbyte(1);
2707 			writeBytes(varuint.encode(this._minecartBlock.value));
2708 		}
2709 	}
2710 
2711 	public pure nothrow @property @safe @nogc uint minecartBlockPosition() {
2712 		return _minecartBlockPosition.value;
2713 	}
2714 
2715 	public pure nothrow @property @safe uint minecartBlockPosition(uint value) {
2716 		this._cached = false;
2717 		this._minecartBlockPosition.value = value;
2718 		if(!this._minecartBlockPosition.changed) {
2719 			this._minecartBlockPosition.changed = true;
2720 			this._changed ~= &this.encodeMinecartBlockPosition;
2721 		}
2722 		return value;
2723 	}
2724 
2725 	public pure nothrow @safe encodeMinecartBlockPosition(Buffer buffer) {
2726 		with(buffer) {
2727 			writeBigEndianUbyte(10);
2728 			writeBigEndianUbyte(1);
2729 			writeBytes(varuint.encode(this._minecartBlockPosition.value));
2730 		}
2731 	}
2732 
2733 	public pure nothrow @property @safe @nogc bool minecartCustomBlock() {
2734 		return _minecartCustomBlock.value;
2735 	}
2736 
2737 	public pure nothrow @property @safe bool minecartCustomBlock(bool value) {
2738 		this._cached = false;
2739 		this._minecartCustomBlock.value = value;
2740 		if(!this._minecartCustomBlock.changed) {
2741 			this._minecartCustomBlock.changed = true;
2742 			this._changed ~= &this.encodeMinecartCustomBlock;
2743 		}
2744 		return value;
2745 	}
2746 
2747 	public pure nothrow @safe encodeMinecartCustomBlock(Buffer buffer) {
2748 		with(buffer) {
2749 			writeBigEndianUbyte(11);
2750 			writeBigEndianUbyte(6);
2751 			writeBigEndianBool(this._minecartCustomBlock.value);
2752 		}
2753 	}
2754 
2755 	public pure nothrow @property @safe @nogc bool furnacePowered() {
2756 		return _furnacePowered.value;
2757 	}
2758 
2759 	public pure nothrow @property @safe bool furnacePowered(bool value) {
2760 		this._cached = false;
2761 		this._furnacePowered.value = value;
2762 		if(!this._furnacePowered.changed) {
2763 			this._furnacePowered.changed = true;
2764 			this._changed ~= &this.encodeFurnacePowered;
2765 		}
2766 		return value;
2767 	}
2768 
2769 	public pure nothrow @safe encodeFurnacePowered(Buffer buffer) {
2770 		with(buffer) {
2771 			writeBigEndianUbyte(12);
2772 			writeBigEndianUbyte(6);
2773 			writeBigEndianBool(this._furnacePowered.value);
2774 		}
2775 	}
2776 
2777 	public pure nothrow @property @safe @nogc string command() {
2778 		return _command.value;
2779 	}
2780 
2781 	public pure nothrow @property @safe string command(string value) {
2782 		this._cached = false;
2783 		this._command.value = value;
2784 		if(!this._command.changed) {
2785 			this._command.changed = true;
2786 			this._changed ~= &this.encodeCommand;
2787 		}
2788 		return value;
2789 	}
2790 
2791 	public pure nothrow @safe encodeCommand(Buffer buffer) {
2792 		with(buffer) {
2793 			writeBigEndianUbyte(12);
2794 			writeBigEndianUbyte(3);
2795 			writeBytes(varuint.encode(cast(uint)this._command.value.length)); writeString(this._command.value);
2796 		}
2797 	}
2798 
2799 	public pure nothrow @property @safe @nogc string lastOutput() {
2800 		return _lastOutput.value;
2801 	}
2802 
2803 	public pure nothrow @property @safe string lastOutput(string value) {
2804 		this._cached = false;
2805 		this._lastOutput.value = value;
2806 		if(!this._lastOutput.changed) {
2807 			this._lastOutput.changed = true;
2808 			this._changed ~= &this.encodeLastOutput;
2809 		}
2810 		return value;
2811 	}
2812 
2813 	public pure nothrow @safe encodeLastOutput(Buffer buffer) {
2814 		with(buffer) {
2815 			writeBigEndianUbyte(13);
2816 			writeBigEndianUbyte(4);
2817 			writeBytes(varuint.encode(cast(uint)this._lastOutput.value.length)); writeString(this._lastOutput.value);
2818 		}
2819 	}
2820 
2821 	public pure nothrow @property @safe @nogc uint fuseTime() {
2822 		return _fuseTime.value;
2823 	}
2824 
2825 	public pure nothrow @property @safe uint fuseTime(uint value) {
2826 		this._cached = false;
2827 		this._fuseTime.value = value;
2828 		if(!this._fuseTime.changed) {
2829 			this._fuseTime.changed = true;
2830 			this._changed ~= &this.encodeFuseTime;
2831 		}
2832 		return value;
2833 	}
2834 
2835 	public pure nothrow @safe encodeFuseTime(Buffer buffer) {
2836 		with(buffer) {
2837 			writeBigEndianUbyte(6);
2838 			writeBigEndianUbyte(1);
2839 			writeBytes(varuint.encode(this._fuseTime.value));
2840 		}
2841 	}
2842 
2843 	public pure nothrow @safe encode(Buffer buffer) {
2844 		with(buffer) {
2845 			if(this._cached) {
2846 				buffer.writeBytes(this._cache);
2847 			} else {
2848 				immutable start = buffer._buffer.length;
2849 				foreach(del ; this._changed) del(buffer);
2850 				writeBigEndianUbyte(255);
2851 				this._cached = true;
2852 				this._cache = buffer._buffer[start..$];
2853 			}
2854 		}
2855 	}
2856 
2857 	public static pure nothrow @safe Metadata decode(Buffer buffer) {
2858 		auto metadata = new Metadata();
2859 		with(buffer) {
2860 			ubyte id;
2861 			while(_index < _buffer.length && (id=readBigEndianUbyte()) != 255) {
2862 				switch(readBigEndianUbyte()) {
2863 					case 0:
2864 						byte _0;
2865 						_0=readBigEndianByte();
2866 						metadata.decoded ~= DecodedMetadata.fromByte(id, _0);
2867 						break;
2868 					case 1:
2869 						uint _1;
2870 						_1=varuint.decode(_buffer, &_index);
2871 						metadata.decoded ~= DecodedMetadata.fromInt(id, _1);
2872 						break;
2873 					case 2:
2874 						float _2;
2875 						_2=readBigEndianFloat();
2876 						metadata.decoded ~= DecodedMetadata.fromFloat(id, _2);
2877 						break;
2878 					case 3:
2879 						string _3;
2880 						uint xm=varuint.decode(_buffer, &_index); _3=readString(xm);
2881 						metadata.decoded ~= DecodedMetadata.fromString(id, _3);
2882 						break;
2883 					case 4:
2884 						string _4;
2885 						uint xq=varuint.decode(_buffer, &_index); _4=readString(xq);
2886 						metadata.decoded ~= DecodedMetadata.fromChat(id, _4);
2887 						break;
2888 					case 5:
2889 						sul.protocol.java315.types.Slot _5;
2890 						_5.decode(bufferInstance);
2891 						metadata.decoded ~= DecodedMetadata.fromSlot(id, _5);
2892 						break;
2893 					case 6:
2894 						bool _6;
2895 						_6=readBigEndianBool();
2896 						metadata.decoded ~= DecodedMetadata.fromBool(id, _6);
2897 						break;
2898 					case 7:
2899 						Tuple!(float, "x", float, "y", float, "z") _7;
2900 						_7.x=readBigEndianFloat(); _7.y=readBigEndianFloat(); _7.z=readBigEndianFloat();
2901 						metadata.decoded ~= DecodedMetadata.fromRotation(id, _7);
2902 						break;
2903 					case 8:
2904 						ulong _8;
2905 						_8=readBigEndianUlong();
2906 						metadata.decoded ~= DecodedMetadata.fromPosition(id, _8);
2907 						break;
2908 					case 9:
2909 						sul.protocol.java315.types.OptionalPosition _9;
2910 						_9.decode(bufferInstance);
2911 						metadata.decoded ~= DecodedMetadata.fromOptionalPosition(id, _9);
2912 						break;
2913 					case 10:
2914 						uint _10;
2915 						_10=varuint.decode(_buffer, &_index);
2916 						metadata.decoded ~= DecodedMetadata.fromDirection(id, _10);
2917 						break;
2918 					case 11:
2919 						sul.protocol.java315.types.OptionalUuid _11;
2920 						_11.decode(bufferInstance);
2921 						metadata.decoded ~= DecodedMetadata.fromUuid(id, _11);
2922 						break;
2923 					case 12:
2924 						uint _12;
2925 						_12=varuint.decode(_buffer, &_index);
2926 						metadata.decoded ~= DecodedMetadata.fromBlock(id, _12);
2927 						break;
2928 					default:
2929 						break;
2930 				}
2931 			}
2932 		}
2933 		return metadata;
2934 	}
2935 
2936 }
2937 
2938 class DecodedMetadata {
2939 
2940 	public immutable ubyte id;
2941 	public immutable ubyte type;
2942 
2943 	union {
2944 		byte byte_;
2945 		uint int_;
2946 		float float_;
2947 		string string_;
2948 		string chat;
2949 		sul.protocol.java315.types.Slot slot;
2950 		bool bool_;
2951 		Tuple!(float, "x", float, "y", float, "z") rotation;
2952 		ulong position;
2953 		sul.protocol.java315.types.OptionalPosition optional_position;
2954 		uint direction;
2955 		sul.protocol.java315.types.OptionalUuid uuid;
2956 		uint block;
2957 	}
2958 
2959 	private pure nothrow @safe @nogc this(ubyte id, ubyte type) {
2960 		this.id = id;
2961 		this.type = type;
2962 	}
2963 
2964 	public static pure nothrow @trusted DecodedMetadata fromByte(ubyte id, byte value) {
2965 		auto ret = new DecodedMetadata(id, 0);
2966 		ret.byte_ = value;
2967 		return ret;
2968 	}
2969 
2970 	public static pure nothrow @trusted DecodedMetadata fromInt(ubyte id, uint value) {
2971 		auto ret = new DecodedMetadata(id, 1);
2972 		ret.int_ = value;
2973 		return ret;
2974 	}
2975 
2976 	public static pure nothrow @trusted DecodedMetadata fromFloat(ubyte id, float value) {
2977 		auto ret = new DecodedMetadata(id, 2);
2978 		ret.float_ = value;
2979 		return ret;
2980 	}
2981 
2982 	public static pure nothrow @trusted DecodedMetadata fromString(ubyte id, string value) {
2983 		auto ret = new DecodedMetadata(id, 3);
2984 		ret.string_ = value;
2985 		return ret;
2986 	}
2987 
2988 	public static pure nothrow @trusted DecodedMetadata fromChat(ubyte id, string value) {
2989 		auto ret = new DecodedMetadata(id, 4);
2990 		ret.chat = value;
2991 		return ret;
2992 	}
2993 
2994 	public static pure nothrow @trusted DecodedMetadata fromSlot(ubyte id, sul.protocol.java315.types.Slot value) {
2995 		auto ret = new DecodedMetadata(id, 5);
2996 		ret.slot = value;
2997 		return ret;
2998 	}
2999 
3000 	public static pure nothrow @trusted DecodedMetadata fromBool(ubyte id, bool value) {
3001 		auto ret = new DecodedMetadata(id, 6);
3002 		ret.bool_ = value;
3003 		return ret;
3004 	}
3005 
3006 	public static pure nothrow @trusted DecodedMetadata fromRotation(ubyte id, Tuple!(float, "x", float, "y", float, "z") value) {
3007 		auto ret = new DecodedMetadata(id, 7);
3008 		ret.rotation = value;
3009 		return ret;
3010 	}
3011 
3012 	public static pure nothrow @trusted DecodedMetadata fromPosition(ubyte id, ulong value) {
3013 		auto ret = new DecodedMetadata(id, 8);
3014 		ret.position = value;
3015 		return ret;
3016 	}
3017 
3018 	public static pure nothrow @trusted DecodedMetadata fromOptionalPosition(ubyte id, sul.protocol.java315.types.OptionalPosition value) {
3019 		auto ret = new DecodedMetadata(id, 9);
3020 		ret.optional_position = value;
3021 		return ret;
3022 	}
3023 
3024 	public static pure nothrow @trusted DecodedMetadata fromDirection(ubyte id, uint value) {
3025 		auto ret = new DecodedMetadata(id, 10);
3026 		ret.direction = value;
3027 		return ret;
3028 	}
3029 
3030 	public static pure nothrow @trusted DecodedMetadata fromUuid(ubyte id, sul.protocol.java315.types.OptionalUuid value) {
3031 		auto ret = new DecodedMetadata(id, 11);
3032 		ret.uuid = value;
3033 		return ret;
3034 	}
3035 
3036 	public static pure nothrow @trusted DecodedMetadata fromBlock(ubyte id, uint value) {
3037 		auto ret = new DecodedMetadata(id, 12);
3038 		ret.block = value;
3039 		return ret;
3040 	}
3041 
3042 }