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