1 /* 2 * This file has been automatically generated by Soupply and released under the MIT license. 3 * Generated from data/java393.xml 4 */ 5 module soupply.java393.types; 6 7 static import std.conv; 8 import packetmaker; 9 import packetmaker.maker : EndianType, writeLength, readLength; 10 11 import xbuffer.memory : xalloc, xfree; 12 13 import soupply.util; 14 import soupply.java393.metadata; 15 16 struct Slot 17 { 18 19 enum string[] __fields = ["id", "count", "nbt"]; 20 21 short id; 22 @Condition("id>0") ubyte count; 23 @Condition("id>0") @Bytes ubyte[] nbt; 24 25 mixin Make!(Endian.bigEndian, varuint); 26 27 string toString() 28 { 29 return "Slot(id: " ~ std.conv.to!string(this.id) ~ ", count: " ~ std.conv.to!string(this.count) ~ ", nbt: " ~ std.conv.to!string(this.nbt) ~ ")"; 30 } 31 32 } 33 34 struct Particle 35 { 36 37 enum string[] __fields = ["id", "dataVaruint", "dataFloat", "dataSlot"]; 38 39 @Var uint id; 40 @Condition("id==3||id==20") @Var uint dataVaruint; 41 @Condition("id==11") float dataFloat; 42 @Condition("id==27") soupply.java393.types.Slot dataSlot; 43 44 mixin Make!(Endian.bigEndian, varuint); 45 46 string toString() 47 { 48 return "Particle(id: " ~ std.conv.to!string(this.id) ~ ", dataVaruint: " ~ std.conv.to!string(this.dataVaruint) ~ ", dataFloat: " ~ std.conv.to!string(this.dataFloat) ~ ", dataSlot: " ~ std.conv.to!string(this.dataSlot) ~ ")"; 49 } 50 51 } 52 53 struct Property 54 { 55 56 enum string[] __fields = ["name", "value", "signed", "signature"]; 57 58 string name; 59 string value; 60 bool signed; 61 @Condition("signed==true") string signature; 62 63 mixin Make!(Endian.bigEndian, varuint); 64 65 string toString() 66 { 67 return "Property(name: " ~ std.conv.to!string(this.name) ~ ", value: " ~ std.conv.to!string(this.value) ~ ", signed: " ~ std.conv.to!string(this.signed) ~ ", signature: " ~ std.conv.to!string(this.signature) ~ ")"; 68 } 69 70 } 71 72 struct ListAddPlayer 73 { 74 75 // gamemode 76 enum uint SURVIVAL = 0; 77 enum uint CREATIVE = 1; 78 enum uint ADVENTURE = 2; 79 enum uint SPECTATOR = 3; 80 81 enum string[] __fields = ["uuid", "name", "properties", "gamemode", "latency", "hasDisplayName", "displayName"]; 82 83 UUID uuid; 84 string name; 85 soupply.java393.types.Property[] properties; 86 @Var uint gamemode; 87 @Var uint latency; 88 bool hasDisplayName; 89 @Condition("hasDisplayName==true") string displayName; 90 91 mixin Make!(Endian.bigEndian, varuint); 92 93 string toString() 94 { 95 return "ListAddPlayer(uuid: " ~ std.conv.to!string(this.uuid) ~ ", name: " ~ std.conv.to!string(this.name) ~ ", properties: " ~ std.conv.to!string(this.properties) ~ ", gamemode: " ~ std.conv.to!string(this.gamemode) ~ ", latency: " ~ std.conv.to!string(this.latency) ~ ", hasDisplayName: " ~ std.conv.to!string(this.hasDisplayName) ~ ", displayName: " ~ std.conv.to!string(this.displayName) ~ ")"; 96 } 97 98 } 99 100 struct ListUpdateGamemode 101 { 102 103 // gamemode 104 enum uint SURVIVAL = 0; 105 enum uint CREATIVE = 1; 106 enum uint ADVENTURE = 2; 107 enum uint SPECTATOR = 3; 108 109 enum string[] __fields = ["uuid", "gamemode"]; 110 111 UUID uuid; 112 @Var uint gamemode; 113 114 mixin Make!(Endian.bigEndian, varuint); 115 116 string toString() 117 { 118 return "ListUpdateGamemode(uuid: " ~ std.conv.to!string(this.uuid) ~ ", gamemode: " ~ std.conv.to!string(this.gamemode) ~ ")"; 119 } 120 121 } 122 123 struct ListUpdateLatency 124 { 125 126 enum string[] __fields = ["uuid", "latency"]; 127 128 UUID uuid; 129 @Var uint latency; 130 131 mixin Make!(Endian.bigEndian, varuint); 132 133 string toString() 134 { 135 return "ListUpdateLatency(uuid: " ~ std.conv.to!string(this.uuid) ~ ", latency: " ~ std.conv.to!string(this.latency) ~ ")"; 136 } 137 138 } 139 140 struct ListUpdateDisplayName 141 { 142 143 enum string[] __fields = ["uuid", "hasDisplayName", "displayName"]; 144 145 UUID uuid; 146 bool hasDisplayName; 147 @Condition("hasDisplayName==true") string displayName; 148 149 mixin Make!(Endian.bigEndian, varuint); 150 151 string toString() 152 { 153 return "ListUpdateDisplayName(uuid: " ~ std.conv.to!string(this.uuid) ~ ", hasDisplayName: " ~ std.conv.to!string(this.hasDisplayName) ~ ", displayName: " ~ std.conv.to!string(this.displayName) ~ ")"; 154 } 155 156 } 157 158 struct Modifier 159 { 160 161 // operation 162 enum ubyte ADD_SUBSTRACT_AMOUNT = 0; 163 enum ubyte ADD_SUBSTRACT_AMOUNT_PERCENTAGE = 1; 164 enum ubyte MULTIPLY_AMOUNT_PERCENTAGE = 2; 165 166 enum string[] __fields = ["uuid", "amount", "operation"]; 167 168 UUID uuid; 169 double amount; 170 ubyte operation; 171 172 mixin Make!(Endian.bigEndian, varuint); 173 174 string toString() 175 { 176 return "Modifier(uuid: " ~ std.conv.to!string(this.uuid) ~ ", amount: " ~ std.conv.to!string(this.amount) ~ ", operation: " ~ std.conv.to!string(this.operation) ~ ")"; 177 } 178 179 } 180 181 struct Attribute 182 { 183 184 enum string[] __fields = ["key", "value", "modifiers"]; 185 186 string key; 187 double value; 188 soupply.java393.types.Modifier[] modifiers; 189 190 mixin Make!(Endian.bigEndian, varuint); 191 192 string toString() 193 { 194 return "Attribute(key: " ~ std.conv.to!string(this.key) ~ ", value: " ~ std.conv.to!string(this.value) ~ ", modifiers: " ~ std.conv.to!string(this.modifiers) ~ ")"; 195 } 196 197 } 198 199 struct Entry 200 { 201 202 enum string[] __fields = ["item", "craftingSlot", "playerSlot"]; 203 204 soupply.java393.types.Slot item; 205 ubyte craftingSlot; 206 ubyte playerSlot; 207 208 mixin Make!(Endian.bigEndian, varuint); 209 210 string toString() 211 { 212 return "Entry(item: " ~ std.conv.to!string(this.item) ~ ", craftingSlot: " ~ std.conv.to!string(this.craftingSlot) ~ ", playerSlot: " ~ std.conv.to!string(this.playerSlot) ~ ")"; 213 } 214 215 } 216 217 struct OptionalChat 218 { 219 220 enum string[] __fields = ["hasChat", "chat"]; 221 222 bool hasChat; 223 @Condition("hasChat==true") string chat; 224 225 mixin Make!(Endian.bigEndian, varuint); 226 227 string toString() 228 { 229 return "OptionalChat(hasChat: " ~ std.conv.to!string(this.hasChat) ~ ", chat: " ~ std.conv.to!string(this.chat) ~ ")"; 230 } 231 232 } 233 234 struct OptionalPosition 235 { 236 237 enum string[] __fields = ["hasPosition", "position"]; 238 239 bool hasPosition; 240 @Condition("hasPosition==true") ulong position; 241 242 mixin Make!(Endian.bigEndian, varuint); 243 244 string toString() 245 { 246 return "OptionalPosition(hasPosition: " ~ std.conv.to!string(this.hasPosition) ~ ", position: " ~ std.conv.to!string(this.position) ~ ")"; 247 } 248 249 } 250 251 struct OptionalUuid 252 { 253 254 enum string[] __fields = ["hasUuid", "uuid"]; 255 256 bool hasUuid; 257 @Condition("hasUuid==true") UUID uuid; 258 259 mixin Make!(Endian.bigEndian, varuint); 260 261 string toString() 262 { 263 return "OptionalUuid(hasUuid: " ~ std.conv.to!string(this.hasUuid) ~ ", uuid: " ~ std.conv.to!string(this.uuid) ~ ")"; 264 } 265 266 } 267 268 struct Tag 269 { 270 271 enum string[] __fields = ["name", "entries"]; 272 273 string name; 274 @Var uint[] entries; 275 276 mixin Make!(Endian.bigEndian, varuint); 277 278 string toString() 279 { 280 return "Tag(name: " ~ std.conv.to!string(this.name) ~ ", entries: " ~ std.conv.to!string(this.entries) ~ ")"; 281 } 282 283 } 284 285 struct Statistic 286 { 287 288 enum string[] __fields = ["category", "statistic", "value"]; 289 290 @Var uint category; 291 @Var uint statistic; 292 @Var uint value; 293 294 mixin Make!(Endian.bigEndian, varuint); 295 296 string toString() 297 { 298 return "Statistic(category: " ~ std.conv.to!string(this.category) ~ ", statistic: " ~ std.conv.to!string(this.statistic) ~ ", value: " ~ std.conv.to!string(this.value) ~ ")"; 299 } 300 301 } 302 303 struct BlockChange 304 { 305 306 enum string[] __fields = ["xz", "y", "block"]; 307 308 ubyte xz; 309 ubyte y; 310 @Var uint block; 311 312 mixin Make!(Endian.bigEndian, varuint); 313 314 string toString() 315 { 316 return "BlockChange(xz: " ~ std.conv.to!string(this.xz) ~ ", y: " ~ std.conv.to!string(this.y) ~ ", block: " ~ std.conv.to!string(this.block) ~ ")"; 317 } 318 319 } 320 321 struct Match 322 { 323 324 enum string[] __fields = ["match", "hasTooltip", "tooltip"]; 325 326 string match; 327 bool hasTooltip; 328 @Condition("hasTooltip==true") string tooltip; 329 330 mixin Make!(Endian.bigEndian, varuint); 331 332 string toString() 333 { 334 return "Match(match: " ~ std.conv.to!string(this.match) ~ ", hasTooltip: " ~ std.conv.to!string(this.hasTooltip) ~ ", tooltip: " ~ std.conv.to!string(this.tooltip) ~ ")"; 335 } 336 337 } 338 339 struct Node 340 { 341 342 enum string[] __fields = ["flags", "children", "redirectNode", "name", "parser", "properties"]; 343 344 ubyte flags; 345 @Var uint[] children; 346 @Condition("flags&8") @Var uint redirectNode; 347 @Condition("(flags&1)!=0||(flags&2)!=0") string name; 348 @Condition("flags&2") string parser; 349 @Condition("flags&2") @Bytes ubyte[] properties; 350 351 mixin Make!(Endian.bigEndian, varuint); 352 353 string toString() 354 { 355 return "Node(flags: " ~ std.conv.to!string(this.flags) ~ ", children: " ~ std.conv.to!string(this.children) ~ ", redirectNode: " ~ std.conv.to!string(this.redirectNode) ~ ", name: " ~ std.conv.to!string(this.name) ~ ", parser: " ~ std.conv.to!string(this.parser) ~ ", properties: " ~ std.conv.to!string(this.properties) ~ ")"; 356 } 357 358 } 359 360 struct Icon 361 { 362 363 // type 364 enum uint WHITE_ARROW = 0; 365 enum uint GREEN_ARROW = 1; 366 enum uint RED_ARROW = 2; 367 enum uint BLUE_ARROW = 3; 368 enum uint WHITE_CROSS = 4; 369 enum uint RED_POINTER = 5; 370 enum uint WHITE_CIRCLE = 6; 371 enum uint SMALL_WHITE_CIRCLE = 7; 372 enum uint MANSION = 8; 373 enum uint TEMPLE = 9; 374 enum uint WHITE_BANNER = 10; 375 enum uint ORANGE_BANNER = 11; 376 enum uint MAGENTA_BANNER = 12; 377 enum uint LIGHT_BLUE_BANNER = 13; 378 enum uint YELLOW_BANNER = 14; 379 enum uint LIME_BANNER = 15; 380 enum uint PINK_BANNER = 16; 381 enum uint GRAY_BANNER = 17; 382 enum uint LIGHT_GRAY_BANNER = 18; 383 enum uint CYAN_BANNER = 19; 384 enum uint PURPLE_BANNER = 20; 385 enum uint BLUE_BANNER = 21; 386 enum uint BROWN_BANNER = 22; 387 enum uint GREEN_BANNER = 23; 388 enum uint RED_BANNER = 24; 389 enum uint BLACK_BANNER = 25; 390 enum uint TREASURE_MARKER = 26; 391 392 enum string[] __fields = ["type", "x", "z", "direction", "hasDisplayName", "displayName"]; 393 394 @Var uint type; 395 ubyte x; 396 ubyte z; 397 ubyte direction; 398 bool hasDisplayName; 399 @Condition("hasDisplayName==true") string displayName; 400 401 mixin Make!(Endian.bigEndian, varuint); 402 403 string toString() 404 { 405 return "Icon(type: " ~ std.conv.to!string(this.type) ~ ", x: " ~ std.conv.to!string(this.x) ~ ", z: " ~ std.conv.to!string(this.z) ~ ", direction: " ~ std.conv.to!string(this.direction) ~ ", hasDisplayName: " ~ std.conv.to!string(this.hasDisplayName) ~ ", displayName: " ~ std.conv.to!string(this.displayName) ~ ")"; 406 } 407 408 } 409 410 struct Recipe 411 { 412 413 enum string[] __fields = ["recipeId"]; 414 415 @Var uint recipeId; 416 417 mixin Make!(Endian.bigEndian, varuint); 418 419 string toString() 420 { 421 return "Recipe(recipeId: " ~ std.conv.to!string(this.recipeId) ~ ")"; 422 } 423 424 }