From e22bba0360fb6a2cd3282d6369d91708762c1c28 Mon Sep 17 00:00:00 2001 From: Gerrygames Date: Wed, 22 Apr 2020 19:04:53 +0200 Subject: [PATCH] 20w17a, update entity types renamed in 1.13 --- .../api/entities/Entity1_13Types.java | 38 +- .../api/entities/Entity1_14Types.java | 28 +- .../api/entities/Entity1_15Types.java | 28 +- .../api/entities/Entity1_16Types.java | 152 +- .../ViaVersion/api/entities/EntityType.java | 2 + .../api/protocol/ProtocolVersion.java | 2 +- .../api/rewriters/MetadataRewriter.java | 23 +- .../types/version/ChunkSectionType1_16.java | 80 + .../api/type/types/version/Types1_16.java | 12 + .../MetadataRewriter1_14To1_13_2.java | 2 +- .../packets/EntityPackets.java | 2 +- .../MetadataRewriter1_16To1_15_2.java | 17 +- .../packets/WorldPackets.java | 4 +- .../storage/EntityTracker1_16.java | 2 +- .../types/Chunk1_16Type.java | 108 ++ .../ViaVersion/util/CompactArrayUtil.java | 75 +- .../assets/viaversion/data/mapping-1.16.json | 1387 +++++++++-------- 17 files changed, 1125 insertions(+), 837 deletions(-) create mode 100644 common/src/main/java/us/myles/ViaVersion/api/type/types/version/ChunkSectionType1_16.java create mode 100644 common/src/main/java/us/myles/ViaVersion/api/type/types/version/Types1_16.java create mode 100644 common/src/main/java/us/myles/ViaVersion/protocols/protocol1_16to1_15_2/types/Chunk1_16Type.java diff --git a/common/src/main/java/us/myles/ViaVersion/api/entities/Entity1_13Types.java b/common/src/main/java/us/myles/ViaVersion/api/entities/Entity1_13Types.java index 2de13717d..252a45c1d 100644 --- a/common/src/main/java/us/myles/ViaVersion/api/entities/Entity1_13Types.java +++ b/common/src/main/java/us/myles/ViaVersion/api/entities/Entity1_13Types.java @@ -35,12 +35,12 @@ public class Entity1_13Types { ENTITY(-1), // abm AREA_EFFECT_CLOUD(0, ENTITY), // abk - ENDER_CRYSTAL(16, ENTITY), // aho - EVOCATION_FANGS(20, ENTITY), // ala - XP_ORB(22, ENTITY), // abs - EYE_OF_ENDER_SIGNAL(23, ENTITY), // alb + END_CRYSTAL(16, ENTITY), // aho + EVOKER_FANGS(20, ENTITY), // ala + EXPERIENCE_ORB(22, ENTITY), // abs + EYE_OF_ENDER(23, ENTITY), // alb FALLING_BLOCK(24, ENTITY), // aix - FIREWORKS_ROCKET(25, ENTITY), // alc + FIREWORK_ROCKET(25, ENTITY), // alc ITEM(32, ENTITY), // aiy LLAMA_SPIT(37, ENTITY), // ale TNT(55, ENTITY), // aiz @@ -89,15 +89,15 @@ public class Entity1_13Types { // Golem ABSTRACT_GOLEM(-1, ABSTRACT_CREATURE), // agc - SNOWMAN(66, ABSTRACT_GOLEM), // ags - VILLAGER_GOLEM(80, ABSTRACT_GOLEM), // agw + SNOW_GOLEM(66, ABSTRACT_GOLEM), // ags + IRON_GOLEM(80, ABSTRACT_GOLEM), // agw SHULKER(59, ABSTRACT_GOLEM), // ajx // Fish ABSTRACT_FISHES(-1, ABSTRACT_CREATURE), // agb COD_MOB(8, ABSTRACT_FISHES), // agf - PUFFER_FISH(52, ABSTRACT_FISHES), // agn - SALMON_MOB(57, ABSTRACT_FISHES), // agp + PUFFERFISH(52, ABSTRACT_FISHES), // agn + SALMON(57, ABSTRACT_FISHES), // agp TROPICAL_FISH(72, ABSTRACT_FISHES), // agu @@ -116,9 +116,9 @@ public class Entity1_13Types { // Illagers ABSTRACT_ILLAGER_BASE(-1, ABSTRACT_MONSTER), // ajb ABSTRACT_EVO_ILLU_ILLAGER(-1, ABSTRACT_ILLAGER_BASE), // akb - EVOCATION_ILLAGER(21, ABSTRACT_EVO_ILLU_ILLAGER), // ajl - ILLUSION_ILLAGER(31, ABSTRACT_EVO_ILLU_ILLAGER), // ajq - VINDICATION_ILLAGER(81, ABSTRACT_ILLAGER_BASE), // akf + EVOKER(21, ABSTRACT_EVO_ILLU_ILLAGER), // ajl + ILLUSIONER(31, ABSTRACT_EVO_ILLU_ILLAGER), // ajq + VINDICATOR(81, ABSTRACT_ILLAGER_BASE), // akf // Skeletons ABSTRACT_SKELETON(-1, ABSTRACT_MONSTER), // ajc @@ -185,7 +185,7 @@ public class Entity1_13Types { ENDER_PEARL(75, PROJECTILE_ABSTRACT), // aln EGG(74, PROJECTILE_ABSTRACT), // alm POTION(77, PROJECTILE_ABSTRACT), // alp - XP_BOTTLE(76, PROJECTILE_ABSTRACT), // alo + EXPERIENCE_BOTTLE(76, PROJECTILE_ABSTRACT), // alo // Vehicles MINECART_ABSTRACT(-1, ENTITY), // alt @@ -194,7 +194,7 @@ public class Entity1_13Types { HOPPER_MINECART(43, CHESTED_MINECART_ABSTRACT), // ama MINECART(39, MINECART_ABSTRACT), // alw FURNACE_MINECART(42, MINECART_ABSTRACT), // alz - COMMANDBLOCK_MINECART(41, MINECART_ABSTRACT), // aly + COMMAND_BLOCK_MINECART(41, MINECART_ABSTRACT), // aly TNT_MINECART(45, MINECART_ABSTRACT), // amc SPAWNER_MINECART(44, MINECART_ABSTRACT), // amb BOAT(5, ENTITY); // alv @@ -230,7 +230,7 @@ public class Entity1_13Types { AREA_EFFECT_CLOUD(3, EntityType.AREA_EFFECT_CLOUD), MINECART(10, EntityType.MINECART), TNT_PRIMED(50, EntityType.TNT), - ENDER_CRYSTAL(51, EntityType.ENDER_CRYSTAL), + ENDER_CRYSTAL(51, EntityType.END_CRYSTAL), TIPPED_ARROW(60, EntityType.ARROW), SNOWBALL(61, EntityType.SNOWBALL), EGG(62, EntityType.EGG), @@ -242,13 +242,13 @@ public class Entity1_13Types { LIAMA_SPIT(68, EntityType.LLAMA_SPIT), FALLING_BLOCK(70, EntityType.FALLING_BLOCK), ITEM_FRAME(71, EntityType.ITEM_FRAME), - ENDER_SIGNAL(72, EntityType.EYE_OF_ENDER_SIGNAL), + EYE_OF_ENDER(72, EntityType.EYE_OF_ENDER), POTION(73, EntityType.POTION), - THROWN_EXP_BOTTLE(75, EntityType.XP_BOTTLE), - FIREWORK(76, EntityType.FIREWORKS_ROCKET), + EXPERIENCE_BOTTLE(75, EntityType.EXPERIENCE_BOTTLE), + FIREWORK_ROCKET(76, EntityType.FIREWORK_ROCKET), LEASH(77, EntityType.LEASH_KNOT), ARMOR_STAND(78, EntityType.ARMOR_STAND), - EVOCATION_FANGS(79, EntityType.EVOCATION_FANGS), + EVOKER_FANGS(79, EntityType.EVOKER_FANGS), FISHIHNG_HOOK(90, EntityType.FISHING_BOBBER), SPECTRAL_ARROW(91, EntityType.SPECTRAL_ARROW), DRAGON_FIREBALL(93, EntityType.DRAGON_FIREBALL), diff --git a/common/src/main/java/us/myles/ViaVersion/api/entities/Entity1_14Types.java b/common/src/main/java/us/myles/ViaVersion/api/entities/Entity1_14Types.java index 020512298..6fe30035d 100644 --- a/common/src/main/java/us/myles/ViaVersion/api/entities/Entity1_14Types.java +++ b/common/src/main/java/us/myles/ViaVersion/api/entities/Entity1_14Types.java @@ -30,12 +30,12 @@ public class Entity1_14Types { ENTITY(-1), AREA_EFFECT_CLOUD(0, ENTITY), - ENDER_CRYSTAL(17, ENTITY), - EVOCATION_FANGS(21, ENTITY), - XP_ORB(23, ENTITY), - EYE_OF_ENDER_SIGNAL(24, ENTITY), + END_CRYSTAL(17, ENTITY), + EVOKER_FANGS(21, ENTITY), + EXPERIENCE_ORB(23, ENTITY), + EYE_OF_ENDER(24, ENTITY), FALLING_BLOCK(25, ENTITY), - FIREWORKS_ROCKET(26, ENTITY), + FIREWORK_ROCKET(26, ENTITY), ITEM(34, ENTITY), LLAMA_SPIT(39, ENTITY), TNT(58, ENTITY), @@ -90,15 +90,15 @@ public class Entity1_14Types { // Golem ABSTRACT_GOLEM(-1, ABSTRACT_CREATURE), - SNOWMAN(69, ABSTRACT_GOLEM), - VILLAGER_GOLEM(85, ABSTRACT_GOLEM), + SNOW_GOLEM(69, ABSTRACT_GOLEM), + IRON_GOLEM(85, ABSTRACT_GOLEM), SHULKER(62, ABSTRACT_GOLEM), // Fish ABSTRACT_FISHES(-1, ABSTRACT_CREATURE), COD(9, ABSTRACT_FISHES), - PUFFER_FISH(55, ABSTRACT_FISHES), - SALMON_MOB(60, ABSTRACT_FISHES), + PUFFERFISH(55, ABSTRACT_FISHES), + SALMON(60, ABSTRACT_FISHES), TROPICAL_FISH(76, ABSTRACT_FISHES), // Monsters @@ -117,9 +117,9 @@ public class Entity1_14Types { // Illagers ABSTRACT_ILLAGER_BASE(-1, ABSTRACT_MONSTER), ABSTRACT_EVO_ILLU_ILLAGER(-1, ABSTRACT_ILLAGER_BASE), - EVOCATION_ILLAGER(22, ABSTRACT_EVO_ILLU_ILLAGER), - ILLUSION_ILLAGER(33, ABSTRACT_EVO_ILLU_ILLAGER), - VINDICATION_ILLAGER(86, ABSTRACT_ILLAGER_BASE), + EVOKER(22, ABSTRACT_EVO_ILLU_ILLAGER), + ILLUSIONER(33, ABSTRACT_EVO_ILLU_ILLAGER), + VINDICATOR(86, ABSTRACT_ILLAGER_BASE), PILLAGER(87, ABSTRACT_ILLAGER_BASE), // Skeletons @@ -186,7 +186,7 @@ public class Entity1_14Types { ENDER_PEARL(79, PROJECTILE_ABSTRACT), EGG(78, PROJECTILE_ABSTRACT), POTION(81, PROJECTILE_ABSTRACT), - XP_BOTTLE(80, PROJECTILE_ABSTRACT), + EXPERIENCE_BOTTLE(80, PROJECTILE_ABSTRACT), // Vehicles MINECART_ABSTRACT(-1, ENTITY), @@ -195,7 +195,7 @@ public class Entity1_14Types { HOPPER_MINECART(45, CHESTED_MINECART_ABSTRACT), MINECART(41, MINECART_ABSTRACT), FURNACE_MINECART(44, MINECART_ABSTRACT), - COMMANDBLOCK_MINECART(43, MINECART_ABSTRACT), + COMMAND_BLOCK_MINECART(43, MINECART_ABSTRACT), TNT_MINECART(47, MINECART_ABSTRACT), SPAWNER_MINECART(46, MINECART_ABSTRACT), BOAT(5, ENTITY), diff --git a/common/src/main/java/us/myles/ViaVersion/api/entities/Entity1_15Types.java b/common/src/main/java/us/myles/ViaVersion/api/entities/Entity1_15Types.java index 60b44a787..b549f0976 100644 --- a/common/src/main/java/us/myles/ViaVersion/api/entities/Entity1_15Types.java +++ b/common/src/main/java/us/myles/ViaVersion/api/entities/Entity1_15Types.java @@ -29,12 +29,12 @@ public class Entity1_15Types { ENTITY(-1), AREA_EFFECT_CLOUD(0, ENTITY), - ENDER_CRYSTAL(18, ENTITY), - EVOCATION_FANGS(22, ENTITY), - XP_ORB(24, ENTITY), - EYE_OF_ENDER_SIGNAL(25, ENTITY), + END_CRYSTAL(18, ENTITY), + EVOKER_FANGS(22, ENTITY), + EXPERIENCE_ORB(24, ENTITY), + EYE_OF_ENDER(25, ENTITY), FALLING_BLOCK(26, ENTITY), - FIREWORKS_ROCKET(27, ENTITY), + FIREWORK_ROCKET(27, ENTITY), ITEM(35, ENTITY), LLAMA_SPIT(40, ENTITY), TNT(59, ENTITY), @@ -91,15 +91,15 @@ public class Entity1_15Types { // Golem ABSTRACT_GOLEM(-1, ABSTRACT_CREATURE), - SNOWMAN(70, ABSTRACT_GOLEM), - VILLAGER_GOLEM(86, ABSTRACT_GOLEM), + SNOW_GOLEM(70, ABSTRACT_GOLEM), + IRON_GOLEM(86, ABSTRACT_GOLEM), SHULKER(63, ABSTRACT_GOLEM), // Fish ABSTRACT_FISHES(-1, ABSTRACT_CREATURE), COD(10, ABSTRACT_FISHES), - PUFFER_FISH(56, ABSTRACT_FISHES), - SALMON_MOB(61, ABSTRACT_FISHES), + PUFFERFISH(56, ABSTRACT_FISHES), + SALMON(61, ABSTRACT_FISHES), TROPICAL_FISH(77, ABSTRACT_FISHES), // Monsters @@ -118,9 +118,9 @@ public class Entity1_15Types { // Illagers ABSTRACT_ILLAGER_BASE(-1, ABSTRACT_MONSTER), ABSTRACT_EVO_ILLU_ILLAGER(-1, ABSTRACT_ILLAGER_BASE), - EVOCATION_ILLAGER(23, ABSTRACT_EVO_ILLU_ILLAGER), - ILLUSION_ILLAGER(34, ABSTRACT_EVO_ILLU_ILLAGER), - VINDICATION_ILLAGER(87, ABSTRACT_ILLAGER_BASE), + EVOKER(23, ABSTRACT_EVO_ILLU_ILLAGER), + ILLUSIONER(34, ABSTRACT_EVO_ILLU_ILLAGER), + VINDICATOR(87, ABSTRACT_ILLAGER_BASE), PILLAGER(88, ABSTRACT_ILLAGER_BASE), // Skeletons @@ -187,7 +187,7 @@ public class Entity1_15Types { ENDER_PEARL(80, PROJECTILE_ABSTRACT), EGG(79, PROJECTILE_ABSTRACT), POTION(82, PROJECTILE_ABSTRACT), - XP_BOTTLE(81, PROJECTILE_ABSTRACT), + EXPERIENCE_BOTTLE(81, PROJECTILE_ABSTRACT), // Vehicles MINECART_ABSTRACT(-1, ENTITY), @@ -196,7 +196,7 @@ public class Entity1_15Types { HOPPER_MINECART(46, CHESTED_MINECART_ABSTRACT), MINECART(42, MINECART_ABSTRACT), FURNACE_MINECART(45, MINECART_ABSTRACT), - COMMANDBLOCK_MINECART(44, MINECART_ABSTRACT), + COMMAND_BLOCK_MINECART(44, MINECART_ABSTRACT), TNT_MINECART(48, MINECART_ABSTRACT), SPAWNER_MINECART(47, MINECART_ABSTRACT), BOAT(6, ENTITY); diff --git a/common/src/main/java/us/myles/ViaVersion/api/entities/Entity1_16Types.java b/common/src/main/java/us/myles/ViaVersion/api/entities/Entity1_16Types.java index f47137e38..62a34a36d 100644 --- a/common/src/main/java/us/myles/ViaVersion/api/entities/Entity1_16Types.java +++ b/common/src/main/java/us/myles/ViaVersion/api/entities/Entity1_16Types.java @@ -30,15 +30,15 @@ public class Entity1_16Types { AREA_EFFECT_CLOUD(0, ENTITY), END_CRYSTAL(18, ENTITY), - EVOKER_FANGS(22, ENTITY), + EVOKER_FANGS(23, ENTITY), EXPERIENCE_ORB(24, ENTITY), EYE_OF_ENDER(25, ENTITY), FALLING_BLOCK(26, ENTITY), FIREWORK_ROCKET(27, ENTITY), - ITEM(35, ENTITY), - LLAMA_SPIT(40, ENTITY), - TNT(58, ENTITY), - SHULKER_BULLET(63, ENTITY), + ITEM(37, ENTITY), + LLAMA_SPIT(42, ENTITY), + TNT(62, ENTITY), + SHULKER_BULLET(69, ENTITY), FISHING_BOBBER(106, ENTITY), LIVINGENTITY(-1, ENTITY), @@ -53,54 +53,54 @@ public class Entity1_16Types { ABSTRACT_CREATURE(-1, ABSTRACT_INSENTIENT), ABSTRACT_AGEABLE(-1, ABSTRACT_CREATURE), - VILLAGER(84, ABSTRACT_AGEABLE), - WANDERING_TRADER(88, ABSTRACT_AGEABLE), + VILLAGER(91, ABSTRACT_AGEABLE), + WANDERING_TRADER(93, ABSTRACT_AGEABLE), // Animals ABSTRACT_ANIMAL(-1, ABSTRACT_AGEABLE), - DOLPHIN(14, ABSTRACT_INSENTIENT), + DOLPHIN(13, ABSTRACT_INSENTIENT), CHICKEN(9, ABSTRACT_ANIMAL), COW(11, ABSTRACT_ANIMAL), - MOOSHROOM(50, COW), - PANDA(53, ABSTRACT_INSENTIENT), - PIG(55, ABSTRACT_ANIMAL), - POLAR_BEAR(57, ABSTRACT_ANIMAL), - RABBIT(59, ABSTRACT_ANIMAL), - SHEEP(61, ABSTRACT_ANIMAL), - TURTLE(77, ABSTRACT_ANIMAL), + MOOSHROOM(52, COW), + PANDA(55, ABSTRACT_INSENTIENT), + PIG(58, ABSTRACT_ANIMAL), + POLAR_BEAR(61, ABSTRACT_ANIMAL), + RABBIT(64, ABSTRACT_ANIMAL), + SHEEP(67, ABSTRACT_ANIMAL), + TURTLE(89, ABSTRACT_ANIMAL), FOX(28, ABSTRACT_ANIMAL), ABSTRACT_TAMEABLE_ANIMAL(-1, ABSTRACT_ANIMAL), CAT(7, ABSTRACT_TAMEABLE_ANIMAL), - OCELOT(51, ABSTRACT_TAMEABLE_ANIMAL), - WOLF(93, ABSTRACT_TAMEABLE_ANIMAL), + OCELOT(53, ABSTRACT_TAMEABLE_ANIMAL), + WOLF(98, ABSTRACT_TAMEABLE_ANIMAL), ABSTRACT_PARROT(-1, ABSTRACT_TAMEABLE_ANIMAL), - PARROT(54, ABSTRACT_PARROT), + PARROT(56, ABSTRACT_PARROT), // Horses ABSTRACT_HORSE(-1, ABSTRACT_ANIMAL), CHESTED_HORSE(-1, ABSTRACT_HORSE), - DONKEY(13, CHESTED_HORSE), - MULE(49, CHESTED_HORSE), - LLAMA(39, CHESTED_HORSE), - TRADER_LLAMA(75, CHESTED_HORSE), - HORSE(32, ABSTRACT_HORSE), - SKELETON_HORSE(66, ABSTRACT_HORSE), - ZOMBIE_HORSE(96, ABSTRACT_HORSE), + DONKEY(14, CHESTED_HORSE), + MULE(51, CHESTED_HORSE), + LLAMA(41, CHESTED_HORSE), + TRADER_LLAMA(87, CHESTED_HORSE), + HORSE(33, ABSTRACT_HORSE), + SKELETON_HORSE(72, ABSTRACT_HORSE), + ZOMBIE_HORSE(101, ABSTRACT_HORSE), // Golem ABSTRACT_GOLEM(-1, ABSTRACT_CREATURE), - SNOW_GOLEM(69, ABSTRACT_GOLEM), - IRON_GOLEM(85, ABSTRACT_GOLEM), - SHULKER(62, ABSTRACT_GOLEM), + SNOW_GOLEM(75, ABSTRACT_GOLEM), + IRON_GOLEM(36, ABSTRACT_GOLEM), + SHULKER(68, ABSTRACT_GOLEM), // Fish ABSTRACT_FISHES(-1, ABSTRACT_CREATURE), COD(10, ABSTRACT_FISHES), - PUFFERFISH(56, ABSTRACT_FISHES), - SALMON(60, ABSTRACT_FISHES), - TROPICAL_FISH(76, ABSTRACT_FISHES), + PUFFERFISH(63, ABSTRACT_FISHES), + SALMON(66, ABSTRACT_FISHES), + TROPICAL_FISH(88, ABSTRACT_FISHES), // Monsters ABSTRACT_MONSTER(-1, ABSTRACT_CREATURE), @@ -109,66 +109,66 @@ public class Entity1_16Types { ENDERMITE(21, ABSTRACT_MONSTER), ENDERMAN(20, ABSTRACT_MONSTER), GIANT(30, ABSTRACT_MONSTER), - SILVERFISH(64, ABSTRACT_MONSTER), - VEX(83, ABSTRACT_MONSTER), - WITCH(89, ABSTRACT_MONSTER), - WITHER(90, ABSTRACT_MONSTER), - RAVAGER(99, ABSTRACT_MONSTER), - PIGLIN(101, ABSTRACT_MONSTER), + SILVERFISH(70, ABSTRACT_MONSTER), + VEX(90, ABSTRACT_MONSTER), + WITCH(94, ABSTRACT_MONSTER), + WITHER(95, ABSTRACT_MONSTER), + RAVAGER(65, ABSTRACT_MONSTER), + PIGLIN(59, ABSTRACT_MONSTER), - HOGLIN(100, ABSTRACT_ANIMAL), - STRIDER(102, ABSTRACT_ANIMAL), - ZOGLIN(103, ABSTRACT_MONSTER), + HOGLIN(32, ABSTRACT_ANIMAL), + STRIDER(81, ABSTRACT_ANIMAL), + ZOGLIN(99, ABSTRACT_MONSTER), // Illagers ABSTRACT_ILLAGER_BASE(-1, ABSTRACT_MONSTER), ABSTRACT_EVO_ILLU_ILLAGER(-1, ABSTRACT_ILLAGER_BASE), - EVOKER(23, ABSTRACT_EVO_ILLU_ILLAGER), - ILLUSIONER(34, ABSTRACT_EVO_ILLU_ILLAGER), - VINDICATOR(86, ABSTRACT_ILLAGER_BASE), - PILLAGER(87, ABSTRACT_ILLAGER_BASE), + EVOKER(22, ABSTRACT_EVO_ILLU_ILLAGER), + ILLUSIONER(35, ABSTRACT_EVO_ILLU_ILLAGER), + VINDICATOR(92, ABSTRACT_ILLAGER_BASE), + PILLAGER(60, ABSTRACT_ILLAGER_BASE), // Skeletons ABSTRACT_SKELETON(-1, ABSTRACT_MONSTER), - SKELETON(65, ABSTRACT_SKELETON), - STRAY(74, ABSTRACT_SKELETON), - WITHER_SKELETON(91, ABSTRACT_SKELETON), + SKELETON(71, ABSTRACT_SKELETON), + STRAY(80, ABSTRACT_SKELETON), + WITHER_SKELETON(96, ABSTRACT_SKELETON), // Guardians GUARDIAN(31, ABSTRACT_MONSTER), ELDER_GUARDIAN(17, GUARDIAN), // Spiders - SPIDER(72, ABSTRACT_MONSTER), + SPIDER(78, ABSTRACT_MONSTER), CAVE_SPIDER(8, SPIDER), // Zombies - ZOMBIE(94, ABSTRACT_MONSTER), + ZOMBIE(100, ABSTRACT_MONSTER), DROWNED(16, ZOMBIE), - HUSK(33, ZOMBIE), - ZOMBIFIED_PIGLIN(95, ZOMBIE), - ZOMBIE_VILLAGER(97, ZOMBIE), + HUSK(34, ZOMBIE), + ZOMBIFIED_PIGLIN(103, ZOMBIE), + ZOMBIE_VILLAGER(102, ZOMBIE), // Flying entities ABSTRACT_FLYING(-1, ABSTRACT_INSENTIENT), GHAST(29, ABSTRACT_FLYING), - PHANTOM(98, ABSTRACT_FLYING), + PHANTOM(57, ABSTRACT_FLYING), ABSTRACT_AMBIENT(-1, ABSTRACT_INSENTIENT), BAT(3, ABSTRACT_AMBIENT), ABSTRACT_WATERMOB(-1, ABSTRACT_INSENTIENT), - SQUID(73, ABSTRACT_WATERMOB), + SQUID(79, ABSTRACT_WATERMOB), // Slimes - SLIME(67, ABSTRACT_INSENTIENT), - MAGMA_CUBE(41, SLIME), + SLIME(73, ABSTRACT_INSENTIENT), + MAGMA_CUBE(43, SLIME), // Hangable objects ABSTRACT_HANGING(-1, ENTITY), - LEASH_KNOT(38, ABSTRACT_HANGING), - ITEM_FRAME(36, ABSTRACT_HANGING), - PAINTING(52, ABSTRACT_HANGING), + LEASH_KNOT(40, ABSTRACT_HANGING), + ITEM_FRAME(38, ABSTRACT_HANGING), + PAINTING(54, ABSTRACT_HANGING), ABSTRACT_LIGHTNING(-1, ENTITY), LIGHTNING_BOLT(104, ABSTRACT_LIGHTNING), @@ -176,34 +176,34 @@ public class Entity1_16Types { // Arrows ABSTRACT_ARROW(-1, ENTITY), ARROW(2, ABSTRACT_ARROW), - SPECTRAL_ARROW(71, ABSTRACT_ARROW), - TRIDENT(82, ABSTRACT_ARROW), + SPECTRAL_ARROW(77, ABSTRACT_ARROW), + TRIDENT(86, ABSTRACT_ARROW), // Fireballs ABSTRACT_FIREBALL(-1, ENTITY), DRAGON_FIREBALL(15, ABSTRACT_FIREBALL), - FIREBALL(37, ABSTRACT_FIREBALL), - SMALL_FIREBALL(68, ABSTRACT_FIREBALL), - WITHER_SKULL(92, ABSTRACT_FIREBALL), + FIREBALL(39, ABSTRACT_FIREBALL), + SMALL_FIREBALL(74, ABSTRACT_FIREBALL), + WITHER_SKULL(97, ABSTRACT_FIREBALL), // Projectiles PROJECTILE_ABSTRACT(-1, ENTITY), - SNOWBALL(70, PROJECTILE_ABSTRACT), - ENDER_PEARL(79, PROJECTILE_ABSTRACT), - EGG(78, PROJECTILE_ABSTRACT), - POTION(81, PROJECTILE_ABSTRACT), - EXPERIENCE_BOTTLE(80, PROJECTILE_ABSTRACT), + SNOWBALL(76, PROJECTILE_ABSTRACT), + ENDER_PEARL(83, PROJECTILE_ABSTRACT), + EGG(82, PROJECTILE_ABSTRACT), + POTION(85, PROJECTILE_ABSTRACT), + EXPERIENCE_BOTTLE(84, PROJECTILE_ABSTRACT), // Vehicles MINECART_ABSTRACT(-1, ENTITY), CHESTED_MINECART_ABSTRACT(-1, MINECART_ABSTRACT), - CHEST_MINECART(43, CHESTED_MINECART_ABSTRACT), - HOPPER_MINECART(46, CHESTED_MINECART_ABSTRACT), - MINECART(42, MINECART_ABSTRACT), - FURNACE_MINECART(45, MINECART_ABSTRACT), - COMMAND_BLOCK_MINECART(44, MINECART_ABSTRACT), - TNT_MINECART(48, MINECART_ABSTRACT), - SPAWNER_MINECART(47, MINECART_ABSTRACT), + CHEST_MINECART(45, CHESTED_MINECART_ABSTRACT), + HOPPER_MINECART(48, CHESTED_MINECART_ABSTRACT), + MINECART(44, MINECART_ABSTRACT), + FURNACE_MINECART(47, MINECART_ABSTRACT), + COMMAND_BLOCK_MINECART(46, MINECART_ABSTRACT), + TNT_MINECART(50, MINECART_ABSTRACT), + SPAWNER_MINECART(49, MINECART_ABSTRACT), BOAT(6, ENTITY); private static final Map TYPES = new HashMap<>(); diff --git a/common/src/main/java/us/myles/ViaVersion/api/entities/EntityType.java b/common/src/main/java/us/myles/ViaVersion/api/entities/EntityType.java index a022b932f..7c8de1eeb 100644 --- a/common/src/main/java/us/myles/ViaVersion/api/entities/EntityType.java +++ b/common/src/main/java/us/myles/ViaVersion/api/entities/EntityType.java @@ -6,6 +6,8 @@ public interface EntityType { EntityType getParent(); + String name(); + default boolean is(EntityType... types) { for (EntityType type : types) if (is(type)) diff --git a/common/src/main/java/us/myles/ViaVersion/api/protocol/ProtocolVersion.java b/common/src/main/java/us/myles/ViaVersion/api/protocol/ProtocolVersion.java index 1fb1ea7f4..3521bb50a 100644 --- a/common/src/main/java/us/myles/ViaVersion/api/protocol/ProtocolVersion.java +++ b/common/src/main/java/us/myles/ViaVersion/api/protocol/ProtocolVersion.java @@ -80,7 +80,7 @@ public class ProtocolVersion { register(v1_15 = new ProtocolVersion(573, "1.15")); register(v1_15_1 = new ProtocolVersion(575, "1.15.1")); register(v1_15_2 = new ProtocolVersion(578, "1.15.2")); - register(v1_16 = new ProtocolVersion(712, "1.16")); + register(v1_16 = new ProtocolVersion(713, "1.16")); register(unknown = new ProtocolVersion(-1, "UNKNOWN")); } diff --git a/common/src/main/java/us/myles/ViaVersion/api/rewriters/MetadataRewriter.java b/common/src/main/java/us/myles/ViaVersion/api/rewriters/MetadataRewriter.java index 76a5e865a..da77ff67c 100644 --- a/common/src/main/java/us/myles/ViaVersion/api/rewriters/MetadataRewriter.java +++ b/common/src/main/java/us/myles/ViaVersion/api/rewriters/MetadataRewriter.java @@ -18,6 +18,7 @@ import java.util.logging.Logger; public abstract class MetadataRewriter { private final Class entityTrackerClass; private final Protocol protocol; + private Map typeMapping; protected MetadataRewriter(Protocol protocol, Class entityTrackerClass) { this.protocol = protocol; @@ -175,6 +176,26 @@ public abstract class MetadataRewriter { registerMetadataRewriter(oldPacketId, newPacketId, null, metaType); } + public & EntityType> void mapTypes(EntityType[] oldTypes, Class newTypeClass) { + if (typeMapping == null) typeMapping = new HashMap<>(oldTypes.length); + for (EntityType oldType : oldTypes) { + try { + T newType = Enum.valueOf(newTypeClass, oldType.name()); + typeMapping.put(oldType.getId(), newType.getId()); + } catch (IllegalArgumentException notFound) { + if (!typeMapping.containsKey(oldType.getId())) { + Via.getPlatform().getLogger().warning("Could not find new entity type for " + oldType + "! " + + "Old type: " + oldType.getClass().getSimpleName() + " New type: " + newTypeClass.getSimpleName()); + } + } + } + } + + public void mapType(EntityType oldType, EntityType newType) { + if (typeMapping == null) typeMapping = new HashMap<>(); + typeMapping.put(oldType.getId(), newType.getId()); + } + public PacketHandler getTracker() { return getTrackerAndRewriter(null); } @@ -243,7 +264,7 @@ public abstract class MetadataRewriter { } public int getNewEntityId(int oldId) { - return oldId; + return typeMapping != null ? typeMapping.getOrDefault(oldId, oldId) : oldId; } protected void handleMetadata(int entityId, EntityType type, Metadata metadata, List metadatas, UserConnection connection) throws Exception { diff --git a/common/src/main/java/us/myles/ViaVersion/api/type/types/version/ChunkSectionType1_16.java b/common/src/main/java/us/myles/ViaVersion/api/type/types/version/ChunkSectionType1_16.java new file mode 100644 index 000000000..28a8ee2f8 --- /dev/null +++ b/common/src/main/java/us/myles/ViaVersion/api/type/types/version/ChunkSectionType1_16.java @@ -0,0 +1,80 @@ +package us.myles.ViaVersion.api.type.types.version; + +import io.netty.buffer.ByteBuf; +import us.myles.ViaVersion.api.minecraft.chunks.ChunkSection; +import us.myles.ViaVersion.api.type.Type; +import us.myles.ViaVersion.util.CompactArrayUtil; + +public class ChunkSectionType1_16 extends Type { + private static final int GLOBAL_PALETTE = 14; + + public ChunkSectionType1_16() { + super("Chunk Section Type", ChunkSection.class); + } + + @Override + public ChunkSection read(ByteBuf buffer) throws Exception { + ChunkSection chunkSection = new ChunkSection(); + + // Reaad bits per block + int bitsPerBlock = buffer.readUnsignedByte(); + int originalBitsPerBlock = bitsPerBlock; + + if (bitsPerBlock == 0 || bitsPerBlock > 8) { + bitsPerBlock = GLOBAL_PALETTE; + } + + int paletteLength = bitsPerBlock == GLOBAL_PALETTE ? 0 : Type.VAR_INT.read(buffer); + // Read palette + chunkSection.clearPalette(); + for (int i = 0; i < paletteLength; i++) { + chunkSection.addPaletteEntry(Type.VAR_INT.read(buffer)); + } + + // Read blocks + long[] blockData = new long[Type.VAR_INT.read(buffer)]; + if (blockData.length > 0) { + int expectedLength = (int) Math.ceil(ChunkSection.SIZE * bitsPerBlock / 64.0); + if (blockData.length != expectedLength) { + throw new IllegalStateException("Block data length (" + blockData.length + ") does not match expected length (" + expectedLength + ")! bitsPerBlock=" + bitsPerBlock + ", originalBitsPerBlock=" + originalBitsPerBlock); + } + + for (int i = 0; i < blockData.length; i++) { + blockData[i] = buffer.readLong(); + } + CompactArrayUtil.iterateCompactArrayWithPadding(bitsPerBlock, ChunkSection.SIZE, blockData, + bitsPerBlock == GLOBAL_PALETTE ? chunkSection::setFlatBlock : chunkSection::setPaletteIndex); + } + + return chunkSection; + } + + @Override + public void write(ByteBuf buffer, ChunkSection chunkSection) throws Exception { + int bitsPerBlock = 4; + while (chunkSection.getPaletteSize() > 1 << bitsPerBlock) { + bitsPerBlock += 1; + } + + if (bitsPerBlock > 8) { + bitsPerBlock = GLOBAL_PALETTE; + } + + buffer.writeByte(bitsPerBlock); + + // Write pallet (or not) + if (bitsPerBlock != GLOBAL_PALETTE) { + Type.VAR_INT.write(buffer, chunkSection.getPaletteSize()); + for (int i = 0; i < chunkSection.getPaletteSize(); i++) { + Type.VAR_INT.write(buffer, chunkSection.getPaletteEntry(i)); + } + } + + long[] data = CompactArrayUtil.createCompactArrayWithPadding(bitsPerBlock, ChunkSection.SIZE, + bitsPerBlock == GLOBAL_PALETTE ? chunkSection::getFlatBlock : chunkSection::getPaletteIndex); + Type.VAR_INT.write(buffer, data.length); + for (long l : data) { + buffer.writeLong(l); + } + } +} diff --git a/common/src/main/java/us/myles/ViaVersion/api/type/types/version/Types1_16.java b/common/src/main/java/us/myles/ViaVersion/api/type/types/version/Types1_16.java new file mode 100644 index 000000000..b20320145 --- /dev/null +++ b/common/src/main/java/us/myles/ViaVersion/api/type/types/version/Types1_16.java @@ -0,0 +1,12 @@ +package us.myles.ViaVersion.api.type.types.version; + +import us.myles.ViaVersion.api.minecraft.chunks.ChunkSection; +import us.myles.ViaVersion.api.type.Type; + +public class Types1_16 { + + /** + * Chunk section type for 1.16 + */ + public static final Type CHUNK_SECTION = new ChunkSectionType1_16(); +} diff --git a/common/src/main/java/us/myles/ViaVersion/protocols/protocol1_14to1_13_2/metadata/MetadataRewriter1_14To1_13_2.java b/common/src/main/java/us/myles/ViaVersion/protocols/protocol1_14to1_13_2/metadata/MetadataRewriter1_14To1_13_2.java index 2f290ba0e..a4a334f67 100644 --- a/common/src/main/java/us/myles/ViaVersion/protocols/protocol1_14to1_13_2/metadata/MetadataRewriter1_14To1_13_2.java +++ b/common/src/main/java/us/myles/ViaVersion/protocols/protocol1_14to1_13_2/metadata/MetadataRewriter1_14To1_13_2.java @@ -131,7 +131,7 @@ public class MetadataRewriter1_14To1_13_2 extends MetadataRewriter { if (metadata.getId() >= 9) { // New piercing metadata.setId(metadata.getId() + 1); } - } else if (type.is(Entity1_14Types.EntityType.FIREWORKS_ROCKET)) { + } else if (type.is(Entity1_14Types.EntityType.FIREWORK_ROCKET)) { if (metadata.getId() == 8) { if (metadata.getValue().equals(0)) metadata.setValue(null); // https://bugs.mojang.com/browse/MC-111480 diff --git a/common/src/main/java/us/myles/ViaVersion/protocols/protocol1_14to1_13_2/packets/EntityPackets.java b/common/src/main/java/us/myles/ViaVersion/protocols/protocol1_14to1_13_2/packets/EntityPackets.java index b5661569e..fb7cbf2f9 100644 --- a/common/src/main/java/us/myles/ViaVersion/protocols/protocol1_14to1_13_2/packets/EntityPackets.java +++ b/common/src/main/java/us/myles/ViaVersion/protocols/protocol1_14to1_13_2/packets/EntityPackets.java @@ -77,7 +77,7 @@ public class EntityPackets { typeId = Entity1_14Types.EntityType.HOPPER_MINECART.getId(); break; case 6: - typeId = Entity1_14Types.EntityType.COMMANDBLOCK_MINECART.getId(); + typeId = Entity1_14Types.EntityType.COMMAND_BLOCK_MINECART.getId(); break; } } else if ((type1_14.is(Entity1_14Types.EntityType.ITEM) && data > 0) diff --git a/common/src/main/java/us/myles/ViaVersion/protocols/protocol1_16to1_15_2/metadata/MetadataRewriter1_16To1_15_2.java b/common/src/main/java/us/myles/ViaVersion/protocols/protocol1_16to1_15_2/metadata/MetadataRewriter1_16To1_15_2.java index 1ac705eb4..4febfe109 100644 --- a/common/src/main/java/us/myles/ViaVersion/protocols/protocol1_16to1_15_2/metadata/MetadataRewriter1_16To1_15_2.java +++ b/common/src/main/java/us/myles/ViaVersion/protocols/protocol1_16to1_15_2/metadata/MetadataRewriter1_16To1_15_2.java @@ -1,6 +1,7 @@ package us.myles.ViaVersion.protocols.protocol1_16to1_15_2.metadata; import us.myles.ViaVersion.api.data.UserConnection; +import us.myles.ViaVersion.api.entities.Entity1_15Types; import us.myles.ViaVersion.api.entities.Entity1_16Types; import us.myles.ViaVersion.api.entities.EntityType; import us.myles.ViaVersion.api.minecraft.item.Item; @@ -19,6 +20,8 @@ public class MetadataRewriter1_16To1_15_2 extends MetadataRewriter { public MetadataRewriter1_16To1_15_2(Protocol1_16To1_15_2 protocol) { super(protocol, EntityTracker1_16.class); + mapType(Entity1_15Types.EntityType.ZOMBIE_PIGMAN, Entity1_16Types.EntityType.ZOMBIFIED_PIGLIN); + mapTypes(Entity1_15Types.EntityType.values(), Entity1_16Types.EntityType.class); } @Override @@ -50,18 +53,4 @@ public class MetadataRewriter1_16To1_15_2 extends MetadataRewriter { protected EntityType getTypeFromId(int type) { return Entity1_16Types.getTypeFromId(type); } - - @Override - public int getNewEntityId(final int oldId) { - if (oldId == 57) { - return 95; - } - if (oldId > 57 && oldId < 96) { - return oldId - 1; - } - if (oldId > 102) { - return oldId + 1; - } - return oldId; - } } diff --git a/common/src/main/java/us/myles/ViaVersion/protocols/protocol1_16to1_15_2/packets/WorldPackets.java b/common/src/main/java/us/myles/ViaVersion/protocols/protocol1_16to1_15_2/packets/WorldPackets.java index dcf710d19..d57fa6c3a 100644 --- a/common/src/main/java/us/myles/ViaVersion/protocols/protocol1_16to1_15_2/packets/WorldPackets.java +++ b/common/src/main/java/us/myles/ViaVersion/protocols/protocol1_16to1_15_2/packets/WorldPackets.java @@ -14,6 +14,7 @@ import us.myles.ViaVersion.api.type.types.UUIDIntArrayType; import us.myles.ViaVersion.packets.State; import us.myles.ViaVersion.protocols.protocol1_15to1_14_4.types.Chunk1_15Type; import us.myles.ViaVersion.protocols.protocol1_16to1_15_2.Protocol1_16To1_15_2; +import us.myles.ViaVersion.protocols.protocol1_16to1_15_2.types.Chunk1_16Type; import us.myles.ViaVersion.protocols.protocol1_9_3to1_9_1_2.storage.ClientWorld; import java.util.UUID; @@ -41,7 +42,8 @@ public class WorldPackets { public void registerMap() { handler(wrapper -> { ClientWorld clientWorld = wrapper.user().get(ClientWorld.class); - Chunk chunk = wrapper.passthrough(new Chunk1_15Type(clientWorld)); + Chunk chunk = wrapper.read(new Chunk1_15Type(clientWorld)); + wrapper.write(new Chunk1_16Type(clientWorld), chunk); for (int s = 0; s < 16; s++) { ChunkSection section = chunk.getSections()[s]; if (section == null) continue; diff --git a/common/src/main/java/us/myles/ViaVersion/protocols/protocol1_16to1_15_2/storage/EntityTracker1_16.java b/common/src/main/java/us/myles/ViaVersion/protocols/protocol1_16to1_15_2/storage/EntityTracker1_16.java index d7f87e4a2..f5a7d5217 100644 --- a/common/src/main/java/us/myles/ViaVersion/protocols/protocol1_16to1_15_2/storage/EntityTracker1_16.java +++ b/common/src/main/java/us/myles/ViaVersion/protocols/protocol1_16to1_15_2/storage/EntityTracker1_16.java @@ -1,7 +1,7 @@ package us.myles.ViaVersion.protocols.protocol1_16to1_15_2.storage; import us.myles.ViaVersion.api.data.UserConnection; -import us.myles.ViaVersion.api.entities.Entity1_15Types.EntityType; +import us.myles.ViaVersion.api.entities.Entity1_16Types.EntityType; import us.myles.ViaVersion.api.storage.EntityTracker; public class EntityTracker1_16 extends EntityTracker { diff --git a/common/src/main/java/us/myles/ViaVersion/protocols/protocol1_16to1_15_2/types/Chunk1_16Type.java b/common/src/main/java/us/myles/ViaVersion/protocols/protocol1_16to1_15_2/types/Chunk1_16Type.java new file mode 100644 index 000000000..123cd96cb --- /dev/null +++ b/common/src/main/java/us/myles/ViaVersion/protocols/protocol1_16to1_15_2/types/Chunk1_16Type.java @@ -0,0 +1,108 @@ +package us.myles.ViaVersion.protocols.protocol1_16to1_15_2.types; + +import com.github.steveice10.opennbt.tag.builtin.CompoundTag; +import io.netty.buffer.ByteBuf; +import us.myles.ViaVersion.api.Via; +import us.myles.ViaVersion.api.minecraft.chunks.BaseChunk; +import us.myles.ViaVersion.api.minecraft.chunks.Chunk; +import us.myles.ViaVersion.api.minecraft.chunks.ChunkSection; +import us.myles.ViaVersion.api.type.PartialType; +import us.myles.ViaVersion.api.type.Type; +import us.myles.ViaVersion.api.type.types.minecraft.BaseChunkType; +import us.myles.ViaVersion.api.type.types.version.Types1_16; +import us.myles.ViaVersion.protocols.protocol1_9_3to1_9_1_2.storage.ClientWorld; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; + +public class Chunk1_16Type extends PartialType { + private static final CompoundTag[] A = new CompoundTag[0]; + + public Chunk1_16Type(ClientWorld param) { + super(param, Chunk.class); + } + + @Override + public Chunk read(ByteBuf input, ClientWorld world) throws Exception { + int chunkX = input.readInt(); + int chunkZ = input.readInt(); + + boolean fullChunk = input.readBoolean(); + int primaryBitmask = Type.VAR_INT.read(input); + CompoundTag heightMap = Type.NBT.read(input); + + int[] biomeData = fullChunk ? new int[1024] : null; + if (fullChunk) { + for (int i = 0; i < 1024; i++) { + biomeData[i] = input.readInt(); + } + } + + Type.VAR_INT.read(input); // data size in bytes + + // Read sections + ChunkSection[] sections = new ChunkSection[16]; + for (int i = 0; i < 16; i++) { + if ((primaryBitmask & (1 << i)) == 0) continue; // Section not set + + short nonAirBlocksCount = input.readShort(); + ChunkSection section = Types1_16.CHUNK_SECTION.read(input); + section.setNonAirBlocksCount(nonAirBlocksCount); + sections[i] = section; + } + + List nbtData = new ArrayList<>(Arrays.asList(Type.NBT_ARRAY.read(input))); + + // Read all the remaining bytes (workaround for #681) + if (input.readableBytes() > 0) { + byte[] array = Type.REMAINING_BYTES.read(input); + if (Via.getManager().isDebug()) { + Via.getPlatform().getLogger().warning("Found " + array.length + " more bytes than expected while reading the chunk: " + chunkX + "/" + chunkZ); + } + } + + return new BaseChunk(chunkX, chunkZ, fullChunk, primaryBitmask, sections, biomeData, heightMap, nbtData); + } + + @Override + public void write(ByteBuf output, ClientWorld world, Chunk chunk) throws Exception { + output.writeInt(chunk.getX()); + output.writeInt(chunk.getZ()); + + output.writeBoolean(chunk.isFullChunk()); + Type.VAR_INT.write(output, chunk.getBitmask()); + Type.NBT.write(output, chunk.getHeightMap()); + + // Write biome data + if (chunk.isBiomeData()) { + for (int value : chunk.getBiomeData()) { + output.writeInt(value); + } + } + + ByteBuf buf = output.alloc().buffer(); + try { + for (int i = 0; i < 16; i++) { + ChunkSection section = chunk.getSections()[i]; + if (section == null) continue; // Section not set + + buf.writeShort(section.getNonAirBlocksCount()); + Types1_16.CHUNK_SECTION.write(buf, section); + } + buf.readerIndex(0); + Type.VAR_INT.write(output, buf.readableBytes()); + output.writeBytes(buf); + } finally { + buf.release(); // release buffer + } + + // Write Block Entities + Type.NBT_ARRAY.write(output, chunk.getBlockEntities().toArray(A)); + } + + @Override + public Class getBaseClass() { + return BaseChunkType.class; + } +} diff --git a/common/src/main/java/us/myles/ViaVersion/util/CompactArrayUtil.java b/common/src/main/java/us/myles/ViaVersion/util/CompactArrayUtil.java index 92c0d40b1..59d139e54 100644 --- a/common/src/main/java/us/myles/ViaVersion/util/CompactArrayUtil.java +++ b/common/src/main/java/us/myles/ViaVersion/util/CompactArrayUtil.java @@ -3,18 +3,77 @@ package us.myles.ViaVersion.util; import java.util.function.IntToLongFunction; public class CompactArrayUtil { + //Oh no + private static final int[] MAGIC = new int[] { + -1, -1, 0, Integer.MIN_VALUE, 0, 0, 1431655765, 1431655765, 0, Integer.MIN_VALUE, + 0, 1, 858993459, 858993459, 0, 715827882, 715827882, 0, 613566756, 613566756, + 0, Integer.MIN_VALUE, 0, 2, 477218588, 477218588, 0, 429496729, 429496729, 0, + 390451572, 390451572, 0, 357913941, 357913941, 0, 330382099, 330382099, 0, 306783378, + 306783378, 0, 286331153, 286331153, 0, Integer.MIN_VALUE, 0, 3, 252645135, 252645135, + 0, 238609294, 238609294, 0, 226050910, 226050910, 0, 214748364, 214748364, 0, + 204522252, 204522252, 0, 195225786, 195225786, 0, 186737708, 186737708, 0, 178956970, + 178956970, 0, 171798691, 171798691, 0, 165191049, 165191049, 0, 159072862, 159072862, + 0, 153391689, 153391689, 0, 148102320, 148102320, 0, 143165576, 143165576, 0, + 138547332, 138547332, 0, Integer.MIN_VALUE, 0, 4, 130150524, 130150524, 0, 126322567, + 126322567, 0, 122713351, 122713351, 0, 119304647, 119304647, 0, 116080197, 116080197, + 0, 113025455, 113025455, 0, 110127366, 110127366, 0, 107374182, 107374182, 0, + 104755299, 104755299, 0, 102261126, 102261126, 0, 99882960, 99882960, 0, 97612893, + 97612893, 0, 95443717, 95443717, 0, 93368854, 93368854, 0, 91382282, 91382282, + 0, 89478485, 89478485, 0, 87652393, 87652393, 0, 85899345, 85899345, 0, + 84215045, 84215045, 0, 82595524, 82595524, 0, 81037118, 81037118, 0, 79536431, + 79536431, 0, 78090314, 78090314, 0, 76695844, 76695844, 0, 75350303, 75350303, + 0, 74051160, 74051160, 0, 72796055, 72796055, 0, 71582788, 71582788, 0, + 70409299, 70409299, 0, 69273666, 69273666, 0, 68174084, 68174084, 0, Integer.MIN_VALUE, + 0, 5 }; + private CompactArrayUtil() { throw new AssertionError(); } + public static long[] createCompactArrayWithPadding(int bitsPerEntry, int entries, IntToLongFunction valueGetter) { + long maxEntryValue = (1L << bitsPerEntry) - 1; + char valuesPerLong = (char) (64 / bitsPerEntry); + int magicIndex = 3 * (valuesPerLong - 1); + long divideMul = Integer.toUnsignedLong(MAGIC[magicIndex]); + long divideAdd = Integer.toUnsignedLong(MAGIC[magicIndex + 1]); + int divideShift = MAGIC[magicIndex + 2]; + int size = (4096 + valuesPerLong - 1) / valuesPerLong; + + long[] data = new long[size]; + + for (int i = 0; i < entries; i++) { + long value = valueGetter.applyAsLong(i); + int cellIndex = (int) (i * divideMul + divideAdd >> 32L >> divideShift); + int bitIndex = (i - cellIndex * valuesPerLong) * bitsPerEntry; + data[cellIndex] = data[cellIndex] & ~(maxEntryValue << bitIndex) | (value & maxEntryValue) << bitIndex; + } + + return data; + } + public static void iterateCompactArrayWithPadding(int bitsPerEntry, int entries, long[] data, BiIntConsumer consumer) { + long maxEntryValue = (1L << bitsPerEntry) - 1; + char valuesPerLong = (char) (64 / bitsPerEntry); + int magicIndex = 3 * (valuesPerLong - 1); + long divideMul = Integer.toUnsignedLong(MAGIC[magicIndex]); + long divideAdd = Integer.toUnsignedLong(MAGIC[magicIndex + 1]); + int divideShift = MAGIC[magicIndex + 2]; + + for (int i = 0; i < entries; i++) { + int cellIndex = (int) (i * divideMul + divideAdd >> 32L >> divideShift); + int bitIndex = (i - cellIndex * valuesPerLong) * bitsPerEntry; + int value = (int) (data[cellIndex] >> bitIndex & maxEntryValue); + consumer.consume(i, value); + } + } + public static long[] createCompactArray(int bitsPerEntry, int entries, IntToLongFunction valueGetter) { long maxEntryValue = (1L << bitsPerEntry) - 1; long[] data = new long[(int) Math.ceil(entries * bitsPerEntry / 64.0)]; - for (int index = 0; index < entries; index++) { - long value = valueGetter.applyAsLong(index); - int bitIndex = index * bitsPerEntry; + for (int i = 0; i < entries; i++) { + long value = valueGetter.applyAsLong(i); + int bitIndex = i * bitsPerEntry; int startIndex = bitIndex / 64; - int endIndex = ((index + 1) * bitsPerEntry - 1) / 64; + int endIndex = ((i + 1) * bitsPerEntry - 1) / 64; int startBitSubIndex = bitIndex % 64; data[startIndex] = data[startIndex] & ~(maxEntryValue << startBitSubIndex) | (value & maxEntryValue) << startBitSubIndex; if (startIndex != endIndex) { @@ -32,14 +91,14 @@ public class CompactArrayUtil { int startIndex = bitIndex / 64; int endIndex = ((i + 1) * bitsPerEntry - 1) / 64; int startBitSubIndex = bitIndex % 64; - int val; + int value; if (startIndex == endIndex) { - val = (int) (data[startIndex] >>> startBitSubIndex & maxEntryValue); + value = (int) (data[startIndex] >>> startBitSubIndex & maxEntryValue); } else { int endBitSubIndex = 64 - startBitSubIndex; - val = (int) ((data[startIndex] >>> startBitSubIndex | data[endIndex] << endBitSubIndex) & maxEntryValue); + value = (int) ((data[startIndex] >>> startBitSubIndex | data[endIndex] << endBitSubIndex) & maxEntryValue); } - consumer.consume(i, val); + consumer.consume(i, value); } } } diff --git a/common/src/main/resources/assets/viaversion/data/mapping-1.16.json b/common/src/main/resources/assets/viaversion/data/mapping-1.16.json index 5b4c4070b..69253cd50 100644 --- a/common/src/main/resources/assets/viaversion/data/mapping-1.16.json +++ b/common/src/main/resources/assets/viaversion/data/mapping-1.16.json @@ -4008,11 +4008,11 @@ "4005": "minecraft:polished_basalt[axis=x]", "4006": "minecraft:polished_basalt[axis=y]", "4007": "minecraft:polished_basalt[axis=z]", - "4008": "minecraft:soul_fire_torch", - "4009": "minecraft:soul_fire_wall_torch[facing=north]", - "4010": "minecraft:soul_fire_wall_torch[facing=south]", - "4011": "minecraft:soul_fire_wall_torch[facing=west]", - "4012": "minecraft:soul_fire_wall_torch[facing=east]", + "4008": "minecraft:soul_torch", + "4009": "minecraft:soul_wall_torch[facing=north]", + "4010": "minecraft:soul_wall_torch[facing=south]", + "4011": "minecraft:soul_wall_torch[facing=west]", + "4012": "minecraft:soul_wall_torch[facing=east]", "4013": "minecraft:glowstone", "4014": "minecraft:nether_portal[axis=x]", "4015": "minecraft:nether_portal[axis=z]", @@ -14887,8 +14887,8 @@ "14884": "minecraft:bell[attachment=double_wall,facing=east,powered=false]", "14885": "minecraft:lantern[hanging=true]", "14886": "minecraft:lantern[hanging=false]", - "14887": "minecraft:soul_fire_lantern[hanging=true]", - "14888": "minecraft:soul_fire_lantern[hanging=false]", + "14887": "minecraft:soul_lantern[hanging=true]", + "14888": "minecraft:soul_lantern[hanging=false]", "14889": "minecraft:campfire[facing=north,lit=true,signal_fire=true,waterlogged=true]", "14890": "minecraft:campfire[facing=north,lit=true,signal_fire=true,waterlogged=false]", "14891": "minecraft:campfire[facing=north,lit=true,signal_fire=false,waterlogged=true]", @@ -17303,8 +17303,8 @@ "195": "soul_soil", "196": "basalt", "197": "polished_basalt", - "198": "soul_fire_torch", - "199": "soul_fire_wall_torch", + "198": "soul_torch", + "199": "soul_wall_torch", "200": "glowstone", "201": "nether_portal", "202": "carved_pumpkin", @@ -17784,7 +17784,7 @@ "676": "stonecutter", "677": "bell", "678": "lantern", - "679": "soul_fire_lantern", + "679": "soul_lantern", "680": "campfire", "681": "soul_campfire", "682": "sweet_berry_bush", @@ -18069,9 +18069,9 @@ "196": "minecraft:dark_oak_pressure_plate", "197": "minecraft:crimson_pressure_plate", "198": "minecraft:warped_pressure_plate", - "199": "minecraft:redstone_ore", - "200": "minecraft:redstone_torch", - "201": "minecraft:stone_button", + "199": "minecraft:polished_blackstone_pressure_plate", + "200": "minecraft:redstone_ore", + "201": "minecraft:redstone_torch", "202": "minecraft:snow", "203": "minecraft:ice", "204": "minecraft:snow_block", @@ -18093,7 +18093,7 @@ "220": "minecraft:soul_soil", "221": "minecraft:basalt", "222": "minecraft:polished_basalt", - "223": "minecraft:soul_fire_torch", + "223": "minecraft:soul_torch", "224": "minecraft:glowstone", "225": "minecraft:jack_o_lantern", "226": "minecraft:oak_trapdoor", @@ -18171,678 +18171,678 @@ "298": "minecraft:sandstone_wall", "299": "minecraft:end_stone_brick_wall", "300": "minecraft:diorite_wall", - "301": "minecraft:oak_button", - "302": "minecraft:spruce_button", - "303": "minecraft:birch_button", - "304": "minecraft:jungle_button", - "305": "minecraft:acacia_button", - "306": "minecraft:dark_oak_button", - "307": "minecraft:crimson_button", - "308": "minecraft:warped_button", - "309": "minecraft:anvil", - "310": "minecraft:chipped_anvil", - "311": "minecraft:damaged_anvil", - "312": "minecraft:trapped_chest", - "313": "minecraft:light_weighted_pressure_plate", - "314": "minecraft:heavy_weighted_pressure_plate", - "315": "minecraft:daylight_detector", - "316": "minecraft:redstone_block", - "317": "minecraft:nether_quartz_ore", - "318": "minecraft:hopper", - "319": "minecraft:chiseled_quartz_block", - "320": "minecraft:quartz_block", - "321": "minecraft:quartz_bricks", - "322": "minecraft:quartz_pillar", - "323": "minecraft:quartz_stairs", - "324": "minecraft:activator_rail", - "325": "minecraft:dropper", - "326": "minecraft:white_terracotta", - "327": "minecraft:orange_terracotta", - "328": "minecraft:magenta_terracotta", - "329": "minecraft:light_blue_terracotta", - "330": "minecraft:yellow_terracotta", - "331": "minecraft:lime_terracotta", - "332": "minecraft:pink_terracotta", - "333": "minecraft:gray_terracotta", - "334": "minecraft:light_gray_terracotta", - "335": "minecraft:cyan_terracotta", - "336": "minecraft:purple_terracotta", - "337": "minecraft:blue_terracotta", - "338": "minecraft:brown_terracotta", - "339": "minecraft:green_terracotta", - "340": "minecraft:red_terracotta", - "341": "minecraft:black_terracotta", - "342": "minecraft:barrier", - "343": "minecraft:iron_trapdoor", - "344": "minecraft:hay_block", - "345": "minecraft:white_carpet", - "346": "minecraft:orange_carpet", - "347": "minecraft:magenta_carpet", - "348": "minecraft:light_blue_carpet", - "349": "minecraft:yellow_carpet", - "350": "minecraft:lime_carpet", - "351": "minecraft:pink_carpet", - "352": "minecraft:gray_carpet", - "353": "minecraft:light_gray_carpet", - "354": "minecraft:cyan_carpet", - "355": "minecraft:purple_carpet", - "356": "minecraft:blue_carpet", - "357": "minecraft:brown_carpet", - "358": "minecraft:green_carpet", - "359": "minecraft:red_carpet", - "360": "minecraft:black_carpet", - "361": "minecraft:terracotta", - "362": "minecraft:coal_block", - "363": "minecraft:packed_ice", - "364": "minecraft:acacia_stairs", - "365": "minecraft:dark_oak_stairs", - "366": "minecraft:slime_block", - "367": "minecraft:grass_path", - "368": "minecraft:sunflower", - "369": "minecraft:lilac", - "370": "minecraft:rose_bush", - "371": "minecraft:peony", - "372": "minecraft:tall_grass", - "373": "minecraft:large_fern", - "374": "minecraft:white_stained_glass", - "375": "minecraft:orange_stained_glass", - "376": "minecraft:magenta_stained_glass", - "377": "minecraft:light_blue_stained_glass", - "378": "minecraft:yellow_stained_glass", - "379": "minecraft:lime_stained_glass", - "380": "minecraft:pink_stained_glass", - "381": "minecraft:gray_stained_glass", - "382": "minecraft:light_gray_stained_glass", - "383": "minecraft:cyan_stained_glass", - "384": "minecraft:purple_stained_glass", - "385": "minecraft:blue_stained_glass", - "386": "minecraft:brown_stained_glass", - "387": "minecraft:green_stained_glass", - "388": "minecraft:red_stained_glass", - "389": "minecraft:black_stained_glass", - "390": "minecraft:white_stained_glass_pane", - "391": "minecraft:orange_stained_glass_pane", - "392": "minecraft:magenta_stained_glass_pane", - "393": "minecraft:light_blue_stained_glass_pane", - "394": "minecraft:yellow_stained_glass_pane", - "395": "minecraft:lime_stained_glass_pane", - "396": "minecraft:pink_stained_glass_pane", - "397": "minecraft:gray_stained_glass_pane", - "398": "minecraft:light_gray_stained_glass_pane", - "399": "minecraft:cyan_stained_glass_pane", - "400": "minecraft:purple_stained_glass_pane", - "401": "minecraft:blue_stained_glass_pane", - "402": "minecraft:brown_stained_glass_pane", - "403": "minecraft:green_stained_glass_pane", - "404": "minecraft:red_stained_glass_pane", - "405": "minecraft:black_stained_glass_pane", - "406": "minecraft:prismarine", - "407": "minecraft:prismarine_bricks", - "408": "minecraft:dark_prismarine", - "409": "minecraft:prismarine_stairs", - "410": "minecraft:prismarine_brick_stairs", - "411": "minecraft:dark_prismarine_stairs", - "412": "minecraft:sea_lantern", - "413": "minecraft:red_sandstone", - "414": "minecraft:chiseled_red_sandstone", - "415": "minecraft:cut_red_sandstone", - "416": "minecraft:red_sandstone_stairs", - "417": "minecraft:repeating_command_block", - "418": "minecraft:chain_command_block", - "419": "minecraft:magma_block", - "420": "minecraft:nether_wart_block", - "421": "minecraft:warped_wart_block", - "422": "minecraft:red_nether_bricks", - "423": "minecraft:bone_block", - "424": "minecraft:structure_void", - "425": "minecraft:observer", - "426": "minecraft:shulker_box", - "427": "minecraft:white_shulker_box", - "428": "minecraft:orange_shulker_box", - "429": "minecraft:magenta_shulker_box", - "430": "minecraft:light_blue_shulker_box", - "431": "minecraft:yellow_shulker_box", - "432": "minecraft:lime_shulker_box", - "433": "minecraft:pink_shulker_box", - "434": "minecraft:gray_shulker_box", - "435": "minecraft:light_gray_shulker_box", - "436": "minecraft:cyan_shulker_box", - "437": "minecraft:purple_shulker_box", - "438": "minecraft:blue_shulker_box", - "439": "minecraft:brown_shulker_box", - "440": "minecraft:green_shulker_box", - "441": "minecraft:red_shulker_box", - "442": "minecraft:black_shulker_box", - "443": "minecraft:white_glazed_terracotta", - "444": "minecraft:orange_glazed_terracotta", - "445": "minecraft:magenta_glazed_terracotta", - "446": "minecraft:light_blue_glazed_terracotta", - "447": "minecraft:yellow_glazed_terracotta", - "448": "minecraft:lime_glazed_terracotta", - "449": "minecraft:pink_glazed_terracotta", - "450": "minecraft:gray_glazed_terracotta", - "451": "minecraft:light_gray_glazed_terracotta", - "452": "minecraft:cyan_glazed_terracotta", - "453": "minecraft:purple_glazed_terracotta", - "454": "minecraft:blue_glazed_terracotta", - "455": "minecraft:brown_glazed_terracotta", - "456": "minecraft:green_glazed_terracotta", - "457": "minecraft:red_glazed_terracotta", - "458": "minecraft:black_glazed_terracotta", - "459": "minecraft:white_concrete", - "460": "minecraft:orange_concrete", - "461": "minecraft:magenta_concrete", - "462": "minecraft:light_blue_concrete", - "463": "minecraft:yellow_concrete", - "464": "minecraft:lime_concrete", - "465": "minecraft:pink_concrete", - "466": "minecraft:gray_concrete", - "467": "minecraft:light_gray_concrete", - "468": "minecraft:cyan_concrete", - "469": "minecraft:purple_concrete", - "470": "minecraft:blue_concrete", - "471": "minecraft:brown_concrete", - "472": "minecraft:green_concrete", - "473": "minecraft:red_concrete", - "474": "minecraft:black_concrete", - "475": "minecraft:white_concrete_powder", - "476": "minecraft:orange_concrete_powder", - "477": "minecraft:magenta_concrete_powder", - "478": "minecraft:light_blue_concrete_powder", - "479": "minecraft:yellow_concrete_powder", - "480": "minecraft:lime_concrete_powder", - "481": "minecraft:pink_concrete_powder", - "482": "minecraft:gray_concrete_powder", - "483": "minecraft:light_gray_concrete_powder", - "484": "minecraft:cyan_concrete_powder", - "485": "minecraft:purple_concrete_powder", - "486": "minecraft:blue_concrete_powder", - "487": "minecraft:brown_concrete_powder", - "488": "minecraft:green_concrete_powder", - "489": "minecraft:red_concrete_powder", - "490": "minecraft:black_concrete_powder", - "491": "minecraft:turtle_egg", - "492": "minecraft:dead_tube_coral_block", - "493": "minecraft:dead_brain_coral_block", - "494": "minecraft:dead_bubble_coral_block", - "495": "minecraft:dead_fire_coral_block", - "496": "minecraft:dead_horn_coral_block", - "497": "minecraft:tube_coral_block", - "498": "minecraft:brain_coral_block", - "499": "minecraft:bubble_coral_block", - "500": "minecraft:fire_coral_block", - "501": "minecraft:horn_coral_block", - "502": "minecraft:tube_coral", - "503": "minecraft:brain_coral", - "504": "minecraft:bubble_coral", - "505": "minecraft:fire_coral", - "506": "minecraft:horn_coral", - "507": "minecraft:dead_brain_coral", - "508": "minecraft:dead_bubble_coral", - "509": "minecraft:dead_fire_coral", - "510": "minecraft:dead_horn_coral", - "511": "minecraft:dead_tube_coral", - "512": "minecraft:tube_coral_fan", - "513": "minecraft:brain_coral_fan", - "514": "minecraft:bubble_coral_fan", - "515": "minecraft:fire_coral_fan", - "516": "minecraft:horn_coral_fan", - "517": "minecraft:dead_tube_coral_fan", - "518": "minecraft:dead_brain_coral_fan", - "519": "minecraft:dead_bubble_coral_fan", - "520": "minecraft:dead_fire_coral_fan", - "521": "minecraft:dead_horn_coral_fan", - "522": "minecraft:blue_ice", - "523": "minecraft:conduit", - "524": "minecraft:polished_granite_stairs", - "525": "minecraft:smooth_red_sandstone_stairs", - "526": "minecraft:mossy_stone_brick_stairs", - "527": "minecraft:polished_diorite_stairs", - "528": "minecraft:mossy_cobblestone_stairs", - "529": "minecraft:end_stone_brick_stairs", - "530": "minecraft:stone_stairs", - "531": "minecraft:smooth_sandstone_stairs", - "532": "minecraft:smooth_quartz_stairs", - "533": "minecraft:granite_stairs", - "534": "minecraft:andesite_stairs", - "535": "minecraft:red_nether_brick_stairs", - "536": "minecraft:polished_andesite_stairs", - "537": "minecraft:diorite_stairs", - "538": "minecraft:polished_granite_slab", - "539": "minecraft:smooth_red_sandstone_slab", - "540": "minecraft:mossy_stone_brick_slab", - "541": "minecraft:polished_diorite_slab", - "542": "minecraft:mossy_cobblestone_slab", - "543": "minecraft:end_stone_brick_slab", - "544": "minecraft:smooth_sandstone_slab", - "545": "minecraft:smooth_quartz_slab", - "546": "minecraft:granite_slab", - "547": "minecraft:andesite_slab", - "548": "minecraft:red_nether_brick_slab", - "549": "minecraft:polished_andesite_slab", - "550": "minecraft:diorite_slab", - "551": "minecraft:scaffolding", - "552": "minecraft:iron_door", - "553": "minecraft:oak_door", - "554": "minecraft:spruce_door", - "555": "minecraft:birch_door", - "556": "minecraft:jungle_door", - "557": "minecraft:acacia_door", - "558": "minecraft:dark_oak_door", - "559": "minecraft:crimson_door", - "560": "minecraft:warped_door", - "561": "minecraft:repeater", - "562": "minecraft:comparator", - "563": "minecraft:structure_block", - "564": "minecraft:jigsaw", - "565": "minecraft:turtle_helmet", - "566": "minecraft:scute", - "567": "minecraft:iron_shovel", - "568": "minecraft:iron_pickaxe", - "569": "minecraft:iron_axe", - "570": "minecraft:flint_and_steel", - "571": "minecraft:apple", - "572": "minecraft:bow", - "573": "minecraft:arrow", - "574": "minecraft:coal", - "575": "minecraft:charcoal", - "576": "minecraft:diamond", - "577": "minecraft:iron_ingot", - "578": "minecraft:gold_ingot", - "579": "minecraft:iron_sword", - "580": "minecraft:wooden_sword", - "581": "minecraft:wooden_shovel", - "582": "minecraft:wooden_pickaxe", - "583": "minecraft:wooden_axe", - "584": "minecraft:stone_sword", - "585": "minecraft:stone_shovel", - "586": "minecraft:stone_pickaxe", - "587": "minecraft:stone_axe", - "588": "minecraft:diamond_sword", - "589": "minecraft:diamond_shovel", - "590": "minecraft:diamond_pickaxe", - "591": "minecraft:diamond_axe", - "592": "minecraft:stick", - "593": "minecraft:bowl", - "594": "minecraft:mushroom_stew", - "595": "minecraft:golden_sword", - "596": "minecraft:golden_shovel", - "597": "minecraft:golden_pickaxe", - "598": "minecraft:golden_axe", - "599": "minecraft:netherite_sword", - "600": "minecraft:netherite_shovel", - "601": "minecraft:netherite_pickaxe", - "602": "minecraft:netherite_axe", - "603": "minecraft:string", - "604": "minecraft:feather", - "605": "minecraft:gunpowder", - "606": "minecraft:wooden_hoe", - "607": "minecraft:stone_hoe", - "608": "minecraft:iron_hoe", - "609": "minecraft:diamond_hoe", - "610": "minecraft:golden_hoe", - "611": "minecraft:netherite_hoe", - "612": "minecraft:wheat_seeds", - "613": "minecraft:wheat", - "614": "minecraft:bread", - "615": "minecraft:leather_helmet", - "616": "minecraft:leather_chestplate", - "617": "minecraft:leather_leggings", - "618": "minecraft:leather_boots", - "619": "minecraft:chainmail_helmet", - "620": "minecraft:chainmail_chestplate", - "621": "minecraft:chainmail_leggings", - "622": "minecraft:chainmail_boots", - "623": "minecraft:iron_helmet", - "624": "minecraft:iron_chestplate", - "625": "minecraft:iron_leggings", - "626": "minecraft:iron_boots", - "627": "minecraft:diamond_helmet", - "628": "minecraft:diamond_chestplate", - "629": "minecraft:diamond_leggings", - "630": "minecraft:diamond_boots", - "631": "minecraft:golden_helmet", - "632": "minecraft:golden_chestplate", - "633": "minecraft:golden_leggings", - "634": "minecraft:golden_boots", - "635": "minecraft:netherite_helmet", - "636": "minecraft:netherite_chestplate", - "637": "minecraft:netherite_leggings", - "638": "minecraft:netherite_boots", - "639": "minecraft:flint", - "640": "minecraft:porkchop", - "641": "minecraft:cooked_porkchop", - "642": "minecraft:painting", - "643": "minecraft:golden_apple", - "644": "minecraft:enchanted_golden_apple", - "645": "minecraft:oak_sign", - "646": "minecraft:spruce_sign", - "647": "minecraft:birch_sign", - "648": "minecraft:jungle_sign", - "649": "minecraft:acacia_sign", - "650": "minecraft:dark_oak_sign", - "651": "minecraft:crimson_sign", - "652": "minecraft:warped_sign", - "653": "minecraft:bucket", - "654": "minecraft:water_bucket", - "655": "minecraft:lava_bucket", - "656": "minecraft:minecart", - "657": "minecraft:saddle", - "658": "minecraft:redstone", - "659": "minecraft:snowball", - "660": "minecraft:oak_boat", - "661": "minecraft:leather", - "662": "minecraft:milk_bucket", - "663": "minecraft:pufferfish_bucket", - "664": "minecraft:salmon_bucket", - "665": "minecraft:cod_bucket", - "666": "minecraft:tropical_fish_bucket", - "667": "minecraft:brick", - "668": "minecraft:clay_ball", - "669": "minecraft:dried_kelp_block", - "670": "minecraft:paper", - "671": "minecraft:book", - "672": "minecraft:slime_ball", - "673": "minecraft:chest_minecart", - "674": "minecraft:furnace_minecart", - "675": "minecraft:egg", - "676": "minecraft:compass", - "677": "minecraft:fishing_rod", - "678": "minecraft:clock", - "679": "minecraft:glowstone_dust", - "680": "minecraft:cod", - "681": "minecraft:salmon", - "682": "minecraft:tropical_fish", - "683": "minecraft:pufferfish", - "684": "minecraft:cooked_cod", - "685": "minecraft:cooked_salmon", - "686": "minecraft:ink_sac", - "687": "minecraft:red_dye", - "688": "minecraft:green_dye", - "689": "minecraft:cocoa_beans", - "690": "minecraft:lapis_lazuli", - "691": "minecraft:purple_dye", - "692": "minecraft:cyan_dye", - "693": "minecraft:light_gray_dye", - "694": "minecraft:gray_dye", - "695": "minecraft:pink_dye", - "696": "minecraft:lime_dye", - "697": "minecraft:yellow_dye", - "698": "minecraft:light_blue_dye", - "699": "minecraft:magenta_dye", - "700": "minecraft:orange_dye", - "701": "minecraft:bone_meal", - "702": "minecraft:blue_dye", - "703": "minecraft:brown_dye", - "704": "minecraft:black_dye", - "705": "minecraft:white_dye", - "706": "minecraft:bone", - "707": "minecraft:sugar", - "708": "minecraft:cake", - "709": "minecraft:white_bed", - "710": "minecraft:orange_bed", - "711": "minecraft:magenta_bed", - "712": "minecraft:light_blue_bed", - "713": "minecraft:yellow_bed", - "714": "minecraft:lime_bed", - "715": "minecraft:pink_bed", - "716": "minecraft:gray_bed", - "717": "minecraft:light_gray_bed", - "718": "minecraft:cyan_bed", - "719": "minecraft:purple_bed", - "720": "minecraft:blue_bed", - "721": "minecraft:brown_bed", - "722": "minecraft:green_bed", - "723": "minecraft:red_bed", - "724": "minecraft:black_bed", - "725": "minecraft:cookie", - "726": "minecraft:filled_map", - "727": "minecraft:shears", - "728": "minecraft:melon_slice", - "729": "minecraft:dried_kelp", - "730": "minecraft:pumpkin_seeds", - "731": "minecraft:melon_seeds", - "732": "minecraft:beef", - "733": "minecraft:cooked_beef", - "734": "minecraft:chicken", - "735": "minecraft:cooked_chicken", - "736": "minecraft:rotten_flesh", - "737": "minecraft:ender_pearl", - "738": "minecraft:blaze_rod", - "739": "minecraft:ghast_tear", - "740": "minecraft:gold_nugget", - "741": "minecraft:nether_wart", - "742": "minecraft:potion", - "743": "minecraft:glass_bottle", - "744": "minecraft:spider_eye", - "745": "minecraft:fermented_spider_eye", - "746": "minecraft:blaze_powder", - "747": "minecraft:magma_cream", - "748": "minecraft:brewing_stand", - "749": "minecraft:cauldron", - "750": "minecraft:ender_eye", - "751": "minecraft:glistering_melon_slice", - "752": "minecraft:bat_spawn_egg", - "753": "minecraft:bee_spawn_egg", - "754": "minecraft:blaze_spawn_egg", - "755": "minecraft:cat_spawn_egg", - "756": "minecraft:cave_spider_spawn_egg", - "757": "minecraft:chicken_spawn_egg", - "758": "minecraft:cod_spawn_egg", - "759": "minecraft:cow_spawn_egg", - "760": "minecraft:creeper_spawn_egg", - "761": "minecraft:dolphin_spawn_egg", - "762": "minecraft:donkey_spawn_egg", - "763": "minecraft:drowned_spawn_egg", - "764": "minecraft:elder_guardian_spawn_egg", - "765": "minecraft:enderman_spawn_egg", - "766": "minecraft:endermite_spawn_egg", - "767": "minecraft:evoker_spawn_egg", - "768": "minecraft:fox_spawn_egg", - "769": "minecraft:ghast_spawn_egg", - "770": "minecraft:guardian_spawn_egg", - "771": "minecraft:hoglin_spawn_egg", - "772": "minecraft:horse_spawn_egg", - "773": "minecraft:husk_spawn_egg", - "774": "minecraft:llama_spawn_egg", - "775": "minecraft:magma_cube_spawn_egg", - "776": "minecraft:mooshroom_spawn_egg", - "777": "minecraft:mule_spawn_egg", - "778": "minecraft:ocelot_spawn_egg", - "779": "minecraft:panda_spawn_egg", - "780": "minecraft:parrot_spawn_egg", - "781": "minecraft:phantom_spawn_egg", - "782": "minecraft:pig_spawn_egg", - "783": "minecraft:piglin_spawn_egg", - "784": "minecraft:pillager_spawn_egg", - "785": "minecraft:polar_bear_spawn_egg", - "786": "minecraft:pufferfish_spawn_egg", - "787": "minecraft:rabbit_spawn_egg", - "788": "minecraft:ravager_spawn_egg", - "789": "minecraft:salmon_spawn_egg", - "790": "minecraft:sheep_spawn_egg", - "791": "minecraft:shulker_spawn_egg", - "792": "minecraft:silverfish_spawn_egg", - "793": "minecraft:skeleton_spawn_egg", - "794": "minecraft:skeleton_horse_spawn_egg", - "795": "minecraft:slime_spawn_egg", - "796": "minecraft:spider_spawn_egg", - "797": "minecraft:squid_spawn_egg", - "798": "minecraft:stray_spawn_egg", - "799": "minecraft:strider_spawn_egg", - "800": "minecraft:trader_llama_spawn_egg", - "801": "minecraft:tropical_fish_spawn_egg", - "802": "minecraft:turtle_spawn_egg", - "803": "minecraft:vex_spawn_egg", - "804": "minecraft:villager_spawn_egg", - "805": "minecraft:vindicator_spawn_egg", - "806": "minecraft:wandering_trader_spawn_egg", - "807": "minecraft:witch_spawn_egg", - "808": "minecraft:wither_skeleton_spawn_egg", - "809": "minecraft:wolf_spawn_egg", - "810": "minecraft:zoglin_spawn_egg", - "811": "minecraft:zombie_spawn_egg", - "812": "minecraft:zombie_horse_spawn_egg", - "813": "minecraft:zombified_piglin_spawn_egg", - "814": "minecraft:zombie_villager_spawn_egg", - "815": "minecraft:experience_bottle", - "816": "minecraft:fire_charge", - "817": "minecraft:writable_book", - "818": "minecraft:written_book", - "819": "minecraft:emerald", - "820": "minecraft:item_frame", - "821": "minecraft:flower_pot", - "822": "minecraft:carrot", - "823": "minecraft:potato", - "824": "minecraft:baked_potato", - "825": "minecraft:poisonous_potato", - "826": "minecraft:map", - "827": "minecraft:golden_carrot", - "828": "minecraft:skeleton_skull", - "829": "minecraft:wither_skeleton_skull", - "830": "minecraft:player_head", - "831": "minecraft:zombie_head", - "832": "minecraft:creeper_head", - "833": "minecraft:dragon_head", - "834": "minecraft:carrot_on_a_stick", - "835": "minecraft:warped_fungus_on_a_stick", - "836": "minecraft:nether_star", - "837": "minecraft:pumpkin_pie", - "838": "minecraft:firework_rocket", - "839": "minecraft:firework_star", - "840": "minecraft:enchanted_book", - "841": "minecraft:nether_brick", - "842": "minecraft:quartz", - "843": "minecraft:tnt_minecart", - "844": "minecraft:hopper_minecart", - "845": "minecraft:prismarine_shard", - "846": "minecraft:prismarine_crystals", - "847": "minecraft:rabbit", - "848": "minecraft:cooked_rabbit", - "849": "minecraft:rabbit_stew", - "850": "minecraft:rabbit_foot", - "851": "minecraft:rabbit_hide", - "852": "minecraft:armor_stand", - "853": "minecraft:iron_horse_armor", - "854": "minecraft:golden_horse_armor", - "855": "minecraft:diamond_horse_armor", - "856": "minecraft:leather_horse_armor", - "857": "minecraft:lead", - "858": "minecraft:name_tag", - "859": "minecraft:command_block_minecart", - "860": "minecraft:mutton", - "861": "minecraft:cooked_mutton", - "862": "minecraft:white_banner", - "863": "minecraft:orange_banner", - "864": "minecraft:magenta_banner", - "865": "minecraft:light_blue_banner", - "866": "minecraft:yellow_banner", - "867": "minecraft:lime_banner", - "868": "minecraft:pink_banner", - "869": "minecraft:gray_banner", - "870": "minecraft:light_gray_banner", - "871": "minecraft:cyan_banner", - "872": "minecraft:purple_banner", - "873": "minecraft:blue_banner", - "874": "minecraft:brown_banner", - "875": "minecraft:green_banner", - "876": "minecraft:red_banner", - "877": "minecraft:black_banner", - "878": "minecraft:end_crystal", - "879": "minecraft:chorus_fruit", - "880": "minecraft:popped_chorus_fruit", - "881": "minecraft:beetroot", - "882": "minecraft:beetroot_seeds", - "883": "minecraft:beetroot_soup", - "884": "minecraft:dragon_breath", - "885": "minecraft:splash_potion", - "886": "minecraft:spectral_arrow", - "887": "minecraft:tipped_arrow", - "888": "minecraft:lingering_potion", - "889": "minecraft:shield", - "890": "minecraft:elytra", - "891": "minecraft:spruce_boat", - "892": "minecraft:birch_boat", - "893": "minecraft:jungle_boat", - "894": "minecraft:acacia_boat", - "895": "minecraft:dark_oak_boat", - "896": "minecraft:totem_of_undying", - "897": "minecraft:shulker_shell", - "898": "minecraft:iron_nugget", - "899": "minecraft:knowledge_book", - "900": "minecraft:debug_stick", - "901": "minecraft:music_disc_13", - "902": "minecraft:music_disc_cat", - "903": "minecraft:music_disc_blocks", - "904": "minecraft:music_disc_chirp", - "905": "minecraft:music_disc_far", - "906": "minecraft:music_disc_mall", - "907": "minecraft:music_disc_mellohi", - "908": "minecraft:music_disc_stal", - "909": "minecraft:music_disc_strad", - "910": "minecraft:music_disc_ward", - "911": "minecraft:music_disc_11", - "912": "minecraft:music_disc_wait", - "913": "minecraft:music_disc_pigstep", - "914": "minecraft:trident", - "915": "minecraft:phantom_membrane", - "916": "minecraft:nautilus_shell", - "917": "minecraft:heart_of_the_sea", - "918": "minecraft:crossbow", - "919": "minecraft:suspicious_stew", - "920": "minecraft:loom", - "921": "minecraft:flower_banner_pattern", - "922": "minecraft:creeper_banner_pattern", - "923": "minecraft:skull_banner_pattern", - "924": "minecraft:mojang_banner_pattern", - "925": "minecraft:globe_banner_pattern", - "926": "minecraft:piglin_banner_pattern", - "927": "minecraft:composter", - "928": "minecraft:barrel", - "929": "minecraft:smoker", - "930": "minecraft:blast_furnace", - "931": "minecraft:cartography_table", - "932": "minecraft:fletching_table", - "933": "minecraft:grindstone", - "934": "minecraft:lectern", - "935": "minecraft:smithing_table", - "936": "minecraft:stonecutter", - "937": "minecraft:bell", - "938": "minecraft:lantern", - "939": "minecraft:soul_fire_lantern", - "940": "minecraft:sweet_berries", - "941": "minecraft:campfire", - "942": "minecraft:soul_campfire", - "943": "minecraft:shroomlight", - "944": "minecraft:honeycomb", - "945": "minecraft:bee_nest", - "946": "minecraft:beehive", - "947": "minecraft:honey_bottle", - "948": "minecraft:honey_block", - "949": "minecraft:honeycomb_block", - "950": "minecraft:lodestone", - "951": "minecraft:netherite_block", - "952": "minecraft:ancient_debris", - "953": "minecraft:netherite_ingot", - "954": "minecraft:netherite_scrap", - "955": "minecraft:target", - "956": "minecraft:crying_obsidian", - "957": "minecraft:blackstone", - "958": "minecraft:blackstone_slab", - "959": "minecraft:blackstone_stairs", - "960": "minecraft:blackstone_wall", - "961": "minecraft:gilded_blackstone", - "962": "minecraft:polished_blackstone", - "963": "minecraft:polished_blackstone_slab", - "964": "minecraft:polished_blackstone_stairs", - "965": "minecraft:polished_blackstone_wall", - "966": "minecraft:polished_blackstone_button", - "967": "minecraft:polished_blackstone_pressure_plate", - "968": "minecraft:chiseled_polished_blackstone", - "969": "minecraft:polished_blackstone_bricks", - "970": "minecraft:polished_blackstone_brick_slab", - "971": "minecraft:polished_blackstone_brick_stairs", - "972": "minecraft:polished_blackstone_brick_wall", + "301": "minecraft:blackstone_wall", + "302": "minecraft:polished_blackstone_wall", + "303": "minecraft:polished_blackstone_brick_wall", + "304": "minecraft:stone_button", + "305": "minecraft:oak_button", + "306": "minecraft:spruce_button", + "307": "minecraft:birch_button", + "308": "minecraft:jungle_button", + "309": "minecraft:acacia_button", + "310": "minecraft:dark_oak_button", + "311": "minecraft:crimson_button", + "312": "minecraft:warped_button", + "313": "minecraft:polished_blackstone_button", + "314": "minecraft:anvil", + "315": "minecraft:chipped_anvil", + "316": "minecraft:damaged_anvil", + "317": "minecraft:trapped_chest", + "318": "minecraft:light_weighted_pressure_plate", + "319": "minecraft:heavy_weighted_pressure_plate", + "320": "minecraft:daylight_detector", + "321": "minecraft:redstone_block", + "322": "minecraft:nether_quartz_ore", + "323": "minecraft:hopper", + "324": "minecraft:chiseled_quartz_block", + "325": "minecraft:quartz_block", + "326": "minecraft:quartz_bricks", + "327": "minecraft:quartz_pillar", + "328": "minecraft:quartz_stairs", + "329": "minecraft:activator_rail", + "330": "minecraft:dropper", + "331": "minecraft:white_terracotta", + "332": "minecraft:orange_terracotta", + "333": "minecraft:magenta_terracotta", + "334": "minecraft:light_blue_terracotta", + "335": "minecraft:yellow_terracotta", + "336": "minecraft:lime_terracotta", + "337": "minecraft:pink_terracotta", + "338": "minecraft:gray_terracotta", + "339": "minecraft:light_gray_terracotta", + "340": "minecraft:cyan_terracotta", + "341": "minecraft:purple_terracotta", + "342": "minecraft:blue_terracotta", + "343": "minecraft:brown_terracotta", + "344": "minecraft:green_terracotta", + "345": "minecraft:red_terracotta", + "346": "minecraft:black_terracotta", + "347": "minecraft:barrier", + "348": "minecraft:iron_trapdoor", + "349": "minecraft:hay_block", + "350": "minecraft:white_carpet", + "351": "minecraft:orange_carpet", + "352": "minecraft:magenta_carpet", + "353": "minecraft:light_blue_carpet", + "354": "minecraft:yellow_carpet", + "355": "minecraft:lime_carpet", + "356": "minecraft:pink_carpet", + "357": "minecraft:gray_carpet", + "358": "minecraft:light_gray_carpet", + "359": "minecraft:cyan_carpet", + "360": "minecraft:purple_carpet", + "361": "minecraft:blue_carpet", + "362": "minecraft:brown_carpet", + "363": "minecraft:green_carpet", + "364": "minecraft:red_carpet", + "365": "minecraft:black_carpet", + "366": "minecraft:terracotta", + "367": "minecraft:coal_block", + "368": "minecraft:packed_ice", + "369": "minecraft:acacia_stairs", + "370": "minecraft:dark_oak_stairs", + "371": "minecraft:slime_block", + "372": "minecraft:grass_path", + "373": "minecraft:sunflower", + "374": "minecraft:lilac", + "375": "minecraft:rose_bush", + "376": "minecraft:peony", + "377": "minecraft:tall_grass", + "378": "minecraft:large_fern", + "379": "minecraft:white_stained_glass", + "380": "minecraft:orange_stained_glass", + "381": "minecraft:magenta_stained_glass", + "382": "minecraft:light_blue_stained_glass", + "383": "minecraft:yellow_stained_glass", + "384": "minecraft:lime_stained_glass", + "385": "minecraft:pink_stained_glass", + "386": "minecraft:gray_stained_glass", + "387": "minecraft:light_gray_stained_glass", + "388": "minecraft:cyan_stained_glass", + "389": "minecraft:purple_stained_glass", + "390": "minecraft:blue_stained_glass", + "391": "minecraft:brown_stained_glass", + "392": "minecraft:green_stained_glass", + "393": "minecraft:red_stained_glass", + "394": "minecraft:black_stained_glass", + "395": "minecraft:white_stained_glass_pane", + "396": "minecraft:orange_stained_glass_pane", + "397": "minecraft:magenta_stained_glass_pane", + "398": "minecraft:light_blue_stained_glass_pane", + "399": "minecraft:yellow_stained_glass_pane", + "400": "minecraft:lime_stained_glass_pane", + "401": "minecraft:pink_stained_glass_pane", + "402": "minecraft:gray_stained_glass_pane", + "403": "minecraft:light_gray_stained_glass_pane", + "404": "minecraft:cyan_stained_glass_pane", + "405": "minecraft:purple_stained_glass_pane", + "406": "minecraft:blue_stained_glass_pane", + "407": "minecraft:brown_stained_glass_pane", + "408": "minecraft:green_stained_glass_pane", + "409": "minecraft:red_stained_glass_pane", + "410": "minecraft:black_stained_glass_pane", + "411": "minecraft:prismarine", + "412": "minecraft:prismarine_bricks", + "413": "minecraft:dark_prismarine", + "414": "minecraft:prismarine_stairs", + "415": "minecraft:prismarine_brick_stairs", + "416": "minecraft:dark_prismarine_stairs", + "417": "minecraft:sea_lantern", + "418": "minecraft:red_sandstone", + "419": "minecraft:chiseled_red_sandstone", + "420": "minecraft:cut_red_sandstone", + "421": "minecraft:red_sandstone_stairs", + "422": "minecraft:repeating_command_block", + "423": "minecraft:chain_command_block", + "424": "minecraft:magma_block", + "425": "minecraft:nether_wart_block", + "426": "minecraft:warped_wart_block", + "427": "minecraft:red_nether_bricks", + "428": "minecraft:bone_block", + "429": "minecraft:structure_void", + "430": "minecraft:observer", + "431": "minecraft:shulker_box", + "432": "minecraft:white_shulker_box", + "433": "minecraft:orange_shulker_box", + "434": "minecraft:magenta_shulker_box", + "435": "minecraft:light_blue_shulker_box", + "436": "minecraft:yellow_shulker_box", + "437": "minecraft:lime_shulker_box", + "438": "minecraft:pink_shulker_box", + "439": "minecraft:gray_shulker_box", + "440": "minecraft:light_gray_shulker_box", + "441": "minecraft:cyan_shulker_box", + "442": "minecraft:purple_shulker_box", + "443": "minecraft:blue_shulker_box", + "444": "minecraft:brown_shulker_box", + "445": "minecraft:green_shulker_box", + "446": "minecraft:red_shulker_box", + "447": "minecraft:black_shulker_box", + "448": "minecraft:white_glazed_terracotta", + "449": "minecraft:orange_glazed_terracotta", + "450": "minecraft:magenta_glazed_terracotta", + "451": "minecraft:light_blue_glazed_terracotta", + "452": "minecraft:yellow_glazed_terracotta", + "453": "minecraft:lime_glazed_terracotta", + "454": "minecraft:pink_glazed_terracotta", + "455": "minecraft:gray_glazed_terracotta", + "456": "minecraft:light_gray_glazed_terracotta", + "457": "minecraft:cyan_glazed_terracotta", + "458": "minecraft:purple_glazed_terracotta", + "459": "minecraft:blue_glazed_terracotta", + "460": "minecraft:brown_glazed_terracotta", + "461": "minecraft:green_glazed_terracotta", + "462": "minecraft:red_glazed_terracotta", + "463": "minecraft:black_glazed_terracotta", + "464": "minecraft:white_concrete", + "465": "minecraft:orange_concrete", + "466": "minecraft:magenta_concrete", + "467": "minecraft:light_blue_concrete", + "468": "minecraft:yellow_concrete", + "469": "minecraft:lime_concrete", + "470": "minecraft:pink_concrete", + "471": "minecraft:gray_concrete", + "472": "minecraft:light_gray_concrete", + "473": "minecraft:cyan_concrete", + "474": "minecraft:purple_concrete", + "475": "minecraft:blue_concrete", + "476": "minecraft:brown_concrete", + "477": "minecraft:green_concrete", + "478": "minecraft:red_concrete", + "479": "minecraft:black_concrete", + "480": "minecraft:white_concrete_powder", + "481": "minecraft:orange_concrete_powder", + "482": "minecraft:magenta_concrete_powder", + "483": "minecraft:light_blue_concrete_powder", + "484": "minecraft:yellow_concrete_powder", + "485": "minecraft:lime_concrete_powder", + "486": "minecraft:pink_concrete_powder", + "487": "minecraft:gray_concrete_powder", + "488": "minecraft:light_gray_concrete_powder", + "489": "minecraft:cyan_concrete_powder", + "490": "minecraft:purple_concrete_powder", + "491": "minecraft:blue_concrete_powder", + "492": "minecraft:brown_concrete_powder", + "493": "minecraft:green_concrete_powder", + "494": "minecraft:red_concrete_powder", + "495": "minecraft:black_concrete_powder", + "496": "minecraft:turtle_egg", + "497": "minecraft:dead_tube_coral_block", + "498": "minecraft:dead_brain_coral_block", + "499": "minecraft:dead_bubble_coral_block", + "500": "minecraft:dead_fire_coral_block", + "501": "minecraft:dead_horn_coral_block", + "502": "minecraft:tube_coral_block", + "503": "minecraft:brain_coral_block", + "504": "minecraft:bubble_coral_block", + "505": "minecraft:fire_coral_block", + "506": "minecraft:horn_coral_block", + "507": "minecraft:tube_coral", + "508": "minecraft:brain_coral", + "509": "minecraft:bubble_coral", + "510": "minecraft:fire_coral", + "511": "minecraft:horn_coral", + "512": "minecraft:dead_brain_coral", + "513": "minecraft:dead_bubble_coral", + "514": "minecraft:dead_fire_coral", + "515": "minecraft:dead_horn_coral", + "516": "minecraft:dead_tube_coral", + "517": "minecraft:tube_coral_fan", + "518": "minecraft:brain_coral_fan", + "519": "minecraft:bubble_coral_fan", + "520": "minecraft:fire_coral_fan", + "521": "minecraft:horn_coral_fan", + "522": "minecraft:dead_tube_coral_fan", + "523": "minecraft:dead_brain_coral_fan", + "524": "minecraft:dead_bubble_coral_fan", + "525": "minecraft:dead_fire_coral_fan", + "526": "minecraft:dead_horn_coral_fan", + "527": "minecraft:blue_ice", + "528": "minecraft:conduit", + "529": "minecraft:polished_granite_stairs", + "530": "minecraft:smooth_red_sandstone_stairs", + "531": "minecraft:mossy_stone_brick_stairs", + "532": "minecraft:polished_diorite_stairs", + "533": "minecraft:mossy_cobblestone_stairs", + "534": "minecraft:end_stone_brick_stairs", + "535": "minecraft:stone_stairs", + "536": "minecraft:smooth_sandstone_stairs", + "537": "minecraft:smooth_quartz_stairs", + "538": "minecraft:granite_stairs", + "539": "minecraft:andesite_stairs", + "540": "minecraft:red_nether_brick_stairs", + "541": "minecraft:polished_andesite_stairs", + "542": "minecraft:diorite_stairs", + "543": "minecraft:polished_granite_slab", + "544": "minecraft:smooth_red_sandstone_slab", + "545": "minecraft:mossy_stone_brick_slab", + "546": "minecraft:polished_diorite_slab", + "547": "minecraft:mossy_cobblestone_slab", + "548": "minecraft:end_stone_brick_slab", + "549": "minecraft:smooth_sandstone_slab", + "550": "minecraft:smooth_quartz_slab", + "551": "minecraft:granite_slab", + "552": "minecraft:andesite_slab", + "553": "minecraft:red_nether_brick_slab", + "554": "minecraft:polished_andesite_slab", + "555": "minecraft:diorite_slab", + "556": "minecraft:scaffolding", + "557": "minecraft:iron_door", + "558": "minecraft:oak_door", + "559": "minecraft:spruce_door", + "560": "minecraft:birch_door", + "561": "minecraft:jungle_door", + "562": "minecraft:acacia_door", + "563": "minecraft:dark_oak_door", + "564": "minecraft:crimson_door", + "565": "minecraft:warped_door", + "566": "minecraft:repeater", + "567": "minecraft:comparator", + "568": "minecraft:structure_block", + "569": "minecraft:jigsaw", + "570": "minecraft:turtle_helmet", + "571": "minecraft:scute", + "572": "minecraft:iron_shovel", + "573": "minecraft:iron_pickaxe", + "574": "minecraft:iron_axe", + "575": "minecraft:flint_and_steel", + "576": "minecraft:apple", + "577": "minecraft:bow", + "578": "minecraft:arrow", + "579": "minecraft:coal", + "580": "minecraft:charcoal", + "581": "minecraft:diamond", + "582": "minecraft:iron_ingot", + "583": "minecraft:gold_ingot", + "584": "minecraft:netherite_ingot", + "585": "minecraft:netherite_scrap", + "586": "minecraft:iron_sword", + "587": "minecraft:wooden_sword", + "588": "minecraft:wooden_shovel", + "589": "minecraft:wooden_pickaxe", + "590": "minecraft:wooden_axe", + "591": "minecraft:stone_sword", + "592": "minecraft:stone_shovel", + "593": "minecraft:stone_pickaxe", + "594": "minecraft:stone_axe", + "595": "minecraft:diamond_sword", + "596": "minecraft:diamond_shovel", + "597": "minecraft:diamond_pickaxe", + "598": "minecraft:diamond_axe", + "599": "minecraft:stick", + "600": "minecraft:bowl", + "601": "minecraft:mushroom_stew", + "602": "minecraft:golden_sword", + "603": "minecraft:golden_shovel", + "604": "minecraft:golden_pickaxe", + "605": "minecraft:golden_axe", + "606": "minecraft:netherite_sword", + "607": "minecraft:netherite_shovel", + "608": "minecraft:netherite_pickaxe", + "609": "minecraft:netherite_axe", + "610": "minecraft:string", + "611": "minecraft:feather", + "612": "minecraft:gunpowder", + "613": "minecraft:wooden_hoe", + "614": "minecraft:stone_hoe", + "615": "minecraft:iron_hoe", + "616": "minecraft:diamond_hoe", + "617": "minecraft:golden_hoe", + "618": "minecraft:netherite_hoe", + "619": "minecraft:wheat_seeds", + "620": "minecraft:wheat", + "621": "minecraft:bread", + "622": "minecraft:leather_helmet", + "623": "minecraft:leather_chestplate", + "624": "minecraft:leather_leggings", + "625": "minecraft:leather_boots", + "626": "minecraft:chainmail_helmet", + "627": "minecraft:chainmail_chestplate", + "628": "minecraft:chainmail_leggings", + "629": "minecraft:chainmail_boots", + "630": "minecraft:iron_helmet", + "631": "minecraft:iron_chestplate", + "632": "minecraft:iron_leggings", + "633": "minecraft:iron_boots", + "634": "minecraft:diamond_helmet", + "635": "minecraft:diamond_chestplate", + "636": "minecraft:diamond_leggings", + "637": "minecraft:diamond_boots", + "638": "minecraft:golden_helmet", + "639": "minecraft:golden_chestplate", + "640": "minecraft:golden_leggings", + "641": "minecraft:golden_boots", + "642": "minecraft:netherite_helmet", + "643": "minecraft:netherite_chestplate", + "644": "minecraft:netherite_leggings", + "645": "minecraft:netherite_boots", + "646": "minecraft:flint", + "647": "minecraft:porkchop", + "648": "minecraft:cooked_porkchop", + "649": "minecraft:painting", + "650": "minecraft:golden_apple", + "651": "minecraft:enchanted_golden_apple", + "652": "minecraft:oak_sign", + "653": "minecraft:spruce_sign", + "654": "minecraft:birch_sign", + "655": "minecraft:jungle_sign", + "656": "minecraft:acacia_sign", + "657": "minecraft:dark_oak_sign", + "658": "minecraft:crimson_sign", + "659": "minecraft:warped_sign", + "660": "minecraft:bucket", + "661": "minecraft:water_bucket", + "662": "minecraft:lava_bucket", + "663": "minecraft:minecart", + "664": "minecraft:saddle", + "665": "minecraft:redstone", + "666": "minecraft:snowball", + "667": "minecraft:oak_boat", + "668": "minecraft:leather", + "669": "minecraft:milk_bucket", + "670": "minecraft:pufferfish_bucket", + "671": "minecraft:salmon_bucket", + "672": "minecraft:cod_bucket", + "673": "minecraft:tropical_fish_bucket", + "674": "minecraft:brick", + "675": "minecraft:clay_ball", + "676": "minecraft:dried_kelp_block", + "677": "minecraft:paper", + "678": "minecraft:book", + "679": "minecraft:slime_ball", + "680": "minecraft:chest_minecart", + "681": "minecraft:furnace_minecart", + "682": "minecraft:egg", + "683": "minecraft:compass", + "684": "minecraft:fishing_rod", + "685": "minecraft:clock", + "686": "minecraft:glowstone_dust", + "687": "minecraft:cod", + "688": "minecraft:salmon", + "689": "minecraft:tropical_fish", + "690": "minecraft:pufferfish", + "691": "minecraft:cooked_cod", + "692": "minecraft:cooked_salmon", + "693": "minecraft:ink_sac", + "694": "minecraft:red_dye", + "695": "minecraft:green_dye", + "696": "minecraft:cocoa_beans", + "697": "minecraft:lapis_lazuli", + "698": "minecraft:purple_dye", + "699": "minecraft:cyan_dye", + "700": "minecraft:light_gray_dye", + "701": "minecraft:gray_dye", + "702": "minecraft:pink_dye", + "703": "minecraft:lime_dye", + "704": "minecraft:yellow_dye", + "705": "minecraft:light_blue_dye", + "706": "minecraft:magenta_dye", + "707": "minecraft:orange_dye", + "708": "minecraft:bone_meal", + "709": "minecraft:blue_dye", + "710": "minecraft:brown_dye", + "711": "minecraft:black_dye", + "712": "minecraft:white_dye", + "713": "minecraft:bone", + "714": "minecraft:sugar", + "715": "minecraft:cake", + "716": "minecraft:white_bed", + "717": "minecraft:orange_bed", + "718": "minecraft:magenta_bed", + "719": "minecraft:light_blue_bed", + "720": "minecraft:yellow_bed", + "721": "minecraft:lime_bed", + "722": "minecraft:pink_bed", + "723": "minecraft:gray_bed", + "724": "minecraft:light_gray_bed", + "725": "minecraft:cyan_bed", + "726": "minecraft:purple_bed", + "727": "minecraft:blue_bed", + "728": "minecraft:brown_bed", + "729": "minecraft:green_bed", + "730": "minecraft:red_bed", + "731": "minecraft:black_bed", + "732": "minecraft:cookie", + "733": "minecraft:filled_map", + "734": "minecraft:shears", + "735": "minecraft:melon_slice", + "736": "minecraft:dried_kelp", + "737": "minecraft:pumpkin_seeds", + "738": "minecraft:melon_seeds", + "739": "minecraft:beef", + "740": "minecraft:cooked_beef", + "741": "minecraft:chicken", + "742": "minecraft:cooked_chicken", + "743": "minecraft:rotten_flesh", + "744": "minecraft:ender_pearl", + "745": "minecraft:blaze_rod", + "746": "minecraft:ghast_tear", + "747": "minecraft:gold_nugget", + "748": "minecraft:nether_wart", + "749": "minecraft:potion", + "750": "minecraft:glass_bottle", + "751": "minecraft:spider_eye", + "752": "minecraft:fermented_spider_eye", + "753": "minecraft:blaze_powder", + "754": "minecraft:magma_cream", + "755": "minecraft:brewing_stand", + "756": "minecraft:cauldron", + "757": "minecraft:ender_eye", + "758": "minecraft:glistering_melon_slice", + "759": "minecraft:bat_spawn_egg", + "760": "minecraft:bee_spawn_egg", + "761": "minecraft:blaze_spawn_egg", + "762": "minecraft:cat_spawn_egg", + "763": "minecraft:cave_spider_spawn_egg", + "764": "minecraft:chicken_spawn_egg", + "765": "minecraft:cod_spawn_egg", + "766": "minecraft:cow_spawn_egg", + "767": "minecraft:creeper_spawn_egg", + "768": "minecraft:dolphin_spawn_egg", + "769": "minecraft:donkey_spawn_egg", + "770": "minecraft:drowned_spawn_egg", + "771": "minecraft:elder_guardian_spawn_egg", + "772": "minecraft:enderman_spawn_egg", + "773": "minecraft:endermite_spawn_egg", + "774": "minecraft:evoker_spawn_egg", + "775": "minecraft:fox_spawn_egg", + "776": "minecraft:ghast_spawn_egg", + "777": "minecraft:guardian_spawn_egg", + "778": "minecraft:hoglin_spawn_egg", + "779": "minecraft:horse_spawn_egg", + "780": "minecraft:husk_spawn_egg", + "781": "minecraft:llama_spawn_egg", + "782": "minecraft:magma_cube_spawn_egg", + "783": "minecraft:mooshroom_spawn_egg", + "784": "minecraft:mule_spawn_egg", + "785": "minecraft:ocelot_spawn_egg", + "786": "minecraft:panda_spawn_egg", + "787": "minecraft:parrot_spawn_egg", + "788": "minecraft:phantom_spawn_egg", + "789": "minecraft:pig_spawn_egg", + "790": "minecraft:piglin_spawn_egg", + "791": "minecraft:pillager_spawn_egg", + "792": "minecraft:polar_bear_spawn_egg", + "793": "minecraft:pufferfish_spawn_egg", + "794": "minecraft:rabbit_spawn_egg", + "795": "minecraft:ravager_spawn_egg", + "796": "minecraft:salmon_spawn_egg", + "797": "minecraft:sheep_spawn_egg", + "798": "minecraft:shulker_spawn_egg", + "799": "minecraft:silverfish_spawn_egg", + "800": "minecraft:skeleton_spawn_egg", + "801": "minecraft:skeleton_horse_spawn_egg", + "802": "minecraft:slime_spawn_egg", + "803": "minecraft:spider_spawn_egg", + "804": "minecraft:squid_spawn_egg", + "805": "minecraft:stray_spawn_egg", + "806": "minecraft:strider_spawn_egg", + "807": "minecraft:trader_llama_spawn_egg", + "808": "minecraft:tropical_fish_spawn_egg", + "809": "minecraft:turtle_spawn_egg", + "810": "minecraft:vex_spawn_egg", + "811": "minecraft:villager_spawn_egg", + "812": "minecraft:vindicator_spawn_egg", + "813": "minecraft:wandering_trader_spawn_egg", + "814": "minecraft:witch_spawn_egg", + "815": "minecraft:wither_skeleton_spawn_egg", + "816": "minecraft:wolf_spawn_egg", + "817": "minecraft:zoglin_spawn_egg", + "818": "minecraft:zombie_spawn_egg", + "819": "minecraft:zombie_horse_spawn_egg", + "820": "minecraft:zombified_piglin_spawn_egg", + "821": "minecraft:zombie_villager_spawn_egg", + "822": "minecraft:experience_bottle", + "823": "minecraft:fire_charge", + "824": "minecraft:writable_book", + "825": "minecraft:written_book", + "826": "minecraft:emerald", + "827": "minecraft:item_frame", + "828": "minecraft:flower_pot", + "829": "minecraft:carrot", + "830": "minecraft:potato", + "831": "minecraft:baked_potato", + "832": "minecraft:poisonous_potato", + "833": "minecraft:map", + "834": "minecraft:golden_carrot", + "835": "minecraft:skeleton_skull", + "836": "minecraft:wither_skeleton_skull", + "837": "minecraft:player_head", + "838": "minecraft:zombie_head", + "839": "minecraft:creeper_head", + "840": "minecraft:dragon_head", + "841": "minecraft:carrot_on_a_stick", + "842": "minecraft:warped_fungus_on_a_stick", + "843": "minecraft:nether_star", + "844": "minecraft:pumpkin_pie", + "845": "minecraft:firework_rocket", + "846": "minecraft:firework_star", + "847": "minecraft:enchanted_book", + "848": "minecraft:nether_brick", + "849": "minecraft:quartz", + "850": "minecraft:tnt_minecart", + "851": "minecraft:hopper_minecart", + "852": "minecraft:prismarine_shard", + "853": "minecraft:prismarine_crystals", + "854": "minecraft:rabbit", + "855": "minecraft:cooked_rabbit", + "856": "minecraft:rabbit_stew", + "857": "minecraft:rabbit_foot", + "858": "minecraft:rabbit_hide", + "859": "minecraft:armor_stand", + "860": "minecraft:iron_horse_armor", + "861": "minecraft:golden_horse_armor", + "862": "minecraft:diamond_horse_armor", + "863": "minecraft:leather_horse_armor", + "864": "minecraft:lead", + "865": "minecraft:name_tag", + "866": "minecraft:command_block_minecart", + "867": "minecraft:mutton", + "868": "minecraft:cooked_mutton", + "869": "minecraft:white_banner", + "870": "minecraft:orange_banner", + "871": "minecraft:magenta_banner", + "872": "minecraft:light_blue_banner", + "873": "minecraft:yellow_banner", + "874": "minecraft:lime_banner", + "875": "minecraft:pink_banner", + "876": "minecraft:gray_banner", + "877": "minecraft:light_gray_banner", + "878": "minecraft:cyan_banner", + "879": "minecraft:purple_banner", + "880": "minecraft:blue_banner", + "881": "minecraft:brown_banner", + "882": "minecraft:green_banner", + "883": "minecraft:red_banner", + "884": "minecraft:black_banner", + "885": "minecraft:end_crystal", + "886": "minecraft:chorus_fruit", + "887": "minecraft:popped_chorus_fruit", + "888": "minecraft:beetroot", + "889": "minecraft:beetroot_seeds", + "890": "minecraft:beetroot_soup", + "891": "minecraft:dragon_breath", + "892": "minecraft:splash_potion", + "893": "minecraft:spectral_arrow", + "894": "minecraft:tipped_arrow", + "895": "minecraft:lingering_potion", + "896": "minecraft:shield", + "897": "minecraft:elytra", + "898": "minecraft:spruce_boat", + "899": "minecraft:birch_boat", + "900": "minecraft:jungle_boat", + "901": "minecraft:acacia_boat", + "902": "minecraft:dark_oak_boat", + "903": "minecraft:totem_of_undying", + "904": "minecraft:shulker_shell", + "905": "minecraft:iron_nugget", + "906": "minecraft:knowledge_book", + "907": "minecraft:debug_stick", + "908": "minecraft:music_disc_13", + "909": "minecraft:music_disc_cat", + "910": "minecraft:music_disc_blocks", + "911": "minecraft:music_disc_chirp", + "912": "minecraft:music_disc_far", + "913": "minecraft:music_disc_mall", + "914": "minecraft:music_disc_mellohi", + "915": "minecraft:music_disc_stal", + "916": "minecraft:music_disc_strad", + "917": "minecraft:music_disc_ward", + "918": "minecraft:music_disc_11", + "919": "minecraft:music_disc_wait", + "920": "minecraft:music_disc_pigstep", + "921": "minecraft:trident", + "922": "minecraft:phantom_membrane", + "923": "minecraft:nautilus_shell", + "924": "minecraft:heart_of_the_sea", + "925": "minecraft:crossbow", + "926": "minecraft:suspicious_stew", + "927": "minecraft:loom", + "928": "minecraft:flower_banner_pattern", + "929": "minecraft:creeper_banner_pattern", + "930": "minecraft:skull_banner_pattern", + "931": "minecraft:mojang_banner_pattern", + "932": "minecraft:globe_banner_pattern", + "933": "minecraft:piglin_banner_pattern", + "934": "minecraft:composter", + "935": "minecraft:barrel", + "936": "minecraft:smoker", + "937": "minecraft:blast_furnace", + "938": "minecraft:cartography_table", + "939": "minecraft:fletching_table", + "940": "minecraft:grindstone", + "941": "minecraft:lectern", + "942": "minecraft:smithing_table", + "943": "minecraft:stonecutter", + "944": "minecraft:bell", + "945": "minecraft:lantern", + "946": "minecraft:soul_lantern", + "947": "minecraft:sweet_berries", + "948": "minecraft:campfire", + "949": "minecraft:soul_campfire", + "950": "minecraft:shroomlight", + "951": "minecraft:honeycomb", + "952": "minecraft:bee_nest", + "953": "minecraft:beehive", + "954": "minecraft:honey_bottle", + "955": "minecraft:honey_block", + "956": "minecraft:honeycomb_block", + "957": "minecraft:lodestone", + "958": "minecraft:netherite_block", + "959": "minecraft:ancient_debris", + "960": "minecraft:target", + "961": "minecraft:crying_obsidian", + "962": "minecraft:blackstone", + "963": "minecraft:blackstone_slab", + "964": "minecraft:blackstone_stairs", + "965": "minecraft:gilded_blackstone", + "966": "minecraft:polished_blackstone", + "967": "minecraft:polished_blackstone_slab", + "968": "minecraft:polished_blackstone_stairs", + "969": "minecraft:chiseled_polished_blackstone", + "970": "minecraft:polished_blackstone_bricks", + "971": "minecraft:polished_blackstone_brick_slab", + "972": "minecraft:polished_blackstone_brick_stairs", "973": "minecraft:cracked_polished_blackstone_bricks", "974": "minecraft:respawn_anchor" }, @@ -18976,6 +18976,11 @@ "entity.cat.hurt", "entity.cat.purr", "entity.cat.purreow", + "block.chain.break", + "block.chain.fall", + "block.chain.hit", + "block.chain.place", + "block.chain.step", "block.chest.close", "block.chest.locked", "block.chest.open", @@ -19149,6 +19154,11 @@ "entity.ghast.scream", "entity.ghast.shoot", "entity.ghast.warn", + "block.gilded_blackstone.break", + "block.gilded_blackstone.fall", + "block.gilded_blackstone.hit", + "block.gilded_blackstone.place", + "block.gilded_blackstone.step", "block.glass.break", "block.glass.fall", "block.glass.hit", @@ -19511,6 +19521,11 @@ "entity.ravager.step", "entity.ravager.stunned", "entity.ravager.roar", + "block.nether_gold_ore.break", + "block.nether_gold_ore.fall", + "block.nether_gold_ore.hit", + "block.nether_gold_ore.place", + "block.nether_gold_ore.step", "block.nether_ore.break", "block.nether_ore.fall", "block.nether_ore.hit",