a bare-bones limbo server in rust (mirror of https://github.com/xoogware/crawlspace)

fix(net): send 1.21 registries on connect

brwr.dev d30b3b10 3e6cf102

verified
+2629 -52
+2489
assets/registries.json
··· 1 + { 2 + "minecraft:banner_pattern": { 3 + "minecraft:base": { 4 + "asset_id": "minecraft:base", 5 + "translation_key": "block.minecraft.banner.base" 6 + }, 7 + "minecraft:border": { 8 + "asset_id": "minecraft:border", 9 + "translation_key": "block.minecraft.banner.border" 10 + }, 11 + "minecraft:bricks": { 12 + "asset_id": "minecraft:bricks", 13 + "translation_key": "block.minecraft.banner.bricks" 14 + }, 15 + "minecraft:circle": { 16 + "asset_id": "minecraft:circle", 17 + "translation_key": "block.minecraft.banner.circle" 18 + }, 19 + "minecraft:creeper": { 20 + "asset_id": "minecraft:creeper", 21 + "translation_key": "block.minecraft.banner.creeper" 22 + }, 23 + "minecraft:cross": { 24 + "asset_id": "minecraft:cross", 25 + "translation_key": "block.minecraft.banner.cross" 26 + }, 27 + "minecraft:curly_border": { 28 + "asset_id": "minecraft:curly_border", 29 + "translation_key": "block.minecraft.banner.curly_border" 30 + }, 31 + "minecraft:diagonal_left": { 32 + "asset_id": "minecraft:diagonal_left", 33 + "translation_key": "block.minecraft.banner.diagonal_left" 34 + }, 35 + "minecraft:diagonal_right": { 36 + "asset_id": "minecraft:diagonal_right", 37 + "translation_key": "block.minecraft.banner.diagonal_right" 38 + }, 39 + "minecraft:diagonal_up_left": { 40 + "asset_id": "minecraft:diagonal_up_left", 41 + "translation_key": "block.minecraft.banner.diagonal_up_left" 42 + }, 43 + "minecraft:diagonal_up_right": { 44 + "asset_id": "minecraft:diagonal_up_right", 45 + "translation_key": "block.minecraft.banner.diagonal_up_right" 46 + }, 47 + "minecraft:flow": { 48 + "asset_id": "minecraft:flow", 49 + "translation_key": "block.minecraft.banner.flow" 50 + }, 51 + "minecraft:flower": { 52 + "asset_id": "minecraft:flower", 53 + "translation_key": "block.minecraft.banner.flower" 54 + }, 55 + "minecraft:globe": { 56 + "asset_id": "minecraft:globe", 57 + "translation_key": "block.minecraft.banner.globe" 58 + }, 59 + "minecraft:gradient": { 60 + "asset_id": "minecraft:gradient", 61 + "translation_key": "block.minecraft.banner.gradient" 62 + }, 63 + "minecraft:gradient_up": { 64 + "asset_id": "minecraft:gradient_up", 65 + "translation_key": "block.minecraft.banner.gradient_up" 66 + }, 67 + "minecraft:guster": { 68 + "asset_id": "minecraft:guster", 69 + "translation_key": "block.minecraft.banner.guster" 70 + }, 71 + "minecraft:half_horizontal": { 72 + "asset_id": "minecraft:half_horizontal", 73 + "translation_key": "block.minecraft.banner.half_horizontal" 74 + }, 75 + "minecraft:half_horizontal_bottom": { 76 + "asset_id": "minecraft:half_horizontal_bottom", 77 + "translation_key": "block.minecraft.banner.half_horizontal_bottom" 78 + }, 79 + "minecraft:half_vertical": { 80 + "asset_id": "minecraft:half_vertical", 81 + "translation_key": "block.minecraft.banner.half_vertical" 82 + }, 83 + "minecraft:half_vertical_right": { 84 + "asset_id": "minecraft:half_vertical_right", 85 + "translation_key": "block.minecraft.banner.half_vertical_right" 86 + }, 87 + "minecraft:mojang": { 88 + "asset_id": "minecraft:mojang", 89 + "translation_key": "block.minecraft.banner.mojang" 90 + }, 91 + "minecraft:piglin": { 92 + "asset_id": "minecraft:piglin", 93 + "translation_key": "block.minecraft.banner.piglin" 94 + }, 95 + "minecraft:rhombus": { 96 + "asset_id": "minecraft:rhombus", 97 + "translation_key": "block.minecraft.banner.rhombus" 98 + }, 99 + "minecraft:skull": { 100 + "asset_id": "minecraft:skull", 101 + "translation_key": "block.minecraft.banner.skull" 102 + }, 103 + "minecraft:small_stripes": { 104 + "asset_id": "minecraft:small_stripes", 105 + "translation_key": "block.minecraft.banner.small_stripes" 106 + }, 107 + "minecraft:square_bottom_left": { 108 + "asset_id": "minecraft:square_bottom_left", 109 + "translation_key": "block.minecraft.banner.square_bottom_left" 110 + }, 111 + "minecraft:square_bottom_right": { 112 + "asset_id": "minecraft:square_bottom_right", 113 + "translation_key": "block.minecraft.banner.square_bottom_right" 114 + }, 115 + "minecraft:square_top_left": { 116 + "asset_id": "minecraft:square_top_left", 117 + "translation_key": "block.minecraft.banner.square_top_left" 118 + }, 119 + "minecraft:square_top_right": { 120 + "asset_id": "minecraft:square_top_right", 121 + "translation_key": "block.minecraft.banner.square_top_right" 122 + }, 123 + "minecraft:straight_cross": { 124 + "asset_id": "minecraft:straight_cross", 125 + "translation_key": "block.minecraft.banner.straight_cross" 126 + }, 127 + "minecraft:stripe_bottom": { 128 + "asset_id": "minecraft:stripe_bottom", 129 + "translation_key": "block.minecraft.banner.stripe_bottom" 130 + }, 131 + "minecraft:stripe_center": { 132 + "asset_id": "minecraft:stripe_center", 133 + "translation_key": "block.minecraft.banner.stripe_center" 134 + }, 135 + "minecraft:stripe_downleft": { 136 + "asset_id": "minecraft:stripe_downleft", 137 + "translation_key": "block.minecraft.banner.stripe_downleft" 138 + }, 139 + "minecraft:stripe_downright": { 140 + "asset_id": "minecraft:stripe_downright", 141 + "translation_key": "block.minecraft.banner.stripe_downright" 142 + }, 143 + "minecraft:stripe_left": { 144 + "asset_id": "minecraft:stripe_left", 145 + "translation_key": "block.minecraft.banner.stripe_left" 146 + }, 147 + "minecraft:stripe_middle": { 148 + "asset_id": "minecraft:stripe_middle", 149 + "translation_key": "block.minecraft.banner.stripe_middle" 150 + }, 151 + "minecraft:stripe_right": { 152 + "asset_id": "minecraft:stripe_right", 153 + "translation_key": "block.minecraft.banner.stripe_right" 154 + }, 155 + "minecraft:stripe_top": { 156 + "asset_id": "minecraft:stripe_top", 157 + "translation_key": "block.minecraft.banner.stripe_top" 158 + }, 159 + "minecraft:triangle_bottom": { 160 + "asset_id": "minecraft:triangle_bottom", 161 + "translation_key": "block.minecraft.banner.triangle_bottom" 162 + }, 163 + "minecraft:triangle_top": { 164 + "asset_id": "minecraft:triangle_top", 165 + "translation_key": "block.minecraft.banner.triangle_top" 166 + }, 167 + "minecraft:triangles_bottom": { 168 + "asset_id": "minecraft:triangles_bottom", 169 + "translation_key": "block.minecraft.banner.triangles_bottom" 170 + }, 171 + "minecraft:triangles_top": { 172 + "asset_id": "minecraft:triangles_top", 173 + "translation_key": "block.minecraft.banner.triangles_top" 174 + } 175 + }, 176 + "minecraft:chat_type": { 177 + "minecraft:chat": { 178 + "chat": { 179 + "parameters": [ 180 + "sender", 181 + "content" 182 + ], 183 + "translation_key": "chat.type.text" 184 + }, 185 + "narration": { 186 + "parameters": [ 187 + "sender", 188 + "content" 189 + ], 190 + "translation_key": "chat.type.text.narrate" 191 + } 192 + }, 193 + "minecraft:emote_command": { 194 + "chat": { 195 + "parameters": [ 196 + "sender", 197 + "content" 198 + ], 199 + "translation_key": "chat.type.emote" 200 + }, 201 + "narration": { 202 + "parameters": [ 203 + "sender", 204 + "content" 205 + ], 206 + "translation_key": "chat.type.emote" 207 + } 208 + }, 209 + "minecraft:msg_command_incoming": { 210 + "chat": { 211 + "parameters": [ 212 + "sender", 213 + "content" 214 + ], 215 + "translation_key": "commands.message.display.incoming" 216 + }, 217 + "narration": { 218 + "parameters": [ 219 + "sender", 220 + "content" 221 + ], 222 + "translation_key": "chat.type.text.narrate" 223 + } 224 + }, 225 + "minecraft:msg_command_outgoing": { 226 + "chat": { 227 + "parameters": [ 228 + "target", 229 + "content" 230 + ], 231 + "translation_key": "commands.message.display.outgoing" 232 + }, 233 + "narration": { 234 + "parameters": [ 235 + "sender", 236 + "content" 237 + ], 238 + "translation_key": "chat.type.text.narrate" 239 + } 240 + }, 241 + "minecraft:say_command": { 242 + "chat": { 243 + "parameters": [ 244 + "sender", 245 + "content" 246 + ], 247 + "translation_key": "chat.type.announcement" 248 + }, 249 + "narration": { 250 + "parameters": [ 251 + "sender", 252 + "content" 253 + ], 254 + "translation_key": "chat.type.text.narrate" 255 + } 256 + }, 257 + "minecraft:team_msg_command_incoming": { 258 + "chat": { 259 + "parameters": [ 260 + "target", 261 + "sender", 262 + "content" 263 + ], 264 + "translation_key": "chat.type.team.text" 265 + }, 266 + "narration": { 267 + "parameters": [ 268 + "sender", 269 + "content" 270 + ], 271 + "translation_key": "chat.type.text.narrate" 272 + } 273 + }, 274 + "minecraft:team_msg_command_outgoing": { 275 + "chat": { 276 + "parameters": [ 277 + "target", 278 + "sender", 279 + "content" 280 + ], 281 + "translation_key": "chat.type.team.sent" 282 + }, 283 + "narration": { 284 + "parameters": [ 285 + "sender", 286 + "content" 287 + ], 288 + "translation_key": "chat.type.text.narrate" 289 + } 290 + } 291 + }, 292 + "minecraft:damage_type": { 293 + "minecraft:arrow": { 294 + "exhaustion": 0.10000000149011612, 295 + "message_id": "arrow", 296 + "scaling": "when_caused_by_living_non_player" 297 + }, 298 + "minecraft:bad_respawn_point": { 299 + "exhaustion": 0.10000000149011612, 300 + "message_id": "badRespawnPoint", 301 + "scaling": "always" 302 + }, 303 + "minecraft:cactus": { 304 + "exhaustion": 0.10000000149011612, 305 + "message_id": "cactus", 306 + "scaling": "when_caused_by_living_non_player" 307 + }, 308 + "minecraft:campfire": { 309 + "exhaustion": 0.10000000149011612, 310 + "message_id": "inFire", 311 + "scaling": "when_caused_by_living_non_player" 312 + }, 313 + "minecraft:cramming": { 314 + "exhaustion": 0.0, 315 + "message_id": "cramming", 316 + "scaling": "when_caused_by_living_non_player" 317 + }, 318 + "minecraft:dragon_breath": { 319 + "exhaustion": 0.0, 320 + "message_id": "dragonBreath", 321 + "scaling": "when_caused_by_living_non_player" 322 + }, 323 + "minecraft:drown": { 324 + "exhaustion": 0.0, 325 + "message_id": "drown", 326 + "scaling": "when_caused_by_living_non_player" 327 + }, 328 + "minecraft:dry_out": { 329 + "exhaustion": 0.10000000149011612, 330 + "message_id": "dryout", 331 + "scaling": "when_caused_by_living_non_player" 332 + }, 333 + "minecraft:explosion": { 334 + "exhaustion": 0.10000000149011612, 335 + "message_id": "explosion", 336 + "scaling": "always" 337 + }, 338 + "minecraft:fall": { 339 + "exhaustion": 0.0, 340 + "message_id": "fall", 341 + "scaling": "when_caused_by_living_non_player" 342 + }, 343 + "minecraft:falling_anvil": { 344 + "exhaustion": 0.10000000149011612, 345 + "message_id": "anvil", 346 + "scaling": "when_caused_by_living_non_player" 347 + }, 348 + "minecraft:falling_block": { 349 + "exhaustion": 0.10000000149011612, 350 + "message_id": "fallingBlock", 351 + "scaling": "when_caused_by_living_non_player" 352 + }, 353 + "minecraft:falling_stalactite": { 354 + "exhaustion": 0.10000000149011612, 355 + "message_id": "fallingStalactite", 356 + "scaling": "when_caused_by_living_non_player" 357 + }, 358 + "minecraft:fireball": { 359 + "exhaustion": 0.10000000149011612, 360 + "message_id": "fireball", 361 + "scaling": "when_caused_by_living_non_player" 362 + }, 363 + "minecraft:fireworks": { 364 + "exhaustion": 0.10000000149011612, 365 + "message_id": "fireworks", 366 + "scaling": "when_caused_by_living_non_player" 367 + }, 368 + "minecraft:fly_into_wall": { 369 + "exhaustion": 0.0, 370 + "message_id": "flyIntoWall", 371 + "scaling": "when_caused_by_living_non_player" 372 + }, 373 + "minecraft:freeze": { 374 + "exhaustion": 0.0, 375 + "message_id": "freeze", 376 + "scaling": "when_caused_by_living_non_player" 377 + }, 378 + "minecraft:generic": { 379 + "exhaustion": 0.0, 380 + "message_id": "generic", 381 + "scaling": "when_caused_by_living_non_player" 382 + }, 383 + "minecraft:generic_kill": { 384 + "exhaustion": 0.0, 385 + "message_id": "genericKill", 386 + "scaling": "when_caused_by_living_non_player" 387 + }, 388 + "minecraft:hot_floor": { 389 + "exhaustion": 0.10000000149011612, 390 + "message_id": "hotFloor", 391 + "scaling": "when_caused_by_living_non_player" 392 + }, 393 + "minecraft:in_fire": { 394 + "exhaustion": 0.10000000149011612, 395 + "message_id": "inFire", 396 + "scaling": "when_caused_by_living_non_player" 397 + }, 398 + "minecraft:in_wall": { 399 + "exhaustion": 0.0, 400 + "message_id": "inWall", 401 + "scaling": "when_caused_by_living_non_player" 402 + }, 403 + "minecraft:indirect_magic": { 404 + "exhaustion": 0.0, 405 + "message_id": "indirectMagic", 406 + "scaling": "when_caused_by_living_non_player" 407 + }, 408 + "minecraft:lava": { 409 + "exhaustion": 0.10000000149011612, 410 + "message_id": "lava", 411 + "scaling": "when_caused_by_living_non_player" 412 + }, 413 + "minecraft:lightning_bolt": { 414 + "exhaustion": 0.10000000149011612, 415 + "message_id": "lightningBolt", 416 + "scaling": "when_caused_by_living_non_player" 417 + }, 418 + "minecraft:magic": { 419 + "exhaustion": 0.0, 420 + "message_id": "magic", 421 + "scaling": "when_caused_by_living_non_player" 422 + }, 423 + "minecraft:mob_attack": { 424 + "exhaustion": 0.10000000149011612, 425 + "message_id": "mob", 426 + "scaling": "when_caused_by_living_non_player" 427 + }, 428 + "minecraft:mob_attack_no_aggro": { 429 + "exhaustion": 0.10000000149011612, 430 + "message_id": "mob", 431 + "scaling": "when_caused_by_living_non_player" 432 + }, 433 + "minecraft:mob_projectile": { 434 + "exhaustion": 0.10000000149011612, 435 + "message_id": "mob", 436 + "scaling": "when_caused_by_living_non_player" 437 + }, 438 + "minecraft:on_fire": { 439 + "exhaustion": 0.0, 440 + "message_id": "onFire", 441 + "scaling": "when_caused_by_living_non_player" 442 + }, 443 + "minecraft:out_of_world": { 444 + "exhaustion": 0.0, 445 + "message_id": "outOfWorld", 446 + "scaling": "when_caused_by_living_non_player" 447 + }, 448 + "minecraft:outside_border": { 449 + "exhaustion": 0.0, 450 + "message_id": "outsideBorder", 451 + "scaling": "when_caused_by_living_non_player" 452 + }, 453 + "minecraft:player_attack": { 454 + "exhaustion": 0.10000000149011612, 455 + "message_id": "player", 456 + "scaling": "when_caused_by_living_non_player" 457 + }, 458 + "minecraft:player_explosion": { 459 + "exhaustion": 0.10000000149011612, 460 + "message_id": "explosion.player", 461 + "scaling": "always" 462 + }, 463 + "minecraft:sonic_boom": { 464 + "exhaustion": 0.0, 465 + "message_id": "sonic_boom", 466 + "scaling": "always" 467 + }, 468 + "minecraft:spit": { 469 + "exhaustion": 0.10000000149011612, 470 + "message_id": "mob", 471 + "scaling": "when_caused_by_living_non_player" 472 + }, 473 + "minecraft:stalagmite": { 474 + "exhaustion": 0.0, 475 + "message_id": "stalagmite", 476 + "scaling": "when_caused_by_living_non_player" 477 + }, 478 + "minecraft:starve": { 479 + "exhaustion": 0.0, 480 + "message_id": "starve", 481 + "scaling": "when_caused_by_living_non_player" 482 + }, 483 + "minecraft:sting": { 484 + "exhaustion": 0.10000000149011612, 485 + "message_id": "sting", 486 + "scaling": "when_caused_by_living_non_player" 487 + }, 488 + "minecraft:sweet_berry_bush": { 489 + "exhaustion": 0.10000000149011612, 490 + "message_id": "sweetBerryBush", 491 + "scaling": "when_caused_by_living_non_player" 492 + }, 493 + "minecraft:thorns": { 494 + "exhaustion": 0.10000000149011612, 495 + "message_id": "thorns", 496 + "scaling": "when_caused_by_living_non_player" 497 + }, 498 + "minecraft:thrown": { 499 + "exhaustion": 0.10000000149011612, 500 + "message_id": "thrown", 501 + "scaling": "when_caused_by_living_non_player" 502 + }, 503 + "minecraft:trident": { 504 + "exhaustion": 0.10000000149011612, 505 + "message_id": "trident", 506 + "scaling": "when_caused_by_living_non_player" 507 + }, 508 + "minecraft:unattributed_fireball": { 509 + "exhaustion": 0.10000000149011612, 510 + "message_id": "onFire", 511 + "scaling": "when_caused_by_living_non_player" 512 + }, 513 + "minecraft:wind_charge": { 514 + "exhaustion": 0.10000000149011612, 515 + "message_id": "mob", 516 + "scaling": "when_caused_by_living_non_player" 517 + }, 518 + "minecraft:wither": { 519 + "exhaustion": 0.0, 520 + "message_id": "wither", 521 + "scaling": "when_caused_by_living_non_player" 522 + }, 523 + "minecraft:wither_skull": { 524 + "exhaustion": 0.10000000149011612, 525 + "message_id": "witherSkull", 526 + "scaling": "when_caused_by_living_non_player" 527 + } 528 + }, 529 + "minecraft:dimension_type": { 530 + "minecraft:overworld": { 531 + "ambient_light": 0.0, 532 + "bed_works": 1, 533 + "coordinate_scale": 1.0, 534 + "effects": "minecraft:overworld", 535 + "has_ceiling": 0, 536 + "has_raids": 1, 537 + "has_skylight": 1, 538 + "height": 384, 539 + "infiniburn": "#minecraft:infiniburn_overworld", 540 + "logical_height": 384, 541 + "min_y": -64, 542 + "monster_spawn_block_light_limit": 0, 543 + "monster_spawn_light_level": { 544 + "max_inclusive": 7, 545 + "min_inclusive": 0, 546 + "type": "minecraft:uniform" 547 + }, 548 + "natural": 1, 549 + "piglin_safe": 0, 550 + "respawn_anchor_works": 0, 551 + "ultrawarm": 0 552 + }, 553 + "minecraft:overworld_caves": { 554 + "ambient_light": 0.0, 555 + "bed_works": 1, 556 + "coordinate_scale": 1.0, 557 + "effects": "minecraft:overworld", 558 + "has_ceiling": 1, 559 + "has_raids": 1, 560 + "has_skylight": 1, 561 + "height": 384, 562 + "infiniburn": "#minecraft:infiniburn_overworld", 563 + "logical_height": 384, 564 + "min_y": -64, 565 + "monster_spawn_block_light_limit": 0, 566 + "monster_spawn_light_level": { 567 + "max_inclusive": 7, 568 + "min_inclusive": 0, 569 + "type": "minecraft:uniform" 570 + }, 571 + "natural": 1, 572 + "piglin_safe": 0, 573 + "respawn_anchor_works": 0, 574 + "ultrawarm": 0 575 + }, 576 + "minecraft:the_end": { 577 + "ambient_light": 0.0, 578 + "bed_works": 0, 579 + "coordinate_scale": 1.0, 580 + "effects": "minecraft:the_end", 581 + "has_ceiling": 0, 582 + "has_raids": 1, 583 + "has_skylight": 0, 584 + "height": 256, 585 + "infiniburn": "#minecraft:infiniburn_end", 586 + "logical_height": 256, 587 + "min_y": 0, 588 + "monster_spawn_block_light_limit": 0, 589 + "monster_spawn_light_level": { 590 + "max_inclusive": 7, 591 + "min_inclusive": 0, 592 + "type": "minecraft:uniform" 593 + }, 594 + "natural": 0, 595 + "piglin_safe": 0, 596 + "respawn_anchor_works": 0, 597 + "ultrawarm": 0 598 + }, 599 + "minecraft:the_nether": { 600 + "ambient_light": 0.10000000149011612, 601 + "bed_works": 0, 602 + "coordinate_scale": 8.0, 603 + "effects": "minecraft:the_nether", 604 + "has_ceiling": 1, 605 + "has_raids": 0, 606 + "has_skylight": 0, 607 + "height": 256, 608 + "infiniburn": "#minecraft:infiniburn_nether", 609 + "logical_height": 128, 610 + "min_y": 0, 611 + "monster_spawn_block_light_limit": 15, 612 + "monster_spawn_light_level": { 613 + "max_inclusive": 7, 614 + "min_inclusive": 7, 615 + "type": "minecraft:uniform" 616 + }, 617 + "natural": 0, 618 + "piglin_safe": 1, 619 + "respawn_anchor_works": 1, 620 + "ultrawarm": 1 621 + } 622 + }, 623 + "minecraft:painting_variant": { 624 + "minecraft:alban": { 625 + "asset_id": "minecraft:alban", 626 + "height": 1, 627 + "width": 1 628 + }, 629 + "minecraft:aztec": { 630 + "asset_id": "minecraft:aztec", 631 + "height": 1, 632 + "width": 1 633 + }, 634 + "minecraft:aztec2": { 635 + "asset_id": "minecraft:aztec2", 636 + "height": 1, 637 + "width": 1 638 + }, 639 + "minecraft:backyard": { 640 + "asset_id": "minecraft:backyard", 641 + "height": 4, 642 + "width": 3 643 + }, 644 + "minecraft:baroque": { 645 + "asset_id": "minecraft:baroque", 646 + "height": 2, 647 + "width": 2 648 + }, 649 + "minecraft:bomb": { 650 + "asset_id": "minecraft:bomb", 651 + "height": 1, 652 + "width": 1 653 + }, 654 + "minecraft:bouquet": { 655 + "asset_id": "minecraft:bouquet", 656 + "height": 3, 657 + "width": 3 658 + }, 659 + "minecraft:burning_skull": { 660 + "asset_id": "minecraft:burning_skull", 661 + "height": 4, 662 + "width": 4 663 + }, 664 + "minecraft:bust": { 665 + "asset_id": "minecraft:bust", 666 + "height": 2, 667 + "width": 2 668 + }, 669 + "minecraft:cavebird": { 670 + "asset_id": "minecraft:cavebird", 671 + "height": 3, 672 + "width": 3 673 + }, 674 + "minecraft:changing": { 675 + "asset_id": "minecraft:changing", 676 + "height": 2, 677 + "width": 4 678 + }, 679 + "minecraft:cotan": { 680 + "asset_id": "minecraft:cotan", 681 + "height": 3, 682 + "width": 3 683 + }, 684 + "minecraft:courbet": { 685 + "asset_id": "minecraft:courbet", 686 + "height": 1, 687 + "width": 2 688 + }, 689 + "minecraft:creebet": { 690 + "asset_id": "minecraft:creebet", 691 + "height": 1, 692 + "width": 2 693 + }, 694 + "minecraft:donkey_kong": { 695 + "asset_id": "minecraft:donkey_kong", 696 + "height": 3, 697 + "width": 4 698 + }, 699 + "minecraft:earth": { 700 + "asset_id": "minecraft:earth", 701 + "height": 2, 702 + "width": 2 703 + }, 704 + "minecraft:endboss": { 705 + "asset_id": "minecraft:endboss", 706 + "height": 3, 707 + "width": 3 708 + }, 709 + "minecraft:fern": { 710 + "asset_id": "minecraft:fern", 711 + "height": 3, 712 + "width": 3 713 + }, 714 + "minecraft:fighters": { 715 + "asset_id": "minecraft:fighters", 716 + "height": 2, 717 + "width": 4 718 + }, 719 + "minecraft:finding": { 720 + "asset_id": "minecraft:finding", 721 + "height": 2, 722 + "width": 4 723 + }, 724 + "minecraft:fire": { 725 + "asset_id": "minecraft:fire", 726 + "height": 2, 727 + "width": 2 728 + }, 729 + "minecraft:graham": { 730 + "asset_id": "minecraft:graham", 731 + "height": 2, 732 + "width": 1 733 + }, 734 + "minecraft:humble": { 735 + "asset_id": "minecraft:humble", 736 + "height": 2, 737 + "width": 2 738 + }, 739 + "minecraft:kebab": { 740 + "asset_id": "minecraft:kebab", 741 + "height": 1, 742 + "width": 1 743 + }, 744 + "minecraft:lowmist": { 745 + "asset_id": "minecraft:lowmist", 746 + "height": 2, 747 + "width": 4 748 + }, 749 + "minecraft:match": { 750 + "asset_id": "minecraft:match", 751 + "height": 2, 752 + "width": 2 753 + }, 754 + "minecraft:meditative": { 755 + "asset_id": "minecraft:meditative", 756 + "height": 1, 757 + "width": 1 758 + }, 759 + "minecraft:orb": { 760 + "asset_id": "minecraft:orb", 761 + "height": 4, 762 + "width": 4 763 + }, 764 + "minecraft:owlemons": { 765 + "asset_id": "minecraft:owlemons", 766 + "height": 3, 767 + "width": 3 768 + }, 769 + "minecraft:passage": { 770 + "asset_id": "minecraft:passage", 771 + "height": 2, 772 + "width": 4 773 + }, 774 + "minecraft:pigscene": { 775 + "asset_id": "minecraft:pigscene", 776 + "height": 4, 777 + "width": 4 778 + }, 779 + "minecraft:plant": { 780 + "asset_id": "minecraft:plant", 781 + "height": 1, 782 + "width": 1 783 + }, 784 + "minecraft:pointer": { 785 + "asset_id": "minecraft:pointer", 786 + "height": 4, 787 + "width": 4 788 + }, 789 + "minecraft:pond": { 790 + "asset_id": "minecraft:pond", 791 + "height": 4, 792 + "width": 3 793 + }, 794 + "minecraft:pool": { 795 + "asset_id": "minecraft:pool", 796 + "height": 1, 797 + "width": 2 798 + }, 799 + "minecraft:prairie_ride": { 800 + "asset_id": "minecraft:prairie_ride", 801 + "height": 2, 802 + "width": 1 803 + }, 804 + "minecraft:sea": { 805 + "asset_id": "minecraft:sea", 806 + "height": 1, 807 + "width": 2 808 + }, 809 + "minecraft:skeleton": { 810 + "asset_id": "minecraft:skeleton", 811 + "height": 3, 812 + "width": 4 813 + }, 814 + "minecraft:skull_and_roses": { 815 + "asset_id": "minecraft:skull_and_roses", 816 + "height": 2, 817 + "width": 2 818 + }, 819 + "minecraft:stage": { 820 + "asset_id": "minecraft:stage", 821 + "height": 2, 822 + "width": 2 823 + }, 824 + "minecraft:sunflowers": { 825 + "asset_id": "minecraft:sunflowers", 826 + "height": 3, 827 + "width": 3 828 + }, 829 + "minecraft:sunset": { 830 + "asset_id": "minecraft:sunset", 831 + "height": 1, 832 + "width": 2 833 + }, 834 + "minecraft:tides": { 835 + "asset_id": "minecraft:tides", 836 + "height": 3, 837 + "width": 3 838 + }, 839 + "minecraft:unpacked": { 840 + "asset_id": "minecraft:unpacked", 841 + "height": 4, 842 + "width": 4 843 + }, 844 + "minecraft:void": { 845 + "asset_id": "minecraft:void", 846 + "height": 2, 847 + "width": 2 848 + }, 849 + "minecraft:wanderer": { 850 + "asset_id": "minecraft:wanderer", 851 + "height": 2, 852 + "width": 1 853 + }, 854 + "minecraft:wasteland": { 855 + "asset_id": "minecraft:wasteland", 856 + "height": 1, 857 + "width": 1 858 + }, 859 + "minecraft:water": { 860 + "asset_id": "minecraft:water", 861 + "height": 2, 862 + "width": 2 863 + }, 864 + "minecraft:wind": { 865 + "asset_id": "minecraft:wind", 866 + "height": 2, 867 + "width": 2 868 + }, 869 + "minecraft:wither": { 870 + "asset_id": "minecraft:wither", 871 + "height": 2, 872 + "width": 2 873 + } 874 + }, 875 + "minecraft:trim_material": { 876 + "minecraft:amethyst": { 877 + "asset_name": "amethyst", 878 + "description": { 879 + "color": "#9A5CC6", 880 + "translate": "trim_material.minecraft.amethyst" 881 + }, 882 + "ingredient": "minecraft:amethyst_shard", 883 + "item_model_index": 1.0 884 + }, 885 + "minecraft:copper": { 886 + "asset_name": "copper", 887 + "description": { 888 + "color": "#B4684D", 889 + "translate": "trim_material.minecraft.copper" 890 + }, 891 + "ingredient": "minecraft:copper_ingot", 892 + "item_model_index": 0.5 893 + }, 894 + "minecraft:diamond": { 895 + "asset_name": "diamond", 896 + "description": { 897 + "color": "#6EECD2", 898 + "translate": "trim_material.minecraft.diamond" 899 + }, 900 + "ingredient": "minecraft:diamond", 901 + "item_model_index": 0.800000011920929 902 + }, 903 + "minecraft:emerald": { 904 + "asset_name": "emerald", 905 + "description": { 906 + "color": "#11A036", 907 + "translate": "trim_material.minecraft.emerald" 908 + }, 909 + "ingredient": "minecraft:emerald", 910 + "item_model_index": 0.699999988079071 911 + }, 912 + "minecraft:gold": { 913 + "asset_name": "gold", 914 + "description": { 915 + "color": "#DEB12D", 916 + "translate": "trim_material.minecraft.gold" 917 + }, 918 + "ingredient": "minecraft:gold_ingot", 919 + "item_model_index": 0.6000000238418579 920 + }, 921 + "minecraft:iron": { 922 + "asset_name": "iron", 923 + "description": { 924 + "color": "#ECECEC", 925 + "translate": "trim_material.minecraft.iron" 926 + }, 927 + "ingredient": "minecraft:iron_ingot", 928 + "item_model_index": 0.20000000298023224 929 + }, 930 + "minecraft:lapis": { 931 + "asset_name": "lapis", 932 + "description": { 933 + "color": "#416E97", 934 + "translate": "trim_material.minecraft.lapis" 935 + }, 936 + "ingredient": "minecraft:lapis_lazuli", 937 + "item_model_index": 0.8999999761581421 938 + }, 939 + "minecraft:netherite": { 940 + "asset_name": "netherite", 941 + "description": { 942 + "color": "#625859", 943 + "translate": "trim_material.minecraft.netherite" 944 + }, 945 + "ingredient": "minecraft:netherite_ingot", 946 + "item_model_index": 0.30000001192092896 947 + }, 948 + "minecraft:quartz": { 949 + "asset_name": "quartz", 950 + "description": { 951 + "color": "#E3D4C4", 952 + "translate": "trim_material.minecraft.quartz" 953 + }, 954 + "ingredient": "minecraft:quartz", 955 + "item_model_index": 0.10000000149011612 956 + }, 957 + "minecraft:redstone": { 958 + "asset_name": "redstone", 959 + "description": { 960 + "color": "#971607", 961 + "translate": "trim_material.minecraft.redstone" 962 + }, 963 + "ingredient": "minecraft:redstone", 964 + "item_model_index": 0.4000000059604645 965 + } 966 + }, 967 + "minecraft:trim_pattern": { 968 + "minecraft:bolt": { 969 + "asset_id": "minecraft:bolt", 970 + "description": { 971 + "translate": "trim_pattern.minecraft.bolt" 972 + }, 973 + "template_item": "minecraft:bolt_armor_trim_smithing_template" 974 + }, 975 + "minecraft:coast": { 976 + "asset_id": "minecraft:coast", 977 + "description": { 978 + "translate": "trim_pattern.minecraft.coast" 979 + }, 980 + "template_item": "minecraft:coast_armor_trim_smithing_template" 981 + }, 982 + "minecraft:dune": { 983 + "asset_id": "minecraft:dune", 984 + "description": { 985 + "translate": "trim_pattern.minecraft.dune" 986 + }, 987 + "template_item": "minecraft:dune_armor_trim_smithing_template" 988 + }, 989 + "minecraft:eye": { 990 + "asset_id": "minecraft:eye", 991 + "description": { 992 + "translate": "trim_pattern.minecraft.eye" 993 + }, 994 + "template_item": "minecraft:eye_armor_trim_smithing_template" 995 + }, 996 + "minecraft:flow": { 997 + "asset_id": "minecraft:flow", 998 + "description": { 999 + "translate": "trim_pattern.minecraft.flow" 1000 + }, 1001 + "template_item": "minecraft:flow_armor_trim_smithing_template" 1002 + }, 1003 + "minecraft:host": { 1004 + "asset_id": "minecraft:host", 1005 + "description": { 1006 + "translate": "trim_pattern.minecraft.host" 1007 + }, 1008 + "template_item": "minecraft:host_armor_trim_smithing_template" 1009 + }, 1010 + "minecraft:raiser": { 1011 + "asset_id": "minecraft:raiser", 1012 + "description": { 1013 + "translate": "trim_pattern.minecraft.raiser" 1014 + }, 1015 + "template_item": "minecraft:raiser_armor_trim_smithing_template" 1016 + }, 1017 + "minecraft:rib": { 1018 + "asset_id": "minecraft:rib", 1019 + "description": { 1020 + "translate": "trim_pattern.minecraft.rib" 1021 + }, 1022 + "template_item": "minecraft:rib_armor_trim_smithing_template" 1023 + }, 1024 + "minecraft:sentry": { 1025 + "asset_id": "minecraft:sentry", 1026 + "description": { 1027 + "translate": "trim_pattern.minecraft.sentry" 1028 + }, 1029 + "template_item": "minecraft:sentry_armor_trim_smithing_template" 1030 + }, 1031 + "minecraft:shaper": { 1032 + "asset_id": "minecraft:shaper", 1033 + "description": { 1034 + "translate": "trim_pattern.minecraft.shaper" 1035 + }, 1036 + "template_item": "minecraft:shaper_armor_trim_smithing_template" 1037 + }, 1038 + "minecraft:silence": { 1039 + "asset_id": "minecraft:silence", 1040 + "description": { 1041 + "translate": "trim_pattern.minecraft.silence" 1042 + }, 1043 + "template_item": "minecraft:silence_armor_trim_smithing_template" 1044 + }, 1045 + "minecraft:snout": { 1046 + "asset_id": "minecraft:snout", 1047 + "description": { 1048 + "translate": "trim_pattern.minecraft.snout" 1049 + }, 1050 + "template_item": "minecraft:snout_armor_trim_smithing_template" 1051 + }, 1052 + "minecraft:spire": { 1053 + "asset_id": "minecraft:spire", 1054 + "description": { 1055 + "translate": "trim_pattern.minecraft.spire" 1056 + }, 1057 + "template_item": "minecraft:spire_armor_trim_smithing_template" 1058 + }, 1059 + "minecraft:tide": { 1060 + "asset_id": "minecraft:tide", 1061 + "description": { 1062 + "translate": "trim_pattern.minecraft.tide" 1063 + }, 1064 + "template_item": "minecraft:tide_armor_trim_smithing_template" 1065 + }, 1066 + "minecraft:vex": { 1067 + "asset_id": "minecraft:vex", 1068 + "description": { 1069 + "translate": "trim_pattern.minecraft.vex" 1070 + }, 1071 + "template_item": "minecraft:vex_armor_trim_smithing_template" 1072 + }, 1073 + "minecraft:ward": { 1074 + "asset_id": "minecraft:ward", 1075 + "description": { 1076 + "translate": "trim_pattern.minecraft.ward" 1077 + }, 1078 + "template_item": "minecraft:ward_armor_trim_smithing_template" 1079 + }, 1080 + "minecraft:wayfinder": { 1081 + "asset_id": "minecraft:wayfinder", 1082 + "description": { 1083 + "translate": "trim_pattern.minecraft.wayfinder" 1084 + }, 1085 + "template_item": "minecraft:wayfinder_armor_trim_smithing_template" 1086 + }, 1087 + "minecraft:wild": { 1088 + "asset_id": "minecraft:wild", 1089 + "description": { 1090 + "translate": "trim_pattern.minecraft.wild" 1091 + }, 1092 + "template_item": "minecraft:wild_armor_trim_smithing_template" 1093 + } 1094 + }, 1095 + "minecraft:wolf_variant": { 1096 + "minecraft:ashen": { 1097 + "angry_texture": "minecraft:entity/wolf/wolf_ashen_angry", 1098 + "biomes": "minecraft:snowy_taiga", 1099 + "tame_texture": "minecraft:entity/wolf/wolf_ashen_tame", 1100 + "wild_texture": "minecraft:entity/wolf/wolf_ashen" 1101 + }, 1102 + "minecraft:black": { 1103 + "angry_texture": "minecraft:entity/wolf/wolf_black_angry", 1104 + "biomes": "minecraft:old_growth_pine_taiga", 1105 + "tame_texture": "minecraft:entity/wolf/wolf_black_tame", 1106 + "wild_texture": "minecraft:entity/wolf/wolf_black" 1107 + }, 1108 + "minecraft:chestnut": { 1109 + "angry_texture": "minecraft:entity/wolf/wolf_chestnut_angry", 1110 + "biomes": "minecraft:old_growth_spruce_taiga", 1111 + "tame_texture": "minecraft:entity/wolf/wolf_chestnut_tame", 1112 + "wild_texture": "minecraft:entity/wolf/wolf_chestnut" 1113 + }, 1114 + "minecraft:pale": { 1115 + "angry_texture": "minecraft:entity/wolf/wolf_angry", 1116 + "biomes": "minecraft:taiga", 1117 + "tame_texture": "minecraft:entity/wolf/wolf_tame", 1118 + "wild_texture": "minecraft:entity/wolf/wolf" 1119 + }, 1120 + "minecraft:rusty": { 1121 + "angry_texture": "minecraft:entity/wolf/wolf_rusty_angry", 1122 + "biomes": "#minecraft:is_jungle", 1123 + "tame_texture": "minecraft:entity/wolf/wolf_rusty_tame", 1124 + "wild_texture": "minecraft:entity/wolf/wolf_rusty" 1125 + }, 1126 + "minecraft:snowy": { 1127 + "angry_texture": "minecraft:entity/wolf/wolf_snowy_angry", 1128 + "biomes": "minecraft:grove", 1129 + "tame_texture": "minecraft:entity/wolf/wolf_snowy_tame", 1130 + "wild_texture": "minecraft:entity/wolf/wolf_snowy" 1131 + }, 1132 + "minecraft:spotted": { 1133 + "angry_texture": "minecraft:entity/wolf/wolf_spotted_angry", 1134 + "biomes": "#minecraft:is_savanna", 1135 + "tame_texture": "minecraft:entity/wolf/wolf_spotted_tame", 1136 + "wild_texture": "minecraft:entity/wolf/wolf_spotted" 1137 + }, 1138 + "minecraft:striped": { 1139 + "angry_texture": "minecraft:entity/wolf/wolf_striped_angry", 1140 + "biomes": "#minecraft:is_badlands", 1141 + "tame_texture": "minecraft:entity/wolf/wolf_striped_tame", 1142 + "wild_texture": "minecraft:entity/wolf/wolf_striped" 1143 + }, 1144 + "minecraft:woods": { 1145 + "angry_texture": "minecraft:entity/wolf/wolf_woods_angry", 1146 + "biomes": "minecraft:forest", 1147 + "tame_texture": "minecraft:entity/wolf/wolf_woods_tame", 1148 + "wild_texture": "minecraft:entity/wolf/wolf_woods" 1149 + } 1150 + }, 1151 + "minecraft:worldgen/biome": { 1152 + "minecraft:badlands": { 1153 + "downfall": 0.0, 1154 + "effects": { 1155 + "fog_color": 12638463, 1156 + "foliage_color": 10387789, 1157 + "grass_color": 9470285, 1158 + "mood_sound": { 1159 + "block_search_extent": 8, 1160 + "offset": 2.0, 1161 + "sound": "minecraft:ambient.cave", 1162 + "tick_delay": 6000 1163 + }, 1164 + "music": { 1165 + "max_delay": 24000, 1166 + "min_delay": 12000, 1167 + "replace_current_music": false, 1168 + "sound": "minecraft:music.overworld.badlands" 1169 + }, 1170 + "sky_color": 7254527, 1171 + "water_color": 4159204, 1172 + "water_fog_color": 329011 1173 + }, 1174 + "has_precipitation": false, 1175 + "temperature": 2.0 1176 + }, 1177 + "minecraft:bamboo_jungle": { 1178 + "downfall": 0.8999999761581421, 1179 + "effects": { 1180 + "fog_color": 12638463, 1181 + "mood_sound": { 1182 + "block_search_extent": 8, 1183 + "offset": 2.0, 1184 + "sound": "minecraft:ambient.cave", 1185 + "tick_delay": 6000 1186 + }, 1187 + "music": { 1188 + "max_delay": 24000, 1189 + "min_delay": 12000, 1190 + "replace_current_music": false, 1191 + "sound": "minecraft:music.overworld.bamboo_jungle" 1192 + }, 1193 + "sky_color": 7842047, 1194 + "water_color": 4159204, 1195 + "water_fog_color": 329011 1196 + }, 1197 + "has_precipitation": true, 1198 + "temperature": 0.949999988079071 1199 + }, 1200 + "minecraft:basalt_deltas": { 1201 + "downfall": 0.0, 1202 + "effects": { 1203 + "additions_sound": { 1204 + "sound": "minecraft:ambient.basalt_deltas.additions", 1205 + "tick_chance": 0.0111 1206 + }, 1207 + "ambient_sound": "minecraft:ambient.basalt_deltas.loop", 1208 + "fog_color": 6840176, 1209 + "mood_sound": { 1210 + "block_search_extent": 8, 1211 + "offset": 2.0, 1212 + "sound": "minecraft:ambient.basalt_deltas.mood", 1213 + "tick_delay": 6000 1214 + }, 1215 + "music": { 1216 + "max_delay": 24000, 1217 + "min_delay": 12000, 1218 + "replace_current_music": false, 1219 + "sound": "minecraft:music.nether.basalt_deltas" 1220 + }, 1221 + "particle": { 1222 + "options": { 1223 + "type": "minecraft:white_ash" 1224 + }, 1225 + "probability": 0.118093334 1226 + }, 1227 + "sky_color": 7254527, 1228 + "water_color": 4159204, 1229 + "water_fog_color": 329011 1230 + }, 1231 + "has_precipitation": false, 1232 + "temperature": 2.0 1233 + }, 1234 + "minecraft:beach": { 1235 + "downfall": 0.4000000059604645, 1236 + "effects": { 1237 + "fog_color": 12638463, 1238 + "mood_sound": { 1239 + "block_search_extent": 8, 1240 + "offset": 2.0, 1241 + "sound": "minecraft:ambient.cave", 1242 + "tick_delay": 6000 1243 + }, 1244 + "sky_color": 7907327, 1245 + "water_color": 4159204, 1246 + "water_fog_color": 329011 1247 + }, 1248 + "has_precipitation": true, 1249 + "temperature": 0.800000011920929 1250 + }, 1251 + "minecraft:birch_forest": { 1252 + "downfall": 0.6000000238418579, 1253 + "effects": { 1254 + "fog_color": 12638463, 1255 + "mood_sound": { 1256 + "block_search_extent": 8, 1257 + "offset": 2.0, 1258 + "sound": "minecraft:ambient.cave", 1259 + "tick_delay": 6000 1260 + }, 1261 + "music": { 1262 + "max_delay": 24000, 1263 + "min_delay": 12000, 1264 + "replace_current_music": false, 1265 + "sound": "minecraft:music.overworld.forest" 1266 + }, 1267 + "sky_color": 8037887, 1268 + "water_color": 4159204, 1269 + "water_fog_color": 329011 1270 + }, 1271 + "has_precipitation": true, 1272 + "temperature": 0.6000000238418579 1273 + }, 1274 + "minecraft:cherry_grove": { 1275 + "downfall": 0.800000011920929, 1276 + "effects": { 1277 + "fog_color": 12638463, 1278 + "foliage_color": 11983713, 1279 + "grass_color": 11983713, 1280 + "mood_sound": { 1281 + "block_search_extent": 8, 1282 + "offset": 2.0, 1283 + "sound": "minecraft:ambient.cave", 1284 + "tick_delay": 6000 1285 + }, 1286 + "music": { 1287 + "max_delay": 24000, 1288 + "min_delay": 12000, 1289 + "replace_current_music": false, 1290 + "sound": "minecraft:music.overworld.cherry_grove" 1291 + }, 1292 + "sky_color": 8103167, 1293 + "water_color": 6141935, 1294 + "water_fog_color": 6141935 1295 + }, 1296 + "has_precipitation": true, 1297 + "temperature": 0.5 1298 + }, 1299 + "minecraft:cold_ocean": { 1300 + "downfall": 0.5, 1301 + "effects": { 1302 + "fog_color": 12638463, 1303 + "mood_sound": { 1304 + "block_search_extent": 8, 1305 + "offset": 2.0, 1306 + "sound": "minecraft:ambient.cave", 1307 + "tick_delay": 6000 1308 + }, 1309 + "sky_color": 8103167, 1310 + "water_color": 4020182, 1311 + "water_fog_color": 329011 1312 + }, 1313 + "has_precipitation": true, 1314 + "temperature": 0.5 1315 + }, 1316 + "minecraft:crimson_forest": { 1317 + "downfall": 0.0, 1318 + "effects": { 1319 + "additions_sound": { 1320 + "sound": "minecraft:ambient.crimson_forest.additions", 1321 + "tick_chance": 0.0111 1322 + }, 1323 + "ambient_sound": "minecraft:ambient.crimson_forest.loop", 1324 + "fog_color": 3343107, 1325 + "mood_sound": { 1326 + "block_search_extent": 8, 1327 + "offset": 2.0, 1328 + "sound": "minecraft:ambient.crimson_forest.mood", 1329 + "tick_delay": 6000 1330 + }, 1331 + "music": { 1332 + "max_delay": 24000, 1333 + "min_delay": 12000, 1334 + "replace_current_music": false, 1335 + "sound": "minecraft:music.nether.crimson_forest" 1336 + }, 1337 + "particle": { 1338 + "options": { 1339 + "type": "minecraft:crimson_spore" 1340 + }, 1341 + "probability": 0.025 1342 + }, 1343 + "sky_color": 7254527, 1344 + "water_color": 4159204, 1345 + "water_fog_color": 329011 1346 + }, 1347 + "has_precipitation": false, 1348 + "temperature": 2.0 1349 + }, 1350 + "minecraft:dark_forest": { 1351 + "downfall": 0.800000011920929, 1352 + "effects": { 1353 + "fog_color": 12638463, 1354 + "grass_color_modifier": "dark_forest", 1355 + "mood_sound": { 1356 + "block_search_extent": 8, 1357 + "offset": 2.0, 1358 + "sound": "minecraft:ambient.cave", 1359 + "tick_delay": 6000 1360 + }, 1361 + "music": { 1362 + "max_delay": 24000, 1363 + "min_delay": 12000, 1364 + "replace_current_music": false, 1365 + "sound": "minecraft:music.overworld.forest" 1366 + }, 1367 + "sky_color": 7972607, 1368 + "water_color": 4159204, 1369 + "water_fog_color": 329011 1370 + }, 1371 + "has_precipitation": true, 1372 + "temperature": 0.699999988079071 1373 + }, 1374 + "minecraft:deep_cold_ocean": { 1375 + "downfall": 0.5, 1376 + "effects": { 1377 + "fog_color": 12638463, 1378 + "mood_sound": { 1379 + "block_search_extent": 8, 1380 + "offset": 2.0, 1381 + "sound": "minecraft:ambient.cave", 1382 + "tick_delay": 6000 1383 + }, 1384 + "sky_color": 8103167, 1385 + "water_color": 4020182, 1386 + "water_fog_color": 329011 1387 + }, 1388 + "has_precipitation": true, 1389 + "temperature": 0.5 1390 + }, 1391 + "minecraft:deep_dark": { 1392 + "downfall": 0.4000000059604645, 1393 + "effects": { 1394 + "fog_color": 12638463, 1395 + "mood_sound": { 1396 + "block_search_extent": 8, 1397 + "offset": 2.0, 1398 + "sound": "minecraft:ambient.cave", 1399 + "tick_delay": 6000 1400 + }, 1401 + "music": { 1402 + "max_delay": 24000, 1403 + "min_delay": 12000, 1404 + "replace_current_music": false, 1405 + "sound": "minecraft:music.overworld.deep_dark" 1406 + }, 1407 + "sky_color": 7907327, 1408 + "water_color": 4159204, 1409 + "water_fog_color": 329011 1410 + }, 1411 + "has_precipitation": true, 1412 + "temperature": 0.800000011920929 1413 + }, 1414 + "minecraft:deep_frozen_ocean": { 1415 + "downfall": 0.5, 1416 + "effects": { 1417 + "fog_color": 12638463, 1418 + "mood_sound": { 1419 + "block_search_extent": 8, 1420 + "offset": 2.0, 1421 + "sound": "minecraft:ambient.cave", 1422 + "tick_delay": 6000 1423 + }, 1424 + "sky_color": 8103167, 1425 + "water_color": 3750089, 1426 + "water_fog_color": 329011 1427 + }, 1428 + "has_precipitation": true, 1429 + "temperature": 0.5 1430 + }, 1431 + "minecraft:deep_lukewarm_ocean": { 1432 + "downfall": 0.5, 1433 + "effects": { 1434 + "fog_color": 12638463, 1435 + "mood_sound": { 1436 + "block_search_extent": 8, 1437 + "offset": 2.0, 1438 + "sound": "minecraft:ambient.cave", 1439 + "tick_delay": 6000 1440 + }, 1441 + "sky_color": 8103167, 1442 + "water_color": 4566514, 1443 + "water_fog_color": 267827 1444 + }, 1445 + "has_precipitation": true, 1446 + "temperature": 0.5 1447 + }, 1448 + "minecraft:deep_ocean": { 1449 + "downfall": 0.5, 1450 + "effects": { 1451 + "fog_color": 12638463, 1452 + "mood_sound": { 1453 + "block_search_extent": 8, 1454 + "offset": 2.0, 1455 + "sound": "minecraft:ambient.cave", 1456 + "tick_delay": 6000 1457 + }, 1458 + "sky_color": 8103167, 1459 + "water_color": 4159204, 1460 + "water_fog_color": 329011 1461 + }, 1462 + "has_precipitation": true, 1463 + "temperature": 0.5 1464 + }, 1465 + "minecraft:desert": { 1466 + "downfall": 0.0, 1467 + "effects": { 1468 + "fog_color": 12638463, 1469 + "mood_sound": { 1470 + "block_search_extent": 8, 1471 + "offset": 2.0, 1472 + "sound": "minecraft:ambient.cave", 1473 + "tick_delay": 6000 1474 + }, 1475 + "music": { 1476 + "max_delay": 24000, 1477 + "min_delay": 12000, 1478 + "replace_current_music": false, 1479 + "sound": "minecraft:music.overworld.desert" 1480 + }, 1481 + "sky_color": 7254527, 1482 + "water_color": 4159204, 1483 + "water_fog_color": 329011 1484 + }, 1485 + "has_precipitation": false, 1486 + "temperature": 2.0 1487 + }, 1488 + "minecraft:dripstone_caves": { 1489 + "downfall": 0.4000000059604645, 1490 + "effects": { 1491 + "fog_color": 12638463, 1492 + "mood_sound": { 1493 + "block_search_extent": 8, 1494 + "offset": 2.0, 1495 + "sound": "minecraft:ambient.cave", 1496 + "tick_delay": 6000 1497 + }, 1498 + "music": { 1499 + "max_delay": 24000, 1500 + "min_delay": 12000, 1501 + "replace_current_music": false, 1502 + "sound": "minecraft:music.overworld.dripstone_caves" 1503 + }, 1504 + "sky_color": 7907327, 1505 + "water_color": 4159204, 1506 + "water_fog_color": 329011 1507 + }, 1508 + "has_precipitation": true, 1509 + "temperature": 0.800000011920929 1510 + }, 1511 + "minecraft:end_barrens": { 1512 + "downfall": 0.5, 1513 + "effects": { 1514 + "fog_color": 10518688, 1515 + "mood_sound": { 1516 + "block_search_extent": 8, 1517 + "offset": 2.0, 1518 + "sound": "minecraft:ambient.cave", 1519 + "tick_delay": 6000 1520 + }, 1521 + "sky_color": 0, 1522 + "water_color": 4159204, 1523 + "water_fog_color": 329011 1524 + }, 1525 + "has_precipitation": false, 1526 + "temperature": 0.5 1527 + }, 1528 + "minecraft:end_highlands": { 1529 + "downfall": 0.5, 1530 + "effects": { 1531 + "fog_color": 10518688, 1532 + "mood_sound": { 1533 + "block_search_extent": 8, 1534 + "offset": 2.0, 1535 + "sound": "minecraft:ambient.cave", 1536 + "tick_delay": 6000 1537 + }, 1538 + "sky_color": 0, 1539 + "water_color": 4159204, 1540 + "water_fog_color": 329011 1541 + }, 1542 + "has_precipitation": false, 1543 + "temperature": 0.5 1544 + }, 1545 + "minecraft:end_midlands": { 1546 + "downfall": 0.5, 1547 + "effects": { 1548 + "fog_color": 10518688, 1549 + "mood_sound": { 1550 + "block_search_extent": 8, 1551 + "offset": 2.0, 1552 + "sound": "minecraft:ambient.cave", 1553 + "tick_delay": 6000 1554 + }, 1555 + "sky_color": 0, 1556 + "water_color": 4159204, 1557 + "water_fog_color": 329011 1558 + }, 1559 + "has_precipitation": false, 1560 + "temperature": 0.5 1561 + }, 1562 + "minecraft:eroded_badlands": { 1563 + "downfall": 0.0, 1564 + "effects": { 1565 + "fog_color": 12638463, 1566 + "foliage_color": 10387789, 1567 + "grass_color": 9470285, 1568 + "mood_sound": { 1569 + "block_search_extent": 8, 1570 + "offset": 2.0, 1571 + "sound": "minecraft:ambient.cave", 1572 + "tick_delay": 6000 1573 + }, 1574 + "music": { 1575 + "max_delay": 24000, 1576 + "min_delay": 12000, 1577 + "replace_current_music": false, 1578 + "sound": "minecraft:music.overworld.badlands" 1579 + }, 1580 + "sky_color": 7254527, 1581 + "water_color": 4159204, 1582 + "water_fog_color": 329011 1583 + }, 1584 + "has_precipitation": false, 1585 + "temperature": 2.0 1586 + }, 1587 + "minecraft:flower_forest": { 1588 + "downfall": 0.800000011920929, 1589 + "effects": { 1590 + "fog_color": 12638463, 1591 + "mood_sound": { 1592 + "block_search_extent": 8, 1593 + "offset": 2.0, 1594 + "sound": "minecraft:ambient.cave", 1595 + "tick_delay": 6000 1596 + }, 1597 + "music": { 1598 + "max_delay": 24000, 1599 + "min_delay": 12000, 1600 + "replace_current_music": false, 1601 + "sound": "minecraft:music.overworld.flower_forest" 1602 + }, 1603 + "sky_color": 7972607, 1604 + "water_color": 4159204, 1605 + "water_fog_color": 329011 1606 + }, 1607 + "has_precipitation": true, 1608 + "temperature": 0.699999988079071 1609 + }, 1610 + "minecraft:forest": { 1611 + "downfall": 0.800000011920929, 1612 + "effects": { 1613 + "fog_color": 12638463, 1614 + "mood_sound": { 1615 + "block_search_extent": 8, 1616 + "offset": 2.0, 1617 + "sound": "minecraft:ambient.cave", 1618 + "tick_delay": 6000 1619 + }, 1620 + "music": { 1621 + "max_delay": 24000, 1622 + "min_delay": 12000, 1623 + "replace_current_music": false, 1624 + "sound": "minecraft:music.overworld.forest" 1625 + }, 1626 + "sky_color": 7972607, 1627 + "water_color": 4159204, 1628 + "water_fog_color": 329011 1629 + }, 1630 + "has_precipitation": true, 1631 + "temperature": 0.699999988079071 1632 + }, 1633 + "minecraft:frozen_ocean": { 1634 + "downfall": 0.5, 1635 + "effects": { 1636 + "fog_color": 12638463, 1637 + "mood_sound": { 1638 + "block_search_extent": 8, 1639 + "offset": 2.0, 1640 + "sound": "minecraft:ambient.cave", 1641 + "tick_delay": 6000 1642 + }, 1643 + "sky_color": 8364543, 1644 + "water_color": 3750089, 1645 + "water_fog_color": 329011 1646 + }, 1647 + "has_precipitation": true, 1648 + "temperature": 0.0 1649 + }, 1650 + "minecraft:frozen_peaks": { 1651 + "downfall": 0.8999999761581421, 1652 + "effects": { 1653 + "fog_color": 12638463, 1654 + "mood_sound": { 1655 + "block_search_extent": 8, 1656 + "offset": 2.0, 1657 + "sound": "minecraft:ambient.cave", 1658 + "tick_delay": 6000 1659 + }, 1660 + "music": { 1661 + "max_delay": 24000, 1662 + "min_delay": 12000, 1663 + "replace_current_music": false, 1664 + "sound": "minecraft:music.overworld.frozen_peaks" 1665 + }, 1666 + "sky_color": 8756735, 1667 + "water_color": 4159204, 1668 + "water_fog_color": 329011 1669 + }, 1670 + "has_precipitation": true, 1671 + "temperature": -0.699999988079071 1672 + }, 1673 + "minecraft:frozen_river": { 1674 + "downfall": 0.5, 1675 + "effects": { 1676 + "fog_color": 12638463, 1677 + "mood_sound": { 1678 + "block_search_extent": 8, 1679 + "offset": 2.0, 1680 + "sound": "minecraft:ambient.cave", 1681 + "tick_delay": 6000 1682 + }, 1683 + "sky_color": 8364543, 1684 + "water_color": 3750089, 1685 + "water_fog_color": 329011 1686 + }, 1687 + "has_precipitation": true, 1688 + "temperature": 0.0 1689 + }, 1690 + "minecraft:grove": { 1691 + "downfall": 0.800000011920929, 1692 + "effects": { 1693 + "fog_color": 12638463, 1694 + "mood_sound": { 1695 + "block_search_extent": 8, 1696 + "offset": 2.0, 1697 + "sound": "minecraft:ambient.cave", 1698 + "tick_delay": 6000 1699 + }, 1700 + "music": { 1701 + "max_delay": 24000, 1702 + "min_delay": 12000, 1703 + "replace_current_music": false, 1704 + "sound": "minecraft:music.overworld.grove" 1705 + }, 1706 + "sky_color": 8495359, 1707 + "water_color": 4159204, 1708 + "water_fog_color": 329011 1709 + }, 1710 + "has_precipitation": true, 1711 + "temperature": -0.20000000298023224 1712 + }, 1713 + "minecraft:ice_spikes": { 1714 + "downfall": 0.5, 1715 + "effects": { 1716 + "fog_color": 12638463, 1717 + "mood_sound": { 1718 + "block_search_extent": 8, 1719 + "offset": 2.0, 1720 + "sound": "minecraft:ambient.cave", 1721 + "tick_delay": 6000 1722 + }, 1723 + "sky_color": 8364543, 1724 + "water_color": 4159204, 1725 + "water_fog_color": 329011 1726 + }, 1727 + "has_precipitation": true, 1728 + "temperature": 0.0 1729 + }, 1730 + "minecraft:jagged_peaks": { 1731 + "downfall": 0.8999999761581421, 1732 + "effects": { 1733 + "fog_color": 12638463, 1734 + "mood_sound": { 1735 + "block_search_extent": 8, 1736 + "offset": 2.0, 1737 + "sound": "minecraft:ambient.cave", 1738 + "tick_delay": 6000 1739 + }, 1740 + "music": { 1741 + "max_delay": 24000, 1742 + "min_delay": 12000, 1743 + "replace_current_music": false, 1744 + "sound": "minecraft:music.overworld.jagged_peaks" 1745 + }, 1746 + "sky_color": 8756735, 1747 + "water_color": 4159204, 1748 + "water_fog_color": 329011 1749 + }, 1750 + "has_precipitation": true, 1751 + "temperature": -0.699999988079071 1752 + }, 1753 + "minecraft:jungle": { 1754 + "downfall": 0.8999999761581421, 1755 + "effects": { 1756 + "fog_color": 12638463, 1757 + "mood_sound": { 1758 + "block_search_extent": 8, 1759 + "offset": 2.0, 1760 + "sound": "minecraft:ambient.cave", 1761 + "tick_delay": 6000 1762 + }, 1763 + "music": { 1764 + "max_delay": 24000, 1765 + "min_delay": 12000, 1766 + "replace_current_music": false, 1767 + "sound": "minecraft:music.overworld.jungle" 1768 + }, 1769 + "sky_color": 7842047, 1770 + "water_color": 4159204, 1771 + "water_fog_color": 329011 1772 + }, 1773 + "has_precipitation": true, 1774 + "temperature": 0.949999988079071 1775 + }, 1776 + "minecraft:lukewarm_ocean": { 1777 + "downfall": 0.5, 1778 + "effects": { 1779 + "fog_color": 12638463, 1780 + "mood_sound": { 1781 + "block_search_extent": 8, 1782 + "offset": 2.0, 1783 + "sound": "minecraft:ambient.cave", 1784 + "tick_delay": 6000 1785 + }, 1786 + "sky_color": 8103167, 1787 + "water_color": 4566514, 1788 + "water_fog_color": 267827 1789 + }, 1790 + "has_precipitation": true, 1791 + "temperature": 0.5 1792 + }, 1793 + "minecraft:lush_caves": { 1794 + "downfall": 0.5, 1795 + "effects": { 1796 + "fog_color": 12638463, 1797 + "mood_sound": { 1798 + "block_search_extent": 8, 1799 + "offset": 2.0, 1800 + "sound": "minecraft:ambient.cave", 1801 + "tick_delay": 6000 1802 + }, 1803 + "music": { 1804 + "max_delay": 24000, 1805 + "min_delay": 12000, 1806 + "replace_current_music": false, 1807 + "sound": "minecraft:music.overworld.lush_caves" 1808 + }, 1809 + "sky_color": 8103167, 1810 + "water_color": 4159204, 1811 + "water_fog_color": 329011 1812 + }, 1813 + "has_precipitation": true, 1814 + "temperature": 0.5 1815 + }, 1816 + "minecraft:mangrove_swamp": { 1817 + "downfall": 0.8999999761581421, 1818 + "effects": { 1819 + "fog_color": 12638463, 1820 + "foliage_color": 9285927, 1821 + "grass_color_modifier": "swamp", 1822 + "mood_sound": { 1823 + "block_search_extent": 8, 1824 + "offset": 2.0, 1825 + "sound": "minecraft:ambient.cave", 1826 + "tick_delay": 6000 1827 + }, 1828 + "music": { 1829 + "max_delay": 24000, 1830 + "min_delay": 12000, 1831 + "replace_current_music": false, 1832 + "sound": "minecraft:music.overworld.swamp" 1833 + }, 1834 + "sky_color": 7907327, 1835 + "water_color": 3832426, 1836 + "water_fog_color": 5077600 1837 + }, 1838 + "has_precipitation": true, 1839 + "temperature": 0.800000011920929 1840 + }, 1841 + "minecraft:meadow": { 1842 + "downfall": 0.800000011920929, 1843 + "effects": { 1844 + "fog_color": 12638463, 1845 + "mood_sound": { 1846 + "block_search_extent": 8, 1847 + "offset": 2.0, 1848 + "sound": "minecraft:ambient.cave", 1849 + "tick_delay": 6000 1850 + }, 1851 + "music": { 1852 + "max_delay": 24000, 1853 + "min_delay": 12000, 1854 + "replace_current_music": false, 1855 + "sound": "minecraft:music.overworld.meadow" 1856 + }, 1857 + "sky_color": 8103167, 1858 + "water_color": 937679, 1859 + "water_fog_color": 329011 1860 + }, 1861 + "has_precipitation": true, 1862 + "temperature": 0.5 1863 + }, 1864 + "minecraft:mushroom_fields": { 1865 + "downfall": 1.0, 1866 + "effects": { 1867 + "fog_color": 12638463, 1868 + "mood_sound": { 1869 + "block_search_extent": 8, 1870 + "offset": 2.0, 1871 + "sound": "minecraft:ambient.cave", 1872 + "tick_delay": 6000 1873 + }, 1874 + "sky_color": 7842047, 1875 + "water_color": 4159204, 1876 + "water_fog_color": 329011 1877 + }, 1878 + "has_precipitation": true, 1879 + "temperature": 0.8999999761581421 1880 + }, 1881 + "minecraft:nether_wastes": { 1882 + "downfall": 0.0, 1883 + "effects": { 1884 + "additions_sound": { 1885 + "sound": "minecraft:ambient.nether_wastes.additions", 1886 + "tick_chance": 0.0111 1887 + }, 1888 + "ambient_sound": "minecraft:ambient.nether_wastes.loop", 1889 + "fog_color": 3344392, 1890 + "mood_sound": { 1891 + "block_search_extent": 8, 1892 + "offset": 2.0, 1893 + "sound": "minecraft:ambient.nether_wastes.mood", 1894 + "tick_delay": 6000 1895 + }, 1896 + "music": { 1897 + "max_delay": 24000, 1898 + "min_delay": 12000, 1899 + "replace_current_music": false, 1900 + "sound": "minecraft:music.nether.nether_wastes" 1901 + }, 1902 + "sky_color": 7254527, 1903 + "water_color": 4159204, 1904 + "water_fog_color": 329011 1905 + }, 1906 + "has_precipitation": false, 1907 + "temperature": 2.0 1908 + }, 1909 + "minecraft:ocean": { 1910 + "downfall": 0.5, 1911 + "effects": { 1912 + "fog_color": 12638463, 1913 + "mood_sound": { 1914 + "block_search_extent": 8, 1915 + "offset": 2.0, 1916 + "sound": "minecraft:ambient.cave", 1917 + "tick_delay": 6000 1918 + }, 1919 + "sky_color": 8103167, 1920 + "water_color": 4159204, 1921 + "water_fog_color": 329011 1922 + }, 1923 + "has_precipitation": true, 1924 + "temperature": 0.5 1925 + }, 1926 + "minecraft:old_growth_birch_forest": { 1927 + "downfall": 0.6000000238418579, 1928 + "effects": { 1929 + "fog_color": 12638463, 1930 + "mood_sound": { 1931 + "block_search_extent": 8, 1932 + "offset": 2.0, 1933 + "sound": "minecraft:ambient.cave", 1934 + "tick_delay": 6000 1935 + }, 1936 + "music": { 1937 + "max_delay": 24000, 1938 + "min_delay": 12000, 1939 + "replace_current_music": false, 1940 + "sound": "minecraft:music.overworld.forest" 1941 + }, 1942 + "sky_color": 8037887, 1943 + "water_color": 4159204, 1944 + "water_fog_color": 329011 1945 + }, 1946 + "has_precipitation": true, 1947 + "temperature": 0.6000000238418579 1948 + }, 1949 + "minecraft:old_growth_pine_taiga": { 1950 + "downfall": 0.800000011920929, 1951 + "effects": { 1952 + "fog_color": 12638463, 1953 + "mood_sound": { 1954 + "block_search_extent": 8, 1955 + "offset": 2.0, 1956 + "sound": "minecraft:ambient.cave", 1957 + "tick_delay": 6000 1958 + }, 1959 + "music": { 1960 + "max_delay": 24000, 1961 + "min_delay": 12000, 1962 + "replace_current_music": false, 1963 + "sound": "minecraft:music.overworld.old_growth_taiga" 1964 + }, 1965 + "sky_color": 8168447, 1966 + "water_color": 4159204, 1967 + "water_fog_color": 329011 1968 + }, 1969 + "has_precipitation": true, 1970 + "temperature": 0.30000001192092896 1971 + }, 1972 + "minecraft:old_growth_spruce_taiga": { 1973 + "downfall": 0.800000011920929, 1974 + "effects": { 1975 + "fog_color": 12638463, 1976 + "mood_sound": { 1977 + "block_search_extent": 8, 1978 + "offset": 2.0, 1979 + "sound": "minecraft:ambient.cave", 1980 + "tick_delay": 6000 1981 + }, 1982 + "music": { 1983 + "max_delay": 24000, 1984 + "min_delay": 12000, 1985 + "replace_current_music": false, 1986 + "sound": "minecraft:music.overworld.old_growth_taiga" 1987 + }, 1988 + "sky_color": 8233983, 1989 + "water_color": 4159204, 1990 + "water_fog_color": 329011 1991 + }, 1992 + "has_precipitation": true, 1993 + "temperature": 0.25 1994 + }, 1995 + "minecraft:plains": { 1996 + "downfall": 0.4000000059604645, 1997 + "effects": { 1998 + "fog_color": 12638463, 1999 + "mood_sound": { 2000 + "block_search_extent": 8, 2001 + "offset": 2.0, 2002 + "sound": "minecraft:ambient.cave", 2003 + "tick_delay": 6000 2004 + }, 2005 + "sky_color": 7907327, 2006 + "water_color": 4159204, 2007 + "water_fog_color": 329011 2008 + }, 2009 + "has_precipitation": true, 2010 + "temperature": 0.800000011920929 2011 + }, 2012 + "minecraft:river": { 2013 + "downfall": 0.5, 2014 + "effects": { 2015 + "fog_color": 12638463, 2016 + "mood_sound": { 2017 + "block_search_extent": 8, 2018 + "offset": 2.0, 2019 + "sound": "minecraft:ambient.cave", 2020 + "tick_delay": 6000 2021 + }, 2022 + "sky_color": 8103167, 2023 + "water_color": 4159204, 2024 + "water_fog_color": 329011 2025 + }, 2026 + "has_precipitation": true, 2027 + "temperature": 0.5 2028 + }, 2029 + "minecraft:savanna": { 2030 + "downfall": 0.0, 2031 + "effects": { 2032 + "fog_color": 12638463, 2033 + "mood_sound": { 2034 + "block_search_extent": 8, 2035 + "offset": 2.0, 2036 + "sound": "minecraft:ambient.cave", 2037 + "tick_delay": 6000 2038 + }, 2039 + "sky_color": 7254527, 2040 + "water_color": 4159204, 2041 + "water_fog_color": 329011 2042 + }, 2043 + "has_precipitation": false, 2044 + "temperature": 2.0 2045 + }, 2046 + "minecraft:savanna_plateau": { 2047 + "downfall": 0.0, 2048 + "effects": { 2049 + "fog_color": 12638463, 2050 + "mood_sound": { 2051 + "block_search_extent": 8, 2052 + "offset": 2.0, 2053 + "sound": "minecraft:ambient.cave", 2054 + "tick_delay": 6000 2055 + }, 2056 + "sky_color": 7254527, 2057 + "water_color": 4159204, 2058 + "water_fog_color": 329011 2059 + }, 2060 + "has_precipitation": false, 2061 + "temperature": 2.0 2062 + }, 2063 + "minecraft:small_end_islands": { 2064 + "downfall": 0.5, 2065 + "effects": { 2066 + "fog_color": 10518688, 2067 + "mood_sound": { 2068 + "block_search_extent": 8, 2069 + "offset": 2.0, 2070 + "sound": "minecraft:ambient.cave", 2071 + "tick_delay": 6000 2072 + }, 2073 + "sky_color": 0, 2074 + "water_color": 4159204, 2075 + "water_fog_color": 329011 2076 + }, 2077 + "has_precipitation": false, 2078 + "temperature": 0.5 2079 + }, 2080 + "minecraft:snowy_beach": { 2081 + "downfall": 0.30000001192092896, 2082 + "effects": { 2083 + "fog_color": 12638463, 2084 + "mood_sound": { 2085 + "block_search_extent": 8, 2086 + "offset": 2.0, 2087 + "sound": "minecraft:ambient.cave", 2088 + "tick_delay": 6000 2089 + }, 2090 + "sky_color": 8364543, 2091 + "water_color": 4020182, 2092 + "water_fog_color": 329011 2093 + }, 2094 + "has_precipitation": true, 2095 + "temperature": 0.05000000074505806 2096 + }, 2097 + "minecraft:snowy_plains": { 2098 + "downfall": 0.5, 2099 + "effects": { 2100 + "fog_color": 12638463, 2101 + "mood_sound": { 2102 + "block_search_extent": 8, 2103 + "offset": 2.0, 2104 + "sound": "minecraft:ambient.cave", 2105 + "tick_delay": 6000 2106 + }, 2107 + "sky_color": 8364543, 2108 + "water_color": 4159204, 2109 + "water_fog_color": 329011 2110 + }, 2111 + "has_precipitation": true, 2112 + "temperature": 0.0 2113 + }, 2114 + "minecraft:snowy_slopes": { 2115 + "downfall": 0.8999999761581421, 2116 + "effects": { 2117 + "fog_color": 12638463, 2118 + "mood_sound": { 2119 + "block_search_extent": 8, 2120 + "offset": 2.0, 2121 + "sound": "minecraft:ambient.cave", 2122 + "tick_delay": 6000 2123 + }, 2124 + "music": { 2125 + "max_delay": 24000, 2126 + "min_delay": 12000, 2127 + "replace_current_music": false, 2128 + "sound": "minecraft:music.overworld.snowy_slopes" 2129 + }, 2130 + "sky_color": 8560639, 2131 + "water_color": 4159204, 2132 + "water_fog_color": 329011 2133 + }, 2134 + "has_precipitation": true, 2135 + "temperature": -0.30000001192092896 2136 + }, 2137 + "minecraft:snowy_taiga": { 2138 + "downfall": 0.4000000059604645, 2139 + "effects": { 2140 + "fog_color": 12638463, 2141 + "mood_sound": { 2142 + "block_search_extent": 8, 2143 + "offset": 2.0, 2144 + "sound": "minecraft:ambient.cave", 2145 + "tick_delay": 6000 2146 + }, 2147 + "sky_color": 8625919, 2148 + "water_color": 4020182, 2149 + "water_fog_color": 329011 2150 + }, 2151 + "has_precipitation": true, 2152 + "temperature": -0.5 2153 + }, 2154 + "minecraft:soul_sand_valley": { 2155 + "downfall": 0.0, 2156 + "effects": { 2157 + "additions_sound": { 2158 + "sound": "minecraft:ambient.soul_sand_valley.additions", 2159 + "tick_chance": 0.0111 2160 + }, 2161 + "ambient_sound": "minecraft:ambient.soul_sand_valley.loop", 2162 + "fog_color": 1787717, 2163 + "mood_sound": { 2164 + "block_search_extent": 8, 2165 + "offset": 2.0, 2166 + "sound": "minecraft:ambient.soul_sand_valley.mood", 2167 + "tick_delay": 6000 2168 + }, 2169 + "music": { 2170 + "max_delay": 24000, 2171 + "min_delay": 12000, 2172 + "replace_current_music": false, 2173 + "sound": "minecraft:music.nether.soul_sand_valley" 2174 + }, 2175 + "particle": { 2176 + "options": { 2177 + "type": "minecraft:ash" 2178 + }, 2179 + "probability": 0.00625 2180 + }, 2181 + "sky_color": 7254527, 2182 + "water_color": 4159204, 2183 + "water_fog_color": 329011 2184 + }, 2185 + "has_precipitation": false, 2186 + "temperature": 2.0 2187 + }, 2188 + "minecraft:sparse_jungle": { 2189 + "downfall": 0.800000011920929, 2190 + "effects": { 2191 + "fog_color": 12638463, 2192 + "mood_sound": { 2193 + "block_search_extent": 8, 2194 + "offset": 2.0, 2195 + "sound": "minecraft:ambient.cave", 2196 + "tick_delay": 6000 2197 + }, 2198 + "music": { 2199 + "max_delay": 24000, 2200 + "min_delay": 12000, 2201 + "replace_current_music": false, 2202 + "sound": "minecraft:music.overworld.sparse_jungle" 2203 + }, 2204 + "sky_color": 7842047, 2205 + "water_color": 4159204, 2206 + "water_fog_color": 329011 2207 + }, 2208 + "has_precipitation": true, 2209 + "temperature": 0.949999988079071 2210 + }, 2211 + "minecraft:stony_peaks": { 2212 + "downfall": 0.30000001192092896, 2213 + "effects": { 2214 + "fog_color": 12638463, 2215 + "mood_sound": { 2216 + "block_search_extent": 8, 2217 + "offset": 2.0, 2218 + "sound": "minecraft:ambient.cave", 2219 + "tick_delay": 6000 2220 + }, 2221 + "music": { 2222 + "max_delay": 24000, 2223 + "min_delay": 12000, 2224 + "replace_current_music": false, 2225 + "sound": "minecraft:music.overworld.stony_peaks" 2226 + }, 2227 + "sky_color": 7776511, 2228 + "water_color": 4159204, 2229 + "water_fog_color": 329011 2230 + }, 2231 + "has_precipitation": true, 2232 + "temperature": 1.0 2233 + }, 2234 + "minecraft:stony_shore": { 2235 + "downfall": 0.30000001192092896, 2236 + "effects": { 2237 + "fog_color": 12638463, 2238 + "mood_sound": { 2239 + "block_search_extent": 8, 2240 + "offset": 2.0, 2241 + "sound": "minecraft:ambient.cave", 2242 + "tick_delay": 6000 2243 + }, 2244 + "sky_color": 8233727, 2245 + "water_color": 4159204, 2246 + "water_fog_color": 329011 2247 + }, 2248 + "has_precipitation": true, 2249 + "temperature": 0.20000000298023224 2250 + }, 2251 + "minecraft:sunflower_plains": { 2252 + "downfall": 0.4000000059604645, 2253 + "effects": { 2254 + "fog_color": 12638463, 2255 + "mood_sound": { 2256 + "block_search_extent": 8, 2257 + "offset": 2.0, 2258 + "sound": "minecraft:ambient.cave", 2259 + "tick_delay": 6000 2260 + }, 2261 + "sky_color": 7907327, 2262 + "water_color": 4159204, 2263 + "water_fog_color": 329011 2264 + }, 2265 + "has_precipitation": true, 2266 + "temperature": 0.800000011920929 2267 + }, 2268 + "minecraft:swamp": { 2269 + "downfall": 0.8999999761581421, 2270 + "effects": { 2271 + "fog_color": 12638463, 2272 + "foliage_color": 6975545, 2273 + "grass_color_modifier": "swamp", 2274 + "mood_sound": { 2275 + "block_search_extent": 8, 2276 + "offset": 2.0, 2277 + "sound": "minecraft:ambient.cave", 2278 + "tick_delay": 6000 2279 + }, 2280 + "music": { 2281 + "max_delay": 24000, 2282 + "min_delay": 12000, 2283 + "replace_current_music": false, 2284 + "sound": "minecraft:music.overworld.swamp" 2285 + }, 2286 + "sky_color": 7907327, 2287 + "water_color": 6388580, 2288 + "water_fog_color": 2302743 2289 + }, 2290 + "has_precipitation": true, 2291 + "temperature": 0.800000011920929 2292 + }, 2293 + "minecraft:taiga": { 2294 + "downfall": 0.800000011920929, 2295 + "effects": { 2296 + "fog_color": 12638463, 2297 + "mood_sound": { 2298 + "block_search_extent": 8, 2299 + "offset": 2.0, 2300 + "sound": "minecraft:ambient.cave", 2301 + "tick_delay": 6000 2302 + }, 2303 + "sky_color": 8233983, 2304 + "water_color": 4159204, 2305 + "water_fog_color": 329011 2306 + }, 2307 + "has_precipitation": true, 2308 + "temperature": 0.25 2309 + }, 2310 + "minecraft:the_end": { 2311 + "downfall": 0.5, 2312 + "effects": { 2313 + "fog_color": 10518688, 2314 + "mood_sound": { 2315 + "block_search_extent": 8, 2316 + "offset": 2.0, 2317 + "sound": "minecraft:ambient.cave", 2318 + "tick_delay": 6000 2319 + }, 2320 + "sky_color": 0, 2321 + "water_color": 4159204, 2322 + "water_fog_color": 329011 2323 + }, 2324 + "has_precipitation": false, 2325 + "temperature": 0.5 2326 + }, 2327 + "minecraft:the_void": { 2328 + "downfall": 0.5, 2329 + "effects": { 2330 + "fog_color": 12638463, 2331 + "mood_sound": { 2332 + "block_search_extent": 8, 2333 + "offset": 2.0, 2334 + "sound": "minecraft:ambient.cave", 2335 + "tick_delay": 6000 2336 + }, 2337 + "sky_color": 8103167, 2338 + "water_color": 4159204, 2339 + "water_fog_color": 329011 2340 + }, 2341 + "has_precipitation": false, 2342 + "temperature": 0.5 2343 + }, 2344 + "minecraft:warm_ocean": { 2345 + "downfall": 0.5, 2346 + "effects": { 2347 + "fog_color": 12638463, 2348 + "mood_sound": { 2349 + "block_search_extent": 8, 2350 + "offset": 2.0, 2351 + "sound": "minecraft:ambient.cave", 2352 + "tick_delay": 6000 2353 + }, 2354 + "sky_color": 8103167, 2355 + "water_color": 4445678, 2356 + "water_fog_color": 270131 2357 + }, 2358 + "has_precipitation": true, 2359 + "temperature": 0.5 2360 + }, 2361 + "minecraft:warped_forest": { 2362 + "downfall": 0.0, 2363 + "effects": { 2364 + "additions_sound": { 2365 + "sound": "minecraft:ambient.warped_forest.additions", 2366 + "tick_chance": 0.0111 2367 + }, 2368 + "ambient_sound": "minecraft:ambient.warped_forest.loop", 2369 + "fog_color": 1705242, 2370 + "mood_sound": { 2371 + "block_search_extent": 8, 2372 + "offset": 2.0, 2373 + "sound": "minecraft:ambient.warped_forest.mood", 2374 + "tick_delay": 6000 2375 + }, 2376 + "music": { 2377 + "max_delay": 24000, 2378 + "min_delay": 12000, 2379 + "replace_current_music": false, 2380 + "sound": "minecraft:music.nether.warped_forest" 2381 + }, 2382 + "particle": { 2383 + "options": { 2384 + "type": "minecraft:warped_spore" 2385 + }, 2386 + "probability": 0.01428 2387 + }, 2388 + "sky_color": 7254527, 2389 + "water_color": 4159204, 2390 + "water_fog_color": 329011 2391 + }, 2392 + "has_precipitation": false, 2393 + "temperature": 2.0 2394 + }, 2395 + "minecraft:windswept_forest": { 2396 + "downfall": 0.30000001192092896, 2397 + "effects": { 2398 + "fog_color": 12638463, 2399 + "mood_sound": { 2400 + "block_search_extent": 8, 2401 + "offset": 2.0, 2402 + "sound": "minecraft:ambient.cave", 2403 + "tick_delay": 6000 2404 + }, 2405 + "sky_color": 8233727, 2406 + "water_color": 4159204, 2407 + "water_fog_color": 329011 2408 + }, 2409 + "has_precipitation": true, 2410 + "temperature": 0.20000000298023224 2411 + }, 2412 + "minecraft:windswept_gravelly_hills": { 2413 + "downfall": 0.30000001192092896, 2414 + "effects": { 2415 + "fog_color": 12638463, 2416 + "mood_sound": { 2417 + "block_search_extent": 8, 2418 + "offset": 2.0, 2419 + "sound": "minecraft:ambient.cave", 2420 + "tick_delay": 6000 2421 + }, 2422 + "sky_color": 8233727, 2423 + "water_color": 4159204, 2424 + "water_fog_color": 329011 2425 + }, 2426 + "has_precipitation": true, 2427 + "temperature": 0.20000000298023224 2428 + }, 2429 + "minecraft:windswept_hills": { 2430 + "downfall": 0.30000001192092896, 2431 + "effects": { 2432 + "fog_color": 12638463, 2433 + "mood_sound": { 2434 + "block_search_extent": 8, 2435 + "offset": 2.0, 2436 + "sound": "minecraft:ambient.cave", 2437 + "tick_delay": 6000 2438 + }, 2439 + "sky_color": 8233727, 2440 + "water_color": 4159204, 2441 + "water_fog_color": 329011 2442 + }, 2443 + "has_precipitation": true, 2444 + "temperature": 0.20000000298023224 2445 + }, 2446 + "minecraft:windswept_savanna": { 2447 + "downfall": 0.0, 2448 + "effects": { 2449 + "fog_color": 12638463, 2450 + "mood_sound": { 2451 + "block_search_extent": 8, 2452 + "offset": 2.0, 2453 + "sound": "minecraft:ambient.cave", 2454 + "tick_delay": 6000 2455 + }, 2456 + "sky_color": 7254527, 2457 + "water_color": 4159204, 2458 + "water_fog_color": 329011 2459 + }, 2460 + "has_precipitation": false, 2461 + "temperature": 2.0 2462 + }, 2463 + "minecraft:wooded_badlands": { 2464 + "downfall": 0.0, 2465 + "effects": { 2466 + "fog_color": 12638463, 2467 + "foliage_color": 10387789, 2468 + "grass_color": 9470285, 2469 + "mood_sound": { 2470 + "block_search_extent": 8, 2471 + "offset": 2.0, 2472 + "sound": "minecraft:ambient.cave", 2473 + "tick_delay": 6000 2474 + }, 2475 + "music": { 2476 + "max_delay": 24000, 2477 + "min_delay": 12000, 2478 + "replace_current_music": false, 2479 + "sound": "minecraft:music.overworld.badlands" 2480 + }, 2481 + "sky_color": 7254527, 2482 + "water_color": 4159204, 2483 + "water_fog_color": 329011 2484 + }, 2485 + "has_precipitation": false, 2486 + "temperature": 2.0 2487 + } 2488 + } 2489 + }
+17 -1
src/net/player.rs
··· 20 20 use std::{sync::Arc, time::Duration}; 21 21 22 22 use color_eyre::eyre::Result; 23 + use registry::Registry; 23 24 // use registry::Registry; 24 25 use serde_json::json; 25 26 use tokio::{ ··· 205 206 // TODO: maybe(?) actually handle this 206 207 io.rx::<KnownPacksS>().await?; 207 208 208 - // let registry = Registry::DEFAULT; 209 + let registry = &*registry::ALL_REGISTRIES; 210 + io.tx(&Registry::from(registry.trim_material.clone())) 211 + .await?; 212 + io.tx(&Registry::from(registry.trim_pattern.clone())) 213 + .await?; 214 + io.tx(&Registry::from(registry.banner_pattern.clone())) 215 + .await?; 216 + io.tx(&Registry::from(registry.biome.clone())).await?; 217 + io.tx(&Registry::from(registry.chat_type.clone())).await?; 218 + io.tx(&Registry::from(registry.damage_type.clone())).await?; 219 + io.tx(&Registry::from(registry.dimension_type.clone())) 220 + .await?; 221 + io.tx(&Registry::from(registry.wolf_variant.clone())) 222 + .await?; 223 + io.tx(&Registry::from(registry.painting_variant.clone())) 224 + .await?; 209 225 210 226 io.tx(&FinishConfigurationC).await?; 211 227 io.rx::<FinishConfigurationAckS>().await?;
+1 -1
src/protocol/packets/login/registry/banner.rs
··· 21 21 22 22 use super::RegistryItem; 23 23 24 - #[derive(Debug, Serialize, Deserialize)] 24 + #[derive(Clone, Debug, Serialize, Deserialize)] 25 25 pub struct BannerPattern { 26 26 asset_id: String, 27 27 translation_key: String,
+11 -9
src/protocol/packets/login/registry/biome.rs
··· 19 19 20 20 use serde::{Deserialize, Serialize}; 21 21 22 - use super::{RegistryItem, StringOrCompound}; 22 + use super::{deserialize_bool, RegistryItem, StringOrCompound}; 23 23 24 - #[derive(Debug, Serialize, Deserialize)] 24 + #[derive(Clone, Debug, Serialize, Deserialize)] 25 25 pub struct Biome { 26 + #[serde(deserialize_with = "deserialize_bool")] 26 27 has_precipitation: i8, 27 28 temperature: f32, 28 29 temperature_modifier: Option<String>, ··· 30 31 effects: Effects, 31 32 } 32 33 33 - #[derive(Debug, Serialize, Deserialize)] 34 + #[derive(Clone, Debug, Serialize, Deserialize)] 34 35 struct Effects { 35 36 fog_color: i32, 36 37 water_color: i32, ··· 46 47 music: Option<Music>, 47 48 } 48 49 49 - #[derive(Debug, Serialize, Deserialize)] 50 + #[derive(Clone, Debug, Serialize, Deserialize)] 50 51 struct Particle { 51 52 options: ParticleOptions, 52 53 probability: f32, 53 54 } 54 55 55 - #[derive(Debug, Serialize, Deserialize)] 56 + #[derive(Clone, Debug, Serialize, Deserialize)] 56 57 struct ParticleOptions { 57 58 #[serde(rename = "type")] 58 59 kind: String, 59 60 } 60 61 61 - #[derive(Debug, Serialize, Deserialize)] 62 + #[derive(Clone, Debug, Serialize, Deserialize)] 62 63 struct AmbientSound { 63 64 sound_id: String, 64 65 range: Option<f32>, 65 66 } 66 67 67 - #[derive(Debug, Serialize, Deserialize)] 68 + #[derive(Clone, Debug, Serialize, Deserialize)] 68 69 struct MoodSound { 69 70 sound: String, 70 71 tick_delay: i32, ··· 72 73 offset: f64, 73 74 } 74 75 75 - #[derive(Debug, Serialize, Deserialize)] 76 + #[derive(Clone, Debug, Serialize, Deserialize)] 76 77 struct AdditionsSound { 77 78 sound: String, 78 79 tick_chance: f64, 79 80 } 80 81 81 - #[derive(Debug, Serialize, Deserialize)] 82 + #[derive(Clone, Debug, Serialize, Deserialize)] 82 83 struct Music { 83 84 sound: String, 84 85 min_delay: i32, 85 86 max_delay: i32, 87 + #[serde(deserialize_with = "deserialize_bool")] 86 88 replace_current_music: i8, 87 89 } 88 90
+2 -2
src/protocol/packets/login/registry/chat.rs
··· 21 21 22 22 use super::RegistryItem; 23 23 24 - #[derive(Debug, Serialize, Deserialize)] 24 + #[derive(Clone, Debug, Serialize, Deserialize)] 25 25 pub struct ChatType { 26 26 chat: Decoration, 27 27 narration: Decoration, 28 28 } 29 29 30 - #[derive(Debug, Serialize, Deserialize)] 30 + #[derive(Clone, Debug, Serialize, Deserialize)] 31 31 struct Decoration { 32 32 translation_key: String, 33 33 parameters: Vec<String>,
+1 -1
src/protocol/packets/login/registry/damage.rs
··· 21 21 22 22 use super::RegistryItem; 23 23 24 - #[derive(Debug, Serialize, Deserialize)] 24 + #[derive(Clone, Debug, Serialize, Deserialize)] 25 25 pub struct DamageType { 26 26 message_id: String, 27 27 scaling: String,
+49 -4
src/protocol/packets/login/registry/dimension.rs
··· 19 19 20 20 use serde::{Deserialize, Serialize}; 21 21 22 - use super::RegistryItem; 22 + use super::{deserialize_bool, RegistryItem}; 23 23 24 - #[derive(Debug, Serialize, Deserialize)] 24 + #[derive(Clone, Debug, Serialize, Deserialize)] 25 25 pub struct DimensionType { 26 - fixed_time: i64, 26 + fixed_time: Option<i64>, 27 27 has_skylight: i8, 28 28 has_ceiling: i8, 29 29 ultrawarm: i8, ··· 39 39 ambient_light: f32, 40 40 piglin_safe: i8, 41 41 has_raids: i8, 42 - monster_spawn_light_level: i32, 42 + monster_spawn_light_level: IntOrLightLevel, 43 43 monster_spawn_block_light_limit: i32, 44 + } 45 + 46 + #[derive(Clone, Debug, Serialize, Deserialize)] 47 + #[serde(untagged)] 48 + enum IntOrLightLevel { 49 + Int(i32), 50 + LL(IntProvider), 51 + } 52 + 53 + #[derive(Clone, Debug, Serialize, Deserialize)] 54 + #[serde(tag = "type")] 55 + enum IntProvider { 56 + #[serde(rename = "minecraft:constant")] 57 + Constant { value: i32 }, 58 + #[serde(rename = "minecraft:uniform")] 59 + Uniform { 60 + min_inclusive: i32, 61 + max_inclusive: i32, 62 + }, 63 + #[serde(rename = "minecraft:biased_to_bottom")] 64 + BiasedToBottom { 65 + min_inclusive: i32, 66 + max_inclusive: i32, 67 + }, 68 + #[serde(rename = "minecraft:clamped")] 69 + Clamped { 70 + min_inclusive: i32, 71 + max_inclusive: i32, 72 + source: Box<IntProvider>, 73 + }, 74 + #[serde(rename = "minecraft:clamped_normal")] 75 + ClampedNormal { 76 + mean: f32, 77 + deviation: f32, 78 + min_inclusive: i32, 79 + max_inclusive: i32, 80 + }, 81 + #[serde(rename = "minecraft:weighted_list")] 82 + WeightedList { distribution: Vec<WeightedProvider> }, 83 + } 84 + 85 + #[derive(Clone, Debug, Serialize, Deserialize)] 86 + struct WeightedProvider { 87 + data: IntProvider, 88 + weight: i32, 44 89 } 45 90 46 91 impl RegistryItem for DimensionType {
+51 -27
src/protocol/packets/login/registry/mod.rs
··· 17 17 * <https://www.gnu.org/licenses/>. 18 18 */ 19 19 20 + use std::{collections::HashMap, sync::LazyLock}; 21 + 20 22 use fastnbt::SerOpts; 21 - use serde::{Deserialize, Serialize}; 23 + use serde::{de, Deserialize, Serialize}; 22 24 23 25 use crate::protocol::{datatypes::VarInt, Encode, Packet}; 24 26 ··· 40 42 pub use trim::*; 41 43 pub use wolf::*; 42 44 43 - #[derive(Debug, Serialize, Deserialize)] 45 + #[derive(Clone, Debug, Serialize, Deserialize)] 44 46 pub struct Registry<T: RegistryItem> { 45 47 registry_id: String, 46 48 entries: Vec<RegistryEntry<T>>, ··· 53 55 const ID: i32 = 0x07; 54 56 } 55 57 56 - #[derive(Debug, Serialize, Deserialize)] 58 + #[derive(Clone, Debug, Serialize, Deserialize)] 57 59 pub struct RegistryEntry<T: RegistryItem> { 58 60 id: String, 59 61 entry: Option<T>, 60 - } 61 - 62 - impl<T> Registry<T> 63 - where 64 - T: RegistryItem, 65 - { 66 - pub fn new(id: &str, entries: Vec<RegistryEntry<T>>) -> Self { 67 - Self { 68 - registry_id: id.to_owned(), 69 - entries, 70 - } 71 - } 72 62 } 73 63 74 64 impl<T> Encode for Registry<T> ··· 95 85 } 96 86 97 87 // TODO: maybe fill these in? for now we're only using dimensiontype so we can spawn in the end lol 98 - pub trait RegistryItem: Serialize + Sized { 88 + pub trait RegistryItem: Serialize + Sized + Clone { 99 89 const ID: &str; 100 90 101 91 fn encode(&self, w: impl std::io::Write) -> color_eyre::eyre::Result<()> { ··· 103 93 } 104 94 } 105 95 106 - #[derive(Debug, Serialize, Deserialize)] 96 + #[derive(Clone, Debug, Serialize, Deserialize)] 107 97 pub struct AllRegistries { 108 98 #[serde(rename = "minecraft:trim_material")] 109 - trim_material: Registry<TrimMaterial>, 99 + pub trim_material: HashMap<String, TrimMaterial>, 110 100 #[serde(rename = "minecraft:trim_pattern")] 111 - trim_pattern: Registry<TrimPattern>, 101 + pub trim_pattern: HashMap<String, TrimPattern>, 112 102 #[serde(rename = "minecraft:banner_pattern")] 113 - banner_pattern: Registry<BannerPattern>, 103 + pub banner_pattern: HashMap<String, BannerPattern>, 114 104 #[serde(rename = "minecraft:worldgen/biome")] 115 - biome: Registry<Biome>, 105 + pub biome: HashMap<String, Biome>, 116 106 #[serde(rename = "minecraft:chat_type")] 117 - chat_type: Registry<ChatType>, 107 + pub chat_type: HashMap<String, ChatType>, 118 108 #[serde(rename = "minecraft:damage_type")] 119 - damage_type: Registry<DamageType>, 109 + pub damage_type: HashMap<String, DamageType>, 120 110 #[serde(rename = "minecraft:dimension_type")] 121 - dimension_type: Registry<DimensionType>, 111 + pub dimension_type: HashMap<String, DimensionType>, 122 112 #[serde(rename = "minecraft:wolf_variant")] 123 - wolf_variant: Registry<WolfVariant>, 113 + pub wolf_variant: HashMap<String, WolfVariant>, 124 114 #[serde(rename = "minecraft:painting_variant")] 125 - painting_variant: Registry<PaintingVariant>, 115 + pub painting_variant: HashMap<String, PaintingVariant>, 116 + } 117 + 118 + impl<T: RegistryItem> From<HashMap<String, T>> for Registry<T> { 119 + fn from(value: HashMap<String, T>) -> Self { 120 + let entries = value 121 + .into_iter() 122 + .map(|(k, v)| RegistryEntry { 123 + id: k, 124 + entry: Some(v), 125 + }) 126 + .collect(); 127 + 128 + Self { 129 + registry_id: T::ID.to_owned(), 130 + entries, 131 + } 132 + } 126 133 } 127 134 128 - #[derive(Debug, Serialize, Deserialize)] 135 + #[derive(Clone, Debug, Serialize, Deserialize)] 129 136 #[serde(untagged)] 130 137 enum StringOrCompound<T> { 131 138 String(String), 132 139 Compound(T), 133 140 } 141 + 142 + pub static ALL_REGISTRIES: LazyLock<AllRegistries> = LazyLock::new(|| { 143 + serde_json::from_str(include_str!("../../../../../assets/registries.json")) 144 + .expect("registries.json should be parseable") 145 + }); 146 + 147 + fn deserialize_bool<'de, D>(deserializer: D) -> Result<i8, D::Error> 148 + where 149 + D: de::Deserializer<'de>, 150 + { 151 + let b: bool = de::Deserialize::deserialize(deserializer)?; 152 + 153 + match b { 154 + true => Ok(1), 155 + false => Ok(0), 156 + } 157 + }
+1 -1
src/protocol/packets/login/registry/painting.rs
··· 21 21 22 22 use super::RegistryItem; 23 23 24 - #[derive(Debug, Serialize, Deserialize)] 24 + #[derive(Clone, Debug, Serialize, Deserialize)] 25 25 pub struct PaintingVariant { 26 26 asset_id: String, 27 27 height: i32,
+6 -5
src/protocol/packets/login/registry/trim.rs
··· 21 21 22 22 use super::{RegistryItem, StringOrCompound}; 23 23 24 - #[derive(Debug, Serialize, Deserialize)] 24 + #[derive(Clone, Debug, Serialize, Deserialize)] 25 25 pub struct TrimMaterial { 26 26 asset_name: String, 27 27 ingredient: String, ··· 29 29 description: StringOrCompound<TrimDescription>, 30 30 } 31 31 32 - #[derive(Debug, Serialize, Deserialize)] 32 + // FIXME: bare minimum. should probably properly implement 33 + // https://wiki.vg/Text_formatting soon 34 + #[derive(Clone, Debug, Serialize, Deserialize)] 33 35 struct TrimDescription { 34 - color: String, 36 + color: Option<String>, 35 37 translate: String, 36 38 } 37 39 ··· 39 41 const ID: &str = "minecraft:trim_material"; 40 42 } 41 43 42 - #[derive(Debug, Serialize, Deserialize)] 44 + #[derive(Clone, Debug, Serialize, Deserialize)] 43 45 pub struct TrimPattern { 44 46 asset_id: String, 45 47 template_item: String, 46 48 description: TrimDescription, 47 - decal: i8, 48 49 } 49 50 50 51 impl RegistryItem for TrimPattern {
+1 -1
src/protocol/packets/login/registry/wolf.rs
··· 21 21 22 22 use super::RegistryItem; 23 23 24 - #[derive(Debug, Serialize, Deserialize)] 24 + #[derive(Clone, Debug, Serialize, Deserialize)] 25 25 pub struct WolfVariant { 26 26 wild_texture: String, 27 27 tame_texture: String,