1 /* 2 * This file has been automatically generated by Soupply and released under the MIT license. 3 * Generated from data/bedrock261.xml 4 */ 5 module soupply.bedrock261.protocol.play; 6 7 static import std.conv; 8 import std.typetuple : TypeTuple; 9 import xpacket; 10 11 import soupply.util; 12 import soupply.bedrock261.metadata : Metadata; 13 import soupply.bedrock261.packet : Bedrock261Packet; 14 15 static import soupply.bedrock261.types; 16 17 alias Packets = TypeTuple!(Login, PlayStatus, ServerToClientHandshake, ClientToServerHandshake, Disconnect, ResourcePacksInfo, ResourcePacksStackPacket, ResourcePackClientResponse, Text, SetTime, StartGame, AddPlayer, AddEntity, RemoveEntity, AddItemEntity, AddHangingEntity, TakeItemEntity, MoveEntity, MovePlayer, RiderJump, UpdateBlock, AddPainting, Explode, LevelSoundEvent, LevelEvent, BlockEvent, EntityEvent, MobEffect, UpdateAttributes, InventoryTransaction, MobEquipment, MobArmorEquipment, Interact, BlockPickRequest, EntityPickRequest, PlayerAction, EntityFall, HurtArmor, SetEntityData, SetEntityMotion, SetEntityLink, SetHealth, SetSpawnPosition, Animate, Respawn, ContainerOpen, ContainerClose, PlayerHotbar, InventoryContent, InventorySlot, ContainerSetData, CraftingData, CraftingEvent, GuiDataPickItem, AdventureSettings, BlockEntityData, PlayerInput, FullChunkData, SetCommandsEnabled, SetDifficulty, ChangeDimension, SetPlayerGameType, PlayerList, SimpleEvent, Event, SpawnExperienceOrb, ClientboundMapItemData, MapInfoRequest, RequestChunkRadius, ChunkRadiusUpdated, ItemFrameDropItem, GameRulesChanged, Camera, BossEvent, ShowCredits, AvailableCommands, CommandRequest, CommandBlockUpdate, CommandOutput, UpdateTrade, UpdateEquip, ResourcePackDataInfo, ResourcePackChunkData, ResourcePackChunkRequest, Transfer, PlaySound, StopSound, SetTitle, AddBehaviorTree, StructureBlockUpdate, ShowStoreOffer, PurchaseReceipt, PlayerSkin, SubClientLogin, WSConnect, SetLastHurtBy, BookEdit, NpcRequest, PhotoTransfer, ModalFormRequest, ModalFormResponse, ServerSettingsRequest, ServerSettingsResponse, ShowProfile, SetDefaultGameType, RemoveObject, SetDisplayObjective, SetScore, LabTable, UpdateBlockSynced); 18 19 class Login : Bedrock261Packet 20 { 21 22 enum uint ID = 1; 23 24 enum bool CLIENTBOUND = false; 25 enum bool SERVERBOUND = true; 26 27 enum string[] __fields = ["protocol", "body_"]; 28 29 @BigEndian uint protocol = 261; 30 soupply.bedrock261.types.LoginBody body_; 31 32 this() pure nothrow @safe @nogc {} 33 34 this(uint protocol, soupply.bedrock261.types.LoginBody body_=soupply.bedrock261.types.LoginBody.init) pure nothrow @safe @nogc 35 { 36 this.protocol = protocol; 37 this.body_ = body_; 38 } 39 40 mixin Make; 41 42 public static typeof(this) fromBuffer(ubyte[] buffer) 43 { 44 Login ret = new Login(); 45 ret.decode(buffer); 46 return ret; 47 } 48 49 override string toString() 50 { 51 return "Login(protocol: " ~ std.conv.to!string(this.protocol) ~ ", body_: " ~ std.conv.to!string(this.body_) ~ ")"; 52 } 53 54 } 55 56 class PlayStatus : Bedrock261Packet 57 { 58 59 enum uint ID = 2; 60 61 enum bool CLIENTBOUND = true; 62 enum bool SERVERBOUND = false; 63 64 // status 65 enum uint OK = 0; 66 enum uint OUTDATED_CLIENT = 1; 67 enum uint OUTDATED_SERVER = 2; 68 enum uint SPAWNED = 3; 69 enum uint INVALID_TENANT = 4; 70 enum uint EDITION_MISMATCH_EDU_TO_VANILLA = 5; 71 enum uint EDITION_MISMATCH_VANILLA_TO_EDU = 6; 72 enum uint SERVER_FULL = 7; 73 74 enum string[] __fields = ["status"]; 75 76 @BigEndian uint status; 77 78 this() pure nothrow @safe @nogc {} 79 80 this(uint status) pure nothrow @safe @nogc 81 { 82 this.status = status; 83 } 84 85 mixin Make; 86 87 public static typeof(this) fromBuffer(ubyte[] buffer) 88 { 89 PlayStatus ret = new PlayStatus(); 90 ret.decode(buffer); 91 return ret; 92 } 93 94 override string toString() 95 { 96 return "PlayStatus(status: " ~ std.conv.to!string(this.status) ~ ")"; 97 } 98 99 } 100 101 class ServerToClientHandshake : Bedrock261Packet 102 { 103 104 enum uint ID = 3; 105 106 enum bool CLIENTBOUND = true; 107 enum bool SERVERBOUND = false; 108 109 enum string[] __fields = ["serverPublicKey", "token"]; 110 111 string serverPublicKey; 112 ubyte[] token; 113 114 this() pure nothrow @safe @nogc {} 115 116 this(string serverPublicKey, ubyte[] token=(ubyte[]).init) pure nothrow @safe @nogc 117 { 118 this.serverPublicKey = serverPublicKey; 119 this.token = token; 120 } 121 122 mixin Make; 123 124 public static typeof(this) fromBuffer(ubyte[] buffer) 125 { 126 ServerToClientHandshake ret = new ServerToClientHandshake(); 127 ret.decode(buffer); 128 return ret; 129 } 130 131 override string toString() 132 { 133 return "ServerToClientHandshake(serverPublicKey: " ~ std.conv.to!string(this.serverPublicKey) ~ ", token: " ~ std.conv.to!string(this.token) ~ ")"; 134 } 135 136 } 137 138 class ClientToServerHandshake : Bedrock261Packet 139 { 140 141 enum uint ID = 4; 142 143 enum bool CLIENTBOUND = false; 144 enum bool SERVERBOUND = true; 145 146 enum string[] __fields = []; 147 148 mixin Make; 149 150 public static typeof(this) fromBuffer(ubyte[] buffer) 151 { 152 ClientToServerHandshake ret = new ClientToServerHandshake(); 153 ret.decode(buffer); 154 return ret; 155 } 156 157 override string toString() 158 { 159 return "ClientToServerHandshake()"; 160 } 161 162 } 163 164 class Disconnect : Bedrock261Packet 165 { 166 167 enum uint ID = 5; 168 169 enum bool CLIENTBOUND = true; 170 enum bool SERVERBOUND = false; 171 172 enum string[] __fields = ["hideDisconnectionScreen", "message"]; 173 174 bool hideDisconnectionScreen; 175 @Condition("hideDisconnectionScreen==false") string message; 176 177 this() pure nothrow @safe @nogc {} 178 179 this(bool hideDisconnectionScreen, string message=string.init) pure nothrow @safe @nogc 180 { 181 this.hideDisconnectionScreen = hideDisconnectionScreen; 182 this.message = message; 183 } 184 185 mixin Make; 186 187 public static typeof(this) fromBuffer(ubyte[] buffer) 188 { 189 Disconnect ret = new Disconnect(); 190 ret.decode(buffer); 191 return ret; 192 } 193 194 override string toString() 195 { 196 return "Disconnect(hideDisconnectionScreen: " ~ std.conv.to!string(this.hideDisconnectionScreen) ~ ", message: " ~ std.conv.to!string(this.message) ~ ")"; 197 } 198 199 } 200 201 class ResourcePacksInfo : Bedrock261Packet 202 { 203 204 enum uint ID = 6; 205 206 enum bool CLIENTBOUND = true; 207 enum bool SERVERBOUND = false; 208 209 enum string[] __fields = ["mustAccept", "behaviourPacks", "resourcePacks"]; 210 211 bool mustAccept; 212 @Length!ushort soupply.bedrock261.types.PackWithSize[] behaviourPacks; 213 @Length!ushort soupply.bedrock261.types.PackWithSize[] resourcePacks; 214 215 this() pure nothrow @safe @nogc {} 216 217 this(bool mustAccept, soupply.bedrock261.types.PackWithSize[] behaviourPacks=(soupply.bedrock261.types.PackWithSize[]).init, soupply.bedrock261.types.PackWithSize[] resourcePacks=(soupply.bedrock261.types.PackWithSize[]).init) pure nothrow @safe @nogc 218 { 219 this.mustAccept = mustAccept; 220 this.behaviourPacks = behaviourPacks; 221 this.resourcePacks = resourcePacks; 222 } 223 224 mixin Make; 225 226 public static typeof(this) fromBuffer(ubyte[] buffer) 227 { 228 ResourcePacksInfo ret = new ResourcePacksInfo(); 229 ret.decode(buffer); 230 return ret; 231 } 232 233 override string toString() 234 { 235 return "ResourcePacksInfo(mustAccept: " ~ std.conv.to!string(this.mustAccept) ~ ", behaviourPacks: " ~ std.conv.to!string(this.behaviourPacks) ~ ", resourcePacks: " ~ std.conv.to!string(this.resourcePacks) ~ ")"; 236 } 237 238 } 239 240 class ResourcePacksStackPacket : Bedrock261Packet 241 { 242 243 enum uint ID = 7; 244 245 enum bool CLIENTBOUND = true; 246 enum bool SERVERBOUND = false; 247 248 enum string[] __fields = ["mustAccept", "behaviourPacks", "resourcePacks"]; 249 250 bool mustAccept; 251 soupply.bedrock261.types.Pack[] behaviourPacks; 252 soupply.bedrock261.types.Pack[] resourcePacks; 253 254 this() pure nothrow @safe @nogc {} 255 256 this(bool mustAccept, soupply.bedrock261.types.Pack[] behaviourPacks=(soupply.bedrock261.types.Pack[]).init, soupply.bedrock261.types.Pack[] resourcePacks=(soupply.bedrock261.types.Pack[]).init) pure nothrow @safe @nogc 257 { 258 this.mustAccept = mustAccept; 259 this.behaviourPacks = behaviourPacks; 260 this.resourcePacks = resourcePacks; 261 } 262 263 mixin Make; 264 265 public static typeof(this) fromBuffer(ubyte[] buffer) 266 { 267 ResourcePacksStackPacket ret = new ResourcePacksStackPacket(); 268 ret.decode(buffer); 269 return ret; 270 } 271 272 override string toString() 273 { 274 return "ResourcePacksStackPacket(mustAccept: " ~ std.conv.to!string(this.mustAccept) ~ ", behaviourPacks: " ~ std.conv.to!string(this.behaviourPacks) ~ ", resourcePacks: " ~ std.conv.to!string(this.resourcePacks) ~ ")"; 275 } 276 277 } 278 279 class ResourcePackClientResponse : Bedrock261Packet 280 { 281 282 enum uint ID = 8; 283 284 enum bool CLIENTBOUND = false; 285 enum bool SERVERBOUND = true; 286 287 // status 288 enum ubyte REFUSED = 1; 289 enum ubyte SEND_PACKS = 2; 290 enum ubyte HAVE_ALL_PACKS = 3; 291 enum ubyte COMPLETED = 4; 292 293 enum string[] __fields = ["status", "packIds"]; 294 295 ubyte status; 296 @Length!ushort string[] packIds; 297 298 this() pure nothrow @safe @nogc {} 299 300 this(ubyte status, string[] packIds=(string[]).init) pure nothrow @safe @nogc 301 { 302 this.status = status; 303 this.packIds = packIds; 304 } 305 306 mixin Make; 307 308 public static typeof(this) fromBuffer(ubyte[] buffer) 309 { 310 ResourcePackClientResponse ret = new ResourcePackClientResponse(); 311 ret.decode(buffer); 312 return ret; 313 } 314 315 override string toString() 316 { 317 return "ResourcePackClientResponse(status: " ~ std.conv.to!string(this.status) ~ ", packIds: " ~ std.conv.to!string(this.packIds) ~ ")"; 318 } 319 320 } 321 322 class Text : Bedrock261Packet 323 { 324 325 enum uint ID = 9; 326 327 enum bool CLIENTBOUND = true; 328 enum bool SERVERBOUND = true; 329 330 enum string[] __fields = ["type", "unknown1"]; 331 332 ubyte type; 333 bool unknown1; 334 335 this() pure nothrow @safe @nogc {} 336 337 this(ubyte type, bool unknown1=bool.init) pure nothrow @safe @nogc 338 { 339 this.type = type; 340 this.unknown1 = unknown1; 341 } 342 343 mixin Make; 344 345 public static typeof(this) fromBuffer(ubyte[] buffer) 346 { 347 Text ret = new Text(); 348 ret.decode(buffer); 349 return ret; 350 } 351 352 override string toString() 353 { 354 return "Text(type: " ~ std.conv.to!string(this.type) ~ ", unknown1: " ~ std.conv.to!string(this.unknown1) ~ ")"; 355 } 356 357 enum string variantField = "type"; 358 359 alias Variants = TypeTuple!(Raw, Chat, Translation, Popup, JukeboxPopup, Tip, System, Whisper, Announcement); 360 361 class Raw : Bedrock261Packet 362 { 363 364 enum typeof(type) TYPE = 0; 365 366 enum string[] __fields = ["message", "xuid"]; 367 368 string message; 369 string xuid; 370 371 this() pure nothrow @safe @nogc {} 372 373 this(string message, string xuid=string.init) pure nothrow @safe @nogc 374 { 375 this.message = message; 376 this.xuid = xuid; 377 } 378 379 mixin Make; 380 381 override string toString() 382 { 383 return "Text.Raw(message: " ~ std.conv.to!string(this.message) ~ ", xuid: " ~ std.conv.to!string(this.xuid) ~ ")"; 384 } 385 386 } 387 388 class Chat : Bedrock261Packet 389 { 390 391 enum typeof(type) TYPE = 1; 392 393 enum string[] __fields = ["sender", "message", "xuid"]; 394 395 string sender; 396 string message; 397 string xuid; 398 399 this() pure nothrow @safe @nogc {} 400 401 this(string sender, string message=string.init, string xuid=string.init) pure nothrow @safe @nogc 402 { 403 this.sender = sender; 404 this.message = message; 405 this.xuid = xuid; 406 } 407 408 mixin Make; 409 410 override string toString() 411 { 412 return "Text.Chat(sender: " ~ std.conv.to!string(this.sender) ~ ", message: " ~ std.conv.to!string(this.message) ~ ", xuid: " ~ std.conv.to!string(this.xuid) ~ ")"; 413 } 414 415 } 416 417 class Translation : Bedrock261Packet 418 { 419 420 enum typeof(type) TYPE = 2; 421 422 enum string[] __fields = ["message", "parameters"]; 423 424 string message; 425 string[] parameters; 426 427 this() pure nothrow @safe @nogc {} 428 429 this(string message, string[] parameters=(string[]).init) pure nothrow @safe @nogc 430 { 431 this.message = message; 432 this.parameters = parameters; 433 } 434 435 mixin Make; 436 437 override string toString() 438 { 439 return "Text.Translation(message: " ~ std.conv.to!string(this.message) ~ ", parameters: " ~ std.conv.to!string(this.parameters) ~ ")"; 440 } 441 442 } 443 444 class Popup : Bedrock261Packet 445 { 446 447 enum typeof(type) TYPE = 3; 448 449 enum string[] __fields = ["title", "subtitle"]; 450 451 string title; 452 string subtitle; 453 454 this() pure nothrow @safe @nogc {} 455 456 this(string title, string subtitle=string.init) pure nothrow @safe @nogc 457 { 458 this.title = title; 459 this.subtitle = subtitle; 460 } 461 462 mixin Make; 463 464 override string toString() 465 { 466 return "Text.Popup(title: " ~ std.conv.to!string(this.title) ~ ", subtitle: " ~ std.conv.to!string(this.subtitle) ~ ")"; 467 } 468 469 } 470 471 class JukeboxPopup : Bedrock261Packet 472 { 473 474 enum typeof(type) TYPE = 4; 475 476 enum string[] __fields = ["message", "parameters"]; 477 478 string message; 479 string[] parameters; 480 481 this() pure nothrow @safe @nogc {} 482 483 this(string message, string[] parameters=(string[]).init) pure nothrow @safe @nogc 484 { 485 this.message = message; 486 this.parameters = parameters; 487 } 488 489 mixin Make; 490 491 override string toString() 492 { 493 return "Text.JukeboxPopup(message: " ~ std.conv.to!string(this.message) ~ ", parameters: " ~ std.conv.to!string(this.parameters) ~ ")"; 494 } 495 496 } 497 498 class Tip : Bedrock261Packet 499 { 500 501 enum typeof(type) TYPE = 5; 502 503 enum string[] __fields = ["message"]; 504 505 string message; 506 507 this() pure nothrow @safe @nogc {} 508 509 this(string message) pure nothrow @safe @nogc 510 { 511 this.message = message; 512 } 513 514 mixin Make; 515 516 override string toString() 517 { 518 return "Text.Tip(message: " ~ std.conv.to!string(this.message) ~ ")"; 519 } 520 521 } 522 523 class System : Bedrock261Packet 524 { 525 526 enum typeof(type) TYPE = 6; 527 528 enum string[] __fields = ["message"]; 529 530 string message; 531 532 this() pure nothrow @safe @nogc {} 533 534 this(string message) pure nothrow @safe @nogc 535 { 536 this.message = message; 537 } 538 539 mixin Make; 540 541 override string toString() 542 { 543 return "Text.System(message: " ~ std.conv.to!string(this.message) ~ ")"; 544 } 545 546 } 547 548 class Whisper : Bedrock261Packet 549 { 550 551 enum typeof(type) TYPE = 7; 552 553 enum string[] __fields = ["sender", "message"]; 554 555 string sender; 556 string message; 557 558 this() pure nothrow @safe @nogc {} 559 560 this(string sender, string message=string.init) pure nothrow @safe @nogc 561 { 562 this.sender = sender; 563 this.message = message; 564 } 565 566 mixin Make; 567 568 override string toString() 569 { 570 return "Text.Whisper(sender: " ~ std.conv.to!string(this.sender) ~ ", message: " ~ std.conv.to!string(this.message) ~ ")"; 571 } 572 573 } 574 575 class Announcement : Bedrock261Packet 576 { 577 578 enum typeof(type) TYPE = 8; 579 580 enum string[] __fields = ["announcer", "message"]; 581 582 string announcer; 583 string message; 584 585 this() pure nothrow @safe @nogc {} 586 587 this(string announcer, string message=string.init) pure nothrow @safe @nogc 588 { 589 this.announcer = announcer; 590 this.message = message; 591 } 592 593 mixin Make; 594 595 override string toString() 596 { 597 return "Text.Announcement(announcer: " ~ std.conv.to!string(this.announcer) ~ ", message: " ~ std.conv.to!string(this.message) ~ ")"; 598 } 599 600 } 601 602 } 603 604 class SetTime : Bedrock261Packet 605 { 606 607 enum uint ID = 10; 608 609 enum bool CLIENTBOUND = true; 610 enum bool SERVERBOUND = false; 611 612 enum string[] __fields = ["time"]; 613 614 @Var int time; 615 616 this() pure nothrow @safe @nogc {} 617 618 this(int time) pure nothrow @safe @nogc 619 { 620 this.time = time; 621 } 622 623 mixin Make; 624 625 public static typeof(this) fromBuffer(ubyte[] buffer) 626 { 627 SetTime ret = new SetTime(); 628 ret.decode(buffer); 629 return ret; 630 } 631 632 override string toString() 633 { 634 return "SetTime(time: " ~ std.conv.to!string(this.time) ~ ")"; 635 } 636 637 } 638 639 class StartGame : Bedrock261Packet 640 { 641 642 enum uint ID = 11; 643 644 enum bool CLIENTBOUND = true; 645 enum bool SERVERBOUND = false; 646 647 // gamemode 648 enum int SURVIVAL = 0; 649 enum int CREATIVE = 1; 650 enum int ADVENTURE = 2; 651 652 // dimension 653 enum int OVERWORLD = 0; 654 enum int NETHER = 1; 655 enum int END = 2; 656 657 // generator 658 enum int OLD = 0; 659 enum int INFINITE = 1; 660 enum int FLAT = 2; 661 662 // difficulty 663 enum int PEACEFUL = 0; 664 enum int EASY = 1; 665 enum int NORMAL = 2; 666 enum int HARD = 3; 667 668 // version 669 enum ubyte VANILLA = 0; 670 enum ubyte EDUCATION = 1; 671 672 enum string[] __fields = ["entityId", "runtimeId", "gamemode", "position", "yaw", "pitch", "seed", "dimension", "generator", "worldGamemode", "difficulty", "spawnPosition", "loadedInCreative", "time", "version_", "eduFeaturesEnabled", "rainLevel", "lightningLevel", "multiplayerGame", "broadcastToLan", "broadcastToXbl", "commandsEnabled", "textureRequired", "gameRules", "hasBonusChestEnabled", "hasStartWithMapEnabled", "hasTrustPlayersEnabled", "defaultPermissionLevel", "xboxLiveBroadcastMode", "serverChunkTickRadius", "hasPlatformBroadcast", "platformBroadcastMode", "xboxLiveBroadcastIntent", "hasLockedBehaviorPack", "hasLockedResourcePack", "isFromLockedWorldTemplate", "levelId", "worldName", "premiumWorldTemplate", "isTrial", "currentTick", "enchantmentSeed"]; 673 674 @Var long entityId; 675 @Var ulong runtimeId; 676 @Var int gamemode; 677 Vector!(float, "xyz") position; 678 float yaw; 679 float pitch; 680 @Var int seed; 681 @Var int dimension = 0; 682 @Var int generator = 1; 683 @Var int worldGamemode; 684 @Var int difficulty; 685 @Var Vector!(int, "xyz") spawnPosition; 686 bool loadedInCreative; 687 @Var int time; 688 ubyte version_; 689 bool eduFeaturesEnabled; 690 float rainLevel; 691 float lightningLevel; 692 bool multiplayerGame = true; 693 bool broadcastToLan; 694 bool broadcastToXbl; 695 bool commandsEnabled; 696 bool textureRequired; 697 soupply.bedrock261.types.Rule[] gameRules; 698 bool hasBonusChestEnabled; 699 bool hasStartWithMapEnabled; 700 bool hasTrustPlayersEnabled; 701 @Var int defaultPermissionLevel; 702 @Var int xboxLiveBroadcastMode; 703 uint serverChunkTickRadius; 704 bool hasPlatformBroadcast; 705 @Var int platformBroadcastMode; 706 bool xboxLiveBroadcastIntent; 707 bool hasLockedBehaviorPack; 708 bool hasLockedResourcePack; 709 bool isFromLockedWorldTemplate; 710 string levelId; 711 string worldName; 712 string premiumWorldTemplate; 713 bool isTrial; 714 ulong currentTick; 715 @Var int enchantmentSeed; 716 717 this() pure nothrow @safe @nogc {} 718 719 this(long entityId, ulong runtimeId=ulong.init, int gamemode=int.init, Vector!(float, "xyz") position=Vector!(float, "xyz").init, float yaw=float.init, float pitch=float.init, int seed=int.init, int dimension=0, int generator=1, int worldGamemode=int.init, int difficulty=int.init, Vector!(int, "xyz") spawnPosition=Vector!(int, "xyz").init, bool loadedInCreative=bool.init, int time=int.init, ubyte version_=ubyte.init, bool eduFeaturesEnabled=bool.init, float rainLevel=float.init, float lightningLevel=float.init, bool multiplayerGame=true, bool broadcastToLan=bool.init, bool broadcastToXbl=bool.init, bool commandsEnabled=bool.init, bool textureRequired=bool.init, soupply.bedrock261.types.Rule[] gameRules=(soupply.bedrock261.types.Rule[]).init, bool hasBonusChestEnabled=bool.init, bool hasStartWithMapEnabled=bool.init, bool hasTrustPlayersEnabled=bool.init, int defaultPermissionLevel=int.init, int xboxLiveBroadcastMode=int.init, uint serverChunkTickRadius=uint.init, bool hasPlatformBroadcast=bool.init, int platformBroadcastMode=int.init, bool xboxLiveBroadcastIntent=bool.init, bool hasLockedBehaviorPack=bool.init, bool hasLockedResourcePack=bool.init, bool isFromLockedWorldTemplate=bool.init, string levelId=string.init, string worldName=string.init, string premiumWorldTemplate=string.init, bool isTrial=bool.init, ulong currentTick=ulong.init, int enchantmentSeed=int.init) pure nothrow @safe @nogc 720 { 721 this.entityId = entityId; 722 this.runtimeId = runtimeId; 723 this.gamemode = gamemode; 724 this.position = position; 725 this.yaw = yaw; 726 this.pitch = pitch; 727 this.seed = seed; 728 this.dimension = dimension; 729 this.generator = generator; 730 this.worldGamemode = worldGamemode; 731 this.difficulty = difficulty; 732 this.spawnPosition = spawnPosition; 733 this.loadedInCreative = loadedInCreative; 734 this.time = time; 735 this.version_ = version_; 736 this.eduFeaturesEnabled = eduFeaturesEnabled; 737 this.rainLevel = rainLevel; 738 this.lightningLevel = lightningLevel; 739 this.multiplayerGame = multiplayerGame; 740 this.broadcastToLan = broadcastToLan; 741 this.broadcastToXbl = broadcastToXbl; 742 this.commandsEnabled = commandsEnabled; 743 this.textureRequired = textureRequired; 744 this.gameRules = gameRules; 745 this.hasBonusChestEnabled = hasBonusChestEnabled; 746 this.hasStartWithMapEnabled = hasStartWithMapEnabled; 747 this.hasTrustPlayersEnabled = hasTrustPlayersEnabled; 748 this.defaultPermissionLevel = defaultPermissionLevel; 749 this.xboxLiveBroadcastMode = xboxLiveBroadcastMode; 750 this.serverChunkTickRadius = serverChunkTickRadius; 751 this.hasPlatformBroadcast = hasPlatformBroadcast; 752 this.platformBroadcastMode = platformBroadcastMode; 753 this.xboxLiveBroadcastIntent = xboxLiveBroadcastIntent; 754 this.hasLockedBehaviorPack = hasLockedBehaviorPack; 755 this.hasLockedResourcePack = hasLockedResourcePack; 756 this.isFromLockedWorldTemplate = isFromLockedWorldTemplate; 757 this.levelId = levelId; 758 this.worldName = worldName; 759 this.premiumWorldTemplate = premiumWorldTemplate; 760 this.isTrial = isTrial; 761 this.currentTick = currentTick; 762 this.enchantmentSeed = enchantmentSeed; 763 } 764 765 mixin Make; 766 767 public static typeof(this) fromBuffer(ubyte[] buffer) 768 { 769 StartGame ret = new StartGame(); 770 ret.decode(buffer); 771 return ret; 772 } 773 774 override string toString() 775 { 776 return "StartGame(entityId: " ~ std.conv.to!string(this.entityId) ~ ", runtimeId: " ~ std.conv.to!string(this.runtimeId) ~ ", gamemode: " ~ std.conv.to!string(this.gamemode) ~ ", position: " ~ std.conv.to!string(this.position) ~ ", yaw: " ~ std.conv.to!string(this.yaw) ~ ", pitch: " ~ std.conv.to!string(this.pitch) ~ ", seed: " ~ std.conv.to!string(this.seed) ~ ", dimension: " ~ std.conv.to!string(this.dimension) ~ ", generator: " ~ std.conv.to!string(this.generator) ~ ", worldGamemode: " ~ std.conv.to!string(this.worldGamemode) ~ ", difficulty: " ~ std.conv.to!string(this.difficulty) ~ ", spawnPosition: " ~ std.conv.to!string(this.spawnPosition) ~ ", loadedInCreative: " ~ std.conv.to!string(this.loadedInCreative) ~ ", time: " ~ std.conv.to!string(this.time) ~ ", version_: " ~ std.conv.to!string(this.version_) ~ ", eduFeaturesEnabled: " ~ std.conv.to!string(this.eduFeaturesEnabled) ~ ", rainLevel: " ~ std.conv.to!string(this.rainLevel) ~ ", lightningLevel: " ~ std.conv.to!string(this.lightningLevel) ~ ", multiplayerGame: " ~ std.conv.to!string(this.multiplayerGame) ~ ", broadcastToLan: " ~ std.conv.to!string(this.broadcastToLan) ~ ", broadcastToXbl: " ~ std.conv.to!string(this.broadcastToXbl) ~ ", commandsEnabled: " ~ std.conv.to!string(this.commandsEnabled) ~ ", textureRequired: " ~ std.conv.to!string(this.textureRequired) ~ ", gameRules: " ~ std.conv.to!string(this.gameRules) ~ ", hasBonusChestEnabled: " ~ std.conv.to!string(this.hasBonusChestEnabled) ~ ", hasStartWithMapEnabled: " ~ std.conv.to!string(this.hasStartWithMapEnabled) ~ ", hasTrustPlayersEnabled: " ~ std.conv.to!string(this.hasTrustPlayersEnabled) ~ ", defaultPermissionLevel: " ~ std.conv.to!string(this.defaultPermissionLevel) ~ ", xboxLiveBroadcastMode: " ~ std.conv.to!string(this.xboxLiveBroadcastMode) ~ ", serverChunkTickRadius: " ~ std.conv.to!string(this.serverChunkTickRadius) ~ ", hasPlatformBroadcast: " ~ std.conv.to!string(this.hasPlatformBroadcast) ~ ", platformBroadcastMode: " ~ std.conv.to!string(this.platformBroadcastMode) ~ ", xboxLiveBroadcastIntent: " ~ std.conv.to!string(this.xboxLiveBroadcastIntent) ~ ", hasLockedBehaviorPack: " ~ std.conv.to!string(this.hasLockedBehaviorPack) ~ ", hasLockedResourcePack: " ~ std.conv.to!string(this.hasLockedResourcePack) ~ ", isFromLockedWorldTemplate: " ~ std.conv.to!string(this.isFromLockedWorldTemplate) ~ ", levelId: " ~ std.conv.to!string(this.levelId) ~ ", worldName: " ~ std.conv.to!string(this.worldName) ~ ", premiumWorldTemplate: " ~ std.conv.to!string(this.premiumWorldTemplate) ~ ", isTrial: " ~ std.conv.to!string(this.isTrial) ~ ", currentTick: " ~ std.conv.to!string(this.currentTick) ~ ", enchantmentSeed: " ~ std.conv.to!string(this.enchantmentSeed) ~ ")"; 777 } 778 779 } 780 781 class AddPlayer : Bedrock261Packet 782 { 783 784 enum uint ID = 12; 785 786 enum bool CLIENTBOUND = true; 787 enum bool SERVERBOUND = false; 788 789 enum string[] __fields = ["uuid", "username", "entityId", "runtimeId", "position", "motion", "pitch", "headYaw", "yaw", "heldItem", "metadata", "unknown11", "unknown12", "unknown13", "unknown14", "unknown15", "unknown16", "links"]; 790 791 soupply.bedrock261.types.McpeUuid uuid; 792 string username; 793 @Var long entityId; 794 @Var ulong runtimeId; 795 Vector!(float, "xyz") position; 796 Vector!(float, "xyz") motion; 797 float pitch; 798 float headYaw; 799 float yaw; 800 soupply.bedrock261.types.Slot heldItem; 801 Metadata metadata; 802 @Var uint unknown11; 803 @Var uint unknown12; 804 @Var uint unknown13; 805 @Var uint unknown14; 806 @Var uint unknown15; 807 long unknown16; 808 soupply.bedrock261.types.Link[] links; 809 810 this() pure nothrow @safe @nogc {} 811 812 this(soupply.bedrock261.types.McpeUuid uuid, string username=string.init, long entityId=long.init, ulong runtimeId=ulong.init, Vector!(float, "xyz") position=Vector!(float, "xyz").init, Vector!(float, "xyz") motion=Vector!(float, "xyz").init, float pitch=float.init, float headYaw=float.init, float yaw=float.init, soupply.bedrock261.types.Slot heldItem=soupply.bedrock261.types.Slot.init, Metadata metadata=Metadata.init, uint unknown11=uint.init, uint unknown12=uint.init, uint unknown13=uint.init, uint unknown14=uint.init, uint unknown15=uint.init, long unknown16=long.init, soupply.bedrock261.types.Link[] links=(soupply.bedrock261.types.Link[]).init) pure nothrow @safe @nogc 813 { 814 this.uuid = uuid; 815 this.username = username; 816 this.entityId = entityId; 817 this.runtimeId = runtimeId; 818 this.position = position; 819 this.motion = motion; 820 this.pitch = pitch; 821 this.headYaw = headYaw; 822 this.yaw = yaw; 823 this.heldItem = heldItem; 824 this.metadata = metadata; 825 this.unknown11 = unknown11; 826 this.unknown12 = unknown12; 827 this.unknown13 = unknown13; 828 this.unknown14 = unknown14; 829 this.unknown15 = unknown15; 830 this.unknown16 = unknown16; 831 this.links = links; 832 } 833 834 mixin Make; 835 836 public static typeof(this) fromBuffer(ubyte[] buffer) 837 { 838 AddPlayer ret = new AddPlayer(); 839 ret.decode(buffer); 840 return ret; 841 } 842 843 override string toString() 844 { 845 return "AddPlayer(uuid: " ~ std.conv.to!string(this.uuid) ~ ", username: " ~ std.conv.to!string(this.username) ~ ", entityId: " ~ std.conv.to!string(this.entityId) ~ ", runtimeId: " ~ std.conv.to!string(this.runtimeId) ~ ", position: " ~ std.conv.to!string(this.position) ~ ", motion: " ~ std.conv.to!string(this.motion) ~ ", pitch: " ~ std.conv.to!string(this.pitch) ~ ", headYaw: " ~ std.conv.to!string(this.headYaw) ~ ", yaw: " ~ std.conv.to!string(this.yaw) ~ ", heldItem: " ~ std.conv.to!string(this.heldItem) ~ ", metadata: " ~ std.conv.to!string(this.metadata) ~ ", unknown11: " ~ std.conv.to!string(this.unknown11) ~ ", unknown12: " ~ std.conv.to!string(this.unknown12) ~ ", unknown13: " ~ std.conv.to!string(this.unknown13) ~ ", unknown14: " ~ std.conv.to!string(this.unknown14) ~ ", unknown15: " ~ std.conv.to!string(this.unknown15) ~ ", unknown16: " ~ std.conv.to!string(this.unknown16) ~ ", links: " ~ std.conv.to!string(this.links) ~ ")"; 846 } 847 848 } 849 850 class AddEntity : Bedrock261Packet 851 { 852 853 enum uint ID = 13; 854 855 enum bool CLIENTBOUND = true; 856 enum bool SERVERBOUND = false; 857 858 enum string[] __fields = ["entityId", "runtimeId", "type", "position", "motion", "pitch", "yaw", "attributes", "metadata", "links"]; 859 860 @Var long entityId; 861 @Var ulong runtimeId; 862 @Var uint type; 863 Vector!(float, "xyz") position; 864 Vector!(float, "xyz") motion; 865 float pitch; 866 float yaw; 867 soupply.bedrock261.types.Attribute[] attributes; 868 Metadata metadata; 869 soupply.bedrock261.types.Link[] links; 870 871 this() pure nothrow @safe @nogc {} 872 873 this(long entityId, ulong runtimeId=ulong.init, uint type=uint.init, Vector!(float, "xyz") position=Vector!(float, "xyz").init, Vector!(float, "xyz") motion=Vector!(float, "xyz").init, float pitch=float.init, float yaw=float.init, soupply.bedrock261.types.Attribute[] attributes=(soupply.bedrock261.types.Attribute[]).init, Metadata metadata=Metadata.init, soupply.bedrock261.types.Link[] links=(soupply.bedrock261.types.Link[]).init) pure nothrow @safe @nogc 874 { 875 this.entityId = entityId; 876 this.runtimeId = runtimeId; 877 this.type = type; 878 this.position = position; 879 this.motion = motion; 880 this.pitch = pitch; 881 this.yaw = yaw; 882 this.attributes = attributes; 883 this.metadata = metadata; 884 this.links = links; 885 } 886 887 mixin Make; 888 889 public static typeof(this) fromBuffer(ubyte[] buffer) 890 { 891 AddEntity ret = new AddEntity(); 892 ret.decode(buffer); 893 return ret; 894 } 895 896 override string toString() 897 { 898 return "AddEntity(entityId: " ~ std.conv.to!string(this.entityId) ~ ", runtimeId: " ~ std.conv.to!string(this.runtimeId) ~ ", type: " ~ std.conv.to!string(this.type) ~ ", position: " ~ std.conv.to!string(this.position) ~ ", motion: " ~ std.conv.to!string(this.motion) ~ ", pitch: " ~ std.conv.to!string(this.pitch) ~ ", yaw: " ~ std.conv.to!string(this.yaw) ~ ", attributes: " ~ std.conv.to!string(this.attributes) ~ ", metadata: " ~ std.conv.to!string(this.metadata) ~ ", links: " ~ std.conv.to!string(this.links) ~ ")"; 899 } 900 901 } 902 903 class RemoveEntity : Bedrock261Packet 904 { 905 906 enum uint ID = 14; 907 908 enum bool CLIENTBOUND = true; 909 enum bool SERVERBOUND = false; 910 911 enum string[] __fields = ["entityId"]; 912 913 @Var long entityId; 914 915 this() pure nothrow @safe @nogc {} 916 917 this(long entityId) pure nothrow @safe @nogc 918 { 919 this.entityId = entityId; 920 } 921 922 mixin Make; 923 924 public static typeof(this) fromBuffer(ubyte[] buffer) 925 { 926 RemoveEntity ret = new RemoveEntity(); 927 ret.decode(buffer); 928 return ret; 929 } 930 931 override string toString() 932 { 933 return "RemoveEntity(entityId: " ~ std.conv.to!string(this.entityId) ~ ")"; 934 } 935 936 } 937 938 class AddItemEntity : Bedrock261Packet 939 { 940 941 enum uint ID = 15; 942 943 enum bool CLIENTBOUND = true; 944 enum bool SERVERBOUND = false; 945 946 enum string[] __fields = ["entityId", "runtimeId", "item", "position", "motion", "metadata"]; 947 948 @Var long entityId; 949 @Var ulong runtimeId; 950 soupply.bedrock261.types.Slot item; 951 Vector!(float, "xyz") position; 952 Vector!(float, "xyz") motion; 953 Metadata metadata; 954 955 this() pure nothrow @safe @nogc {} 956 957 this(long entityId, ulong runtimeId=ulong.init, soupply.bedrock261.types.Slot item=soupply.bedrock261.types.Slot.init, Vector!(float, "xyz") position=Vector!(float, "xyz").init, Vector!(float, "xyz") motion=Vector!(float, "xyz").init, Metadata metadata=Metadata.init) pure nothrow @safe @nogc 958 { 959 this.entityId = entityId; 960 this.runtimeId = runtimeId; 961 this.item = item; 962 this.position = position; 963 this.motion = motion; 964 this.metadata = metadata; 965 } 966 967 mixin Make; 968 969 public static typeof(this) fromBuffer(ubyte[] buffer) 970 { 971 AddItemEntity ret = new AddItemEntity(); 972 ret.decode(buffer); 973 return ret; 974 } 975 976 override string toString() 977 { 978 return "AddItemEntity(entityId: " ~ std.conv.to!string(this.entityId) ~ ", runtimeId: " ~ std.conv.to!string(this.runtimeId) ~ ", item: " ~ std.conv.to!string(this.item) ~ ", position: " ~ std.conv.to!string(this.position) ~ ", motion: " ~ std.conv.to!string(this.motion) ~ ", metadata: " ~ std.conv.to!string(this.metadata) ~ ")"; 979 } 980 981 } 982 983 class AddHangingEntity : Bedrock261Packet 984 { 985 986 enum uint ID = 16; 987 988 enum bool CLIENTBOUND = true; 989 enum bool SERVERBOUND = false; 990 991 enum string[] __fields = ["entityId", "runtimeId", "position", "unknown3"]; 992 993 @Var long entityId; 994 @Var ulong runtimeId; 995 soupply.bedrock261.types.BlockPosition position; 996 @Var int unknown3; 997 998 this() pure nothrow @safe @nogc {} 999 1000 this(long entityId, ulong runtimeId=ulong.init, soupply.bedrock261.types.BlockPosition position=soupply.bedrock261.types.BlockPosition.init, int unknown3=int.init) pure nothrow @safe @nogc 1001 { 1002 this.entityId = entityId; 1003 this.runtimeId = runtimeId; 1004 this.position = position; 1005 this.unknown3 = unknown3; 1006 } 1007 1008 mixin Make; 1009 1010 public static typeof(this) fromBuffer(ubyte[] buffer) 1011 { 1012 AddHangingEntity ret = new AddHangingEntity(); 1013 ret.decode(buffer); 1014 return ret; 1015 } 1016 1017 override string toString() 1018 { 1019 return "AddHangingEntity(entityId: " ~ std.conv.to!string(this.entityId) ~ ", runtimeId: " ~ std.conv.to!string(this.runtimeId) ~ ", position: " ~ std.conv.to!string(this.position) ~ ", unknown3: " ~ std.conv.to!string(this.unknown3) ~ ")"; 1020 } 1021 1022 } 1023 1024 class TakeItemEntity : Bedrock261Packet 1025 { 1026 1027 enum uint ID = 17; 1028 1029 enum bool CLIENTBOUND = true; 1030 enum bool SERVERBOUND = false; 1031 1032 enum string[] __fields = ["collected", "collector"]; 1033 1034 @Var long collected; 1035 @Var long collector; 1036 1037 this() pure nothrow @safe @nogc {} 1038 1039 this(long collected, long collector=long.init) pure nothrow @safe @nogc 1040 { 1041 this.collected = collected; 1042 this.collector = collector; 1043 } 1044 1045 mixin Make; 1046 1047 public static typeof(this) fromBuffer(ubyte[] buffer) 1048 { 1049 TakeItemEntity ret = new TakeItemEntity(); 1050 ret.decode(buffer); 1051 return ret; 1052 } 1053 1054 override string toString() 1055 { 1056 return "TakeItemEntity(collected: " ~ std.conv.to!string(this.collected) ~ ", collector: " ~ std.conv.to!string(this.collector) ~ ")"; 1057 } 1058 1059 } 1060 1061 class MoveEntity : Bedrock261Packet 1062 { 1063 1064 enum uint ID = 18; 1065 1066 enum bool CLIENTBOUND = true; 1067 enum bool SERVERBOUND = false; 1068 1069 enum string[] __fields = ["entityId", "position", "pitch", "headYaw", "yaw", "onGround", "teleported"]; 1070 1071 @Var long entityId; 1072 Vector!(float, "xyz") position; 1073 ubyte pitch; 1074 ubyte headYaw; 1075 ubyte yaw; 1076 bool onGround; 1077 bool teleported; 1078 1079 this() pure nothrow @safe @nogc {} 1080 1081 this(long entityId, Vector!(float, "xyz") position=Vector!(float, "xyz").init, ubyte pitch=ubyte.init, ubyte headYaw=ubyte.init, ubyte yaw=ubyte.init, bool onGround=bool.init, bool teleported=bool.init) pure nothrow @safe @nogc 1082 { 1083 this.entityId = entityId; 1084 this.position = position; 1085 this.pitch = pitch; 1086 this.headYaw = headYaw; 1087 this.yaw = yaw; 1088 this.onGround = onGround; 1089 this.teleported = teleported; 1090 } 1091 1092 mixin Make; 1093 1094 public static typeof(this) fromBuffer(ubyte[] buffer) 1095 { 1096 MoveEntity ret = new MoveEntity(); 1097 ret.decode(buffer); 1098 return ret; 1099 } 1100 1101 override string toString() 1102 { 1103 return "MoveEntity(entityId: " ~ std.conv.to!string(this.entityId) ~ ", position: " ~ std.conv.to!string(this.position) ~ ", pitch: " ~ std.conv.to!string(this.pitch) ~ ", headYaw: " ~ std.conv.to!string(this.headYaw) ~ ", yaw: " ~ std.conv.to!string(this.yaw) ~ ", onGround: " ~ std.conv.to!string(this.onGround) ~ ", teleported: " ~ std.conv.to!string(this.teleported) ~ ")"; 1104 } 1105 1106 } 1107 1108 class MovePlayer : Bedrock261Packet 1109 { 1110 1111 enum uint ID = 19; 1112 1113 enum bool CLIENTBOUND = true; 1114 enum bool SERVERBOUND = true; 1115 1116 // animation 1117 enum ubyte FULL = 0; 1118 enum ubyte NONE = 1; 1119 enum ubyte TELEPORT = 2; 1120 enum ubyte PITCH = 3; 1121 1122 enum string[] __fields = ["entityId", "position", "pitch", "headYaw", "yaw", "animation", "onGround", "unknown7", "unknown8", "unknown9"]; 1123 1124 @Var long entityId; 1125 Vector!(float, "xyz") position; 1126 float pitch; 1127 float headYaw; 1128 float yaw; 1129 ubyte animation; 1130 bool onGround; 1131 @Var long unknown7; 1132 @Condition("animation==3") int unknown8; 1133 @Condition("animation==3") int unknown9; 1134 1135 this() pure nothrow @safe @nogc {} 1136 1137 this(long entityId, Vector!(float, "xyz") position=Vector!(float, "xyz").init, float pitch=float.init, float headYaw=float.init, float yaw=float.init, ubyte animation=ubyte.init, bool onGround=bool.init, long unknown7=long.init, int unknown8=int.init, int unknown9=int.init) pure nothrow @safe @nogc 1138 { 1139 this.entityId = entityId; 1140 this.position = position; 1141 this.pitch = pitch; 1142 this.headYaw = headYaw; 1143 this.yaw = yaw; 1144 this.animation = animation; 1145 this.onGround = onGround; 1146 this.unknown7 = unknown7; 1147 this.unknown8 = unknown8; 1148 this.unknown9 = unknown9; 1149 } 1150 1151 mixin Make; 1152 1153 public static typeof(this) fromBuffer(ubyte[] buffer) 1154 { 1155 MovePlayer ret = new MovePlayer(); 1156 ret.decode(buffer); 1157 return ret; 1158 } 1159 1160 override string toString() 1161 { 1162 return "MovePlayer(entityId: " ~ std.conv.to!string(this.entityId) ~ ", position: " ~ std.conv.to!string(this.position) ~ ", pitch: " ~ std.conv.to!string(this.pitch) ~ ", headYaw: " ~ std.conv.to!string(this.headYaw) ~ ", yaw: " ~ std.conv.to!string(this.yaw) ~ ", animation: " ~ std.conv.to!string(this.animation) ~ ", onGround: " ~ std.conv.to!string(this.onGround) ~ ", unknown7: " ~ std.conv.to!string(this.unknown7) ~ ", unknown8: " ~ std.conv.to!string(this.unknown8) ~ ", unknown9: " ~ std.conv.to!string(this.unknown9) ~ ")"; 1163 } 1164 1165 } 1166 1167 class RiderJump : Bedrock261Packet 1168 { 1169 1170 enum uint ID = 20; 1171 1172 enum bool CLIENTBOUND = true; 1173 enum bool SERVERBOUND = true; 1174 1175 enum string[] __fields = ["rider"]; 1176 1177 @Var long rider; 1178 1179 this() pure nothrow @safe @nogc {} 1180 1181 this(long rider) pure nothrow @safe @nogc 1182 { 1183 this.rider = rider; 1184 } 1185 1186 mixin Make; 1187 1188 public static typeof(this) fromBuffer(ubyte[] buffer) 1189 { 1190 RiderJump ret = new RiderJump(); 1191 ret.decode(buffer); 1192 return ret; 1193 } 1194 1195 override string toString() 1196 { 1197 return "RiderJump(rider: " ~ std.conv.to!string(this.rider) ~ ")"; 1198 } 1199 1200 } 1201 1202 class UpdateBlock : Bedrock261Packet 1203 { 1204 1205 enum uint ID = 21; 1206 1207 enum bool CLIENTBOUND = true; 1208 enum bool SERVERBOUND = false; 1209 1210 // flags and meta 1211 enum uint NEIGHBORS = 1; 1212 enum uint NETWORK = 2; 1213 enum uint NO_GRAPHIC = 4; 1214 enum uint PRIORITY = 8; 1215 1216 // data layer id 1217 enum uint NORMAL = 0; 1218 enum uint LIQUID = 1; 1219 1220 enum string[] __fields = ["position", "block", "flagsAndMeta", "dataLayerId"]; 1221 1222 soupply.bedrock261.types.BlockPosition position; 1223 @Var uint block; 1224 @Var uint flagsAndMeta; 1225 @Var uint dataLayerId; 1226 1227 this() pure nothrow @safe @nogc {} 1228 1229 this(soupply.bedrock261.types.BlockPosition position, uint block=uint.init, uint flagsAndMeta=uint.init, uint dataLayerId=uint.init) pure nothrow @safe @nogc 1230 { 1231 this.position = position; 1232 this.block = block; 1233 this.flagsAndMeta = flagsAndMeta; 1234 this.dataLayerId = dataLayerId; 1235 } 1236 1237 mixin Make; 1238 1239 public static typeof(this) fromBuffer(ubyte[] buffer) 1240 { 1241 UpdateBlock ret = new UpdateBlock(); 1242 ret.decode(buffer); 1243 return ret; 1244 } 1245 1246 override string toString() 1247 { 1248 return "UpdateBlock(position: " ~ std.conv.to!string(this.position) ~ ", block: " ~ std.conv.to!string(this.block) ~ ", flagsAndMeta: " ~ std.conv.to!string(this.flagsAndMeta) ~ ", dataLayerId: " ~ std.conv.to!string(this.dataLayerId) ~ ")"; 1249 } 1250 1251 } 1252 1253 class AddPainting : Bedrock261Packet 1254 { 1255 1256 enum uint ID = 22; 1257 1258 enum bool CLIENTBOUND = true; 1259 enum bool SERVERBOUND = false; 1260 1261 enum string[] __fields = ["entityId", "runtimeId", "position", "direction", "title"]; 1262 1263 @Var long entityId; 1264 @Var ulong runtimeId; 1265 soupply.bedrock261.types.BlockPosition position; 1266 @Var int direction; 1267 string title; 1268 1269 this() pure nothrow @safe @nogc {} 1270 1271 this(long entityId, ulong runtimeId=ulong.init, soupply.bedrock261.types.BlockPosition position=soupply.bedrock261.types.BlockPosition.init, int direction=int.init, string title=string.init) pure nothrow @safe @nogc 1272 { 1273 this.entityId = entityId; 1274 this.runtimeId = runtimeId; 1275 this.position = position; 1276 this.direction = direction; 1277 this.title = title; 1278 } 1279 1280 mixin Make; 1281 1282 public static typeof(this) fromBuffer(ubyte[] buffer) 1283 { 1284 AddPainting ret = new AddPainting(); 1285 ret.decode(buffer); 1286 return ret; 1287 } 1288 1289 override string toString() 1290 { 1291 return "AddPainting(entityId: " ~ std.conv.to!string(this.entityId) ~ ", runtimeId: " ~ std.conv.to!string(this.runtimeId) ~ ", position: " ~ std.conv.to!string(this.position) ~ ", direction: " ~ std.conv.to!string(this.direction) ~ ", title: " ~ std.conv.to!string(this.title) ~ ")"; 1292 } 1293 1294 } 1295 1296 class Explode : Bedrock261Packet 1297 { 1298 1299 enum uint ID = 23; 1300 1301 enum bool CLIENTBOUND = true; 1302 enum bool SERVERBOUND = false; 1303 1304 enum string[] __fields = ["position", "radius", "destroyedBlocks"]; 1305 1306 Vector!(float, "xyz") position; 1307 float radius; 1308 soupply.bedrock261.types.BlockPosition[] destroyedBlocks; 1309 1310 this() pure nothrow @safe @nogc {} 1311 1312 this(Vector!(float, "xyz") position, float radius=float.init, soupply.bedrock261.types.BlockPosition[] destroyedBlocks=(soupply.bedrock261.types.BlockPosition[]).init) pure nothrow @safe @nogc 1313 { 1314 this.position = position; 1315 this.radius = radius; 1316 this.destroyedBlocks = destroyedBlocks; 1317 } 1318 1319 mixin Make; 1320 1321 public static typeof(this) fromBuffer(ubyte[] buffer) 1322 { 1323 Explode ret = new Explode(); 1324 ret.decode(buffer); 1325 return ret; 1326 } 1327 1328 override string toString() 1329 { 1330 return "Explode(position: " ~ std.conv.to!string(this.position) ~ ", radius: " ~ std.conv.to!string(this.radius) ~ ", destroyedBlocks: " ~ std.conv.to!string(this.destroyedBlocks) ~ ")"; 1331 } 1332 1333 } 1334 1335 class LevelSoundEvent : Bedrock261Packet 1336 { 1337 1338 enum uint ID = 24; 1339 1340 enum bool CLIENTBOUND = true; 1341 enum bool SERVERBOUND = true; 1342 1343 // sound 1344 enum ubyte ITEM_USE_ON = 0; 1345 enum ubyte HIT = 1; 1346 enum ubyte STEP = 2; 1347 enum ubyte FLY = 3; 1348 enum ubyte JUMP = 4; 1349 enum ubyte BREAK = 5; 1350 enum ubyte PLACE = 6; 1351 enum ubyte HEAVY_STEP = 7; 1352 enum ubyte GALLOP = 8; 1353 enum ubyte FALL = 9; 1354 enum ubyte AMBIENT = 10; 1355 enum ubyte AMBIENT_BABY = 11; 1356 enum ubyte AMBIENT_IN_WATER = 12; 1357 enum ubyte BREATHE = 13; 1358 enum ubyte DEATH = 14; 1359 enum ubyte DEATH_IN_WATER = 15; 1360 enum ubyte DEATH_TO_ZOMBIE = 16; 1361 enum ubyte HURT = 17; 1362 enum ubyte HURT_IN_WATER = 18; 1363 enum ubyte MAD = 19; 1364 enum ubyte BOOST = 20; 1365 enum ubyte BOW = 21; 1366 enum ubyte SQUISH_BIG = 22; 1367 enum ubyte SQUISH_SMALL = 23; 1368 enum ubyte FALL_BIG = 24; 1369 enum ubyte FALL_SMALL = 25; 1370 enum ubyte SPLASH = 26; 1371 enum ubyte FIZZ = 27; 1372 enum ubyte FLAP = 28; 1373 enum ubyte SWIM = 29; 1374 enum ubyte DRINK = 30; 1375 enum ubyte EAT = 31; 1376 enum ubyte TAKEOFF = 32; 1377 enum ubyte SHAKE = 33; 1378 enum ubyte PLOP = 34; 1379 enum ubyte LAND = 35; 1380 enum ubyte SADDLE = 36; 1381 enum ubyte ARMOR = 37; 1382 enum ubyte MOB_ARMOR_STAND_PLACE = 38; 1383 enum ubyte ADD_CHEST = 39; 1384 enum ubyte THROW = 40; 1385 enum ubyte ATTACK = 41; 1386 enum ubyte ATTACK_NODAMAGE = 42; 1387 enum ubyte ATTACK_STRONG = 43; 1388 enum ubyte WARN = 44; 1389 enum ubyte SHEAR = 45; 1390 enum ubyte MILK = 46; 1391 enum ubyte THUNDER = 47; 1392 enum ubyte EXPLODE = 48; 1393 enum ubyte FIRE = 49; 1394 enum ubyte IGNITE = 50; 1395 enum ubyte FUSE = 51; 1396 enum ubyte STARE = 52; 1397 enum ubyte SPAWN = 53; 1398 enum ubyte SHOOT = 54; 1399 enum ubyte BREAK_BLOCK = 55; 1400 enum ubyte LAUNCH = 56; 1401 enum ubyte BLAST = 57; 1402 enum ubyte LARGE_BLAST = 58; 1403 enum ubyte TWINKLE = 59; 1404 enum ubyte REMEDY = 60; 1405 enum ubyte UNFECT = 61; 1406 enum ubyte LEVELUP = 62; 1407 enum ubyte BOW_HIT = 63; 1408 enum ubyte BULLET_HIT = 64; 1409 enum ubyte EXTINGUISH_FIRE = 65; 1410 enum ubyte ITEM_FIZZ = 66; 1411 enum ubyte CHEST_OPEN = 67; 1412 enum ubyte CHEST_CLOSED = 68; 1413 enum ubyte SHULKERBOX_OPEN = 69; 1414 enum ubyte SHULKERBOX_CLOSED = 70; 1415 enum ubyte ENDERCHEST_OPEN = 71; 1416 enum ubyte ENDERCHEST_CLOSED = 72; 1417 enum ubyte POWER_ON = 73; 1418 enum ubyte POWER_OFF = 74; 1419 enum ubyte ATTACH = 75; 1420 enum ubyte DETACH = 76; 1421 enum ubyte DENY = 77; 1422 enum ubyte TRIPOD = 78; 1423 enum ubyte POP = 79; 1424 enum ubyte DROP_SLOT = 80; 1425 enum ubyte NOTE = 81; 1426 enum ubyte THORNS = 82; 1427 enum ubyte PISTON_IN = 83; 1428 enum ubyte PISTON_OUT = 84; 1429 enum ubyte PORTAL = 85; 1430 enum ubyte WATER = 86; 1431 enum ubyte LAVA_POP = 87; 1432 enum ubyte LAVA = 88; 1433 enum ubyte BURP = 89; 1434 enum ubyte BUCKET_FILL_WATER = 90; 1435 enum ubyte BUCKET_FILL_LAVA = 91; 1436 enum ubyte BUCKET_EMPTY_WATER = 92; 1437 enum ubyte BUCKET_EMPTY_LAVA = 93; 1438 enum ubyte ARMOR_EQUIP_CHAIN = 94; 1439 enum ubyte ARMOR_EQUIP_DIAMOND = 95; 1440 enum ubyte ARMOR_EQUIP_GENERIC = 96; 1441 enum ubyte ARMOR_EQUIP_GOLD = 97; 1442 enum ubyte ARMOR_EQUIP_IRON = 98; 1443 enum ubyte ARMOR_EQUIP_LEATHER = 99; 1444 enum ubyte ARMOR_EQUIP_ELYTRA = 100; 1445 enum ubyte RECORD_13 = 101; 1446 enum ubyte RECORD_CAT = 102; 1447 enum ubyte RECORD_BLOCKS = 103; 1448 enum ubyte RECORD_CHIRP = 104; 1449 enum ubyte RECORD_FAR = 105; 1450 enum ubyte RECORD_MALL = 106; 1451 enum ubyte RECORD_MELLOHI = 107; 1452 enum ubyte RECORD_STAL = 108; 1453 enum ubyte RECORD_STRAD = 109; 1454 enum ubyte RECORD_WARD = 110; 1455 enum ubyte RECORD_11 = 111; 1456 enum ubyte RECORD_WAIT = 112; 1457 enum ubyte STOP_RECORD = 113; 1458 enum ubyte FLOP = 114; 1459 enum ubyte ELDERGUARDIAN_CURSE = 115; 1460 enum ubyte MOB_WARNING = 116; 1461 enum ubyte MOB_WARNING_BABY = 117; 1462 enum ubyte TELEPORT = 118; 1463 enum ubyte SHULKER_OPEN = 119; 1464 enum ubyte SHULKER_CLOSE = 120; 1465 enum ubyte HAGGLE = 121; 1466 enum ubyte HAGGLE_YES = 122; 1467 enum ubyte HAGGLE_NO = 123; 1468 enum ubyte HAGGLE_IDLE = 124; 1469 enum ubyte CHORUSGROW = 125; 1470 enum ubyte CHORUSDEATH = 126; 1471 enum ubyte GLASS = 127; 1472 enum ubyte POTION_BREWED = 128; 1473 enum ubyte CAST_SPELL = 129; 1474 enum ubyte PREPARE_ATTACK = 130; 1475 enum ubyte PREPARE_SUMMON = 131; 1476 enum ubyte PREPARE_WOLOLO = 132; 1477 enum ubyte FANG = 133; 1478 enum ubyte CHARGE = 134; 1479 enum ubyte CAMERA_TAKE_PICTURE = 135; 1480 enum ubyte LEASHKNOT_PLACE = 136; 1481 enum ubyte LEASHKNOT_BREAK = 137; 1482 enum ubyte GROWL = 138; 1483 enum ubyte WHINE = 139; 1484 enum ubyte PANT = 140; 1485 enum ubyte PURR = 141; 1486 enum ubyte PURREOW = 142; 1487 enum ubyte DEATH_MIN_VOLUME = 143; 1488 enum ubyte DEATH_MID_VOLUME = 144; 1489 enum ubyte IMITATE_BLAZE = 145; 1490 enum ubyte IMITATE_CAVE_SPIDER = 146; 1491 enum ubyte IMITATE_CREEPER = 147; 1492 enum ubyte IMITATE_ELDER_GUARDIAN = 148; 1493 enum ubyte IMITATE_ENDER_DRAGON = 149; 1494 enum ubyte IMITATE_ENDERMAN = 150; 1495 enum ubyte IMITATE_EVOCATION_ILLAGER = 152; 1496 enum ubyte IMITATE_GHAST = 153; 1497 enum ubyte IMITATE_HUSK = 154; 1498 enum ubyte IMITATE_ILLUSION_ILLAGER = 155; 1499 enum ubyte IMITATE_MAGMA_CUBE = 156; 1500 enum ubyte IMITATE_POLAR_BEAR = 157; 1501 enum ubyte IMITATE_SHULKER = 158; 1502 enum ubyte IMITATE_SILVERFISH = 159; 1503 enum ubyte IMITATE_SKELETON = 160; 1504 enum ubyte IMITATE_SLIME = 161; 1505 enum ubyte IMITATE_SPIDER = 162; 1506 enum ubyte IMITATE_STRAY = 163; 1507 enum ubyte IMITATE_VEX = 164; 1508 enum ubyte IMITATE_VINDICATION_ILLAGER = 165; 1509 enum ubyte IMITATE_WITCH = 166; 1510 enum ubyte IMITATE_WITHER = 167; 1511 enum ubyte IMITATE_WITHER_SKELETON = 168; 1512 enum ubyte IMITATE_WOLF = 169; 1513 enum ubyte IMITATE_ZOMBIE = 170; 1514 enum ubyte IMITATE_ZOMBIE_PIGMAN = 171; 1515 enum ubyte IMITATE_ZOMBIE_VILLAGER = 172; 1516 enum ubyte BLOCK_END_PORTAL_FRAME_FILL = 173; 1517 enum ubyte BLOCK_END_PORTAL_SPAWN = 174; 1518 enum ubyte RANDOM_ANVIL_USE = 175; 1519 enum ubyte BOTTLE_DRAGONBREATH = 176; 1520 enum ubyte PORTAL_TRAVEL = 177; 1521 enum ubyte ITEM_TRIDENT_HIT = 178; 1522 enum ubyte ITEM_TRIDENT_RETURN = 179; 1523 enum ubyte ITEM_TRIDENT_RIPTIDE_1 = 180; 1524 enum ubyte ITEM_TRIDENT_RIPTIDE_2 = 181; 1525 enum ubyte ITEM_TRIDENT_RIPTIDE_3 = 182; 1526 enum ubyte ITEM_TRIDENT_THROW = 183; 1527 enum ubyte ITEM_TRIDENT_THUNDER = 184; 1528 enum ubyte ITEM_TRIDENT_HIT_GROUND = 185; 1529 enum ubyte DEFAULT = 186; 1530 enum ubyte ELEMCONSTRUCT_OPEN = 188; 1531 enum ubyte ICEBOMB_HIT = 189; 1532 enum ubyte BALLOONPOP = 190; 1533 enum ubyte LT_REACTION_ICEBOMB = 191; 1534 enum ubyte LT_REACTION_BLEACH = 192; 1535 enum ubyte LT_REACTION_EPASTE = 193; 1536 enum ubyte LT_REACTION_EPASTE2 = 194; 1537 enum ubyte LT_REACTION_FERTILIZER = 199; 1538 enum ubyte LT_REACTION_FIREBALL = 200; 1539 enum ubyte LT_REACTION_MGSALT = 201; 1540 enum ubyte LT_REACTION_MISCFIRE = 202; 1541 enum ubyte LT_REACTION_FIRE = 203; 1542 enum ubyte LT_REACTION_MISCEXPLOSION = 204; 1543 enum ubyte LT_REACTION_MISCMYSTICAL = 205; 1544 enum ubyte LT_REACTION_MISCMYSTICAL2 = 206; 1545 enum ubyte LT_REACTION_PRODUCT = 207; 1546 enum ubyte SPARKLER_USE = 208; 1547 enum ubyte GLOWSTICK_USE = 209; 1548 enum ubyte SPARKLER_ACTIVE = 210; 1549 enum ubyte CONVERT_TO_DROWNED = 211; 1550 enum ubyte BUCKET_FILL_FISH = 212; 1551 enum ubyte BUCKET_EMPTY_FISH = 213; 1552 enum ubyte UNDEFINED = 214; 1553 1554 enum string[] __fields = ["sound", "position", "volume", "pitch", "unknown4", "disableRelativeVolume"]; 1555 1556 ubyte sound; 1557 Vector!(float, "xyz") position; 1558 @Var uint volume; 1559 @Var int pitch; 1560 bool unknown4; 1561 bool disableRelativeVolume; 1562 1563 this() pure nothrow @safe @nogc {} 1564 1565 this(ubyte sound, Vector!(float, "xyz") position=Vector!(float, "xyz").init, uint volume=uint.init, int pitch=int.init, bool unknown4=bool.init, bool disableRelativeVolume=bool.init) pure nothrow @safe @nogc 1566 { 1567 this.sound = sound; 1568 this.position = position; 1569 this.volume = volume; 1570 this.pitch = pitch; 1571 this.unknown4 = unknown4; 1572 this.disableRelativeVolume = disableRelativeVolume; 1573 } 1574 1575 mixin Make; 1576 1577 public static typeof(this) fromBuffer(ubyte[] buffer) 1578 { 1579 LevelSoundEvent ret = new LevelSoundEvent(); 1580 ret.decode(buffer); 1581 return ret; 1582 } 1583 1584 override string toString() 1585 { 1586 return "LevelSoundEvent(sound: " ~ std.conv.to!string(this.sound) ~ ", position: " ~ std.conv.to!string(this.position) ~ ", volume: " ~ std.conv.to!string(this.volume) ~ ", pitch: " ~ std.conv.to!string(this.pitch) ~ ", unknown4: " ~ std.conv.to!string(this.unknown4) ~ ", disableRelativeVolume: " ~ std.conv.to!string(this.disableRelativeVolume) ~ ")"; 1587 } 1588 1589 } 1590 1591 class LevelEvent : Bedrock261Packet 1592 { 1593 1594 enum uint ID = 25; 1595 1596 enum bool CLIENTBOUND = true; 1597 enum bool SERVERBOUND = false; 1598 1599 // event id 1600 enum int START_RAIN = 3001; 1601 enum int START_THUNDER = 3002; 1602 enum int STOP_RAIN = 3003; 1603 enum int STOP_THUNDER = 3004; 1604 enum int START_BLOCK_BREAK = 3600; 1605 enum int STOP_BLOCK_BREAK = 3601; 1606 enum int SET_DATA = 4000; 1607 enum int PLAYERS_SLEEPING = 9800; 1608 enum int PARTICLE_BUBBLE = 16385; 1609 enum int PARTICLE_CRITICAL = 16386; 1610 enum int PARTICLE_BLOCK_FORCE_FIELD = 16387; 1611 enum int PARTICLE_SMOKE = 16388; 1612 enum int PARTICLE_EXPLODE = 16389; 1613 enum int PARTICLE_EVAPORATION = 16390; 1614 enum int PARTICLE_FLAME = 16391; 1615 enum int PARTICLE_LAVA = 16392; 1616 enum int PARTICLE_LARGE_SMOKE = 16393; 1617 enum int PARTICLE_REDSTONE = 16394; 1618 enum int PARTICLE_RISING_RED_DUST = 16395; 1619 enum int PARTICLE_ITEM_BREAK = 16396; 1620 enum int PARTICLE_SNOWBALL_POOF = 16397; 1621 enum int PARTICLE_HUGE_EXPLODE = 16398; 1622 enum int PARTICLE_HUGE_EXPLODE_SEED = 16399; 1623 enum int PARTICLE_MOB_FLAME = 16400; 1624 enum int PARTICLE_HEART = 16401; 1625 enum int PARTICLE_TERRAIN = 16402; 1626 enum int PARTICLE_TOWN_AURA = 16403; 1627 enum int PARTICLE_PORTAL = 16404; 1628 enum int PARTICLE_WATER_SPLASH = 16405; 1629 enum int PARTICLE_WATER_WAKE = 16406; 1630 enum int PARTICLE_DRIP_WATER = 16407; 1631 enum int PARTICLE_DRIP_LAVA = 16408; 1632 enum int PARTICLE_FALLING_DUST = 16409; 1633 enum int PARTICLE_MOB_SPELL = 16410; 1634 enum int PARTICLE_MOB_SPELL_AMBIENT = 16411; 1635 enum int PARTICLE_MOB_SPELL_INSTANTANEOUS = 16412; 1636 enum int PARTICLE_INK = 16413; 1637 enum int PARTICLE_SLIME = 16414; 1638 enum int PARTICLE_RAIN_SPLASH = 16415; 1639 enum int PARTICLE_VILLAGER_ANGRY = 16416; 1640 enum int PARTICLE_VILLAGER_HAPPY = 16417; 1641 enum int PARTICLE_ENCHANTMENT_TABLE = 16418; 1642 enum int PARTICLE_TRACKING_EMITTER = 16419; 1643 enum int PARTICLE_NOTE = 16420; 1644 enum int PARTICLE_WITCH_SPELL = 16421; 1645 enum int PARTICLE_CARROT = 16422; 1646 enum int PARTICLE_END_ROD = 16424; 1647 enum int PARTICLE_DRAGON_BREATH = 16425; 1648 enum int PARTICLE_SHOOT = 2000; 1649 enum int PARTICLE_DESTROY = 2001; 1650 enum int PARTICLE_SPLASH = 2002; 1651 enum int PARTICLE_EYE_DESPAWN = 2003; 1652 enum int PARTICLE_SPAWN = 2004; 1653 1654 enum string[] __fields = ["eventId", "position", "data"]; 1655 1656 @Var int eventId; 1657 Vector!(float, "xyz") position; 1658 @Var int data; 1659 1660 this() pure nothrow @safe @nogc {} 1661 1662 this(int eventId, Vector!(float, "xyz") position=Vector!(float, "xyz").init, int data=int.init) pure nothrow @safe @nogc 1663 { 1664 this.eventId = eventId; 1665 this.position = position; 1666 this.data = data; 1667 } 1668 1669 mixin Make; 1670 1671 public static typeof(this) fromBuffer(ubyte[] buffer) 1672 { 1673 LevelEvent ret = new LevelEvent(); 1674 ret.decode(buffer); 1675 return ret; 1676 } 1677 1678 override string toString() 1679 { 1680 return "LevelEvent(eventId: " ~ std.conv.to!string(this.eventId) ~ ", position: " ~ std.conv.to!string(this.position) ~ ", data: " ~ std.conv.to!string(this.data) ~ ")"; 1681 } 1682 1683 } 1684 1685 class BlockEvent : Bedrock261Packet 1686 { 1687 1688 enum uint ID = 26; 1689 1690 enum bool CLIENTBOUND = true; 1691 enum bool SERVERBOUND = false; 1692 1693 enum string[] __fields = ["position", "data"]; 1694 1695 soupply.bedrock261.types.BlockPosition position; 1696 @Var int[2] data; 1697 1698 this() pure nothrow @safe @nogc {} 1699 1700 this(soupply.bedrock261.types.BlockPosition position, int[2] data=(int[2]).init) pure nothrow @safe @nogc 1701 { 1702 this.position = position; 1703 this.data = data; 1704 } 1705 1706 mixin Make; 1707 1708 public static typeof(this) fromBuffer(ubyte[] buffer) 1709 { 1710 BlockEvent ret = new BlockEvent(); 1711 ret.decode(buffer); 1712 return ret; 1713 } 1714 1715 override string toString() 1716 { 1717 return "BlockEvent(position: " ~ std.conv.to!string(this.position) ~ ", data: " ~ std.conv.to!string(this.data) ~ ")"; 1718 } 1719 1720 } 1721 1722 class EntityEvent : Bedrock261Packet 1723 { 1724 1725 enum uint ID = 27; 1726 1727 enum bool CLIENTBOUND = true; 1728 enum bool SERVERBOUND = true; 1729 1730 // event id 1731 enum ubyte HURT_ANIMATION = 2; 1732 enum ubyte DEATH_ANIMATION = 3; 1733 enum ubyte ARM_SWING = 4; 1734 enum ubyte TAME_FAIL = 6; 1735 enum ubyte TAME_SUCCESS = 7; 1736 enum ubyte SHAKE_WET = 8; 1737 enum ubyte USE_ITEM = 9; 1738 enum ubyte EAT_GRASS_ANIMATION = 10; 1739 enum ubyte FISH_HOOK_BUBBLES = 11; 1740 enum ubyte FISH_HOOK_POSITION = 12; 1741 enum ubyte FISH_HOOK_HOOK = 13; 1742 enum ubyte FISH_HOOK_TEASE = 14; 1743 enum ubyte SQUID_INK_CLOUD = 15; 1744 enum ubyte ZOMBIE_VILLAGER_CURE = 16; 1745 enum ubyte RESPAWN = 18; 1746 enum ubyte IRON_GOLEM_OFFER_FLOWER = 19; 1747 enum ubyte IRON_GOLEM_WITHDRAW_FLOWER = 20; 1748 enum ubyte LOVE_PARTICLES = 21; 1749 enum ubyte WITCH_SPELL_ANIMATION = 24; 1750 enum ubyte FIREWORK_PARTICLES = 25; 1751 enum ubyte SILVERFISH_SPAWN_ANIMATION = 27; 1752 enum ubyte WITCH_DRINK_POTION = 29; 1753 enum ubyte WITCH_THROWN_POTION = 30; 1754 enum ubyte MINECART_TNT_PRIME_FUSE = 31; 1755 enum ubyte PLAYER_ADD_XP_LEVELS = 34; 1756 enum ubyte ELDER_GUARDIAN_CURSE = 35; 1757 enum ubyte AGENT_ARM_SWING = 36; 1758 enum ubyte ENDER_DRAGON_DEATH = 37; 1759 enum ubyte DUST_PARTICLES = 38; 1760 enum ubyte EATING_ITEM = 57; 1761 enum ubyte BABY_ANIMAL_FEED = 60; 1762 enum ubyte DEATH_SMOKE_CLOUD = 61; 1763 enum ubyte COMPLETE_TRADE = 62; 1764 enum ubyte REMOVE_LEASH = 63; 1765 enum ubyte CONSUME_TOTEM = 65; 1766 enum ubyte ENTITY_SPAWN = 67; 1767 enum ubyte DRAGON_PUKE = 68; 1768 enum ubyte ITEM_ENTITY_MERGE = 69; 1769 1770 enum string[] __fields = ["entityId", "eventId", "data"]; 1771 1772 @Var long entityId; 1773 ubyte eventId; 1774 @Var int data; 1775 1776 this() pure nothrow @safe @nogc {} 1777 1778 this(long entityId, ubyte eventId=ubyte.init, int data=int.init) pure nothrow @safe @nogc 1779 { 1780 this.entityId = entityId; 1781 this.eventId = eventId; 1782 this.data = data; 1783 } 1784 1785 mixin Make; 1786 1787 public static typeof(this) fromBuffer(ubyte[] buffer) 1788 { 1789 EntityEvent ret = new EntityEvent(); 1790 ret.decode(buffer); 1791 return ret; 1792 } 1793 1794 override string toString() 1795 { 1796 return "EntityEvent(entityId: " ~ std.conv.to!string(this.entityId) ~ ", eventId: " ~ std.conv.to!string(this.eventId) ~ ", data: " ~ std.conv.to!string(this.data) ~ ")"; 1797 } 1798 1799 } 1800 1801 class MobEffect : Bedrock261Packet 1802 { 1803 1804 enum uint ID = 28; 1805 1806 enum bool CLIENTBOUND = true; 1807 enum bool SERVERBOUND = false; 1808 1809 // event id 1810 enum ubyte ADD = 1; 1811 enum ubyte MODIFY = 2; 1812 enum ubyte REMOVE = 3; 1813 1814 // effect 1815 enum int SPEED = 1; 1816 enum int SLOWNESS = 2; 1817 enum int HASTE = 3; 1818 enum int MINING_FATIGUE = 4; 1819 enum int STRENGTH = 5; 1820 enum int INSTANT_HEALTH = 6; 1821 enum int INSTANT_DAMAGE = 7; 1822 enum int JUMP_BOOST = 8; 1823 enum int NAUSEA = 9; 1824 enum int REGENERATION = 10; 1825 enum int RESISTANCE = 11; 1826 enum int FIRE_RESISTANCE = 12; 1827 enum int WATER_BREATHING = 13; 1828 enum int INVISIBILITY = 14; 1829 enum int BLINDNESS = 15; 1830 enum int NIGHT_VISION = 16; 1831 enum int HUNGER = 17; 1832 enum int WEAKNESS = 18; 1833 enum int POISON = 19; 1834 enum int WITHER = 20; 1835 enum int HEALTH_BOOST = 21; 1836 enum int ABSORPTION = 22; 1837 enum int SATURATION = 23; 1838 enum int LEVITATION = 24; 1839 enum int FATAL_POISON = 25; 1840 1841 enum string[] __fields = ["entityId", "eventId", "effect", "amplifier", "particles", "duration"]; 1842 1843 @Var long entityId; 1844 ubyte eventId; 1845 @Var int effect; 1846 @Var int amplifier; 1847 bool particles; 1848 @Var int duration; 1849 1850 this() pure nothrow @safe @nogc {} 1851 1852 this(long entityId, ubyte eventId=ubyte.init, int effect=int.init, int amplifier=int.init, bool particles=bool.init, int duration=int.init) pure nothrow @safe @nogc 1853 { 1854 this.entityId = entityId; 1855 this.eventId = eventId; 1856 this.effect = effect; 1857 this.amplifier = amplifier; 1858 this.particles = particles; 1859 this.duration = duration; 1860 } 1861 1862 mixin Make; 1863 1864 public static typeof(this) fromBuffer(ubyte[] buffer) 1865 { 1866 MobEffect ret = new MobEffect(); 1867 ret.decode(buffer); 1868 return ret; 1869 } 1870 1871 override string toString() 1872 { 1873 return "MobEffect(entityId: " ~ std.conv.to!string(this.entityId) ~ ", eventId: " ~ std.conv.to!string(this.eventId) ~ ", effect: " ~ std.conv.to!string(this.effect) ~ ", amplifier: " ~ std.conv.to!string(this.amplifier) ~ ", particles: " ~ std.conv.to!string(this.particles) ~ ", duration: " ~ std.conv.to!string(this.duration) ~ ")"; 1874 } 1875 1876 } 1877 1878 class UpdateAttributes : Bedrock261Packet 1879 { 1880 1881 enum uint ID = 29; 1882 1883 enum bool CLIENTBOUND = true; 1884 enum bool SERVERBOUND = false; 1885 1886 enum string[] __fields = ["entityId", "attributes"]; 1887 1888 @Var long entityId; 1889 soupply.bedrock261.types.Attribute[] attributes; 1890 1891 this() pure nothrow @safe @nogc {} 1892 1893 this(long entityId, soupply.bedrock261.types.Attribute[] attributes=(soupply.bedrock261.types.Attribute[]).init) pure nothrow @safe @nogc 1894 { 1895 this.entityId = entityId; 1896 this.attributes = attributes; 1897 } 1898 1899 mixin Make; 1900 1901 public static typeof(this) fromBuffer(ubyte[] buffer) 1902 { 1903 UpdateAttributes ret = new UpdateAttributes(); 1904 ret.decode(buffer); 1905 return ret; 1906 } 1907 1908 override string toString() 1909 { 1910 return "UpdateAttributes(entityId: " ~ std.conv.to!string(this.entityId) ~ ", attributes: " ~ std.conv.to!string(this.attributes) ~ ")"; 1911 } 1912 1913 } 1914 1915 class InventoryTransaction : Bedrock261Packet 1916 { 1917 1918 enum uint ID = 30; 1919 1920 enum bool CLIENTBOUND = false; 1921 enum bool SERVERBOUND = true; 1922 1923 enum string[] __fields = ["type", "actions"]; 1924 1925 @Var uint type; 1926 soupply.bedrock261.types.InventoryAction[] actions; 1927 1928 this() pure nothrow @safe @nogc {} 1929 1930 this(uint type, soupply.bedrock261.types.InventoryAction[] actions=(soupply.bedrock261.types.InventoryAction[]).init) pure nothrow @safe @nogc 1931 { 1932 this.type = type; 1933 this.actions = actions; 1934 } 1935 1936 mixin Make; 1937 1938 public static typeof(this) fromBuffer(ubyte[] buffer) 1939 { 1940 InventoryTransaction ret = new InventoryTransaction(); 1941 ret.decode(buffer); 1942 return ret; 1943 } 1944 1945 override string toString() 1946 { 1947 return "InventoryTransaction(type: " ~ std.conv.to!string(this.type) ~ ", actions: " ~ std.conv.to!string(this.actions) ~ ")"; 1948 } 1949 1950 enum string variantField = "type"; 1951 1952 alias Variants = TypeTuple!(Normal0, Normal1, UseItem, UseItemOnEntity, ReleaseItem); 1953 1954 class Normal0 : Bedrock261Packet 1955 { 1956 1957 enum typeof(type) TYPE = 0; 1958 1959 enum string[] __fields = []; 1960 1961 mixin Make; 1962 1963 override string toString() 1964 { 1965 return "InventoryTransaction.Normal0()"; 1966 } 1967 1968 } 1969 1970 class Normal1 : Bedrock261Packet 1971 { 1972 1973 enum typeof(type) TYPE = 1; 1974 1975 enum string[] __fields = []; 1976 1977 mixin Make; 1978 1979 override string toString() 1980 { 1981 return "InventoryTransaction.Normal1()"; 1982 } 1983 1984 } 1985 1986 class UseItem : Bedrock261Packet 1987 { 1988 1989 enum typeof(type) TYPE = 2; 1990 1991 // action type 1992 enum uint CLICK_BLOCK = 0; 1993 enum uint CLICK_AIR = 1; 1994 enum uint BREAK_BLOCK = 2; 1995 1996 enum string[] __fields = ["actionType", "blockPosition", "face", "hotbarSlot", "item", "playerPosition", "clickPosition"]; 1997 1998 @Var uint actionType; 1999 soupply.bedrock261.types.BlockPosition blockPosition; 2000 @Var int face; 2001 @Var int hotbarSlot; 2002 soupply.bedrock261.types.Slot item; 2003 Vector!(float, "xyz") playerPosition; 2004 Vector!(float, "xyz") clickPosition; 2005 2006 this() pure nothrow @safe @nogc {} 2007 2008 this(uint actionType, soupply.bedrock261.types.BlockPosition blockPosition=soupply.bedrock261.types.BlockPosition.init, int face=int.init, int hotbarSlot=int.init, soupply.bedrock261.types.Slot item=soupply.bedrock261.types.Slot.init, Vector!(float, "xyz") playerPosition=Vector!(float, "xyz").init, Vector!(float, "xyz") clickPosition=Vector!(float, "xyz").init) pure nothrow @safe @nogc 2009 { 2010 this.actionType = actionType; 2011 this.blockPosition = blockPosition; 2012 this.face = face; 2013 this.hotbarSlot = hotbarSlot; 2014 this.item = item; 2015 this.playerPosition = playerPosition; 2016 this.clickPosition = clickPosition; 2017 } 2018 2019 mixin Make; 2020 2021 override string toString() 2022 { 2023 return "InventoryTransaction.UseItem(actionType: " ~ std.conv.to!string(this.actionType) ~ ", blockPosition: " ~ std.conv.to!string(this.blockPosition) ~ ", face: " ~ std.conv.to!string(this.face) ~ ", hotbarSlot: " ~ std.conv.to!string(this.hotbarSlot) ~ ", item: " ~ std.conv.to!string(this.item) ~ ", playerPosition: " ~ std.conv.to!string(this.playerPosition) ~ ", clickPosition: " ~ std.conv.to!string(this.clickPosition) ~ ")"; 2024 } 2025 2026 } 2027 2028 class UseItemOnEntity : Bedrock261Packet 2029 { 2030 2031 enum typeof(type) TYPE = 3; 2032 2033 // action type 2034 enum uint INTERACT = 0; 2035 enum uint ATTACK = 1; 2036 2037 enum string[] __fields = ["entityId", "actionType", "hotbarSlot", "item", "unknown4", "unknown5"]; 2038 2039 @Var long entityId; 2040 @Var uint actionType; 2041 @Var int hotbarSlot; 2042 soupply.bedrock261.types.Slot item; 2043 Vector!(float, "xyz") unknown4; 2044 Vector!(float, "xyz") unknown5; 2045 2046 this() pure nothrow @safe @nogc {} 2047 2048 this(long entityId, uint actionType=uint.init, int hotbarSlot=int.init, soupply.bedrock261.types.Slot item=soupply.bedrock261.types.Slot.init, Vector!(float, "xyz") unknown4=Vector!(float, "xyz").init, Vector!(float, "xyz") unknown5=Vector!(float, "xyz").init) pure nothrow @safe @nogc 2049 { 2050 this.entityId = entityId; 2051 this.actionType = actionType; 2052 this.hotbarSlot = hotbarSlot; 2053 this.item = item; 2054 this.unknown4 = unknown4; 2055 this.unknown5 = unknown5; 2056 } 2057 2058 mixin Make; 2059 2060 override string toString() 2061 { 2062 return "InventoryTransaction.UseItemOnEntity(entityId: " ~ std.conv.to!string(this.entityId) ~ ", actionType: " ~ std.conv.to!string(this.actionType) ~ ", hotbarSlot: " ~ std.conv.to!string(this.hotbarSlot) ~ ", item: " ~ std.conv.to!string(this.item) ~ ", unknown4: " ~ std.conv.to!string(this.unknown4) ~ ", unknown5: " ~ std.conv.to!string(this.unknown5) ~ ")"; 2063 } 2064 2065 } 2066 2067 class ReleaseItem : Bedrock261Packet 2068 { 2069 2070 enum typeof(type) TYPE = 4; 2071 2072 // action type 2073 enum uint SHOOT_BOW = 0; 2074 enum uint CONSUME = 1; 2075 2076 enum string[] __fields = ["actionType", "hotbarSlot", "item", "headPosition"]; 2077 2078 @Var uint actionType; 2079 @Var int hotbarSlot; 2080 soupply.bedrock261.types.Slot item; 2081 Vector!(float, "xyz") headPosition; 2082 2083 this() pure nothrow @safe @nogc {} 2084 2085 this(uint actionType, int hotbarSlot=int.init, soupply.bedrock261.types.Slot item=soupply.bedrock261.types.Slot.init, Vector!(float, "xyz") headPosition=Vector!(float, "xyz").init) pure nothrow @safe @nogc 2086 { 2087 this.actionType = actionType; 2088 this.hotbarSlot = hotbarSlot; 2089 this.item = item; 2090 this.headPosition = headPosition; 2091 } 2092 2093 mixin Make; 2094 2095 override string toString() 2096 { 2097 return "InventoryTransaction.ReleaseItem(actionType: " ~ std.conv.to!string(this.actionType) ~ ", hotbarSlot: " ~ std.conv.to!string(this.hotbarSlot) ~ ", item: " ~ std.conv.to!string(this.item) ~ ", headPosition: " ~ std.conv.to!string(this.headPosition) ~ ")"; 2098 } 2099 2100 } 2101 2102 } 2103 2104 class MobEquipment : Bedrock261Packet 2105 { 2106 2107 enum uint ID = 31; 2108 2109 enum bool CLIENTBOUND = true; 2110 enum bool SERVERBOUND = true; 2111 2112 enum string[] __fields = ["entityId", "item", "inventorySlot", "hotbarSlot", "unknown4"]; 2113 2114 @Var long entityId; 2115 soupply.bedrock261.types.Slot item; 2116 ubyte inventorySlot; 2117 ubyte hotbarSlot; 2118 ubyte unknown4; 2119 2120 this() pure nothrow @safe @nogc {} 2121 2122 this(long entityId, soupply.bedrock261.types.Slot item=soupply.bedrock261.types.Slot.init, ubyte inventorySlot=ubyte.init, ubyte hotbarSlot=ubyte.init, ubyte unknown4=ubyte.init) pure nothrow @safe @nogc 2123 { 2124 this.entityId = entityId; 2125 this.item = item; 2126 this.inventorySlot = inventorySlot; 2127 this.hotbarSlot = hotbarSlot; 2128 this.unknown4 = unknown4; 2129 } 2130 2131 mixin Make; 2132 2133 public static typeof(this) fromBuffer(ubyte[] buffer) 2134 { 2135 MobEquipment ret = new MobEquipment(); 2136 ret.decode(buffer); 2137 return ret; 2138 } 2139 2140 override string toString() 2141 { 2142 return "MobEquipment(entityId: " ~ std.conv.to!string(this.entityId) ~ ", item: " ~ std.conv.to!string(this.item) ~ ", inventorySlot: " ~ std.conv.to!string(this.inventorySlot) ~ ", hotbarSlot: " ~ std.conv.to!string(this.hotbarSlot) ~ ", unknown4: " ~ std.conv.to!string(this.unknown4) ~ ")"; 2143 } 2144 2145 } 2146 2147 class MobArmorEquipment : Bedrock261Packet 2148 { 2149 2150 enum uint ID = 32; 2151 2152 enum bool CLIENTBOUND = true; 2153 enum bool SERVERBOUND = true; 2154 2155 enum string[] __fields = ["entityId", "armor"]; 2156 2157 @Var long entityId; 2158 soupply.bedrock261.types.Slot[4] armor; 2159 2160 this() pure nothrow @safe @nogc {} 2161 2162 this(long entityId, soupply.bedrock261.types.Slot[4] armor=(soupply.bedrock261.types.Slot[4]).init) pure nothrow @safe @nogc 2163 { 2164 this.entityId = entityId; 2165 this.armor = armor; 2166 } 2167 2168 mixin Make; 2169 2170 public static typeof(this) fromBuffer(ubyte[] buffer) 2171 { 2172 MobArmorEquipment ret = new MobArmorEquipment(); 2173 ret.decode(buffer); 2174 return ret; 2175 } 2176 2177 override string toString() 2178 { 2179 return "MobArmorEquipment(entityId: " ~ std.conv.to!string(this.entityId) ~ ", armor: " ~ std.conv.to!string(this.armor) ~ ")"; 2180 } 2181 2182 } 2183 2184 class Interact : Bedrock261Packet 2185 { 2186 2187 enum uint ID = 33; 2188 2189 enum bool CLIENTBOUND = false; 2190 enum bool SERVERBOUND = true; 2191 2192 // action 2193 enum ubyte LEAVE_VEHICLE = 3; 2194 enum ubyte HOVER = 4; 2195 enum ubyte OPEN_INVENTORY = 6; 2196 2197 enum string[] __fields = ["action", "target", "targetPosition"]; 2198 2199 ubyte action; 2200 @Var long target; 2201 @Condition("action==4") Vector!(float, "xyz") targetPosition; 2202 2203 this() pure nothrow @safe @nogc {} 2204 2205 this(ubyte action, long target=long.init, Vector!(float, "xyz") targetPosition=Vector!(float, "xyz").init) pure nothrow @safe @nogc 2206 { 2207 this.action = action; 2208 this.target = target; 2209 this.targetPosition = targetPosition; 2210 } 2211 2212 mixin Make; 2213 2214 public static typeof(this) fromBuffer(ubyte[] buffer) 2215 { 2216 Interact ret = new Interact(); 2217 ret.decode(buffer); 2218 return ret; 2219 } 2220 2221 override string toString() 2222 { 2223 return "Interact(action: " ~ std.conv.to!string(this.action) ~ ", target: " ~ std.conv.to!string(this.target) ~ ", targetPosition: " ~ std.conv.to!string(this.targetPosition) ~ ")"; 2224 } 2225 2226 } 2227 2228 class BlockPickRequest : Bedrock261Packet 2229 { 2230 2231 enum uint ID = 34; 2232 2233 enum bool CLIENTBOUND = false; 2234 enum bool SERVERBOUND = true; 2235 2236 enum string[] __fields = ["position", "unknown1", "slot"]; 2237 2238 @Var Vector!(int, "xyz") position; 2239 bool unknown1; 2240 ubyte slot; 2241 2242 this() pure nothrow @safe @nogc {} 2243 2244 this(Vector!(int, "xyz") position, bool unknown1=bool.init, ubyte slot=ubyte.init) pure nothrow @safe @nogc 2245 { 2246 this.position = position; 2247 this.unknown1 = unknown1; 2248 this.slot = slot; 2249 } 2250 2251 mixin Make; 2252 2253 public static typeof(this) fromBuffer(ubyte[] buffer) 2254 { 2255 BlockPickRequest ret = new BlockPickRequest(); 2256 ret.decode(buffer); 2257 return ret; 2258 } 2259 2260 override string toString() 2261 { 2262 return "BlockPickRequest(position: " ~ std.conv.to!string(this.position) ~ ", unknown1: " ~ std.conv.to!string(this.unknown1) ~ ", slot: " ~ std.conv.to!string(this.slot) ~ ")"; 2263 } 2264 2265 } 2266 2267 class EntityPickRequest : Bedrock261Packet 2268 { 2269 2270 enum uint ID = 35; 2271 2272 enum bool CLIENTBOUND = false; 2273 enum bool SERVERBOUND = true; 2274 2275 enum string[] __fields = ["entityType", "slot"]; 2276 2277 long entityType; 2278 ubyte slot; 2279 2280 this() pure nothrow @safe @nogc {} 2281 2282 this(long entityType, ubyte slot=ubyte.init) pure nothrow @safe @nogc 2283 { 2284 this.entityType = entityType; 2285 this.slot = slot; 2286 } 2287 2288 mixin Make; 2289 2290 public static typeof(this) fromBuffer(ubyte[] buffer) 2291 { 2292 EntityPickRequest ret = new EntityPickRequest(); 2293 ret.decode(buffer); 2294 return ret; 2295 } 2296 2297 override string toString() 2298 { 2299 return "EntityPickRequest(entityType: " ~ std.conv.to!string(this.entityType) ~ ", slot: " ~ std.conv.to!string(this.slot) ~ ")"; 2300 } 2301 2302 } 2303 2304 class PlayerAction : Bedrock261Packet 2305 { 2306 2307 enum uint ID = 36; 2308 2309 enum bool CLIENTBOUND = false; 2310 enum bool SERVERBOUND = true; 2311 2312 // action 2313 enum int START_BREAK = 0; 2314 enum int ABORT_BREAK = 1; 2315 enum int STOP_BREAK = 2; 2316 enum int GET_UPDATED_BLOCK = 3; 2317 enum int DROP_ITEM = 4; 2318 enum int START_SLEEPING = 5; 2319 enum int STOP_SLEEPING = 6; 2320 enum int RESPAWN = 7; 2321 enum int JUMP = 8; 2322 enum int START_SPRINT = 9; 2323 enum int STOP_SPRINT = 10; 2324 enum int START_SNEAK = 11; 2325 enum int STOP_SNEAK = 12; 2326 enum int START_GLIDING = 15; 2327 enum int STOP_GLIDING = 16; 2328 enum int BUILD_DENIED = 17; 2329 enum int CONTINUE_BREAK = 18; 2330 enum int CHANGE_SKIN = 19; 2331 enum int SET_ENCHANTMENT_SEED = 20; 2332 enum int START_SWIMMING = 21; 2333 enum int STOP_SWIMMING = 22; 2334 enum int START_SPIN_ATTACK = 23; 2335 enum int STOP_SPIN_ATTACK = 24; 2336 2337 enum string[] __fields = ["entityId", "action", "position", "face"]; 2338 2339 @Var long entityId; 2340 @Var int action; 2341 soupply.bedrock261.types.BlockPosition position; 2342 @Var int face; 2343 2344 this() pure nothrow @safe @nogc {} 2345 2346 this(long entityId, int action=int.init, soupply.bedrock261.types.BlockPosition position=soupply.bedrock261.types.BlockPosition.init, int face=int.init) pure nothrow @safe @nogc 2347 { 2348 this.entityId = entityId; 2349 this.action = action; 2350 this.position = position; 2351 this.face = face; 2352 } 2353 2354 mixin Make; 2355 2356 public static typeof(this) fromBuffer(ubyte[] buffer) 2357 { 2358 PlayerAction ret = new PlayerAction(); 2359 ret.decode(buffer); 2360 return ret; 2361 } 2362 2363 override string toString() 2364 { 2365 return "PlayerAction(entityId: " ~ std.conv.to!string(this.entityId) ~ ", action: " ~ std.conv.to!string(this.action) ~ ", position: " ~ std.conv.to!string(this.position) ~ ", face: " ~ std.conv.to!string(this.face) ~ ")"; 2366 } 2367 2368 } 2369 2370 class EntityFall : Bedrock261Packet 2371 { 2372 2373 enum uint ID = 37; 2374 2375 enum bool CLIENTBOUND = false; 2376 enum bool SERVERBOUND = true; 2377 2378 enum string[] __fields = ["entityId", "distance", "unknown2"]; 2379 2380 @Var long entityId; 2381 float distance; 2382 bool unknown2; 2383 2384 this() pure nothrow @safe @nogc {} 2385 2386 this(long entityId, float distance=float.init, bool unknown2=bool.init) pure nothrow @safe @nogc 2387 { 2388 this.entityId = entityId; 2389 this.distance = distance; 2390 this.unknown2 = unknown2; 2391 } 2392 2393 mixin Make; 2394 2395 public static typeof(this) fromBuffer(ubyte[] buffer) 2396 { 2397 EntityFall ret = new EntityFall(); 2398 ret.decode(buffer); 2399 return ret; 2400 } 2401 2402 override string toString() 2403 { 2404 return "EntityFall(entityId: " ~ std.conv.to!string(this.entityId) ~ ", distance: " ~ std.conv.to!string(this.distance) ~ ", unknown2: " ~ std.conv.to!string(this.unknown2) ~ ")"; 2405 } 2406 2407 } 2408 2409 class HurtArmor : Bedrock261Packet 2410 { 2411 2412 enum uint ID = 38; 2413 2414 enum bool CLIENTBOUND = true; 2415 enum bool SERVERBOUND = false; 2416 2417 enum string[] __fields = ["unknown0"]; 2418 2419 @Var int unknown0; 2420 2421 this() pure nothrow @safe @nogc {} 2422 2423 this(int unknown0) pure nothrow @safe @nogc 2424 { 2425 this.unknown0 = unknown0; 2426 } 2427 2428 mixin Make; 2429 2430 public static typeof(this) fromBuffer(ubyte[] buffer) 2431 { 2432 HurtArmor ret = new HurtArmor(); 2433 ret.decode(buffer); 2434 return ret; 2435 } 2436 2437 override string toString() 2438 { 2439 return "HurtArmor(unknown0: " ~ std.conv.to!string(this.unknown0) ~ ")"; 2440 } 2441 2442 } 2443 2444 class SetEntityData : Bedrock261Packet 2445 { 2446 2447 enum uint ID = 39; 2448 2449 enum bool CLIENTBOUND = true; 2450 enum bool SERVERBOUND = false; 2451 2452 enum string[] __fields = ["entityId", "metadata"]; 2453 2454 @Var long entityId; 2455 Metadata metadata; 2456 2457 this() pure nothrow @safe @nogc {} 2458 2459 this(long entityId, Metadata metadata=Metadata.init) pure nothrow @safe @nogc 2460 { 2461 this.entityId = entityId; 2462 this.metadata = metadata; 2463 } 2464 2465 mixin Make; 2466 2467 public static typeof(this) fromBuffer(ubyte[] buffer) 2468 { 2469 SetEntityData ret = new SetEntityData(); 2470 ret.decode(buffer); 2471 return ret; 2472 } 2473 2474 override string toString() 2475 { 2476 return "SetEntityData(entityId: " ~ std.conv.to!string(this.entityId) ~ ", metadata: " ~ std.conv.to!string(this.metadata) ~ ")"; 2477 } 2478 2479 } 2480 2481 class SetEntityMotion : Bedrock261Packet 2482 { 2483 2484 enum uint ID = 40; 2485 2486 enum bool CLIENTBOUND = true; 2487 enum bool SERVERBOUND = false; 2488 2489 enum string[] __fields = ["entityId", "motion"]; 2490 2491 @Var long entityId; 2492 Vector!(float, "xyz") motion; 2493 2494 this() pure nothrow @safe @nogc {} 2495 2496 this(long entityId, Vector!(float, "xyz") motion=Vector!(float, "xyz").init) pure nothrow @safe @nogc 2497 { 2498 this.entityId = entityId; 2499 this.motion = motion; 2500 } 2501 2502 mixin Make; 2503 2504 public static typeof(this) fromBuffer(ubyte[] buffer) 2505 { 2506 SetEntityMotion ret = new SetEntityMotion(); 2507 ret.decode(buffer); 2508 return ret; 2509 } 2510 2511 override string toString() 2512 { 2513 return "SetEntityMotion(entityId: " ~ std.conv.to!string(this.entityId) ~ ", motion: " ~ std.conv.to!string(this.motion) ~ ")"; 2514 } 2515 2516 } 2517 2518 class SetEntityLink : Bedrock261Packet 2519 { 2520 2521 enum uint ID = 41; 2522 2523 enum bool CLIENTBOUND = true; 2524 enum bool SERVERBOUND = false; 2525 2526 // action 2527 enum ubyte REMOVE = 0; 2528 enum ubyte ADD = 1; 2529 2530 enum string[] __fields = ["vehicle", "passenger", "action"]; 2531 2532 @Var long vehicle; 2533 @Var long passenger; 2534 ubyte action; 2535 2536 this() pure nothrow @safe @nogc {} 2537 2538 this(long vehicle, long passenger=long.init, ubyte action=ubyte.init) pure nothrow @safe @nogc 2539 { 2540 this.vehicle = vehicle; 2541 this.passenger = passenger; 2542 this.action = action; 2543 } 2544 2545 mixin Make; 2546 2547 public static typeof(this) fromBuffer(ubyte[] buffer) 2548 { 2549 SetEntityLink ret = new SetEntityLink(); 2550 ret.decode(buffer); 2551 return ret; 2552 } 2553 2554 override string toString() 2555 { 2556 return "SetEntityLink(vehicle: " ~ std.conv.to!string(this.vehicle) ~ ", passenger: " ~ std.conv.to!string(this.passenger) ~ ", action: " ~ std.conv.to!string(this.action) ~ ")"; 2557 } 2558 2559 } 2560 2561 class SetHealth : Bedrock261Packet 2562 { 2563 2564 enum uint ID = 42; 2565 2566 enum bool CLIENTBOUND = true; 2567 enum bool SERVERBOUND = false; 2568 2569 enum string[] __fields = ["health"]; 2570 2571 @Var int health; 2572 2573 this() pure nothrow @safe @nogc {} 2574 2575 this(int health) pure nothrow @safe @nogc 2576 { 2577 this.health = health; 2578 } 2579 2580 mixin Make; 2581 2582 public static typeof(this) fromBuffer(ubyte[] buffer) 2583 { 2584 SetHealth ret = new SetHealth(); 2585 ret.decode(buffer); 2586 return ret; 2587 } 2588 2589 override string toString() 2590 { 2591 return "SetHealth(health: " ~ std.conv.to!string(this.health) ~ ")"; 2592 } 2593 2594 } 2595 2596 class SetSpawnPosition : Bedrock261Packet 2597 { 2598 2599 enum uint ID = 43; 2600 2601 enum bool CLIENTBOUND = true; 2602 enum bool SERVERBOUND = false; 2603 2604 // type 2605 enum int PLAYER_SPAWN = 0; 2606 enum int WORLD_SPAWN = 1; 2607 2608 enum string[] __fields = ["type", "position", "forced"]; 2609 2610 @Var int type; 2611 soupply.bedrock261.types.BlockPosition position; 2612 bool forced; 2613 2614 this() pure nothrow @safe @nogc {} 2615 2616 this(int type, soupply.bedrock261.types.BlockPosition position=soupply.bedrock261.types.BlockPosition.init, bool forced=bool.init) pure nothrow @safe @nogc 2617 { 2618 this.type = type; 2619 this.position = position; 2620 this.forced = forced; 2621 } 2622 2623 mixin Make; 2624 2625 public static typeof(this) fromBuffer(ubyte[] buffer) 2626 { 2627 SetSpawnPosition ret = new SetSpawnPosition(); 2628 ret.decode(buffer); 2629 return ret; 2630 } 2631 2632 override string toString() 2633 { 2634 return "SetSpawnPosition(type: " ~ std.conv.to!string(this.type) ~ ", position: " ~ std.conv.to!string(this.position) ~ ", forced: " ~ std.conv.to!string(this.forced) ~ ")"; 2635 } 2636 2637 } 2638 2639 class Animate : Bedrock261Packet 2640 { 2641 2642 enum uint ID = 44; 2643 2644 enum bool CLIENTBOUND = true; 2645 enum bool SERVERBOUND = true; 2646 2647 // action 2648 enum int BREAKING = 1; 2649 enum int WAKE_UP = 3; 2650 2651 enum string[] __fields = ["action", "entityId", "unknown2"]; 2652 2653 @Var int action; 2654 @Var long entityId; 2655 @Condition("action>128") float unknown2; 2656 2657 this() pure nothrow @safe @nogc {} 2658 2659 this(int action, long entityId=long.init, float unknown2=float.init) pure nothrow @safe @nogc 2660 { 2661 this.action = action; 2662 this.entityId = entityId; 2663 this.unknown2 = unknown2; 2664 } 2665 2666 mixin Make; 2667 2668 public static typeof(this) fromBuffer(ubyte[] buffer) 2669 { 2670 Animate ret = new Animate(); 2671 ret.decode(buffer); 2672 return ret; 2673 } 2674 2675 override string toString() 2676 { 2677 return "Animate(action: " ~ std.conv.to!string(this.action) ~ ", entityId: " ~ std.conv.to!string(this.entityId) ~ ", unknown2: " ~ std.conv.to!string(this.unknown2) ~ ")"; 2678 } 2679 2680 } 2681 2682 class Respawn : Bedrock261Packet 2683 { 2684 2685 enum uint ID = 45; 2686 2687 enum bool CLIENTBOUND = true; 2688 enum bool SERVERBOUND = false; 2689 2690 enum string[] __fields = ["position"]; 2691 2692 Vector!(float, "xyz") position; 2693 2694 this() pure nothrow @safe @nogc {} 2695 2696 this(Vector!(float, "xyz") position) pure nothrow @safe @nogc 2697 { 2698 this.position = position; 2699 } 2700 2701 mixin Make; 2702 2703 public static typeof(this) fromBuffer(ubyte[] buffer) 2704 { 2705 Respawn ret = new Respawn(); 2706 ret.decode(buffer); 2707 return ret; 2708 } 2709 2710 override string toString() 2711 { 2712 return "Respawn(position: " ~ std.conv.to!string(this.position) ~ ")"; 2713 } 2714 2715 } 2716 2717 class ContainerOpen : Bedrock261Packet 2718 { 2719 2720 enum uint ID = 46; 2721 2722 enum bool CLIENTBOUND = true; 2723 enum bool SERVERBOUND = false; 2724 2725 enum string[] __fields = ["window", "type", "position", "entityId"]; 2726 2727 ubyte window; 2728 ubyte type; 2729 soupply.bedrock261.types.BlockPosition position; 2730 @Var long entityId; 2731 2732 this() pure nothrow @safe @nogc {} 2733 2734 this(ubyte window, ubyte type=ubyte.init, soupply.bedrock261.types.BlockPosition position=soupply.bedrock261.types.BlockPosition.init, long entityId=long.init) pure nothrow @safe @nogc 2735 { 2736 this.window = window; 2737 this.type = type; 2738 this.position = position; 2739 this.entityId = entityId; 2740 } 2741 2742 mixin Make; 2743 2744 public static typeof(this) fromBuffer(ubyte[] buffer) 2745 { 2746 ContainerOpen ret = new ContainerOpen(); 2747 ret.decode(buffer); 2748 return ret; 2749 } 2750 2751 override string toString() 2752 { 2753 return "ContainerOpen(window: " ~ std.conv.to!string(this.window) ~ ", type: " ~ std.conv.to!string(this.type) ~ ", position: " ~ std.conv.to!string(this.position) ~ ", entityId: " ~ std.conv.to!string(this.entityId) ~ ")"; 2754 } 2755 2756 } 2757 2758 class ContainerClose : Bedrock261Packet 2759 { 2760 2761 enum uint ID = 47; 2762 2763 enum bool CLIENTBOUND = true; 2764 enum bool SERVERBOUND = true; 2765 2766 enum string[] __fields = ["window"]; 2767 2768 ubyte window; 2769 2770 this() pure nothrow @safe @nogc {} 2771 2772 this(ubyte window) pure nothrow @safe @nogc 2773 { 2774 this.window = window; 2775 } 2776 2777 mixin Make; 2778 2779 public static typeof(this) fromBuffer(ubyte[] buffer) 2780 { 2781 ContainerClose ret = new ContainerClose(); 2782 ret.decode(buffer); 2783 return ret; 2784 } 2785 2786 override string toString() 2787 { 2788 return "ContainerClose(window: " ~ std.conv.to!string(this.window) ~ ")"; 2789 } 2790 2791 } 2792 2793 class PlayerHotbar : Bedrock261Packet 2794 { 2795 2796 enum uint ID = 48; 2797 2798 enum bool CLIENTBOUND = false; 2799 enum bool SERVERBOUND = false; 2800 2801 enum string[] __fields = []; 2802 2803 mixin Make; 2804 2805 public static typeof(this) fromBuffer(ubyte[] buffer) 2806 { 2807 PlayerHotbar ret = new PlayerHotbar(); 2808 ret.decode(buffer); 2809 return ret; 2810 } 2811 2812 override string toString() 2813 { 2814 return "PlayerHotbar()"; 2815 } 2816 2817 } 2818 2819 class InventoryContent : Bedrock261Packet 2820 { 2821 2822 enum uint ID = 49; 2823 2824 enum bool CLIENTBOUND = true; 2825 enum bool SERVERBOUND = false; 2826 2827 enum string[] __fields = ["window", "slots"]; 2828 2829 @Var uint window; 2830 soupply.bedrock261.types.Slot[] slots; 2831 2832 this() pure nothrow @safe @nogc {} 2833 2834 this(uint window, soupply.bedrock261.types.Slot[] slots=(soupply.bedrock261.types.Slot[]).init) pure nothrow @safe @nogc 2835 { 2836 this.window = window; 2837 this.slots = slots; 2838 } 2839 2840 mixin Make; 2841 2842 public static typeof(this) fromBuffer(ubyte[] buffer) 2843 { 2844 InventoryContent ret = new InventoryContent(); 2845 ret.decode(buffer); 2846 return ret; 2847 } 2848 2849 override string toString() 2850 { 2851 return "InventoryContent(window: " ~ std.conv.to!string(this.window) ~ ", slots: " ~ std.conv.to!string(this.slots) ~ ")"; 2852 } 2853 2854 } 2855 2856 class InventorySlot : Bedrock261Packet 2857 { 2858 2859 enum uint ID = 50; 2860 2861 enum bool CLIENTBOUND = true; 2862 enum bool SERVERBOUND = false; 2863 2864 enum string[] __fields = []; 2865 2866 mixin Make; 2867 2868 public static typeof(this) fromBuffer(ubyte[] buffer) 2869 { 2870 InventorySlot ret = new InventorySlot(); 2871 ret.decode(buffer); 2872 return ret; 2873 } 2874 2875 override string toString() 2876 { 2877 return "InventorySlot()"; 2878 } 2879 2880 } 2881 2882 class ContainerSetData : Bedrock261Packet 2883 { 2884 2885 enum uint ID = 51; 2886 2887 enum bool CLIENTBOUND = true; 2888 enum bool SERVERBOUND = false; 2889 2890 enum string[] __fields = ["window", "property", "value"]; 2891 2892 ubyte window; 2893 @Var int property; 2894 @Var int value; 2895 2896 this() pure nothrow @safe @nogc {} 2897 2898 this(ubyte window, int property=int.init, int value=int.init) pure nothrow @safe @nogc 2899 { 2900 this.window = window; 2901 this.property = property; 2902 this.value = value; 2903 } 2904 2905 mixin Make; 2906 2907 public static typeof(this) fromBuffer(ubyte[] buffer) 2908 { 2909 ContainerSetData ret = new ContainerSetData(); 2910 ret.decode(buffer); 2911 return ret; 2912 } 2913 2914 override string toString() 2915 { 2916 return "ContainerSetData(window: " ~ std.conv.to!string(this.window) ~ ", property: " ~ std.conv.to!string(this.property) ~ ", value: " ~ std.conv.to!string(this.value) ~ ")"; 2917 } 2918 2919 } 2920 2921 class CraftingData : Bedrock261Packet 2922 { 2923 2924 enum uint ID = 52; 2925 2926 enum bool CLIENTBOUND = true; 2927 enum bool SERVERBOUND = false; 2928 2929 enum string[] __fields = ["recipes"]; 2930 2931 soupply.bedrock261.types.Recipe[] recipes; 2932 2933 this() pure nothrow @safe @nogc {} 2934 2935 this(soupply.bedrock261.types.Recipe[] recipes) pure nothrow @safe @nogc 2936 { 2937 this.recipes = recipes; 2938 } 2939 2940 mixin Make; 2941 2942 public static typeof(this) fromBuffer(ubyte[] buffer) 2943 { 2944 CraftingData ret = new CraftingData(); 2945 ret.decode(buffer); 2946 return ret; 2947 } 2948 2949 override string toString() 2950 { 2951 return "CraftingData(recipes: " ~ std.conv.to!string(this.recipes) ~ ")"; 2952 } 2953 2954 } 2955 2956 class CraftingEvent : Bedrock261Packet 2957 { 2958 2959 enum uint ID = 53; 2960 2961 enum bool CLIENTBOUND = false; 2962 enum bool SERVERBOUND = true; 2963 2964 enum string[] __fields = ["window", "type", "uuid", "input", "output"]; 2965 2966 ubyte window; 2967 @Var int type; 2968 soupply.bedrock261.types.McpeUuid uuid; 2969 soupply.bedrock261.types.Slot[] input; 2970 soupply.bedrock261.types.Slot[] output; 2971 2972 this() pure nothrow @safe @nogc {} 2973 2974 this(ubyte window, int type=int.init, soupply.bedrock261.types.McpeUuid uuid=soupply.bedrock261.types.McpeUuid.init, soupply.bedrock261.types.Slot[] input=(soupply.bedrock261.types.Slot[]).init, soupply.bedrock261.types.Slot[] output=(soupply.bedrock261.types.Slot[]).init) pure nothrow @safe @nogc 2975 { 2976 this.window = window; 2977 this.type = type; 2978 this.uuid = uuid; 2979 this.input = input; 2980 this.output = output; 2981 } 2982 2983 mixin Make; 2984 2985 public static typeof(this) fromBuffer(ubyte[] buffer) 2986 { 2987 CraftingEvent ret = new CraftingEvent(); 2988 ret.decode(buffer); 2989 return ret; 2990 } 2991 2992 override string toString() 2993 { 2994 return "CraftingEvent(window: " ~ std.conv.to!string(this.window) ~ ", type: " ~ std.conv.to!string(this.type) ~ ", uuid: " ~ std.conv.to!string(this.uuid) ~ ", input: " ~ std.conv.to!string(this.input) ~ ", output: " ~ std.conv.to!string(this.output) ~ ")"; 2995 } 2996 2997 } 2998 2999 class GuiDataPickItem : Bedrock261Packet 3000 { 3001 3002 enum uint ID = 54; 3003 3004 enum bool CLIENTBOUND = false; 3005 enum bool SERVERBOUND = true; 3006 3007 enum string[] __fields = ["slot"]; 3008 3009 @LittleEndian uint slot; 3010 3011 this() pure nothrow @safe @nogc {} 3012 3013 this(uint slot) pure nothrow @safe @nogc 3014 { 3015 this.slot = slot; 3016 } 3017 3018 mixin Make; 3019 3020 public static typeof(this) fromBuffer(ubyte[] buffer) 3021 { 3022 GuiDataPickItem ret = new GuiDataPickItem(); 3023 ret.decode(buffer); 3024 return ret; 3025 } 3026 3027 override string toString() 3028 { 3029 return "GuiDataPickItem(slot: " ~ std.conv.to!string(this.slot) ~ ")"; 3030 } 3031 3032 } 3033 3034 class AdventureSettings : Bedrock261Packet 3035 { 3036 3037 enum uint ID = 55; 3038 3039 enum bool CLIENTBOUND = true; 3040 enum bool SERVERBOUND = true; 3041 3042 // flags 3043 enum uint IMMUTABLE_WORLD = 1; 3044 enum uint PVP_DISABLED = 2; 3045 enum uint PVM_DISABLED = 4; 3046 enum uint MVP_DISBALED = 8; 3047 enum uint EVP_DISABLED = 16; 3048 enum uint AUTO_JUMP = 32; 3049 enum uint ALLOW_FLIGHT = 64; 3050 enum uint NO_CLIP = 128; 3051 enum uint FLYING = 512; 3052 enum uint MUTED = 1024; 3053 3054 // permission level 3055 enum uint LEVEL_USER = 0; 3056 enum uint LEVEL_OPERATOR = 1; 3057 enum uint LEVEL_HOST = 2; 3058 enum uint LEVEL_AUTOMATION = 3; 3059 enum uint LEVEL_ADMIN = 4; 3060 3061 // abilities 3062 enum uint BUILD_AND_MINE = 1; 3063 enum uint DOORS_AND_SWITCHES = 2; 3064 enum uint OPEN_CONTAINERS = 4; 3065 enum uint ATTACK_PLAYERS = 8; 3066 enum uint ATTACK_MOBS = 16; 3067 enum uint OP = 32; 3068 enum uint TELEPORT = 64; 3069 3070 // player rank 3071 enum uint VISITOR = 0; 3072 enum uint MEMBER = 1; 3073 enum uint OPERATOR = 2; 3074 enum uint CUSTOM = 3; 3075 3076 enum string[] __fields = ["flags", "permissionLevel", "abilities", "playerRank", "customPermissions", "entityId"]; 3077 3078 @Var uint flags; 3079 @Var uint permissionLevel; 3080 @Var uint abilities; 3081 @Var uint playerRank; 3082 @Var uint customPermissions; 3083 long entityId; 3084 3085 this() pure nothrow @safe @nogc {} 3086 3087 this(uint flags, uint permissionLevel=uint.init, uint abilities=uint.init, uint playerRank=uint.init, uint customPermissions=uint.init, long entityId=long.init) pure nothrow @safe @nogc 3088 { 3089 this.flags = flags; 3090 this.permissionLevel = permissionLevel; 3091 this.abilities = abilities; 3092 this.playerRank = playerRank; 3093 this.customPermissions = customPermissions; 3094 this.entityId = entityId; 3095 } 3096 3097 mixin Make; 3098 3099 public static typeof(this) fromBuffer(ubyte[] buffer) 3100 { 3101 AdventureSettings ret = new AdventureSettings(); 3102 ret.decode(buffer); 3103 return ret; 3104 } 3105 3106 override string toString() 3107 { 3108 return "AdventureSettings(flags: " ~ std.conv.to!string(this.flags) ~ ", permissionLevel: " ~ std.conv.to!string(this.permissionLevel) ~ ", abilities: " ~ std.conv.to!string(this.abilities) ~ ", playerRank: " ~ std.conv.to!string(this.playerRank) ~ ", customPermissions: " ~ std.conv.to!string(this.customPermissions) ~ ", entityId: " ~ std.conv.to!string(this.entityId) ~ ")"; 3109 } 3110 3111 } 3112 3113 class BlockEntityData : Bedrock261Packet 3114 { 3115 3116 enum uint ID = 56; 3117 3118 enum bool CLIENTBOUND = true; 3119 enum bool SERVERBOUND = true; 3120 3121 enum string[] __fields = ["position", "nbt"]; 3122 3123 soupply.bedrock261.types.BlockPosition position; 3124 @NoLength ubyte[] nbt; 3125 3126 this() pure nothrow @safe @nogc {} 3127 3128 this(soupply.bedrock261.types.BlockPosition position, ubyte[] nbt=(ubyte[]).init) pure nothrow @safe @nogc 3129 { 3130 this.position = position; 3131 this.nbt = nbt; 3132 } 3133 3134 mixin Make; 3135 3136 public static typeof(this) fromBuffer(ubyte[] buffer) 3137 { 3138 BlockEntityData ret = new BlockEntityData(); 3139 ret.decode(buffer); 3140 return ret; 3141 } 3142 3143 override string toString() 3144 { 3145 return "BlockEntityData(position: " ~ std.conv.to!string(this.position) ~ ", nbt: " ~ std.conv.to!string(this.nbt) ~ ")"; 3146 } 3147 3148 } 3149 3150 class PlayerInput : Bedrock261Packet 3151 { 3152 3153 enum uint ID = 57; 3154 3155 enum bool CLIENTBOUND = false; 3156 enum bool SERVERBOUND = true; 3157 3158 enum string[] __fields = ["sideways", "forward", "unknown2", "unknown3"]; 3159 3160 float sideways; 3161 float forward; 3162 bool unknown2; 3163 bool unknown3; 3164 3165 this() pure nothrow @safe @nogc {} 3166 3167 this(float sideways, float forward=float.init, bool unknown2=bool.init, bool unknown3=bool.init) pure nothrow @safe @nogc 3168 { 3169 this.sideways = sideways; 3170 this.forward = forward; 3171 this.unknown2 = unknown2; 3172 this.unknown3 = unknown3; 3173 } 3174 3175 mixin Make; 3176 3177 public static typeof(this) fromBuffer(ubyte[] buffer) 3178 { 3179 PlayerInput ret = new PlayerInput(); 3180 ret.decode(buffer); 3181 return ret; 3182 } 3183 3184 override string toString() 3185 { 3186 return "PlayerInput(sideways: " ~ std.conv.to!string(this.sideways) ~ ", forward: " ~ std.conv.to!string(this.forward) ~ ", unknown2: " ~ std.conv.to!string(this.unknown2) ~ ", unknown3: " ~ std.conv.to!string(this.unknown3) ~ ")"; 3187 } 3188 3189 } 3190 3191 class FullChunkData : Bedrock261Packet 3192 { 3193 3194 enum uint ID = 58; 3195 3196 enum bool CLIENTBOUND = true; 3197 enum bool SERVERBOUND = false; 3198 3199 enum string[] __fields = ["position", "data"]; 3200 3201 @Var Vector!(int, "xz") position; 3202 soupply.bedrock261.types.ChunkData data; 3203 3204 this() pure nothrow @safe @nogc {} 3205 3206 this(Vector!(int, "xz") position, soupply.bedrock261.types.ChunkData data=soupply.bedrock261.types.ChunkData.init) pure nothrow @safe @nogc 3207 { 3208 this.position = position; 3209 this.data = data; 3210 } 3211 3212 mixin Make; 3213 3214 public static typeof(this) fromBuffer(ubyte[] buffer) 3215 { 3216 FullChunkData ret = new FullChunkData(); 3217 ret.decode(buffer); 3218 return ret; 3219 } 3220 3221 override string toString() 3222 { 3223 return "FullChunkData(position: " ~ std.conv.to!string(this.position) ~ ", data: " ~ std.conv.to!string(this.data) ~ ")"; 3224 } 3225 3226 } 3227 3228 class SetCommandsEnabled : Bedrock261Packet 3229 { 3230 3231 enum uint ID = 59; 3232 3233 enum bool CLIENTBOUND = true; 3234 enum bool SERVERBOUND = false; 3235 3236 enum string[] __fields = ["enabled"]; 3237 3238 bool enabled; 3239 3240 this() pure nothrow @safe @nogc {} 3241 3242 this(bool enabled) pure nothrow @safe @nogc 3243 { 3244 this.enabled = enabled; 3245 } 3246 3247 mixin Make; 3248 3249 public static typeof(this) fromBuffer(ubyte[] buffer) 3250 { 3251 SetCommandsEnabled ret = new SetCommandsEnabled(); 3252 ret.decode(buffer); 3253 return ret; 3254 } 3255 3256 override string toString() 3257 { 3258 return "SetCommandsEnabled(enabled: " ~ std.conv.to!string(this.enabled) ~ ")"; 3259 } 3260 3261 } 3262 3263 class SetDifficulty : Bedrock261Packet 3264 { 3265 3266 enum uint ID = 60; 3267 3268 enum bool CLIENTBOUND = true; 3269 enum bool SERVERBOUND = false; 3270 3271 // difficulty 3272 enum uint PEACEFUL = 0; 3273 enum uint EASY = 1; 3274 enum uint NORMAL = 2; 3275 enum uint HARD = 3; 3276 3277 enum string[] __fields = ["difficulty"]; 3278 3279 @Var uint difficulty; 3280 3281 this() pure nothrow @safe @nogc {} 3282 3283 this(uint difficulty) pure nothrow @safe @nogc 3284 { 3285 this.difficulty = difficulty; 3286 } 3287 3288 mixin Make; 3289 3290 public static typeof(this) fromBuffer(ubyte[] buffer) 3291 { 3292 SetDifficulty ret = new SetDifficulty(); 3293 ret.decode(buffer); 3294 return ret; 3295 } 3296 3297 override string toString() 3298 { 3299 return "SetDifficulty(difficulty: " ~ std.conv.to!string(this.difficulty) ~ ")"; 3300 } 3301 3302 } 3303 3304 class ChangeDimension : Bedrock261Packet 3305 { 3306 3307 enum uint ID = 61; 3308 3309 enum bool CLIENTBOUND = true; 3310 enum bool SERVERBOUND = false; 3311 3312 // dimension 3313 enum int OVERWORLD = 0; 3314 enum int NETHER = 1; 3315 enum int END = 2; 3316 3317 enum string[] __fields = ["dimension", "position", "unknown2"]; 3318 3319 @Var int dimension; 3320 Vector!(float, "xyz") position; 3321 bool unknown2; 3322 3323 this() pure nothrow @safe @nogc {} 3324 3325 this(int dimension, Vector!(float, "xyz") position=Vector!(float, "xyz").init, bool unknown2=bool.init) pure nothrow @safe @nogc 3326 { 3327 this.dimension = dimension; 3328 this.position = position; 3329 this.unknown2 = unknown2; 3330 } 3331 3332 mixin Make; 3333 3334 public static typeof(this) fromBuffer(ubyte[] buffer) 3335 { 3336 ChangeDimension ret = new ChangeDimension(); 3337 ret.decode(buffer); 3338 return ret; 3339 } 3340 3341 override string toString() 3342 { 3343 return "ChangeDimension(dimension: " ~ std.conv.to!string(this.dimension) ~ ", position: " ~ std.conv.to!string(this.position) ~ ", unknown2: " ~ std.conv.to!string(this.unknown2) ~ ")"; 3344 } 3345 3346 } 3347 3348 class SetPlayerGameType : Bedrock261Packet 3349 { 3350 3351 enum uint ID = 62; 3352 3353 enum bool CLIENTBOUND = true; 3354 enum bool SERVERBOUND = true; 3355 3356 // gamemode 3357 enum int SURVIVAL = 0; 3358 enum int CREATIVE = 1; 3359 enum int ADVENTURE = 2; 3360 3361 enum string[] __fields = ["gamemode"]; 3362 3363 @Var int gamemode; 3364 3365 this() pure nothrow @safe @nogc {} 3366 3367 this(int gamemode) pure nothrow @safe @nogc 3368 { 3369 this.gamemode = gamemode; 3370 } 3371 3372 mixin Make; 3373 3374 public static typeof(this) fromBuffer(ubyte[] buffer) 3375 { 3376 SetPlayerGameType ret = new SetPlayerGameType(); 3377 ret.decode(buffer); 3378 return ret; 3379 } 3380 3381 override string toString() 3382 { 3383 return "SetPlayerGameType(gamemode: " ~ std.conv.to!string(this.gamemode) ~ ")"; 3384 } 3385 3386 } 3387 3388 class PlayerList : Bedrock261Packet 3389 { 3390 3391 enum uint ID = 63; 3392 3393 enum bool CLIENTBOUND = true; 3394 enum bool SERVERBOUND = false; 3395 3396 enum string[] __fields = ["action"]; 3397 3398 ubyte action; 3399 3400 this() pure nothrow @safe @nogc {} 3401 3402 this(ubyte action) pure nothrow @safe @nogc 3403 { 3404 this.action = action; 3405 } 3406 3407 mixin Make; 3408 3409 public static typeof(this) fromBuffer(ubyte[] buffer) 3410 { 3411 PlayerList ret = new PlayerList(); 3412 ret.decode(buffer); 3413 return ret; 3414 } 3415 3416 override string toString() 3417 { 3418 return "PlayerList(action: " ~ std.conv.to!string(this.action) ~ ")"; 3419 } 3420 3421 enum string variantField = "action"; 3422 3423 alias Variants = TypeTuple!(Add, Remove); 3424 3425 class Add : Bedrock261Packet 3426 { 3427 3428 enum typeof(action) ACTION = 0; 3429 3430 enum string[] __fields = ["players"]; 3431 3432 soupply.bedrock261.types.PlayerList[] players; 3433 3434 this() pure nothrow @safe @nogc {} 3435 3436 this(soupply.bedrock261.types.PlayerList[] players) pure nothrow @safe @nogc 3437 { 3438 this.players = players; 3439 } 3440 3441 mixin Make; 3442 3443 override string toString() 3444 { 3445 return "PlayerList.Add(players: " ~ std.conv.to!string(this.players) ~ ")"; 3446 } 3447 3448 } 3449 3450 class Remove : Bedrock261Packet 3451 { 3452 3453 enum typeof(action) ACTION = 1; 3454 3455 enum string[] __fields = ["players"]; 3456 3457 soupply.bedrock261.types.McpeUuid[] players; 3458 3459 this() pure nothrow @safe @nogc {} 3460 3461 this(soupply.bedrock261.types.McpeUuid[] players) pure nothrow @safe @nogc 3462 { 3463 this.players = players; 3464 } 3465 3466 mixin Make; 3467 3468 override string toString() 3469 { 3470 return "PlayerList.Remove(players: " ~ std.conv.to!string(this.players) ~ ")"; 3471 } 3472 3473 } 3474 3475 } 3476 3477 class SimpleEvent : Bedrock261Packet 3478 { 3479 3480 enum uint ID = 64; 3481 3482 enum bool CLIENTBOUND = true; 3483 enum bool SERVERBOUND = true; 3484 3485 enum string[] __fields = []; 3486 3487 mixin Make; 3488 3489 public static typeof(this) fromBuffer(ubyte[] buffer) 3490 { 3491 SimpleEvent ret = new SimpleEvent(); 3492 ret.decode(buffer); 3493 return ret; 3494 } 3495 3496 override string toString() 3497 { 3498 return "SimpleEvent()"; 3499 } 3500 3501 } 3502 3503 class Event : Bedrock261Packet 3504 { 3505 3506 enum uint ID = 65; 3507 3508 enum bool CLIENTBOUND = true; 3509 enum bool SERVERBOUND = false; 3510 3511 enum string[] __fields = ["entityId", "eventId"]; 3512 3513 @Var long entityId; 3514 @Var int eventId; 3515 3516 this() pure nothrow @safe @nogc {} 3517 3518 this(long entityId, int eventId=int.init) pure nothrow @safe @nogc 3519 { 3520 this.entityId = entityId; 3521 this.eventId = eventId; 3522 } 3523 3524 mixin Make; 3525 3526 public static typeof(this) fromBuffer(ubyte[] buffer) 3527 { 3528 Event ret = new Event(); 3529 ret.decode(buffer); 3530 return ret; 3531 } 3532 3533 override string toString() 3534 { 3535 return "Event(entityId: " ~ std.conv.to!string(this.entityId) ~ ", eventId: " ~ std.conv.to!string(this.eventId) ~ ")"; 3536 } 3537 3538 } 3539 3540 class SpawnExperienceOrb : Bedrock261Packet 3541 { 3542 3543 enum uint ID = 66; 3544 3545 enum bool CLIENTBOUND = true; 3546 enum bool SERVERBOUND = false; 3547 3548 enum string[] __fields = ["position", "count"]; 3549 3550 Vector!(float, "xyz") position; 3551 @Var int count; 3552 3553 this() pure nothrow @safe @nogc {} 3554 3555 this(Vector!(float, "xyz") position, int count=int.init) pure nothrow @safe @nogc 3556 { 3557 this.position = position; 3558 this.count = count; 3559 } 3560 3561 mixin Make; 3562 3563 public static typeof(this) fromBuffer(ubyte[] buffer) 3564 { 3565 SpawnExperienceOrb ret = new SpawnExperienceOrb(); 3566 ret.decode(buffer); 3567 return ret; 3568 } 3569 3570 override string toString() 3571 { 3572 return "SpawnExperienceOrb(position: " ~ std.conv.to!string(this.position) ~ ", count: " ~ std.conv.to!string(this.count) ~ ")"; 3573 } 3574 3575 } 3576 3577 class ClientboundMapItemData : Bedrock261Packet 3578 { 3579 3580 enum uint ID = 67; 3581 3582 enum bool CLIENTBOUND = true; 3583 enum bool SERVERBOUND = false; 3584 3585 // update 3586 enum uint TEXTURE = 2; 3587 enum uint DECORATIONS = 4; 3588 enum uint ENTITIES = 8; 3589 3590 enum string[] __fields = ["mapId", "update", "scale", "size", "offset", "data", "decorations"]; 3591 3592 @Var long mapId; 3593 @Var uint update; 3594 @Condition("update==2||update==4") ubyte scale; 3595 @Condition("update==2") @Var Vector!(int, "xz") size; 3596 @Condition("update==2") @Var Vector!(int, "xz") offset; 3597 @Condition("update==2") @NoLength ubyte[] data; 3598 @Condition("update==4") soupply.bedrock261.types.Decoration[] decorations; 3599 3600 this() pure nothrow @safe @nogc {} 3601 3602 this(long mapId, uint update=uint.init, ubyte scale=ubyte.init, Vector!(int, "xz") size=Vector!(int, "xz").init, Vector!(int, "xz") offset=Vector!(int, "xz").init, ubyte[] data=(ubyte[]).init, soupply.bedrock261.types.Decoration[] decorations=(soupply.bedrock261.types.Decoration[]).init) pure nothrow @safe @nogc 3603 { 3604 this.mapId = mapId; 3605 this.update = update; 3606 this.scale = scale; 3607 this.size = size; 3608 this.offset = offset; 3609 this.data = data; 3610 this.decorations = decorations; 3611 } 3612 3613 mixin Make; 3614 3615 public static typeof(this) fromBuffer(ubyte[] buffer) 3616 { 3617 ClientboundMapItemData ret = new ClientboundMapItemData(); 3618 ret.decode(buffer); 3619 return ret; 3620 } 3621 3622 override string toString() 3623 { 3624 return "ClientboundMapItemData(mapId: " ~ std.conv.to!string(this.mapId) ~ ", update: " ~ std.conv.to!string(this.update) ~ ", scale: " ~ std.conv.to!string(this.scale) ~ ", size: " ~ std.conv.to!string(this.size) ~ ", offset: " ~ std.conv.to!string(this.offset) ~ ", data: " ~ std.conv.to!string(this.data) ~ ", decorations: " ~ std.conv.to!string(this.decorations) ~ ")"; 3625 } 3626 3627 } 3628 3629 class MapInfoRequest : Bedrock261Packet 3630 { 3631 3632 enum uint ID = 68; 3633 3634 enum bool CLIENTBOUND = false; 3635 enum bool SERVERBOUND = true; 3636 3637 enum string[] __fields = ["mapId"]; 3638 3639 @Var long mapId; 3640 3641 this() pure nothrow @safe @nogc {} 3642 3643 this(long mapId) pure nothrow @safe @nogc 3644 { 3645 this.mapId = mapId; 3646 } 3647 3648 mixin Make; 3649 3650 public static typeof(this) fromBuffer(ubyte[] buffer) 3651 { 3652 MapInfoRequest ret = new MapInfoRequest(); 3653 ret.decode(buffer); 3654 return ret; 3655 } 3656 3657 override string toString() 3658 { 3659 return "MapInfoRequest(mapId: " ~ std.conv.to!string(this.mapId) ~ ")"; 3660 } 3661 3662 } 3663 3664 class RequestChunkRadius : Bedrock261Packet 3665 { 3666 3667 enum uint ID = 69; 3668 3669 enum bool CLIENTBOUND = false; 3670 enum bool SERVERBOUND = true; 3671 3672 enum string[] __fields = ["radius"]; 3673 3674 @Var int radius; 3675 3676 this() pure nothrow @safe @nogc {} 3677 3678 this(int radius) pure nothrow @safe @nogc 3679 { 3680 this.radius = radius; 3681 } 3682 3683 mixin Make; 3684 3685 public static typeof(this) fromBuffer(ubyte[] buffer) 3686 { 3687 RequestChunkRadius ret = new RequestChunkRadius(); 3688 ret.decode(buffer); 3689 return ret; 3690 } 3691 3692 override string toString() 3693 { 3694 return "RequestChunkRadius(radius: " ~ std.conv.to!string(this.radius) ~ ")"; 3695 } 3696 3697 } 3698 3699 class ChunkRadiusUpdated : Bedrock261Packet 3700 { 3701 3702 enum uint ID = 70; 3703 3704 enum bool CLIENTBOUND = true; 3705 enum bool SERVERBOUND = false; 3706 3707 enum string[] __fields = ["radius"]; 3708 3709 @Var int radius; 3710 3711 this() pure nothrow @safe @nogc {} 3712 3713 this(int radius) pure nothrow @safe @nogc 3714 { 3715 this.radius = radius; 3716 } 3717 3718 mixin Make; 3719 3720 public static typeof(this) fromBuffer(ubyte[] buffer) 3721 { 3722 ChunkRadiusUpdated ret = new ChunkRadiusUpdated(); 3723 ret.decode(buffer); 3724 return ret; 3725 } 3726 3727 override string toString() 3728 { 3729 return "ChunkRadiusUpdated(radius: " ~ std.conv.to!string(this.radius) ~ ")"; 3730 } 3731 3732 } 3733 3734 class ItemFrameDropItem : Bedrock261Packet 3735 { 3736 3737 enum uint ID = 71; 3738 3739 enum bool CLIENTBOUND = true; 3740 enum bool SERVERBOUND = false; 3741 3742 enum string[] __fields = ["position", "item"]; 3743 3744 soupply.bedrock261.types.BlockPosition position; 3745 soupply.bedrock261.types.Slot item; 3746 3747 this() pure nothrow @safe @nogc {} 3748 3749 this(soupply.bedrock261.types.BlockPosition position, soupply.bedrock261.types.Slot item=soupply.bedrock261.types.Slot.init) pure nothrow @safe @nogc 3750 { 3751 this.position = position; 3752 this.item = item; 3753 } 3754 3755 mixin Make; 3756 3757 public static typeof(this) fromBuffer(ubyte[] buffer) 3758 { 3759 ItemFrameDropItem ret = new ItemFrameDropItem(); 3760 ret.decode(buffer); 3761 return ret; 3762 } 3763 3764 override string toString() 3765 { 3766 return "ItemFrameDropItem(position: " ~ std.conv.to!string(this.position) ~ ", item: " ~ std.conv.to!string(this.item) ~ ")"; 3767 } 3768 3769 } 3770 3771 class GameRulesChanged : Bedrock261Packet 3772 { 3773 3774 enum uint ID = 72; 3775 3776 enum bool CLIENTBOUND = true; 3777 enum bool SERVERBOUND = false; 3778 3779 enum string[] __fields = ["rules"]; 3780 3781 soupply.bedrock261.types.Rule[] rules; 3782 3783 this() pure nothrow @safe @nogc {} 3784 3785 this(soupply.bedrock261.types.Rule[] rules) pure nothrow @safe @nogc 3786 { 3787 this.rules = rules; 3788 } 3789 3790 mixin Make; 3791 3792 public static typeof(this) fromBuffer(ubyte[] buffer) 3793 { 3794 GameRulesChanged ret = new GameRulesChanged(); 3795 ret.decode(buffer); 3796 return ret; 3797 } 3798 3799 override string toString() 3800 { 3801 return "GameRulesChanged(rules: " ~ std.conv.to!string(this.rules) ~ ")"; 3802 } 3803 3804 } 3805 3806 class Camera : Bedrock261Packet 3807 { 3808 3809 enum uint ID = 73; 3810 3811 enum bool CLIENTBOUND = true; 3812 enum bool SERVERBOUND = false; 3813 3814 enum string[] __fields = ["unknown0", "unknown1"]; 3815 3816 @Var long unknown0; 3817 @Var long unknown1; 3818 3819 this() pure nothrow @safe @nogc {} 3820 3821 this(long unknown0, long unknown1=long.init) pure nothrow @safe @nogc 3822 { 3823 this.unknown0 = unknown0; 3824 this.unknown1 = unknown1; 3825 } 3826 3827 mixin Make; 3828 3829 public static typeof(this) fromBuffer(ubyte[] buffer) 3830 { 3831 Camera ret = new Camera(); 3832 ret.decode(buffer); 3833 return ret; 3834 } 3835 3836 override string toString() 3837 { 3838 return "Camera(unknown0: " ~ std.conv.to!string(this.unknown0) ~ ", unknown1: " ~ std.conv.to!string(this.unknown1) ~ ")"; 3839 } 3840 3841 } 3842 3843 class BossEvent : Bedrock261Packet 3844 { 3845 3846 enum uint ID = 74; 3847 3848 enum bool CLIENTBOUND = true; 3849 enum bool SERVERBOUND = false; 3850 3851 // event id 3852 enum uint ADD = 0; 3853 enum uint UPDATE = 1; 3854 enum uint REMOVE = 2; 3855 3856 enum string[] __fields = ["entityId", "eventId"]; 3857 3858 @Var long entityId; 3859 @Var uint eventId; 3860 3861 this() pure nothrow @safe @nogc {} 3862 3863 this(long entityId, uint eventId=uint.init) pure nothrow @safe @nogc 3864 { 3865 this.entityId = entityId; 3866 this.eventId = eventId; 3867 } 3868 3869 mixin Make; 3870 3871 public static typeof(this) fromBuffer(ubyte[] buffer) 3872 { 3873 BossEvent ret = new BossEvent(); 3874 ret.decode(buffer); 3875 return ret; 3876 } 3877 3878 override string toString() 3879 { 3880 return "BossEvent(entityId: " ~ std.conv.to!string(this.entityId) ~ ", eventId: " ~ std.conv.to!string(this.eventId) ~ ")"; 3881 } 3882 3883 } 3884 3885 class ShowCredits : Bedrock261Packet 3886 { 3887 3888 enum uint ID = 75; 3889 3890 enum bool CLIENTBOUND = true; 3891 enum bool SERVERBOUND = true; 3892 3893 // status 3894 enum int START = 0; 3895 enum int END = 1; 3896 3897 enum string[] __fields = ["entityId", "status"]; 3898 3899 @Var long entityId; 3900 @Var int status; 3901 3902 this() pure nothrow @safe @nogc {} 3903 3904 this(long entityId, int status=int.init) pure nothrow @safe @nogc 3905 { 3906 this.entityId = entityId; 3907 this.status = status; 3908 } 3909 3910 mixin Make; 3911 3912 public static typeof(this) fromBuffer(ubyte[] buffer) 3913 { 3914 ShowCredits ret = new ShowCredits(); 3915 ret.decode(buffer); 3916 return ret; 3917 } 3918 3919 override string toString() 3920 { 3921 return "ShowCredits(entityId: " ~ std.conv.to!string(this.entityId) ~ ", status: " ~ std.conv.to!string(this.status) ~ ")"; 3922 } 3923 3924 } 3925 3926 class AvailableCommands : Bedrock261Packet 3927 { 3928 3929 enum uint ID = 76; 3930 3931 enum bool CLIENTBOUND = true; 3932 enum bool SERVERBOUND = false; 3933 3934 enum string[] __fields = ["enumValues", "unknown1", "enums", "commands"]; 3935 3936 string[] enumValues; 3937 string[] unknown1; 3938 soupply.bedrock261.types.Enum[] enums; 3939 soupply.bedrock261.types.Command[] commands; 3940 3941 this() pure nothrow @safe @nogc {} 3942 3943 this(string[] enumValues, string[] unknown1=(string[]).init, soupply.bedrock261.types.Enum[] enums=(soupply.bedrock261.types.Enum[]).init, soupply.bedrock261.types.Command[] commands=(soupply.bedrock261.types.Command[]).init) pure nothrow @safe @nogc 3944 { 3945 this.enumValues = enumValues; 3946 this.unknown1 = unknown1; 3947 this.enums = enums; 3948 this.commands = commands; 3949 } 3950 3951 mixin Make; 3952 3953 public static typeof(this) fromBuffer(ubyte[] buffer) 3954 { 3955 AvailableCommands ret = new AvailableCommands(); 3956 ret.decode(buffer); 3957 return ret; 3958 } 3959 3960 override string toString() 3961 { 3962 return "AvailableCommands(enumValues: " ~ std.conv.to!string(this.enumValues) ~ ", unknown1: " ~ std.conv.to!string(this.unknown1) ~ ", enums: " ~ std.conv.to!string(this.enums) ~ ", commands: " ~ std.conv.to!string(this.commands) ~ ")"; 3963 } 3964 3965 } 3966 3967 class CommandRequest : Bedrock261Packet 3968 { 3969 3970 enum uint ID = 77; 3971 3972 enum bool CLIENTBOUND = false; 3973 enum bool SERVERBOUND = true; 3974 3975 // type 3976 enum uint PLAYER = 0; 3977 enum uint COMMAND_BLOCK = 1; 3978 enum uint MINECART_COMMAND_BLOCK = 2; 3979 enum uint DEV_CONSOLE = 3; 3980 3981 enum string[] __fields = ["command", "type", "uuid", "requestId", "playerId", "internal"]; 3982 3983 string command; 3984 @Var uint type; 3985 soupply.bedrock261.types.McpeUuid uuid; 3986 string requestId; 3987 @Condition("type==3") @Var int playerId; 3988 bool internal; 3989 3990 this() pure nothrow @safe @nogc {} 3991 3992 this(string command, uint type=uint.init, soupply.bedrock261.types.McpeUuid uuid=soupply.bedrock261.types.McpeUuid.init, string requestId=string.init, int playerId=int.init, bool internal=bool.init) pure nothrow @safe @nogc 3993 { 3994 this.command = command; 3995 this.type = type; 3996 this.uuid = uuid; 3997 this.requestId = requestId; 3998 this.playerId = playerId; 3999 this.internal = internal; 4000 } 4001 4002 mixin Make; 4003 4004 public static typeof(this) fromBuffer(ubyte[] buffer) 4005 { 4006 CommandRequest ret = new CommandRequest(); 4007 ret.decode(buffer); 4008 return ret; 4009 } 4010 4011 override string toString() 4012 { 4013 return "CommandRequest(command: " ~ std.conv.to!string(this.command) ~ ", type: " ~ std.conv.to!string(this.type) ~ ", uuid: " ~ std.conv.to!string(this.uuid) ~ ", requestId: " ~ std.conv.to!string(this.requestId) ~ ", playerId: " ~ std.conv.to!string(this.playerId) ~ ", internal: " ~ std.conv.to!string(this.internal) ~ ")"; 4014 } 4015 4016 } 4017 4018 class CommandBlockUpdate : Bedrock261Packet 4019 { 4020 4021 enum uint ID = 78; 4022 4023 enum bool CLIENTBOUND = true; 4024 enum bool SERVERBOUND = true; 4025 4026 enum string[] __fields = ["updateBlock", "position", "mode", "redstoneMode", "conditional", "minecart", "command", "lastOutput", "hover", "trackOutput"]; 4027 4028 bool updateBlock; 4029 @Condition("updateBlock==true") soupply.bedrock261.types.BlockPosition position; 4030 @Condition("updateBlock==true") @Var uint mode; 4031 @Condition("updateBlock==true") bool redstoneMode; 4032 @Condition("updateBlock==true") bool conditional; 4033 @Condition("updateBlock==false") @Var long minecart; 4034 string command; 4035 string lastOutput; 4036 string hover; 4037 bool trackOutput; 4038 4039 this() pure nothrow @safe @nogc {} 4040 4041 this(bool updateBlock, soupply.bedrock261.types.BlockPosition position=soupply.bedrock261.types.BlockPosition.init, uint mode=uint.init, bool redstoneMode=bool.init, bool conditional=bool.init, long minecart=long.init, string command=string.init, string lastOutput=string.init, string hover=string.init, bool trackOutput=bool.init) pure nothrow @safe @nogc 4042 { 4043 this.updateBlock = updateBlock; 4044 this.position = position; 4045 this.mode = mode; 4046 this.redstoneMode = redstoneMode; 4047 this.conditional = conditional; 4048 this.minecart = minecart; 4049 this.command = command; 4050 this.lastOutput = lastOutput; 4051 this.hover = hover; 4052 this.trackOutput = trackOutput; 4053 } 4054 4055 mixin Make; 4056 4057 public static typeof(this) fromBuffer(ubyte[] buffer) 4058 { 4059 CommandBlockUpdate ret = new CommandBlockUpdate(); 4060 ret.decode(buffer); 4061 return ret; 4062 } 4063 4064 override string toString() 4065 { 4066 return "CommandBlockUpdate(updateBlock: " ~ std.conv.to!string(this.updateBlock) ~ ", position: " ~ std.conv.to!string(this.position) ~ ", mode: " ~ std.conv.to!string(this.mode) ~ ", redstoneMode: " ~ std.conv.to!string(this.redstoneMode) ~ ", conditional: " ~ std.conv.to!string(this.conditional) ~ ", minecart: " ~ std.conv.to!string(this.minecart) ~ ", command: " ~ std.conv.to!string(this.command) ~ ", lastOutput: " ~ std.conv.to!string(this.lastOutput) ~ ", hover: " ~ std.conv.to!string(this.hover) ~ ", trackOutput: " ~ std.conv.to!string(this.trackOutput) ~ ")"; 4067 } 4068 4069 } 4070 4071 class CommandOutput : Bedrock261Packet 4072 { 4073 4074 enum uint ID = 79; 4075 4076 enum bool CLIENTBOUND = true; 4077 enum bool SERVERBOUND = false; 4078 4079 enum string[] __fields = ["originData", "outputType", "successCount", "messages", "unknown4"]; 4080 4081 soupply.bedrock261.types.CommandOriginData originData; 4082 ubyte outputType; 4083 @Var uint successCount; 4084 soupply.bedrock261.types.CommandMessage[] messages; 4085 @Condition("outputType==4") string unknown4; 4086 4087 this() pure nothrow @safe @nogc {} 4088 4089 this(soupply.bedrock261.types.CommandOriginData originData, ubyte outputType=ubyte.init, uint successCount=uint.init, soupply.bedrock261.types.CommandMessage[] messages=(soupply.bedrock261.types.CommandMessage[]).init, string unknown4=string.init) pure nothrow @safe @nogc 4090 { 4091 this.originData = originData; 4092 this.outputType = outputType; 4093 this.successCount = successCount; 4094 this.messages = messages; 4095 this.unknown4 = unknown4; 4096 } 4097 4098 mixin Make; 4099 4100 public static typeof(this) fromBuffer(ubyte[] buffer) 4101 { 4102 CommandOutput ret = new CommandOutput(); 4103 ret.decode(buffer); 4104 return ret; 4105 } 4106 4107 override string toString() 4108 { 4109 return "CommandOutput(originData: " ~ std.conv.to!string(this.originData) ~ ", outputType: " ~ std.conv.to!string(this.outputType) ~ ", successCount: " ~ std.conv.to!string(this.successCount) ~ ", messages: " ~ std.conv.to!string(this.messages) ~ ", unknown4: " ~ std.conv.to!string(this.unknown4) ~ ")"; 4110 } 4111 4112 } 4113 4114 class UpdateTrade : Bedrock261Packet 4115 { 4116 4117 enum uint ID = 80; 4118 4119 enum bool CLIENTBOUND = true; 4120 enum bool SERVERBOUND = false; 4121 4122 enum string[] __fields = ["window", "windowType", "unknown2", "unknown3", "willing", "trader", "player", "displayName", "offers"]; 4123 4124 ubyte window; 4125 ubyte windowType = 15; 4126 @Var int unknown2; 4127 @Var int unknown3; 4128 bool willing; 4129 @Var long trader; 4130 @Var long player; 4131 string displayName; 4132 @NoLength ubyte[] offers; 4133 4134 this() pure nothrow @safe @nogc {} 4135 4136 this(ubyte window, ubyte windowType=15, int unknown2=int.init, int unknown3=int.init, bool willing=bool.init, long trader=long.init, long player=long.init, string displayName=string.init, ubyte[] offers=(ubyte[]).init) pure nothrow @safe @nogc 4137 { 4138 this.window = window; 4139 this.windowType = windowType; 4140 this.unknown2 = unknown2; 4141 this.unknown3 = unknown3; 4142 this.willing = willing; 4143 this.trader = trader; 4144 this.player = player; 4145 this.displayName = displayName; 4146 this.offers = offers; 4147 } 4148 4149 mixin Make; 4150 4151 public static typeof(this) fromBuffer(ubyte[] buffer) 4152 { 4153 UpdateTrade ret = new UpdateTrade(); 4154 ret.decode(buffer); 4155 return ret; 4156 } 4157 4158 override string toString() 4159 { 4160 return "UpdateTrade(window: " ~ std.conv.to!string(this.window) ~ ", windowType: " ~ std.conv.to!string(this.windowType) ~ ", unknown2: " ~ std.conv.to!string(this.unknown2) ~ ", unknown3: " ~ std.conv.to!string(this.unknown3) ~ ", willing: " ~ std.conv.to!string(this.willing) ~ ", trader: " ~ std.conv.to!string(this.trader) ~ ", player: " ~ std.conv.to!string(this.player) ~ ", displayName: " ~ std.conv.to!string(this.displayName) ~ ", offers: " ~ std.conv.to!string(this.offers) ~ ")"; 4161 } 4162 4163 } 4164 4165 class UpdateEquip : Bedrock261Packet 4166 { 4167 4168 enum uint ID = 81; 4169 4170 enum bool CLIENTBOUND = true; 4171 enum bool SERVERBOUND = false; 4172 4173 enum string[] __fields = []; 4174 4175 mixin Make; 4176 4177 public static typeof(this) fromBuffer(ubyte[] buffer) 4178 { 4179 UpdateEquip ret = new UpdateEquip(); 4180 ret.decode(buffer); 4181 return ret; 4182 } 4183 4184 override string toString() 4185 { 4186 return "UpdateEquip()"; 4187 } 4188 4189 } 4190 4191 class ResourcePackDataInfo : Bedrock261Packet 4192 { 4193 4194 enum uint ID = 82; 4195 4196 enum bool CLIENTBOUND = true; 4197 enum bool SERVERBOUND = false; 4198 4199 enum string[] __fields = ["id", "maxChunkSize", "chunkCount", "compressedPackSize", "sha256"]; 4200 4201 string id; 4202 uint maxChunkSize; 4203 uint chunkCount; 4204 ulong compressedPackSize; 4205 string sha256; 4206 4207 this() pure nothrow @safe @nogc {} 4208 4209 this(string id, uint maxChunkSize=uint.init, uint chunkCount=uint.init, ulong compressedPackSize=ulong.init, string sha256=string.init) pure nothrow @safe @nogc 4210 { 4211 this.id = id; 4212 this.maxChunkSize = maxChunkSize; 4213 this.chunkCount = chunkCount; 4214 this.compressedPackSize = compressedPackSize; 4215 this.sha256 = sha256; 4216 } 4217 4218 mixin Make; 4219 4220 public static typeof(this) fromBuffer(ubyte[] buffer) 4221 { 4222 ResourcePackDataInfo ret = new ResourcePackDataInfo(); 4223 ret.decode(buffer); 4224 return ret; 4225 } 4226 4227 override string toString() 4228 { 4229 return "ResourcePackDataInfo(id: " ~ std.conv.to!string(this.id) ~ ", maxChunkSize: " ~ std.conv.to!string(this.maxChunkSize) ~ ", chunkCount: " ~ std.conv.to!string(this.chunkCount) ~ ", compressedPackSize: " ~ std.conv.to!string(this.compressedPackSize) ~ ", sha256: " ~ std.conv.to!string(this.sha256) ~ ")"; 4230 } 4231 4232 } 4233 4234 class ResourcePackChunkData : Bedrock261Packet 4235 { 4236 4237 enum uint ID = 83; 4238 4239 enum bool CLIENTBOUND = true; 4240 enum bool SERVERBOUND = false; 4241 4242 enum string[] __fields = ["id", "chunkIndex", "progress", "data"]; 4243 4244 string id; 4245 uint chunkIndex; 4246 ulong progress; 4247 @Length!uint ubyte[] data; 4248 4249 this() pure nothrow @safe @nogc {} 4250 4251 this(string id, uint chunkIndex=uint.init, ulong progress=ulong.init, ubyte[] data=(ubyte[]).init) pure nothrow @safe @nogc 4252 { 4253 this.id = id; 4254 this.chunkIndex = chunkIndex; 4255 this.progress = progress; 4256 this.data = data; 4257 } 4258 4259 mixin Make; 4260 4261 public static typeof(this) fromBuffer(ubyte[] buffer) 4262 { 4263 ResourcePackChunkData ret = new ResourcePackChunkData(); 4264 ret.decode(buffer); 4265 return ret; 4266 } 4267 4268 override string toString() 4269 { 4270 return "ResourcePackChunkData(id: " ~ std.conv.to!string(this.id) ~ ", chunkIndex: " ~ std.conv.to!string(this.chunkIndex) ~ ", progress: " ~ std.conv.to!string(this.progress) ~ ", data: " ~ std.conv.to!string(this.data) ~ ")"; 4271 } 4272 4273 } 4274 4275 class ResourcePackChunkRequest : Bedrock261Packet 4276 { 4277 4278 enum uint ID = 84; 4279 4280 enum bool CLIENTBOUND = false; 4281 enum bool SERVERBOUND = true; 4282 4283 enum string[] __fields = ["id", "chunkIndex"]; 4284 4285 string id; 4286 uint chunkIndex; 4287 4288 this() pure nothrow @safe @nogc {} 4289 4290 this(string id, uint chunkIndex=uint.init) pure nothrow @safe @nogc 4291 { 4292 this.id = id; 4293 this.chunkIndex = chunkIndex; 4294 } 4295 4296 mixin Make; 4297 4298 public static typeof(this) fromBuffer(ubyte[] buffer) 4299 { 4300 ResourcePackChunkRequest ret = new ResourcePackChunkRequest(); 4301 ret.decode(buffer); 4302 return ret; 4303 } 4304 4305 override string toString() 4306 { 4307 return "ResourcePackChunkRequest(id: " ~ std.conv.to!string(this.id) ~ ", chunkIndex: " ~ std.conv.to!string(this.chunkIndex) ~ ")"; 4308 } 4309 4310 } 4311 4312 class Transfer : Bedrock261Packet 4313 { 4314 4315 enum uint ID = 85; 4316 4317 enum bool CLIENTBOUND = true; 4318 enum bool SERVERBOUND = false; 4319 4320 enum string[] __fields = ["ip", "port"]; 4321 4322 string ip; 4323 ushort port = 19132; 4324 4325 this() pure nothrow @safe @nogc {} 4326 4327 this(string ip, ushort port=19132) pure nothrow @safe @nogc 4328 { 4329 this.ip = ip; 4330 this.port = port; 4331 } 4332 4333 mixin Make; 4334 4335 public static typeof(this) fromBuffer(ubyte[] buffer) 4336 { 4337 Transfer ret = new Transfer(); 4338 ret.decode(buffer); 4339 return ret; 4340 } 4341 4342 override string toString() 4343 { 4344 return "Transfer(ip: " ~ std.conv.to!string(this.ip) ~ ", port: " ~ std.conv.to!string(this.port) ~ ")"; 4345 } 4346 4347 } 4348 4349 class PlaySound : Bedrock261Packet 4350 { 4351 4352 enum uint ID = 86; 4353 4354 enum bool CLIENTBOUND = true; 4355 enum bool SERVERBOUND = false; 4356 4357 enum string[] __fields = ["name", "position", "volume", "pitch"]; 4358 4359 string name; 4360 soupply.bedrock261.types.BlockPosition position; 4361 float volume; 4362 float pitch; 4363 4364 this() pure nothrow @safe @nogc {} 4365 4366 this(string name, soupply.bedrock261.types.BlockPosition position=soupply.bedrock261.types.BlockPosition.init, float volume=float.init, float pitch=float.init) pure nothrow @safe @nogc 4367 { 4368 this.name = name; 4369 this.position = position; 4370 this.volume = volume; 4371 this.pitch = pitch; 4372 } 4373 4374 mixin Make; 4375 4376 public static typeof(this) fromBuffer(ubyte[] buffer) 4377 { 4378 PlaySound ret = new PlaySound(); 4379 ret.decode(buffer); 4380 return ret; 4381 } 4382 4383 override string toString() 4384 { 4385 return "PlaySound(name: " ~ std.conv.to!string(this.name) ~ ", position: " ~ std.conv.to!string(this.position) ~ ", volume: " ~ std.conv.to!string(this.volume) ~ ", pitch: " ~ std.conv.to!string(this.pitch) ~ ")"; 4386 } 4387 4388 } 4389 4390 class StopSound : Bedrock261Packet 4391 { 4392 4393 enum uint ID = 87; 4394 4395 enum bool CLIENTBOUND = true; 4396 enum bool SERVERBOUND = false; 4397 4398 enum string[] __fields = ["name", "stopAll"]; 4399 4400 string name; 4401 bool stopAll; 4402 4403 this() pure nothrow @safe @nogc {} 4404 4405 this(string name, bool stopAll=bool.init) pure nothrow @safe @nogc 4406 { 4407 this.name = name; 4408 this.stopAll = stopAll; 4409 } 4410 4411 mixin Make; 4412 4413 public static typeof(this) fromBuffer(ubyte[] buffer) 4414 { 4415 StopSound ret = new StopSound(); 4416 ret.decode(buffer); 4417 return ret; 4418 } 4419 4420 override string toString() 4421 { 4422 return "StopSound(name: " ~ std.conv.to!string(this.name) ~ ", stopAll: " ~ std.conv.to!string(this.stopAll) ~ ")"; 4423 } 4424 4425 } 4426 4427 class SetTitle : Bedrock261Packet 4428 { 4429 4430 enum uint ID = 88; 4431 4432 enum bool CLIENTBOUND = true; 4433 enum bool SERVERBOUND = false; 4434 4435 // action 4436 enum int HIDE = 0; 4437 enum int RESET = 1; 4438 enum int SET_TITLE = 2; 4439 enum int SET_SUBTITLE = 3; 4440 enum int SET_ACTION_BAR = 4; 4441 enum int SET_TIMINGS = 5; 4442 4443 enum string[] __fields = ["action", "text", "fadeIn", "stay", "fadeOut"]; 4444 4445 @Var int action; 4446 string text; 4447 @Var int fadeIn; 4448 @Var int stay; 4449 @Var int fadeOut; 4450 4451 this() pure nothrow @safe @nogc {} 4452 4453 this(int action, string text=string.init, int fadeIn=int.init, int stay=int.init, int fadeOut=int.init) pure nothrow @safe @nogc 4454 { 4455 this.action = action; 4456 this.text = text; 4457 this.fadeIn = fadeIn; 4458 this.stay = stay; 4459 this.fadeOut = fadeOut; 4460 } 4461 4462 mixin Make; 4463 4464 public static typeof(this) fromBuffer(ubyte[] buffer) 4465 { 4466 SetTitle ret = new SetTitle(); 4467 ret.decode(buffer); 4468 return ret; 4469 } 4470 4471 override string toString() 4472 { 4473 return "SetTitle(action: " ~ std.conv.to!string(this.action) ~ ", text: " ~ std.conv.to!string(this.text) ~ ", fadeIn: " ~ std.conv.to!string(this.fadeIn) ~ ", stay: " ~ std.conv.to!string(this.stay) ~ ", fadeOut: " ~ std.conv.to!string(this.fadeOut) ~ ")"; 4474 } 4475 4476 } 4477 4478 class AddBehaviorTree : Bedrock261Packet 4479 { 4480 4481 enum uint ID = 89; 4482 4483 enum bool CLIENTBOUND = true; 4484 enum bool SERVERBOUND = false; 4485 4486 enum string[] __fields = ["unknown0"]; 4487 4488 string unknown0; 4489 4490 this() pure nothrow @safe @nogc {} 4491 4492 this(string unknown0) pure nothrow @safe @nogc 4493 { 4494 this.unknown0 = unknown0; 4495 } 4496 4497 mixin Make; 4498 4499 public static typeof(this) fromBuffer(ubyte[] buffer) 4500 { 4501 AddBehaviorTree ret = new AddBehaviorTree(); 4502 ret.decode(buffer); 4503 return ret; 4504 } 4505 4506 override string toString() 4507 { 4508 return "AddBehaviorTree(unknown0: " ~ std.conv.to!string(this.unknown0) ~ ")"; 4509 } 4510 4511 } 4512 4513 class StructureBlockUpdate : Bedrock261Packet 4514 { 4515 4516 enum uint ID = 90; 4517 4518 enum bool CLIENTBOUND = true; 4519 enum bool SERVERBOUND = false; 4520 4521 enum string[] __fields = []; 4522 4523 mixin Make; 4524 4525 public static typeof(this) fromBuffer(ubyte[] buffer) 4526 { 4527 StructureBlockUpdate ret = new StructureBlockUpdate(); 4528 ret.decode(buffer); 4529 return ret; 4530 } 4531 4532 override string toString() 4533 { 4534 return "StructureBlockUpdate()"; 4535 } 4536 4537 } 4538 4539 class ShowStoreOffer : Bedrock261Packet 4540 { 4541 4542 enum uint ID = 91; 4543 4544 enum bool CLIENTBOUND = true; 4545 enum bool SERVERBOUND = false; 4546 4547 enum string[] __fields = ["unknown0", "unknown1", "unknown2"]; 4548 4549 string unknown0; 4550 bool unknown1; 4551 string unknown2; 4552 4553 this() pure nothrow @safe @nogc {} 4554 4555 this(string unknown0, bool unknown1=bool.init, string unknown2=string.init) pure nothrow @safe @nogc 4556 { 4557 this.unknown0 = unknown0; 4558 this.unknown1 = unknown1; 4559 this.unknown2 = unknown2; 4560 } 4561 4562 mixin Make; 4563 4564 public static typeof(this) fromBuffer(ubyte[] buffer) 4565 { 4566 ShowStoreOffer ret = new ShowStoreOffer(); 4567 ret.decode(buffer); 4568 return ret; 4569 } 4570 4571 override string toString() 4572 { 4573 return "ShowStoreOffer(unknown0: " ~ std.conv.to!string(this.unknown0) ~ ", unknown1: " ~ std.conv.to!string(this.unknown1) ~ ", unknown2: " ~ std.conv.to!string(this.unknown2) ~ ")"; 4574 } 4575 4576 } 4577 4578 class PurchaseReceipt : Bedrock261Packet 4579 { 4580 4581 enum uint ID = 92; 4582 4583 enum bool CLIENTBOUND = false; 4584 enum bool SERVERBOUND = true; 4585 4586 enum string[] __fields = ["unknown0"]; 4587 4588 string[] unknown0; 4589 4590 this() pure nothrow @safe @nogc {} 4591 4592 this(string[] unknown0) pure nothrow @safe @nogc 4593 { 4594 this.unknown0 = unknown0; 4595 } 4596 4597 mixin Make; 4598 4599 public static typeof(this) fromBuffer(ubyte[] buffer) 4600 { 4601 PurchaseReceipt ret = new PurchaseReceipt(); 4602 ret.decode(buffer); 4603 return ret; 4604 } 4605 4606 override string toString() 4607 { 4608 return "PurchaseReceipt(unknown0: " ~ std.conv.to!string(this.unknown0) ~ ")"; 4609 } 4610 4611 } 4612 4613 class PlayerSkin : Bedrock261Packet 4614 { 4615 4616 enum uint ID = 93; 4617 4618 enum bool CLIENTBOUND = true; 4619 enum bool SERVERBOUND = false; 4620 4621 enum string[] __fields = ["uuid", "skinId", "skinName", "unknown3", "skinData", "capeData", "geometryModel", "geometryData"]; 4622 4623 soupply.bedrock261.types.McpeUuid uuid; 4624 string skinId; 4625 string skinName; 4626 string unknown3; 4627 ubyte[] skinData; 4628 ubyte[] capeData; 4629 string geometryModel; 4630 ubyte[] geometryData; 4631 4632 this() pure nothrow @safe @nogc {} 4633 4634 this(soupply.bedrock261.types.McpeUuid uuid, string skinId=string.init, string skinName=string.init, string unknown3=string.init, ubyte[] skinData=(ubyte[]).init, ubyte[] capeData=(ubyte[]).init, string geometryModel=string.init, ubyte[] geometryData=(ubyte[]).init) pure nothrow @safe @nogc 4635 { 4636 this.uuid = uuid; 4637 this.skinId = skinId; 4638 this.skinName = skinName; 4639 this.unknown3 = unknown3; 4640 this.skinData = skinData; 4641 this.capeData = capeData; 4642 this.geometryModel = geometryModel; 4643 this.geometryData = geometryData; 4644 } 4645 4646 mixin Make; 4647 4648 public static typeof(this) fromBuffer(ubyte[] buffer) 4649 { 4650 PlayerSkin ret = new PlayerSkin(); 4651 ret.decode(buffer); 4652 return ret; 4653 } 4654 4655 override string toString() 4656 { 4657 return "PlayerSkin(uuid: " ~ std.conv.to!string(this.uuid) ~ ", skinId: " ~ std.conv.to!string(this.skinId) ~ ", skinName: " ~ std.conv.to!string(this.skinName) ~ ", unknown3: " ~ std.conv.to!string(this.unknown3) ~ ", skinData: " ~ std.conv.to!string(this.skinData) ~ ", capeData: " ~ std.conv.to!string(this.capeData) ~ ", geometryModel: " ~ std.conv.to!string(this.geometryModel) ~ ", geometryData: " ~ std.conv.to!string(this.geometryData) ~ ")"; 4658 } 4659 4660 } 4661 4662 class SubClientLogin : Bedrock261Packet 4663 { 4664 4665 enum uint ID = 94; 4666 4667 enum bool CLIENTBOUND = true; 4668 enum bool SERVERBOUND = false; 4669 4670 enum string[] __fields = []; 4671 4672 mixin Make; 4673 4674 public static typeof(this) fromBuffer(ubyte[] buffer) 4675 { 4676 SubClientLogin ret = new SubClientLogin(); 4677 ret.decode(buffer); 4678 return ret; 4679 } 4680 4681 override string toString() 4682 { 4683 return "SubClientLogin()"; 4684 } 4685 4686 } 4687 4688 class WSConnect : Bedrock261Packet 4689 { 4690 4691 enum uint ID = 95; 4692 4693 enum bool CLIENTBOUND = false; 4694 enum bool SERVERBOUND = false; 4695 4696 enum string[] __fields = ["unknown0"]; 4697 4698 string unknown0; 4699 4700 this() pure nothrow @safe @nogc {} 4701 4702 this(string unknown0) pure nothrow @safe @nogc 4703 { 4704 this.unknown0 = unknown0; 4705 } 4706 4707 mixin Make; 4708 4709 public static typeof(this) fromBuffer(ubyte[] buffer) 4710 { 4711 WSConnect ret = new WSConnect(); 4712 ret.decode(buffer); 4713 return ret; 4714 } 4715 4716 override string toString() 4717 { 4718 return "WSConnect(unknown0: " ~ std.conv.to!string(this.unknown0) ~ ")"; 4719 } 4720 4721 } 4722 4723 class SetLastHurtBy : Bedrock261Packet 4724 { 4725 4726 enum uint ID = 96; 4727 4728 enum bool CLIENTBOUND = true; 4729 enum bool SERVERBOUND = false; 4730 4731 enum string[] __fields = ["unknown0"]; 4732 4733 @Var int unknown0; 4734 4735 this() pure nothrow @safe @nogc {} 4736 4737 this(int unknown0) pure nothrow @safe @nogc 4738 { 4739 this.unknown0 = unknown0; 4740 } 4741 4742 mixin Make; 4743 4744 public static typeof(this) fromBuffer(ubyte[] buffer) 4745 { 4746 SetLastHurtBy ret = new SetLastHurtBy(); 4747 ret.decode(buffer); 4748 return ret; 4749 } 4750 4751 override string toString() 4752 { 4753 return "SetLastHurtBy(unknown0: " ~ std.conv.to!string(this.unknown0) ~ ")"; 4754 } 4755 4756 } 4757 4758 class BookEdit : Bedrock261Packet 4759 { 4760 4761 enum uint ID = 97; 4762 4763 enum bool CLIENTBOUND = true; 4764 enum bool SERVERBOUND = true; 4765 4766 enum string[] __fields = ["type", "slot"]; 4767 4768 ubyte type; 4769 ubyte slot; 4770 4771 this() pure nothrow @safe @nogc {} 4772 4773 this(ubyte type, ubyte slot=ubyte.init) pure nothrow @safe @nogc 4774 { 4775 this.type = type; 4776 this.slot = slot; 4777 } 4778 4779 mixin Make; 4780 4781 public static typeof(this) fromBuffer(ubyte[] buffer) 4782 { 4783 BookEdit ret = new BookEdit(); 4784 ret.decode(buffer); 4785 return ret; 4786 } 4787 4788 override string toString() 4789 { 4790 return "BookEdit(type: " ~ std.conv.to!string(this.type) ~ ", slot: " ~ std.conv.to!string(this.slot) ~ ")"; 4791 } 4792 4793 enum string variantField = "type"; 4794 4795 alias Variants = TypeTuple!(ReplacePage, AddPage, DeletePage, SwapPages, Sign); 4796 4797 class ReplacePage : Bedrock261Packet 4798 { 4799 4800 enum typeof(type) TYPE = 0; 4801 4802 enum string[] __fields = ["pageNumber", "unknown1", "unknown2"]; 4803 4804 ubyte pageNumber; 4805 string unknown1; 4806 string unknown2; 4807 4808 this() pure nothrow @safe @nogc {} 4809 4810 this(ubyte pageNumber, string unknown1=string.init, string unknown2=string.init) pure nothrow @safe @nogc 4811 { 4812 this.pageNumber = pageNumber; 4813 this.unknown1 = unknown1; 4814 this.unknown2 = unknown2; 4815 } 4816 4817 mixin Make; 4818 4819 override string toString() 4820 { 4821 return "BookEdit.ReplacePage(pageNumber: " ~ std.conv.to!string(this.pageNumber) ~ ", unknown1: " ~ std.conv.to!string(this.unknown1) ~ ", unknown2: " ~ std.conv.to!string(this.unknown2) ~ ")"; 4822 } 4823 4824 } 4825 4826 class AddPage : Bedrock261Packet 4827 { 4828 4829 enum typeof(type) TYPE = 1; 4830 4831 enum string[] __fields = ["pageNumber", "unknown1", "unknown2"]; 4832 4833 ubyte pageNumber; 4834 string unknown1; 4835 string unknown2; 4836 4837 this() pure nothrow @safe @nogc {} 4838 4839 this(ubyte pageNumber, string unknown1=string.init, string unknown2=string.init) pure nothrow @safe @nogc 4840 { 4841 this.pageNumber = pageNumber; 4842 this.unknown1 = unknown1; 4843 this.unknown2 = unknown2; 4844 } 4845 4846 mixin Make; 4847 4848 override string toString() 4849 { 4850 return "BookEdit.AddPage(pageNumber: " ~ std.conv.to!string(this.pageNumber) ~ ", unknown1: " ~ std.conv.to!string(this.unknown1) ~ ", unknown2: " ~ std.conv.to!string(this.unknown2) ~ ")"; 4851 } 4852 4853 } 4854 4855 class DeletePage : Bedrock261Packet 4856 { 4857 4858 enum typeof(type) TYPE = 2; 4859 4860 enum string[] __fields = ["pageNumber"]; 4861 4862 ubyte pageNumber; 4863 4864 this() pure nothrow @safe @nogc {} 4865 4866 this(ubyte pageNumber) pure nothrow @safe @nogc 4867 { 4868 this.pageNumber = pageNumber; 4869 } 4870 4871 mixin Make; 4872 4873 override string toString() 4874 { 4875 return "BookEdit.DeletePage(pageNumber: " ~ std.conv.to!string(this.pageNumber) ~ ")"; 4876 } 4877 4878 } 4879 4880 class SwapPages : Bedrock261Packet 4881 { 4882 4883 enum typeof(type) TYPE = 3; 4884 4885 enum string[] __fields = ["page1", "page2"]; 4886 4887 ubyte page1; 4888 ubyte page2; 4889 4890 this() pure nothrow @safe @nogc {} 4891 4892 this(ubyte page1, ubyte page2=ubyte.init) pure nothrow @safe @nogc 4893 { 4894 this.page1 = page1; 4895 this.page2 = page2; 4896 } 4897 4898 mixin Make; 4899 4900 override string toString() 4901 { 4902 return "BookEdit.SwapPages(page1: " ~ std.conv.to!string(this.page1) ~ ", page2: " ~ std.conv.to!string(this.page2) ~ ")"; 4903 } 4904 4905 } 4906 4907 class Sign : Bedrock261Packet 4908 { 4909 4910 enum typeof(type) TYPE = 4; 4911 4912 enum string[] __fields = ["title", "author"]; 4913 4914 string title; 4915 string author; 4916 4917 this() pure nothrow @safe @nogc {} 4918 4919 this(string title, string author=string.init) pure nothrow @safe @nogc 4920 { 4921 this.title = title; 4922 this.author = author; 4923 } 4924 4925 mixin Make; 4926 4927 override string toString() 4928 { 4929 return "BookEdit.Sign(title: " ~ std.conv.to!string(this.title) ~ ", author: " ~ std.conv.to!string(this.author) ~ ")"; 4930 } 4931 4932 } 4933 4934 } 4935 4936 class NpcRequest : Bedrock261Packet 4937 { 4938 4939 enum uint ID = 98; 4940 4941 enum bool CLIENTBOUND = false; 4942 enum bool SERVERBOUND = true; 4943 4944 enum string[] __fields = ["entityId", "requestType", "command", "actionType"]; 4945 4946 @Var long entityId; 4947 ubyte requestType; 4948 string command; 4949 ubyte actionType; 4950 4951 this() pure nothrow @safe @nogc {} 4952 4953 this(long entityId, ubyte requestType=ubyte.init, string command=string.init, ubyte actionType=ubyte.init) pure nothrow @safe @nogc 4954 { 4955 this.entityId = entityId; 4956 this.requestType = requestType; 4957 this.command = command; 4958 this.actionType = actionType; 4959 } 4960 4961 mixin Make; 4962 4963 public static typeof(this) fromBuffer(ubyte[] buffer) 4964 { 4965 NpcRequest ret = new NpcRequest(); 4966 ret.decode(buffer); 4967 return ret; 4968 } 4969 4970 override string toString() 4971 { 4972 return "NpcRequest(entityId: " ~ std.conv.to!string(this.entityId) ~ ", requestType: " ~ std.conv.to!string(this.requestType) ~ ", command: " ~ std.conv.to!string(this.command) ~ ", actionType: " ~ std.conv.to!string(this.actionType) ~ ")"; 4973 } 4974 4975 } 4976 4977 class PhotoTransfer : Bedrock261Packet 4978 { 4979 4980 enum uint ID = 99; 4981 4982 enum bool CLIENTBOUND = false; 4983 enum bool SERVERBOUND = true; 4984 4985 enum string[] __fields = ["unknown0", "unknown1", "unknown2"]; 4986 4987 string unknown0; 4988 string unknown1; 4989 string unknown2; 4990 4991 this() pure nothrow @safe @nogc {} 4992 4993 this(string unknown0, string unknown1=string.init, string unknown2=string.init) pure nothrow @safe @nogc 4994 { 4995 this.unknown0 = unknown0; 4996 this.unknown1 = unknown1; 4997 this.unknown2 = unknown2; 4998 } 4999 5000 mixin Make; 5001 5002 public static typeof(this) fromBuffer(ubyte[] buffer) 5003 { 5004 PhotoTransfer ret = new PhotoTransfer(); 5005 ret.decode(buffer); 5006 return ret; 5007 } 5008 5009 override string toString() 5010 { 5011 return "PhotoTransfer(unknown0: " ~ std.conv.to!string(this.unknown0) ~ ", unknown1: " ~ std.conv.to!string(this.unknown1) ~ ", unknown2: " ~ std.conv.to!string(this.unknown2) ~ ")"; 5012 } 5013 5014 } 5015 5016 class ModalFormRequest : Bedrock261Packet 5017 { 5018 5019 enum uint ID = 100; 5020 5021 enum bool CLIENTBOUND = true; 5022 enum bool SERVERBOUND = false; 5023 5024 enum string[] __fields = ["formId", "data"]; 5025 5026 @Var uint formId; 5027 string data; 5028 5029 this() pure nothrow @safe @nogc {} 5030 5031 this(uint formId, string data=string.init) pure nothrow @safe @nogc 5032 { 5033 this.formId = formId; 5034 this.data = data; 5035 } 5036 5037 mixin Make; 5038 5039 public static typeof(this) fromBuffer(ubyte[] buffer) 5040 { 5041 ModalFormRequest ret = new ModalFormRequest(); 5042 ret.decode(buffer); 5043 return ret; 5044 } 5045 5046 override string toString() 5047 { 5048 return "ModalFormRequest(formId: " ~ std.conv.to!string(this.formId) ~ ", data: " ~ std.conv.to!string(this.data) ~ ")"; 5049 } 5050 5051 } 5052 5053 class ModalFormResponse : Bedrock261Packet 5054 { 5055 5056 enum uint ID = 101; 5057 5058 enum bool CLIENTBOUND = true; 5059 enum bool SERVERBOUND = false; 5060 5061 enum string[] __fields = ["formId", "data"]; 5062 5063 @Var uint formId; 5064 string data; 5065 5066 this() pure nothrow @safe @nogc {} 5067 5068 this(uint formId, string data=string.init) pure nothrow @safe @nogc 5069 { 5070 this.formId = formId; 5071 this.data = data; 5072 } 5073 5074 mixin Make; 5075 5076 public static typeof(this) fromBuffer(ubyte[] buffer) 5077 { 5078 ModalFormResponse ret = new ModalFormResponse(); 5079 ret.decode(buffer); 5080 return ret; 5081 } 5082 5083 override string toString() 5084 { 5085 return "ModalFormResponse(formId: " ~ std.conv.to!string(this.formId) ~ ", data: " ~ std.conv.to!string(this.data) ~ ")"; 5086 } 5087 5088 } 5089 5090 class ServerSettingsRequest : Bedrock261Packet 5091 { 5092 5093 enum uint ID = 102; 5094 5095 enum bool CLIENTBOUND = false; 5096 enum bool SERVERBOUND = true; 5097 5098 enum string[] __fields = []; 5099 5100 mixin Make; 5101 5102 public static typeof(this) fromBuffer(ubyte[] buffer) 5103 { 5104 ServerSettingsRequest ret = new ServerSettingsRequest(); 5105 ret.decode(buffer); 5106 return ret; 5107 } 5108 5109 override string toString() 5110 { 5111 return "ServerSettingsRequest()"; 5112 } 5113 5114 } 5115 5116 class ServerSettingsResponse : Bedrock261Packet 5117 { 5118 5119 enum uint ID = 103; 5120 5121 enum bool CLIENTBOUND = true; 5122 enum bool SERVERBOUND = false; 5123 5124 enum string[] __fields = ["formId", "data"]; 5125 5126 @Var uint formId; 5127 string data; 5128 5129 this() pure nothrow @safe @nogc {} 5130 5131 this(uint formId, string data=string.init) pure nothrow @safe @nogc 5132 { 5133 this.formId = formId; 5134 this.data = data; 5135 } 5136 5137 mixin Make; 5138 5139 public static typeof(this) fromBuffer(ubyte[] buffer) 5140 { 5141 ServerSettingsResponse ret = new ServerSettingsResponse(); 5142 ret.decode(buffer); 5143 return ret; 5144 } 5145 5146 override string toString() 5147 { 5148 return "ServerSettingsResponse(formId: " ~ std.conv.to!string(this.formId) ~ ", data: " ~ std.conv.to!string(this.data) ~ ")"; 5149 } 5150 5151 } 5152 5153 class ShowProfile : Bedrock261Packet 5154 { 5155 5156 enum uint ID = 104; 5157 5158 enum bool CLIENTBOUND = true; 5159 enum bool SERVERBOUND = false; 5160 5161 enum string[] __fields = []; 5162 5163 mixin Make; 5164 5165 public static typeof(this) fromBuffer(ubyte[] buffer) 5166 { 5167 ShowProfile ret = new ShowProfile(); 5168 ret.decode(buffer); 5169 return ret; 5170 } 5171 5172 override string toString() 5173 { 5174 return "ShowProfile()"; 5175 } 5176 5177 } 5178 5179 class SetDefaultGameType : Bedrock261Packet 5180 { 5181 5182 enum uint ID = 105; 5183 5184 enum bool CLIENTBOUND = true; 5185 enum bool SERVERBOUND = false; 5186 5187 // game type 5188 enum uint SURVIVAL = 0; 5189 enum uint CREATIVE = 1; 5190 enum uint ADVENTURE = 2; 5191 5192 enum string[] __fields = ["gameType"]; 5193 5194 @Var uint gameType; 5195 5196 this() pure nothrow @safe @nogc {} 5197 5198 this(uint gameType) pure nothrow @safe @nogc 5199 { 5200 this.gameType = gameType; 5201 } 5202 5203 mixin Make; 5204 5205 public static typeof(this) fromBuffer(ubyte[] buffer) 5206 { 5207 SetDefaultGameType ret = new SetDefaultGameType(); 5208 ret.decode(buffer); 5209 return ret; 5210 } 5211 5212 override string toString() 5213 { 5214 return "SetDefaultGameType(gameType: " ~ std.conv.to!string(this.gameType) ~ ")"; 5215 } 5216 5217 } 5218 5219 class RemoveObject : Bedrock261Packet 5220 { 5221 5222 enum uint ID = 106; 5223 5224 enum bool CLIENTBOUND = true; 5225 enum bool SERVERBOUND = false; 5226 5227 enum string[] __fields = ["objectName"]; 5228 5229 string objectName; 5230 5231 this() pure nothrow @safe @nogc {} 5232 5233 this(string objectName) pure nothrow @safe @nogc 5234 { 5235 this.objectName = objectName; 5236 } 5237 5238 mixin Make; 5239 5240 public static typeof(this) fromBuffer(ubyte[] buffer) 5241 { 5242 RemoveObject ret = new RemoveObject(); 5243 ret.decode(buffer); 5244 return ret; 5245 } 5246 5247 override string toString() 5248 { 5249 return "RemoveObject(objectName: " ~ std.conv.to!string(this.objectName) ~ ")"; 5250 } 5251 5252 } 5253 5254 class SetDisplayObjective : Bedrock261Packet 5255 { 5256 5257 enum uint ID = 107; 5258 5259 enum bool CLIENTBOUND = true; 5260 enum bool SERVERBOUND = false; 5261 5262 enum string[] __fields = ["displaySlot", "objectiveName", "displayName", "criteriaName", "sortOrder"]; 5263 5264 string displaySlot; 5265 string objectiveName; 5266 string displayName; 5267 string criteriaName; 5268 @Var int sortOrder; 5269 5270 this() pure nothrow @safe @nogc {} 5271 5272 this(string displaySlot, string objectiveName=string.init, string displayName=string.init, string criteriaName=string.init, int sortOrder=int.init) pure nothrow @safe @nogc 5273 { 5274 this.displaySlot = displaySlot; 5275 this.objectiveName = objectiveName; 5276 this.displayName = displayName; 5277 this.criteriaName = criteriaName; 5278 this.sortOrder = sortOrder; 5279 } 5280 5281 mixin Make; 5282 5283 public static typeof(this) fromBuffer(ubyte[] buffer) 5284 { 5285 SetDisplayObjective ret = new SetDisplayObjective(); 5286 ret.decode(buffer); 5287 return ret; 5288 } 5289 5290 override string toString() 5291 { 5292 return "SetDisplayObjective(displaySlot: " ~ std.conv.to!string(this.displaySlot) ~ ", objectiveName: " ~ std.conv.to!string(this.objectiveName) ~ ", displayName: " ~ std.conv.to!string(this.displayName) ~ ", criteriaName: " ~ std.conv.to!string(this.criteriaName) ~ ", sortOrder: " ~ std.conv.to!string(this.sortOrder) ~ ")"; 5293 } 5294 5295 } 5296 5297 class SetScore : Bedrock261Packet 5298 { 5299 5300 enum uint ID = 108; 5301 5302 enum bool CLIENTBOUND = true; 5303 enum bool SERVERBOUND = false; 5304 5305 // type 5306 enum ubyte MODIFY = 0; 5307 enum ubyte RESET = 1; 5308 5309 enum string[] __fields = ["type", "scores"]; 5310 5311 ubyte type; 5312 soupply.bedrock261.types.Score[] scores; 5313 5314 this() pure nothrow @safe @nogc {} 5315 5316 this(ubyte type, soupply.bedrock261.types.Score[] scores=(soupply.bedrock261.types.Score[]).init) pure nothrow @safe @nogc 5317 { 5318 this.type = type; 5319 this.scores = scores; 5320 } 5321 5322 mixin Make; 5323 5324 public static typeof(this) fromBuffer(ubyte[] buffer) 5325 { 5326 SetScore ret = new SetScore(); 5327 ret.decode(buffer); 5328 return ret; 5329 } 5330 5331 override string toString() 5332 { 5333 return "SetScore(type: " ~ std.conv.to!string(this.type) ~ ", scores: " ~ std.conv.to!string(this.scores) ~ ")"; 5334 } 5335 5336 } 5337 5338 class LabTable : Bedrock261Packet 5339 { 5340 5341 enum uint ID = 109; 5342 5343 enum bool CLIENTBOUND = true; 5344 enum bool SERVERBOUND = false; 5345 5346 enum string[] __fields = ["unknown0", "position", "reactionType"]; 5347 5348 ubyte unknown0; 5349 soupply.bedrock261.types.BlockPosition position; 5350 ubyte reactionType; 5351 5352 this() pure nothrow @safe @nogc {} 5353 5354 this(ubyte unknown0, soupply.bedrock261.types.BlockPosition position=soupply.bedrock261.types.BlockPosition.init, ubyte reactionType=ubyte.init) pure nothrow @safe @nogc 5355 { 5356 this.unknown0 = unknown0; 5357 this.position = position; 5358 this.reactionType = reactionType; 5359 } 5360 5361 mixin Make; 5362 5363 public static typeof(this) fromBuffer(ubyte[] buffer) 5364 { 5365 LabTable ret = new LabTable(); 5366 ret.decode(buffer); 5367 return ret; 5368 } 5369 5370 override string toString() 5371 { 5372 return "LabTable(unknown0: " ~ std.conv.to!string(this.unknown0) ~ ", position: " ~ std.conv.to!string(this.position) ~ ", reactionType: " ~ std.conv.to!string(this.reactionType) ~ ")"; 5373 } 5374 5375 } 5376 5377 class UpdateBlockSynced : Bedrock261Packet 5378 { 5379 5380 enum uint ID = 110; 5381 5382 enum bool CLIENTBOUND = true; 5383 enum bool SERVERBOUND = false; 5384 5385 // flags and meta 5386 enum uint NEIGHBORS = 1; 5387 enum uint NETWORK = 2; 5388 enum uint NO_GRAPHIC = 4; 5389 enum uint PRIORITY = 8; 5390 5391 enum string[] __fields = ["position", "block", "flagsAndMeta", "entityId", "unknown4"]; 5392 5393 soupply.bedrock261.types.BlockPosition position; 5394 @Var uint block; 5395 @Var uint flagsAndMeta; 5396 @Var long entityId; 5397 @Var ulong unknown4; 5398 5399 this() pure nothrow @safe @nogc {} 5400 5401 this(soupply.bedrock261.types.BlockPosition position, uint block=uint.init, uint flagsAndMeta=uint.init, long entityId=long.init, ulong unknown4=ulong.init) pure nothrow @safe @nogc 5402 { 5403 this.position = position; 5404 this.block = block; 5405 this.flagsAndMeta = flagsAndMeta; 5406 this.entityId = entityId; 5407 this.unknown4 = unknown4; 5408 } 5409 5410 mixin Make; 5411 5412 public static typeof(this) fromBuffer(ubyte[] buffer) 5413 { 5414 UpdateBlockSynced ret = new UpdateBlockSynced(); 5415 ret.decode(buffer); 5416 return ret; 5417 } 5418 5419 override string toString() 5420 { 5421 return "UpdateBlockSynced(position: " ~ std.conv.to!string(this.position) ~ ", block: " ~ std.conv.to!string(this.block) ~ ", flagsAndMeta: " ~ std.conv.to!string(this.flagsAndMeta) ~ ", entityId: " ~ std.conv.to!string(this.entityId) ~ ", unknown4: " ~ std.conv.to!string(this.unknown4) ~ ")"; 5422 } 5423 5424 }