diff --git a/pom.xml b/pom.xml index d001512..b606ca3 100644 --- a/pom.xml +++ b/pom.xml @@ -24,7 +24,7 @@ com.loohp Limbo Limbo - 0.6.21-ALPHA + 0.7.0-ALPHA Standalone Limbo Minecraft Server. https://github.com/LOOHP/Limbo diff --git a/src/main/java/com/loohp/limbo/Limbo.java b/src/main/java/com/loohp/limbo/Limbo.java index 5eeb82a..30e8213 100644 --- a/src/main/java/com/loohp/limbo/Limbo.java +++ b/src/main/java/com/loohp/limbo/Limbo.java @@ -27,6 +27,10 @@ import com.loohp.limbo.commands.DefaultCommands; import com.loohp.limbo.consolegui.GUI; import com.loohp.limbo.events.EventsManager; import com.loohp.limbo.file.ServerProperties; +import com.loohp.limbo.inventory.CustomInventory; +import com.loohp.limbo.inventory.Inventory; +import com.loohp.limbo.inventory.InventoryHolder; +import com.loohp.limbo.inventory.InventoryType; import com.loohp.limbo.location.Location; import com.loohp.limbo.metrics.Metrics; import com.loohp.limbo.network.ServerConnection; @@ -435,15 +439,15 @@ public final class Limbo { } public KeyedBossBar createBossBar(Key Key, Component name, float progress, BossBar.Color color, BossBar.Overlay overlay, BossBar.Flag... flags) { - KeyedBossBar keyedBossBar = com.loohp.limbo.bossbar.Unsafe.create(Key, BossBar.bossBar(name, progress, color, overlay, new HashSet<>(Arrays.asList(flags)))); + KeyedBossBar keyedBossBar = com.loohp.limbo.bossbar.Unsafe.a(Key, BossBar.bossBar(name, progress, color, overlay, new HashSet<>(Arrays.asList(flags)))); bossBars.put(Key, keyedBossBar); return keyedBossBar; } public void removeBossBar(Key Key) { KeyedBossBar keyedBossBar = bossBars.remove(Key); - keyedBossBar.getProperties().removeListener(keyedBossBar.getUnsafe().getLimboListener()); - keyedBossBar.getUnsafe().invalidate(); + keyedBossBar.getProperties().removeListener(keyedBossBar.getUnsafe().a()); + keyedBossBar.getUnsafe().b(); PacketPlayOutBoss packetPlayOutBoss = new PacketPlayOutBoss(keyedBossBar, PacketPlayOutBoss.BossBarAction.REMOVE); for (Player player : keyedBossBar.getPlayers()) { try { @@ -578,11 +582,7 @@ public final class Limbo { } public int getNextEntityId() { - if (entityIdCount.get() == Integer.MAX_VALUE) { - return entityIdCount.getAndSet(0); - } else { - return entityIdCount.getAndIncrement(); - } + return entityIdCount.getAndUpdate(i -> i == Integer.MAX_VALUE ? 0 : ++i); } public void dispatchCommand(CommandSender sender, String str) { @@ -607,14 +607,26 @@ public final class Limbo { Enumeration manifests = getClass().getClassLoader().getResources("META-INF/MANIFEST.MF"); while (manifests.hasMoreElements()) { URL url = manifests.nextElement(); - BufferedReader br = new BufferedReader(new InputStreamReader(url.openStream())); - Optional line = br.lines().filter(each -> each.startsWith("Limbo-Version:")).findFirst(); - br.close(); - if (line.isPresent()) { - return line.get().substring(14).trim(); + try (BufferedReader br = new BufferedReader(new InputStreamReader(url.openStream()))) { + Optional line = br.lines().filter(each -> each.startsWith("Limbo-Version:")).findFirst(); + if (line.isPresent()) { + return line.get().substring(14).trim(); + } } } return "Unknown"; } + public Inventory createInventory(Component title, int slots, InventoryHolder holder) { + return CustomInventory.create(title, slots, holder); + } + + public Inventory createInventory(InventoryType type, InventoryHolder holder) { + return createInventory(null, type, holder); + } + + public Inventory createInventory(Component title, InventoryType type, InventoryHolder holder) { + throw new UnsupportedOperationException("This function has not been implemented yet."); + } + } diff --git a/src/main/java/com/loohp/limbo/Unsafe.java b/src/main/java/com/loohp/limbo/Unsafe.java index 6ffccd9..13a42f0 100644 --- a/src/main/java/com/loohp/limbo/Unsafe.java +++ b/src/main/java/com/loohp/limbo/Unsafe.java @@ -52,43 +52,43 @@ public class Unsafe { } @Deprecated - public void setPlayerGameModeSilently(Player player, GameMode mode) { + public void a(Player player, GameMode mode) { playerUnsafe.a(player, mode); } @Deprecated - public void setSelectedSlotSilently(Player player, byte slot) { + public void a(Player player, byte slot) { playerUnsafe.a(player, slot); } @Deprecated - public void setPlayerEntityId(Player player, int entityId) { + public void a(Player player, int entityId) { playerUnsafe.a(player, entityId); } @Deprecated - public void removeEntity(World world, Entity entity) { + public void a(World world, Entity entity) { worldUnsafe.a(world, entity); } @Deprecated - public DataWatcher getDataWatcher(World world, Entity entity) { + public DataWatcher b(World world, Entity entity) { return worldUnsafe.b(world, entity); } @Deprecated - public void setPlayerLocationSilently(Player player, Location location) { + public void a(Player player, Location location) { playerUnsafe.a(player, location); } @Deprecated - public void addPlayer(Player player) { + public void a(Player player) { instance.playersByName.put(player.getName(), player); instance.playersByUUID.put(player.getUniqueId(), player); } @Deprecated - public void removePlayer(Player player) { + public void b(Player player) { instance.getBossBars().values().forEach(each -> each.hidePlayer(player)); instance.playersByName.remove(player.getName()); instance.playersByUUID.remove(player.getUniqueId()); diff --git a/src/main/java/com/loohp/limbo/bossbar/Unsafe.java b/src/main/java/com/loohp/limbo/bossbar/Unsafe.java index cec8045..77ca8a4 100644 --- a/src/main/java/com/loohp/limbo/bossbar/Unsafe.java +++ b/src/main/java/com/loohp/limbo/bossbar/Unsafe.java @@ -27,7 +27,7 @@ import net.kyori.adventure.key.Key; public class Unsafe { @Deprecated - public static KeyedBossBar create(Key key, BossBar properties) { + public static KeyedBossBar a(Key key, BossBar properties) { return new KeyedBossBar(key, properties); } @@ -38,12 +38,12 @@ public class Unsafe { } @Deprecated - public KeyedBossBar.LimboBossBarHandler getLimboListener() { + public KeyedBossBar.LimboBossBarHandler a() { return instance.listener; } @Deprecated - public void invalidate() { + public void b() { instance.valid.set(false); } diff --git a/src/main/java/com/loohp/limbo/entity/ArmorStand.java b/src/main/java/com/loohp/limbo/entity/ArmorStand.java index 869fecd..609565b 100644 --- a/src/main/java/com/loohp/limbo/entity/ArmorStand.java +++ b/src/main/java/com/loohp/limbo/entity/ArmorStand.java @@ -150,5 +150,4 @@ public class ArmorStand extends LivingEntity { public void setRightLegRotation(Rotation3f rightLegRotation) { this.rightLegRotation = rightLegRotation; } - } diff --git a/src/main/java/com/loohp/limbo/entity/Entity.java b/src/main/java/com/loohp/limbo/entity/Entity.java index 2b3b53c..837fec4 100644 --- a/src/main/java/com/loohp/limbo/entity/Entity.java +++ b/src/main/java/com/loohp/limbo/entity/Entity.java @@ -301,12 +301,12 @@ public abstract class Entity implements Sound.Emitter { @SuppressWarnings("deprecation") public void remove() { - Limbo.getInstance().getUnsafe().removeEntity(world, this); + Limbo.getInstance().getUnsafe().a(world, this); } @SuppressWarnings("deprecation") public DataWatcher getDataWatcher() { - return Limbo.getInstance().getUnsafe().getDataWatcher(world, this); + return Limbo.getInstance().getUnsafe().b(world, this); } } diff --git a/src/main/java/com/loohp/limbo/entity/EntityEquipment.java b/src/main/java/com/loohp/limbo/entity/EntityEquipment.java new file mode 100644 index 0000000..fe67ff1 --- /dev/null +++ b/src/main/java/com/loohp/limbo/entity/EntityEquipment.java @@ -0,0 +1,158 @@ +/* + * This file is part of Limbo. + * + * Copyright (C) 2022. LoohpJames + * Copyright (C) 2022. Contributors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.loohp.limbo.entity; + +import com.loohp.limbo.inventory.EquipmentSlot; +import com.loohp.limbo.inventory.ItemStack; + +/** + * An interface to a creatures inventory + */ +public interface EntityEquipment { + + /** + * Stores the ItemStack at the given equipment slot in the inventory. + * + * @param slot the slot to put the ItemStack + * @param item the ItemStack to set + */ + void setItem(EquipmentSlot slot, ItemStack item); + + /** + * Gets the ItemStack at the given equipment slot in the inventory. + * + * @param slot the slot to get the ItemStack + * @return the ItemStack in the given slot + */ + ItemStack getItem(EquipmentSlot slot); + + /** + * Gets a copy of the item the entity is currently holding + * in their main hand. + * + * @return the currently held item + */ + ItemStack getItemInMainHand(); + + /** + * Sets the item the entity is holding in their main hand. + * + * @param item The item to put into the entities hand + */ + void setItemInMainHand(ItemStack item); + + /** + * Gets a copy of the item the entity is currently holding + * in their off hand. + * + * @return the currently held item + */ + ItemStack getItemInOffHand(); + + /** + * Sets the item the entity is holding in their off hand. + * + * @param item The item to put into the entities hand + */ + void setItemInOffHand(ItemStack item); + + /** + * Gets a copy of the helmet currently being worn by the entity + * + * @return The helmet being worn + */ + ItemStack getHelmet(); + + /** + * Sets the helmet worn by the entity + * + * @param helmet The helmet to put on the entity + */ + void setHelmet(ItemStack helmet); + + /** + * Gets a copy of the chest plate currently being worn by the entity + * + * @return The chest plate being worn + */ + ItemStack getChestplate(); + + /** + * Sets the chest plate worn by the entity + * + * @param chestplate The chest plate to put on the entity + */ + void setChestplate(ItemStack chestplate); + + /** + * Gets a copy of the leggings currently being worn by the entity + * + * @return The leggings being worn + */ + ItemStack getLeggings(); + + /** + * Sets the leggings worn by the entity + * + * @param leggings The leggings to put on the entity + */ + void setLeggings(ItemStack leggings); + + /** + * Gets a copy of the boots currently being worn by the entity + * + * @return The boots being worn + */ + ItemStack getBoots(); + + /** + * Sets the boots worn by the entity + * + * @param boots The boots to put on the entity + */ + void setBoots(ItemStack boots); + + /** + * Gets a copy of all worn armor + * + * @return The array of worn armor. Individual items may be null. + */ + ItemStack[] getArmorContents(); + + /** + * Sets the entities armor to the provided array of ItemStacks + * + * @param items The items to set the armor as. Individual items may be null. + */ + void setArmorContents(ItemStack[] items); + + /** + * Clears the entity of all armor and held items + */ + void clear(); + + /** + * Get the entity this EntityEquipment belongs to + * + * @return the entity this EntityEquipment belongs to + */ + Entity getHolder(); + +} \ No newline at end of file diff --git a/src/main/java/com/loohp/limbo/entity/StandardEntityEquipment.java b/src/main/java/com/loohp/limbo/entity/StandardEntityEquipment.java new file mode 100644 index 0000000..28464a0 --- /dev/null +++ b/src/main/java/com/loohp/limbo/entity/StandardEntityEquipment.java @@ -0,0 +1,135 @@ +/* + * This file is part of Limbo. + * + * Copyright (C) 2022. LoohpJames + * Copyright (C) 2022. Contributors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.loohp.limbo.entity; + +import com.loohp.limbo.inventory.EquipmentSlot; +import com.loohp.limbo.inventory.ItemStack; + +import java.util.EnumMap; + +public class StandardEntityEquipment implements EntityEquipment { + + private final Entity entity; + private final EnumMap itemStacks; + + public StandardEntityEquipment(Entity entity) { + this.entity = entity; + this.itemStacks = new EnumMap<>(EquipmentSlot.class); + } + + @Override + public void setItem(EquipmentSlot slot, ItemStack item) { + + } + + @Override + public ItemStack getItem(EquipmentSlot slot) { + return itemStacks.get(slot); + } + + @Override + public ItemStack getItemInMainHand() { + return itemStacks.get(EquipmentSlot.MAINHAND); + } + + @Override + public void setItemInMainHand(ItemStack item) { + + } + + @Override + public ItemStack getItemInOffHand() { + return getItem(EquipmentSlot.OFFHAND); + } + + @Override + public void setItemInOffHand(ItemStack item) { + + } + + @Override + public ItemStack getHelmet() { + return getItem(EquipmentSlot.HELMET); + } + + @Override + public void setHelmet(ItemStack helmet) { + + } + + @Override + public ItemStack getChestplate() { + return getItem(EquipmentSlot.CHESTPLATE); + } + + @Override + public void setChestplate(ItemStack chestplate) { + + } + + @Override + public ItemStack getLeggings() { + return getItem(EquipmentSlot.LEGGINGS); + } + + @Override + public void setLeggings(ItemStack leggings) { + + } + + @Override + public ItemStack getBoots() { + return getItem(EquipmentSlot.BOOTS); + } + + @Override + public void setBoots(ItemStack boots) { + + } + + @Override + public ItemStack[] getArmorContents() { + return itemStacks.values().toArray(new ItemStack[0]); + } + + @Override + public void setArmorContents(ItemStack[] items) { + if (items.length != 6) { + throw new IllegalArgumentException("items must have a length of 6"); + } + EquipmentSlot[] equipmentSlots = EquipmentSlot.values(); + int i = 0; + for (EquipmentSlot equipmentSlot : equipmentSlots) { + setItem(equipmentSlot, items[i++]); + } + } + + @Override + public void clear() { + for (EquipmentSlot equipmentSlot : itemStacks.keySet()) { + setItem(equipmentSlot, null); + } + } + + @Override + public Entity getHolder() { + return null; + } +} diff --git a/src/main/java/com/loohp/limbo/events/inventory/InventoryClickEvent.java b/src/main/java/com/loohp/limbo/events/inventory/InventoryClickEvent.java new file mode 100644 index 0000000..57f4159 --- /dev/null +++ b/src/main/java/com/loohp/limbo/events/inventory/InventoryClickEvent.java @@ -0,0 +1,45 @@ +/* + * This file is part of Limbo. + * + * Copyright (C) 2022. LoohpJames + * Copyright (C) 2022. Contributors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.loohp.limbo.events.inventory; + +import com.loohp.limbo.events.Cancellable; +import com.loohp.limbo.inventory.Inventory; +import com.loohp.limbo.inventory.InventoryView; +import com.loohp.limbo.player.Player; + +public class InventoryClickEvent extends InventoryEvent implements Cancellable { + + private boolean cancelled; + + public InventoryClickEvent(Player player, InventoryView inventoryView, Inventory clickedInventory) { + super(player, inventoryView, clickedInventory); + } + + @Override + public boolean isCancelled() { + return cancelled; + } + + @Override + public void setCancelled(boolean cancelled) { + this.cancelled = cancelled; + } + +} diff --git a/src/main/java/com/loohp/limbo/events/inventory/InventoryCloseEvent.java b/src/main/java/com/loohp/limbo/events/inventory/InventoryCloseEvent.java new file mode 100644 index 0000000..1eb560d --- /dev/null +++ b/src/main/java/com/loohp/limbo/events/inventory/InventoryCloseEvent.java @@ -0,0 +1,31 @@ +/* + * This file is part of Limbo. + * + * Copyright (C) 2022. LoohpJames + * Copyright (C) 2022. Contributors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.loohp.limbo.events.inventory; + +import com.loohp.limbo.inventory.InventoryView; +import com.loohp.limbo.player.Player; + +public class InventoryCloseEvent extends InventoryEvent { + + public InventoryCloseEvent(Player player, InventoryView inventoryView) { + super(player, inventoryView, inventoryView.getTopInventory()); + } + +} diff --git a/src/main/java/com/loohp/limbo/events/inventory/InventoryCreativeEvent.java b/src/main/java/com/loohp/limbo/events/inventory/InventoryCreativeEvent.java new file mode 100644 index 0000000..5a890c2 --- /dev/null +++ b/src/main/java/com/loohp/limbo/events/inventory/InventoryCreativeEvent.java @@ -0,0 +1,62 @@ +/* + * This file is part of Limbo. + * + * Copyright (C) 2022. LoohpJames + * Copyright (C) 2022. Contributors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.loohp.limbo.events.inventory; + +import com.loohp.limbo.events.Cancellable; +import com.loohp.limbo.inventory.InventoryView; +import com.loohp.limbo.inventory.ItemStack; +import com.loohp.limbo.player.Player; +import com.loohp.limbo.player.PlayerInventory; + +public class InventoryCreativeEvent extends InventoryEvent implements Cancellable { + + private boolean cancelled; + private final int slot; + private ItemStack newItem; + + public InventoryCreativeEvent(Player player, InventoryView inventoryView, PlayerInventory playerInventory, int slot, ItemStack newItem) { + super(player, inventoryView, playerInventory); + this.slot = slot; + this.newItem = newItem; + this.cancelled = false; + } + + public int getSlot() { + return slot; + } + + @Override + public boolean isCancelled() { + return cancelled; + } + + @Override + public void setCancelled(boolean cancelled) { + this.cancelled = cancelled; + } + + public ItemStack getNewItem() { + return newItem == null ? null : newItem.clone(); + } + + public void setNewItem(ItemStack newItem) { + this.newItem = newItem == null ? null : newItem.clone(); + } +} diff --git a/src/main/java/com/loohp/limbo/events/inventory/InventoryEvent.java b/src/main/java/com/loohp/limbo/events/inventory/InventoryEvent.java new file mode 100644 index 0000000..92620fd --- /dev/null +++ b/src/main/java/com/loohp/limbo/events/inventory/InventoryEvent.java @@ -0,0 +1,50 @@ +/* + * This file is part of Limbo. + * + * Copyright (C) 2022. LoohpJames + * Copyright (C) 2022. Contributors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.loohp.limbo.events.inventory; + +import com.loohp.limbo.events.Event; +import com.loohp.limbo.inventory.Inventory; +import com.loohp.limbo.inventory.InventoryView; +import com.loohp.limbo.player.Player; + +public class InventoryEvent extends Event { + + private final Player player; + private final InventoryView inventoryView; + private final Inventory clickedInventory; + + public InventoryEvent(Player player, InventoryView inventoryView, Inventory clickedInventory) { + this.player = player; + this.inventoryView = inventoryView; + this.clickedInventory = clickedInventory; + } + + public Player getPlayer() { + return player; + } + + public InventoryView getInventoryView() { + return inventoryView; + } + + public Inventory getClickedInventory() { + return clickedInventory; + } +} diff --git a/src/main/java/com/loohp/limbo/events/inventory/InventoryOpenEvent.java b/src/main/java/com/loohp/limbo/events/inventory/InventoryOpenEvent.java new file mode 100644 index 0000000..ee79170 --- /dev/null +++ b/src/main/java/com/loohp/limbo/events/inventory/InventoryOpenEvent.java @@ -0,0 +1,45 @@ +/* + * This file is part of Limbo. + * + * Copyright (C) 2022. LoohpJames + * Copyright (C) 2022. Contributors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.loohp.limbo.events.inventory; + +import com.loohp.limbo.events.Cancellable; +import com.loohp.limbo.inventory.InventoryView; +import com.loohp.limbo.player.Player; + +public class InventoryOpenEvent extends InventoryEvent implements Cancellable { + + private boolean cancelled; + + public InventoryOpenEvent(Player player, InventoryView inventoryView) { + super(player, inventoryView, inventoryView.getTopInventory()); + this.cancelled = false; + } + + @Override + public boolean isCancelled() { + return cancelled; + } + + @Override + public void setCancelled(boolean cancelled) { + this.cancelled = cancelled; + } + +} diff --git a/src/main/java/com/loohp/limbo/events/player/PlayerInteractEvent.java b/src/main/java/com/loohp/limbo/events/player/PlayerInteractEvent.java new file mode 100644 index 0000000..29a3c29 --- /dev/null +++ b/src/main/java/com/loohp/limbo/events/player/PlayerInteractEvent.java @@ -0,0 +1,87 @@ +/* + * This file is part of Limbo. + * + * Copyright (C) 2022. LoohpJames + * Copyright (C) 2022. Contributors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.loohp.limbo.events.player; + +import com.loohp.limbo.events.Cancellable; +import com.loohp.limbo.inventory.EquipmentSlot; +import com.loohp.limbo.inventory.ItemStack; +import com.loohp.limbo.location.BlockFace; +import com.loohp.limbo.player.Player; +import com.loohp.limbo.world.BlockState; + +public class PlayerInteractEvent extends PlayerEvent implements Cancellable { + + public enum Action { + + LEFT_CLICK_AIR, + LEFT_CLICK_BLOCK, + PHYSICAL, + RIGHT_CLICK_AIR, + RIGHT_CLICK_BLOCK; + + } + + private boolean cancelled = false; + private final Action action; + private final ItemStack item; + private final BlockState clickedBlock; + private final BlockFace clickedFace; + private final EquipmentSlot hand; + + public PlayerInteractEvent(Player player, Action action, ItemStack item, BlockState clickedBlock, BlockFace clickedFace, EquipmentSlot hand) { + super(player); + this.action = action; + this.item = item; + this.clickedBlock = clickedBlock; + this.clickedFace = clickedFace; + this.hand = hand; + } + + public Action getAction() { + return action; + } + + public ItemStack getItem() { + return item; + } + + public BlockState getClickedBlock() { + return clickedBlock; + } + + public BlockFace getClickedFace() { + return clickedFace; + } + + public EquipmentSlot getHand() { + return hand; + } + + @Override + public void setCancelled(boolean cancelled) { + this.cancelled = cancelled; + } + + @Override + public boolean isCancelled() { + return cancelled; + } + +} diff --git a/src/main/java/com/loohp/limbo/inventory/AbstractInventory.java b/src/main/java/com/loohp/limbo/inventory/AbstractInventory.java new file mode 100644 index 0000000..0fab894 --- /dev/null +++ b/src/main/java/com/loohp/limbo/inventory/AbstractInventory.java @@ -0,0 +1,552 @@ +/* + * This file is part of Limbo. + * + * Copyright (C) 2022. LoohpJames + * Copyright (C) 2022. Contributors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.loohp.limbo.inventory; + +import com.loohp.limbo.network.protocol.packets.PacketPlayOutSetSlot; +import com.loohp.limbo.network.protocol.packets.PacketPlayOutWindowItems; +import com.loohp.limbo.player.Player; +import net.kyori.adventure.key.Key; + +import java.io.IOException; +import java.util.Arrays; +import java.util.Collections; +import java.util.HashMap; +import java.util.List; +import java.util.ListIterator; +import java.util.Map; +import java.util.Objects; +import java.util.Set; +import java.util.concurrent.ConcurrentHashMap; +import java.util.concurrent.atomic.AtomicReferenceArray; +import java.util.function.IntUnaryOperator; +import java.util.stream.IntStream; +import java.util.stream.StreamSupport; + +public abstract class AbstractInventory implements Inventory { + + protected final InventoryHolder inventoryHolder; + protected final Map viewers; + protected final InventoryType inventoryType; + protected final AtomicReferenceArray inventory; + protected final InventoryUpdateListener listener; + protected final IntUnaryOperator slotConvertor; + protected final IntUnaryOperator inverseSlotConvertor; + + private final Unsafe unsafe; + + protected int maxStackSize; + + public AbstractInventory(int size, InventoryHolder inventoryHolder, InventoryType inventoryType, IntUnaryOperator slotConvertor, IntUnaryOperator inverseSlotConvertor) { + this.inventoryHolder = inventoryHolder; + this.viewers = new ConcurrentHashMap<>(); + this.inventoryType = inventoryType; + this.inventory = new AtomicReferenceArray<>(size); + this.slotConvertor = slotConvertor == null ? IntUnaryOperator.identity() : slotConvertor; + this.inverseSlotConvertor = inverseSlotConvertor == null ? IntUnaryOperator.identity() : inverseSlotConvertor; + this.listener = (inventory, slot, oldItem, newItem) -> { + for (Map.Entry entry : viewers.entrySet()) { + try { + PacketPlayOutSetSlot packet = new PacketPlayOutSetSlot(entry.getValue(), 0, this.slotConvertor.applyAsInt(slot), newItem); + entry.getKey().clientConnection.sendPacket(packet); + } catch (IOException e) { + e.printStackTrace(); + } + } + }; + this.maxStackSize = 64; + this.unsafe = new Unsafe(this); + } + + @Override + public void updateInventory(Player player) { + Integer windowId = viewers.get(player); + if (windowId == null) { + return; + } + ItemStack[] itemStackArray = new ItemStack[IntStream.range(0, inventory.length()).map(slotConvertor).max().orElse(-1) + 1]; + for (int i = 0; i < inventory.length(); i++) { + itemStackArray[slotConvertor.applyAsInt(i)] = getItem(i); + } + try { + PacketPlayOutWindowItems packet = new PacketPlayOutWindowItems(windowId, 0, Arrays.asList(itemStackArray), ItemStack.AIR); + player.clientConnection.sendPacket(packet); + } catch (IOException e) { + e.printStackTrace(); + } + } + + @Override + public void updateInventory() { + ItemStack[] itemStackArray = new ItemStack[IntStream.range(0, inventory.length()).map(slotConvertor).max().orElse(0)]; + for (int i = 0; i < inventory.length(); i++) { + itemStackArray[slotConvertor.applyAsInt(i)] = getItem(i); + } + List itemStacks = Arrays.asList(itemStackArray); + for (Map.Entry entry : viewers.entrySet()) { + try { + PacketPlayOutWindowItems packet = new PacketPlayOutWindowItems(entry.getValue(), 0, itemStacks, ItemStack.AIR); + entry.getKey().clientConnection.sendPacket(packet); + } catch (IOException e) { + e.printStackTrace(); + } + } + } + + @Override + public int getSize() { + return inventory.length(); + } + + @Override + public int getMaxStackSize() { + return maxStackSize; + } + + @Override + public void setMaxStackSize(int size) { + this.maxStackSize = size; + } + + @Override + public ItemStack getItem(int index) { + return inventory.get(index); + } + + @Override + public void setItem(int index, ItemStack item) { + if (item != null && item.type().equals(ItemStack.AIR.type())) { + item = null; + } + ItemStack oldItem = getItem(index); + if (!Objects.equals(item, oldItem)) { + inventory.set(index, item); + listener.slotChanged(this, index, oldItem, item); + } + } + + public int firstPartial(Key material) { + for (int i = 0; i < inventory.length(); i++) { + ItemStack item = getItem(i); + if (item != null && item.type().equals(material) && item.amount() < item.getMaxStackSize()) { + return i; + } + } + return -1; + } + + private int firstPartial(ItemStack item) { + if (item == null) { + return -1; + } + for (int i = 0; i < inventory.length(); i++) { + ItemStack cItem = getItem(i); + if (cItem != null && cItem.amount() < cItem.getMaxStackSize() && cItem.isSimilar(item)) { + return i; + } + } + return -1; + } + + @Override + public HashMap addItem(ItemStack... items) throws IllegalArgumentException { + HashMap leftover = new HashMap<>(); + for (int i = 0; i < items.length; i++) { + ItemStack item = items[i]; + while (true) { + // Do we already have a stack of it? + int firstPartial = firstPartial(item); + + // Drat! no partial stack + if (firstPartial == -1) { + // Find a free spot! + int firstFree = firstEmpty(); + + if (firstFree == -1) { + // No space at all! + leftover.put(i, item); + break; + } else { + // More than a single stack! + if (item.amount() > getMaxStackSize()) { + ItemStack stack = item.clone(); + stack = stack.amount(getMaxStackSize()); + setItem(firstFree, stack); + item = item.amount(item.amount() - getMaxStackSize()); + items[i] = item; + } else { + // Just store it + setItem(firstFree, item); + break; + } + } + } else { + // So, apparently it might only partially fit, well lets do just that + ItemStack partialItem = getItem(firstPartial); + + int amount = item.amount(); + int partialAmount = partialItem.amount(); + int maxAmount = partialItem.getMaxStackSize(); + + // Check if it fully fits + if (amount + partialAmount <= maxAmount) { + partialItem = partialItem.amount(amount + partialAmount); + // To make sure the packet is sent to the client + setItem(firstPartial, partialItem); + break; + } + + // It fits partially + partialItem = partialItem.amount(maxAmount); + // To make sure the packet is sent to the client + setItem(firstPartial, partialItem); + item = item.amount(amount + partialAmount - maxAmount); + items[i] = item; + } + } + } + return leftover; + } + + @Override + public HashMap removeItem(ItemStack... items) throws IllegalArgumentException { + HashMap leftover = new HashMap<>(); + + for (int i = 0; i < items.length; i++) { + ItemStack item = items[i]; + int toDelete = item.amount(); + + while (true) { + int first = first(item, false); + + // Drat! we don't have this type in the inventory + if (first == -1) { + item = item.amount(toDelete); + items[i] = item; + leftover.put(i, item); + break; + } else { + ItemStack itemStack = getItem(first); + int amount = itemStack.amount(); + + if (amount <= toDelete) { + toDelete -= amount; + // clear the slot, all used up + clear(first); + } else { + // split the stack and store + itemStack = itemStack.amount(amount - toDelete); + setItem(first, itemStack); + toDelete = 0; + } + } + + // Bail when done + if (toDelete <= 0) { + break; + } + } + } + return leftover; + } + + @Override + public ItemStack[] getContents() { + return StreamSupport.stream(spliterator(), false).toArray(ItemStack[]::new); + } + + @Override + public void setContents(ItemStack[] items) throws IllegalArgumentException { + if (getSize() < items.length) { + throw new IllegalArgumentException("Invalid inventory size; expected " + getSize() + " or less"); + } + + for (int i = 0; i < getSize(); i++) { + if (i >= items.length) { + setItem(i, null); + } else { + setItem(i, items[i]); + } + } + } + + @Override + public ItemStack[] getStorageContents() { + return getContents(); + } + + @Override + public void setStorageContents(ItemStack[] items) throws IllegalArgumentException { + setContents(items); + } + + @Override + public boolean contains(Key material) throws IllegalArgumentException { + for (int i = 0; i < inventory.length(); i++) { + ItemStack itemStack = getItem(i); + if (itemStack != null && itemStack.type().equals(material)) { + return true; + } + } + return false; + } + + @Override + public boolean contains(ItemStack item) { + for (int i = 0; i < inventory.length(); i++) { + ItemStack itemStack = getItem(i); + if (itemStack.equals(item)) { + return true; + } + } + return false; + } + + @Override + public boolean contains(Key material, int amount) throws IllegalArgumentException { + if (amount <= 0) { + return true; + } + for (int i = 0; i < inventory.length(); i++) { + ItemStack itemStack = getItem(i); + if (itemStack != null && itemStack.type().equals(material)) { + if ((amount -= itemStack.amount()) <= 0) { + return true; + } + } + } + return false; + } + + @Override + public boolean contains(ItemStack item, int amount) { + if (item == null) { + return false; + } + if (amount <= 0) { + return true; + } + for (int i = 0; i < inventory.length(); i++) { + ItemStack itemStack = getItem(i); + if (item.equals(itemStack) && --amount <= 0) { + return true; + } + } + return false; + } + + @Override + public boolean containsAtLeast(ItemStack item, int amount) { + if (item == null) { + return false; + } + if (amount <= 0) { + return true; + } + for (int i = 0; i < inventory.length(); i++) { + ItemStack itemStack = getItem(i); + if (item.isSimilar(itemStack) && (amount -= itemStack.amount()) <= 0) { + return true; + } + } + return false; + } + + @Override + public HashMap all(Key material) throws IllegalArgumentException { + HashMap slots = new HashMap<>(); + ItemStack[] inventory = getStorageContents(); + for (int i = 0; i < inventory.length; i++) { + ItemStack item = inventory[i]; + if (item != null && item.type().equals(material)) { + slots.put(i, item); + } + } + return slots; + } + + @Override + public HashMap all(ItemStack item) { + HashMap slots = new HashMap<>(); + if (item != null) { + ItemStack[] inventory = getStorageContents(); + for (int i = 0; i < inventory.length; i++) { + if (item.equals(inventory[i])) { + slots.put(i, inventory[i]); + } + } + } + return slots; + } + + @Override + public int first(Key material) throws IllegalArgumentException { + for (int i = 0; i < inventory.length(); i++) { + ItemStack item = getItem(i); + if (item != null && item.type().equals(material)) { + return i; + } + } + return -1; + } + + @Override + public int first(ItemStack item) { + return first(item, true); + } + + private int first(ItemStack item, boolean withAmount) { + if (item == null) { + return -1; + } + for (int i = 0; i < inventory.length(); i++) { + ItemStack itemStack = inventory.get(i); + if (itemStack == null) continue; + + if (withAmount ? item.equals(itemStack) : item.isSimilar(itemStack)) { + return i; + } + } + return -1; + } + + @Override + public int firstEmpty() { + for (int i = 0; i < inventory.length(); i++) { + if (getItem(i) == null) { + return i; + } + } + return -1; + } + + @Override + public boolean isEmpty() { + for (int i = 0; i < inventory.length(); i++) { + if (getItem(i) != null) { + return false; + } + } + return true; + } + + @Override + public void remove(Key material) throws IllegalArgumentException { + for (int i = 0; i < inventory.length(); i++) { + ItemStack itemStack = getItem(i); + if (itemStack != null && itemStack.type().equals(material)) { + clear(i); + } + } + } + + @Override + public void remove(ItemStack item) { + for (int i = 0; i < inventory.length(); i++) { + ItemStack itemStack = getItem(i); + if (itemStack != null && itemStack.equals(item)) { + clear(i); + } + } + } + + @Override + public void clear(int index) { + setItem(index, null); + } + + @Override + public void clear() { + for (int i = 0; i < inventory.length(); i++) { + setItem(i, null); + } + } + + @Override + public Set getViewers() { + return Collections.unmodifiableSet(viewers.keySet()); + } + + @Override + public InventoryType getType() { + return inventoryType; + } + + @Override + public InventoryHolder getHolder() { + return inventoryHolder; + } + + @Override + public ListIterator iterator() { + return new InventoryIterator(this); + } + + @Override + public ListIterator iterator(int index) { + if (index < 0) { + index += getSize() + 1; // ie, with -1, previous() will return the last element + } + return new InventoryIterator(this, index); + } + + @SuppressWarnings("DeprecatedIsStillUsed") + @Deprecated + public Unsafe getUnsafe() { + return unsafe; + } + + @SuppressWarnings("DeprecatedIsStillUsed") + @Deprecated + public static class Unsafe implements Inventory.Unsafe { + + private final AbstractInventory inventory; + + @Deprecated + public Unsafe(AbstractInventory inventory) { + this.inventory = inventory; + } + + @Deprecated + public void a(int index, ItemStack itemStack) { + inventory.inventory.set(index, itemStack); + } + + @Deprecated + public void b(int index, ItemStack itemStack) { + inventory.inventory.set(inventory.inverseSlotConvertor.applyAsInt(index), itemStack); + } + + @Deprecated + public IntUnaryOperator a() { + return inventory.slotConvertor; + } + + @Deprecated + public IntUnaryOperator b() { + return inventory.inverseSlotConvertor; + } + + @Override + public Map c() { + return inventory.viewers; + } + } + +} diff --git a/src/main/java/com/loohp/limbo/inventory/CustomInventory.java b/src/main/java/com/loohp/limbo/inventory/CustomInventory.java new file mode 100644 index 0000000..6b38e35 --- /dev/null +++ b/src/main/java/com/loohp/limbo/inventory/CustomInventory.java @@ -0,0 +1,57 @@ +/* + * This file is part of Limbo. + * + * Copyright (C) 2022. LoohpJames + * Copyright (C) 2022. Contributors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.loohp.limbo.inventory; + +import com.loohp.limbo.location.Location; +import net.kyori.adventure.text.Component; + +public class CustomInventory extends AbstractInventory implements TitledInventory { + + @SuppressWarnings("DeprecatedIsStillUsed") + @Deprecated + public static CustomInventory create(Component title, int size, InventoryHolder inventoryHolder) { + if (size % 9 != 0 || size > 54 || size < 9) { + throw new IllegalArgumentException("size must be a multiple of 9 and within 9 - 54"); + } + return new CustomInventory(title, size, inventoryHolder); + } + + private Component title; + + private CustomInventory(Component title, int size, InventoryHolder inventoryHolder) { + super(size, inventoryHolder, InventoryType.CHEST, null, null); + this.title = title; + } + + @Override + public Component getTitle() { + return title; + } + + public void setTitle(Component title) { + this.title = title; + } + + @Override + public Location getLocation() { + return null; + } + +} diff --git a/src/main/java/com/loohp/limbo/inventory/EquipmentSlot.java b/src/main/java/com/loohp/limbo/inventory/EquipmentSlot.java index 2d03316..b4d7e42 100644 --- a/src/main/java/com/loohp/limbo/inventory/EquipmentSlot.java +++ b/src/main/java/com/loohp/limbo/inventory/EquipmentSlot.java @@ -28,4 +28,24 @@ public enum EquipmentSlot { LEGGINGS, BOOTS; + public boolean isHandSlot() { + switch (this) { + case MAINHAND: + case OFFHAND: + return true; + } + return false; + } + + public boolean isArmorSlot() { + switch (this) { + case HELMET: + case CHESTPLATE: + case LEGGINGS: + case BOOTS: + return true; + } + return false; + } + } diff --git a/src/main/java/com/loohp/limbo/inventory/Inventory.java b/src/main/java/com/loohp/limbo/inventory/Inventory.java new file mode 100644 index 0000000..bede7b5 --- /dev/null +++ b/src/main/java/com/loohp/limbo/inventory/Inventory.java @@ -0,0 +1,403 @@ +/* + * This file is part of Limbo. + * + * Copyright (C) 2022. LoohpJames + * Copyright (C) 2022. Contributors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.loohp.limbo.inventory; + +import com.loohp.limbo.location.Location; +import com.loohp.limbo.player.Player; +import net.kyori.adventure.key.Key; +import org.jetbrains.annotations.Contract; + +import java.util.HashMap; +import java.util.ListIterator; +import java.util.Map; +import java.util.Set; +import java.util.function.IntUnaryOperator; + +public interface Inventory extends Iterable { + + /** + * Returns the size of the inventory + * + * @return The size of the inventory + */ + int getSize(); + + /** + * Returns the maximum stack size for an ItemStack in this inventory. + * + * @return The maximum size for an ItemStack in this inventory. + */ + int getMaxStackSize(); + + /** + * This method allows you to change the maximum stack size for an + * inventory. + *

+ * Caveats: + *

    + *
  • Not all inventories respect this value. + *
  • Stacks larger than 127 may be clipped when the world is saved. + *
  • This value is not guaranteed to be preserved; be sure to set it + * before every time you want to set a slot over the max stack size. + *
  • Stacks larger than the default max size for this type of inventory + * may not display correctly in the client. + *
+ * + * @param size The new maximum stack size for items in this inventory. + */ + void setMaxStackSize(int size); + + /** + * Returns the ItemStack found in the slot at the given index + * + * @param index The index of the Slot's ItemStack to return + * @return The ItemStack in the slot + */ + ItemStack getItem(int index); + + /** + * Stores the ItemStack at the given index of the inventory. + * + * @param index The index where to put the ItemStack + * @param item The ItemStack to set + */ + void setItem(int index, ItemStack item); + + /** + * Stores the given ItemStacks in the inventory. This will try to fill + * existing stacks and empty slots as well as it can. + *

+ * The returned HashMap contains what it couldn't store, where the key is + * the index of the parameter, and the value is the ItemStack at that + * index of the varargs parameter. If all items are stored, it will return + * an empty HashMap. + *

+ * If you pass in ItemStacks which exceed the maximum stack size for the + * Material, first they will be added to partial stacks where + * Material.getMaxStackSize() is not exceeded, up to + * Material.getMaxStackSize(). When there are no partial stacks left + * stacks will be split on Inventory.getMaxStackSize() allowing you to + * exceed the maximum stack size for that material. + *

+ * It is known that in some implementations this method will also set + * the inputted argument amount to the number of that item not placed in + * slots. + * + * @param items The ItemStacks to add + * @return A HashMap containing items that didn't fit. + * @throws IllegalArgumentException if items or any element in it is null + */ + HashMap addItem(ItemStack... items) throws IllegalArgumentException; + + /** + * Removes the given ItemStacks from the inventory. + *

+ * It will try to remove 'as much as possible' from the types and amounts + * you give as arguments. + *

+ * The returned HashMap contains what it couldn't remove, where the key is + * the index of the parameter, and the value is the ItemStack at that + * index of the varargs parameter. If all the given ItemStacks are + * removed, it will return an empty HashMap. + *

+ * It is known that in some implementations this method will also set the + * inputted argument amount to the number of that item not removed from + * slots. + * + * @param items The ItemStacks to remove + * @return A HashMap containing items that couldn't be removed. + * @throws IllegalArgumentException if items is null + */ + HashMap removeItem(ItemStack... items) throws IllegalArgumentException; + + /** + * Returns all ItemStacks from the inventory + * + * @return An array of ItemStacks from the inventory. Individual items may be null. + */ + ItemStack[] getContents(); + + /** + * Completely replaces the inventory's contents. Removes all existing + * contents and replaces it with the ItemStacks given in the array. + * + * @param items A complete replacement for the contents; the length must + * be less than or equal to {@link #getSize()}. + * @throws IllegalArgumentException If the array has more items than the + * inventory. + */ + void setContents(ItemStack[] items) throws IllegalArgumentException; + + /** + * Return the contents from the section of the inventory where items can + * reasonably be expected to be stored. In most cases this will represent + * the entire inventory, but in some cases it may exclude armor or result + * slots. + *
+ * It is these contents which will be used for add / contains / remove + * methods which look for a specific stack. + * + * @return inventory storage contents. Individual items may be null. + */ + ItemStack[] getStorageContents(); + + /** + * Put the given ItemStacks into the storage slots + * + * @param items The ItemStacks to use as storage contents + * @throws IllegalArgumentException If the array has more items than the + * inventory. + */ + void setStorageContents(ItemStack[] items) throws IllegalArgumentException; + + /** + * Checks if the inventory contains any ItemStacks with the given + * material. + * + * @param material The material to check for + * @return true if an ItemStack is found with the given Material + * @throws IllegalArgumentException if material is null + */ + boolean contains(Key material) throws IllegalArgumentException; + + /** + * Checks if the inventory contains any ItemStacks matching the given + * ItemStack. + *

+ * This will only return true if both the type and the amount of the stack + * match. + * + * @param item The ItemStack to match against + * @return false if item is null, true if any exactly matching ItemStacks + * were found + */ + @Contract("null -> false") + boolean contains(ItemStack item); + + /** + * Checks if the inventory contains any ItemStacks with the given + * material, adding to at least the minimum amount specified. + * + * @param material The material to check for + * @param amount The minimum amount + * @return true if amount is less than 1, true if enough ItemStacks were + * found to add to the given amount + * @throws IllegalArgumentException if material is null + */ + boolean contains(Key material, int amount) throws IllegalArgumentException; + + /** + * Checks if the inventory contains at least the minimum amount specified + * of exactly matching ItemStacks. + *

+ * An ItemStack only counts if both the type and the amount of the stack + * match. + * + * @param item the ItemStack to match against + * @param amount how many identical stacks to check for + * @return false if item is null, true if amount less than 1, true if + * amount of exactly matching ItemStacks were found + * @see #containsAtLeast(ItemStack, int) + */ + @Contract("null, _ -> false") + boolean contains(ItemStack item, int amount); + + /** + * Checks if the inventory contains ItemStacks matching the given + * ItemStack whose amounts sum to at least the minimum amount specified. + * + * @param item the ItemStack to match against + * @param amount the minimum amount + * @return false if item is null, true if amount less than 1, true if + * enough ItemStacks were found to add to the given amount + */ + @Contract("null, _ -> false") + boolean containsAtLeast(ItemStack item, int amount); + + /** + * Returns a HashMap with all slots and ItemStacks in the inventory with + * the given Material. + *

+ * The HashMap contains entries where, the key is the slot index, and the + * value is the ItemStack in that slot. If no matching ItemStack with the + * given Material is found, an empty map is returned. + * + * @param material The material to look for + * @return A HashMap containing the slot index, ItemStack pairs + * @throws IllegalArgumentException if material is null + */ + HashMap all(Key material) throws IllegalArgumentException; + + /** + * Finds all slots in the inventory containing any ItemStacks with the + * given ItemStack. This will only match slots if both the type and the + * amount of the stack match + *

+ * The HashMap contains entries where, the key is the slot index, and the + * value is the ItemStack in that slot. If no matching ItemStack with the + * given Material is found, an empty map is returned. + * + * @param item The ItemStack to match against + * @return A map from slot indexes to item at index + */ + HashMap all(ItemStack item); + + /** + * Finds the first slot in the inventory containing an ItemStack with the + * given material + * + * @param material The material to look for + * @return The slot index of the given Material or -1 if not found + * @throws IllegalArgumentException if material is null + */ + int first(Key material) throws IllegalArgumentException; + + /** + * Returns the first slot in the inventory containing an ItemStack with + * the given stack. This will only match a slot if both the type and the + * amount of the stack match + * + * @param item The ItemStack to match against + * @return The slot index of the given ItemStack or -1 if not found + */ + int first(ItemStack item); + + /** + * Returns the first empty Slot. + * + * @return The first empty Slot found, or -1 if no empty slots. + */ + int firstEmpty(); + + /** + * Check whether or not this inventory is empty. An inventory is considered + * to be empty if there are no ItemStacks in any slot of this inventory. + * + * @return true if empty, false otherwise + */ + boolean isEmpty(); + + /** + * Removes all stacks in the inventory matching the given material. + * + * @param material The material to remove + * @throws IllegalArgumentException if material is null + */ + void remove(Key material) throws IllegalArgumentException; + + /** + * Removes all stacks in the inventory matching the given stack. + *

+ * This will only match a slot if both the type and the amount of the + * stack match + * + * @param item The ItemStack to match against + */ + void remove(ItemStack item); + + /** + * Clears out a particular slot in the index. + * + * @param index The index to empty. + */ + void clear(int index); + + /** + * Clears out the whole Inventory. + */ + void clear(); + + /** + * Gets a list of players viewing the inventory. Note that a player is + * considered to be viewing their own inventory and internal crafting + * screen even when said inventory is not open. They will normally be + * considered to be viewing their inventory even when they have a + * different inventory screen open, but it's possible for customized + * inventory screens to exclude the viewer's inventory, so this should + * never be assumed to be non-empty. + * + * @return A set of HumanEntities who are viewing this Inventory. + */ + Set getViewers(); + + /** + * Returns what type of inventory this is. + * + * @return The InventoryType representing the type of inventory. + */ + InventoryType getType(); + + /** + * Gets the block or entity belonging to the open inventory + * + * @return The holder of the inventory; null if it has no holder. + */ + InventoryHolder getHolder(); + + @Override + ListIterator iterator(); + + /** + * Returns an iterator starting at the given index. If the index is + * positive, then the first call to next() will return the item at that + * index; if it is negative, the first call to previous will return the + * item at index (getSize() + index). + * + * @param index The index. + * @return An iterator. + */ + ListIterator iterator(int index); + + /** + * Get the location of the block or entity which corresponds to this inventory. May return null if this container + * was custom created or is a virtual / subcontainer. + * + * @return location or null if not applicable. + */ + Location getLocation(); + + void updateInventory(); + + void updateInventory(Player player); + + @Deprecated + Unsafe getUnsafe(); + + @Deprecated + interface Unsafe { + + @Deprecated + void a(int index, ItemStack itemStack); + + @Deprecated + void b(int index, ItemStack itemStack); + + @Deprecated + IntUnaryOperator a(); + + @Deprecated + IntUnaryOperator b(); + + @Deprecated + Map c(); + + } + +} diff --git a/src/main/java/com/loohp/limbo/inventory/InventoryClickType.java b/src/main/java/com/loohp/limbo/inventory/InventoryClickType.java new file mode 100644 index 0000000..0bd04ba --- /dev/null +++ b/src/main/java/com/loohp/limbo/inventory/InventoryClickType.java @@ -0,0 +1,26 @@ +/* + * This file is part of Limbo. + * + * Copyright (C) 2022. LoohpJames + * Copyright (C) 2022. Contributors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.loohp.limbo.inventory; + +public enum InventoryClickType { + + PICKUP, QUICK_MOVE, SWAP, CLONE, THROW, QUICK_CRAFT, PICKUP_ALL; + +} \ No newline at end of file diff --git a/src/main/java/com/loohp/limbo/inventory/InventoryHolder.java b/src/main/java/com/loohp/limbo/inventory/InventoryHolder.java new file mode 100644 index 0000000..3566303 --- /dev/null +++ b/src/main/java/com/loohp/limbo/inventory/InventoryHolder.java @@ -0,0 +1,28 @@ +/* + * This file is part of Limbo. + * + * Copyright (C) 2022. LoohpJames + * Copyright (C) 2022. Contributors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.loohp.limbo.inventory; + +public interface InventoryHolder { + + Inventory getInventory(); + + InventoryHolder getHolder(); + +} diff --git a/src/main/java/com/loohp/limbo/inventory/InventoryIterator.java b/src/main/java/com/loohp/limbo/inventory/InventoryIterator.java new file mode 100644 index 0000000..0a0b8f7 --- /dev/null +++ b/src/main/java/com/loohp/limbo/inventory/InventoryIterator.java @@ -0,0 +1,90 @@ +/* + * This file is part of Limbo. + * + * Copyright (C) 2022. LoohpJames + * Copyright (C) 2022. Contributors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.loohp.limbo.inventory; + +import java.util.ListIterator; + +public class InventoryIterator implements ListIterator { + + private final Inventory inventory; + private int nextIndex; + private Boolean lastDirection; // true = forward, false = backward, null = haven't moved yet + + InventoryIterator(Inventory inventory) { + this.inventory = inventory; + this.nextIndex = 0; + } + + InventoryIterator(Inventory inventory, int index) { + this.inventory = inventory; + this.nextIndex = index; + } + + @Override + public boolean hasNext() { + return nextIndex < inventory.getSize(); + } + + @Override + public ItemStack next() { + lastDirection = true; + return inventory.getItem(nextIndex++); + } + + @Override + public int nextIndex() { + return nextIndex; + } + + @Override + public boolean hasPrevious() { + return nextIndex > 0; + } + + @Override + public ItemStack previous() { + lastDirection = false; + return inventory.getItem(--nextIndex); + } + + @Override + public int previousIndex() { + return nextIndex - 1; + } + + @Override + public void set(ItemStack item) { + if (lastDirection == null) { + throw new IllegalStateException("No current item!"); + } + int i = lastDirection ? nextIndex - 1 : nextIndex; + inventory.setItem(i, item); + } + + @Override + public void add(ItemStack item) { + throw new UnsupportedOperationException("Can't change the size of an inventory!"); + } + + @Override + public void remove() { + throw new UnsupportedOperationException("Can't change the size of an inventory!"); + } +} \ No newline at end of file diff --git a/src/main/java/com/loohp/limbo/inventory/InventoryType.java b/src/main/java/com/loohp/limbo/inventory/InventoryType.java new file mode 100644 index 0000000..3d40796 --- /dev/null +++ b/src/main/java/com/loohp/limbo/inventory/InventoryType.java @@ -0,0 +1,263 @@ +/* + * This file is part of Limbo. + * + * Copyright (C) 2022. LoohpJames + * Copyright (C) 2022. Contributors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.loohp.limbo.inventory; + +import net.kyori.adventure.key.Key; + +public enum InventoryType { + + /** + * A chest inventory, with 0, 9, 18, 27, 36, 45, or 54 slots of type + * CONTAINER. + */ + CHEST(27, "Chest"), + /** + * A dispenser inventory, with 9 slots of type CONTAINER. + */ + DISPENSER(9, "Dispenser"), + /** + * A dropper inventory, with 9 slots of type CONTAINER. + */ + DROPPER(9, "Dropper"), + /** + * A furnace inventory, with a RESULT slot, a CRAFTING slot, and a FUEL + * slot. + */ + FURNACE(3, "Furnace"), + /** + * A workbench inventory, with 9 CRAFTING slots and a RESULT slot. + */ + WORKBENCH(10, "Crafting"), + /** + * A player's crafting inventory, with 4 CRAFTING slots and a RESULT slot. + * Also implies that the 4 ARMOR slots are accessible. + */ + CRAFTING(5, "Crafting", false), + /** + * An enchantment table inventory, with two CRAFTING slots and three + * enchanting buttons. + */ + ENCHANTING(2, "Enchanting"), + /** + * A brewing stand inventory, with one FUEL slot and four CRAFTING slots. + */ + BREWING(5, "Brewing"), + /** + * A player's inventory, with 9 QUICKBAR slots, 27 CONTAINER slots, 4 ARMOR + * slots and 1 offhand slot. The ARMOR and offhand slots may not be visible + * to the player, though. + */ + PLAYER(41, "Player"), + /** + * The creative mode inventory, with only 9 QUICKBAR slots and nothing + * else. (The actual creative interface with the items is client-side and + * cannot be altered by the server.) + */ + CREATIVE(9, "Creative", false), + /** + * The merchant inventory, with 2 CRAFTING slots, and 1 RESULT slot. + */ + MERCHANT(3, "Villager", false), + /** + * The ender chest inventory, with 27 slots. + */ + ENDER_CHEST(27, "Ender Chest"), + /** + * An anvil inventory, with 2 CRAFTING slots and 1 RESULT slot + */ + ANVIL(3, "Repairing"), + /** + * A smithing inventory, with 2 CRAFTING slots and 1 RESULT slot + */ + SMITHING(3, "Upgrade Gear"), + /** + * A beacon inventory, with 1 CRAFTING slot + */ + BEACON(1, "container.beacon"), + /** + * A hopper inventory, with 5 slots of type CONTAINER. + */ + HOPPER(5, "Item Hopper"), + /** + * A shulker box inventory, with 27 slots of type CONTAINER. + */ + SHULKER_BOX(27, "Shulker Box"), + /** + * A barrel box inventory, with 27 slots of type CONTAINER. + */ + BARREL(27, "Barrel"), + /** + * A blast furnace inventory, with a RESULT slot, a CRAFTING slot, and a + * FUEL slot. + */ + BLAST_FURNACE(3, "Blast Furnace"), + /** + * A lectern inventory, with 1 BOOK slot. + */ + LECTERN(1, "Lectern"), + /** + * A smoker inventory, with a RESULT slot, a CRAFTING slot, and a FUEL slot. + */ + SMOKER(3, "Smoker"), + /** + * Loom inventory, with 3 CRAFTING slots, and 1 RESULT slot. + */ + LOOM(4, "Loom"), + /** + * Cartography inventory with 2 CRAFTING slots, and 1 RESULT slot. + */ + CARTOGRAPHY(3, "Cartography Table"), + /** + * Grindstone inventory with 2 CRAFTING slots, and 1 RESULT slot. + */ + GRINDSTONE(3, "Repair & Disenchant"), + /** + * Stonecutter inventory with 1 CRAFTING slot, and 1 RESULT slot. + */ + STONECUTTER(2, "Stonecutter"), + /** + * Pseudo composter inventory with 0 or 1 slots of undefined type. + */ + COMPOSTER(1, "Composter"), + /** + * Pseudo chiseled bookshelf inventory, with 6 slots of undefined type. + */ + CHISELED_BOOKSHELF(6, "Chiseled Bookshelf"), + ; + + private final int size; + private final String title; + private final boolean isCreatable; + + InventoryType(int defaultSize, /*@NotNull*/ String defaultTitle) { + this(defaultSize, defaultTitle, true); + } + + InventoryType(int defaultSize, /*@NotNull*/ String defaultTitle, boolean isCreatable) { + size = defaultSize; + title = defaultTitle; + this.isCreatable = isCreatable; + } + + public int getDefaultSize() { + return size; + } + + public String getDefaultTitle() { + return title; + } + + /** + * Denotes that this InventoryType can be created via the normal + * {@link org.bukkit.Bukkit#createInventory} methods. + * + * @return if this InventoryType can be created and shown to a player + */ + public boolean isCreatable() { + return isCreatable; + } + + public Key getRawType(int slots) { + switch (this) { + case CHEST: + return Key.key("minecraft:generic_9x" + (slots / 9)); + case DISPENSER: + case DROPPER: + return Key.key("minecraft:generic_3x3"); + case FURNACE: + return Key.key("minecraft:furnace"); + case WORKBENCH: + return Key.key("minecraft:crafting"); + case ENCHANTING: + return Key.key("minecraft:enchantment"); + case BREWING: + return Key.key("minecraft:brewing_stand"); + case MERCHANT: + return Key.key("minecraft:merchant"); + case ENDER_CHEST: + case BARREL: + return Key.key("minecraft:generic_9x3"); + case ANVIL: + return Key.key("minecraft:anvil"); + case SMITHING: + return Key.key("minecraft:smithing"); + case BEACON: + return Key.key("minecraft:beacon"); + case HOPPER: + return Key.key("minecraft:hopper"); + case SHULKER_BOX: + return Key.key("minecraft:shulker_box"); + case BLAST_FURNACE: + return Key.key("minecraft:blast_furnace"); + case LECTERN: + return Key.key("minecraft:lectern"); + case SMOKER: + return Key.key("minecraft:smoker"); + case LOOM: + return Key.key("minecraft:loom"); + case CARTOGRAPHY: + return Key.key("minecraft:cartography_table"); + case GRINDSTONE: + return Key.key("minecraft:grindstone"); + case STONECUTTER: + return Key.key("minecraft:stonecutter"); + case CRAFTING: + case PLAYER: + case CREATIVE: + case COMPOSTER: + case CHISELED_BOOKSHELF: + return null; + } + return null; + } + + public enum SlotType { + /** + * A result slot in a furnace or crafting inventory. + */ + RESULT, + /** + * A slot in the crafting matrix, or an 'input' slot. + */ + CRAFTING, + /** + * An armour slot in the player's inventory. + */ + ARMOR, + /** + * A regular slot in the container or the player's inventory; anything + * not covered by the other enum values. + */ + CONTAINER, + /** + * A slot in the bottom row or quickbar. + */ + QUICKBAR, + /** + * A pseudo-slot representing the area outside the inventory window. + */ + OUTSIDE, + /** + * The fuel slot in a furnace inventory, or the ingredient slot in a + * brewing stand inventory. + */ + FUEL; + } +} \ No newline at end of file diff --git a/src/main/java/com/loohp/limbo/inventory/InventoryUpdateListener.java b/src/main/java/com/loohp/limbo/inventory/InventoryUpdateListener.java new file mode 100644 index 0000000..d79900f --- /dev/null +++ b/src/main/java/com/loohp/limbo/inventory/InventoryUpdateListener.java @@ -0,0 +1,27 @@ +/* + * This file is part of Limbo. + * + * Copyright (C) 2022. LoohpJames + * Copyright (C) 2022. Contributors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.loohp.limbo.inventory; + +@FunctionalInterface +public interface InventoryUpdateListener { + + void slotChanged(Inventory inventory, int slot, ItemStack oldItem, ItemStack newItem); + +} diff --git a/src/main/java/com/loohp/limbo/inventory/InventoryView.java b/src/main/java/com/loohp/limbo/inventory/InventoryView.java new file mode 100644 index 0000000..191fada --- /dev/null +++ b/src/main/java/com/loohp/limbo/inventory/InventoryView.java @@ -0,0 +1,267 @@ +/* + * This file is part of Limbo. + * + * Copyright (C) 2022. LoohpJames + * Copyright (C) 2022. Contributors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.loohp.limbo.inventory; + +import com.loohp.limbo.network.protocol.packets.PacketPlayOutWindowData; +import com.loohp.limbo.player.Player; + +import java.io.IOException; +import java.util.Collections; +import java.util.Map; +import java.util.concurrent.ConcurrentHashMap; + +public class InventoryView { + + private final Player player; + private final String title; + private Inventory topInventory; + private final Inventory bottomInventory; + private final Map properties; + private ItemStack carriedItem; + + private final Unsafe unsafe; + + public InventoryView(Player player, String title, Inventory topInventory, Inventory bottomInventory) { + this.player = player; + this.title = title; + this.topInventory = topInventory; + this.bottomInventory = bottomInventory; + this.properties = new ConcurrentHashMap<>(); + this.carriedItem = null; + + this.unsafe = new Unsafe(this); + } + + public ItemStack getCarriedItem() { + return carriedItem; + } + + public void setCarriedItem(ItemStack carriedItem) { + this.carriedItem = carriedItem; + } + + public InventoryType getType() { + return topInventory.getType(); + } + + public Player getPlayer() { + return player; + } + + public String getTitle() { + return title; + } + + public Inventory getTopInventory() { + return topInventory; + } + + public Inventory getBottomInventory() { + return bottomInventory; + } + + public Map getProperties() { + return Collections.unmodifiableMap(properties); + } + + public int countSlots() { + return topInventory.getSize() + bottomInventory.getSize(); + } + + public ItemStack getItem(int index) { + if (topInventory != null) { + if (index < topInventory.getSize()) { + return topInventory.getItem(topInventory.getUnsafe().b().applyAsInt(index)); + } + index -= topInventory.getSize(); + } + return bottomInventory.getItem(bottomInventory.getUnsafe().b().applyAsInt(index)); + } + + public void setItem(int index, ItemStack itemStack) { + if (topInventory != null) { + if (index < topInventory.getSize()) { + topInventory.setItem(topInventory.getUnsafe().b().applyAsInt(index), itemStack); + return; + } + index -= topInventory.getSize(); + } + bottomInventory.setItem(bottomInventory.getUnsafe().b().applyAsInt(index), itemStack); + } + + public void setProperty(InventoryView.Property prop, int value) { + if (topInventory != null && prop.getType().equals(topInventory.getType())) { + Integer id = topInventory.getUnsafe().c().get(player); + if (id != null) { + properties.put(prop, value); + PacketPlayOutWindowData packet = new PacketPlayOutWindowData(id, prop.getId(), value); + try { + player.clientConnection.sendPacket(packet); + } catch (IOException e) { + e.printStackTrace(); + } + } + } + } + + @SuppressWarnings("DeprecatedIsStillUsed") + @Deprecated + public Unsafe getUnsafe() { + return unsafe; + } + + @SuppressWarnings("DeprecatedIsStillUsed") + @Deprecated + public static class Unsafe { + + private final InventoryView inventoryView; + + @Deprecated + public Unsafe(InventoryView inventoryView) { + this.inventoryView = inventoryView; + } + + @Deprecated + public void a(Inventory topInventory) { + inventoryView.topInventory = topInventory; + inventoryView.properties.clear(); + } + } + + /** + * Represents various extra properties of certain inventory windows. + */ + public enum Property { + /** + * The progress of the down-pointing arrow in a brewing inventory. + */ + BREW_TIME(0, InventoryType.BREWING), + /** + * The progress of the fuel slot in a brewing inventory. + *

+ * This is a value between 0 and 20, with 0 making the bar empty, and 20 + * making the bar full. + */ + FUEL_TIME(1, InventoryType.BREWING), + /** + * The progress of the flame in a furnace inventory. + */ + BURN_TIME(0, InventoryType.FURNACE), + /** + * How many total ticks the current fuel should last. + */ + TICKS_FOR_CURRENT_FUEL(1, InventoryType.FURNACE), + /** + * The progress of the right-pointing arrow in a furnace inventory. + */ + COOK_TIME(2, InventoryType.FURNACE), + /** + * How many total ticks the current smelting should last. + */ + TICKS_FOR_CURRENT_SMELTING(3, InventoryType.FURNACE), + /** + * In an enchanting inventory, the top button's experience level + * value. + */ + ENCHANT_BUTTON1(0, InventoryType.ENCHANTING), + /** + * In an enchanting inventory, the middle button's experience level + * value. + */ + ENCHANT_BUTTON2(1, InventoryType.ENCHANTING), + /** + * In an enchanting inventory, the bottom button's experience level + * value. + */ + ENCHANT_BUTTON3(2, InventoryType.ENCHANTING), + /** + * In an enchanting inventory, the first four bits of the player's xpSeed. + */ + ENCHANT_XP_SEED(3, InventoryType.ENCHANTING), + /** + * In an enchanting inventory, the top button's enchantment's id + */ + ENCHANT_ID1(4, InventoryType.ENCHANTING), + /** + * In an enchanting inventory, the middle button's enchantment's id + */ + ENCHANT_ID2(5, InventoryType.ENCHANTING), + /** + * In an enchanting inventory, the bottom button's enchantment's id + */ + ENCHANT_ID3(6, InventoryType.ENCHANTING), + /** + * In an enchanting inventory, the top button's level value. + */ + ENCHANT_LEVEL1(7, InventoryType.ENCHANTING), + /** + * In an enchanting inventory, the middle button's level value. + */ + ENCHANT_LEVEL2(8, InventoryType.ENCHANTING), + /** + * In an enchanting inventory, the bottom button's level value. + */ + ENCHANT_LEVEL3(9, InventoryType.ENCHANTING), + /** + * In an beacon inventory, the levels of the beacon + */ + LEVELS(0, InventoryType.BEACON), + /** + * In an beacon inventory, the primary potion effect + */ + PRIMARY_EFFECT(1, InventoryType.BEACON), + /** + * In an beacon inventory, the secondary potion effect + */ + SECONDARY_EFFECT(2, InventoryType.BEACON), + /** + * The repair's cost in xp levels + */ + REPAIR_COST(0, InventoryType.ANVIL), + /** + * The lectern's current open book page + */ + BOOK_PAGE(0, InventoryType.LECTERN); + + private final int id; + private final InventoryType style; + + Property(int id, InventoryType appliesTo) { + this.id = id; + style = appliesTo; + } + + public InventoryType getType() { + return style; + } + + /** + * Gets the id of this view. + * + * @return the id of this view + * @deprecated Magic value + */ + @Deprecated + public int getId() { + return id; + } + } + +} diff --git a/src/main/java/com/loohp/limbo/inventory/ItemStack.java b/src/main/java/com/loohp/limbo/inventory/ItemStack.java new file mode 100644 index 0000000..31ae90e --- /dev/null +++ b/src/main/java/com/loohp/limbo/inventory/ItemStack.java @@ -0,0 +1,122 @@ +/* + * This file is part of Limbo. + * + * Copyright (C) 2022. LoohpJames + * Copyright (C) 2022. Contributors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.loohp.limbo.inventory; + +import net.kyori.adventure.key.Key; +import net.querz.nbt.tag.CompoundTag; + +import java.util.Objects; + +public class ItemStack implements Cloneable { + + public static final ItemStack AIR = new ItemStack(Key.key("minecraft:air")); + + private final Key material; + private final int amount; + private final CompoundTag nbt; + + private CompoundTag fullTag; + + public ItemStack(Key material) { + this(material, 1); + } + + public ItemStack(Key material, int amount) { + this(material, amount, null); + } + + public ItemStack(Key material, int amount, CompoundTag nbt) { + this.material = material; + this.amount = amount; + this.nbt = nbt; + this.fullTag = null; + } + + public ItemStack(CompoundTag fullTag) { + this.material = Key.key(fullTag.getString("id")); + this.amount = fullTag.getInt("Count"); + this.nbt = fullTag.containsKey("tag") ? fullTag.getCompoundTag("tag") : null; + this.fullTag = fullTag.clone(); + } + + @SuppressWarnings("MethodDoesntCallSuperMethod") + @Override + public ItemStack clone() { + return new ItemStack(material, amount, nbt == null ? null : nbt.clone()); + } + + public Key type() { + return material; + } + + public ItemStack type(Key material) { + return new ItemStack(material, amount, nbt == null ? null : nbt.clone()); + } + + public int amount() { + return amount; + } + + public ItemStack amount(int amount) { + return new ItemStack(material, amount, nbt == null ? null : nbt.clone()); + } + + public CompoundTag nbt() { + return nbt; + } + + public ItemStack nbt(CompoundTag nbt) { + return new ItemStack(material, amount, nbt == null ? null : nbt.clone()); + } + + public int getMaxStackSize() { + return 64; + } + + public CompoundTag getFullTag() { + if (fullTag != null) { + return fullTag; + } + CompoundTag compoundTag = new CompoundTag(); + compoundTag.putString("id", material.toString()); + compoundTag.putInt("Count", amount); + if (nbt != null) { + compoundTag.put("tag", nbt); + } + return fullTag = compoundTag; + } + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + ItemStack itemStack = (ItemStack) o; + return amount == itemStack.amount && material.equals(itemStack.material) && Objects.equals(nbt, itemStack.nbt); + } + + public boolean isSimilar(ItemStack stack) { + return material.equals(stack.material) && Objects.equals(nbt, stack.nbt); + } + + @Override + public int hashCode() { + return Objects.hash(material, amount, nbt); + } +} diff --git a/src/main/java/com/loohp/limbo/inventory/TitledInventory.java b/src/main/java/com/loohp/limbo/inventory/TitledInventory.java new file mode 100644 index 0000000..ee71c4f --- /dev/null +++ b/src/main/java/com/loohp/limbo/inventory/TitledInventory.java @@ -0,0 +1,28 @@ +/* + * This file is part of Limbo. + * + * Copyright (C) 2022. LoohpJames + * Copyright (C) 2022. Contributors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.loohp.limbo.inventory; + +import net.kyori.adventure.text.Component; + +public interface TitledInventory extends Inventory { + + Component getTitle(); + +} diff --git a/src/main/java/com/loohp/limbo/location/BlockFace.java b/src/main/java/com/loohp/limbo/location/BlockFace.java new file mode 100644 index 0000000..4c30068 --- /dev/null +++ b/src/main/java/com/loohp/limbo/location/BlockFace.java @@ -0,0 +1,185 @@ +/* + * This file is part of Limbo. + * + * Copyright (C) 2022. LoohpJames + * Copyright (C) 2022. Contributors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.loohp.limbo.location; + +/** + * Represents the face of a block + */ +public enum BlockFace { + + NORTH(0, 0, -1), + EAST(1, 0, 0), + SOUTH(0, 0, 1), + WEST(-1, 0, 0), + UP(0, 1, 0), + DOWN(0, -1, 0), + NORTH_EAST(NORTH, EAST), + NORTH_WEST(NORTH, WEST), + SOUTH_EAST(SOUTH, EAST), + SOUTH_WEST(SOUTH, WEST), + WEST_NORTH_WEST(WEST, NORTH_WEST), + NORTH_NORTH_WEST(NORTH, NORTH_WEST), + NORTH_NORTH_EAST(NORTH, NORTH_EAST), + EAST_NORTH_EAST(EAST, NORTH_EAST), + EAST_SOUTH_EAST(EAST, SOUTH_EAST), + SOUTH_SOUTH_EAST(SOUTH, SOUTH_EAST), + SOUTH_SOUTH_WEST(SOUTH, SOUTH_WEST), + WEST_SOUTH_WEST(WEST, SOUTH_WEST), + SELF(0, 0, 0); + + private final int modX; + private final int modY; + private final int modZ; + + BlockFace(final int modX, final int modY, final int modZ) { + this.modX = modX; + this.modY = modY; + this.modZ = modZ; + } + + BlockFace(final BlockFace face1, final BlockFace face2) { + this.modX = face1.getModX() + face2.getModX(); + this.modY = face1.getModY() + face2.getModY(); + this.modZ = face1.getModZ() + face2.getModZ(); + } + + /** + * Get the amount of X-coordinates to modify to get the represented block + * + * @return Amount of X-coordinates to modify + */ + public int getModX() { + return modX; + } + + /** + * Get the amount of Y-coordinates to modify to get the represented block + * + * @return Amount of Y-coordinates to modify + */ + public int getModY() { + return modY; + } + + /** + * Get the amount of Z-coordinates to modify to get the represented block + * + * @return Amount of Z-coordinates to modify + */ + public int getModZ() { + return modZ; + } + + /** + * Gets the normal vector corresponding to this block face. + * + * @return the normal vector + */ + public Vector getDirection() { + Vector direction = new Vector(modX, modY, modZ); + if (modX != 0 || modY != 0 || modZ != 0) { + direction.normalize(); + } + return direction; + } + + /** + * Returns true if this face is aligned with one of the unit axes in 3D + * Cartesian space (ie NORTH, SOUTH, EAST, WEST, UP, DOWN). + * + * @return Cartesian status + */ + public boolean isCartesian() { + switch (this) { + case NORTH: + case SOUTH: + case EAST: + case WEST: + case UP: + case DOWN: + return true; + default: + return false; + } + } + + public BlockFace getOppositeFace() { + switch (this) { + case NORTH: + return BlockFace.SOUTH; + + case SOUTH: + return BlockFace.NORTH; + + case EAST: + return BlockFace.WEST; + + case WEST: + return BlockFace.EAST; + + case UP: + return BlockFace.DOWN; + + case DOWN: + return BlockFace.UP; + + case NORTH_EAST: + return BlockFace.SOUTH_WEST; + + case NORTH_WEST: + return BlockFace.SOUTH_EAST; + + case SOUTH_EAST: + return BlockFace.NORTH_WEST; + + case SOUTH_WEST: + return BlockFace.NORTH_EAST; + + case WEST_NORTH_WEST: + return BlockFace.EAST_SOUTH_EAST; + + case NORTH_NORTH_WEST: + return BlockFace.SOUTH_SOUTH_EAST; + + case NORTH_NORTH_EAST: + return BlockFace.SOUTH_SOUTH_WEST; + + case EAST_NORTH_EAST: + return BlockFace.WEST_SOUTH_WEST; + + case EAST_SOUTH_EAST: + return BlockFace.WEST_NORTH_WEST; + + case SOUTH_SOUTH_EAST: + return BlockFace.NORTH_NORTH_WEST; + + case SOUTH_SOUTH_WEST: + return BlockFace.NORTH_NORTH_EAST; + + case WEST_SOUTH_WEST: + return BlockFace.EAST_NORTH_EAST; + + case SELF: + return BlockFace.SELF; + } + + return BlockFace.SELF; + } +} diff --git a/src/main/java/com/loohp/limbo/location/MovingObjectPosition.java b/src/main/java/com/loohp/limbo/location/MovingObjectPosition.java new file mode 100644 index 0000000..f931418 --- /dev/null +++ b/src/main/java/com/loohp/limbo/location/MovingObjectPosition.java @@ -0,0 +1,51 @@ +/* + * This file is part of Limbo. + * + * Copyright (C) 2022. LoohpJames + * Copyright (C) 2022. Contributors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.loohp.limbo.location; + +import com.loohp.limbo.entity.Entity; + +public abstract class MovingObjectPosition { + + protected final Vector location; + + protected MovingObjectPosition(Vector vec3d) { + this.location = vec3d; + } + + public double distanceTo(Entity entity) { + double d0 = this.location.x - entity.getX(); + double d1 = this.location.y - entity.getY(); + double d2 = this.location.z - entity.getZ(); + + return d0 * d0 + d1 * d1 + d2 * d2; + } + + public abstract MovingObjectPosition.EnumMovingObjectType getType(); + + public Vector getLocation() { + return this.location; + } + + public enum EnumMovingObjectType { + + MISS, BLOCK, ENTITY; + + } +} \ No newline at end of file diff --git a/src/main/java/com/loohp/limbo/location/MovingObjectPositionBlock.java b/src/main/java/com/loohp/limbo/location/MovingObjectPositionBlock.java new file mode 100644 index 0000000..f8bc719 --- /dev/null +++ b/src/main/java/com/loohp/limbo/location/MovingObjectPositionBlock.java @@ -0,0 +1,71 @@ +/* + * This file is part of Limbo. + * + * Copyright (C) 2022. LoohpJames + * Copyright (C) 2022. Contributors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.loohp.limbo.location; + +import com.loohp.limbo.world.BlockPosition; + +public class MovingObjectPositionBlock extends MovingObjectPosition { + + private final BlockFace direction; + private final BlockPosition blockPos; + private final boolean miss; + private final boolean inside; + + public static MovingObjectPositionBlock miss(Vector vec3d, BlockFace direction, BlockPosition blockposition) { + return new MovingObjectPositionBlock(true, vec3d, direction, blockposition, false); + } + + public MovingObjectPositionBlock(Vector vec3d, BlockFace direction, BlockPosition blockposition, boolean flag) { + this(false, vec3d, direction, blockposition, flag); + } + + private MovingObjectPositionBlock(boolean flag, Vector vec3d, BlockFace direction, BlockPosition blockposition, boolean flag1) { + super(vec3d); + this.miss = flag; + this.direction = direction; + this.blockPos = blockposition; + this.inside = flag1; + } + + public MovingObjectPositionBlock withDirection(BlockFace direction) { + return new MovingObjectPositionBlock(this.miss, this.location, direction, this.blockPos, this.inside); + } + + public MovingObjectPositionBlock withPosition(BlockPosition blockposition) { + return new MovingObjectPositionBlock(this.miss, this.location, this.direction, blockposition, this.inside); + } + + public BlockPosition getBlockPos() { + return this.blockPos; + } + + public BlockFace getDirection() { + return this.direction; + } + + @Override + public MovingObjectPosition.EnumMovingObjectType getType() { + return this.miss ? MovingObjectPosition.EnumMovingObjectType.MISS : MovingObjectPosition.EnumMovingObjectType.BLOCK; + } + + public boolean isInside() { + return this.inside; + } +} diff --git a/src/main/java/com/loohp/limbo/network/ClientConnection.java b/src/main/java/com/loohp/limbo/network/ClientConnection.java index 2602220..2c4cdbd 100644 --- a/src/main/java/com/loohp/limbo/network/ClientConnection.java +++ b/src/main/java/com/loohp/limbo/network/ClientConnection.java @@ -20,6 +20,9 @@ package com.loohp.limbo.network; import com.loohp.limbo.Limbo; +import com.loohp.limbo.events.inventory.InventoryCloseEvent; +import com.loohp.limbo.events.inventory.InventoryCreativeEvent; +import com.loohp.limbo.events.player.PlayerInteractEvent; import com.loohp.limbo.events.player.PlayerJoinEvent; import com.loohp.limbo.events.player.PlayerLoginEvent; import com.loohp.limbo.events.player.PlayerMoveEvent; @@ -30,6 +33,7 @@ import com.loohp.limbo.events.player.PlayerSpawnEvent; import com.loohp.limbo.events.player.PluginMessageEvent; import com.loohp.limbo.events.status.StatusPingEvent; import com.loohp.limbo.file.ServerProperties; +import com.loohp.limbo.inventory.Inventory; import com.loohp.limbo.location.Location; import com.loohp.limbo.network.protocol.packets.Packet; import com.loohp.limbo.network.protocol.packets.PacketHandshakingIn; @@ -40,7 +44,9 @@ import com.loohp.limbo.network.protocol.packets.PacketLoginOutDisconnect; import com.loohp.limbo.network.protocol.packets.PacketLoginOutLoginSuccess; import com.loohp.limbo.network.protocol.packets.PacketLoginOutPluginMessaging; import com.loohp.limbo.network.protocol.packets.PacketOut; +import com.loohp.limbo.network.protocol.packets.PacketPlayInBlockPlace; import com.loohp.limbo.network.protocol.packets.PacketPlayInChat; +import com.loohp.limbo.network.protocol.packets.PacketPlayInCloseWindow; import com.loohp.limbo.network.protocol.packets.PacketPlayInHeldItemChange; import com.loohp.limbo.network.protocol.packets.PacketPlayInKeepAlive; import com.loohp.limbo.network.protocol.packets.PacketPlayInPluginMessaging; @@ -49,7 +55,10 @@ import com.loohp.limbo.network.protocol.packets.PacketPlayInPositionAndLook; import com.loohp.limbo.network.protocol.packets.PacketPlayInResourcePackStatus; import com.loohp.limbo.network.protocol.packets.PacketPlayInResourcePackStatus.EnumResourcePackStatus; import com.loohp.limbo.network.protocol.packets.PacketPlayInRotation; +import com.loohp.limbo.network.protocol.packets.PacketPlayInSetCreativeSlot; import com.loohp.limbo.network.protocol.packets.PacketPlayInTabComplete; +import com.loohp.limbo.network.protocol.packets.PacketPlayInUseItem; +import com.loohp.limbo.network.protocol.packets.PacketPlayInWindowClick; import com.loohp.limbo.network.protocol.packets.PacketPlayOutDeclareCommands; import com.loohp.limbo.network.protocol.packets.PacketPlayOutDisconnect; import com.loohp.limbo.network.protocol.packets.PacketPlayOutEntityMetadata; @@ -86,6 +95,7 @@ import com.loohp.limbo.utils.GameMode; import com.loohp.limbo.utils.MojangAPIUtils; import com.loohp.limbo.utils.MojangAPIUtils.SkinResponse; import com.loohp.limbo.world.BlockPosition; +import com.loohp.limbo.world.BlockState; import com.loohp.limbo.world.World; import net.kyori.adventure.key.Key; import net.kyori.adventure.text.Component; @@ -114,6 +124,7 @@ import java.util.Arrays; import java.util.EnumSet; import java.util.HashSet; import java.util.List; +import java.util.Objects; import java.util.Optional; import java.util.Random; import java.util.Set; @@ -491,7 +502,7 @@ public class ClientConnection extends Thread { player = new Player(this, username, uuid, Limbo.getInstance().getNextEntityId(), Limbo.getInstance().getServerProperties().getWorldSpawn(), new PlayerInteractManager()); player.setSkinLayers((byte) (0x01 | 0x02 | 0x04 | 0x08 | 0x10 | 0x20 | 0x40)); - Limbo.getInstance().getUnsafe().addPlayer(player); + Limbo.getInstance().getUnsafe().a(player); break; } else if (packetIn instanceof PacketLoginInPluginMessaging) { PacketLoginInPluginMessaging response = (PacketLoginInPluginMessaging) packetIn; @@ -519,7 +530,7 @@ public class ClientConnection extends Thread { player = new Player(this, data.getUsername(), data.getUuid(), Limbo.getInstance().getNextEntityId(), Limbo.getInstance().getServerProperties().getWorldSpawn(), new PlayerInteractManager()); player.setSkinLayers((byte) (0x01 | 0x02 | 0x04 | 0x08 | 0x10 | 0x20 | 0x40)); - Limbo.getInstance().getUnsafe().addPlayer(player); + Limbo.getInstance().getUnsafe().a(player); break; } @@ -551,7 +562,7 @@ public class ClientConnection extends Thread { PacketPlayOutLogin join = new PacketPlayOutLogin(player.getEntityId(), false, properties.getDefaultGamemode(), Limbo.getInstance().getWorlds(), Limbo.getInstance().getDimensionRegistry().getCodec(), world, 0, (byte) properties.getMaxPlayers(), 8, 8, properties.isReducedDebugInfo(), true, false, true); sendPacket(join); - Limbo.getInstance().getUnsafe().setPlayerGameModeSilently(player, properties.getDefaultGamemode()); + Limbo.getInstance().getUnsafe().a(player, properties.getDefaultGamemode()); ByteArrayOutputStream brandOut = new ByteArrayOutputStream(); DataTypeIO.writeString(new DataOutputStream(brandOut), properties.getServerModName(), StandardCharsets.UTF_8); @@ -586,7 +597,7 @@ public class ClientConnection extends Thread { sendPacket(spawnPos); PacketPlayOutPositionAndLook positionLook = new PacketPlayOutPositionAndLook(worldSpawn.getX(), worldSpawn.getY(), worldSpawn.getZ(), worldSpawn.getYaw(), worldSpawn.getPitch(), 1, false); - Limbo.getInstance().getUnsafe().setPlayerLocationSilently(player, new Location(world, worldSpawn.getX(), worldSpawn.getY(), worldSpawn.getZ(), worldSpawn.getYaw(), worldSpawn.getPitch())); + Limbo.getInstance().getUnsafe().a(player, new Location(world, worldSpawn.getX(), worldSpawn.getY(), worldSpawn.getZ(), worldSpawn.getYaw(), worldSpawn.getPitch())); sendPacket(positionLook); player.getDataWatcher().update(); @@ -647,7 +658,7 @@ public class ClientConnection extends Thread { sendPacket(cancel); } else { Location to = event.getTo(); - Limbo.getInstance().getUnsafe().setPlayerLocationSilently(player, to); + Limbo.getInstance().getUnsafe().a(player, to); // If an event handler used setTo, let's make sure we tell the player about it. if (!originalTo.equals(to)) { PacketPlayOutPositionAndLook pos = new PacketPlayOutPositionAndLook(to.getX(), to.getY(), to.getZ(), to.getYaw(), to.getPitch(), 1, false); @@ -657,7 +668,9 @@ public class ClientConnection extends Thread { sendPacket(response); } }; + System.out.println("Waiting"); PacketIn packetIn = channel.readPacket(); + System.out.println("Received " + packetIn.getClass()); if (packetIn instanceof PacketPlayInPositionAndLook) { PacketPlayInPositionAndLook pos = (PacketPlayInPositionAndLook) packetIn; Location from = player.getLocation(); @@ -720,9 +733,9 @@ public class ClientConnection extends Thread { } else if (change.getSlot() != event.getSlot()) { PacketPlayOutHeldItemChange changePacket = new PacketPlayOutHeldItemChange(event.getSlot()); sendPacket(changePacket); - Limbo.getInstance().getUnsafe().setSelectedSlotSilently(player, event.getSlot()); + Limbo.getInstance().getUnsafe().a(player, event.getSlot()); } else { - Limbo.getInstance().getUnsafe().setSelectedSlotSilently(player, event.getSlot()); + Limbo.getInstance().getUnsafe().a(player, event.getSlot()); } } else if (packetIn instanceof PacketPlayInResourcePackStatus) { @@ -735,6 +748,42 @@ public class ClientConnection extends Thread { } else if (packetIn instanceof PacketPlayInPluginMessaging) { PacketPlayInPluginMessaging inPluginMessaging = (PacketPlayInPluginMessaging) packetIn; Limbo.getInstance().getEventsManager().callEvent(new PluginMessageEvent(player, inPluginMessaging.getChannel(), inPluginMessaging.getData())); + } else if (packetIn instanceof PacketPlayInBlockPlace) { + PacketPlayInBlockPlace packet = (PacketPlayInBlockPlace) packetIn; + Limbo.getInstance().getEventsManager().callEvent(new PlayerInteractEvent(player, PlayerInteractEvent.Action.RIGHT_CLICK_AIR, player.getEquipment().getItem(packet.getHand()), null, null, packet.getHand())); + } else if (packetIn instanceof PacketPlayInUseItem) { + PacketPlayInUseItem packet = (PacketPlayInUseItem) packetIn; + BlockState block = player.getWorld().getBlock(packet.getBlockHit().getBlockPos()); + Limbo.getInstance().getEventsManager().callEvent(new PlayerInteractEvent(player, PlayerInteractEvent.Action.RIGHT_CLICK_AIR, player.getEquipment().getItem(packet.getHand()), block, packet.getBlockHit().getDirection(), packet.getHand())); + } else if (packetIn instanceof PacketPlayInSetCreativeSlot) { + PacketPlayInSetCreativeSlot packet = (PacketPlayInSetCreativeSlot) packetIn; + InventoryCreativeEvent event = Limbo.getInstance().getEventsManager().callEvent(new InventoryCreativeEvent(player, player.getInventoryView(), player.getInventory(), player.getInventory().getUnsafe().b().applyAsInt(packet.getSlotNumber()), packet.getItemStack())); + if (event.isCancelled()) { + player.updateInventory(); + } else { + player.getInventory().getUnsafe().b(packet.getSlotNumber(), event.getNewItem()); + } + } else if (packetIn instanceof PacketPlayInWindowClick) { + PacketPlayInWindowClick packet = (PacketPlayInWindowClick) packetIn; + /* + InventoryCreativeEvent event = Limbo.getInstance().getEventsManager().callEvent(new InventoryCreativeEvent(player, player.getInventoryView(), player.getInventory(), player.getInventory().getUnsafe().b().applyAsInt(packet.getSlotNumber()), packet.getItemStack())); + if (event.isCancelled()) { + player.updateInventory(); + } else { + player.getInventory().getUnsafe().b(packet.getSlotNumber(), event.getNewItem()); + } + */ + } else if (packetIn instanceof PacketPlayInCloseWindow) { + PacketPlayInCloseWindow packet = (PacketPlayInCloseWindow) packetIn; + Inventory inventory = player.getInventoryView().getTopInventory(); + if (inventory != null) { + Integer id = inventory.getUnsafe().c().get(player); + if (id != null) { + Limbo.getInstance().getEventsManager().callEvent(new InventoryCloseEvent(player, player.getInventoryView())); + player.getInventoryView().getUnsafe().a(null); + inventory.getUnsafe().c().remove(player); + } + } } } catch (Exception e) { break; @@ -757,7 +806,7 @@ public class ClientConnection extends Thread { state = ClientState.DISCONNECTED; if (player != null) { - Limbo.getInstance().getUnsafe().removePlayer(player); + Limbo.getInstance().getUnsafe().b(player); } Limbo.getInstance().getServerConnection().getClients().remove(this); running = false; diff --git a/src/main/java/com/loohp/limbo/network/protocol/packets/PacketPlayInBlockPlace.java b/src/main/java/com/loohp/limbo/network/protocol/packets/PacketPlayInBlockPlace.java new file mode 100644 index 0000000..1420873 --- /dev/null +++ b/src/main/java/com/loohp/limbo/network/protocol/packets/PacketPlayInBlockPlace.java @@ -0,0 +1,49 @@ +/* + * This file is part of Limbo. + * + * Copyright (C) 2022. LoohpJames + * Copyright (C) 2022. Contributors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.loohp.limbo.network.protocol.packets; + +import com.loohp.limbo.inventory.EquipmentSlot; +import com.loohp.limbo.utils.DataTypeIO; + +import java.io.DataInputStream; +import java.io.IOException; + +public class PacketPlayInBlockPlace extends PacketIn { + + private EquipmentSlot hand; + private int sequence; + + public PacketPlayInBlockPlace(EquipmentSlot hand, int sequence) { + this.hand = hand; + this.sequence = sequence; + } + + public PacketPlayInBlockPlace(DataInputStream in) throws IOException { + this(EquipmentSlot.values()[DataTypeIO.readVarInt(in)], DataTypeIO.readVarInt(in)); + } + + public EquipmentSlot getHand() { + return hand; + } + + public int getSequence() { + return sequence; + } +} diff --git a/src/main/java/com/loohp/limbo/network/protocol/packets/PacketPlayInCloseWindow.java b/src/main/java/com/loohp/limbo/network/protocol/packets/PacketPlayInCloseWindow.java new file mode 100644 index 0000000..ef7a4f1 --- /dev/null +++ b/src/main/java/com/loohp/limbo/network/protocol/packets/PacketPlayInCloseWindow.java @@ -0,0 +1,40 @@ +/* + * This file is part of Limbo. + * + * Copyright (C) 2022. LoohpJames + * Copyright (C) 2022. Contributors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.loohp.limbo.network.protocol.packets; + +import java.io.DataInputStream; +import java.io.IOException; + +public class PacketPlayInCloseWindow extends PacketIn { + + private int containerId; + + public PacketPlayInCloseWindow(int containerId) { + this.containerId = containerId; + } + + public PacketPlayInCloseWindow(DataInputStream in) throws IOException { + this(in.readByte()); + } + + public int getContainerId() { + return containerId; + } +} diff --git a/src/main/java/com/loohp/limbo/network/protocol/packets/PacketPlayInSetCreativeSlot.java b/src/main/java/com/loohp/limbo/network/protocol/packets/PacketPlayInSetCreativeSlot.java new file mode 100644 index 0000000..a8dd93d --- /dev/null +++ b/src/main/java/com/loohp/limbo/network/protocol/packets/PacketPlayInSetCreativeSlot.java @@ -0,0 +1,49 @@ +/* + * This file is part of Limbo. + * + * Copyright (C) 2022. LoohpJames + * Copyright (C) 2022. Contributors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.loohp.limbo.network.protocol.packets; + +import com.loohp.limbo.inventory.ItemStack; +import com.loohp.limbo.utils.DataTypeIO; + +import java.io.DataInputStream; +import java.io.IOException; + +public class PacketPlayInSetCreativeSlot extends PacketIn { + + private int slotNumber; + private ItemStack itemStack; + + public PacketPlayInSetCreativeSlot(int slotNumber, ItemStack itemStack) { + this.slotNumber = slotNumber; + this.itemStack = itemStack; + } + + public PacketPlayInSetCreativeSlot(DataInputStream in) throws IOException { + this(in.readShort(), DataTypeIO.readItemStack(in)); + } + + public int getSlotNumber() { + return slotNumber; + } + + public ItemStack getItemStack() { + return itemStack; + } +} diff --git a/src/main/java/com/loohp/limbo/network/protocol/packets/PacketPlayInUseItem.java b/src/main/java/com/loohp/limbo/network/protocol/packets/PacketPlayInUseItem.java new file mode 100644 index 0000000..82e51a4 --- /dev/null +++ b/src/main/java/com/loohp/limbo/network/protocol/packets/PacketPlayInUseItem.java @@ -0,0 +1,56 @@ +/* + * This file is part of Limbo. + * + * Copyright (C) 2022. LoohpJames + * Copyright (C) 2022. Contributors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.loohp.limbo.network.protocol.packets; + +import com.loohp.limbo.inventory.EquipmentSlot; +import com.loohp.limbo.location.MovingObjectPositionBlock; +import com.loohp.limbo.utils.DataTypeIO; + +import java.io.DataInputStream; +import java.io.IOException; + +public class PacketPlayInUseItem extends PacketIn { + + private EquipmentSlot hand; + private MovingObjectPositionBlock blockHit; + private int sequence; + + public PacketPlayInUseItem(EquipmentSlot hand, MovingObjectPositionBlock blockHit, int sequence) { + this.hand = hand; + this.blockHit = blockHit; + this.sequence = sequence; + } + + public PacketPlayInUseItem(DataInputStream in) throws IOException { + this(EquipmentSlot.values()[DataTypeIO.readVarInt(in)], DataTypeIO.readBlockHitResult(in), DataTypeIO.readVarInt(in)); + } + + public EquipmentSlot getHand() { + return hand; + } + + public MovingObjectPositionBlock getBlockHit() { + return blockHit; + } + + public int getSequence() { + return sequence; + } +} diff --git a/src/main/java/com/loohp/limbo/network/protocol/packets/PacketPlayInWindowClick.java b/src/main/java/com/loohp/limbo/network/protocol/packets/PacketPlayInWindowClick.java new file mode 100644 index 0000000..286fc08 --- /dev/null +++ b/src/main/java/com/loohp/limbo/network/protocol/packets/PacketPlayInWindowClick.java @@ -0,0 +1,96 @@ +/* + * This file is part of Limbo. + * + * Copyright (C) 2022. LoohpJames + * Copyright (C) 2022. Contributors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.loohp.limbo.network.protocol.packets; + +import com.loohp.limbo.inventory.InventoryClickType; +import com.loohp.limbo.inventory.ItemStack; +import com.loohp.limbo.utils.DataTypeIO; + +import java.io.DataInputStream; +import java.io.IOException; +import java.util.Collections; +import java.util.HashMap; +import java.util.Map; + +public class PacketPlayInWindowClick extends PacketIn { + + private int containerId; + private int stateId; + private int slotNum; + private int buttonNum; + private InventoryClickType clickType; + private Map changedSlots; + private ItemStack carriedItem; + + public PacketPlayInWindowClick(int containerId, int stateId, int slotNum, int buttonNum, InventoryClickType clickType, Map changedSlots, ItemStack carriedItem) { + this.containerId = containerId; + this.stateId = stateId; + this.slotNum = slotNum; + this.buttonNum = buttonNum; + this.clickType = clickType; + this.changedSlots = changedSlots; + this.carriedItem = carriedItem; + } + + public PacketPlayInWindowClick(DataInputStream in) throws IOException { + this.containerId = in.readByte(); + this.stateId = DataTypeIO.readVarInt(in); + this.slotNum = in.readShort(); + this.buttonNum = in.readByte(); + this.clickType = InventoryClickType.values()[DataTypeIO.readVarInt(in)]; + Map changedSlots = new HashMap<>(); + int size = DataTypeIO.readVarInt(in); + for (int i = 0; i < size; i++) { + int slot = in.readShort(); + ItemStack itemStack = DataTypeIO.readItemStack(in); + changedSlots.put(slot, itemStack); + } + this.changedSlots = Collections.unmodifiableMap(changedSlots); + this.carriedItem = DataTypeIO.readItemStack(in); + } + + public int getContainerId() { + return containerId; + } + + public int getStateId() { + return stateId; + } + + public int getSlotNum() { + return slotNum; + } + + public int getButtonNum() { + return buttonNum; + } + + public InventoryClickType getClickType() { + return clickType; + } + + public Map getChangedSlots() { + return changedSlots; + } + + public ItemStack getCarriedItem() { + return carriedItem; + } +} diff --git a/src/main/java/com/loohp/limbo/network/protocol/packets/PacketPlayOutCloseWindow.java b/src/main/java/com/loohp/limbo/network/protocol/packets/PacketPlayOutCloseWindow.java new file mode 100644 index 0000000..e1b67e3 --- /dev/null +++ b/src/main/java/com/loohp/limbo/network/protocol/packets/PacketPlayOutCloseWindow.java @@ -0,0 +1,49 @@ +/* + * This file is part of Limbo. + * + * Copyright (C) 2022. LoohpJames + * Copyright (C) 2022. Contributors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.loohp.limbo.network.protocol.packets; + +import java.io.ByteArrayOutputStream; +import java.io.DataOutputStream; +import java.io.IOException; + +public class PacketPlayOutCloseWindow extends PacketOut { + + private int containerId; + + public PacketPlayOutCloseWindow(int containerId) { + this.containerId = containerId; + } + + public int getContainerId() { + return containerId; + } + + @Override + public byte[] serializePacket() throws IOException { + ByteArrayOutputStream buffer = new ByteArrayOutputStream(); + + DataOutputStream output = new DataOutputStream(buffer); + output.writeByte(Packet.getPlayOut().get(getClass())); + + output.writeByte(containerId); + + return buffer.toByteArray(); + } +} diff --git a/src/main/java/com/loohp/limbo/network/protocol/packets/PacketPlayOutOpenWindow.java b/src/main/java/com/loohp/limbo/network/protocol/packets/PacketPlayOutOpenWindow.java new file mode 100644 index 0000000..ece04bc --- /dev/null +++ b/src/main/java/com/loohp/limbo/network/protocol/packets/PacketPlayOutOpenWindow.java @@ -0,0 +1,70 @@ +/* + * This file is part of Limbo. + * + * Copyright (C) 2022. LoohpJames + * Copyright (C) 2022. Contributors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.loohp.limbo.network.protocol.packets; + +import com.loohp.limbo.registry.Registry; +import com.loohp.limbo.utils.DataTypeIO; +import net.kyori.adventure.key.Key; +import net.kyori.adventure.text.Component; +import net.kyori.adventure.text.serializer.gson.GsonComponentSerializer; + +import java.io.ByteArrayOutputStream; +import java.io.DataOutputStream; +import java.io.IOException; +import java.nio.charset.StandardCharsets; + +public class PacketPlayOutOpenWindow extends PacketOut { + + private int containerId; + private Key type; + private Component title; + + public PacketPlayOutOpenWindow(int containerId, Key type, Component title) { + this.containerId = containerId; + this.type = type; + this.title = title; + } + + public int getContainerId() { + return containerId; + } + + public Key getType() { + return type; + } + + public Component getTitle() { + return title; + } + + @Override + public byte[] serializePacket() throws IOException { + ByteArrayOutputStream buffer = new ByteArrayOutputStream(); + + DataOutputStream output = new DataOutputStream(buffer); + output.writeByte(Packet.getPlayOut().get(getClass())); + + DataTypeIO.writeVarInt(output, containerId); + DataTypeIO.writeVarInt(output, Registry.MENU_REGISTRY.getId(type)); + DataTypeIO.writeString(output, GsonComponentSerializer.gson().serialize(title), StandardCharsets.UTF_8); + + return buffer.toByteArray(); + } +} diff --git a/src/main/java/com/loohp/limbo/network/protocol/packets/PacketPlayOutSetSlot.java b/src/main/java/com/loohp/limbo/network/protocol/packets/PacketPlayOutSetSlot.java new file mode 100644 index 0000000..4cbf813 --- /dev/null +++ b/src/main/java/com/loohp/limbo/network/protocol/packets/PacketPlayOutSetSlot.java @@ -0,0 +1,74 @@ +/* + * This file is part of Limbo. + * + * Copyright (C) 2022. LoohpJames + * Copyright (C) 2022. Contributors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.loohp.limbo.network.protocol.packets; + +import com.loohp.limbo.inventory.ItemStack; +import com.loohp.limbo.utils.DataTypeIO; + +import java.io.ByteArrayOutputStream; +import java.io.DataOutputStream; +import java.io.IOException; +import java.util.List; + +public class PacketPlayOutSetSlot extends PacketOut { + + private int containerId; + private int stateId; + private int slot; + private ItemStack itemStack; + + public PacketPlayOutSetSlot(int containerId, int stateId, int slot, ItemStack itemStack) { + this.containerId = containerId; + this.stateId = stateId; + this.slot = slot; + this.itemStack = itemStack; + } + + public int getContainerId() { + return containerId; + } + + public int getStateId() { + return stateId; + } + + public int getSlot() { + return slot; + } + + public ItemStack getItemStack() { + return itemStack; + } + + @Override + public byte[] serializePacket() throws IOException { + ByteArrayOutputStream buffer = new ByteArrayOutputStream(); + + DataOutputStream output = new DataOutputStream(buffer); + output.writeByte(Packet.getPlayOut().get(getClass())); + + output.writeByte(containerId); + DataTypeIO.writeVarInt(output, stateId); + output.writeShort(slot); + DataTypeIO.writeItemStack(output, itemStack); + + return buffer.toByteArray(); + } +} diff --git a/src/main/java/com/loohp/limbo/network/protocol/packets/PacketPlayOutWindowData.java b/src/main/java/com/loohp/limbo/network/protocol/packets/PacketPlayOutWindowData.java new file mode 100644 index 0000000..4e3874c --- /dev/null +++ b/src/main/java/com/loohp/limbo/network/protocol/packets/PacketPlayOutWindowData.java @@ -0,0 +1,63 @@ +/* + * This file is part of Limbo. + * + * Copyright (C) 2022. LoohpJames + * Copyright (C) 2022. Contributors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.loohp.limbo.network.protocol.packets; + +import java.io.ByteArrayOutputStream; +import java.io.DataOutputStream; +import java.io.IOException; + +public class PacketPlayOutWindowData extends PacketOut { + + private int containerId; + private int id; + private int value; + + public PacketPlayOutWindowData(int containerId, int id, int value) { + this.containerId = containerId; + this.id = id; + this.value = value; + } + + public int getContainerId() { + return containerId; + } + + public int getId() { + return id; + } + + public int getValue() { + return value; + } + + @Override + public byte[] serializePacket() throws IOException { + ByteArrayOutputStream buffer = new ByteArrayOutputStream(); + + DataOutputStream output = new DataOutputStream(buffer); + output.writeByte(Packet.getPlayOut().get(getClass())); + + output.writeByte(containerId); + output.writeShort(id); + output.writeShort(value); + + return buffer.toByteArray(); + } +} diff --git a/src/main/java/com/loohp/limbo/network/protocol/packets/PacketPlayOutWindowItems.java b/src/main/java/com/loohp/limbo/network/protocol/packets/PacketPlayOutWindowItems.java new file mode 100644 index 0000000..0765ef9 --- /dev/null +++ b/src/main/java/com/loohp/limbo/network/protocol/packets/PacketPlayOutWindowItems.java @@ -0,0 +1,77 @@ +/* + * This file is part of Limbo. + * + * Copyright (C) 2022. LoohpJames + * Copyright (C) 2022. Contributors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.loohp.limbo.network.protocol.packets; + +import com.loohp.limbo.inventory.ItemStack; +import com.loohp.limbo.utils.DataTypeIO; + +import java.io.ByteArrayOutputStream; +import java.io.DataOutputStream; +import java.io.IOException; +import java.util.List; + +public class PacketPlayOutWindowItems extends PacketOut { + + private int containerId; + private int stateId; + private List items; + private ItemStack carriedItem; + + public PacketPlayOutWindowItems(int containerId, int stateId, List items, ItemStack carriedItem) { + this.containerId = containerId; + this.stateId = stateId; + this.items = items; + this.carriedItem = carriedItem; + } + + public int getContainerId() { + return containerId; + } + + public int getStateId() { + return stateId; + } + + public List getItems() { + return items; + } + + public ItemStack getCarriedItem() { + return carriedItem; + } + + @Override + public byte[] serializePacket() throws IOException { + ByteArrayOutputStream buffer = new ByteArrayOutputStream(); + + DataOutputStream output = new DataOutputStream(buffer); + output.writeByte(Packet.getPlayOut().get(getClass())); + + output.writeByte(containerId); + DataTypeIO.writeVarInt(output, stateId); + DataTypeIO.writeVarInt(output, items.size()); + for (ItemStack itemStack : items) { + DataTypeIO.writeItemStack(output, itemStack); + } + DataTypeIO.writeItemStack(output, carriedItem); + + return buffer.toByteArray(); + } +} diff --git a/src/main/java/com/loohp/limbo/player/Player.java b/src/main/java/com/loohp/limbo/player/Player.java index e0a3e5a..a4fefd1 100644 --- a/src/main/java/com/loohp/limbo/player/Player.java +++ b/src/main/java/com/loohp/limbo/player/Player.java @@ -24,10 +24,17 @@ import com.loohp.limbo.commands.CommandSender; import com.loohp.limbo.entity.DataWatcher; import com.loohp.limbo.entity.DataWatcher.WatchableField; import com.loohp.limbo.entity.DataWatcher.WatchableObjectType; +import com.loohp.limbo.entity.EntityEquipment; import com.loohp.limbo.entity.EntityType; import com.loohp.limbo.entity.LivingEntity; +import com.loohp.limbo.events.inventory.InventoryCloseEvent; +import com.loohp.limbo.events.inventory.InventoryOpenEvent; import com.loohp.limbo.events.player.PlayerChatEvent; import com.loohp.limbo.events.player.PlayerTeleportEvent; +import com.loohp.limbo.inventory.Inventory; +import com.loohp.limbo.inventory.InventoryHolder; +import com.loohp.limbo.inventory.InventoryView; +import com.loohp.limbo.inventory.TitledInventory; import com.loohp.limbo.location.Location; import com.loohp.limbo.network.ClientConnection; import com.loohp.limbo.network.protocol.packets.ClientboundClearTitlesPacket; @@ -37,9 +44,11 @@ import com.loohp.limbo.network.protocol.packets.ClientboundSetTitleTextPacket; import com.loohp.limbo.network.protocol.packets.ClientboundSetTitlesAnimationPacket; import com.loohp.limbo.network.protocol.packets.ClientboundSystemChatPacket; import com.loohp.limbo.network.protocol.packets.PacketOut; +import com.loohp.limbo.network.protocol.packets.PacketPlayOutCloseWindow; import com.loohp.limbo.network.protocol.packets.PacketPlayOutGameState; import com.loohp.limbo.network.protocol.packets.PacketPlayOutHeldItemChange; import com.loohp.limbo.network.protocol.packets.PacketPlayOutNamedSoundEffect; +import com.loohp.limbo.network.protocol.packets.PacketPlayOutOpenWindow; import com.loohp.limbo.network.protocol.packets.PacketPlayOutPlayerListHeaderFooter; import com.loohp.limbo.network.protocol.packets.PacketPlayOutPositionAndLook; import com.loohp.limbo.network.protocol.packets.PacketPlayOutResourcePackSend; @@ -70,8 +79,9 @@ import java.time.Duration; import java.time.Instant; import java.util.UUID; import java.util.concurrent.ThreadLocalRandom; +import java.util.concurrent.atomic.AtomicInteger; -public class Player extends LivingEntity implements CommandSender { +public class Player extends LivingEntity implements CommandSender, InventoryHolder { public static final String CHAT_DEFAULT_FORMAT = "<%name%> %message%"; @@ -82,6 +92,9 @@ public class Player extends LivingEntity implements CommandSender { protected GameMode gamemode; protected DataWatcher watcher; protected byte selectedSlot; + protected final PlayerInventory playerInventory; + protected final InventoryView inventoryView; + private final AtomicInteger containerIdCounter; @WatchableField(MetadataIndex = 15, WatchableObjectType = WatchableObjectType.FLOAT) protected float additionalHearts = 0.0F; @@ -101,12 +114,19 @@ public class Player extends LivingEntity implements CommandSender { this.clientConnection = clientConnection; this.username = username; this.entityId = entityId; + this.containerIdCounter = new AtomicInteger(1); + this.playerInventory = new PlayerInventory(this); + this.inventoryView = new InventoryView(this, null, null, playerInventory); this.playerInteractManager = playerInteractManager; this.playerInteractManager.setPlayer(this); this.watcher = new DataWatcher(this); this.watcher.update(); } + protected int nextContainerId() { + return containerIdCounter.updateAndGet(i -> ++i > Byte.MAX_VALUE ? 1 : i); + } + public byte getSelectedSlot() { return selectedSlot; } @@ -551,14 +571,81 @@ public class Player extends LivingEntity implements CommandSender { } } + /** + * Use {@link com.loohp.limbo.bossbar.KeyedBossBar#showPlayer(Player)} instead + */ @Override + @Deprecated public void showBossBar(BossBar bar) { - throw new UnsupportedOperationException("This function has not been implemented yet."); + Limbo.getInstance().getBossBars().values().stream().filter(each -> each.getProperties() == bar).findFirst().ifPresent(each -> each.showPlayer(this)); + } + + /** + * Use {@link com.loohp.limbo.bossbar.KeyedBossBar#hidePlayer(Player)} instead + */ + @Override + @Deprecated + public void hideBossBar(BossBar bar) { + Limbo.getInstance().getBossBars().values().stream().filter(each -> each.getProperties() == bar).findFirst().ifPresent(each -> each.hidePlayer(this)); } @Override - public void hideBossBar(BossBar bar) { - throw new UnsupportedOperationException("This function has not been implemented yet."); + public PlayerInventory getInventory() { + return playerInventory; + } + + public InventoryView getInventoryView() { + return inventoryView; + } + + public void updateInventory() { + playerInventory.updateInventory(this); + } + + public void openInventory(Inventory inventory) { + inventoryView.getUnsafe().a(inventory); + int id = nextContainerId(); + inventory.getUnsafe().c().put(this, id); + InventoryOpenEvent event = Limbo.getInstance().getEventsManager().callEvent(new InventoryOpenEvent(this, inventoryView)); + if (event.isCancelled()) { + inventoryView.getUnsafe().a(null); + inventory.getUnsafe().c().remove(this); + } else { + Component title = inventory instanceof TitledInventory ? ((TitledInventory) inventory).getTitle() : Component.translatable("container.chest"); + PacketPlayOutOpenWindow packet = new PacketPlayOutOpenWindow(id, inventory.getType().getRawType(inventory.getSize()), title); + try { + clientConnection.sendPacket(packet); + } catch (IOException e) { + e.printStackTrace(); + } + inventory.updateInventory(this); + } + } + + public void closeInventory() { + Inventory inventory = inventoryView.getTopInventory(); + if (inventory != null) { + Integer id = inventory.getUnsafe().c().get(this); + if (id != null) { + Limbo.getInstance().getEventsManager().callEvent(new InventoryCloseEvent(this, inventoryView)); + inventoryView.getUnsafe().a(null); + inventory.getUnsafe().c().remove(this); + PacketPlayOutCloseWindow packet = new PacketPlayOutCloseWindow(id); + try { + clientConnection.sendPacket(packet); + } catch (IOException e) { + e.printStackTrace(); + } + } + } + } + + public EntityEquipment getEquipment() { + return playerInventory; + } + + @Override + public InventoryHolder getHolder() { + return this; } - } diff --git a/src/main/java/com/loohp/limbo/player/PlayerInventory.java b/src/main/java/com/loohp/limbo/player/PlayerInventory.java new file mode 100644 index 0000000..04e76c1 --- /dev/null +++ b/src/main/java/com/loohp/limbo/player/PlayerInventory.java @@ -0,0 +1,173 @@ +/* + * This file is part of Limbo. + * + * Copyright (C) 2022. LoohpJames + * Copyright (C) 2022. Contributors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.loohp.limbo.player; + +import com.google.common.collect.BiMap; +import com.google.common.collect.HashBiMap; +import com.google.common.collect.ImmutableBiMap; +import com.loohp.limbo.entity.EntityEquipment; +import com.loohp.limbo.inventory.AbstractInventory; +import com.loohp.limbo.inventory.EquipmentSlot; +import com.loohp.limbo.inventory.InventoryType; +import com.loohp.limbo.inventory.ItemStack; +import com.loohp.limbo.location.Location; + +import java.util.Arrays; +import java.util.Collections; +import java.util.EnumMap; +import java.util.Map; +import java.util.function.ToIntFunction; + +public class PlayerInventory extends AbstractInventory implements EntityEquipment { + + private static final Map> EQUIPMENT_SLOT_MAPPING; + private static final BiMap SLOT_MAPPING; + + static { + Map> equipmentSlotMapping = new EnumMap<>(EquipmentSlot.class); + equipmentSlotMapping.put(EquipmentSlot.MAINHAND, i -> i.getHolder().selectedSlot); + equipmentSlotMapping.put(EquipmentSlot.OFFHAND, i -> 40); + equipmentSlotMapping.put(EquipmentSlot.BOOTS, i -> 36); + equipmentSlotMapping.put(EquipmentSlot.LEGGINGS, i -> 37); + equipmentSlotMapping.put(EquipmentSlot.CHESTPLATE, i -> 38); + equipmentSlotMapping.put(EquipmentSlot.HELMET, i -> 39); + EQUIPMENT_SLOT_MAPPING = Collections.unmodifiableMap(equipmentSlotMapping); + + BiMap slotMapping = HashBiMap.create(41); + for (int i = 0; i < 9; i++) { + slotMapping.put(i, i + 36); + } + for (int i = 9; i < 36; i++) { + slotMapping.put(i, i); + } + for (int i = 36; i < 40; i++) { + slotMapping.put(i, i - 31); + } + slotMapping.put(40, 45); + SLOT_MAPPING = ImmutableBiMap.copyOf(slotMapping); + } + + private final Player player; + + public PlayerInventory(Player player) { + super(InventoryType.PLAYER.getDefaultSize(), player, InventoryType.PLAYER, i -> SLOT_MAPPING.getOrDefault(i, i), i -> SLOT_MAPPING.inverse().getOrDefault(i, i)); + this.player = player; + this.viewers.put(player, 0); + } + + @Override + public Player getHolder() { + return player; + } + + @Override + public void setItem(EquipmentSlot slot, ItemStack item) { + setItem(EQUIPMENT_SLOT_MAPPING.get(slot).applyAsInt(this), item); + } + + @Override + public ItemStack getItem(EquipmentSlot slot) { + return getItem(EQUIPMENT_SLOT_MAPPING.get(slot).applyAsInt(this)); + } + + @Override + public ItemStack getItemInMainHand() { + return getItem(EquipmentSlot.MAINHAND); + } + + @Override + public void setItemInMainHand(ItemStack item) { + setItem(EquipmentSlot.MAINHAND, item); + } + + @Override + public ItemStack getItemInOffHand() { + return getItem(EquipmentSlot.OFFHAND); + } + + @Override + public void setItemInOffHand(ItemStack item) { + setItem(EquipmentSlot.OFFHAND, item); + } + + @Override + public ItemStack getHelmet() { + return getItem(EquipmentSlot.HELMET); + } + + @Override + public void setHelmet(ItemStack helmet) { + setItem(EquipmentSlot.HELMET, helmet); + } + + @Override + public ItemStack getChestplate() { + return getItem(EquipmentSlot.CHESTPLATE); + } + + @Override + public void setChestplate(ItemStack chestplate) { + setItem(EquipmentSlot.CHESTPLATE, chestplate); + } + + @Override + public ItemStack getLeggings() { + return getItem(EquipmentSlot.LEGGINGS); + } + + @Override + public void setLeggings(ItemStack leggings) { + setItem(EquipmentSlot.LEGGINGS, leggings); + } + + @Override + public ItemStack getBoots() { + return getItem(EquipmentSlot.BOOTS); + } + + @Override + public void setBoots(ItemStack boots) { + setItem(EquipmentSlot.BOOTS, boots); + } + + @Override + public ItemStack[] getArmorContents() { + return Arrays.stream(EquipmentSlot.values()).filter(EquipmentSlot::isArmorSlot).map(this::getItem).toArray(ItemStack[]::new); + } + + @Override + public void setArmorContents(ItemStack[] items) { + int i = 0; + for (EquipmentSlot equipmentSlot : EquipmentSlot.values()) { + if (equipmentSlot.isArmorSlot()) { + if (i < items.length) { + setItem(equipmentSlot, items[i]); + } + i++; + } + } + } + + @Override + public Location getLocation() { + return player.getLocation(); + } + +} diff --git a/src/main/java/com/loohp/limbo/registry/Registry.java b/src/main/java/com/loohp/limbo/registry/Registry.java index ffa81e0..a9086e5 100644 --- a/src/main/java/com/loohp/limbo/registry/Registry.java +++ b/src/main/java/com/loohp/limbo/registry/Registry.java @@ -19,6 +19,8 @@ package com.loohp.limbo.registry; +import com.google.common.collect.BiMap; +import com.google.common.collect.HashBiMap; import com.loohp.limbo.Limbo; import net.kyori.adventure.key.Key; import org.json.simple.JSONObject; @@ -41,6 +43,8 @@ import java.util.Map.Entry; public class Registry { public static final BlockEntityRegistry BLOCK_ENTITY_TYPE; + public static final ItemRegistry ITEM_REGISTRY; + public static final MenuRegistry MENU_REGISTRY; static { String name = "registries.json"; @@ -54,23 +58,44 @@ public class Registry { } Map blockEntityType = new HashMap<>(); + Key defaultItemKey = null; + BiMap itemIds = HashBiMap.create(); + Map menuIds = new HashMap<>(); try (InputStreamReader reader = new InputStreamReader(new FileInputStream(file), StandardCharsets.UTF_8)) { JSONObject json = (JSONObject) new JSONParser().parse(reader); JSONObject blockEntityJson = (JSONObject) ((JSONObject) json.get("minecraft:block_entity_type")).get("entries"); for (Object obj : blockEntityJson.keySet()) { String key = obj.toString(); - int id = (int) (long) ((JSONObject) blockEntityJson.get(key)).get("protocol_id"); + int id = ((Number) ((JSONObject) blockEntityJson.get(key)).get("protocol_id")).intValue(); blockEntityType.put(Key.key(key), id); } + + JSONObject itemJson = (JSONObject) json.get("minecraft:item"); + defaultItemKey = Key.key((String) itemJson.get("default")); + JSONObject itemEntriesJson = (JSONObject) itemJson.get("entries"); + for (Object obj : itemEntriesJson.keySet()) { + String key = obj.toString(); + int id = ((Number) ((JSONObject) itemEntriesJson.get(key)).get("protocol_id")).intValue(); + itemIds.put(Key.key(key), id); + } + + JSONObject menuEntriesJson = (JSONObject) ((JSONObject) json.get("minecraft:menu")).get("entries"); + for (Object obj : menuEntriesJson.keySet()) { + String key = obj.toString(); + int id = ((Number) ((JSONObject) menuEntriesJson.get(key)).get("protocol_id")).intValue(); + menuIds.put(Key.key(key), id); + } } catch (IOException | ParseException e) { e.printStackTrace(); } BLOCK_ENTITY_TYPE = new BlockEntityRegistry(blockEntityType); + ITEM_REGISTRY = new ItemRegistry(defaultItemKey, itemIds); + MENU_REGISTRY = new MenuRegistry(menuIds); } public static class BlockEntityRegistry { - + private Map blockEntityType; private BlockEntityRegistry(Map blockEntityType) { @@ -99,4 +124,47 @@ public class Registry { } } + public static class ItemRegistry { + + private final Key defaultKey; + private final BiMap itemIds; + + private ItemRegistry(Key defaultKey, BiMap itemIds) { + this.defaultKey = defaultKey; + this.itemIds = itemIds; + } + + public Key getDefaultKey() { + return defaultKey; + } + + public int getId(Key key) { + Integer id = itemIds.get(key); + if (id != null) { + return id; + } + if (defaultKey == null) { + return 0; + } + return itemIds.getOrDefault(defaultKey, 0); + } + + public Key fromId(int id) { + return itemIds.inverse().getOrDefault(id, defaultKey); + } + } + + public static class MenuRegistry { + + private final Map menuIds; + + private MenuRegistry(Map menuIds) { + this.menuIds = menuIds; + } + + public int getId(Key key) { + return menuIds.getOrDefault(key, -1); + } + } + } diff --git a/src/main/java/com/loohp/limbo/utils/DataTypeIO.java b/src/main/java/com/loohp/limbo/utils/DataTypeIO.java index 3ace8e1..81ef92b 100644 --- a/src/main/java/com/loohp/limbo/utils/DataTypeIO.java +++ b/src/main/java/com/loohp/limbo/utils/DataTypeIO.java @@ -19,7 +19,14 @@ package com.loohp.limbo.utils; +import com.loohp.limbo.inventory.ItemStack; +import com.loohp.limbo.location.BlockFace; +import com.loohp.limbo.location.MovingObjectPositionBlock; +import com.loohp.limbo.location.Vector; +import com.loohp.limbo.registry.Registry; import com.loohp.limbo.world.BlockPosition; +import net.kyori.adventure.key.Key; +import net.querz.nbt.io.NBTInputStream; import net.querz.nbt.io.NBTOutputStream; import net.querz.nbt.tag.CompoundTag; import net.querz.nbt.tag.Tag; @@ -28,6 +35,7 @@ import java.io.ByteArrayOutputStream; import java.io.DataInputStream; import java.io.DataOutputStream; import java.io.IOException; +import java.io.PushbackInputStream; import java.nio.charset.Charset; import java.util.Arrays; import java.util.BitSet; @@ -36,6 +44,52 @@ import java.util.UUID; public class DataTypeIO { + public static void writeItemStack(DataOutputStream out, ItemStack itemstack) throws IOException { + if (itemstack == null || itemstack.isSimilar(ItemStack.AIR) || itemstack.amount() == 0) { + out.writeBoolean(false); + } else { + out.writeBoolean(true); + writeVarInt(out, Registry.ITEM_REGISTRY.getId(itemstack.type())); + out.writeByte(itemstack.amount()); + writeCompoundTag(out, itemstack.nbt()); + } + } + + public static ItemStack readItemStack(DataInputStream in) throws IOException { + if (!in.readBoolean()) { + return ItemStack.AIR; + } else { + Key key = Registry.ITEM_REGISTRY.fromId(readVarInt(in)); + byte amount = in.readByte(); + CompoundTag nbt = readCompoundTag(in); + return new ItemStack(key, amount, nbt); + } + } + + public static void writeBlockHitResult(DataOutputStream out, MovingObjectPositionBlock movingobjectpositionblock) throws IOException { + BlockPosition blockposition = movingobjectpositionblock.getBlockPos(); + + writeBlockPosition(out, blockposition); + writeVarInt(out, movingobjectpositionblock.getDirection().ordinal()); + Vector vector = movingobjectpositionblock.getLocation(); + + out.writeFloat((float) (vector.getX() - (double) blockposition.getX())); + out.writeFloat((float) (vector.getY() - (double) blockposition.getY())); + out.writeFloat((float) (vector.getZ() - (double) blockposition.getZ())); + out.writeBoolean(movingobjectpositionblock.isInside()); + } + + public static MovingObjectPositionBlock readBlockHitResult(DataInputStream in) throws IOException { + BlockPosition blockposition = readBlockPosition(in); + BlockFace direction = BlockFace.values()[readVarInt(in)]; + float f = in.readFloat(); + float f1 = in.readFloat(); + float f2 = in.readFloat(); + boolean flag = in.readBoolean(); + + return new MovingObjectPositionBlock(new Vector((double) blockposition.getX() + (double) f, (double) blockposition.getY() + (double) f1, (double) blockposition.getZ() + (double) f2), direction, blockposition, flag); + } + public static > void writeEnumSet(DataOutputStream out, EnumSet enumset, Class oclass) throws IOException { E[] ae = oclass.getEnumConstants(); BitSet bitset = new BitSet(ae.length); @@ -80,6 +134,14 @@ public class DataTypeIO { public static void writeBlockPosition(DataOutputStream out, BlockPosition position) throws IOException { out.writeLong(((position.getX() & 0x3FFFFFF) << 38) | ((position.getZ() & 0x3FFFFFF) << 12) | (position.getY() & 0xFFF)); } + + public static BlockPosition readBlockPosition(DataInputStream in) throws IOException { + long value = in.readLong(); + int x = (int) (value >> 38); + int y = (int) (value << 52 >> 52); + int z = (int) (value << 26 >> 38); + return new BlockPosition(x, y, z); + } public static void writeUUID(DataOutputStream out, UUID uuid) throws IOException { out.writeLong(uuid.getMostSignificantBits()); @@ -91,13 +153,21 @@ public class DataTypeIO { } public static void writeCompoundTag(DataOutputStream out, CompoundTag tag) throws IOException { - ByteArrayOutputStream buffer = new ByteArrayOutputStream(); - - DataOutputStream output = new DataOutputStream(buffer); - new NBTOutputStream(output).writeTag(tag, Tag.DEFAULT_MAX_DEPTH); - - byte[] b = buffer.toByteArray(); - out.write(b); + if (tag == null) { + out.writeByte(0); + } else { + new NBTOutputStream(out).writeTag(tag, Tag.DEFAULT_MAX_DEPTH); + } + } + + public static CompoundTag readCompoundTag(DataInputStream in) throws IOException { + byte b = in.readByte(); + if (b == 0) { + return null; + } + PushbackInputStream buffered = new PushbackInputStream(in); + buffered.unread(b); + return (CompoundTag) new NBTInputStream(buffered).readTag(Tag.DEFAULT_MAX_DEPTH).getTag(); } public static String readString(DataInputStream in, Charset charset) throws IOException { diff --git a/src/main/java/com/loohp/limbo/world/BlockState.java b/src/main/java/com/loohp/limbo/world/BlockState.java index cfb1083..92f947e 100644 --- a/src/main/java/com/loohp/limbo/world/BlockState.java +++ b/src/main/java/com/loohp/limbo/world/BlockState.java @@ -27,6 +27,7 @@ import net.querz.nbt.tag.Tag; import java.util.HashMap; import java.util.Map; import java.util.Map.Entry; +import java.util.Objects; public class BlockState { @@ -79,33 +80,15 @@ public class BlockState { } @Override - public int hashCode() { - final int prime = 31; - int result = 1; - result = prime * result + ((tag == null) ? 0 : tag.hashCode()); - return result; + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + BlockState that = (BlockState) o; + return Objects.equals(tag, that.tag); } @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (obj == null) { - return false; - } - if (getClass() != obj.getClass()) { - return false; - } - BlockState other = (BlockState) obj; - if (tag == null) { - if (other.tag != null) { - return false; - } - } else if (!tag.equals(other.tag)) { - return false; - } - return true; + public int hashCode() { + return Objects.hash(tag); } - } diff --git a/src/main/java/com/loohp/limbo/world/World.java b/src/main/java/com/loohp/limbo/world/World.java index 315a14c..9107c6f 100644 --- a/src/main/java/com/loohp/limbo/world/World.java +++ b/src/main/java/com/loohp/limbo/world/World.java @@ -41,6 +41,7 @@ import java.util.Collections; import java.util.LinkedHashMap; import java.util.List; import java.util.Map; +import java.util.Objects; import java.util.Set; import java.util.stream.Collectors; @@ -91,7 +92,7 @@ public class World { chunk.cleanupPalettesAndBlockStates(); chunk.setHeightMaps(HEIGHT_MAP.clone()); chunk.setBiomes(new int[256]); - chunk.setTileEntities(new ListTag(CompoundTag.class)); + chunk.setTileEntities(new ListTag<>(CompoundTag.class)); } } @@ -124,6 +125,10 @@ public class World { CompoundTag block = SchematicConversionUtils.toBlockTag(blockdata); chunk.setBlockStateAt(x, y, z, block, false); } + + public BlockState getBlock(BlockPosition blockPosition) { + return getBlock(blockPosition.getX(), blockPosition.getY(), blockPosition.getZ()); + } public BlockState getBlock(int x, int y, int z) { Chunk chunk = this.chunks[(x >> 4)][(z >> 4)]; @@ -139,6 +144,10 @@ public class World { } return new BlockState(tag); } + + public void setBlock(BlockPosition blockPosition, BlockState state) { + setBlock(blockPosition.getX(), blockPosition.getY(), blockPosition.getZ(), state); + } public void setBlock(int x, int y, int z, BlockState state) { Chunk chunk = this.chunks[(x >> 4)][(z >> 4)]; @@ -300,40 +309,15 @@ public class World { } @Override - public int hashCode() { - final int prime = 31; - int result = 1; - result = prime * result + Arrays.deepHashCode(chunks); - result = prime * result + ((environment == null) ? 0 : environment.hashCode()); - result = prime * result + ((name == null) ? 0 : name.hashCode()); - return result; + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + World world = (World) o; + return Objects.equals(name, world.name); } @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (obj == null) { - return false; - } - if (getClass() != obj.getClass()) { - return false; - } - World other = (World) obj; - if (!Arrays.deepEquals(chunks, other.chunks)) { - return false; - } - if (environment != other.environment) { - return false; - } - if (name == null) { - if (other.name != null) { - return false; - } - } else if (!name.equals(other.name)) { - return false; - } - return true; + public int hashCode() { + return Objects.hash(name); } } diff --git a/src/main/resources/mapping.json b/src/main/resources/mapping.json index 59d366e..019a472 100644 --- a/src/main/resources/mapping.json +++ b/src/main/resources/mapping.json @@ -21,7 +21,12 @@ "0x0C": "PacketPlayInPluginMessaging", "0x08": "PacketPlayInTabComplete", "0x28": "PacketPlayInHeldItemChange", - "0x24": "PacketPlayInResourcePackStatus" + "0x24": "PacketPlayInResourcePackStatus", + "0x32": "PacketPlayInBlockPlace", + "0x31": "PacketPlayInUseItem", + "0x2B": "PacketPlayInSetCreativeSlot", + "0x0A": "PacketPlayInWindowClick", + "0x0B": "PacketPlayInCloseWindow" }, "PlayOut": { "PacketPlayOutLogin": "0x24", @@ -53,7 +58,12 @@ "ClientboundClearTitlesPacket": "0x0C", "PacketPlayOutBoss": "0x0A", "PacketPlayOutNamedSoundEffect": "0x5E", - "PacketPlayOutStopSound": "0x5F" + "PacketPlayOutStopSound": "0x5F", + "PacketPlayOutWindowItems": "0x10", + "PacketPlayOutSetSlot": "0x12", + "PacketPlayOutOpenWindow": "0x2C", + "PacketPlayOutCloseWindow": "0x0F", + "PacketPlayOutWindowData": "0x11" }, "StatusIn": { "0x01": "PacketStatusInPing", diff --git a/src/main/resources/registries.json b/src/main/resources/registries.json index 97ab1c3..8c07335 100644 --- a/src/main/resources/registries.json +++ b/src/main/resources/registries.json @@ -258,2803 +258,2920 @@ "default": "minecraft:air", "entries": { "minecraft:acacia_button": { - "protocol_id": 342 + "protocol_id": 371 }, "minecraft:acacia_door": { - "protocol_id": 525 + "protocol_id": 563 }, "minecraft:acacia_fence": { - "protocol_id": 519 + "protocol_id": 556 }, "minecraft:acacia_fence_gate": { - "protocol_id": 513 + "protocol_id": 549 + }, + "minecraft:acacia_hanging_sign": { + "protocol_id": 199 }, "minecraft:acacia_leaves": { - "protocol_id": 74 + "protocol_id": 78 }, "minecraft:acacia_log": { - "protocol_id": 44 + "protocol_id": 46 }, "minecraft:acacia_planks": { "protocol_id": 17 }, "minecraft:acacia_pressure_plate": { - "protocol_id": 196 + "protocol_id": 223 }, "minecraft:acacia_sapling": { - "protocol_id": 24 + "protocol_id": 26 }, "minecraft:acacia_sign": { - "protocol_id": 174 + "protocol_id": 179 }, "minecraft:acacia_slab": { - "protocol_id": 489 + "protocol_id": 523 }, "minecraft:acacia_stairs": { - "protocol_id": 406 + "protocol_id": 438 }, "minecraft:acacia_trapdoor": { - "protocol_id": 246 + "protocol_id": 274 + }, + "minecraft:acacia_wall_hanging_sign": { + "protocol_id": 209 }, "minecraft:acacia_wall_sign": { - "protocol_id": 185 + "protocol_id": 191 }, "minecraft:acacia_wood": { - "protocol_id": 60 + "protocol_id": 64 }, "minecraft:activator_rail": { - "protocol_id": 372 + "protocol_id": 404 }, "minecraft:air": { "protocol_id": 0 }, "minecraft:allium": { - "protocol_id": 137 + "protocol_id": 141 }, "minecraft:amethyst_block": { - "protocol_id": 836 + "protocol_id": 875 }, "minecraft:amethyst_cluster": { - "protocol_id": 838 + "protocol_id": 877 }, "minecraft:ancient_debris": { - "protocol_id": 774 + "protocol_id": 813 }, "minecraft:andesite": { "protocol_id": 6 }, "minecraft:andesite_slab": { - "protocol_id": 688 + "protocol_id": 727 }, "minecraft:andesite_stairs": { - "protocol_id": 675 + "protocol_id": 714 }, "minecraft:andesite_wall": { - "protocol_id": 700 + "protocol_id": 739 }, "minecraft:anvil": { - "protocol_id": 357 + "protocol_id": 389 }, "minecraft:attached_melon_stem": { - "protocol_id": 269 + "protocol_id": 298 }, "minecraft:attached_pumpkin_stem": { - "protocol_id": 268 + "protocol_id": 297 }, "minecraft:azalea": { - "protocol_id": 891 + "protocol_id": 930 }, "minecraft:azalea_leaves": { - "protocol_id": 77 + "protocol_id": 81 }, "minecraft:azure_bluet": { - "protocol_id": 138 + "protocol_id": 142 }, "minecraft:bamboo": { - "protocol_id": 660 + "protocol_id": 699 + }, + "minecraft:bamboo_block": { + "protocol_id": 51 + }, + "minecraft:bamboo_button": { + "protocol_id": 374 + }, + "minecraft:bamboo_door": { + "protocol_id": 566 + }, + "minecraft:bamboo_fence": { + "protocol_id": 559 + }, + "minecraft:bamboo_fence_gate": { + "protocol_id": 552 + }, + "minecraft:bamboo_hanging_sign": { + "protocol_id": 205 + }, + "minecraft:bamboo_mosaic": { + "protocol_id": 21 + }, + "minecraft:bamboo_mosaic_slab": { + "protocol_id": 527 + }, + "minecraft:bamboo_mosaic_stairs": { + "protocol_id": 442 + }, + "minecraft:bamboo_planks": { + "protocol_id": 20 + }, + "minecraft:bamboo_pressure_plate": { + "protocol_id": 226 }, "minecraft:bamboo_sapling": { - "protocol_id": 659 + "protocol_id": 698 + }, + "minecraft:bamboo_sign": { + "protocol_id": 183 + }, + "minecraft:bamboo_slab": { + "protocol_id": 526 + }, + "minecraft:bamboo_stairs": { + "protocol_id": 441 + }, + "minecraft:bamboo_trapdoor": { + "protocol_id": 277 + }, + "minecraft:bamboo_wall_hanging_sign": { + "protocol_id": 215 + }, + "minecraft:bamboo_wall_sign": { + "protocol_id": 195 }, "minecraft:barrel": { - "protocol_id": 707 + "protocol_id": 746 }, "minecraft:barrier": { - "protocol_id": 410 + "protocol_id": 444 }, "minecraft:basalt": { - "protocol_id": 216 + "protocol_id": 244 }, "minecraft:beacon": { - "protocol_id": 307 + "protocol_id": 336 }, "minecraft:bedrock": { - "protocol_id": 27 + "protocol_id": 29 }, "minecraft:bee_nest": { - "protocol_id": 769 + "protocol_id": 808 }, "minecraft:beehive": { - "protocol_id": 770 + "protocol_id": 809 }, "minecraft:beetroots": { - "protocol_id": 535 + "protocol_id": 574 }, "minecraft:bell": { - "protocol_id": 716 + "protocol_id": 755 }, "minecraft:big_dripleaf": { - "protocol_id": 895 + "protocol_id": 934 }, "minecraft:big_dripleaf_stem": { - "protocol_id": 896 + "protocol_id": 935 }, "minecraft:birch_button": { - "protocol_id": 340 + "protocol_id": 369 }, "minecraft:birch_door": { - "protocol_id": 523 + "protocol_id": 561 }, "minecraft:birch_fence": { - "protocol_id": 517 + "protocol_id": 554 }, "minecraft:birch_fence_gate": { - "protocol_id": 511 + "protocol_id": 547 + }, + "minecraft:birch_hanging_sign": { + "protocol_id": 198 }, "minecraft:birch_leaves": { - "protocol_id": 72 + "protocol_id": 76 }, "minecraft:birch_log": { - "protocol_id": 42 + "protocol_id": 44 }, "minecraft:birch_planks": { "protocol_id": 15 }, "minecraft:birch_pressure_plate": { - "protocol_id": 194 + "protocol_id": 221 }, "minecraft:birch_sapling": { - "protocol_id": 22 + "protocol_id": 24 }, "minecraft:birch_sign": { - "protocol_id": 173 + "protocol_id": 178 }, "minecraft:birch_slab": { - "protocol_id": 487 + "protocol_id": 521 }, "minecraft:birch_stairs": { - "protocol_id": 304 + "protocol_id": 333 }, "minecraft:birch_trapdoor": { - "protocol_id": 244 + "protocol_id": 272 }, - "minecraft:birch_wall_sign": { - "protocol_id": 184 - }, - "minecraft:birch_wood": { - "protocol_id": 58 - }, - "minecraft:black_banner": { - "protocol_id": 464 - }, - "minecraft:black_bed": { - "protocol_id": 105 - }, - "minecraft:black_candle": { - "protocol_id": 818 - }, - "minecraft:black_candle_cake": { - "protocol_id": 835 - }, - "minecraft:black_carpet": { - "protocol_id": 439 - }, - "minecraft:black_concrete": { - "protocol_id": 595 - }, - "minecraft:black_concrete_powder": { - "protocol_id": 611 - }, - "minecraft:black_glazed_terracotta": { - "protocol_id": 579 - }, - "minecraft:black_shulker_box": { - "protocol_id": 563 - }, - "minecraft:black_stained_glass": { - "protocol_id": 241 - }, - "minecraft:black_stained_glass_pane": { - "protocol_id": 405 - }, - "minecraft:black_terracotta": { - "protocol_id": 389 - }, - "minecraft:black_wall_banner": { - "protocol_id": 480 - }, - "minecraft:black_wool": { - "protocol_id": 132 - }, - "minecraft:blackstone": { - "protocol_id": 782 - }, - "minecraft:blackstone_slab": { - "protocol_id": 785 - }, - "minecraft:blackstone_stairs": { - "protocol_id": 783 - }, - "minecraft:blackstone_wall": { - "protocol_id": 784 - }, - "minecraft:blast_furnace": { - "protocol_id": 709 - }, - "minecraft:blue_banner": { - "protocol_id": 460 - }, - "minecraft:blue_bed": { - "protocol_id": 101 - }, - "minecraft:blue_candle": { - "protocol_id": 814 - }, - "minecraft:blue_candle_cake": { - "protocol_id": 831 - }, - "minecraft:blue_carpet": { - "protocol_id": 435 - }, - "minecraft:blue_concrete": { - "protocol_id": 591 - }, - "minecraft:blue_concrete_powder": { - "protocol_id": 607 - }, - "minecraft:blue_glazed_terracotta": { - "protocol_id": 575 - }, - "minecraft:blue_ice": { - "protocol_id": 657 - }, - "minecraft:blue_orchid": { - "protocol_id": 136 - }, - "minecraft:blue_shulker_box": { - "protocol_id": 559 - }, - "minecraft:blue_stained_glass": { - "protocol_id": 237 - }, - "minecraft:blue_stained_glass_pane": { - "protocol_id": 401 - }, - "minecraft:blue_terracotta": { - "protocol_id": 385 - }, - "minecraft:blue_wall_banner": { - "protocol_id": 476 - }, - "minecraft:blue_wool": { - "protocol_id": 128 - }, - "minecraft:bone_block": { - "protocol_id": 544 - }, - "minecraft:bookshelf": { - "protocol_id": 153 - }, - "minecraft:brain_coral": { - "protocol_id": 632 - }, - "minecraft:brain_coral_block": { - "protocol_id": 622 - }, - "minecraft:brain_coral_fan": { - "protocol_id": 642 - }, - "minecraft:brain_coral_wall_fan": { - "protocol_id": 652 - }, - "minecraft:brewing_stand": { - "protocol_id": 285 - }, - "minecraft:brick_slab": { - "protocol_id": 498 - }, - "minecraft:brick_stairs": { - "protocol_id": 275 - }, - "minecraft:brick_wall": { - "protocol_id": 692 - }, - "minecraft:bricks": { - "protocol_id": 151 - }, - "minecraft:brown_banner": { - "protocol_id": 461 - }, - "minecraft:brown_bed": { - "protocol_id": 102 - }, - "minecraft:brown_candle": { - "protocol_id": 815 - }, - "minecraft:brown_candle_cake": { - "protocol_id": 832 - }, - "minecraft:brown_carpet": { - "protocol_id": 436 - }, - "minecraft:brown_concrete": { - "protocol_id": 592 - }, - "minecraft:brown_concrete_powder": { - "protocol_id": 608 - }, - "minecraft:brown_glazed_terracotta": { - "protocol_id": 576 - }, - "minecraft:brown_mushroom": { - "protocol_id": 147 - }, - "minecraft:brown_mushroom_block": { - "protocol_id": 261 - }, - "minecraft:brown_shulker_box": { - "protocol_id": 560 - }, - "minecraft:brown_stained_glass": { - "protocol_id": 238 - }, - "minecraft:brown_stained_glass_pane": { - "protocol_id": 402 - }, - "minecraft:brown_terracotta": { - "protocol_id": 386 - }, - "minecraft:brown_wall_banner": { - "protocol_id": 477 - }, - "minecraft:brown_wool": { - "protocol_id": 129 - }, - "minecraft:bubble_column": { - "protocol_id": 664 - }, - "minecraft:bubble_coral": { - "protocol_id": 633 - }, - "minecraft:bubble_coral_block": { - "protocol_id": 623 - }, - "minecraft:bubble_coral_fan": { - "protocol_id": 643 - }, - "minecraft:bubble_coral_wall_fan": { - "protocol_id": 653 - }, - "minecraft:budding_amethyst": { - "protocol_id": 837 - }, - "minecraft:cactus": { - "protocol_id": 207 - }, - "minecraft:cake": { - "protocol_id": 224 - }, - "minecraft:calcite": { - "protocol_id": 843 - }, - "minecraft:campfire": { - "protocol_id": 719 - }, - "minecraft:candle": { - "protocol_id": 802 - }, - "minecraft:candle_cake": { - "protocol_id": 819 - }, - "minecraft:carrots": { - "protocol_id": 336 - }, - "minecraft:cartography_table": { - "protocol_id": 710 - }, - "minecraft:carved_pumpkin": { - "protocol_id": 222 - }, - "minecraft:cauldron": { - "protocol_id": 286 - }, - "minecraft:cave_air": { - "protocol_id": 663 - }, - "minecraft:cave_vines": { - "protocol_id": 888 - }, - "minecraft:cave_vines_plant": { - "protocol_id": 889 - }, - "minecraft:chain": { - "protocol_id": 265 - }, - "minecraft:chain_command_block": { - "protocol_id": 539 - }, - "minecraft:chest": { - "protocol_id": 162 - }, - "minecraft:chipped_anvil": { - "protocol_id": 358 - }, - "minecraft:chiseled_deepslate": { - "protocol_id": 918 - }, - "minecraft:chiseled_nether_bricks": { - "protocol_id": 799 - }, - "minecraft:chiseled_polished_blackstone": { - "protocol_id": 789 - }, - "minecraft:chiseled_quartz_block": { - "protocol_id": 369 - }, - "minecraft:chiseled_red_sandstone": { - "protocol_id": 482 - }, - "minecraft:chiseled_sandstone": { - "protocol_id": 87 - }, - "minecraft:chiseled_stone_bricks": { - "protocol_id": 252 - }, - "minecraft:chorus_flower": { - "protocol_id": 530 - }, - "minecraft:chorus_plant": { - "protocol_id": 529 - }, - "minecraft:clay": { + "minecraft:birch_wall_hanging_sign": { "protocol_id": 208 }, + "minecraft:birch_wall_sign": { + "protocol_id": 190 + }, + "minecraft:birch_wood": { + "protocol_id": 62 + }, + "minecraft:black_banner": { + "protocol_id": 498 + }, + "minecraft:black_bed": { + "protocol_id": 109 + }, + "minecraft:black_candle": { + "protocol_id": 857 + }, + "minecraft:black_candle_cake": { + "protocol_id": 874 + }, + "minecraft:black_carpet": { + "protocol_id": 473 + }, + "minecraft:black_concrete": { + "protocol_id": 634 + }, + "minecraft:black_concrete_powder": { + "protocol_id": 650 + }, + "minecraft:black_glazed_terracotta": { + "protocol_id": 618 + }, + "minecraft:black_shulker_box": { + "protocol_id": 602 + }, + "minecraft:black_stained_glass": { + "protocol_id": 269 + }, + "minecraft:black_stained_glass_pane": { + "protocol_id": 437 + }, + "minecraft:black_terracotta": { + "protocol_id": 421 + }, + "minecraft:black_wall_banner": { + "protocol_id": 514 + }, + "minecraft:black_wool": { + "protocol_id": 136 + }, + "minecraft:blackstone": { + "protocol_id": 821 + }, + "minecraft:blackstone_slab": { + "protocol_id": 824 + }, + "minecraft:blackstone_stairs": { + "protocol_id": 822 + }, + "minecraft:blackstone_wall": { + "protocol_id": 823 + }, + "minecraft:blast_furnace": { + "protocol_id": 748 + }, + "minecraft:blue_banner": { + "protocol_id": 494 + }, + "minecraft:blue_bed": { + "protocol_id": 105 + }, + "minecraft:blue_candle": { + "protocol_id": 853 + }, + "minecraft:blue_candle_cake": { + "protocol_id": 870 + }, + "minecraft:blue_carpet": { + "protocol_id": 469 + }, + "minecraft:blue_concrete": { + "protocol_id": 630 + }, + "minecraft:blue_concrete_powder": { + "protocol_id": 646 + }, + "minecraft:blue_glazed_terracotta": { + "protocol_id": 614 + }, + "minecraft:blue_ice": { + "protocol_id": 696 + }, + "minecraft:blue_orchid": { + "protocol_id": 140 + }, + "minecraft:blue_shulker_box": { + "protocol_id": 598 + }, + "minecraft:blue_stained_glass": { + "protocol_id": 265 + }, + "minecraft:blue_stained_glass_pane": { + "protocol_id": 433 + }, + "minecraft:blue_terracotta": { + "protocol_id": 417 + }, + "minecraft:blue_wall_banner": { + "protocol_id": 510 + }, + "minecraft:blue_wool": { + "protocol_id": 132 + }, + "minecraft:bone_block": { + "protocol_id": 583 + }, + "minecraft:bookshelf": { + "protocol_id": 157 + }, + "minecraft:brain_coral": { + "protocol_id": 671 + }, + "minecraft:brain_coral_block": { + "protocol_id": 661 + }, + "minecraft:brain_coral_fan": { + "protocol_id": 681 + }, + "minecraft:brain_coral_wall_fan": { + "protocol_id": 691 + }, + "minecraft:brewing_stand": { + "protocol_id": 314 + }, + "minecraft:brick_slab": { + "protocol_id": 534 + }, + "minecraft:brick_stairs": { + "protocol_id": 304 + }, + "minecraft:brick_wall": { + "protocol_id": 731 + }, + "minecraft:bricks": { + "protocol_id": 155 + }, + "minecraft:brown_banner": { + "protocol_id": 495 + }, + "minecraft:brown_bed": { + "protocol_id": 106 + }, + "minecraft:brown_candle": { + "protocol_id": 854 + }, + "minecraft:brown_candle_cake": { + "protocol_id": 871 + }, + "minecraft:brown_carpet": { + "protocol_id": 470 + }, + "minecraft:brown_concrete": { + "protocol_id": 631 + }, + "minecraft:brown_concrete_powder": { + "protocol_id": 647 + }, + "minecraft:brown_glazed_terracotta": { + "protocol_id": 615 + }, + "minecraft:brown_mushroom": { + "protocol_id": 151 + }, + "minecraft:brown_mushroom_block": { + "protocol_id": 290 + }, + "minecraft:brown_shulker_box": { + "protocol_id": 599 + }, + "minecraft:brown_stained_glass": { + "protocol_id": 266 + }, + "minecraft:brown_stained_glass_pane": { + "protocol_id": 434 + }, + "minecraft:brown_terracotta": { + "protocol_id": 418 + }, + "minecraft:brown_wall_banner": { + "protocol_id": 511 + }, + "minecraft:brown_wool": { + "protocol_id": 133 + }, + "minecraft:bubble_column": { + "protocol_id": 703 + }, + "minecraft:bubble_coral": { + "protocol_id": 672 + }, + "minecraft:bubble_coral_block": { + "protocol_id": 662 + }, + "minecraft:bubble_coral_fan": { + "protocol_id": 682 + }, + "minecraft:bubble_coral_wall_fan": { + "protocol_id": 692 + }, + "minecraft:budding_amethyst": { + "protocol_id": 876 + }, + "minecraft:cactus": { + "protocol_id": 235 + }, + "minecraft:cake": { + "protocol_id": 252 + }, + "minecraft:calcite": { + "protocol_id": 882 + }, + "minecraft:campfire": { + "protocol_id": 758 + }, + "minecraft:candle": { + "protocol_id": 841 + }, + "minecraft:candle_cake": { + "protocol_id": 858 + }, + "minecraft:carrots": { + "protocol_id": 365 + }, + "minecraft:cartography_table": { + "protocol_id": 749 + }, + "minecraft:carved_pumpkin": { + "protocol_id": 250 + }, + "minecraft:cauldron": { + "protocol_id": 315 + }, + "minecraft:cave_air": { + "protocol_id": 702 + }, + "minecraft:cave_vines": { + "protocol_id": 927 + }, + "minecraft:cave_vines_plant": { + "protocol_id": 928 + }, + "minecraft:chain": { + "protocol_id": 294 + }, + "minecraft:chain_command_block": { + "protocol_id": 578 + }, + "minecraft:chest": { + "protocol_id": 167 + }, + "minecraft:chipped_anvil": { + "protocol_id": 390 + }, + "minecraft:chiseled_bookshelf": { + "protocol_id": 158 + }, + "minecraft:chiseled_deepslate": { + "protocol_id": 957 + }, + "minecraft:chiseled_nether_bricks": { + "protocol_id": 838 + }, + "minecraft:chiseled_polished_blackstone": { + "protocol_id": 828 + }, + "minecraft:chiseled_quartz_block": { + "protocol_id": 401 + }, + "minecraft:chiseled_red_sandstone": { + "protocol_id": 516 + }, + "minecraft:chiseled_sandstone": { + "protocol_id": 91 + }, + "minecraft:chiseled_stone_bricks": { + "protocol_id": 281 + }, + "minecraft:chorus_flower": { + "protocol_id": 569 + }, + "minecraft:chorus_plant": { + "protocol_id": 568 + }, + "minecraft:clay": { + "protocol_id": 236 + }, "minecraft:coal_block": { - "protocol_id": 441 + "protocol_id": 475 }, "minecraft:coal_ore": { - "protocol_id": 37 + "protocol_id": 39 }, "minecraft:coarse_dirt": { "protocol_id": 10 }, "minecraft:cobbled_deepslate": { - "protocol_id": 902 + "protocol_id": 941 }, "minecraft:cobbled_deepslate_slab": { - "protocol_id": 904 + "protocol_id": 943 }, "minecraft:cobbled_deepslate_stairs": { - "protocol_id": 903 + "protocol_id": 942 }, "minecraft:cobbled_deepslate_wall": { - "protocol_id": 905 + "protocol_id": 944 }, "minecraft:cobblestone": { "protocol_id": 12 }, "minecraft:cobblestone_slab": { - "protocol_id": 497 + "protocol_id": 533 }, "minecraft:cobblestone_stairs": { - "protocol_id": 181 + "protocol_id": 187 }, "minecraft:cobblestone_wall": { - "protocol_id": 308 + "protocol_id": 337 }, "minecraft:cobweb": { - "protocol_id": 109 + "protocol_id": 113 }, "minecraft:cocoa": { - "protocol_id": 295 + "protocol_id": 324 }, "minecraft:command_block": { - "protocol_id": 306 + "protocol_id": 335 }, "minecraft:comparator": { - "protocol_id": 363 + "protocol_id": 395 }, "minecraft:composter": { - "protocol_id": 767 + "protocol_id": 806 }, "minecraft:conduit": { - "protocol_id": 658 + "protocol_id": 697 }, "minecraft:copper_block": { - "protocol_id": 854 + "protocol_id": 893 }, "minecraft:copper_ore": { - "protocol_id": 855 + "protocol_id": 894 }, "minecraft:cornflower": { - "protocol_id": 144 + "protocol_id": 148 }, "minecraft:cracked_deepslate_bricks": { - "protocol_id": 919 + "protocol_id": 958 }, "minecraft:cracked_deepslate_tiles": { - "protocol_id": 920 + "protocol_id": 959 }, "minecraft:cracked_nether_bricks": { - "protocol_id": 800 + "protocol_id": 839 }, "minecraft:cracked_polished_blackstone_bricks": { - "protocol_id": 788 + "protocol_id": 827 }, "minecraft:cracked_stone_bricks": { - "protocol_id": 251 + "protocol_id": 280 }, "minecraft:crafting_table": { - "protocol_id": 167 + "protocol_id": 172 }, "minecraft:creeper_head": { - "protocol_id": 353 - }, - "minecraft:creeper_wall_head": { - "protocol_id": 354 - }, - "minecraft:crimson_button": { - "protocol_id": 757 - }, - "minecraft:crimson_door": { - "protocol_id": 759 - }, - "minecraft:crimson_fence": { - "protocol_id": 749 - }, - "minecraft:crimson_fence_gate": { - "protocol_id": 753 - }, - "minecraft:crimson_fungus": { - "protocol_id": 736 - }, - "minecraft:crimson_hyphae": { - "protocol_id": 733 - }, - "minecraft:crimson_nylium": { - "protocol_id": 735 - }, - "minecraft:crimson_planks": { - "protocol_id": 743 - }, - "minecraft:crimson_pressure_plate": { - "protocol_id": 747 - }, - "minecraft:crimson_roots": { - "protocol_id": 742 - }, - "minecraft:crimson_sign": { - "protocol_id": 761 - }, - "minecraft:crimson_slab": { - "protocol_id": 745 - }, - "minecraft:crimson_stairs": { - "protocol_id": 755 - }, - "minecraft:crimson_stem": { - "protocol_id": 731 - }, - "minecraft:crimson_trapdoor": { - "protocol_id": 751 - }, - "minecraft:crimson_wall_sign": { - "protocol_id": 763 - }, - "minecraft:crying_obsidian": { - "protocol_id": 775 - }, - "minecraft:cut_copper": { - "protocol_id": 860 - }, - "minecraft:cut_copper_slab": { - "protocol_id": 868 - }, - "minecraft:cut_copper_stairs": { - "protocol_id": 864 - }, - "minecraft:cut_red_sandstone": { - "protocol_id": 483 - }, - "minecraft:cut_red_sandstone_slab": { - "protocol_id": 504 - }, - "minecraft:cut_sandstone": { - "protocol_id": 88 - }, - "minecraft:cut_sandstone_slab": { - "protocol_id": 495 - }, - "minecraft:cyan_banner": { - "protocol_id": 458 - }, - "minecraft:cyan_bed": { - "protocol_id": 99 - }, - "minecraft:cyan_candle": { - "protocol_id": 812 - }, - "minecraft:cyan_candle_cake": { - "protocol_id": 829 - }, - "minecraft:cyan_carpet": { - "protocol_id": 433 - }, - "minecraft:cyan_concrete": { - "protocol_id": 589 - }, - "minecraft:cyan_concrete_powder": { - "protocol_id": 605 - }, - "minecraft:cyan_glazed_terracotta": { - "protocol_id": 573 - }, - "minecraft:cyan_shulker_box": { - "protocol_id": 557 - }, - "minecraft:cyan_stained_glass": { - "protocol_id": 235 - }, - "minecraft:cyan_stained_glass_pane": { - "protocol_id": 399 - }, - "minecraft:cyan_terracotta": { "protocol_id": 383 }, + "minecraft:creeper_wall_head": { + "protocol_id": 384 + }, + "minecraft:crimson_button": { + "protocol_id": 796 + }, + "minecraft:crimson_door": { + "protocol_id": 798 + }, + "minecraft:crimson_fence": { + "protocol_id": 788 + }, + "minecraft:crimson_fence_gate": { + "protocol_id": 792 + }, + "minecraft:crimson_fungus": { + "protocol_id": 775 + }, + "minecraft:crimson_hanging_sign": { + "protocol_id": 202 + }, + "minecraft:crimson_hyphae": { + "protocol_id": 772 + }, + "minecraft:crimson_nylium": { + "protocol_id": 774 + }, + "minecraft:crimson_planks": { + "protocol_id": 782 + }, + "minecraft:crimson_pressure_plate": { + "protocol_id": 786 + }, + "minecraft:crimson_roots": { + "protocol_id": 781 + }, + "minecraft:crimson_sign": { + "protocol_id": 800 + }, + "minecraft:crimson_slab": { + "protocol_id": 784 + }, + "minecraft:crimson_stairs": { + "protocol_id": 794 + }, + "minecraft:crimson_stem": { + "protocol_id": 770 + }, + "minecraft:crimson_trapdoor": { + "protocol_id": 790 + }, + "minecraft:crimson_wall_hanging_sign": { + "protocol_id": 213 + }, + "minecraft:crimson_wall_sign": { + "protocol_id": 802 + }, + "minecraft:crying_obsidian": { + "protocol_id": 814 + }, + "minecraft:cut_copper": { + "protocol_id": 899 + }, + "minecraft:cut_copper_slab": { + "protocol_id": 907 + }, + "minecraft:cut_copper_stairs": { + "protocol_id": 903 + }, + "minecraft:cut_red_sandstone": { + "protocol_id": 517 + }, + "minecraft:cut_red_sandstone_slab": { + "protocol_id": 540 + }, + "minecraft:cut_sandstone": { + "protocol_id": 92 + }, + "minecraft:cut_sandstone_slab": { + "protocol_id": 531 + }, + "minecraft:cyan_banner": { + "protocol_id": 492 + }, + "minecraft:cyan_bed": { + "protocol_id": 103 + }, + "minecraft:cyan_candle": { + "protocol_id": 851 + }, + "minecraft:cyan_candle_cake": { + "protocol_id": 868 + }, + "minecraft:cyan_carpet": { + "protocol_id": 467 + }, + "minecraft:cyan_concrete": { + "protocol_id": 628 + }, + "minecraft:cyan_concrete_powder": { + "protocol_id": 644 + }, + "minecraft:cyan_glazed_terracotta": { + "protocol_id": 612 + }, + "minecraft:cyan_shulker_box": { + "protocol_id": 596 + }, + "minecraft:cyan_stained_glass": { + "protocol_id": 263 + }, + "minecraft:cyan_stained_glass_pane": { + "protocol_id": 431 + }, + "minecraft:cyan_terracotta": { + "protocol_id": 415 + }, "minecraft:cyan_wall_banner": { - "protocol_id": 474 + "protocol_id": 508 }, "minecraft:cyan_wool": { - "protocol_id": 126 + "protocol_id": 130 }, "minecraft:damaged_anvil": { - "protocol_id": 359 + "protocol_id": 391 }, "minecraft:dandelion": { - "protocol_id": 134 + "protocol_id": 138 }, "minecraft:dark_oak_button": { - "protocol_id": 343 + "protocol_id": 372 }, "minecraft:dark_oak_door": { - "protocol_id": 526 + "protocol_id": 564 }, "minecraft:dark_oak_fence": { - "protocol_id": 520 + "protocol_id": 557 }, "minecraft:dark_oak_fence_gate": { - "protocol_id": 514 + "protocol_id": 550 + }, + "minecraft:dark_oak_hanging_sign": { + "protocol_id": 201 }, "minecraft:dark_oak_leaves": { - "protocol_id": 75 + "protocol_id": 79 }, "minecraft:dark_oak_log": { - "protocol_id": 45 + "protocol_id": 47 }, "minecraft:dark_oak_planks": { "protocol_id": 18 }, "minecraft:dark_oak_pressure_plate": { - "protocol_id": 197 + "protocol_id": 224 }, "minecraft:dark_oak_sapling": { - "protocol_id": 25 + "protocol_id": 27 }, "minecraft:dark_oak_sign": { - "protocol_id": 176 + "protocol_id": 181 }, "minecraft:dark_oak_slab": { - "protocol_id": 490 + "protocol_id": 524 }, "minecraft:dark_oak_stairs": { - "protocol_id": 407 + "protocol_id": 439 }, "minecraft:dark_oak_trapdoor": { - "protocol_id": 247 + "protocol_id": 275 + }, + "minecraft:dark_oak_wall_hanging_sign": { + "protocol_id": 211 }, "minecraft:dark_oak_wall_sign": { - "protocol_id": 187 + "protocol_id": 193 }, "minecraft:dark_oak_wood": { - "protocol_id": 61 + "protocol_id": 65 }, "minecraft:dark_prismarine": { - "protocol_id": 415 + "protocol_id": 449 }, "minecraft:dark_prismarine_slab": { - "protocol_id": 421 + "protocol_id": 455 }, "minecraft:dark_prismarine_stairs": { - "protocol_id": 418 + "protocol_id": 452 }, "minecraft:daylight_detector": { - "protocol_id": 364 + "protocol_id": 396 }, "minecraft:dead_brain_coral": { - "protocol_id": 627 + "protocol_id": 666 }, "minecraft:dead_brain_coral_block": { - "protocol_id": 617 + "protocol_id": 656 }, "minecraft:dead_brain_coral_fan": { - "protocol_id": 637 + "protocol_id": 676 }, "minecraft:dead_brain_coral_wall_fan": { - "protocol_id": 647 + "protocol_id": 686 }, "minecraft:dead_bubble_coral": { - "protocol_id": 628 + "protocol_id": 667 }, "minecraft:dead_bubble_coral_block": { - "protocol_id": 618 + "protocol_id": 657 }, "minecraft:dead_bubble_coral_fan": { - "protocol_id": 638 + "protocol_id": 677 }, "minecraft:dead_bubble_coral_wall_fan": { - "protocol_id": 648 + "protocol_id": 687 }, "minecraft:dead_bush": { - "protocol_id": 112 + "protocol_id": 116 }, "minecraft:dead_fire_coral": { - "protocol_id": 629 + "protocol_id": 668 }, "minecraft:dead_fire_coral_block": { - "protocol_id": 619 + "protocol_id": 658 }, "minecraft:dead_fire_coral_fan": { - "protocol_id": 639 + "protocol_id": 678 }, "minecraft:dead_fire_coral_wall_fan": { - "protocol_id": 649 + "protocol_id": 688 }, "minecraft:dead_horn_coral": { - "protocol_id": 630 + "protocol_id": 669 }, "minecraft:dead_horn_coral_block": { - "protocol_id": 620 + "protocol_id": 659 }, "minecraft:dead_horn_coral_fan": { - "protocol_id": 640 + "protocol_id": 679 }, "minecraft:dead_horn_coral_wall_fan": { - "protocol_id": 650 + "protocol_id": 689 }, "minecraft:dead_tube_coral": { - "protocol_id": 626 + "protocol_id": 665 }, "minecraft:dead_tube_coral_block": { - "protocol_id": 616 + "protocol_id": 655 }, "minecraft:dead_tube_coral_fan": { - "protocol_id": 636 + "protocol_id": 675 }, "minecraft:dead_tube_coral_wall_fan": { - "protocol_id": 646 + "protocol_id": 685 }, "minecraft:deepslate": { - "protocol_id": 901 + "protocol_id": 940 }, "minecraft:deepslate_brick_slab": { - "protocol_id": 916 + "protocol_id": 955 }, "minecraft:deepslate_brick_stairs": { - "protocol_id": 915 + "protocol_id": 954 }, "minecraft:deepslate_brick_wall": { - "protocol_id": 917 + "protocol_id": 956 }, "minecraft:deepslate_bricks": { - "protocol_id": 914 + "protocol_id": 953 }, "minecraft:deepslate_coal_ore": { - "protocol_id": 38 + "protocol_id": 40 }, "minecraft:deepslate_copper_ore": { - "protocol_id": 856 + "protocol_id": 895 }, "minecraft:deepslate_diamond_ore": { - "protocol_id": 165 + "protocol_id": 170 }, "minecraft:deepslate_emerald_ore": { - "protocol_id": 298 + "protocol_id": 327 }, "minecraft:deepslate_gold_ore": { - "protocol_id": 34 - }, - "minecraft:deepslate_iron_ore": { "protocol_id": 36 }, + "minecraft:deepslate_iron_ore": { + "protocol_id": 38 + }, "minecraft:deepslate_lapis_ore": { - "protocol_id": 83 + "protocol_id": 87 }, "minecraft:deepslate_redstone_ore": { - "protocol_id": 200 + "protocol_id": 228 }, "minecraft:deepslate_tile_slab": { - "protocol_id": 912 + "protocol_id": 951 }, "minecraft:deepslate_tile_stairs": { - "protocol_id": 911 + "protocol_id": 950 }, "minecraft:deepslate_tile_wall": { - "protocol_id": 913 + "protocol_id": 952 }, "minecraft:deepslate_tiles": { - "protocol_id": 910 + "protocol_id": 949 }, "minecraft:detector_rail": { - "protocol_id": 107 + "protocol_id": 111 }, "minecraft:diamond_block": { - "protocol_id": 166 + "protocol_id": 171 }, "minecraft:diamond_ore": { - "protocol_id": 164 + "protocol_id": 169 }, "minecraft:diorite": { "protocol_id": 4 }, "minecraft:diorite_slab": { - "protocol_id": 691 + "protocol_id": 730 }, "minecraft:diorite_stairs": { - "protocol_id": 678 + "protocol_id": 717 }, "minecraft:diorite_wall": { - "protocol_id": 704 + "protocol_id": 743 }, "minecraft:dirt": { "protocol_id": 9 }, "minecraft:dirt_path": { - "protocol_id": 536 + "protocol_id": 575 }, "minecraft:dispenser": { - "protocol_id": 85 + "protocol_id": 89 }, "minecraft:dragon_egg": { - "protocol_id": 293 + "protocol_id": 322 }, "minecraft:dragon_head": { - "protocol_id": 355 + "protocol_id": 385 }, "minecraft:dragon_wall_head": { - "protocol_id": 356 + "protocol_id": 386 }, "minecraft:dried_kelp_block": { - "protocol_id": 614 + "protocol_id": 653 }, "minecraft:dripstone_block": { - "protocol_id": 887 + "protocol_id": 926 }, "minecraft:dropper": { - "protocol_id": 373 + "protocol_id": 405 }, "minecraft:emerald_block": { - "protocol_id": 302 + "protocol_id": 331 }, "minecraft:emerald_ore": { - "protocol_id": 297 + "protocol_id": 326 }, "minecraft:enchanting_table": { - "protocol_id": 284 + "protocol_id": 313 }, "minecraft:end_gateway": { - "protocol_id": 537 + "protocol_id": 576 }, "minecraft:end_portal": { - "protocol_id": 290 + "protocol_id": 319 }, "minecraft:end_portal_frame": { - "protocol_id": 291 + "protocol_id": 320 }, "minecraft:end_rod": { - "protocol_id": 528 + "protocol_id": 567 }, "minecraft:end_stone": { - "protocol_id": 292 + "protocol_id": 321 }, "minecraft:end_stone_brick_slab": { - "protocol_id": 684 + "protocol_id": 723 }, "minecraft:end_stone_brick_stairs": { - "protocol_id": 670 + "protocol_id": 709 }, "minecraft:end_stone_brick_wall": { - "protocol_id": 703 + "protocol_id": 742 }, "minecraft:end_stone_bricks": { - "protocol_id": 534 + "protocol_id": 573 }, "minecraft:ender_chest": { - "protocol_id": 299 + "protocol_id": 328 }, "minecraft:exposed_copper": { - "protocol_id": 853 - }, - "minecraft:exposed_cut_copper": { - "protocol_id": 859 - }, - "minecraft:exposed_cut_copper_slab": { - "protocol_id": 867 - }, - "minecraft:exposed_cut_copper_stairs": { - "protocol_id": 863 - }, - "minecraft:farmland": { - "protocol_id": 169 - }, - "minecraft:fern": { - "protocol_id": 111 - }, - "minecraft:fire": { - "protocol_id": 158 - }, - "minecraft:fire_coral": { - "protocol_id": 634 - }, - "minecraft:fire_coral_block": { - "protocol_id": 624 - }, - "minecraft:fire_coral_fan": { - "protocol_id": 644 - }, - "minecraft:fire_coral_wall_fan": { - "protocol_id": 654 - }, - "minecraft:fletching_table": { - "protocol_id": 711 - }, - "minecraft:flower_pot": { - "protocol_id": 310 - }, - "minecraft:flowering_azalea": { "protocol_id": 892 }, - "minecraft:flowering_azalea_leaves": { - "protocol_id": 78 + "minecraft:exposed_cut_copper": { + "protocol_id": 898 }, - "minecraft:frogspawn": { + "minecraft:exposed_cut_copper_slab": { + "protocol_id": 906 + }, + "minecraft:exposed_cut_copper_stairs": { + "protocol_id": 902 + }, + "minecraft:farmland": { + "protocol_id": 174 + }, + "minecraft:fern": { + "protocol_id": 115 + }, + "minecraft:fire": { + "protocol_id": 163 + }, + "minecraft:fire_coral": { + "protocol_id": 673 + }, + "minecraft:fire_coral_block": { + "protocol_id": 663 + }, + "minecraft:fire_coral_fan": { + "protocol_id": 683 + }, + "minecraft:fire_coral_wall_fan": { + "protocol_id": 693 + }, + "minecraft:fletching_table": { + "protocol_id": 750 + }, + "minecraft:flower_pot": { + "protocol_id": 339 + }, + "minecraft:flowering_azalea": { "protocol_id": 931 }, + "minecraft:flowering_azalea_leaves": { + "protocol_id": 82 + }, + "minecraft:frogspawn": { + "protocol_id": 970 + }, "minecraft:frosted_ice": { - "protocol_id": 540 + "protocol_id": 579 }, "minecraft:furnace": { - "protocol_id": 170 + "protocol_id": 175 }, "minecraft:gilded_blackstone": { - "protocol_id": 793 + "protocol_id": 832 }, "minecraft:glass": { - "protocol_id": 81 + "protocol_id": 85 }, "minecraft:glass_pane": { - "protocol_id": 266 + "protocol_id": 295 }, "minecraft:glow_lichen": { - "protocol_id": 273 + "protocol_id": 302 }, "minecraft:glowstone": { - "protocol_id": 220 + "protocol_id": 248 }, "minecraft:gold_block": { - "protocol_id": 149 + "protocol_id": 153 }, "minecraft:gold_ore": { - "protocol_id": 33 + "protocol_id": 35 }, "minecraft:granite": { "protocol_id": 2 }, "minecraft:granite_slab": { - "protocol_id": 687 + "protocol_id": 726 }, "minecraft:granite_stairs": { - "protocol_id": 674 + "protocol_id": 713 }, "minecraft:granite_wall": { - "protocol_id": 696 + "protocol_id": 735 }, "minecraft:grass": { - "protocol_id": 110 + "protocol_id": 114 }, "minecraft:grass_block": { "protocol_id": 8 }, "minecraft:gravel": { - "protocol_id": 32 + "protocol_id": 34 }, "minecraft:gray_banner": { - "protocol_id": 456 + "protocol_id": 490 }, "minecraft:gray_bed": { - "protocol_id": 97 + "protocol_id": 101 }, "minecraft:gray_candle": { - "protocol_id": 810 + "protocol_id": 849 }, "minecraft:gray_candle_cake": { - "protocol_id": 827 + "protocol_id": 866 }, "minecraft:gray_carpet": { - "protocol_id": 431 + "protocol_id": 465 }, "minecraft:gray_concrete": { - "protocol_id": 587 + "protocol_id": 626 }, "minecraft:gray_concrete_powder": { - "protocol_id": 603 + "protocol_id": 642 }, "minecraft:gray_glazed_terracotta": { - "protocol_id": 571 + "protocol_id": 610 }, "minecraft:gray_shulker_box": { - "protocol_id": 555 + "protocol_id": 594 }, "minecraft:gray_stained_glass": { - "protocol_id": 233 + "protocol_id": 261 }, "minecraft:gray_stained_glass_pane": { - "protocol_id": 397 + "protocol_id": 429 }, "minecraft:gray_terracotta": { - "protocol_id": 381 + "protocol_id": 413 }, "minecraft:gray_wall_banner": { - "protocol_id": 472 + "protocol_id": 506 }, "minecraft:gray_wool": { - "protocol_id": 124 + "protocol_id": 128 }, "minecraft:green_banner": { - "protocol_id": 462 + "protocol_id": 496 }, "minecraft:green_bed": { - "protocol_id": 103 + "protocol_id": 107 }, "minecraft:green_candle": { - "protocol_id": 816 + "protocol_id": 855 }, "minecraft:green_candle_cake": { - "protocol_id": 833 + "protocol_id": 872 }, "minecraft:green_carpet": { - "protocol_id": 437 + "protocol_id": 471 }, "minecraft:green_concrete": { - "protocol_id": 593 + "protocol_id": 632 }, "minecraft:green_concrete_powder": { - "protocol_id": 609 + "protocol_id": 648 }, "minecraft:green_glazed_terracotta": { - "protocol_id": 577 + "protocol_id": 616 }, "minecraft:green_shulker_box": { - "protocol_id": 561 + "protocol_id": 600 }, "minecraft:green_stained_glass": { - "protocol_id": 239 + "protocol_id": 267 }, "minecraft:green_stained_glass_pane": { - "protocol_id": 403 + "protocol_id": 435 }, "minecraft:green_terracotta": { - "protocol_id": 387 + "protocol_id": 419 }, "minecraft:green_wall_banner": { - "protocol_id": 478 - }, - "minecraft:green_wool": { - "protocol_id": 130 - }, - "minecraft:grindstone": { - "protocol_id": 712 - }, - "minecraft:hanging_roots": { - "protocol_id": 898 - }, - "minecraft:hay_block": { - "protocol_id": 423 - }, - "minecraft:heavy_weighted_pressure_plate": { - "protocol_id": 362 - }, - "minecraft:honey_block": { - "protocol_id": 771 - }, - "minecraft:honeycomb_block": { - "protocol_id": 772 - }, - "minecraft:hopper": { - "protocol_id": 367 - }, - "minecraft:horn_coral": { - "protocol_id": 635 - }, - "minecraft:horn_coral_block": { - "protocol_id": 625 - }, - "minecraft:horn_coral_fan": { - "protocol_id": 645 - }, - "minecraft:horn_coral_wall_fan": { - "protocol_id": 655 - }, - "minecraft:ice": { - "protocol_id": 205 - }, - "minecraft:infested_chiseled_stone_bricks": { - "protocol_id": 260 - }, - "minecraft:infested_cobblestone": { - "protocol_id": 256 - }, - "minecraft:infested_cracked_stone_bricks": { - "protocol_id": 259 - }, - "minecraft:infested_deepslate": { - "protocol_id": 921 - }, - "minecraft:infested_mossy_stone_bricks": { - "protocol_id": 258 - }, - "minecraft:infested_stone": { - "protocol_id": 255 - }, - "minecraft:infested_stone_bricks": { - "protocol_id": 257 - }, - "minecraft:iron_bars": { - "protocol_id": 264 - }, - "minecraft:iron_block": { - "protocol_id": 150 - }, - "minecraft:iron_door": { - "protocol_id": 191 - }, - "minecraft:iron_ore": { - "protocol_id": 35 - }, - "minecraft:iron_trapdoor": { - "protocol_id": 412 - }, - "minecraft:jack_o_lantern": { - "protocol_id": 223 - }, - "minecraft:jigsaw": { - "protocol_id": 766 - }, - "minecraft:jukebox": { - "protocol_id": 210 - }, - "minecraft:jungle_button": { - "protocol_id": 341 - }, - "minecraft:jungle_door": { - "protocol_id": 524 - }, - "minecraft:jungle_fence": { - "protocol_id": 518 - }, - "minecraft:jungle_fence_gate": { "protocol_id": 512 }, + "minecraft:green_wool": { + "protocol_id": 134 + }, + "minecraft:grindstone": { + "protocol_id": 751 + }, + "minecraft:hanging_roots": { + "protocol_id": 937 + }, + "minecraft:hay_block": { + "protocol_id": 457 + }, + "minecraft:heavy_weighted_pressure_plate": { + "protocol_id": 394 + }, + "minecraft:honey_block": { + "protocol_id": 810 + }, + "minecraft:honeycomb_block": { + "protocol_id": 811 + }, + "minecraft:hopper": { + "protocol_id": 399 + }, + "minecraft:horn_coral": { + "protocol_id": 674 + }, + "minecraft:horn_coral_block": { + "protocol_id": 664 + }, + "minecraft:horn_coral_fan": { + "protocol_id": 684 + }, + "minecraft:horn_coral_wall_fan": { + "protocol_id": 694 + }, + "minecraft:ice": { + "protocol_id": 233 + }, + "minecraft:infested_chiseled_stone_bricks": { + "protocol_id": 289 + }, + "minecraft:infested_cobblestone": { + "protocol_id": 285 + }, + "minecraft:infested_cracked_stone_bricks": { + "protocol_id": 288 + }, + "minecraft:infested_deepslate": { + "protocol_id": 960 + }, + "minecraft:infested_mossy_stone_bricks": { + "protocol_id": 287 + }, + "minecraft:infested_stone": { + "protocol_id": 284 + }, + "minecraft:infested_stone_bricks": { + "protocol_id": 286 + }, + "minecraft:iron_bars": { + "protocol_id": 293 + }, + "minecraft:iron_block": { + "protocol_id": 154 + }, + "minecraft:iron_door": { + "protocol_id": 218 + }, + "minecraft:iron_ore": { + "protocol_id": 37 + }, + "minecraft:iron_trapdoor": { + "protocol_id": 446 + }, + "minecraft:jack_o_lantern": { + "protocol_id": 251 + }, + "minecraft:jigsaw": { + "protocol_id": 805 + }, + "minecraft:jukebox": { + "protocol_id": 238 + }, + "minecraft:jungle_button": { + "protocol_id": 370 + }, + "minecraft:jungle_door": { + "protocol_id": 562 + }, + "minecraft:jungle_fence": { + "protocol_id": 555 + }, + "minecraft:jungle_fence_gate": { + "protocol_id": 548 + }, + "minecraft:jungle_hanging_sign": { + "protocol_id": 200 + }, "minecraft:jungle_leaves": { - "protocol_id": 73 + "protocol_id": 77 }, "minecraft:jungle_log": { - "protocol_id": 43 + "protocol_id": 45 }, "minecraft:jungle_planks": { "protocol_id": 16 }, "minecraft:jungle_pressure_plate": { - "protocol_id": 195 + "protocol_id": 222 }, "minecraft:jungle_sapling": { - "protocol_id": 23 + "protocol_id": 25 }, "minecraft:jungle_sign": { - "protocol_id": 175 + "protocol_id": 180 }, "minecraft:jungle_slab": { - "protocol_id": 488 + "protocol_id": 522 }, "minecraft:jungle_stairs": { - "protocol_id": 305 + "protocol_id": 334 }, "minecraft:jungle_trapdoor": { - "protocol_id": 245 + "protocol_id": 273 + }, + "minecraft:jungle_wall_hanging_sign": { + "protocol_id": 210 }, "minecraft:jungle_wall_sign": { - "protocol_id": 186 + "protocol_id": 192 }, "minecraft:jungle_wood": { - "protocol_id": 59 + "protocol_id": 63 }, "minecraft:kelp": { - "protocol_id": 612 + "protocol_id": 651 }, "minecraft:kelp_plant": { - "protocol_id": 613 + "protocol_id": 652 }, "minecraft:ladder": { - "protocol_id": 179 + "protocol_id": 185 }, "minecraft:lantern": { - "protocol_id": 717 + "protocol_id": 756 }, "minecraft:lapis_block": { - "protocol_id": 84 + "protocol_id": 88 }, "minecraft:lapis_ore": { - "protocol_id": 82 + "protocol_id": 86 }, "minecraft:large_amethyst_bud": { - "protocol_id": 839 + "protocol_id": 878 }, "minecraft:large_fern": { - "protocol_id": 448 + "protocol_id": 482 }, "minecraft:lava": { - "protocol_id": 29 + "protocol_id": 31 }, "minecraft:lava_cauldron": { - "protocol_id": 288 + "protocol_id": 317 }, "minecraft:lectern": { - "protocol_id": 713 + "protocol_id": 752 }, "minecraft:lever": { - "protocol_id": 189 + "protocol_id": 216 }, "minecraft:light": { - "protocol_id": 411 + "protocol_id": 445 }, "minecraft:light_blue_banner": { - "protocol_id": 452 + "protocol_id": 486 }, "minecraft:light_blue_bed": { - "protocol_id": 93 + "protocol_id": 97 }, "minecraft:light_blue_candle": { - "protocol_id": 806 + "protocol_id": 845 }, "minecraft:light_blue_candle_cake": { - "protocol_id": 823 + "protocol_id": 862 }, "minecraft:light_blue_carpet": { - "protocol_id": 427 + "protocol_id": 461 }, "minecraft:light_blue_concrete": { - "protocol_id": 583 + "protocol_id": 622 }, "minecraft:light_blue_concrete_powder": { - "protocol_id": 599 + "protocol_id": 638 }, "minecraft:light_blue_glazed_terracotta": { - "protocol_id": 567 + "protocol_id": 606 }, "minecraft:light_blue_shulker_box": { - "protocol_id": 551 + "protocol_id": 590 }, "minecraft:light_blue_stained_glass": { - "protocol_id": 229 + "protocol_id": 257 }, "minecraft:light_blue_stained_glass_pane": { - "protocol_id": 393 + "protocol_id": 425 }, "minecraft:light_blue_terracotta": { - "protocol_id": 377 + "protocol_id": 409 }, "minecraft:light_blue_wall_banner": { - "protocol_id": 468 + "protocol_id": 502 }, "minecraft:light_blue_wool": { - "protocol_id": 120 + "protocol_id": 124 }, "minecraft:light_gray_banner": { - "protocol_id": 457 + "protocol_id": 491 }, "minecraft:light_gray_bed": { - "protocol_id": 98 + "protocol_id": 102 }, "minecraft:light_gray_candle": { - "protocol_id": 811 + "protocol_id": 850 }, "minecraft:light_gray_candle_cake": { - "protocol_id": 828 + "protocol_id": 867 }, "minecraft:light_gray_carpet": { - "protocol_id": 432 + "protocol_id": 466 }, "minecraft:light_gray_concrete": { - "protocol_id": 588 + "protocol_id": 627 }, "minecraft:light_gray_concrete_powder": { - "protocol_id": 604 + "protocol_id": 643 }, "minecraft:light_gray_glazed_terracotta": { - "protocol_id": 572 + "protocol_id": 611 }, "minecraft:light_gray_shulker_box": { - "protocol_id": 556 + "protocol_id": 595 }, "minecraft:light_gray_stained_glass": { - "protocol_id": 234 + "protocol_id": 262 }, "minecraft:light_gray_stained_glass_pane": { - "protocol_id": 398 + "protocol_id": 430 }, "minecraft:light_gray_terracotta": { - "protocol_id": 382 + "protocol_id": 414 }, "minecraft:light_gray_wall_banner": { - "protocol_id": 473 + "protocol_id": 507 }, "minecraft:light_gray_wool": { - "protocol_id": 125 + "protocol_id": 129 }, "minecraft:light_weighted_pressure_plate": { - "protocol_id": 361 + "protocol_id": 393 }, "minecraft:lightning_rod": { - "protocol_id": 885 + "protocol_id": 924 }, "minecraft:lilac": { - "protocol_id": 444 + "protocol_id": 478 }, "minecraft:lily_of_the_valley": { - "protocol_id": 146 + "protocol_id": 150 }, "minecraft:lily_pad": { - "protocol_id": 279 + "protocol_id": 308 }, "minecraft:lime_banner": { - "protocol_id": 454 + "protocol_id": 488 }, "minecraft:lime_bed": { - "protocol_id": 95 + "protocol_id": 99 }, "minecraft:lime_candle": { - "protocol_id": 808 + "protocol_id": 847 }, "minecraft:lime_candle_cake": { - "protocol_id": 825 + "protocol_id": 864 }, "minecraft:lime_carpet": { - "protocol_id": 429 + "protocol_id": 463 }, "minecraft:lime_concrete": { - "protocol_id": 585 + "protocol_id": 624 }, "minecraft:lime_concrete_powder": { - "protocol_id": 601 + "protocol_id": 640 }, "minecraft:lime_glazed_terracotta": { - "protocol_id": 569 + "protocol_id": 608 }, "minecraft:lime_shulker_box": { - "protocol_id": 553 + "protocol_id": 592 }, "minecraft:lime_stained_glass": { - "protocol_id": 231 + "protocol_id": 259 }, "minecraft:lime_stained_glass_pane": { - "protocol_id": 395 + "protocol_id": 427 }, "minecraft:lime_terracotta": { - "protocol_id": 379 + "protocol_id": 411 }, "minecraft:lime_wall_banner": { - "protocol_id": 470 + "protocol_id": 504 }, "minecraft:lime_wool": { - "protocol_id": 122 + "protocol_id": 126 }, "minecraft:lodestone": { - "protocol_id": 781 + "protocol_id": 820 }, "minecraft:loom": { - "protocol_id": 706 + "protocol_id": 745 }, "minecraft:magenta_banner": { - "protocol_id": 451 + "protocol_id": 485 }, "minecraft:magenta_bed": { - "protocol_id": 92 + "protocol_id": 96 }, "minecraft:magenta_candle": { - "protocol_id": 805 + "protocol_id": 844 }, "minecraft:magenta_candle_cake": { - "protocol_id": 822 + "protocol_id": 861 }, "minecraft:magenta_carpet": { - "protocol_id": 426 + "protocol_id": 460 }, "minecraft:magenta_concrete": { - "protocol_id": 582 + "protocol_id": 621 }, "minecraft:magenta_concrete_powder": { - "protocol_id": 598 + "protocol_id": 637 }, "minecraft:magenta_glazed_terracotta": { - "protocol_id": 566 + "protocol_id": 605 }, "minecraft:magenta_shulker_box": { - "protocol_id": 550 + "protocol_id": 589 }, "minecraft:magenta_stained_glass": { - "protocol_id": 228 + "protocol_id": 256 }, "minecraft:magenta_stained_glass_pane": { - "protocol_id": 392 + "protocol_id": 424 }, "minecraft:magenta_terracotta": { - "protocol_id": 376 + "protocol_id": 408 }, "minecraft:magenta_wall_banner": { - "protocol_id": 467 + "protocol_id": 501 }, "minecraft:magenta_wool": { - "protocol_id": 119 + "protocol_id": 123 }, "minecraft:magma_block": { - "protocol_id": 541 + "protocol_id": 580 }, "minecraft:mangrove_button": { - "protocol_id": 344 + "protocol_id": 373 }, "minecraft:mangrove_door": { - "protocol_id": 527 + "protocol_id": 565 }, "minecraft:mangrove_fence": { - "protocol_id": 521 + "protocol_id": 558 }, "minecraft:mangrove_fence_gate": { - "protocol_id": 515 + "protocol_id": 551 + }, + "minecraft:mangrove_hanging_sign": { + "protocol_id": 204 }, "minecraft:mangrove_leaves": { - "protocol_id": 76 + "protocol_id": 80 }, "minecraft:mangrove_log": { - "protocol_id": 46 + "protocol_id": 48 }, "minecraft:mangrove_planks": { "protocol_id": 19 }, "minecraft:mangrove_pressure_plate": { - "protocol_id": 198 + "protocol_id": 225 }, "minecraft:mangrove_propagule": { - "protocol_id": 26 + "protocol_id": 28 }, "minecraft:mangrove_roots": { - "protocol_id": 47 + "protocol_id": 49 }, "minecraft:mangrove_sign": { - "protocol_id": 177 + "protocol_id": 182 }, "minecraft:mangrove_slab": { - "protocol_id": 491 + "protocol_id": 525 }, "minecraft:mangrove_stairs": { - "protocol_id": 408 + "protocol_id": 440 }, "minecraft:mangrove_trapdoor": { - "protocol_id": 248 + "protocol_id": 276 + }, + "minecraft:mangrove_wall_hanging_sign": { + "protocol_id": 212 }, "minecraft:mangrove_wall_sign": { - "protocol_id": 188 + "protocol_id": 194 }, "minecraft:mangrove_wood": { - "protocol_id": 62 + "protocol_id": 66 }, "minecraft:medium_amethyst_bud": { - "protocol_id": 840 + "protocol_id": 879 }, "minecraft:melon": { - "protocol_id": 267 + "protocol_id": 296 }, "minecraft:melon_stem": { - "protocol_id": 271 + "protocol_id": 300 }, "minecraft:moss_block": { - "protocol_id": 894 + "protocol_id": 933 }, "minecraft:moss_carpet": { - "protocol_id": 893 + "protocol_id": 932 }, "minecraft:mossy_cobblestone": { - "protocol_id": 154 + "protocol_id": 159 }, "minecraft:mossy_cobblestone_slab": { - "protocol_id": 683 + "protocol_id": 722 }, "minecraft:mossy_cobblestone_stairs": { - "protocol_id": 669 + "protocol_id": 708 }, "minecraft:mossy_cobblestone_wall": { - "protocol_id": 309 - }, - "minecraft:mossy_stone_brick_slab": { - "protocol_id": 681 - }, - "minecraft:mossy_stone_brick_stairs": { - "protocol_id": 667 - }, - "minecraft:mossy_stone_brick_wall": { - "protocol_id": 695 - }, - "minecraft:mossy_stone_bricks": { - "protocol_id": 250 - }, - "minecraft:moving_piston": { - "protocol_id": 133 - }, - "minecraft:mud": { - "protocol_id": 900 - }, - "minecraft:mud_brick_slab": { - "protocol_id": 500 - }, - "minecraft:mud_brick_stairs": { - "protocol_id": 277 - }, - "minecraft:mud_brick_wall": { - "protocol_id": 698 - }, - "minecraft:mud_bricks": { - "protocol_id": 254 - }, - "minecraft:muddy_mangrove_roots": { - "protocol_id": 48 - }, - "minecraft:mushroom_stem": { - "protocol_id": 263 - }, - "minecraft:mycelium": { - "protocol_id": 278 - }, - "minecraft:nether_brick_fence": { - "protocol_id": 281 - }, - "minecraft:nether_brick_slab": { - "protocol_id": 501 - }, - "minecraft:nether_brick_stairs": { - "protocol_id": 282 - }, - "minecraft:nether_brick_wall": { - "protocol_id": 699 - }, - "minecraft:nether_bricks": { - "protocol_id": 280 - }, - "minecraft:nether_gold_ore": { - "protocol_id": 39 - }, - "minecraft:nether_portal": { - "protocol_id": 221 - }, - "minecraft:nether_quartz_ore": { - "protocol_id": 366 - }, - "minecraft:nether_sprouts": { - "protocol_id": 730 - }, - "minecraft:nether_wart": { - "protocol_id": 283 - }, - "minecraft:nether_wart_block": { - "protocol_id": 542 - }, - "minecraft:netherite_block": { - "protocol_id": 773 - }, - "minecraft:netherrack": { - "protocol_id": 213 - }, - "minecraft:note_block": { - "protocol_id": 89 - }, - "minecraft:oak_button": { "protocol_id": 338 }, + "minecraft:mossy_stone_brick_slab": { + "protocol_id": 720 + }, + "minecraft:mossy_stone_brick_stairs": { + "protocol_id": 706 + }, + "minecraft:mossy_stone_brick_wall": { + "protocol_id": 734 + }, + "minecraft:mossy_stone_bricks": { + "protocol_id": 279 + }, + "minecraft:moving_piston": { + "protocol_id": 137 + }, + "minecraft:mud": { + "protocol_id": 939 + }, + "minecraft:mud_brick_slab": { + "protocol_id": 536 + }, + "minecraft:mud_brick_stairs": { + "protocol_id": 306 + }, + "minecraft:mud_brick_wall": { + "protocol_id": 737 + }, + "minecraft:mud_bricks": { + "protocol_id": 283 + }, + "minecraft:muddy_mangrove_roots": { + "protocol_id": 50 + }, + "minecraft:mushroom_stem": { + "protocol_id": 292 + }, + "minecraft:mycelium": { + "protocol_id": 307 + }, + "minecraft:nether_brick_fence": { + "protocol_id": 310 + }, + "minecraft:nether_brick_slab": { + "protocol_id": 537 + }, + "minecraft:nether_brick_stairs": { + "protocol_id": 311 + }, + "minecraft:nether_brick_wall": { + "protocol_id": 738 + }, + "minecraft:nether_bricks": { + "protocol_id": 309 + }, + "minecraft:nether_gold_ore": { + "protocol_id": 41 + }, + "minecraft:nether_portal": { + "protocol_id": 249 + }, + "minecraft:nether_quartz_ore": { + "protocol_id": 398 + }, + "minecraft:nether_sprouts": { + "protocol_id": 769 + }, + "minecraft:nether_wart": { + "protocol_id": 312 + }, + "minecraft:nether_wart_block": { + "protocol_id": 581 + }, + "minecraft:netherite_block": { + "protocol_id": 812 + }, + "minecraft:netherrack": { + "protocol_id": 241 + }, + "minecraft:note_block": { + "protocol_id": 93 + }, + "minecraft:oak_button": { + "protocol_id": 367 + }, "minecraft:oak_door": { - "protocol_id": 178 + "protocol_id": 184 }, "minecraft:oak_fence": { - "protocol_id": 211 + "protocol_id": 239 }, "minecraft:oak_fence_gate": { - "protocol_id": 274 + "protocol_id": 303 + }, + "minecraft:oak_hanging_sign": { + "protocol_id": 196 }, "minecraft:oak_leaves": { - "protocol_id": 70 + "protocol_id": 74 }, "minecraft:oak_log": { - "protocol_id": 40 + "protocol_id": 42 }, "minecraft:oak_planks": { "protocol_id": 13 }, "minecraft:oak_pressure_plate": { - "protocol_id": 192 + "protocol_id": 219 }, "minecraft:oak_sapling": { - "protocol_id": 20 + "protocol_id": 22 }, "minecraft:oak_sign": { - "protocol_id": 171 + "protocol_id": 176 }, "minecraft:oak_slab": { - "protocol_id": 485 + "protocol_id": 519 }, "minecraft:oak_stairs": { - "protocol_id": 161 + "protocol_id": 166 }, "minecraft:oak_trapdoor": { - "protocol_id": 242 + "protocol_id": 270 + }, + "minecraft:oak_wall_hanging_sign": { + "protocol_id": 206 }, "minecraft:oak_wall_sign": { - "protocol_id": 182 + "protocol_id": 188 }, "minecraft:oak_wood": { - "protocol_id": 56 + "protocol_id": 60 }, "minecraft:observer": { - "protocol_id": 546 + "protocol_id": 585 }, "minecraft:obsidian": { - "protocol_id": 155 + "protocol_id": 160 }, "minecraft:ochre_froglight": { - "protocol_id": 928 + "protocol_id": 967 }, "minecraft:orange_banner": { - "protocol_id": 450 + "protocol_id": 484 }, "minecraft:orange_bed": { - "protocol_id": 91 + "protocol_id": 95 }, "minecraft:orange_candle": { - "protocol_id": 804 + "protocol_id": 843 }, "minecraft:orange_candle_cake": { - "protocol_id": 821 + "protocol_id": 860 }, "minecraft:orange_carpet": { - "protocol_id": 425 + "protocol_id": 459 }, "minecraft:orange_concrete": { - "protocol_id": 581 + "protocol_id": 620 }, "minecraft:orange_concrete_powder": { - "protocol_id": 597 + "protocol_id": 636 }, "minecraft:orange_glazed_terracotta": { - "protocol_id": 565 + "protocol_id": 604 }, "minecraft:orange_shulker_box": { - "protocol_id": 549 + "protocol_id": 588 }, "minecraft:orange_stained_glass": { - "protocol_id": 227 + "protocol_id": 255 }, "minecraft:orange_stained_glass_pane": { - "protocol_id": 391 + "protocol_id": 423 }, "minecraft:orange_terracotta": { - "protocol_id": 375 + "protocol_id": 407 }, "minecraft:orange_tulip": { - "protocol_id": 140 + "protocol_id": 144 }, "minecraft:orange_wall_banner": { - "protocol_id": 466 + "protocol_id": 500 }, "minecraft:orange_wool": { - "protocol_id": 118 + "protocol_id": 122 }, "minecraft:oxeye_daisy": { - "protocol_id": 143 + "protocol_id": 147 }, "minecraft:oxidized_copper": { - "protocol_id": 851 + "protocol_id": 890 }, "minecraft:oxidized_cut_copper": { - "protocol_id": 857 + "protocol_id": 896 }, "minecraft:oxidized_cut_copper_slab": { - "protocol_id": 865 + "protocol_id": 904 }, "minecraft:oxidized_cut_copper_stairs": { - "protocol_id": 861 + "protocol_id": 900 }, "minecraft:packed_ice": { - "protocol_id": 442 + "protocol_id": 476 }, "minecraft:packed_mud": { - "protocol_id": 253 + "protocol_id": 282 }, "minecraft:pearlescent_froglight": { - "protocol_id": 930 + "protocol_id": 969 }, "minecraft:peony": { - "protocol_id": 446 + "protocol_id": 480 }, "minecraft:petrified_oak_slab": { - "protocol_id": 496 + "protocol_id": 532 + }, + "minecraft:piglin_head": { + "protocol_id": 387 + }, + "minecraft:piglin_wall_head": { + "protocol_id": 388 }, "minecraft:pink_banner": { - "protocol_id": 455 + "protocol_id": 489 }, "minecraft:pink_bed": { - "protocol_id": 96 + "protocol_id": 100 }, "minecraft:pink_candle": { - "protocol_id": 809 + "protocol_id": 848 }, "minecraft:pink_candle_cake": { - "protocol_id": 826 + "protocol_id": 865 }, "minecraft:pink_carpet": { - "protocol_id": 430 + "protocol_id": 464 }, "minecraft:pink_concrete": { - "protocol_id": 586 + "protocol_id": 625 }, "minecraft:pink_concrete_powder": { - "protocol_id": 602 + "protocol_id": 641 }, "minecraft:pink_glazed_terracotta": { - "protocol_id": 570 + "protocol_id": 609 }, "minecraft:pink_shulker_box": { - "protocol_id": 554 + "protocol_id": 593 }, "minecraft:pink_stained_glass": { - "protocol_id": 232 + "protocol_id": 260 }, "minecraft:pink_stained_glass_pane": { - "protocol_id": 396 + "protocol_id": 428 }, "minecraft:pink_terracotta": { - "protocol_id": 380 + "protocol_id": 412 }, "minecraft:pink_tulip": { - "protocol_id": 142 + "protocol_id": 146 }, "minecraft:pink_wall_banner": { - "protocol_id": 471 + "protocol_id": 505 }, "minecraft:pink_wool": { - "protocol_id": 123 + "protocol_id": 127 }, "minecraft:piston": { - "protocol_id": 115 + "protocol_id": 119 }, "minecraft:piston_head": { - "protocol_id": 116 + "protocol_id": 120 }, "minecraft:player_head": { - "protocol_id": 351 + "protocol_id": 381 }, "minecraft:player_wall_head": { - "protocol_id": 352 + "protocol_id": 382 }, "minecraft:podzol": { "protocol_id": 11 }, "minecraft:pointed_dripstone": { - "protocol_id": 886 + "protocol_id": 925 }, "minecraft:polished_andesite": { "protocol_id": 7 }, "minecraft:polished_andesite_slab": { - "protocol_id": 690 + "protocol_id": 729 }, "minecraft:polished_andesite_stairs": { - "protocol_id": 677 + "protocol_id": 716 }, "minecraft:polished_basalt": { - "protocol_id": 217 + "protocol_id": 245 }, "minecraft:polished_blackstone": { - "protocol_id": 786 + "protocol_id": 825 }, "minecraft:polished_blackstone_brick_slab": { - "protocol_id": 790 + "protocol_id": 829 }, "minecraft:polished_blackstone_brick_stairs": { - "protocol_id": 791 + "protocol_id": 830 }, "minecraft:polished_blackstone_brick_wall": { - "protocol_id": 792 + "protocol_id": 831 }, "minecraft:polished_blackstone_bricks": { - "protocol_id": 787 + "protocol_id": 826 }, "minecraft:polished_blackstone_button": { - "protocol_id": 797 + "protocol_id": 836 }, "minecraft:polished_blackstone_pressure_plate": { - "protocol_id": 796 + "protocol_id": 835 }, "minecraft:polished_blackstone_slab": { - "protocol_id": 795 + "protocol_id": 834 }, "minecraft:polished_blackstone_stairs": { - "protocol_id": 794 + "protocol_id": 833 }, "minecraft:polished_blackstone_wall": { - "protocol_id": 798 + "protocol_id": 837 }, "minecraft:polished_deepslate": { - "protocol_id": 906 + "protocol_id": 945 }, "minecraft:polished_deepslate_slab": { - "protocol_id": 908 + "protocol_id": 947 }, "minecraft:polished_deepslate_stairs": { - "protocol_id": 907 + "protocol_id": 946 }, "minecraft:polished_deepslate_wall": { - "protocol_id": 909 + "protocol_id": 948 }, "minecraft:polished_diorite": { "protocol_id": 5 }, "minecraft:polished_diorite_slab": { - "protocol_id": 682 + "protocol_id": 721 }, "minecraft:polished_diorite_stairs": { - "protocol_id": 668 + "protocol_id": 707 }, "minecraft:polished_granite": { "protocol_id": 3 }, "minecraft:polished_granite_slab": { - "protocol_id": 679 - }, - "minecraft:polished_granite_stairs": { - "protocol_id": 665 - }, - "minecraft:poppy": { - "protocol_id": 135 - }, - "minecraft:potatoes": { - "protocol_id": 337 - }, - "minecraft:potted_acacia_sapling": { - "protocol_id": 315 - }, - "minecraft:potted_allium": { - "protocol_id": 322 - }, - "minecraft:potted_azalea_bush": { - "protocol_id": 926 - }, - "minecraft:potted_azure_bluet": { - "protocol_id": 323 - }, - "minecraft:potted_bamboo": { - "protocol_id": 661 - }, - "minecraft:potted_birch_sapling": { - "protocol_id": 313 - }, - "minecraft:potted_blue_orchid": { - "protocol_id": 321 - }, - "minecraft:potted_brown_mushroom": { - "protocol_id": 333 - }, - "minecraft:potted_cactus": { - "protocol_id": 335 - }, - "minecraft:potted_cornflower": { - "protocol_id": 329 - }, - "minecraft:potted_crimson_fungus": { - "protocol_id": 777 - }, - "minecraft:potted_crimson_roots": { - "protocol_id": 779 - }, - "minecraft:potted_dandelion": { - "protocol_id": 319 - }, - "minecraft:potted_dark_oak_sapling": { - "protocol_id": 316 - }, - "minecraft:potted_dead_bush": { - "protocol_id": 334 - }, - "minecraft:potted_fern": { - "protocol_id": 318 - }, - "minecraft:potted_flowering_azalea_bush": { - "protocol_id": 927 - }, - "minecraft:potted_jungle_sapling": { - "protocol_id": 314 - }, - "minecraft:potted_lily_of_the_valley": { - "protocol_id": 330 - }, - "minecraft:potted_mangrove_propagule": { - "protocol_id": 317 - }, - "minecraft:potted_oak_sapling": { - "protocol_id": 311 - }, - "minecraft:potted_orange_tulip": { - "protocol_id": 325 - }, - "minecraft:potted_oxeye_daisy": { - "protocol_id": 328 - }, - "minecraft:potted_pink_tulip": { - "protocol_id": 327 - }, - "minecraft:potted_poppy": { - "protocol_id": 320 - }, - "minecraft:potted_red_mushroom": { - "protocol_id": 332 - }, - "minecraft:potted_red_tulip": { - "protocol_id": 324 - }, - "minecraft:potted_spruce_sapling": { - "protocol_id": 312 - }, - "minecraft:potted_warped_fungus": { - "protocol_id": 778 - }, - "minecraft:potted_warped_roots": { - "protocol_id": 780 - }, - "minecraft:potted_white_tulip": { - "protocol_id": 326 - }, - "minecraft:potted_wither_rose": { - "protocol_id": 331 - }, - "minecraft:powder_snow": { - "protocol_id": 845 - }, - "minecraft:powder_snow_cauldron": { - "protocol_id": 289 - }, - "minecraft:powered_rail": { - "protocol_id": 106 - }, - "minecraft:prismarine": { - "protocol_id": 413 - }, - "minecraft:prismarine_brick_slab": { - "protocol_id": 420 - }, - "minecraft:prismarine_brick_stairs": { - "protocol_id": 417 - }, - "minecraft:prismarine_bricks": { - "protocol_id": 414 - }, - "minecraft:prismarine_slab": { - "protocol_id": 419 - }, - "minecraft:prismarine_stairs": { - "protocol_id": 416 - }, - "minecraft:prismarine_wall": { - "protocol_id": 693 - }, - "minecraft:pumpkin": { - "protocol_id": 212 - }, - "minecraft:pumpkin_stem": { - "protocol_id": 270 - }, - "minecraft:purple_banner": { - "protocol_id": 459 - }, - "minecraft:purple_bed": { - "protocol_id": 100 - }, - "minecraft:purple_candle": { - "protocol_id": 813 - }, - "minecraft:purple_candle_cake": { - "protocol_id": 830 - }, - "minecraft:purple_carpet": { - "protocol_id": 434 - }, - "minecraft:purple_concrete": { - "protocol_id": 590 - }, - "minecraft:purple_concrete_powder": { - "protocol_id": 606 - }, - "minecraft:purple_glazed_terracotta": { - "protocol_id": 574 - }, - "minecraft:purple_shulker_box": { - "protocol_id": 558 - }, - "minecraft:purple_stained_glass": { - "protocol_id": 236 - }, - "minecraft:purple_stained_glass_pane": { - "protocol_id": 400 - }, - "minecraft:purple_terracotta": { - "protocol_id": 384 - }, - "minecraft:purple_wall_banner": { - "protocol_id": 475 - }, - "minecraft:purple_wool": { - "protocol_id": 127 - }, - "minecraft:purpur_block": { - "protocol_id": 531 - }, - "minecraft:purpur_pillar": { - "protocol_id": 532 - }, - "minecraft:purpur_slab": { - "protocol_id": 505 - }, - "minecraft:purpur_stairs": { - "protocol_id": 533 - }, - "minecraft:quartz_block": { - "protocol_id": 368 - }, - "minecraft:quartz_bricks": { - "protocol_id": 801 - }, - "minecraft:quartz_pillar": { - "protocol_id": 370 - }, - "minecraft:quartz_slab": { - "protocol_id": 502 - }, - "minecraft:quartz_stairs": { - "protocol_id": 371 - }, - "minecraft:rail": { - "protocol_id": 180 - }, - "minecraft:raw_copper_block": { - "protocol_id": 924 - }, - "minecraft:raw_gold_block": { - "protocol_id": 925 - }, - "minecraft:raw_iron_block": { - "protocol_id": 923 - }, - "minecraft:red_banner": { - "protocol_id": 463 - }, - "minecraft:red_bed": { - "protocol_id": 104 - }, - "minecraft:red_candle": { - "protocol_id": 817 - }, - "minecraft:red_candle_cake": { - "protocol_id": 834 - }, - "minecraft:red_carpet": { - "protocol_id": 438 - }, - "minecraft:red_concrete": { - "protocol_id": 594 - }, - "minecraft:red_concrete_powder": { - "protocol_id": 610 - }, - "minecraft:red_glazed_terracotta": { - "protocol_id": 578 - }, - "minecraft:red_mushroom": { - "protocol_id": 148 - }, - "minecraft:red_mushroom_block": { - "protocol_id": 262 - }, - "minecraft:red_nether_brick_slab": { - "protocol_id": 689 - }, - "minecraft:red_nether_brick_stairs": { - "protocol_id": 676 - }, - "minecraft:red_nether_brick_wall": { - "protocol_id": 701 - }, - "minecraft:red_nether_bricks": { - "protocol_id": 543 - }, - "minecraft:red_sand": { - "protocol_id": 31 - }, - "minecraft:red_sandstone": { - "protocol_id": 481 - }, - "minecraft:red_sandstone_slab": { - "protocol_id": 503 - }, - "minecraft:red_sandstone_stairs": { - "protocol_id": 484 - }, - "minecraft:red_sandstone_wall": { - "protocol_id": 694 - }, - "minecraft:red_shulker_box": { - "protocol_id": 562 - }, - "minecraft:red_stained_glass": { - "protocol_id": 240 - }, - "minecraft:red_stained_glass_pane": { - "protocol_id": 404 - }, - "minecraft:red_terracotta": { - "protocol_id": 388 - }, - "minecraft:red_tulip": { - "protocol_id": 139 - }, - "minecraft:red_wall_banner": { - "protocol_id": 479 - }, - "minecraft:red_wool": { - "protocol_id": 131 - }, - "minecraft:redstone_block": { - "protocol_id": 365 - }, - "minecraft:redstone_lamp": { - "protocol_id": 294 - }, - "minecraft:redstone_ore": { - "protocol_id": 199 - }, - "minecraft:redstone_torch": { - "protocol_id": 201 - }, - "minecraft:redstone_wall_torch": { - "protocol_id": 202 - }, - "minecraft:redstone_wire": { - "protocol_id": 163 - }, - "minecraft:reinforced_deepslate": { - "protocol_id": 932 - }, - "minecraft:repeater": { - "protocol_id": 225 - }, - "minecraft:repeating_command_block": { - "protocol_id": 538 - }, - "minecraft:respawn_anchor": { - "protocol_id": 776 - }, - "minecraft:rooted_dirt": { - "protocol_id": 899 - }, - "minecraft:rose_bush": { - "protocol_id": 445 - }, - "minecraft:sand": { - "protocol_id": 30 - }, - "minecraft:sandstone": { - "protocol_id": 86 - }, - "minecraft:sandstone_slab": { - "protocol_id": 494 - }, - "minecraft:sandstone_stairs": { - "protocol_id": 296 - }, - "minecraft:sandstone_wall": { - "protocol_id": 702 - }, - "minecraft:scaffolding": { - "protocol_id": 705 - }, - "minecraft:sculk": { - "protocol_id": 847 - }, - "minecraft:sculk_catalyst": { - "protocol_id": 849 - }, - "minecraft:sculk_sensor": { - "protocol_id": 846 - }, - "minecraft:sculk_shrieker": { - "protocol_id": 850 - }, - "minecraft:sculk_vein": { - "protocol_id": 848 - }, - "minecraft:sea_lantern": { - "protocol_id": 422 - }, - "minecraft:sea_pickle": { - "protocol_id": 656 - }, - "minecraft:seagrass": { - "protocol_id": 113 - }, - "minecraft:shroomlight": { - "protocol_id": 737 - }, - "minecraft:shulker_box": { - "protocol_id": 547 - }, - "minecraft:skeleton_skull": { - "protocol_id": 345 - }, - "minecraft:skeleton_wall_skull": { - "protocol_id": 346 - }, - "minecraft:slime_block": { - "protocol_id": 409 - }, - "minecraft:small_amethyst_bud": { - "protocol_id": 841 - }, - "minecraft:small_dripleaf": { - "protocol_id": 897 - }, - "minecraft:smithing_table": { - "protocol_id": 714 - }, - "minecraft:smoker": { - "protocol_id": 708 - }, - "minecraft:smooth_basalt": { - "protocol_id": 922 - }, - "minecraft:smooth_quartz": { - "protocol_id": 508 - }, - "minecraft:smooth_quartz_slab": { - "protocol_id": 686 - }, - "minecraft:smooth_quartz_stairs": { - "protocol_id": 673 - }, - "minecraft:smooth_red_sandstone": { - "protocol_id": 509 - }, - "minecraft:smooth_red_sandstone_slab": { - "protocol_id": 680 - }, - "minecraft:smooth_red_sandstone_stairs": { - "protocol_id": 666 - }, - "minecraft:smooth_sandstone": { - "protocol_id": 507 - }, - "minecraft:smooth_sandstone_slab": { - "protocol_id": 685 - }, - "minecraft:smooth_sandstone_stairs": { - "protocol_id": 672 - }, - "minecraft:smooth_stone": { - "protocol_id": 506 - }, - "minecraft:smooth_stone_slab": { - "protocol_id": 493 - }, - "minecraft:snow": { - "protocol_id": 204 - }, - "minecraft:snow_block": { - "protocol_id": 206 - }, - "minecraft:soul_campfire": { - "protocol_id": 720 - }, - "minecraft:soul_fire": { - "protocol_id": 159 - }, - "minecraft:soul_lantern": { "protocol_id": 718 }, + "minecraft:polished_granite_stairs": { + "protocol_id": 704 + }, + "minecraft:poppy": { + "protocol_id": 139 + }, + "minecraft:potatoes": { + "protocol_id": 366 + }, + "minecraft:potted_acacia_sapling": { + "protocol_id": 344 + }, + "minecraft:potted_allium": { + "protocol_id": 351 + }, + "minecraft:potted_azalea_bush": { + "protocol_id": 965 + }, + "minecraft:potted_azure_bluet": { + "protocol_id": 352 + }, + "minecraft:potted_bamboo": { + "protocol_id": 700 + }, + "minecraft:potted_birch_sapling": { + "protocol_id": 342 + }, + "minecraft:potted_blue_orchid": { + "protocol_id": 350 + }, + "minecraft:potted_brown_mushroom": { + "protocol_id": 362 + }, + "minecraft:potted_cactus": { + "protocol_id": 364 + }, + "minecraft:potted_cornflower": { + "protocol_id": 358 + }, + "minecraft:potted_crimson_fungus": { + "protocol_id": 816 + }, + "minecraft:potted_crimson_roots": { + "protocol_id": 818 + }, + "minecraft:potted_dandelion": { + "protocol_id": 348 + }, + "minecraft:potted_dark_oak_sapling": { + "protocol_id": 345 + }, + "minecraft:potted_dead_bush": { + "protocol_id": 363 + }, + "minecraft:potted_fern": { + "protocol_id": 347 + }, + "minecraft:potted_flowering_azalea_bush": { + "protocol_id": 966 + }, + "minecraft:potted_jungle_sapling": { + "protocol_id": 343 + }, + "minecraft:potted_lily_of_the_valley": { + "protocol_id": 359 + }, + "minecraft:potted_mangrove_propagule": { + "protocol_id": 346 + }, + "minecraft:potted_oak_sapling": { + "protocol_id": 340 + }, + "minecraft:potted_orange_tulip": { + "protocol_id": 354 + }, + "minecraft:potted_oxeye_daisy": { + "protocol_id": 357 + }, + "minecraft:potted_pink_tulip": { + "protocol_id": 356 + }, + "minecraft:potted_poppy": { + "protocol_id": 349 + }, + "minecraft:potted_red_mushroom": { + "protocol_id": 361 + }, + "minecraft:potted_red_tulip": { + "protocol_id": 353 + }, + "minecraft:potted_spruce_sapling": { + "protocol_id": 341 + }, + "minecraft:potted_warped_fungus": { + "protocol_id": 817 + }, + "minecraft:potted_warped_roots": { + "protocol_id": 819 + }, + "minecraft:potted_white_tulip": { + "protocol_id": 355 + }, + "minecraft:potted_wither_rose": { + "protocol_id": 360 + }, + "minecraft:powder_snow": { + "protocol_id": 884 + }, + "minecraft:powder_snow_cauldron": { + "protocol_id": 318 + }, + "minecraft:powered_rail": { + "protocol_id": 110 + }, + "minecraft:prismarine": { + "protocol_id": 447 + }, + "minecraft:prismarine_brick_slab": { + "protocol_id": 454 + }, + "minecraft:prismarine_brick_stairs": { + "protocol_id": 451 + }, + "minecraft:prismarine_bricks": { + "protocol_id": 448 + }, + "minecraft:prismarine_slab": { + "protocol_id": 453 + }, + "minecraft:prismarine_stairs": { + "protocol_id": 450 + }, + "minecraft:prismarine_wall": { + "protocol_id": 732 + }, + "minecraft:pumpkin": { + "protocol_id": 240 + }, + "minecraft:pumpkin_stem": { + "protocol_id": 299 + }, + "minecraft:purple_banner": { + "protocol_id": 493 + }, + "minecraft:purple_bed": { + "protocol_id": 104 + }, + "minecraft:purple_candle": { + "protocol_id": 852 + }, + "minecraft:purple_candle_cake": { + "protocol_id": 869 + }, + "minecraft:purple_carpet": { + "protocol_id": 468 + }, + "minecraft:purple_concrete": { + "protocol_id": 629 + }, + "minecraft:purple_concrete_powder": { + "protocol_id": 645 + }, + "minecraft:purple_glazed_terracotta": { + "protocol_id": 613 + }, + "minecraft:purple_shulker_box": { + "protocol_id": 597 + }, + "minecraft:purple_stained_glass": { + "protocol_id": 264 + }, + "minecraft:purple_stained_glass_pane": { + "protocol_id": 432 + }, + "minecraft:purple_terracotta": { + "protocol_id": 416 + }, + "minecraft:purple_wall_banner": { + "protocol_id": 509 + }, + "minecraft:purple_wool": { + "protocol_id": 131 + }, + "minecraft:purpur_block": { + "protocol_id": 570 + }, + "minecraft:purpur_pillar": { + "protocol_id": 571 + }, + "minecraft:purpur_slab": { + "protocol_id": 541 + }, + "minecraft:purpur_stairs": { + "protocol_id": 572 + }, + "minecraft:quartz_block": { + "protocol_id": 400 + }, + "minecraft:quartz_bricks": { + "protocol_id": 840 + }, + "minecraft:quartz_pillar": { + "protocol_id": 402 + }, + "minecraft:quartz_slab": { + "protocol_id": 538 + }, + "minecraft:quartz_stairs": { + "protocol_id": 403 + }, + "minecraft:rail": { + "protocol_id": 186 + }, + "minecraft:raw_copper_block": { + "protocol_id": 963 + }, + "minecraft:raw_gold_block": { + "protocol_id": 964 + }, + "minecraft:raw_iron_block": { + "protocol_id": 962 + }, + "minecraft:red_banner": { + "protocol_id": 497 + }, + "minecraft:red_bed": { + "protocol_id": 108 + }, + "minecraft:red_candle": { + "protocol_id": 856 + }, + "minecraft:red_candle_cake": { + "protocol_id": 873 + }, + "minecraft:red_carpet": { + "protocol_id": 472 + }, + "minecraft:red_concrete": { + "protocol_id": 633 + }, + "minecraft:red_concrete_powder": { + "protocol_id": 649 + }, + "minecraft:red_glazed_terracotta": { + "protocol_id": 617 + }, + "minecraft:red_mushroom": { + "protocol_id": 152 + }, + "minecraft:red_mushroom_block": { + "protocol_id": 291 + }, + "minecraft:red_nether_brick_slab": { + "protocol_id": 728 + }, + "minecraft:red_nether_brick_stairs": { + "protocol_id": 715 + }, + "minecraft:red_nether_brick_wall": { + "protocol_id": 740 + }, + "minecraft:red_nether_bricks": { + "protocol_id": 582 + }, + "minecraft:red_sand": { + "protocol_id": 33 + }, + "minecraft:red_sandstone": { + "protocol_id": 515 + }, + "minecraft:red_sandstone_slab": { + "protocol_id": 539 + }, + "minecraft:red_sandstone_stairs": { + "protocol_id": 518 + }, + "minecraft:red_sandstone_wall": { + "protocol_id": 733 + }, + "minecraft:red_shulker_box": { + "protocol_id": 601 + }, + "minecraft:red_stained_glass": { + "protocol_id": 268 + }, + "minecraft:red_stained_glass_pane": { + "protocol_id": 436 + }, + "minecraft:red_terracotta": { + "protocol_id": 420 + }, + "minecraft:red_tulip": { + "protocol_id": 143 + }, + "minecraft:red_wall_banner": { + "protocol_id": 513 + }, + "minecraft:red_wool": { + "protocol_id": 135 + }, + "minecraft:redstone_block": { + "protocol_id": 397 + }, + "minecraft:redstone_lamp": { + "protocol_id": 323 + }, + "minecraft:redstone_ore": { + "protocol_id": 227 + }, + "minecraft:redstone_torch": { + "protocol_id": 229 + }, + "minecraft:redstone_wall_torch": { + "protocol_id": 230 + }, + "minecraft:redstone_wire": { + "protocol_id": 168 + }, + "minecraft:reinforced_deepslate": { + "protocol_id": 971 + }, + "minecraft:repeater": { + "protocol_id": 253 + }, + "minecraft:repeating_command_block": { + "protocol_id": 577 + }, + "minecraft:respawn_anchor": { + "protocol_id": 815 + }, + "minecraft:rooted_dirt": { + "protocol_id": 938 + }, + "minecraft:rose_bush": { + "protocol_id": 479 + }, + "minecraft:sand": { + "protocol_id": 32 + }, + "minecraft:sandstone": { + "protocol_id": 90 + }, + "minecraft:sandstone_slab": { + "protocol_id": 530 + }, + "minecraft:sandstone_stairs": { + "protocol_id": 325 + }, + "minecraft:sandstone_wall": { + "protocol_id": 741 + }, + "minecraft:scaffolding": { + "protocol_id": 744 + }, + "minecraft:sculk": { + "protocol_id": 886 + }, + "minecraft:sculk_catalyst": { + "protocol_id": 888 + }, + "minecraft:sculk_sensor": { + "protocol_id": 885 + }, + "minecraft:sculk_shrieker": { + "protocol_id": 889 + }, + "minecraft:sculk_vein": { + "protocol_id": 887 + }, + "minecraft:sea_lantern": { + "protocol_id": 456 + }, + "minecraft:sea_pickle": { + "protocol_id": 695 + }, + "minecraft:seagrass": { + "protocol_id": 117 + }, + "minecraft:shroomlight": { + "protocol_id": 776 + }, + "minecraft:shulker_box": { + "protocol_id": 586 + }, + "minecraft:skeleton_skull": { + "protocol_id": 375 + }, + "minecraft:skeleton_wall_skull": { + "protocol_id": 376 + }, + "minecraft:slime_block": { + "protocol_id": 443 + }, + "minecraft:small_amethyst_bud": { + "protocol_id": 880 + }, + "minecraft:small_dripleaf": { + "protocol_id": 936 + }, + "minecraft:smithing_table": { + "protocol_id": 753 + }, + "minecraft:smoker": { + "protocol_id": 747 + }, + "minecraft:smooth_basalt": { + "protocol_id": 961 + }, + "minecraft:smooth_quartz": { + "protocol_id": 544 + }, + "minecraft:smooth_quartz_slab": { + "protocol_id": 725 + }, + "minecraft:smooth_quartz_stairs": { + "protocol_id": 712 + }, + "minecraft:smooth_red_sandstone": { + "protocol_id": 545 + }, + "minecraft:smooth_red_sandstone_slab": { + "protocol_id": 719 + }, + "minecraft:smooth_red_sandstone_stairs": { + "protocol_id": 705 + }, + "minecraft:smooth_sandstone": { + "protocol_id": 543 + }, + "minecraft:smooth_sandstone_slab": { + "protocol_id": 724 + }, + "minecraft:smooth_sandstone_stairs": { + "protocol_id": 711 + }, + "minecraft:smooth_stone": { + "protocol_id": 542 + }, + "minecraft:smooth_stone_slab": { + "protocol_id": 529 + }, + "minecraft:snow": { + "protocol_id": 232 + }, + "minecraft:snow_block": { + "protocol_id": 234 + }, + "minecraft:soul_campfire": { + "protocol_id": 759 + }, + "minecraft:soul_fire": { + "protocol_id": 164 + }, + "minecraft:soul_lantern": { + "protocol_id": 757 + }, "minecraft:soul_sand": { - "protocol_id": 214 + "protocol_id": 242 }, "minecraft:soul_soil": { - "protocol_id": 215 + "protocol_id": 243 }, "minecraft:soul_torch": { - "protocol_id": 218 + "protocol_id": 246 }, "minecraft:soul_wall_torch": { - "protocol_id": 219 + "protocol_id": 247 }, "minecraft:spawner": { - "protocol_id": 160 + "protocol_id": 165 }, "minecraft:sponge": { - "protocol_id": 79 + "protocol_id": 83 }, "minecraft:spore_blossom": { - "protocol_id": 890 + "protocol_id": 929 }, "minecraft:spruce_button": { - "protocol_id": 339 + "protocol_id": 368 }, "minecraft:spruce_door": { - "protocol_id": 522 + "protocol_id": 560 }, "minecraft:spruce_fence": { - "protocol_id": 516 + "protocol_id": 553 }, "minecraft:spruce_fence_gate": { - "protocol_id": 510 + "protocol_id": 546 + }, + "minecraft:spruce_hanging_sign": { + "protocol_id": 197 }, "minecraft:spruce_leaves": { - "protocol_id": 71 + "protocol_id": 75 }, "minecraft:spruce_log": { - "protocol_id": 41 + "protocol_id": 43 }, "minecraft:spruce_planks": { "protocol_id": 14 }, "minecraft:spruce_pressure_plate": { - "protocol_id": 193 + "protocol_id": 220 }, "minecraft:spruce_sapling": { - "protocol_id": 21 + "protocol_id": 23 }, "minecraft:spruce_sign": { - "protocol_id": 172 + "protocol_id": 177 }, "minecraft:spruce_slab": { - "protocol_id": 486 + "protocol_id": 520 }, "minecraft:spruce_stairs": { - "protocol_id": 303 + "protocol_id": 332 }, "minecraft:spruce_trapdoor": { - "protocol_id": 243 + "protocol_id": 271 + }, + "minecraft:spruce_wall_hanging_sign": { + "protocol_id": 207 }, "minecraft:spruce_wall_sign": { - "protocol_id": 183 + "protocol_id": 189 }, "minecraft:spruce_wood": { - "protocol_id": 57 + "protocol_id": 61 }, "minecraft:sticky_piston": { - "protocol_id": 108 + "protocol_id": 112 }, "minecraft:stone": { "protocol_id": 1 }, "minecraft:stone_brick_slab": { - "protocol_id": 499 + "protocol_id": 535 }, "minecraft:stone_brick_stairs": { - "protocol_id": 276 + "protocol_id": 305 }, "minecraft:stone_brick_wall": { - "protocol_id": 697 + "protocol_id": 736 }, "minecraft:stone_bricks": { - "protocol_id": 249 + "protocol_id": 278 }, "minecraft:stone_button": { - "protocol_id": 203 + "protocol_id": 231 }, "minecraft:stone_pressure_plate": { - "protocol_id": 190 + "protocol_id": 217 }, "minecraft:stone_slab": { - "protocol_id": 492 + "protocol_id": 528 }, "minecraft:stone_stairs": { - "protocol_id": 671 + "protocol_id": 710 }, "minecraft:stonecutter": { - "protocol_id": 715 - }, - "minecraft:stripped_acacia_log": { - "protocol_id": 52 - }, - "minecraft:stripped_acacia_wood": { - "protocol_id": 67 - }, - "minecraft:stripped_birch_log": { - "protocol_id": 50 - }, - "minecraft:stripped_birch_wood": { - "protocol_id": 65 - }, - "minecraft:stripped_crimson_hyphae": { - "protocol_id": 734 - }, - "minecraft:stripped_crimson_stem": { - "protocol_id": 732 - }, - "minecraft:stripped_dark_oak_log": { - "protocol_id": 53 - }, - "minecraft:stripped_dark_oak_wood": { - "protocol_id": 68 - }, - "minecraft:stripped_jungle_log": { - "protocol_id": 51 - }, - "minecraft:stripped_jungle_wood": { - "protocol_id": 66 - }, - "minecraft:stripped_mangrove_log": { - "protocol_id": 55 - }, - "minecraft:stripped_mangrove_wood": { - "protocol_id": 69 - }, - "minecraft:stripped_oak_log": { - "protocol_id": 54 - }, - "minecraft:stripped_oak_wood": { - "protocol_id": 63 - }, - "minecraft:stripped_spruce_log": { - "protocol_id": 49 - }, - "minecraft:stripped_spruce_wood": { - "protocol_id": 64 - }, - "minecraft:stripped_warped_hyphae": { - "protocol_id": 725 - }, - "minecraft:stripped_warped_stem": { - "protocol_id": 723 - }, - "minecraft:structure_block": { - "protocol_id": 765 - }, - "minecraft:structure_void": { - "protocol_id": 545 - }, - "minecraft:sugar_cane": { - "protocol_id": 209 - }, - "minecraft:sunflower": { - "protocol_id": 443 - }, - "minecraft:sweet_berry_bush": { - "protocol_id": 721 - }, - "minecraft:tall_grass": { - "protocol_id": 447 - }, - "minecraft:tall_seagrass": { - "protocol_id": 114 - }, - "minecraft:target": { - "protocol_id": 768 - }, - "minecraft:terracotta": { - "protocol_id": 440 - }, - "minecraft:tinted_glass": { - "protocol_id": 844 - }, - "minecraft:tnt": { - "protocol_id": 152 - }, - "minecraft:torch": { - "protocol_id": 156 - }, - "minecraft:trapped_chest": { - "protocol_id": 360 - }, - "minecraft:tripwire": { - "protocol_id": 301 - }, - "minecraft:tripwire_hook": { - "protocol_id": 300 - }, - "minecraft:tube_coral": { - "protocol_id": 631 - }, - "minecraft:tube_coral_block": { - "protocol_id": 621 - }, - "minecraft:tube_coral_fan": { - "protocol_id": 641 - }, - "minecraft:tube_coral_wall_fan": { - "protocol_id": 651 - }, - "minecraft:tuff": { - "protocol_id": 842 - }, - "minecraft:turtle_egg": { - "protocol_id": 615 - }, - "minecraft:twisting_vines": { - "protocol_id": 740 - }, - "minecraft:twisting_vines_plant": { - "protocol_id": 741 - }, - "minecraft:verdant_froglight": { - "protocol_id": 929 - }, - "minecraft:vine": { - "protocol_id": 272 - }, - "minecraft:void_air": { - "protocol_id": 662 - }, - "minecraft:wall_torch": { - "protocol_id": 157 - }, - "minecraft:warped_button": { - "protocol_id": 758 - }, - "minecraft:warped_door": { - "protocol_id": 760 - }, - "minecraft:warped_fence": { - "protocol_id": 750 - }, - "minecraft:warped_fence_gate": { "protocol_id": 754 }, - "minecraft:warped_fungus": { - "protocol_id": 727 + "minecraft:stripped_acacia_log": { + "protocol_id": 55 }, - "minecraft:warped_hyphae": { - "protocol_id": 724 + "minecraft:stripped_acacia_wood": { + "protocol_id": 71 }, - "minecraft:warped_nylium": { - "protocol_id": 726 + "minecraft:stripped_bamboo_block": { + "protocol_id": 59 }, - "minecraft:warped_planks": { - "protocol_id": 744 + "minecraft:stripped_birch_log": { + "protocol_id": 53 }, - "minecraft:warped_pressure_plate": { - "protocol_id": 748 + "minecraft:stripped_birch_wood": { + "protocol_id": 69 }, - "minecraft:warped_roots": { - "protocol_id": 729 + "minecraft:stripped_crimson_hyphae": { + "protocol_id": 773 }, - "minecraft:warped_sign": { - "protocol_id": 762 + "minecraft:stripped_crimson_stem": { + "protocol_id": 771 }, - "minecraft:warped_slab": { - "protocol_id": 746 + "minecraft:stripped_dark_oak_log": { + "protocol_id": 56 }, - "minecraft:warped_stairs": { - "protocol_id": 756 + "minecraft:stripped_dark_oak_wood": { + "protocol_id": 72 }, - "minecraft:warped_stem": { - "protocol_id": 722 + "minecraft:stripped_jungle_log": { + "protocol_id": 54 }, - "minecraft:warped_trapdoor": { - "protocol_id": 752 + "minecraft:stripped_jungle_wood": { + "protocol_id": 70 }, - "minecraft:warped_wall_sign": { + "minecraft:stripped_mangrove_log": { + "protocol_id": 58 + }, + "minecraft:stripped_mangrove_wood": { + "protocol_id": 73 + }, + "minecraft:stripped_oak_log": { + "protocol_id": 57 + }, + "minecraft:stripped_oak_wood": { + "protocol_id": 67 + }, + "minecraft:stripped_spruce_log": { + "protocol_id": 52 + }, + "minecraft:stripped_spruce_wood": { + "protocol_id": 68 + }, + "minecraft:stripped_warped_hyphae": { "protocol_id": 764 }, - "minecraft:warped_wart_block": { - "protocol_id": 728 + "minecraft:stripped_warped_stem": { + "protocol_id": 762 }, - "minecraft:water": { - "protocol_id": 28 + "minecraft:structure_block": { + "protocol_id": 804 }, - "minecraft:water_cauldron": { - "protocol_id": 287 - }, - "minecraft:waxed_copper_block": { - "protocol_id": 869 - }, - "minecraft:waxed_cut_copper": { - "protocol_id": 876 - }, - "minecraft:waxed_cut_copper_slab": { - "protocol_id": 884 - }, - "minecraft:waxed_cut_copper_stairs": { - "protocol_id": 880 - }, - "minecraft:waxed_exposed_copper": { - "protocol_id": 871 - }, - "minecraft:waxed_exposed_cut_copper": { - "protocol_id": 875 - }, - "minecraft:waxed_exposed_cut_copper_slab": { - "protocol_id": 883 - }, - "minecraft:waxed_exposed_cut_copper_stairs": { - "protocol_id": 879 - }, - "minecraft:waxed_oxidized_copper": { - "protocol_id": 872 - }, - "minecraft:waxed_oxidized_cut_copper": { - "protocol_id": 873 - }, - "minecraft:waxed_oxidized_cut_copper_slab": { - "protocol_id": 881 - }, - "minecraft:waxed_oxidized_cut_copper_stairs": { - "protocol_id": 877 - }, - "minecraft:waxed_weathered_copper": { - "protocol_id": 870 - }, - "minecraft:waxed_weathered_cut_copper": { - "protocol_id": 874 - }, - "minecraft:waxed_weathered_cut_copper_slab": { - "protocol_id": 882 - }, - "minecraft:waxed_weathered_cut_copper_stairs": { - "protocol_id": 878 - }, - "minecraft:weathered_copper": { - "protocol_id": 852 - }, - "minecraft:weathered_cut_copper": { - "protocol_id": 858 - }, - "minecraft:weathered_cut_copper_slab": { - "protocol_id": 866 - }, - "minecraft:weathered_cut_copper_stairs": { - "protocol_id": 862 - }, - "minecraft:weeping_vines": { - "protocol_id": 738 - }, - "minecraft:weeping_vines_plant": { - "protocol_id": 739 - }, - "minecraft:wet_sponge": { - "protocol_id": 80 - }, - "minecraft:wheat": { - "protocol_id": 168 - }, - "minecraft:white_banner": { - "protocol_id": 449 - }, - "minecraft:white_bed": { - "protocol_id": 90 - }, - "minecraft:white_candle": { - "protocol_id": 803 - }, - "minecraft:white_candle_cake": { - "protocol_id": 820 - }, - "minecraft:white_carpet": { - "protocol_id": 424 - }, - "minecraft:white_concrete": { - "protocol_id": 580 - }, - "minecraft:white_concrete_powder": { - "protocol_id": 596 - }, - "minecraft:white_glazed_terracotta": { - "protocol_id": 564 - }, - "minecraft:white_shulker_box": { - "protocol_id": 548 - }, - "minecraft:white_stained_glass": { - "protocol_id": 226 - }, - "minecraft:white_stained_glass_pane": { - "protocol_id": 390 - }, - "minecraft:white_terracotta": { - "protocol_id": 374 - }, - "minecraft:white_tulip": { - "protocol_id": 141 - }, - "minecraft:white_wall_banner": { - "protocol_id": 465 - }, - "minecraft:white_wool": { - "protocol_id": 117 - }, - "minecraft:wither_rose": { - "protocol_id": 145 - }, - "minecraft:wither_skeleton_skull": { - "protocol_id": 347 - }, - "minecraft:wither_skeleton_wall_skull": { - "protocol_id": 348 - }, - "minecraft:yellow_banner": { - "protocol_id": 453 - }, - "minecraft:yellow_bed": { - "protocol_id": 94 - }, - "minecraft:yellow_candle": { - "protocol_id": 807 - }, - "minecraft:yellow_candle_cake": { - "protocol_id": 824 - }, - "minecraft:yellow_carpet": { - "protocol_id": 428 - }, - "minecraft:yellow_concrete": { + "minecraft:structure_void": { "protocol_id": 584 }, - "minecraft:yellow_concrete_powder": { - "protocol_id": 600 + "minecraft:sugar_cane": { + "protocol_id": 237 }, - "minecraft:yellow_glazed_terracotta": { - "protocol_id": 568 + "minecraft:sunflower": { + "protocol_id": 477 }, - "minecraft:yellow_shulker_box": { - "protocol_id": 552 + "minecraft:sweet_berry_bush": { + "protocol_id": 760 }, - "minecraft:yellow_stained_glass": { - "protocol_id": 230 + "minecraft:tall_grass": { + "protocol_id": 481 }, - "minecraft:yellow_stained_glass_pane": { - "protocol_id": 394 + "minecraft:tall_seagrass": { + "protocol_id": 118 }, - "minecraft:yellow_terracotta": { - "protocol_id": 378 + "minecraft:target": { + "protocol_id": 807 }, - "minecraft:yellow_wall_banner": { - "protocol_id": 469 + "minecraft:terracotta": { + "protocol_id": 474 }, - "minecraft:yellow_wool": { + "minecraft:tinted_glass": { + "protocol_id": 883 + }, + "minecraft:tnt": { + "protocol_id": 156 + }, + "minecraft:torch": { + "protocol_id": 161 + }, + "minecraft:trapped_chest": { + "protocol_id": 392 + }, + "minecraft:tripwire": { + "protocol_id": 330 + }, + "minecraft:tripwire_hook": { + "protocol_id": 329 + }, + "minecraft:tube_coral": { + "protocol_id": 670 + }, + "minecraft:tube_coral_block": { + "protocol_id": 660 + }, + "minecraft:tube_coral_fan": { + "protocol_id": 680 + }, + "minecraft:tube_coral_wall_fan": { + "protocol_id": 690 + }, + "minecraft:tuff": { + "protocol_id": 881 + }, + "minecraft:turtle_egg": { + "protocol_id": 654 + }, + "minecraft:twisting_vines": { + "protocol_id": 779 + }, + "minecraft:twisting_vines_plant": { + "protocol_id": 780 + }, + "minecraft:verdant_froglight": { + "protocol_id": 968 + }, + "minecraft:vine": { + "protocol_id": 301 + }, + "minecraft:void_air": { + "protocol_id": 701 + }, + "minecraft:wall_torch": { + "protocol_id": 162 + }, + "minecraft:warped_button": { + "protocol_id": 797 + }, + "minecraft:warped_door": { + "protocol_id": 799 + }, + "minecraft:warped_fence": { + "protocol_id": 789 + }, + "minecraft:warped_fence_gate": { + "protocol_id": 793 + }, + "minecraft:warped_fungus": { + "protocol_id": 766 + }, + "minecraft:warped_hanging_sign": { + "protocol_id": 203 + }, + "minecraft:warped_hyphae": { + "protocol_id": 763 + }, + "minecraft:warped_nylium": { + "protocol_id": 765 + }, + "minecraft:warped_planks": { + "protocol_id": 783 + }, + "minecraft:warped_pressure_plate": { + "protocol_id": 787 + }, + "minecraft:warped_roots": { + "protocol_id": 768 + }, + "minecraft:warped_sign": { + "protocol_id": 801 + }, + "minecraft:warped_slab": { + "protocol_id": 785 + }, + "minecraft:warped_stairs": { + "protocol_id": 795 + }, + "minecraft:warped_stem": { + "protocol_id": 761 + }, + "minecraft:warped_trapdoor": { + "protocol_id": 791 + }, + "minecraft:warped_wall_hanging_sign": { + "protocol_id": 214 + }, + "minecraft:warped_wall_sign": { + "protocol_id": 803 + }, + "minecraft:warped_wart_block": { + "protocol_id": 767 + }, + "minecraft:water": { + "protocol_id": 30 + }, + "minecraft:water_cauldron": { + "protocol_id": 316 + }, + "minecraft:waxed_copper_block": { + "protocol_id": 908 + }, + "minecraft:waxed_cut_copper": { + "protocol_id": 915 + }, + "minecraft:waxed_cut_copper_slab": { + "protocol_id": 923 + }, + "minecraft:waxed_cut_copper_stairs": { + "protocol_id": 919 + }, + "minecraft:waxed_exposed_copper": { + "protocol_id": 910 + }, + "minecraft:waxed_exposed_cut_copper": { + "protocol_id": 914 + }, + "minecraft:waxed_exposed_cut_copper_slab": { + "protocol_id": 922 + }, + "minecraft:waxed_exposed_cut_copper_stairs": { + "protocol_id": 918 + }, + "minecraft:waxed_oxidized_copper": { + "protocol_id": 911 + }, + "minecraft:waxed_oxidized_cut_copper": { + "protocol_id": 912 + }, + "minecraft:waxed_oxidized_cut_copper_slab": { + "protocol_id": 920 + }, + "minecraft:waxed_oxidized_cut_copper_stairs": { + "protocol_id": 916 + }, + "minecraft:waxed_weathered_copper": { + "protocol_id": 909 + }, + "minecraft:waxed_weathered_cut_copper": { + "protocol_id": 913 + }, + "minecraft:waxed_weathered_cut_copper_slab": { + "protocol_id": 921 + }, + "minecraft:waxed_weathered_cut_copper_stairs": { + "protocol_id": 917 + }, + "minecraft:weathered_copper": { + "protocol_id": 891 + }, + "minecraft:weathered_cut_copper": { + "protocol_id": 897 + }, + "minecraft:weathered_cut_copper_slab": { + "protocol_id": 905 + }, + "minecraft:weathered_cut_copper_stairs": { + "protocol_id": 901 + }, + "minecraft:weeping_vines": { + "protocol_id": 777 + }, + "minecraft:weeping_vines_plant": { + "protocol_id": 778 + }, + "minecraft:wet_sponge": { + "protocol_id": 84 + }, + "minecraft:wheat": { + "protocol_id": 173 + }, + "minecraft:white_banner": { + "protocol_id": 483 + }, + "minecraft:white_bed": { + "protocol_id": 94 + }, + "minecraft:white_candle": { + "protocol_id": 842 + }, + "minecraft:white_candle_cake": { + "protocol_id": 859 + }, + "minecraft:white_carpet": { + "protocol_id": 458 + }, + "minecraft:white_concrete": { + "protocol_id": 619 + }, + "minecraft:white_concrete_powder": { + "protocol_id": 635 + }, + "minecraft:white_glazed_terracotta": { + "protocol_id": 603 + }, + "minecraft:white_shulker_box": { + "protocol_id": 587 + }, + "minecraft:white_stained_glass": { + "protocol_id": 254 + }, + "minecraft:white_stained_glass_pane": { + "protocol_id": 422 + }, + "minecraft:white_terracotta": { + "protocol_id": 406 + }, + "minecraft:white_tulip": { + "protocol_id": 145 + }, + "minecraft:white_wall_banner": { + "protocol_id": 499 + }, + "minecraft:white_wool": { "protocol_id": 121 }, + "minecraft:wither_rose": { + "protocol_id": 149 + }, + "minecraft:wither_skeleton_skull": { + "protocol_id": 377 + }, + "minecraft:wither_skeleton_wall_skull": { + "protocol_id": 378 + }, + "minecraft:yellow_banner": { + "protocol_id": 487 + }, + "minecraft:yellow_bed": { + "protocol_id": 98 + }, + "minecraft:yellow_candle": { + "protocol_id": 846 + }, + "minecraft:yellow_candle_cake": { + "protocol_id": 863 + }, + "minecraft:yellow_carpet": { + "protocol_id": 462 + }, + "minecraft:yellow_concrete": { + "protocol_id": 623 + }, + "minecraft:yellow_concrete_powder": { + "protocol_id": 639 + }, + "minecraft:yellow_glazed_terracotta": { + "protocol_id": 607 + }, + "minecraft:yellow_shulker_box": { + "protocol_id": 591 + }, + "minecraft:yellow_stained_glass": { + "protocol_id": 258 + }, + "minecraft:yellow_stained_glass_pane": { + "protocol_id": 426 + }, + "minecraft:yellow_terracotta": { + "protocol_id": 410 + }, + "minecraft:yellow_wall_banner": { + "protocol_id": 503 + }, + "minecraft:yellow_wool": { + "protocol_id": 125 + }, "minecraft:zombie_head": { - "protocol_id": 349 + "protocol_id": 379 }, "minecraft:zombie_wall_head": { - "protocol_id": 350 + "protocol_id": 380 } }, "protocol_id": 4 @@ -3062,46 +3179,49 @@ "minecraft:block_entity_type": { "entries": { "minecraft:banner": { - "protocol_id": 18 + "protocol_id": 19 }, "minecraft:barrel": { - "protocol_id": 25 + "protocol_id": 26 }, "minecraft:beacon": { - "protocol_id": 13 + "protocol_id": 14 }, "minecraft:bed": { - "protocol_id": 23 + "protocol_id": 24 }, "minecraft:beehive": { - "protocol_id": 32 + "protocol_id": 33 }, "minecraft:bell": { - "protocol_id": 29 + "protocol_id": 30 }, "minecraft:blast_furnace": { - "protocol_id": 27 + "protocol_id": 28 }, "minecraft:brewing_stand": { - "protocol_id": 10 + "protocol_id": 11 }, "minecraft:campfire": { - "protocol_id": 31 + "protocol_id": 32 }, "minecraft:chest": { "protocol_id": 1 }, + "minecraft:chiseled_bookshelf": { + "protocol_id": 37 + }, "minecraft:command_block": { - "protocol_id": 21 + "protocol_id": 22 }, "minecraft:comparator": { - "protocol_id": 17 + "protocol_id": 18 }, "minecraft:conduit": { - "protocol_id": 24 + "protocol_id": 25 }, "minecraft:daylight_detector": { - "protocol_id": 15 + "protocol_id": 16 }, "minecraft:dispenser": { "protocol_id": 5 @@ -3110,13 +3230,13 @@ "protocol_id": 6 }, "minecraft:enchanting_table": { - "protocol_id": 11 + "protocol_id": 12 }, "minecraft:end_gateway": { - "protocol_id": 20 + "protocol_id": 21 }, "minecraft:end_portal": { - "protocol_id": 12 + "protocol_id": 13 }, "minecraft:ender_chest": { "protocol_id": 3 @@ -3124,47 +3244,50 @@ "minecraft:furnace": { "protocol_id": 0 }, + "minecraft:hanging_sign": { + "protocol_id": 8 + }, "minecraft:hopper": { - "protocol_id": 16 + "protocol_id": 17 }, "minecraft:jigsaw": { - "protocol_id": 30 + "protocol_id": 31 }, "minecraft:jukebox": { "protocol_id": 4 }, "minecraft:lectern": { - "protocol_id": 28 + "protocol_id": 29 }, "minecraft:mob_spawner": { - "protocol_id": 8 - }, - "minecraft:piston": { "protocol_id": 9 }, + "minecraft:piston": { + "protocol_id": 10 + }, "minecraft:sculk_catalyst": { - "protocol_id": 34 - }, - "minecraft:sculk_sensor": { - "protocol_id": 33 - }, - "minecraft:sculk_shrieker": { "protocol_id": 35 }, + "minecraft:sculk_sensor": { + "protocol_id": 34 + }, + "minecraft:sculk_shrieker": { + "protocol_id": 36 + }, "minecraft:shulker_box": { - "protocol_id": 22 + "protocol_id": 23 }, "minecraft:sign": { "protocol_id": 7 }, "minecraft:skull": { - "protocol_id": 14 + "protocol_id": 15 }, "minecraft:smoker": { - "protocol_id": 26 + "protocol_id": 27 }, "minecraft:structure_block": { - "protocol_id": 19 + "protocol_id": 20 }, "minecraft:trapped_chest": { "protocol_id": 2 @@ -3338,32 +3461,29 @@ "protocol_id": 17 }, "minecraft:dimension": { - "protocol_id": 41 + "protocol_id": 38 }, "minecraft:entity": { "protocol_id": 6 }, "minecraft:entity_anchor": { - "protocol_id": 36 - }, - "minecraft:entity_summon": { - "protocol_id": 40 + "protocol_id": 35 }, "minecraft:float_range": { - "protocol_id": 38 + "protocol_id": 37 }, "minecraft:function": { - "protocol_id": 35 + "protocol_id": 34 }, "minecraft:game_profile": { "protocol_id": 7 }, - "minecraft:int_range": { - "protocol_id": 37 - }, - "minecraft:item_enchantment": { + "minecraft:gamemode": { "protocol_id": 39 }, + "minecraft:int_range": { + "protocol_id": 36 + }, "minecraft:item_predicate": { "protocol_id": 15 }, @@ -3376,9 +3496,6 @@ "minecraft:message": { "protocol_id": 18 }, - "minecraft:mob_effect": { - "protocol_id": 34 - }, "minecraft:nbt_compound_tag": { "protocol_id": 19 }, @@ -3401,13 +3518,19 @@ "protocol_id": 25 }, "minecraft:resource": { + "protocol_id": 43 + }, + "minecraft:resource_key": { "protocol_id": 44 }, "minecraft:resource_location": { "protocol_id": 33 }, "minecraft:resource_or_tag": { - "protocol_id": 43 + "protocol_id": 41 + }, + "minecraft:resource_or_tag_key": { + "protocol_id": 42 }, "minecraft:rotation": { "protocol_id": 27 @@ -3431,7 +3554,7 @@ "protocol_id": 46 }, "minecraft:time": { - "protocol_id": 42 + "protocol_id": 40 }, "minecraft:uuid": { "protocol_id": 47 @@ -3827,332 +3950,335 @@ "minecraft:boat": { "protocol_id": 8 }, + "minecraft:camel": { + "protocol_id": 11 + }, "minecraft:cat": { "protocol_id": 10 }, "minecraft:cave_spider": { - "protocol_id": 11 + "protocol_id": 12 }, "minecraft:chest_boat": { "protocol_id": 9 }, "minecraft:chest_minecart": { - "protocol_id": 54 - }, - "minecraft:chicken": { - "protocol_id": 12 - }, - "minecraft:cod": { - "protocol_id": 13 - }, - "minecraft:command_block_minecart": { "protocol_id": 55 }, - "minecraft:cow": { + "minecraft:chicken": { + "protocol_id": 13 + }, + "minecraft:cod": { "protocol_id": 14 }, - "minecraft:creeper": { - "protocol_id": 15 - }, - "minecraft:dolphin": { - "protocol_id": 16 - }, - "minecraft:donkey": { - "protocol_id": 17 - }, - "minecraft:dragon_fireball": { - "protocol_id": 18 - }, - "minecraft:drowned": { - "protocol_id": 19 - }, - "minecraft:egg": { - "protocol_id": 93 - }, - "minecraft:elder_guardian": { - "protocol_id": 20 - }, - "minecraft:end_crystal": { - "protocol_id": 21 - }, - "minecraft:ender_dragon": { - "protocol_id": 22 - }, - "minecraft:ender_pearl": { - "protocol_id": 94 - }, - "minecraft:enderman": { - "protocol_id": 23 - }, - "minecraft:endermite": { - "protocol_id": 24 - }, - "minecraft:evoker": { - "protocol_id": 25 - }, - "minecraft:evoker_fangs": { - "protocol_id": 26 - }, - "minecraft:experience_bottle": { - "protocol_id": 95 - }, - "minecraft:experience_orb": { - "protocol_id": 27 - }, - "minecraft:eye_of_ender": { - "protocol_id": 28 - }, - "minecraft:falling_block": { - "protocol_id": 29 - }, - "minecraft:fireball": { - "protocol_id": 46 - }, - "minecraft:firework_rocket": { - "protocol_id": 30 - }, - "minecraft:fishing_bobber": { - "protocol_id": 117 - }, - "minecraft:fox": { - "protocol_id": 31 - }, - "minecraft:frog": { - "protocol_id": 32 - }, - "minecraft:furnace_minecart": { + "minecraft:command_block_minecart": { "protocol_id": 56 }, - "minecraft:ghast": { - "protocol_id": 33 + "minecraft:cow": { + "protocol_id": 15 }, - "minecraft:giant": { - "protocol_id": 34 + "minecraft:creeper": { + "protocol_id": 16 }, - "minecraft:glow_item_frame": { - "protocol_id": 35 + "minecraft:dolphin": { + "protocol_id": 17 }, - "minecraft:glow_squid": { - "protocol_id": 36 + "minecraft:donkey": { + "protocol_id": 18 }, - "minecraft:goat": { - "protocol_id": 37 + "minecraft:dragon_fireball": { + "protocol_id": 19 }, - "minecraft:guardian": { - "protocol_id": 38 + "minecraft:drowned": { + "protocol_id": 20 }, - "minecraft:hoglin": { - "protocol_id": 39 + "minecraft:egg": { + "protocol_id": 94 }, - "minecraft:hopper_minecart": { - "protocol_id": 57 + "minecraft:elder_guardian": { + "protocol_id": 21 }, - "minecraft:horse": { - "protocol_id": 40 + "minecraft:end_crystal": { + "protocol_id": 22 }, - "minecraft:husk": { - "protocol_id": 41 + "minecraft:ender_dragon": { + "protocol_id": 23 }, - "minecraft:illusioner": { - "protocol_id": 42 + "minecraft:ender_pearl": { + "protocol_id": 95 }, - "minecraft:iron_golem": { - "protocol_id": 43 + "minecraft:enderman": { + "protocol_id": 24 }, - "minecraft:item": { - "protocol_id": 44 + "minecraft:endermite": { + "protocol_id": 25 }, - "minecraft:item_frame": { - "protocol_id": 45 + "minecraft:evoker": { + "protocol_id": 26 }, - "minecraft:leash_knot": { - "protocol_id": 47 + "minecraft:evoker_fangs": { + "protocol_id": 27 }, - "minecraft:lightning_bolt": { - "protocol_id": 48 - }, - "minecraft:llama": { - "protocol_id": 49 - }, - "minecraft:llama_spit": { - "protocol_id": 50 - }, - "minecraft:magma_cube": { - "protocol_id": 51 - }, - "minecraft:marker": { - "protocol_id": 52 - }, - "minecraft:minecart": { - "protocol_id": 53 - }, - "minecraft:mooshroom": { - "protocol_id": 61 - }, - "minecraft:mule": { - "protocol_id": 60 - }, - "minecraft:ocelot": { - "protocol_id": 62 - }, - "minecraft:painting": { - "protocol_id": 63 - }, - "minecraft:panda": { - "protocol_id": 64 - }, - "minecraft:parrot": { - "protocol_id": 65 - }, - "minecraft:phantom": { - "protocol_id": 66 - }, - "minecraft:pig": { - "protocol_id": 67 - }, - "minecraft:piglin": { - "protocol_id": 68 - }, - "minecraft:piglin_brute": { - "protocol_id": 69 - }, - "minecraft:pillager": { - "protocol_id": 70 - }, - "minecraft:player": { - "protocol_id": 116 - }, - "minecraft:polar_bear": { - "protocol_id": 71 - }, - "minecraft:potion": { + "minecraft:experience_bottle": { "protocol_id": 96 }, - "minecraft:pufferfish": { - "protocol_id": 73 + "minecraft:experience_orb": { + "protocol_id": 28 }, - "minecraft:rabbit": { - "protocol_id": 74 + "minecraft:eye_of_ender": { + "protocol_id": 29 }, - "minecraft:ravager": { - "protocol_id": 75 + "minecraft:falling_block": { + "protocol_id": 30 }, - "minecraft:salmon": { - "protocol_id": 76 + "minecraft:fireball": { + "protocol_id": 47 }, - "minecraft:sheep": { - "protocol_id": 77 + "minecraft:firework_rocket": { + "protocol_id": 31 }, - "minecraft:shulker": { - "protocol_id": 78 + "minecraft:fishing_bobber": { + "protocol_id": 118 }, - "minecraft:shulker_bullet": { - "protocol_id": 79 + "minecraft:fox": { + "protocol_id": 32 }, - "minecraft:silverfish": { - "protocol_id": 80 + "minecraft:frog": { + "protocol_id": 33 }, - "minecraft:skeleton": { - "protocol_id": 81 + "minecraft:furnace_minecart": { + "protocol_id": 57 }, - "minecraft:skeleton_horse": { - "protocol_id": 82 + "minecraft:ghast": { + "protocol_id": 34 }, - "minecraft:slime": { - "protocol_id": 83 + "minecraft:giant": { + "protocol_id": 35 }, - "minecraft:small_fireball": { - "protocol_id": 84 + "minecraft:glow_item_frame": { + "protocol_id": 36 }, - "minecraft:snow_golem": { - "protocol_id": 85 + "minecraft:glow_squid": { + "protocol_id": 37 }, - "minecraft:snowball": { - "protocol_id": 86 + "minecraft:goat": { + "protocol_id": 38 }, - "minecraft:spawner_minecart": { + "minecraft:guardian": { + "protocol_id": 39 + }, + "minecraft:hoglin": { + "protocol_id": 40 + }, + "minecraft:hopper_minecart": { "protocol_id": 58 }, - "minecraft:spectral_arrow": { - "protocol_id": 87 + "minecraft:horse": { + "protocol_id": 41 }, - "minecraft:spider": { - "protocol_id": 88 + "minecraft:husk": { + "protocol_id": 42 }, - "minecraft:squid": { - "protocol_id": 89 + "minecraft:illusioner": { + "protocol_id": 43 }, - "minecraft:stray": { - "protocol_id": 90 + "minecraft:iron_golem": { + "protocol_id": 44 }, - "minecraft:strider": { - "protocol_id": 91 + "minecraft:item": { + "protocol_id": 45 }, - "minecraft:tadpole": { - "protocol_id": 92 + "minecraft:item_frame": { + "protocol_id": 46 }, - "minecraft:tnt": { + "minecraft:leash_knot": { + "protocol_id": 48 + }, + "minecraft:lightning_bolt": { + "protocol_id": 49 + }, + "minecraft:llama": { + "protocol_id": 50 + }, + "minecraft:llama_spit": { + "protocol_id": 51 + }, + "minecraft:magma_cube": { + "protocol_id": 52 + }, + "minecraft:marker": { + "protocol_id": 53 + }, + "minecraft:minecart": { + "protocol_id": 54 + }, + "minecraft:mooshroom": { + "protocol_id": 62 + }, + "minecraft:mule": { + "protocol_id": 61 + }, + "minecraft:ocelot": { + "protocol_id": 63 + }, + "minecraft:painting": { + "protocol_id": 64 + }, + "minecraft:panda": { + "protocol_id": 65 + }, + "minecraft:parrot": { + "protocol_id": 66 + }, + "minecraft:phantom": { + "protocol_id": 67 + }, + "minecraft:pig": { + "protocol_id": 68 + }, + "minecraft:piglin": { + "protocol_id": 69 + }, + "minecraft:piglin_brute": { + "protocol_id": 70 + }, + "minecraft:pillager": { + "protocol_id": 71 + }, + "minecraft:player": { + "protocol_id": 117 + }, + "minecraft:polar_bear": { "protocol_id": 72 }, - "minecraft:tnt_minecart": { - "protocol_id": 59 - }, - "minecraft:trader_llama": { - "protocol_id": 98 - }, - "minecraft:trident": { + "minecraft:potion": { "protocol_id": 97 }, - "minecraft:tropical_fish": { + "minecraft:pufferfish": { + "protocol_id": 74 + }, + "minecraft:rabbit": { + "protocol_id": 75 + }, + "minecraft:ravager": { + "protocol_id": 76 + }, + "minecraft:salmon": { + "protocol_id": 77 + }, + "minecraft:sheep": { + "protocol_id": 78 + }, + "minecraft:shulker": { + "protocol_id": 79 + }, + "minecraft:shulker_bullet": { + "protocol_id": 80 + }, + "minecraft:silverfish": { + "protocol_id": 81 + }, + "minecraft:skeleton": { + "protocol_id": 82 + }, + "minecraft:skeleton_horse": { + "protocol_id": 83 + }, + "minecraft:slime": { + "protocol_id": 84 + }, + "minecraft:small_fireball": { + "protocol_id": 85 + }, + "minecraft:snow_golem": { + "protocol_id": 86 + }, + "minecraft:snowball": { + "protocol_id": 87 + }, + "minecraft:spawner_minecart": { + "protocol_id": 59 + }, + "minecraft:spectral_arrow": { + "protocol_id": 88 + }, + "minecraft:spider": { + "protocol_id": 89 + }, + "minecraft:squid": { + "protocol_id": 90 + }, + "minecraft:stray": { + "protocol_id": 91 + }, + "minecraft:strider": { + "protocol_id": 92 + }, + "minecraft:tadpole": { + "protocol_id": 93 + }, + "minecraft:tnt": { + "protocol_id": 73 + }, + "minecraft:tnt_minecart": { + "protocol_id": 60 + }, + "minecraft:trader_llama": { "protocol_id": 99 }, - "minecraft:turtle": { + "minecraft:trident": { + "protocol_id": 98 + }, + "minecraft:tropical_fish": { "protocol_id": 100 }, - "minecraft:vex": { + "minecraft:turtle": { "protocol_id": 101 }, - "minecraft:villager": { + "minecraft:vex": { "protocol_id": 102 }, - "minecraft:vindicator": { + "minecraft:villager": { "protocol_id": 103 }, - "minecraft:wandering_trader": { + "minecraft:vindicator": { "protocol_id": 104 }, - "minecraft:warden": { + "minecraft:wandering_trader": { "protocol_id": 105 }, - "minecraft:witch": { + "minecraft:warden": { "protocol_id": 106 }, - "minecraft:wither": { + "minecraft:witch": { "protocol_id": 107 }, - "minecraft:wither_skeleton": { + "minecraft:wither": { "protocol_id": 108 }, - "minecraft:wither_skull": { + "minecraft:wither_skeleton": { "protocol_id": 109 }, - "minecraft:wolf": { + "minecraft:wither_skull": { "protocol_id": 110 }, - "minecraft:zoglin": { + "minecraft:wolf": { "protocol_id": 111 }, - "minecraft:zombie": { + "minecraft:zoglin": { "protocol_id": 112 }, - "minecraft:zombie_horse": { + "minecraft:zombie": { "protocol_id": 113 }, - "minecraft:zombie_villager": { + "minecraft:zombie_horse": { "protocol_id": 114 }, - "minecraft:zombified_piglin": { + "minecraft:zombie_villager": { "protocol_id": 115 + }, + "minecraft:zombified_piglin": { + "protocol_id": 116 } }, "protocol_id": 6 @@ -4432,556 +4558,619 @@ "default": "minecraft:air", "entries": { "minecraft:acacia_boat": { - "protocol_id": 706 + "protocol_id": 721 }, "minecraft:acacia_button": { - "protocol_id": 638 + "protocol_id": 648 }, "minecraft:acacia_chest_boat": { - "protocol_id": 707 + "protocol_id": 722 }, "minecraft:acacia_door": { - "protocol_id": 661 + "protocol_id": 673 }, "minecraft:acacia_fence": { - "protocol_id": 272 + "protocol_id": 279 }, "minecraft:acacia_fence_gate": { - "protocol_id": 680 + "protocol_id": 694 + }, + "minecraft:acacia_hanging_sign": { + "protocol_id": 835 }, "minecraft:acacia_leaves": { - "protocol_id": 146 + "protocol_id": 150 }, "minecraft:acacia_log": { - "protocol_id": 108 + "protocol_id": 110 }, "minecraft:acacia_planks": { "protocol_id": 27 }, "minecraft:acacia_pressure_plate": { - "protocol_id": 651 + "protocol_id": 662 }, "minecraft:acacia_sapling": { - "protocol_id": 36 + "protocol_id": 38 }, "minecraft:acacia_sign": { - "protocol_id": 808 + "protocol_id": 825 }, "minecraft:acacia_slab": { - "protocol_id": 218 + "protocol_id": 222 }, "minecraft:acacia_stairs": { - "protocol_id": 342 + "protocol_id": 350 }, "minecraft:acacia_trapdoor": { - "protocol_id": 671 + "protocol_id": 684 }, "minecraft:acacia_wood": { - "protocol_id": 137 + "protocol_id": 141 }, "minecraft:activator_rail": { - "protocol_id": 688 + "protocol_id": 703 }, "minecraft:air": { "protocol_id": 0 }, "minecraft:allay_spawn_egg": { - "protocol_id": 912 + "protocol_id": 940 }, "minecraft:allium": { - "protocol_id": 186 + "protocol_id": 190 }, "minecraft:amethyst_block": { - "protocol_id": 66 + "protocol_id": 68 }, "minecraft:amethyst_cluster": { - "protocol_id": 1145 + "protocol_id": 1179 }, "minecraft:amethyst_shard": { - "protocol_id": 726 + "protocol_id": 743 }, "minecraft:ancient_debris": { - "protocol_id": 61 + "protocol_id": 63 }, "minecraft:andesite": { "protocol_id": 6 }, "minecraft:andesite_slab": { - "protocol_id": 599 + "protocol_id": 609 }, "minecraft:andesite_stairs": { - "protocol_id": 582 + "protocol_id": 592 }, "minecraft:andesite_wall": { - "protocol_id": 359 + "protocol_id": 369 }, "minecraft:anvil": { - "protocol_id": 371 + "protocol_id": 381 }, "minecraft:apple": { - "protocol_id": 717 + "protocol_id": 734 }, "minecraft:armor_stand": { - "protocol_id": 1015 + "protocol_id": 1049 }, "minecraft:arrow": { - "protocol_id": 719 + "protocol_id": 736 }, "minecraft:axolotl_bucket": { - "protocol_id": 824 + "protocol_id": 852 }, "minecraft:axolotl_spawn_egg": { - "protocol_id": 913 + "protocol_id": 941 }, "minecraft:azalea": { - "protocol_id": 162 + "protocol_id": 166 }, "minecraft:azalea_leaves": { - "protocol_id": 149 + "protocol_id": 153 }, "minecraft:azure_bluet": { - "protocol_id": 187 + "protocol_id": 191 }, "minecraft:baked_potato": { - "protocol_id": 992 + "protocol_id": 1025 }, "minecraft:bamboo": { - "protocol_id": 213 + "protocol_id": 217 + }, + "minecraft:bamboo_block": { + "protocol_id": 117 + }, + "minecraft:bamboo_button": { + "protocol_id": 651 + }, + "minecraft:bamboo_chest_raft": { + "protocol_id": 728 + }, + "minecraft:bamboo_door": { + "protocol_id": 676 + }, + "minecraft:bamboo_fence": { + "protocol_id": 282 + }, + "minecraft:bamboo_fence_gate": { + "protocol_id": 697 + }, + "minecraft:bamboo_hanging_sign": { + "protocol_id": 838 + }, + "minecraft:bamboo_mosaic": { + "protocol_id": 33 + }, + "minecraft:bamboo_mosaic_slab": { + "protocol_id": 226 + }, + "minecraft:bamboo_mosaic_stairs": { + "protocol_id": 354 + }, + "minecraft:bamboo_planks": { + "protocol_id": 30 + }, + "minecraft:bamboo_pressure_plate": { + "protocol_id": 665 + }, + "minecraft:bamboo_raft": { + "protocol_id": 727 + }, + "minecraft:bamboo_sign": { + "protocol_id": 828 + }, + "minecraft:bamboo_slab": { + "protocol_id": 225 + }, + "minecraft:bamboo_stairs": { + "protocol_id": 353 + }, + "minecraft:bamboo_trapdoor": { + "protocol_id": 687 }, "minecraft:barrel": { - "protocol_id": 1089 + "protocol_id": 1123 }, "minecraft:barrier": { - "protocol_id": 395 + "protocol_id": 405 }, "minecraft:basalt": { - "protocol_id": 283 + "protocol_id": 291 }, "minecraft:bat_spawn_egg": { - "protocol_id": 914 + "protocol_id": 942 }, "minecraft:beacon": { - "protocol_id": 348 + "protocol_id": 358 }, "minecraft:bedrock": { - "protocol_id": 39 + "protocol_id": 41 }, "minecraft:bee_nest": { - "protocol_id": 1106 + "protocol_id": 1140 }, "minecraft:bee_spawn_egg": { - "protocol_id": 915 + "protocol_id": 943 }, "minecraft:beef": { - "protocol_id": 892 + "protocol_id": 920 }, "minecraft:beehive": { - "protocol_id": 1107 + "protocol_id": 1141 }, "minecraft:beetroot": { - "protocol_id": 1044 + "protocol_id": 1078 }, "minecraft:beetroot_seeds": { - "protocol_id": 1045 + "protocol_id": 1079 }, "minecraft:beetroot_soup": { - "protocol_id": 1046 + "protocol_id": 1080 }, "minecraft:bell": { - "protocol_id": 1097 + "protocol_id": 1131 }, "minecraft:big_dripleaf": { - "protocol_id": 211 + "protocol_id": 215 }, "minecraft:birch_boat": { - "protocol_id": 702 + "protocol_id": 717 }, "minecraft:birch_button": { - "protocol_id": 636 + "protocol_id": 646 }, "minecraft:birch_chest_boat": { - "protocol_id": 703 + "protocol_id": 718 }, "minecraft:birch_door": { - "protocol_id": 659 + "protocol_id": 671 }, "minecraft:birch_fence": { - "protocol_id": 270 + "protocol_id": 277 }, "minecraft:birch_fence_gate": { - "protocol_id": 678 + "protocol_id": 692 + }, + "minecraft:birch_hanging_sign": { + "protocol_id": 833 }, "minecraft:birch_leaves": { - "protocol_id": 144 + "protocol_id": 148 }, "minecraft:birch_log": { - "protocol_id": 106 + "protocol_id": 108 }, "minecraft:birch_planks": { "protocol_id": 25 }, "minecraft:birch_pressure_plate": { - "protocol_id": 649 + "protocol_id": 660 }, "minecraft:birch_sapling": { - "protocol_id": 34 + "protocol_id": 36 }, "minecraft:birch_sign": { - "protocol_id": 806 + "protocol_id": 823 }, "minecraft:birch_slab": { - "protocol_id": 216 + "protocol_id": 220 }, "minecraft:birch_stairs": { - "protocol_id": 340 + "protocol_id": 348 }, "minecraft:birch_trapdoor": { - "protocol_id": 669 + "protocol_id": 682 }, "minecraft:birch_wood": { - "protocol_id": 135 + "protocol_id": 139 }, "minecraft:black_banner": { - "protocol_id": 1040 + "protocol_id": 1074 }, "minecraft:black_bed": { - "protocol_id": 884 + "protocol_id": 912 }, "minecraft:black_candle": { - "protocol_id": 1141 + "protocol_id": 1175 }, "minecraft:black_carpet": { - "protocol_id": 413 + "protocol_id": 423 }, "minecraft:black_concrete": { - "protocol_id": 522 + "protocol_id": 532 }, "minecraft:black_concrete_powder": { - "protocol_id": 538 + "protocol_id": 548 }, "minecraft:black_dye": { - "protocol_id": 864 + "protocol_id": 892 }, "minecraft:black_glazed_terracotta": { - "protocol_id": 506 + "protocol_id": 516 }, "minecraft:black_shulker_box": { - "protocol_id": 490 + "protocol_id": 500 }, "minecraft:black_stained_glass": { - "protocol_id": 438 + "protocol_id": 448 }, "minecraft:black_stained_glass_pane": { - "protocol_id": 454 + "protocol_id": 464 }, "minecraft:black_terracotta": { - "protocol_id": 394 + "protocol_id": 404 }, "minecraft:black_wool": { - "protocol_id": 182 + "protocol_id": 186 }, "minecraft:blackstone": { - "protocol_id": 1112 + "protocol_id": 1146 }, "minecraft:blackstone_slab": { - "protocol_id": 1113 + "protocol_id": 1147 }, "minecraft:blackstone_stairs": { - "protocol_id": 1114 + "protocol_id": 1148 }, "minecraft:blackstone_wall": { - "protocol_id": 364 + "protocol_id": 374 }, "minecraft:blast_furnace": { - "protocol_id": 1091 + "protocol_id": 1125 }, "minecraft:blaze_powder": { - "protocol_id": 906 + "protocol_id": 934 }, "minecraft:blaze_rod": { - "protocol_id": 898 + "protocol_id": 926 }, "minecraft:blaze_spawn_egg": { - "protocol_id": 916 + "protocol_id": 944 }, "minecraft:blue_banner": { - "protocol_id": 1036 + "protocol_id": 1070 }, "minecraft:blue_bed": { - "protocol_id": 880 - }, - "minecraft:blue_candle": { - "protocol_id": 1137 - }, - "minecraft:blue_carpet": { - "protocol_id": 409 - }, - "minecraft:blue_concrete": { - "protocol_id": 518 - }, - "minecraft:blue_concrete_powder": { - "protocol_id": 534 - }, - "minecraft:blue_dye": { - "protocol_id": 860 - }, - "minecraft:blue_glazed_terracotta": { - "protocol_id": 502 - }, - "minecraft:blue_ice": { - "protocol_id": 570 - }, - "minecraft:blue_orchid": { - "protocol_id": 185 - }, - "minecraft:blue_shulker_box": { - "protocol_id": 486 - }, - "minecraft:blue_stained_glass": { - "protocol_id": 434 - }, - "minecraft:blue_stained_glass_pane": { - "protocol_id": 450 - }, - "minecraft:blue_terracotta": { - "protocol_id": 390 - }, - "minecraft:blue_wool": { - "protocol_id": 178 - }, - "minecraft:bone": { - "protocol_id": 866 - }, - "minecraft:bone_block": { - "protocol_id": 472 - }, - "minecraft:bone_meal": { - "protocol_id": 865 - }, - "minecraft:book": { - "protocol_id": 830 - }, - "minecraft:bookshelf": { - "protocol_id": 245 - }, - "minecraft:bow": { - "protocol_id": 718 - }, - "minecraft:bowl": { - "protocol_id": 766 - }, - "minecraft:brain_coral": { - "protocol_id": 551 - }, - "minecraft:brain_coral_block": { - "protocol_id": 546 - }, - "minecraft:brain_coral_fan": { - "protocol_id": 561 - }, - "minecraft:bread": { - "protocol_id": 773 - }, - "minecraft:brewing_stand": { "protocol_id": 908 }, + "minecraft:blue_candle": { + "protocol_id": 1171 + }, + "minecraft:blue_carpet": { + "protocol_id": 419 + }, + "minecraft:blue_concrete": { + "protocol_id": 528 + }, + "minecraft:blue_concrete_powder": { + "protocol_id": 544 + }, + "minecraft:blue_dye": { + "protocol_id": 888 + }, + "minecraft:blue_glazed_terracotta": { + "protocol_id": 512 + }, + "minecraft:blue_ice": { + "protocol_id": 580 + }, + "minecraft:blue_orchid": { + "protocol_id": 189 + }, + "minecraft:blue_shulker_box": { + "protocol_id": 496 + }, + "minecraft:blue_stained_glass": { + "protocol_id": 444 + }, + "minecraft:blue_stained_glass_pane": { + "protocol_id": 460 + }, + "minecraft:blue_terracotta": { + "protocol_id": 400 + }, + "minecraft:blue_wool": { + "protocol_id": 182 + }, + "minecraft:bone": { + "protocol_id": 894 + }, + "minecraft:bone_block": { + "protocol_id": 482 + }, + "minecraft:bone_meal": { + "protocol_id": 893 + }, + "minecraft:book": { + "protocol_id": 858 + }, + "minecraft:bookshelf": { + "protocol_id": 251 + }, + "minecraft:bow": { + "protocol_id": 735 + }, + "minecraft:bowl": { + "protocol_id": 783 + }, + "minecraft:brain_coral": { + "protocol_id": 561 + }, + "minecraft:brain_coral_block": { + "protocol_id": 556 + }, + "minecraft:brain_coral_fan": { + "protocol_id": 571 + }, + "minecraft:bread": { + "protocol_id": 790 + }, + "minecraft:brewing_stand": { + "protocol_id": 936 + }, "minecraft:brick": { - "protocol_id": 826 + "protocol_id": 854 }, "minecraft:brick_slab": { - "protocol_id": 229 + "protocol_id": 235 }, "minecraft:brick_stairs": { - "protocol_id": 316 + "protocol_id": 324 }, "minecraft:brick_wall": { - "protocol_id": 351 + "protocol_id": 361 }, "minecraft:bricks": { - "protocol_id": 244 + "protocol_id": 250 }, "minecraft:brown_banner": { - "protocol_id": 1037 + "protocol_id": 1071 }, "minecraft:brown_bed": { - "protocol_id": 881 + "protocol_id": 909 }, "minecraft:brown_candle": { - "protocol_id": 1138 + "protocol_id": 1172 }, "minecraft:brown_carpet": { - "protocol_id": 410 + "protocol_id": 420 }, "minecraft:brown_concrete": { - "protocol_id": 519 + "protocol_id": 529 }, "minecraft:brown_concrete_powder": { - "protocol_id": 535 + "protocol_id": 545 }, "minecraft:brown_dye": { - "protocol_id": 861 + "protocol_id": 889 }, "minecraft:brown_glazed_terracotta": { - "protocol_id": 503 + "protocol_id": 513 }, "minecraft:brown_mushroom": { - "protocol_id": 197 + "protocol_id": 201 }, "minecraft:brown_mushroom_block": { - "protocol_id": 307 + "protocol_id": 315 }, "minecraft:brown_shulker_box": { - "protocol_id": 487 + "protocol_id": 497 }, "minecraft:brown_stained_glass": { - "protocol_id": 435 + "protocol_id": 445 }, "minecraft:brown_stained_glass_pane": { - "protocol_id": 451 + "protocol_id": 461 }, "minecraft:brown_terracotta": { - "protocol_id": 391 + "protocol_id": 401 }, "minecraft:brown_wool": { - "protocol_id": 179 + "protocol_id": 183 }, "minecraft:bubble_coral": { - "protocol_id": 552 - }, - "minecraft:bubble_coral_block": { - "protocol_id": 547 - }, - "minecraft:bubble_coral_fan": { "protocol_id": 562 }, + "minecraft:bubble_coral_block": { + "protocol_id": 557 + }, + "minecraft:bubble_coral_fan": { + "protocol_id": 572 + }, "minecraft:bucket": { - "protocol_id": 813 + "protocol_id": 841 }, "minecraft:budding_amethyst": { - "protocol_id": 67 + "protocol_id": 69 }, "minecraft:bundle": { - "protocol_id": 835 + "protocol_id": 863 }, "minecraft:cactus": { - "protocol_id": 265 + "protocol_id": 272 }, "minecraft:cake": { - "protocol_id": 868 + "protocol_id": 896 }, "minecraft:calcite": { "protocol_id": 11 }, + "minecraft:camel_spawn_egg": { + "protocol_id": 946 + }, "minecraft:campfire": { - "protocol_id": 1102 + "protocol_id": 1136 }, "minecraft:candle": { - "protocol_id": 1125 + "protocol_id": 1159 }, "minecraft:carrot": { - "protocol_id": 990 + "protocol_id": 1023 }, "minecraft:carrot_on_a_stick": { - "protocol_id": 695 + "protocol_id": 710 }, "minecraft:cartography_table": { - "protocol_id": 1092 + "protocol_id": 1126 }, "minecraft:carved_pumpkin": { - "protocol_id": 278 + "protocol_id": 286 }, "minecraft:cat_spawn_egg": { - "protocol_id": 917 + "protocol_id": 945 }, "minecraft:cauldron": { - "protocol_id": 909 + "protocol_id": 937 }, "minecraft:cave_spider_spawn_egg": { - "protocol_id": 918 + "protocol_id": 947 }, "minecraft:chain": { - "protocol_id": 311 + "protocol_id": 319 }, "minecraft:chain_command_block": { - "protocol_id": 467 + "protocol_id": 477 }, "minecraft:chainmail_boots": { - "protocol_id": 781 + "protocol_id": 798 }, "minecraft:chainmail_chestplate": { - "protocol_id": 779 + "protocol_id": 796 }, "minecraft:chainmail_helmet": { - "protocol_id": 778 + "protocol_id": 795 }, "minecraft:chainmail_leggings": { - "protocol_id": 780 + "protocol_id": 797 }, "minecraft:charcoal": { - "protocol_id": 721 + "protocol_id": 738 }, "minecraft:chest": { - "protocol_id": 256 + "protocol_id": 263 }, "minecraft:chest_minecart": { - "protocol_id": 691 + "protocol_id": 706 }, "minecraft:chicken": { - "protocol_id": 894 + "protocol_id": 922 }, "minecraft:chicken_spawn_egg": { - "protocol_id": 919 + "protocol_id": 948 }, "minecraft:chipped_anvil": { - "protocol_id": 372 + "protocol_id": 382 + }, + "minecraft:chiseled_bookshelf": { + "protocol_id": 252 }, "minecraft:chiseled_deepslate": { - "protocol_id": 305 + "protocol_id": 313 }, "minecraft:chiseled_nether_bricks": { - "protocol_id": 323 + "protocol_id": 331 }, "minecraft:chiseled_polished_blackstone": { - "protocol_id": 1119 + "protocol_id": 1153 }, "minecraft:chiseled_quartz_block": { - "protocol_id": 374 + "protocol_id": 384 }, "minecraft:chiseled_red_sandstone": { - "protocol_id": 463 + "protocol_id": 473 }, "minecraft:chiseled_sandstone": { - "protocol_id": 157 + "protocol_id": 161 }, "minecraft:chiseled_stone_bricks": { - "protocol_id": 298 + "protocol_id": 306 }, "minecraft:chorus_flower": { - "protocol_id": 251 + "protocol_id": 258 }, "minecraft:chorus_fruit": { - "protocol_id": 1042 + "protocol_id": 1076 }, "minecraft:chorus_plant": { - "protocol_id": 250 + "protocol_id": 257 }, "minecraft:clay": { - "protocol_id": 266 + "protocol_id": 273 }, "minecraft:clay_ball": { - "protocol_id": 827 + "protocol_id": 855 }, "minecraft:clock": { - "protocol_id": 837 + "protocol_id": 865 }, "minecraft:coal": { - "protocol_id": 720 + "protocol_id": 737 }, "minecraft:coal_block": { - "protocol_id": 62 + "protocol_id": 64 }, "minecraft:coal_ore": { - "protocol_id": 43 + "protocol_id": 45 }, "minecraft:coarse_dirt": { "protocol_id": 16 @@ -4990,2902 +5179,2941 @@ "protocol_id": 9 }, "minecraft:cobbled_deepslate_slab": { - "protocol_id": 603 + "protocol_id": 613 }, "minecraft:cobbled_deepslate_stairs": { - "protocol_id": 586 + "protocol_id": 596 }, "minecraft:cobbled_deepslate_wall": { - "protocol_id": 367 + "protocol_id": 377 }, "minecraft:cobblestone": { "protocol_id": 22 }, "minecraft:cobblestone_slab": { - "protocol_id": 228 + "protocol_id": 234 }, "minecraft:cobblestone_stairs": { - "protocol_id": 261 + "protocol_id": 268 }, "minecraft:cobblestone_wall": { - "protocol_id": 349 + "protocol_id": 359 }, "minecraft:cobweb": { - "protocol_id": 159 + "protocol_id": 163 }, "minecraft:cocoa_beans": { - "protocol_id": 848 + "protocol_id": 876 }, "minecraft:cod": { - "protocol_id": 840 + "protocol_id": 868 }, "minecraft:cod_bucket": { - "protocol_id": 822 + "protocol_id": 850 }, "minecraft:cod_spawn_egg": { - "protocol_id": 920 + "protocol_id": 949 }, "minecraft:command_block": { - "protocol_id": 347 + "protocol_id": 357 }, "minecraft:command_block_minecart": { - "protocol_id": 1022 + "protocol_id": 1056 }, "minecraft:comparator": { - "protocol_id": 612 + "protocol_id": 622 }, "minecraft:compass": { - "protocol_id": 833 + "protocol_id": 861 }, "minecraft:composter": { - "protocol_id": 1088 + "protocol_id": 1122 }, "minecraft:conduit": { - "protocol_id": 571 + "protocol_id": 581 }, "minecraft:cooked_beef": { - "protocol_id": 893 - }, - "minecraft:cooked_chicken": { - "protocol_id": 895 - }, - "minecraft:cooked_cod": { - "protocol_id": 844 - }, - "minecraft:cooked_mutton": { - "protocol_id": 1024 - }, - "minecraft:cooked_porkchop": { - "protocol_id": 800 - }, - "minecraft:cooked_rabbit": { - "protocol_id": 1011 - }, - "minecraft:cooked_salmon": { - "protocol_id": 845 - }, - "minecraft:cookie": { - "protocol_id": 885 - }, - "minecraft:copper_block": { - "protocol_id": 69 - }, - "minecraft:copper_ingot": { - "protocol_id": 730 - }, - "minecraft:copper_ore": { - "protocol_id": 47 - }, - "minecraft:cornflower": { - "protocol_id": 193 - }, - "minecraft:cow_spawn_egg": { "protocol_id": 921 }, + "minecraft:cooked_chicken": { + "protocol_id": 923 + }, + "minecraft:cooked_cod": { + "protocol_id": 872 + }, + "minecraft:cooked_mutton": { + "protocol_id": 1058 + }, + "minecraft:cooked_porkchop": { + "protocol_id": 817 + }, + "minecraft:cooked_rabbit": { + "protocol_id": 1045 + }, + "minecraft:cooked_salmon": { + "protocol_id": 873 + }, + "minecraft:cookie": { + "protocol_id": 913 + }, + "minecraft:copper_block": { + "protocol_id": 71 + }, + "minecraft:copper_ingot": { + "protocol_id": 747 + }, + "minecraft:copper_ore": { + "protocol_id": 49 + }, + "minecraft:cornflower": { + "protocol_id": 197 + }, + "minecraft:cow_spawn_egg": { + "protocol_id": 950 + }, "minecraft:cracked_deepslate_bricks": { - "protocol_id": 302 + "protocol_id": 310 }, "minecraft:cracked_deepslate_tiles": { - "protocol_id": 304 + "protocol_id": 312 }, "minecraft:cracked_nether_bricks": { - "protocol_id": 322 + "protocol_id": 330 }, "minecraft:cracked_polished_blackstone_bricks": { - "protocol_id": 1123 + "protocol_id": 1157 }, "minecraft:cracked_stone_bricks": { - "protocol_id": 297 + "protocol_id": 305 }, "minecraft:crafting_table": { - "protocol_id": 257 + "protocol_id": 264 }, "minecraft:creeper_banner_pattern": { - "protocol_id": 1082 + "protocol_id": 1116 }, "minecraft:creeper_head": { - "protocol_id": 1000 + "protocol_id": 1033 }, "minecraft:creeper_spawn_egg": { - "protocol_id": 922 + "protocol_id": 951 }, "minecraft:crimson_button": { - "protocol_id": 641 + "protocol_id": 652 }, "minecraft:crimson_door": { - "protocol_id": 664 + "protocol_id": 677 }, "minecraft:crimson_fence": { - "protocol_id": 275 + "protocol_id": 283 }, "minecraft:crimson_fence_gate": { - "protocol_id": 683 + "protocol_id": 698 }, "minecraft:crimson_fungus": { - "protocol_id": 199 + "protocol_id": 203 + }, + "minecraft:crimson_hanging_sign": { + "protocol_id": 839 }, "minecraft:crimson_hyphae": { - "protocol_id": 140 + "protocol_id": 144 }, "minecraft:crimson_nylium": { "protocol_id": 20 }, "minecraft:crimson_planks": { - "protocol_id": 30 + "protocol_id": 31 }, "minecraft:crimson_pressure_plate": { - "protocol_id": 654 + "protocol_id": 666 }, "minecraft:crimson_roots": { - "protocol_id": 201 + "protocol_id": 205 }, "minecraft:crimson_sign": { - "protocol_id": 811 + "protocol_id": 829 }, "minecraft:crimson_slab": { - "protocol_id": 221 + "protocol_id": 227 }, "minecraft:crimson_stairs": { - "protocol_id": 345 + "protocol_id": 355 }, "minecraft:crimson_stem": { - "protocol_id": 113 + "protocol_id": 115 }, "minecraft:crimson_trapdoor": { - "protocol_id": 674 + "protocol_id": 688 }, "minecraft:crossbow": { - "protocol_id": 1078 + "protocol_id": 1112 }, "minecraft:crying_obsidian": { - "protocol_id": 1111 + "protocol_id": 1145 }, "minecraft:cut_copper": { - "protocol_id": 76 + "protocol_id": 78 }, "minecraft:cut_copper_slab": { - "protocol_id": 84 + "protocol_id": 86 }, "minecraft:cut_copper_stairs": { - "protocol_id": 80 + "protocol_id": 82 }, "minecraft:cut_red_sandstone": { - "protocol_id": 464 + "protocol_id": 474 }, "minecraft:cut_red_sandstone_slab": { - "protocol_id": 235 + "protocol_id": 241 }, "minecraft:cut_sandstone": { - "protocol_id": 158 + "protocol_id": 162 }, "minecraft:cut_sandstone_slab": { - "protocol_id": 226 + "protocol_id": 232 }, "minecraft:cyan_banner": { - "protocol_id": 1034 + "protocol_id": 1068 }, "minecraft:cyan_bed": { - "protocol_id": 878 + "protocol_id": 906 }, "minecraft:cyan_candle": { - "protocol_id": 1135 + "protocol_id": 1169 }, "minecraft:cyan_carpet": { - "protocol_id": 407 + "protocol_id": 417 }, "minecraft:cyan_concrete": { - "protocol_id": 516 + "protocol_id": 526 }, "minecraft:cyan_concrete_powder": { - "protocol_id": 532 + "protocol_id": 542 }, "minecraft:cyan_dye": { - "protocol_id": 858 + "protocol_id": 886 }, "minecraft:cyan_glazed_terracotta": { - "protocol_id": 500 + "protocol_id": 510 }, "minecraft:cyan_shulker_box": { - "protocol_id": 484 + "protocol_id": 494 }, "minecraft:cyan_stained_glass": { - "protocol_id": 432 + "protocol_id": 442 }, "minecraft:cyan_stained_glass_pane": { - "protocol_id": 448 + "protocol_id": 458 }, "minecraft:cyan_terracotta": { - "protocol_id": 388 + "protocol_id": 398 }, "minecraft:cyan_wool": { - "protocol_id": 176 + "protocol_id": 180 }, "minecraft:damaged_anvil": { - "protocol_id": 373 + "protocol_id": 383 }, "minecraft:dandelion": { - "protocol_id": 183 + "protocol_id": 187 }, "minecraft:dark_oak_boat": { - "protocol_id": 708 + "protocol_id": 723 }, "minecraft:dark_oak_button": { - "protocol_id": 639 + "protocol_id": 649 }, "minecraft:dark_oak_chest_boat": { - "protocol_id": 709 + "protocol_id": 724 }, "minecraft:dark_oak_door": { - "protocol_id": 662 + "protocol_id": 674 }, "minecraft:dark_oak_fence": { - "protocol_id": 273 + "protocol_id": 280 }, "minecraft:dark_oak_fence_gate": { - "protocol_id": 681 + "protocol_id": 695 + }, + "minecraft:dark_oak_hanging_sign": { + "protocol_id": 836 }, "minecraft:dark_oak_leaves": { - "protocol_id": 147 + "protocol_id": 151 }, "minecraft:dark_oak_log": { - "protocol_id": 109 + "protocol_id": 111 }, "minecraft:dark_oak_planks": { "protocol_id": 28 }, "minecraft:dark_oak_pressure_plate": { - "protocol_id": 652 + "protocol_id": 663 }, "minecraft:dark_oak_sapling": { - "protocol_id": 37 + "protocol_id": 39 }, "minecraft:dark_oak_sign": { - "protocol_id": 809 + "protocol_id": 826 }, "minecraft:dark_oak_slab": { - "protocol_id": 219 + "protocol_id": 223 }, "minecraft:dark_oak_stairs": { - "protocol_id": 343 + "protocol_id": 351 }, "minecraft:dark_oak_trapdoor": { - "protocol_id": 672 + "protocol_id": 685 }, "minecraft:dark_oak_wood": { - "protocol_id": 138 + "protocol_id": 142 }, "minecraft:dark_prismarine": { - "protocol_id": 457 + "protocol_id": 467 }, "minecraft:dark_prismarine_slab": { - "protocol_id": 239 + "protocol_id": 245 }, "minecraft:dark_prismarine_stairs": { - "protocol_id": 460 + "protocol_id": 470 }, "minecraft:daylight_detector": { - "protocol_id": 625 + "protocol_id": 635 }, "minecraft:dead_brain_coral": { - "protocol_id": 555 - }, - "minecraft:dead_brain_coral_block": { - "protocol_id": 541 - }, - "minecraft:dead_brain_coral_fan": { - "protocol_id": 566 - }, - "minecraft:dead_bubble_coral": { - "protocol_id": 556 - }, - "minecraft:dead_bubble_coral_block": { - "protocol_id": 542 - }, - "minecraft:dead_bubble_coral_fan": { - "protocol_id": 567 - }, - "minecraft:dead_bush": { - "protocol_id": 164 - }, - "minecraft:dead_fire_coral": { - "protocol_id": 557 - }, - "minecraft:dead_fire_coral_block": { - "protocol_id": 543 - }, - "minecraft:dead_fire_coral_fan": { - "protocol_id": 568 - }, - "minecraft:dead_horn_coral": { - "protocol_id": 558 - }, - "minecraft:dead_horn_coral_block": { - "protocol_id": 544 - }, - "minecraft:dead_horn_coral_fan": { - "protocol_id": 569 - }, - "minecraft:dead_tube_coral": { - "protocol_id": 559 - }, - "minecraft:dead_tube_coral_block": { - "protocol_id": 540 - }, - "minecraft:dead_tube_coral_fan": { "protocol_id": 565 }, + "minecraft:dead_brain_coral_block": { + "protocol_id": 551 + }, + "minecraft:dead_brain_coral_fan": { + "protocol_id": 576 + }, + "minecraft:dead_bubble_coral": { + "protocol_id": 566 + }, + "minecraft:dead_bubble_coral_block": { + "protocol_id": 552 + }, + "minecraft:dead_bubble_coral_fan": { + "protocol_id": 577 + }, + "minecraft:dead_bush": { + "protocol_id": 168 + }, + "minecraft:dead_fire_coral": { + "protocol_id": 567 + }, + "minecraft:dead_fire_coral_block": { + "protocol_id": 553 + }, + "minecraft:dead_fire_coral_fan": { + "protocol_id": 578 + }, + "minecraft:dead_horn_coral": { + "protocol_id": 568 + }, + "minecraft:dead_horn_coral_block": { + "protocol_id": 554 + }, + "minecraft:dead_horn_coral_fan": { + "protocol_id": 579 + }, + "minecraft:dead_tube_coral": { + "protocol_id": 569 + }, + "minecraft:dead_tube_coral_block": { + "protocol_id": 550 + }, + "minecraft:dead_tube_coral_fan": { + "protocol_id": 575 + }, "minecraft:debug_stick": { - "protocol_id": 1057 + "protocol_id": 1091 }, "minecraft:deepslate": { "protocol_id": 8 }, "minecraft:deepslate_brick_slab": { - "protocol_id": 605 + "protocol_id": 615 }, "minecraft:deepslate_brick_stairs": { - "protocol_id": 588 + "protocol_id": 598 }, "minecraft:deepslate_brick_wall": { - "protocol_id": 369 + "protocol_id": 379 }, "minecraft:deepslate_bricks": { - "protocol_id": 301 + "protocol_id": 309 }, "minecraft:deepslate_coal_ore": { - "protocol_id": 44 - }, - "minecraft:deepslate_copper_ore": { - "protocol_id": 48 - }, - "minecraft:deepslate_diamond_ore": { - "protocol_id": 58 - }, - "minecraft:deepslate_emerald_ore": { - "protocol_id": 54 - }, - "minecraft:deepslate_gold_ore": { - "protocol_id": 50 - }, - "minecraft:deepslate_iron_ore": { "protocol_id": 46 }, - "minecraft:deepslate_lapis_ore": { + "minecraft:deepslate_copper_ore": { + "protocol_id": 50 + }, + "minecraft:deepslate_diamond_ore": { + "protocol_id": 60 + }, + "minecraft:deepslate_emerald_ore": { "protocol_id": 56 }, - "minecraft:deepslate_redstone_ore": { + "minecraft:deepslate_gold_ore": { "protocol_id": 52 }, + "minecraft:deepslate_iron_ore": { + "protocol_id": 48 + }, + "minecraft:deepslate_lapis_ore": { + "protocol_id": 58 + }, + "minecraft:deepslate_redstone_ore": { + "protocol_id": 54 + }, "minecraft:deepslate_tile_slab": { - "protocol_id": 606 + "protocol_id": 616 }, "minecraft:deepslate_tile_stairs": { - "protocol_id": 589 + "protocol_id": 599 }, "minecraft:deepslate_tile_wall": { - "protocol_id": 370 + "protocol_id": 380 }, "minecraft:deepslate_tiles": { - "protocol_id": 303 + "protocol_id": 311 }, "minecraft:detector_rail": { - "protocol_id": 686 + "protocol_id": 701 }, "minecraft:diamond": { - "protocol_id": 722 + "protocol_id": 739 }, "minecraft:diamond_axe": { - "protocol_id": 758 + "protocol_id": 775 }, "minecraft:diamond_block": { - "protocol_id": 71 + "protocol_id": 73 }, "minecraft:diamond_boots": { - "protocol_id": 789 + "protocol_id": 806 }, "minecraft:diamond_chestplate": { - "protocol_id": 787 + "protocol_id": 804 }, "minecraft:diamond_helmet": { - "protocol_id": 786 + "protocol_id": 803 }, "minecraft:diamond_hoe": { - "protocol_id": 759 + "protocol_id": 776 }, "minecraft:diamond_horse_armor": { - "protocol_id": 1018 + "protocol_id": 1052 }, "minecraft:diamond_leggings": { - "protocol_id": 788 + "protocol_id": 805 }, "minecraft:diamond_ore": { - "protocol_id": 57 + "protocol_id": 59 }, "minecraft:diamond_pickaxe": { - "protocol_id": 757 + "protocol_id": 774 }, "minecraft:diamond_shovel": { - "protocol_id": 756 + "protocol_id": 773 }, "minecraft:diamond_sword": { - "protocol_id": 755 + "protocol_id": 772 }, "minecraft:diorite": { "protocol_id": 4 }, "minecraft:diorite_slab": { - "protocol_id": 602 + "protocol_id": 612 }, "minecraft:diorite_stairs": { - "protocol_id": 585 + "protocol_id": 595 }, "minecraft:diorite_wall": { - "protocol_id": 363 + "protocol_id": 373 }, "minecraft:dirt": { "protocol_id": 15 }, "minecraft:dirt_path": { - "protocol_id": 416 + "protocol_id": 426 }, "minecraft:disc_fragment_5": { - "protocol_id": 1073 + "protocol_id": 1107 }, "minecraft:dispenser": { - "protocol_id": 619 + "protocol_id": 629 }, "minecraft:dolphin_spawn_egg": { - "protocol_id": 923 + "protocol_id": 952 }, "minecraft:donkey_spawn_egg": { - "protocol_id": 924 + "protocol_id": 953 }, "minecraft:dragon_breath": { - "protocol_id": 1047 + "protocol_id": 1081 }, "minecraft:dragon_egg": { - "protocol_id": 334 + "protocol_id": 342 }, "minecraft:dragon_head": { - "protocol_id": 1001 + "protocol_id": 1034 }, "minecraft:dried_kelp": { - "protocol_id": 889 + "protocol_id": 917 }, "minecraft:dried_kelp_block": { - "protocol_id": 828 + "protocol_id": 856 }, "minecraft:dripstone_block": { "protocol_id": 13 }, "minecraft:dropper": { - "protocol_id": 620 + "protocol_id": 630 }, "minecraft:drowned_spawn_egg": { - "protocol_id": 925 + "protocol_id": 954 }, "minecraft:echo_shard": { - "protocol_id": 1151 + "protocol_id": 1185 }, "minecraft:egg": { - "protocol_id": 832 + "protocol_id": 860 }, "minecraft:elder_guardian_spawn_egg": { - "protocol_id": 926 + "protocol_id": 955 }, "minecraft:elytra": { - "protocol_id": 697 + "protocol_id": 712 }, "minecraft:emerald": { - "protocol_id": 723 + "protocol_id": 740 }, "minecraft:emerald_block": { - "protocol_id": 337 + "protocol_id": 345 }, "minecraft:emerald_ore": { - "protocol_id": 53 + "protocol_id": 55 }, "minecraft:enchanted_book": { - "protocol_id": 1006 + "protocol_id": 1040 }, "minecraft:enchanted_golden_apple": { - "protocol_id": 803 + "protocol_id": 820 }, "minecraft:enchanting_table": { - "protocol_id": 330 + "protocol_id": 338 }, "minecraft:end_crystal": { - "protocol_id": 1041 + "protocol_id": 1075 }, "minecraft:end_portal_frame": { - "protocol_id": 331 + "protocol_id": 339 }, "minecraft:end_rod": { - "protocol_id": 249 + "protocol_id": 256 }, "minecraft:end_stone": { - "protocol_id": 332 + "protocol_id": 340 }, "minecraft:end_stone_brick_slab": { - "protocol_id": 595 + "protocol_id": 605 }, "minecraft:end_stone_brick_stairs": { - "protocol_id": 577 + "protocol_id": 587 }, "minecraft:end_stone_brick_wall": { - "protocol_id": 362 + "protocol_id": 372 }, "minecraft:end_stone_bricks": { - "protocol_id": 333 + "protocol_id": 341 }, "minecraft:ender_chest": { - "protocol_id": 336 + "protocol_id": 344 + }, + "minecraft:ender_dragon_spawn_egg": { + "protocol_id": 956 }, "minecraft:ender_eye": { - "protocol_id": 910 + "protocol_id": 938 }, "minecraft:ender_pearl": { - "protocol_id": 897 + "protocol_id": 925 }, "minecraft:enderman_spawn_egg": { - "protocol_id": 927 + "protocol_id": 957 }, "minecraft:endermite_spawn_egg": { - "protocol_id": 928 + "protocol_id": 958 }, "minecraft:evoker_spawn_egg": { - "protocol_id": 929 + "protocol_id": 959 }, "minecraft:experience_bottle": { - "protocol_id": 983 + "protocol_id": 1016 }, "minecraft:exposed_copper": { - "protocol_id": 73 + "protocol_id": 75 }, "minecraft:exposed_cut_copper": { - "protocol_id": 77 + "protocol_id": 79 }, "minecraft:exposed_cut_copper_slab": { - "protocol_id": 85 + "protocol_id": 87 }, "minecraft:exposed_cut_copper_stairs": { - "protocol_id": 81 + "protocol_id": 83 }, "minecraft:farmland": { - "protocol_id": 258 + "protocol_id": 265 }, "minecraft:feather": { - "protocol_id": 769 + "protocol_id": 786 }, "minecraft:fermented_spider_eye": { - "protocol_id": 905 - }, - "minecraft:fern": { - "protocol_id": 161 - }, - "minecraft:filled_map": { - "protocol_id": 886 - }, - "minecraft:fire_charge": { - "protocol_id": 984 - }, - "minecraft:fire_coral": { - "protocol_id": 553 - }, - "minecraft:fire_coral_block": { - "protocol_id": 548 - }, - "minecraft:fire_coral_fan": { - "protocol_id": 563 - }, - "minecraft:firework_rocket": { - "protocol_id": 1004 - }, - "minecraft:firework_star": { - "protocol_id": 1005 - }, - "minecraft:fishing_rod": { - "protocol_id": 836 - }, - "minecraft:fletching_table": { - "protocol_id": 1093 - }, - "minecraft:flint": { - "protocol_id": 798 - }, - "minecraft:flint_and_steel": { - "protocol_id": 716 - }, - "minecraft:flower_banner_pattern": { - "protocol_id": 1081 - }, - "minecraft:flower_pot": { - "protocol_id": 989 - }, - "minecraft:flowering_azalea": { - "protocol_id": 163 - }, - "minecraft:flowering_azalea_leaves": { - "protocol_id": 150 - }, - "minecraft:fox_spawn_egg": { - "protocol_id": 930 - }, - "minecraft:frog_spawn_egg": { - "protocol_id": 931 - }, - "minecraft:frogspawn": { - "protocol_id": 1150 - }, - "minecraft:furnace": { - "protocol_id": 259 - }, - "minecraft:furnace_minecart": { - "protocol_id": 692 - }, - "minecraft:ghast_spawn_egg": { - "protocol_id": 932 - }, - "minecraft:ghast_tear": { - "protocol_id": 899 - }, - "minecraft:gilded_blackstone": { - "protocol_id": 1115 - }, - "minecraft:glass": { - "protocol_id": 153 - }, - "minecraft:glass_bottle": { - "protocol_id": 903 - }, - "minecraft:glass_pane": { - "protocol_id": 312 - }, - "minecraft:glistering_melon_slice": { - "protocol_id": 911 - }, - "minecraft:globe_banner_pattern": { - "protocol_id": 1085 - }, - "minecraft:glow_berries": { - "protocol_id": 1101 - }, - "minecraft:glow_ink_sac": { - "protocol_id": 847 - }, - "minecraft:glow_item_frame": { - "protocol_id": 988 - }, - "minecraft:glow_lichen": { - "protocol_id": 315 - }, - "minecraft:glow_squid_spawn_egg": { "protocol_id": 933 }, - "minecraft:glowstone": { - "protocol_id": 287 + "minecraft:fern": { + "protocol_id": 165 }, - "minecraft:glowstone_dust": { - "protocol_id": 839 + "minecraft:filled_map": { + "protocol_id": 914 }, - "minecraft:goat_horn": { - "protocol_id": 1087 - }, - "minecraft:goat_spawn_egg": { - "protocol_id": 934 - }, - "minecraft:gold_block": { - "protocol_id": 70 - }, - "minecraft:gold_ingot": { - "protocol_id": 732 - }, - "minecraft:gold_nugget": { - "protocol_id": 900 - }, - "minecraft:gold_ore": { - "protocol_id": 49 - }, - "minecraft:golden_apple": { - "protocol_id": 802 - }, - "minecraft:golden_axe": { - "protocol_id": 748 - }, - "minecraft:golden_boots": { - "protocol_id": 793 - }, - "minecraft:golden_carrot": { - "protocol_id": 995 - }, - "minecraft:golden_chestplate": { - "protocol_id": 791 - }, - "minecraft:golden_helmet": { - "protocol_id": 790 - }, - "minecraft:golden_hoe": { - "protocol_id": 749 - }, - "minecraft:golden_horse_armor": { + "minecraft:fire_charge": { "protocol_id": 1017 }, + "minecraft:fire_coral": { + "protocol_id": 563 + }, + "minecraft:fire_coral_block": { + "protocol_id": 558 + }, + "minecraft:fire_coral_fan": { + "protocol_id": 573 + }, + "minecraft:firework_rocket": { + "protocol_id": 1038 + }, + "minecraft:firework_star": { + "protocol_id": 1039 + }, + "minecraft:fishing_rod": { + "protocol_id": 864 + }, + "minecraft:fletching_table": { + "protocol_id": 1127 + }, + "minecraft:flint": { + "protocol_id": 815 + }, + "minecraft:flint_and_steel": { + "protocol_id": 733 + }, + "minecraft:flower_banner_pattern": { + "protocol_id": 1115 + }, + "minecraft:flower_pot": { + "protocol_id": 1022 + }, + "minecraft:flowering_azalea": { + "protocol_id": 167 + }, + "minecraft:flowering_azalea_leaves": { + "protocol_id": 154 + }, + "minecraft:fox_spawn_egg": { + "protocol_id": 960 + }, + "minecraft:frog_spawn_egg": { + "protocol_id": 961 + }, + "minecraft:frogspawn": { + "protocol_id": 1184 + }, + "minecraft:furnace": { + "protocol_id": 266 + }, + "minecraft:furnace_minecart": { + "protocol_id": 707 + }, + "minecraft:ghast_spawn_egg": { + "protocol_id": 962 + }, + "minecraft:ghast_tear": { + "protocol_id": 927 + }, + "minecraft:gilded_blackstone": { + "protocol_id": 1149 + }, + "minecraft:glass": { + "protocol_id": 157 + }, + "minecraft:glass_bottle": { + "protocol_id": 931 + }, + "minecraft:glass_pane": { + "protocol_id": 320 + }, + "minecraft:glistering_melon_slice": { + "protocol_id": 939 + }, + "minecraft:globe_banner_pattern": { + "protocol_id": 1119 + }, + "minecraft:glow_berries": { + "protocol_id": 1135 + }, + "minecraft:glow_ink_sac": { + "protocol_id": 875 + }, + "minecraft:glow_item_frame": { + "protocol_id": 1021 + }, + "minecraft:glow_lichen": { + "protocol_id": 323 + }, + "minecraft:glow_squid_spawn_egg": { + "protocol_id": 963 + }, + "minecraft:glowstone": { + "protocol_id": 295 + }, + "minecraft:glowstone_dust": { + "protocol_id": 867 + }, + "minecraft:goat_horn": { + "protocol_id": 1121 + }, + "minecraft:goat_spawn_egg": { + "protocol_id": 964 + }, + "minecraft:gold_block": { + "protocol_id": 72 + }, + "minecraft:gold_ingot": { + "protocol_id": 749 + }, + "minecraft:gold_nugget": { + "protocol_id": 928 + }, + "minecraft:gold_ore": { + "protocol_id": 51 + }, + "minecraft:golden_apple": { + "protocol_id": 819 + }, + "minecraft:golden_axe": { + "protocol_id": 765 + }, + "minecraft:golden_boots": { + "protocol_id": 810 + }, + "minecraft:golden_carrot": { + "protocol_id": 1028 + }, + "minecraft:golden_chestplate": { + "protocol_id": 808 + }, + "minecraft:golden_helmet": { + "protocol_id": 807 + }, + "minecraft:golden_hoe": { + "protocol_id": 766 + }, + "minecraft:golden_horse_armor": { + "protocol_id": 1051 + }, "minecraft:golden_leggings": { - "protocol_id": 792 + "protocol_id": 809 }, "minecraft:golden_pickaxe": { - "protocol_id": 747 + "protocol_id": 764 }, "minecraft:golden_shovel": { - "protocol_id": 746 + "protocol_id": 763 }, "minecraft:golden_sword": { - "protocol_id": 745 + "protocol_id": 762 }, "minecraft:granite": { "protocol_id": 2 }, "minecraft:granite_slab": { - "protocol_id": 598 + "protocol_id": 608 }, "minecraft:granite_stairs": { - "protocol_id": 581 + "protocol_id": 591 }, "minecraft:granite_wall": { - "protocol_id": 355 + "protocol_id": 365 }, "minecraft:grass": { - "protocol_id": 160 + "protocol_id": 164 }, "minecraft:grass_block": { "protocol_id": 14 }, "minecraft:gravel": { - "protocol_id": 42 + "protocol_id": 44 }, "minecraft:gray_banner": { - "protocol_id": 1032 + "protocol_id": 1066 }, "minecraft:gray_bed": { - "protocol_id": 876 + "protocol_id": 904 }, "minecraft:gray_candle": { - "protocol_id": 1133 + "protocol_id": 1167 }, "minecraft:gray_carpet": { - "protocol_id": 405 + "protocol_id": 415 }, "minecraft:gray_concrete": { - "protocol_id": 514 + "protocol_id": 524 }, "minecraft:gray_concrete_powder": { - "protocol_id": 530 + "protocol_id": 540 }, "minecraft:gray_dye": { - "protocol_id": 856 + "protocol_id": 884 }, "minecraft:gray_glazed_terracotta": { - "protocol_id": 498 + "protocol_id": 508 }, "minecraft:gray_shulker_box": { - "protocol_id": 482 + "protocol_id": 492 }, "minecraft:gray_stained_glass": { - "protocol_id": 430 + "protocol_id": 440 }, "minecraft:gray_stained_glass_pane": { - "protocol_id": 446 + "protocol_id": 456 }, "minecraft:gray_terracotta": { - "protocol_id": 386 + "protocol_id": 396 }, "minecraft:gray_wool": { - "protocol_id": 174 + "protocol_id": 178 }, "minecraft:green_banner": { - "protocol_id": 1038 + "protocol_id": 1072 }, "minecraft:green_bed": { - "protocol_id": 882 + "protocol_id": 910 }, "minecraft:green_candle": { - "protocol_id": 1139 + "protocol_id": 1173 }, "minecraft:green_carpet": { - "protocol_id": 411 + "protocol_id": 421 }, "minecraft:green_concrete": { - "protocol_id": 520 + "protocol_id": 530 }, "minecraft:green_concrete_powder": { - "protocol_id": 536 + "protocol_id": 546 }, "minecraft:green_dye": { - "protocol_id": 862 + "protocol_id": 890 }, "minecraft:green_glazed_terracotta": { - "protocol_id": 504 + "protocol_id": 514 }, "minecraft:green_shulker_box": { - "protocol_id": 488 + "protocol_id": 498 }, "minecraft:green_stained_glass": { - "protocol_id": 436 + "protocol_id": 446 }, "minecraft:green_stained_glass_pane": { - "protocol_id": 452 + "protocol_id": 462 }, "minecraft:green_terracotta": { - "protocol_id": 392 + "protocol_id": 402 }, "minecraft:green_wool": { - "protocol_id": 180 + "protocol_id": 184 }, "minecraft:grindstone": { - "protocol_id": 1094 + "protocol_id": 1128 }, "minecraft:guardian_spawn_egg": { - "protocol_id": 935 + "protocol_id": 965 }, "minecraft:gunpowder": { - "protocol_id": 770 + "protocol_id": 787 }, "minecraft:hanging_roots": { - "protocol_id": 210 + "protocol_id": 214 }, "minecraft:hay_block": { - "protocol_id": 397 + "protocol_id": 407 }, "minecraft:heart_of_the_sea": { - "protocol_id": 1077 + "protocol_id": 1111 }, "minecraft:heavy_weighted_pressure_plate": { - "protocol_id": 646 + "protocol_id": 657 }, "minecraft:hoglin_spawn_egg": { - "protocol_id": 936 + "protocol_id": 966 }, "minecraft:honey_block": { - "protocol_id": 616 + "protocol_id": 626 }, "minecraft:honey_bottle": { - "protocol_id": 1108 + "protocol_id": 1142 }, "minecraft:honeycomb": { - "protocol_id": 1105 + "protocol_id": 1139 }, "minecraft:honeycomb_block": { - "protocol_id": 1109 + "protocol_id": 1143 }, "minecraft:hopper": { - "protocol_id": 618 + "protocol_id": 628 }, "minecraft:hopper_minecart": { - "protocol_id": 694 + "protocol_id": 709 }, "minecraft:horn_coral": { - "protocol_id": 554 - }, - "minecraft:horn_coral_block": { - "protocol_id": 549 - }, - "minecraft:horn_coral_fan": { "protocol_id": 564 }, + "minecraft:horn_coral_block": { + "protocol_id": 559 + }, + "minecraft:horn_coral_fan": { + "protocol_id": 574 + }, "minecraft:horse_spawn_egg": { - "protocol_id": 937 + "protocol_id": 967 }, "minecraft:husk_spawn_egg": { - "protocol_id": 938 + "protocol_id": 968 }, "minecraft:ice": { - "protocol_id": 263 + "protocol_id": 270 }, "minecraft:infested_chiseled_stone_bricks": { - "protocol_id": 293 + "protocol_id": 301 }, "minecraft:infested_cobblestone": { - "protocol_id": 289 + "protocol_id": 297 }, "minecraft:infested_cracked_stone_bricks": { - "protocol_id": 292 + "protocol_id": 300 }, "minecraft:infested_deepslate": { - "protocol_id": 294 + "protocol_id": 302 }, "minecraft:infested_mossy_stone_bricks": { - "protocol_id": 291 + "protocol_id": 299 }, "minecraft:infested_stone": { - "protocol_id": 288 + "protocol_id": 296 }, "minecraft:infested_stone_bricks": { - "protocol_id": 290 + "protocol_id": 298 }, "minecraft:ink_sac": { - "protocol_id": 846 + "protocol_id": 874 }, "minecraft:iron_axe": { - "protocol_id": 753 + "protocol_id": 770 }, "minecraft:iron_bars": { - "protocol_id": 310 + "protocol_id": 318 }, "minecraft:iron_block": { - "protocol_id": 68 + "protocol_id": 70 }, "minecraft:iron_boots": { - "protocol_id": 785 + "protocol_id": 802 }, "minecraft:iron_chestplate": { - "protocol_id": 783 + "protocol_id": 800 }, "minecraft:iron_door": { - "protocol_id": 656 + "protocol_id": 668 + }, + "minecraft:iron_golem_spawn_egg": { + "protocol_id": 969 }, "minecraft:iron_helmet": { - "protocol_id": 782 + "protocol_id": 799 }, "minecraft:iron_hoe": { - "protocol_id": 754 + "protocol_id": 771 }, "minecraft:iron_horse_armor": { - "protocol_id": 1016 + "protocol_id": 1050 }, "minecraft:iron_ingot": { - "protocol_id": 728 + "protocol_id": 745 }, "minecraft:iron_leggings": { - "protocol_id": 784 + "protocol_id": 801 }, "minecraft:iron_nugget": { - "protocol_id": 1055 + "protocol_id": 1089 }, "minecraft:iron_ore": { - "protocol_id": 45 + "protocol_id": 47 }, "minecraft:iron_pickaxe": { - "protocol_id": 752 + "protocol_id": 769 }, "minecraft:iron_shovel": { - "protocol_id": 751 + "protocol_id": 768 }, "minecraft:iron_sword": { - "protocol_id": 750 + "protocol_id": 767 }, "minecraft:iron_trapdoor": { - "protocol_id": 666 - }, - "minecraft:item_frame": { - "protocol_id": 987 - }, - "minecraft:jack_o_lantern": { - "protocol_id": 279 - }, - "minecraft:jigsaw": { - "protocol_id": 713 - }, - "minecraft:jukebox": { - "protocol_id": 267 - }, - "minecraft:jungle_boat": { - "protocol_id": 704 - }, - "minecraft:jungle_button": { - "protocol_id": 637 - }, - "minecraft:jungle_chest_boat": { - "protocol_id": 705 - }, - "minecraft:jungle_door": { - "protocol_id": 660 - }, - "minecraft:jungle_fence": { - "protocol_id": 271 - }, - "minecraft:jungle_fence_gate": { "protocol_id": 679 }, + "minecraft:item_frame": { + "protocol_id": 1020 + }, + "minecraft:jack_o_lantern": { + "protocol_id": 287 + }, + "minecraft:jigsaw": { + "protocol_id": 730 + }, + "minecraft:jukebox": { + "protocol_id": 274 + }, + "minecraft:jungle_boat": { + "protocol_id": 719 + }, + "minecraft:jungle_button": { + "protocol_id": 647 + }, + "minecraft:jungle_chest_boat": { + "protocol_id": 720 + }, + "minecraft:jungle_door": { + "protocol_id": 672 + }, + "minecraft:jungle_fence": { + "protocol_id": 278 + }, + "minecraft:jungle_fence_gate": { + "protocol_id": 693 + }, + "minecraft:jungle_hanging_sign": { + "protocol_id": 834 + }, "minecraft:jungle_leaves": { - "protocol_id": 145 + "protocol_id": 149 }, "minecraft:jungle_log": { - "protocol_id": 107 + "protocol_id": 109 }, "minecraft:jungle_planks": { "protocol_id": 26 }, "minecraft:jungle_pressure_plate": { - "protocol_id": 650 + "protocol_id": 661 }, "minecraft:jungle_sapling": { - "protocol_id": 35 + "protocol_id": 37 }, "minecraft:jungle_sign": { - "protocol_id": 807 + "protocol_id": 824 }, "minecraft:jungle_slab": { - "protocol_id": 217 + "protocol_id": 221 }, "minecraft:jungle_stairs": { - "protocol_id": 341 + "protocol_id": 349 }, "minecraft:jungle_trapdoor": { - "protocol_id": 670 + "protocol_id": 683 }, "minecraft:jungle_wood": { - "protocol_id": 136 + "protocol_id": 140 }, "minecraft:kelp": { - "protocol_id": 207 + "protocol_id": 211 }, "minecraft:knowledge_book": { - "protocol_id": 1056 + "protocol_id": 1090 }, "minecraft:ladder": { - "protocol_id": 260 + "protocol_id": 267 }, "minecraft:lantern": { - "protocol_id": 1098 + "protocol_id": 1132 }, "minecraft:lapis_block": { - "protocol_id": 155 + "protocol_id": 159 }, "minecraft:lapis_lazuli": { - "protocol_id": 724 + "protocol_id": 741 }, "minecraft:lapis_ore": { - "protocol_id": 55 + "protocol_id": 57 }, "minecraft:large_amethyst_bud": { - "protocol_id": 1144 + "protocol_id": 1178 }, "minecraft:large_fern": { - "protocol_id": 422 + "protocol_id": 432 }, "minecraft:lava_bucket": { - "protocol_id": 815 + "protocol_id": 843 }, "minecraft:lead": { - "protocol_id": 1020 + "protocol_id": 1054 }, "minecraft:leather": { - "protocol_id": 818 + "protocol_id": 846 }, "minecraft:leather_boots": { - "protocol_id": 777 + "protocol_id": 794 }, "minecraft:leather_chestplate": { - "protocol_id": 775 + "protocol_id": 792 }, "minecraft:leather_helmet": { - "protocol_id": 774 + "protocol_id": 791 }, "minecraft:leather_horse_armor": { - "protocol_id": 1019 + "protocol_id": 1053 }, "minecraft:leather_leggings": { - "protocol_id": 776 + "protocol_id": 793 }, "minecraft:lectern": { - "protocol_id": 621 + "protocol_id": 631 }, "minecraft:lever": { - "protocol_id": 623 + "protocol_id": 633 }, "minecraft:light": { - "protocol_id": 396 - }, - "minecraft:light_blue_banner": { - "protocol_id": 1028 - }, - "minecraft:light_blue_bed": { - "protocol_id": 872 - }, - "minecraft:light_blue_candle": { - "protocol_id": 1129 - }, - "minecraft:light_blue_carpet": { - "protocol_id": 401 - }, - "minecraft:light_blue_concrete": { - "protocol_id": 510 - }, - "minecraft:light_blue_concrete_powder": { - "protocol_id": 526 - }, - "minecraft:light_blue_dye": { - "protocol_id": 852 - }, - "minecraft:light_blue_glazed_terracotta": { - "protocol_id": 494 - }, - "minecraft:light_blue_shulker_box": { - "protocol_id": 478 - }, - "minecraft:light_blue_stained_glass": { - "protocol_id": 426 - }, - "minecraft:light_blue_stained_glass_pane": { - "protocol_id": 442 - }, - "minecraft:light_blue_terracotta": { - "protocol_id": 382 - }, - "minecraft:light_blue_wool": { - "protocol_id": 170 - }, - "minecraft:light_gray_banner": { - "protocol_id": 1033 - }, - "minecraft:light_gray_bed": { - "protocol_id": 877 - }, - "minecraft:light_gray_candle": { - "protocol_id": 1134 - }, - "minecraft:light_gray_carpet": { "protocol_id": 406 }, + "minecraft:light_blue_banner": { + "protocol_id": 1062 + }, + "minecraft:light_blue_bed": { + "protocol_id": 900 + }, + "minecraft:light_blue_candle": { + "protocol_id": 1163 + }, + "minecraft:light_blue_carpet": { + "protocol_id": 411 + }, + "minecraft:light_blue_concrete": { + "protocol_id": 520 + }, + "minecraft:light_blue_concrete_powder": { + "protocol_id": 536 + }, + "minecraft:light_blue_dye": { + "protocol_id": 880 + }, + "minecraft:light_blue_glazed_terracotta": { + "protocol_id": 504 + }, + "minecraft:light_blue_shulker_box": { + "protocol_id": 488 + }, + "minecraft:light_blue_stained_glass": { + "protocol_id": 436 + }, + "minecraft:light_blue_stained_glass_pane": { + "protocol_id": 452 + }, + "minecraft:light_blue_terracotta": { + "protocol_id": 392 + }, + "minecraft:light_blue_wool": { + "protocol_id": 174 + }, + "minecraft:light_gray_banner": { + "protocol_id": 1067 + }, + "minecraft:light_gray_bed": { + "protocol_id": 905 + }, + "minecraft:light_gray_candle": { + "protocol_id": 1168 + }, + "minecraft:light_gray_carpet": { + "protocol_id": 416 + }, "minecraft:light_gray_concrete": { - "protocol_id": 515 - }, - "minecraft:light_gray_concrete_powder": { - "protocol_id": 531 - }, - "minecraft:light_gray_dye": { - "protocol_id": 857 - }, - "minecraft:light_gray_glazed_terracotta": { - "protocol_id": 499 - }, - "minecraft:light_gray_shulker_box": { - "protocol_id": 483 - }, - "minecraft:light_gray_stained_glass": { - "protocol_id": 431 - }, - "minecraft:light_gray_stained_glass_pane": { - "protocol_id": 447 - }, - "minecraft:light_gray_terracotta": { - "protocol_id": 387 - }, - "minecraft:light_gray_wool": { - "protocol_id": 175 - }, - "minecraft:light_weighted_pressure_plate": { - "protocol_id": 645 - }, - "minecraft:lightning_rod": { - "protocol_id": 624 - }, - "minecraft:lilac": { - "protocol_id": 418 - }, - "minecraft:lily_of_the_valley": { - "protocol_id": 194 - }, - "minecraft:lily_pad": { - "protocol_id": 320 - }, - "minecraft:lime_banner": { - "protocol_id": 1030 - }, - "minecraft:lime_bed": { - "protocol_id": 874 - }, - "minecraft:lime_candle": { - "protocol_id": 1131 - }, - "minecraft:lime_carpet": { - "protocol_id": 403 - }, - "minecraft:lime_concrete": { - "protocol_id": 512 - }, - "minecraft:lime_concrete_powder": { - "protocol_id": 528 - }, - "minecraft:lime_dye": { - "protocol_id": 854 - }, - "minecraft:lime_glazed_terracotta": { - "protocol_id": 496 - }, - "minecraft:lime_shulker_box": { - "protocol_id": 480 - }, - "minecraft:lime_stained_glass": { - "protocol_id": 428 - }, - "minecraft:lime_stained_glass_pane": { - "protocol_id": 444 - }, - "minecraft:lime_terracotta": { - "protocol_id": 384 - }, - "minecraft:lime_wool": { - "protocol_id": 172 - }, - "minecraft:lingering_potion": { - "protocol_id": 1051 - }, - "minecraft:llama_spawn_egg": { - "protocol_id": 939 - }, - "minecraft:lodestone": { - "protocol_id": 1110 - }, - "minecraft:loom": { - "protocol_id": 1080 - }, - "minecraft:magenta_banner": { - "protocol_id": 1027 - }, - "minecraft:magenta_bed": { - "protocol_id": 871 - }, - "minecraft:magenta_candle": { - "protocol_id": 1128 - }, - "minecraft:magenta_carpet": { - "protocol_id": 400 - }, - "minecraft:magenta_concrete": { - "protocol_id": 509 - }, - "minecraft:magenta_concrete_powder": { "protocol_id": 525 }, - "minecraft:magenta_dye": { - "protocol_id": 851 + "minecraft:light_gray_concrete_powder": { + "protocol_id": 541 }, - "minecraft:magenta_glazed_terracotta": { + "minecraft:light_gray_dye": { + "protocol_id": 885 + }, + "minecraft:light_gray_glazed_terracotta": { + "protocol_id": 509 + }, + "minecraft:light_gray_shulker_box": { "protocol_id": 493 }, - "minecraft:magenta_shulker_box": { - "protocol_id": 477 - }, - "minecraft:magenta_stained_glass": { - "protocol_id": 425 - }, - "minecraft:magenta_stained_glass_pane": { + "minecraft:light_gray_stained_glass": { "protocol_id": 441 }, + "minecraft:light_gray_stained_glass_pane": { + "protocol_id": 457 + }, + "minecraft:light_gray_terracotta": { + "protocol_id": 397 + }, + "minecraft:light_gray_wool": { + "protocol_id": 179 + }, + "minecraft:light_weighted_pressure_plate": { + "protocol_id": 656 + }, + "minecraft:lightning_rod": { + "protocol_id": 634 + }, + "minecraft:lilac": { + "protocol_id": 428 + }, + "minecraft:lily_of_the_valley": { + "protocol_id": 198 + }, + "minecraft:lily_pad": { + "protocol_id": 328 + }, + "minecraft:lime_banner": { + "protocol_id": 1064 + }, + "minecraft:lime_bed": { + "protocol_id": 902 + }, + "minecraft:lime_candle": { + "protocol_id": 1165 + }, + "minecraft:lime_carpet": { + "protocol_id": 413 + }, + "minecraft:lime_concrete": { + "protocol_id": 522 + }, + "minecraft:lime_concrete_powder": { + "protocol_id": 538 + }, + "minecraft:lime_dye": { + "protocol_id": 882 + }, + "minecraft:lime_glazed_terracotta": { + "protocol_id": 506 + }, + "minecraft:lime_shulker_box": { + "protocol_id": 490 + }, + "minecraft:lime_stained_glass": { + "protocol_id": 438 + }, + "minecraft:lime_stained_glass_pane": { + "protocol_id": 454 + }, + "minecraft:lime_terracotta": { + "protocol_id": 394 + }, + "minecraft:lime_wool": { + "protocol_id": 176 + }, + "minecraft:lingering_potion": { + "protocol_id": 1085 + }, + "minecraft:llama_spawn_egg": { + "protocol_id": 970 + }, + "minecraft:lodestone": { + "protocol_id": 1144 + }, + "minecraft:loom": { + "protocol_id": 1114 + }, + "minecraft:magenta_banner": { + "protocol_id": 1061 + }, + "minecraft:magenta_bed": { + "protocol_id": 899 + }, + "minecraft:magenta_candle": { + "protocol_id": 1162 + }, + "minecraft:magenta_carpet": { + "protocol_id": 410 + }, + "minecraft:magenta_concrete": { + "protocol_id": 519 + }, + "minecraft:magenta_concrete_powder": { + "protocol_id": 535 + }, + "minecraft:magenta_dye": { + "protocol_id": 879 + }, + "minecraft:magenta_glazed_terracotta": { + "protocol_id": 503 + }, + "minecraft:magenta_shulker_box": { + "protocol_id": 487 + }, + "minecraft:magenta_stained_glass": { + "protocol_id": 435 + }, + "minecraft:magenta_stained_glass_pane": { + "protocol_id": 451 + }, "minecraft:magenta_terracotta": { - "protocol_id": 381 + "protocol_id": 391 }, "minecraft:magenta_wool": { - "protocol_id": 169 + "protocol_id": 173 }, "minecraft:magma_block": { - "protocol_id": 468 + "protocol_id": 478 }, "minecraft:magma_cream": { - "protocol_id": 907 + "protocol_id": 935 }, "minecraft:magma_cube_spawn_egg": { - "protocol_id": 940 + "protocol_id": 971 }, "minecraft:mangrove_boat": { - "protocol_id": 710 + "protocol_id": 725 }, "minecraft:mangrove_button": { - "protocol_id": 640 + "protocol_id": 650 }, "minecraft:mangrove_chest_boat": { - "protocol_id": 711 + "protocol_id": 726 }, "minecraft:mangrove_door": { - "protocol_id": 663 + "protocol_id": 675 }, "minecraft:mangrove_fence": { - "protocol_id": 274 + "protocol_id": 281 }, "minecraft:mangrove_fence_gate": { - "protocol_id": 682 + "protocol_id": 696 + }, + "minecraft:mangrove_hanging_sign": { + "protocol_id": 837 }, "minecraft:mangrove_leaves": { - "protocol_id": 148 + "protocol_id": 152 }, "minecraft:mangrove_log": { - "protocol_id": 110 + "protocol_id": 112 }, "minecraft:mangrove_planks": { "protocol_id": 29 }, "minecraft:mangrove_pressure_plate": { - "protocol_id": 653 + "protocol_id": 664 }, "minecraft:mangrove_propagule": { - "protocol_id": 38 + "protocol_id": 40 }, "minecraft:mangrove_roots": { - "protocol_id": 111 + "protocol_id": 113 }, "minecraft:mangrove_sign": { - "protocol_id": 810 + "protocol_id": 827 }, "minecraft:mangrove_slab": { - "protocol_id": 220 + "protocol_id": 224 }, "minecraft:mangrove_stairs": { - "protocol_id": 344 + "protocol_id": 352 }, "minecraft:mangrove_trapdoor": { - "protocol_id": 673 + "protocol_id": 686 }, "minecraft:mangrove_wood": { - "protocol_id": 139 + "protocol_id": 143 }, "minecraft:map": { - "protocol_id": 994 + "protocol_id": 1027 }, "minecraft:medium_amethyst_bud": { - "protocol_id": 1143 + "protocol_id": 1177 }, "minecraft:melon": { - "protocol_id": 313 + "protocol_id": 321 }, "minecraft:melon_seeds": { - "protocol_id": 891 + "protocol_id": 919 }, "minecraft:melon_slice": { - "protocol_id": 888 + "protocol_id": 916 }, "minecraft:milk_bucket": { - "protocol_id": 819 + "protocol_id": 847 }, "minecraft:minecart": { - "protocol_id": 690 + "protocol_id": 705 }, "minecraft:mojang_banner_pattern": { - "protocol_id": 1084 + "protocol_id": 1118 }, "minecraft:mooshroom_spawn_egg": { - "protocol_id": 941 + "protocol_id": 972 }, "minecraft:moss_block": { - "protocol_id": 209 + "protocol_id": 213 }, "minecraft:moss_carpet": { - "protocol_id": 208 + "protocol_id": 212 }, "minecraft:mossy_cobblestone": { - "protocol_id": 246 + "protocol_id": 253 }, "minecraft:mossy_cobblestone_slab": { - "protocol_id": 594 + "protocol_id": 604 }, "minecraft:mossy_cobblestone_stairs": { - "protocol_id": 576 + "protocol_id": 586 }, "minecraft:mossy_cobblestone_wall": { - "protocol_id": 350 + "protocol_id": 360 }, "minecraft:mossy_stone_brick_slab": { - "protocol_id": 592 + "protocol_id": 602 }, "minecraft:mossy_stone_brick_stairs": { - "protocol_id": 574 + "protocol_id": 584 }, "minecraft:mossy_stone_brick_wall": { - "protocol_id": 354 + "protocol_id": 364 }, "minecraft:mossy_stone_bricks": { - "protocol_id": 296 + "protocol_id": 304 }, "minecraft:mud": { "protocol_id": 19 }, "minecraft:mud_brick_slab": { - "protocol_id": 231 + "protocol_id": 237 }, "minecraft:mud_brick_stairs": { - "protocol_id": 318 + "protocol_id": 326 }, "minecraft:mud_brick_wall": { - "protocol_id": 357 + "protocol_id": 367 }, "minecraft:mud_bricks": { - "protocol_id": 300 + "protocol_id": 308 }, "minecraft:muddy_mangrove_roots": { - "protocol_id": 112 + "protocol_id": 114 }, "minecraft:mule_spawn_egg": { - "protocol_id": 942 + "protocol_id": 973 }, "minecraft:mushroom_stem": { - "protocol_id": 309 + "protocol_id": 317 }, "minecraft:mushroom_stew": { - "protocol_id": 767 + "protocol_id": 784 }, "minecraft:music_disc_11": { - "protocol_id": 1068 + "protocol_id": 1102 }, "minecraft:music_disc_13": { - "protocol_id": 1058 + "protocol_id": 1092 }, "minecraft:music_disc_5": { - "protocol_id": 1071 + "protocol_id": 1105 }, "minecraft:music_disc_blocks": { - "protocol_id": 1060 + "protocol_id": 1094 }, "minecraft:music_disc_cat": { - "protocol_id": 1059 + "protocol_id": 1093 }, "minecraft:music_disc_chirp": { - "protocol_id": 1061 + "protocol_id": 1095 }, "minecraft:music_disc_far": { - "protocol_id": 1062 + "protocol_id": 1096 }, "minecraft:music_disc_mall": { - "protocol_id": 1063 + "protocol_id": 1097 }, "minecraft:music_disc_mellohi": { - "protocol_id": 1064 + "protocol_id": 1098 }, "minecraft:music_disc_otherside": { - "protocol_id": 1070 + "protocol_id": 1104 }, "minecraft:music_disc_pigstep": { - "protocol_id": 1072 + "protocol_id": 1106 }, "minecraft:music_disc_stal": { - "protocol_id": 1065 + "protocol_id": 1099 }, "minecraft:music_disc_strad": { - "protocol_id": 1066 + "protocol_id": 1100 }, "minecraft:music_disc_wait": { - "protocol_id": 1069 + "protocol_id": 1103 }, "minecraft:music_disc_ward": { - "protocol_id": 1067 + "protocol_id": 1101 }, "minecraft:mutton": { - "protocol_id": 1023 + "protocol_id": 1057 }, "minecraft:mycelium": { - "protocol_id": 319 + "protocol_id": 327 }, "minecraft:name_tag": { - "protocol_id": 1021 + "protocol_id": 1055 }, "minecraft:nautilus_shell": { - "protocol_id": 1076 + "protocol_id": 1110 }, "minecraft:nether_brick": { - "protocol_id": 1007 + "protocol_id": 1041 }, "minecraft:nether_brick_fence": { - "protocol_id": 324 + "protocol_id": 332 }, "minecraft:nether_brick_slab": { - "protocol_id": 232 + "protocol_id": 238 }, "minecraft:nether_brick_stairs": { - "protocol_id": 325 + "protocol_id": 333 }, "minecraft:nether_brick_wall": { - "protocol_id": 358 + "protocol_id": 368 }, "minecraft:nether_bricks": { - "protocol_id": 321 + "protocol_id": 329 }, "minecraft:nether_gold_ore": { - "protocol_id": 59 + "protocol_id": 61 }, "minecraft:nether_quartz_ore": { - "protocol_id": 60 + "protocol_id": 62 }, "minecraft:nether_sprouts": { - "protocol_id": 203 + "protocol_id": 207 }, "minecraft:nether_star": { - "protocol_id": 1002 + "protocol_id": 1036 }, "minecraft:nether_wart": { - "protocol_id": 901 + "protocol_id": 929 }, "minecraft:nether_wart_block": { - "protocol_id": 469 + "protocol_id": 479 }, "minecraft:netherite_axe": { - "protocol_id": 763 + "protocol_id": 780 }, "minecraft:netherite_block": { - "protocol_id": 72 + "protocol_id": 74 }, "minecraft:netherite_boots": { - "protocol_id": 797 + "protocol_id": 814 }, "minecraft:netherite_chestplate": { - "protocol_id": 795 + "protocol_id": 812 }, "minecraft:netherite_helmet": { - "protocol_id": 794 + "protocol_id": 811 }, "minecraft:netherite_hoe": { - "protocol_id": 764 + "protocol_id": 781 }, "minecraft:netherite_ingot": { - "protocol_id": 733 + "protocol_id": 750 }, "minecraft:netherite_leggings": { - "protocol_id": 796 + "protocol_id": 813 }, "minecraft:netherite_pickaxe": { - "protocol_id": 762 + "protocol_id": 779 }, "minecraft:netherite_scrap": { - "protocol_id": 734 + "protocol_id": 751 }, "minecraft:netherite_shovel": { - "protocol_id": 761 + "protocol_id": 778 }, "minecraft:netherite_sword": { - "protocol_id": 760 + "protocol_id": 777 }, "minecraft:netherrack": { - "protocol_id": 280 + "protocol_id": 288 }, "minecraft:note_block": { - "protocol_id": 631 + "protocol_id": 641 }, "minecraft:oak_boat": { - "protocol_id": 698 + "protocol_id": 713 }, "minecraft:oak_button": { - "protocol_id": 634 + "protocol_id": 644 }, "minecraft:oak_chest_boat": { - "protocol_id": 699 + "protocol_id": 714 }, "minecraft:oak_door": { - "protocol_id": 657 + "protocol_id": 669 }, "minecraft:oak_fence": { - "protocol_id": 268 + "protocol_id": 275 }, "minecraft:oak_fence_gate": { - "protocol_id": 676 + "protocol_id": 690 + }, + "minecraft:oak_hanging_sign": { + "protocol_id": 831 }, "minecraft:oak_leaves": { - "protocol_id": 142 + "protocol_id": 146 }, "minecraft:oak_log": { - "protocol_id": 104 + "protocol_id": 106 }, "minecraft:oak_planks": { "protocol_id": 23 }, "minecraft:oak_pressure_plate": { - "protocol_id": 647 + "protocol_id": 658 }, "minecraft:oak_sapling": { - "protocol_id": 32 + "protocol_id": 34 }, "minecraft:oak_sign": { - "protocol_id": 804 + "protocol_id": 821 }, "minecraft:oak_slab": { - "protocol_id": 214 + "protocol_id": 218 }, "minecraft:oak_stairs": { - "protocol_id": 338 + "protocol_id": 346 }, "minecraft:oak_trapdoor": { - "protocol_id": 667 + "protocol_id": 680 }, "minecraft:oak_wood": { - "protocol_id": 133 + "protocol_id": 137 }, "minecraft:observer": { - "protocol_id": 617 + "protocol_id": 627 }, "minecraft:obsidian": { - "protocol_id": 247 + "protocol_id": 254 }, "minecraft:ocelot_spawn_egg": { - "protocol_id": 943 + "protocol_id": 974 }, "minecraft:ochre_froglight": { - "protocol_id": 1147 + "protocol_id": 1181 }, "minecraft:orange_banner": { - "protocol_id": 1026 + "protocol_id": 1060 }, "minecraft:orange_bed": { - "protocol_id": 870 + "protocol_id": 898 }, "minecraft:orange_candle": { - "protocol_id": 1127 + "protocol_id": 1161 }, "minecraft:orange_carpet": { - "protocol_id": 399 + "protocol_id": 409 }, "minecraft:orange_concrete": { - "protocol_id": 508 + "protocol_id": 518 }, "minecraft:orange_concrete_powder": { - "protocol_id": 524 + "protocol_id": 534 }, "minecraft:orange_dye": { - "protocol_id": 850 + "protocol_id": 878 }, "minecraft:orange_glazed_terracotta": { - "protocol_id": 492 + "protocol_id": 502 }, "minecraft:orange_shulker_box": { - "protocol_id": 476 + "protocol_id": 486 }, "minecraft:orange_stained_glass": { - "protocol_id": 424 + "protocol_id": 434 }, "minecraft:orange_stained_glass_pane": { - "protocol_id": 440 + "protocol_id": 450 }, "minecraft:orange_terracotta": { - "protocol_id": 380 + "protocol_id": 390 }, "minecraft:orange_tulip": { - "protocol_id": 189 + "protocol_id": 193 }, "minecraft:orange_wool": { - "protocol_id": 168 + "protocol_id": 172 }, "minecraft:oxeye_daisy": { - "protocol_id": 192 + "protocol_id": 196 }, "minecraft:oxidized_copper": { - "protocol_id": 75 + "protocol_id": 77 }, "minecraft:oxidized_cut_copper": { - "protocol_id": 79 + "protocol_id": 81 }, "minecraft:oxidized_cut_copper_slab": { - "protocol_id": 87 + "protocol_id": 89 }, "minecraft:oxidized_cut_copper_stairs": { - "protocol_id": 83 + "protocol_id": 85 }, "minecraft:packed_ice": { - "protocol_id": 415 + "protocol_id": 425 }, "minecraft:packed_mud": { - "protocol_id": 299 + "protocol_id": 307 }, "minecraft:painting": { - "protocol_id": 801 + "protocol_id": 818 }, "minecraft:panda_spawn_egg": { - "protocol_id": 944 + "protocol_id": 975 }, "minecraft:paper": { - "protocol_id": 829 + "protocol_id": 857 }, "minecraft:parrot_spawn_egg": { - "protocol_id": 945 + "protocol_id": 976 }, "minecraft:pearlescent_froglight": { - "protocol_id": 1149 + "protocol_id": 1183 }, "minecraft:peony": { - "protocol_id": 420 + "protocol_id": 430 }, "minecraft:petrified_oak_slab": { - "protocol_id": 227 + "protocol_id": 233 }, "minecraft:phantom_membrane": { - "protocol_id": 1075 + "protocol_id": 1109 }, "minecraft:phantom_spawn_egg": { - "protocol_id": 946 + "protocol_id": 977 }, "minecraft:pig_spawn_egg": { - "protocol_id": 947 + "protocol_id": 978 }, "minecraft:piglin_banner_pattern": { - "protocol_id": 1086 + "protocol_id": 1120 }, "minecraft:piglin_brute_spawn_egg": { - "protocol_id": 949 + "protocol_id": 980 + }, + "minecraft:piglin_head": { + "protocol_id": 1035 }, "minecraft:piglin_spawn_egg": { - "protocol_id": 948 + "protocol_id": 979 }, "minecraft:pillager_spawn_egg": { - "protocol_id": 950 + "protocol_id": 981 }, "minecraft:pink_banner": { - "protocol_id": 1031 + "protocol_id": 1065 }, "minecraft:pink_bed": { - "protocol_id": 875 + "protocol_id": 903 }, "minecraft:pink_candle": { - "protocol_id": 1132 + "protocol_id": 1166 }, "minecraft:pink_carpet": { - "protocol_id": 404 + "protocol_id": 414 }, "minecraft:pink_concrete": { - "protocol_id": 513 + "protocol_id": 523 }, "minecraft:pink_concrete_powder": { - "protocol_id": 529 + "protocol_id": 539 }, "minecraft:pink_dye": { - "protocol_id": 855 + "protocol_id": 883 }, "minecraft:pink_glazed_terracotta": { - "protocol_id": 497 + "protocol_id": 507 }, "minecraft:pink_shulker_box": { - "protocol_id": 481 + "protocol_id": 491 }, "minecraft:pink_stained_glass": { - "protocol_id": 429 + "protocol_id": 439 }, "minecraft:pink_stained_glass_pane": { - "protocol_id": 445 + "protocol_id": 455 }, "minecraft:pink_terracotta": { - "protocol_id": 385 + "protocol_id": 395 }, "minecraft:pink_tulip": { - "protocol_id": 191 + "protocol_id": 195 }, "minecraft:pink_wool": { - "protocol_id": 173 + "protocol_id": 177 }, "minecraft:piston": { - "protocol_id": 613 + "protocol_id": 623 }, "minecraft:player_head": { - "protocol_id": 998 + "protocol_id": 1031 }, "minecraft:podzol": { "protocol_id": 17 }, "minecraft:pointed_dripstone": { - "protocol_id": 1146 + "protocol_id": 1180 }, "minecraft:poisonous_potato": { - "protocol_id": 993 + "protocol_id": 1026 }, "minecraft:polar_bear_spawn_egg": { - "protocol_id": 951 + "protocol_id": 982 }, "minecraft:polished_andesite": { "protocol_id": 7 }, "minecraft:polished_andesite_slab": { - "protocol_id": 601 + "protocol_id": 611 }, "minecraft:polished_andesite_stairs": { - "protocol_id": 584 + "protocol_id": 594 }, "minecraft:polished_basalt": { - "protocol_id": 284 + "protocol_id": 292 }, "minecraft:polished_blackstone": { - "protocol_id": 1116 + "protocol_id": 1150 }, "minecraft:polished_blackstone_brick_slab": { - "protocol_id": 1121 + "protocol_id": 1155 }, "minecraft:polished_blackstone_brick_stairs": { - "protocol_id": 1122 + "protocol_id": 1156 }, "minecraft:polished_blackstone_brick_wall": { - "protocol_id": 366 + "protocol_id": 376 }, "minecraft:polished_blackstone_bricks": { - "protocol_id": 1120 + "protocol_id": 1154 }, "minecraft:polished_blackstone_button": { - "protocol_id": 633 + "protocol_id": 643 }, "minecraft:polished_blackstone_pressure_plate": { - "protocol_id": 644 + "protocol_id": 655 }, "minecraft:polished_blackstone_slab": { - "protocol_id": 1117 + "protocol_id": 1151 }, "minecraft:polished_blackstone_stairs": { - "protocol_id": 1118 + "protocol_id": 1152 }, "minecraft:polished_blackstone_wall": { - "protocol_id": 365 + "protocol_id": 375 }, "minecraft:polished_deepslate": { "protocol_id": 10 }, "minecraft:polished_deepslate_slab": { - "protocol_id": 604 + "protocol_id": 614 }, "minecraft:polished_deepslate_stairs": { - "protocol_id": 587 + "protocol_id": 597 }, "minecraft:polished_deepslate_wall": { - "protocol_id": 368 + "protocol_id": 378 }, "minecraft:polished_diorite": { "protocol_id": 5 }, "minecraft:polished_diorite_slab": { - "protocol_id": 593 + "protocol_id": 603 }, "minecraft:polished_diorite_stairs": { - "protocol_id": 575 + "protocol_id": 585 }, "minecraft:polished_granite": { "protocol_id": 3 }, "minecraft:polished_granite_slab": { - "protocol_id": 590 - }, - "minecraft:polished_granite_stairs": { - "protocol_id": 572 - }, - "minecraft:popped_chorus_fruit": { - "protocol_id": 1043 - }, - "minecraft:poppy": { - "protocol_id": 184 - }, - "minecraft:porkchop": { - "protocol_id": 799 - }, - "minecraft:potato": { - "protocol_id": 991 - }, - "minecraft:potion": { - "protocol_id": 902 - }, - "minecraft:powder_snow_bucket": { - "protocol_id": 816 - }, - "minecraft:powered_rail": { - "protocol_id": 685 - }, - "minecraft:prismarine": { - "protocol_id": 455 - }, - "minecraft:prismarine_brick_slab": { - "protocol_id": 238 - }, - "minecraft:prismarine_brick_stairs": { - "protocol_id": 459 - }, - "minecraft:prismarine_bricks": { - "protocol_id": 456 - }, - "minecraft:prismarine_crystals": { - "protocol_id": 1009 - }, - "minecraft:prismarine_shard": { - "protocol_id": 1008 - }, - "minecraft:prismarine_slab": { - "protocol_id": 237 - }, - "minecraft:prismarine_stairs": { - "protocol_id": 458 - }, - "minecraft:prismarine_wall": { - "protocol_id": 352 - }, - "minecraft:pufferfish": { - "protocol_id": 843 - }, - "minecraft:pufferfish_bucket": { - "protocol_id": 820 - }, - "minecraft:pufferfish_spawn_egg": { - "protocol_id": 952 - }, - "minecraft:pumpkin": { - "protocol_id": 277 - }, - "minecraft:pumpkin_pie": { - "protocol_id": 1003 - }, - "minecraft:pumpkin_seeds": { - "protocol_id": 890 - }, - "minecraft:purple_banner": { - "protocol_id": 1035 - }, - "minecraft:purple_bed": { - "protocol_id": 879 - }, - "minecraft:purple_candle": { - "protocol_id": 1136 - }, - "minecraft:purple_carpet": { - "protocol_id": 408 - }, - "minecraft:purple_concrete": { - "protocol_id": 517 - }, - "minecraft:purple_concrete_powder": { - "protocol_id": 533 - }, - "minecraft:purple_dye": { - "protocol_id": 859 - }, - "minecraft:purple_glazed_terracotta": { - "protocol_id": 501 - }, - "minecraft:purple_shulker_box": { - "protocol_id": 485 - }, - "minecraft:purple_stained_glass": { - "protocol_id": 433 - }, - "minecraft:purple_stained_glass_pane": { - "protocol_id": 449 - }, - "minecraft:purple_terracotta": { - "protocol_id": 389 - }, - "minecraft:purple_wool": { - "protocol_id": 177 - }, - "minecraft:purpur_block": { - "protocol_id": 252 - }, - "minecraft:purpur_pillar": { - "protocol_id": 253 - }, - "minecraft:purpur_slab": { - "protocol_id": 236 - }, - "minecraft:purpur_stairs": { - "protocol_id": 254 - }, - "minecraft:quartz": { - "protocol_id": 725 - }, - "minecraft:quartz_block": { - "protocol_id": 375 - }, - "minecraft:quartz_bricks": { - "protocol_id": 376 - }, - "minecraft:quartz_pillar": { - "protocol_id": 377 - }, - "minecraft:quartz_slab": { - "protocol_id": 233 - }, - "minecraft:quartz_stairs": { - "protocol_id": 378 - }, - "minecraft:rabbit": { - "protocol_id": 1010 - }, - "minecraft:rabbit_foot": { - "protocol_id": 1013 - }, - "minecraft:rabbit_hide": { - "protocol_id": 1014 - }, - "minecraft:rabbit_spawn_egg": { - "protocol_id": 953 - }, - "minecraft:rabbit_stew": { - "protocol_id": 1012 - }, - "minecraft:rail": { - "protocol_id": 687 - }, - "minecraft:ravager_spawn_egg": { - "protocol_id": 954 - }, - "minecraft:raw_copper": { - "protocol_id": 729 - }, - "minecraft:raw_copper_block": { - "protocol_id": 64 - }, - "minecraft:raw_gold": { - "protocol_id": 731 - }, - "minecraft:raw_gold_block": { - "protocol_id": 65 - }, - "minecraft:raw_iron": { - "protocol_id": 727 - }, - "minecraft:raw_iron_block": { - "protocol_id": 63 - }, - "minecraft:recovery_compass": { - "protocol_id": 834 - }, - "minecraft:red_banner": { - "protocol_id": 1039 - }, - "minecraft:red_bed": { - "protocol_id": 883 - }, - "minecraft:red_candle": { - "protocol_id": 1140 - }, - "minecraft:red_carpet": { - "protocol_id": 412 - }, - "minecraft:red_concrete": { - "protocol_id": 521 - }, - "minecraft:red_concrete_powder": { - "protocol_id": 537 - }, - "minecraft:red_dye": { - "protocol_id": 863 - }, - "minecraft:red_glazed_terracotta": { - "protocol_id": 505 - }, - "minecraft:red_mushroom": { - "protocol_id": 198 - }, - "minecraft:red_mushroom_block": { - "protocol_id": 308 - }, - "minecraft:red_nether_brick_slab": { "protocol_id": 600 }, - "minecraft:red_nether_brick_stairs": { - "protocol_id": 583 + "minecraft:polished_granite_stairs": { + "protocol_id": 582 }, - "minecraft:red_nether_brick_wall": { - "protocol_id": 360 + "minecraft:popped_chorus_fruit": { + "protocol_id": 1077 }, - "minecraft:red_nether_bricks": { - "protocol_id": 471 - }, - "minecraft:red_sand": { - "protocol_id": 41 - }, - "minecraft:red_sandstone": { - "protocol_id": 462 - }, - "minecraft:red_sandstone_slab": { - "protocol_id": 234 - }, - "minecraft:red_sandstone_stairs": { - "protocol_id": 465 - }, - "minecraft:red_sandstone_wall": { - "protocol_id": 353 - }, - "minecraft:red_shulker_box": { - "protocol_id": 489 - }, - "minecraft:red_stained_glass": { - "protocol_id": 437 - }, - "minecraft:red_stained_glass_pane": { - "protocol_id": 453 - }, - "minecraft:red_terracotta": { - "protocol_id": 393 - }, - "minecraft:red_tulip": { + "minecraft:poppy": { "protocol_id": 188 }, - "minecraft:red_wool": { - "protocol_id": 181 + "minecraft:porkchop": { + "protocol_id": 816 }, - "minecraft:redstone": { - "protocol_id": 608 + "minecraft:potato": { + "protocol_id": 1024 }, - "minecraft:redstone_block": { - "protocol_id": 610 + "minecraft:potion": { + "protocol_id": 930 }, - "minecraft:redstone_lamp": { - "protocol_id": 630 + "minecraft:powder_snow_bucket": { + "protocol_id": 844 }, - "minecraft:redstone_ore": { - "protocol_id": 51 + "minecraft:powered_rail": { + "protocol_id": 700 }, - "minecraft:redstone_torch": { - "protocol_id": 609 + "minecraft:prismarine": { + "protocol_id": 465 }, - "minecraft:reinforced_deepslate": { - "protocol_id": 306 + "minecraft:prismarine_brick_slab": { + "protocol_id": 244 }, - "minecraft:repeater": { - "protocol_id": 611 + "minecraft:prismarine_brick_stairs": { + "protocol_id": 469 }, - "minecraft:repeating_command_block": { + "minecraft:prismarine_bricks": { "protocol_id": 466 }, + "minecraft:prismarine_crystals": { + "protocol_id": 1043 + }, + "minecraft:prismarine_shard": { + "protocol_id": 1042 + }, + "minecraft:prismarine_slab": { + "protocol_id": 243 + }, + "minecraft:prismarine_stairs": { + "protocol_id": 468 + }, + "minecraft:prismarine_wall": { + "protocol_id": 362 + }, + "minecraft:pufferfish": { + "protocol_id": 871 + }, + "minecraft:pufferfish_bucket": { + "protocol_id": 848 + }, + "minecraft:pufferfish_spawn_egg": { + "protocol_id": 983 + }, + "minecraft:pumpkin": { + "protocol_id": 285 + }, + "minecraft:pumpkin_pie": { + "protocol_id": 1037 + }, + "minecraft:pumpkin_seeds": { + "protocol_id": 918 + }, + "minecraft:purple_banner": { + "protocol_id": 1069 + }, + "minecraft:purple_bed": { + "protocol_id": 907 + }, + "minecraft:purple_candle": { + "protocol_id": 1170 + }, + "minecraft:purple_carpet": { + "protocol_id": 418 + }, + "minecraft:purple_concrete": { + "protocol_id": 527 + }, + "minecraft:purple_concrete_powder": { + "protocol_id": 543 + }, + "minecraft:purple_dye": { + "protocol_id": 887 + }, + "minecraft:purple_glazed_terracotta": { + "protocol_id": 511 + }, + "minecraft:purple_shulker_box": { + "protocol_id": 495 + }, + "minecraft:purple_stained_glass": { + "protocol_id": 443 + }, + "minecraft:purple_stained_glass_pane": { + "protocol_id": 459 + }, + "minecraft:purple_terracotta": { + "protocol_id": 399 + }, + "minecraft:purple_wool": { + "protocol_id": 181 + }, + "minecraft:purpur_block": { + "protocol_id": 259 + }, + "minecraft:purpur_pillar": { + "protocol_id": 260 + }, + "minecraft:purpur_slab": { + "protocol_id": 242 + }, + "minecraft:purpur_stairs": { + "protocol_id": 261 + }, + "minecraft:quartz": { + "protocol_id": 742 + }, + "minecraft:quartz_block": { + "protocol_id": 385 + }, + "minecraft:quartz_bricks": { + "protocol_id": 386 + }, + "minecraft:quartz_pillar": { + "protocol_id": 387 + }, + "minecraft:quartz_slab": { + "protocol_id": 239 + }, + "minecraft:quartz_stairs": { + "protocol_id": 388 + }, + "minecraft:rabbit": { + "protocol_id": 1044 + }, + "minecraft:rabbit_foot": { + "protocol_id": 1047 + }, + "minecraft:rabbit_hide": { + "protocol_id": 1048 + }, + "minecraft:rabbit_spawn_egg": { + "protocol_id": 984 + }, + "minecraft:rabbit_stew": { + "protocol_id": 1046 + }, + "minecraft:rail": { + "protocol_id": 702 + }, + "minecraft:ravager_spawn_egg": { + "protocol_id": 985 + }, + "minecraft:raw_copper": { + "protocol_id": 746 + }, + "minecraft:raw_copper_block": { + "protocol_id": 66 + }, + "minecraft:raw_gold": { + "protocol_id": 748 + }, + "minecraft:raw_gold_block": { + "protocol_id": 67 + }, + "minecraft:raw_iron": { + "protocol_id": 744 + }, + "minecraft:raw_iron_block": { + "protocol_id": 65 + }, + "minecraft:recovery_compass": { + "protocol_id": 862 + }, + "minecraft:red_banner": { + "protocol_id": 1073 + }, + "minecraft:red_bed": { + "protocol_id": 911 + }, + "minecraft:red_candle": { + "protocol_id": 1174 + }, + "minecraft:red_carpet": { + "protocol_id": 422 + }, + "minecraft:red_concrete": { + "protocol_id": 531 + }, + "minecraft:red_concrete_powder": { + "protocol_id": 547 + }, + "minecraft:red_dye": { + "protocol_id": 891 + }, + "minecraft:red_glazed_terracotta": { + "protocol_id": 515 + }, + "minecraft:red_mushroom": { + "protocol_id": 202 + }, + "minecraft:red_mushroom_block": { + "protocol_id": 316 + }, + "minecraft:red_nether_brick_slab": { + "protocol_id": 610 + }, + "minecraft:red_nether_brick_stairs": { + "protocol_id": 593 + }, + "minecraft:red_nether_brick_wall": { + "protocol_id": 370 + }, + "minecraft:red_nether_bricks": { + "protocol_id": 481 + }, + "minecraft:red_sand": { + "protocol_id": 43 + }, + "minecraft:red_sandstone": { + "protocol_id": 472 + }, + "minecraft:red_sandstone_slab": { + "protocol_id": 240 + }, + "minecraft:red_sandstone_stairs": { + "protocol_id": 475 + }, + "minecraft:red_sandstone_wall": { + "protocol_id": 363 + }, + "minecraft:red_shulker_box": { + "protocol_id": 499 + }, + "minecraft:red_stained_glass": { + "protocol_id": 447 + }, + "minecraft:red_stained_glass_pane": { + "protocol_id": 463 + }, + "minecraft:red_terracotta": { + "protocol_id": 403 + }, + "minecraft:red_tulip": { + "protocol_id": 192 + }, + "minecraft:red_wool": { + "protocol_id": 185 + }, + "minecraft:redstone": { + "protocol_id": 618 + }, + "minecraft:redstone_block": { + "protocol_id": 620 + }, + "minecraft:redstone_lamp": { + "protocol_id": 640 + }, + "minecraft:redstone_ore": { + "protocol_id": 53 + }, + "minecraft:redstone_torch": { + "protocol_id": 619 + }, + "minecraft:reinforced_deepslate": { + "protocol_id": 314 + }, + "minecraft:repeater": { + "protocol_id": 621 + }, + "minecraft:repeating_command_block": { + "protocol_id": 476 + }, "minecraft:respawn_anchor": { - "protocol_id": 1124 + "protocol_id": 1158 }, "minecraft:rooted_dirt": { "protocol_id": 18 }, "minecraft:rose_bush": { - "protocol_id": 419 + "protocol_id": 429 }, "minecraft:rotten_flesh": { - "protocol_id": 896 + "protocol_id": 924 }, "minecraft:saddle": { - "protocol_id": 689 + "protocol_id": 704 }, "minecraft:salmon": { - "protocol_id": 841 + "protocol_id": 869 }, "minecraft:salmon_bucket": { - "protocol_id": 821 + "protocol_id": 849 }, "minecraft:salmon_spawn_egg": { - "protocol_id": 955 + "protocol_id": 986 }, "minecraft:sand": { - "protocol_id": 40 + "protocol_id": 42 }, "minecraft:sandstone": { - "protocol_id": 156 + "protocol_id": 160 }, "minecraft:sandstone_slab": { - "protocol_id": 225 + "protocol_id": 231 }, "minecraft:sandstone_stairs": { - "protocol_id": 335 + "protocol_id": 343 }, "minecraft:sandstone_wall": { - "protocol_id": 361 + "protocol_id": 371 }, "minecraft:scaffolding": { - "protocol_id": 607 + "protocol_id": 617 }, "minecraft:sculk": { - "protocol_id": 326 + "protocol_id": 334 }, "minecraft:sculk_catalyst": { - "protocol_id": 328 + "protocol_id": 336 }, "minecraft:sculk_sensor": { - "protocol_id": 626 + "protocol_id": 636 }, "minecraft:sculk_shrieker": { - "protocol_id": 329 + "protocol_id": 337 }, "minecraft:sculk_vein": { - "protocol_id": 327 + "protocol_id": 335 }, "minecraft:scute": { - "protocol_id": 715 + "protocol_id": 732 }, "minecraft:sea_lantern": { - "protocol_id": 461 + "protocol_id": 471 }, "minecraft:sea_pickle": { - "protocol_id": 166 + "protocol_id": 170 }, "minecraft:seagrass": { - "protocol_id": 165 + "protocol_id": 169 }, "minecraft:shears": { - "protocol_id": 887 + "protocol_id": 915 }, "minecraft:sheep_spawn_egg": { - "protocol_id": 956 + "protocol_id": 987 }, "minecraft:shield": { - "protocol_id": 1052 + "protocol_id": 1086 }, "minecraft:shroomlight": { - "protocol_id": 1104 + "protocol_id": 1138 }, "minecraft:shulker_box": { - "protocol_id": 474 + "protocol_id": 484 }, "minecraft:shulker_shell": { - "protocol_id": 1054 + "protocol_id": 1088 }, "minecraft:shulker_spawn_egg": { - "protocol_id": 957 + "protocol_id": 988 }, "minecraft:silverfish_spawn_egg": { - "protocol_id": 958 + "protocol_id": 989 }, "minecraft:skeleton_horse_spawn_egg": { - "protocol_id": 960 + "protocol_id": 991 }, "minecraft:skeleton_skull": { - "protocol_id": 996 + "protocol_id": 1029 }, "minecraft:skeleton_spawn_egg": { - "protocol_id": 959 + "protocol_id": 990 }, "minecraft:skull_banner_pattern": { - "protocol_id": 1083 + "protocol_id": 1117 }, "minecraft:slime_ball": { - "protocol_id": 831 + "protocol_id": 859 }, "minecraft:slime_block": { - "protocol_id": 615 + "protocol_id": 625 }, "minecraft:slime_spawn_egg": { - "protocol_id": 961 + "protocol_id": 992 }, "minecraft:small_amethyst_bud": { - "protocol_id": 1142 + "protocol_id": 1176 }, "minecraft:small_dripleaf": { - "protocol_id": 212 + "protocol_id": 216 }, "minecraft:smithing_table": { - "protocol_id": 1095 + "protocol_id": 1129 }, "minecraft:smoker": { - "protocol_id": 1090 + "protocol_id": 1124 }, "minecraft:smooth_basalt": { - "protocol_id": 285 + "protocol_id": 293 }, "minecraft:smooth_quartz": { - "protocol_id": 240 + "protocol_id": 246 }, "minecraft:smooth_quartz_slab": { - "protocol_id": 597 + "protocol_id": 607 }, "minecraft:smooth_quartz_stairs": { - "protocol_id": 580 + "protocol_id": 590 }, "minecraft:smooth_red_sandstone": { - "protocol_id": 241 + "protocol_id": 247 }, "minecraft:smooth_red_sandstone_slab": { - "protocol_id": 591 + "protocol_id": 601 }, "minecraft:smooth_red_sandstone_stairs": { - "protocol_id": 573 + "protocol_id": 583 }, "minecraft:smooth_sandstone": { - "protocol_id": 242 + "protocol_id": 248 }, "minecraft:smooth_sandstone_slab": { - "protocol_id": 596 + "protocol_id": 606 }, "minecraft:smooth_sandstone_stairs": { - "protocol_id": 579 + "protocol_id": 589 }, "minecraft:smooth_stone": { - "protocol_id": 243 + "protocol_id": 249 }, "minecraft:smooth_stone_slab": { - "protocol_id": 224 + "protocol_id": 230 }, "minecraft:snow": { - "protocol_id": 262 - }, - "minecraft:snow_block": { - "protocol_id": 264 - }, - "minecraft:snowball": { - "protocol_id": 817 - }, - "minecraft:soul_campfire": { - "protocol_id": 1103 - }, - "minecraft:soul_lantern": { - "protocol_id": 1099 - }, - "minecraft:soul_sand": { - "protocol_id": 281 - }, - "minecraft:soul_soil": { - "protocol_id": 282 - }, - "minecraft:soul_torch": { - "protocol_id": 286 - }, - "minecraft:spawner": { - "protocol_id": 255 - }, - "minecraft:spectral_arrow": { - "protocol_id": 1049 - }, - "minecraft:spider_eye": { - "protocol_id": 904 - }, - "minecraft:spider_spawn_egg": { - "protocol_id": 962 - }, - "minecraft:splash_potion": { - "protocol_id": 1048 - }, - "minecraft:sponge": { - "protocol_id": 151 - }, - "minecraft:spore_blossom": { - "protocol_id": 196 - }, - "minecraft:spruce_boat": { - "protocol_id": 700 - }, - "minecraft:spruce_button": { - "protocol_id": 635 - }, - "minecraft:spruce_chest_boat": { - "protocol_id": 701 - }, - "minecraft:spruce_door": { - "protocol_id": 658 - }, - "minecraft:spruce_fence": { "protocol_id": 269 }, + "minecraft:snow_block": { + "protocol_id": 271 + }, + "minecraft:snow_golem_spawn_egg": { + "protocol_id": 993 + }, + "minecraft:snowball": { + "protocol_id": 845 + }, + "minecraft:soul_campfire": { + "protocol_id": 1137 + }, + "minecraft:soul_lantern": { + "protocol_id": 1133 + }, + "minecraft:soul_sand": { + "protocol_id": 289 + }, + "minecraft:soul_soil": { + "protocol_id": 290 + }, + "minecraft:soul_torch": { + "protocol_id": 294 + }, + "minecraft:spawner": { + "protocol_id": 262 + }, + "minecraft:spectral_arrow": { + "protocol_id": 1083 + }, + "minecraft:spider_eye": { + "protocol_id": 932 + }, + "minecraft:spider_spawn_egg": { + "protocol_id": 994 + }, + "minecraft:splash_potion": { + "protocol_id": 1082 + }, + "minecraft:sponge": { + "protocol_id": 155 + }, + "minecraft:spore_blossom": { + "protocol_id": 200 + }, + "minecraft:spruce_boat": { + "protocol_id": 715 + }, + "minecraft:spruce_button": { + "protocol_id": 645 + }, + "minecraft:spruce_chest_boat": { + "protocol_id": 716 + }, + "minecraft:spruce_door": { + "protocol_id": 670 + }, + "minecraft:spruce_fence": { + "protocol_id": 276 + }, "minecraft:spruce_fence_gate": { - "protocol_id": 677 + "protocol_id": 691 + }, + "minecraft:spruce_hanging_sign": { + "protocol_id": 832 }, "minecraft:spruce_leaves": { - "protocol_id": 143 + "protocol_id": 147 }, "minecraft:spruce_log": { - "protocol_id": 105 + "protocol_id": 107 }, "minecraft:spruce_planks": { "protocol_id": 24 }, "minecraft:spruce_pressure_plate": { - "protocol_id": 648 + "protocol_id": 659 }, "minecraft:spruce_sapling": { - "protocol_id": 33 + "protocol_id": 35 }, "minecraft:spruce_sign": { - "protocol_id": 805 + "protocol_id": 822 }, "minecraft:spruce_slab": { - "protocol_id": 215 + "protocol_id": 219 }, "minecraft:spruce_stairs": { - "protocol_id": 339 + "protocol_id": 347 }, "minecraft:spruce_trapdoor": { - "protocol_id": 668 + "protocol_id": 681 }, "minecraft:spruce_wood": { - "protocol_id": 134 + "protocol_id": 138 }, "minecraft:spyglass": { - "protocol_id": 838 + "protocol_id": 866 }, "minecraft:squid_spawn_egg": { - "protocol_id": 963 + "protocol_id": 995 }, "minecraft:stick": { - "protocol_id": 765 + "protocol_id": 782 }, "minecraft:sticky_piston": { - "protocol_id": 614 + "protocol_id": 624 }, "minecraft:stone": { "protocol_id": 1 }, "minecraft:stone_axe": { - "protocol_id": 743 + "protocol_id": 760 }, "minecraft:stone_brick_slab": { - "protocol_id": 230 + "protocol_id": 236 }, "minecraft:stone_brick_stairs": { - "protocol_id": 317 + "protocol_id": 325 }, "minecraft:stone_brick_wall": { - "protocol_id": 356 + "protocol_id": 366 }, "minecraft:stone_bricks": { - "protocol_id": 295 + "protocol_id": 303 }, "minecraft:stone_button": { - "protocol_id": 632 + "protocol_id": 642 }, "minecraft:stone_hoe": { - "protocol_id": 744 + "protocol_id": 761 }, "minecraft:stone_pickaxe": { - "protocol_id": 742 + "protocol_id": 759 }, "minecraft:stone_pressure_plate": { - "protocol_id": 643 + "protocol_id": 654 }, "minecraft:stone_shovel": { - "protocol_id": 741 + "protocol_id": 758 }, "minecraft:stone_slab": { - "protocol_id": 223 + "protocol_id": 229 }, "minecraft:stone_stairs": { - "protocol_id": 578 + "protocol_id": 588 }, "minecraft:stone_sword": { - "protocol_id": 740 + "protocol_id": 757 }, "minecraft:stonecutter": { - "protocol_id": 1096 + "protocol_id": 1130 }, "minecraft:stray_spawn_egg": { - "protocol_id": 964 + "protocol_id": 996 }, "minecraft:strider_spawn_egg": { - "protocol_id": 965 + "protocol_id": 997 }, "minecraft:string": { - "protocol_id": 768 + "protocol_id": 785 }, "minecraft:stripped_acacia_log": { - "protocol_id": 119 - }, - "minecraft:stripped_acacia_wood": { - "protocol_id": 128 - }, - "minecraft:stripped_birch_log": { - "protocol_id": 117 - }, - "minecraft:stripped_birch_wood": { - "protocol_id": 126 - }, - "minecraft:stripped_crimson_hyphae": { - "protocol_id": 131 - }, - "minecraft:stripped_crimson_stem": { "protocol_id": 122 }, - "minecraft:stripped_dark_oak_log": { + "minecraft:stripped_acacia_wood": { + "protocol_id": 131 + }, + "minecraft:stripped_bamboo_block": { + "protocol_id": 136 + }, + "minecraft:stripped_birch_log": { "protocol_id": 120 }, - "minecraft:stripped_dark_oak_wood": { + "minecraft:stripped_birch_wood": { "protocol_id": 129 }, - "minecraft:stripped_jungle_log": { - "protocol_id": 118 + "minecraft:stripped_crimson_hyphae": { + "protocol_id": 134 }, - "minecraft:stripped_jungle_wood": { - "protocol_id": 127 - }, - "minecraft:stripped_mangrove_log": { - "protocol_id": 121 - }, - "minecraft:stripped_mangrove_wood": { - "protocol_id": 130 - }, - "minecraft:stripped_oak_log": { - "protocol_id": 115 - }, - "minecraft:stripped_oak_wood": { - "protocol_id": 124 - }, - "minecraft:stripped_spruce_log": { - "protocol_id": 116 - }, - "minecraft:stripped_spruce_wood": { + "minecraft:stripped_crimson_stem": { "protocol_id": 125 }, - "minecraft:stripped_warped_hyphae": { - "protocol_id": 132 - }, - "minecraft:stripped_warped_stem": { + "minecraft:stripped_dark_oak_log": { "protocol_id": 123 }, + "minecraft:stripped_dark_oak_wood": { + "protocol_id": 132 + }, + "minecraft:stripped_jungle_log": { + "protocol_id": 121 + }, + "minecraft:stripped_jungle_wood": { + "protocol_id": 130 + }, + "minecraft:stripped_mangrove_log": { + "protocol_id": 124 + }, + "minecraft:stripped_mangrove_wood": { + "protocol_id": 133 + }, + "minecraft:stripped_oak_log": { + "protocol_id": 118 + }, + "minecraft:stripped_oak_wood": { + "protocol_id": 127 + }, + "minecraft:stripped_spruce_log": { + "protocol_id": 119 + }, + "minecraft:stripped_spruce_wood": { + "protocol_id": 128 + }, + "minecraft:stripped_warped_hyphae": { + "protocol_id": 135 + }, + "minecraft:stripped_warped_stem": { + "protocol_id": 126 + }, "minecraft:structure_block": { - "protocol_id": 712 + "protocol_id": 729 }, "minecraft:structure_void": { - "protocol_id": 473 + "protocol_id": 483 }, "minecraft:sugar": { - "protocol_id": 867 + "protocol_id": 895 }, "minecraft:sugar_cane": { - "protocol_id": 206 + "protocol_id": 210 }, "minecraft:sunflower": { - "protocol_id": 417 + "protocol_id": 427 }, "minecraft:suspicious_stew": { - "protocol_id": 1079 + "protocol_id": 1113 }, "minecraft:sweet_berries": { - "protocol_id": 1100 + "protocol_id": 1134 }, "minecraft:tadpole_bucket": { - "protocol_id": 825 + "protocol_id": 853 }, "minecraft:tadpole_spawn_egg": { - "protocol_id": 966 + "protocol_id": 998 }, "minecraft:tall_grass": { - "protocol_id": 421 + "protocol_id": 431 }, "minecraft:target": { - "protocol_id": 622 + "protocol_id": 632 }, "minecraft:terracotta": { - "protocol_id": 414 + "protocol_id": 424 }, "minecraft:tinted_glass": { - "protocol_id": 154 + "protocol_id": 158 }, "minecraft:tipped_arrow": { - "protocol_id": 1050 + "protocol_id": 1084 }, "minecraft:tnt": { - "protocol_id": 629 + "protocol_id": 639 }, "minecraft:tnt_minecart": { - "protocol_id": 693 + "protocol_id": 708 }, "minecraft:torch": { - "protocol_id": 248 + "protocol_id": 255 }, "minecraft:totem_of_undying": { - "protocol_id": 1053 + "protocol_id": 1087 }, "minecraft:trader_llama_spawn_egg": { - "protocol_id": 967 + "protocol_id": 999 }, "minecraft:trapped_chest": { - "protocol_id": 628 + "protocol_id": 638 }, "minecraft:trident": { - "protocol_id": 1074 + "protocol_id": 1108 }, "minecraft:tripwire_hook": { - "protocol_id": 627 + "protocol_id": 637 }, "minecraft:tropical_fish": { - "protocol_id": 842 + "protocol_id": 870 }, "minecraft:tropical_fish_bucket": { - "protocol_id": 823 + "protocol_id": 851 }, "minecraft:tropical_fish_spawn_egg": { - "protocol_id": 968 + "protocol_id": 1000 }, "minecraft:tube_coral": { - "protocol_id": 550 + "protocol_id": 560 }, "minecraft:tube_coral_block": { - "protocol_id": 545 + "protocol_id": 555 }, "minecraft:tube_coral_fan": { - "protocol_id": 560 + "protocol_id": 570 }, "minecraft:tuff": { "protocol_id": 12 }, "minecraft:turtle_egg": { - "protocol_id": 539 + "protocol_id": 549 }, "minecraft:turtle_helmet": { - "protocol_id": 714 + "protocol_id": 731 }, "minecraft:turtle_spawn_egg": { - "protocol_id": 969 + "protocol_id": 1001 }, "minecraft:twisting_vines": { - "protocol_id": 205 + "protocol_id": 209 }, "minecraft:verdant_froglight": { - "protocol_id": 1148 + "protocol_id": 1182 }, "minecraft:vex_spawn_egg": { - "protocol_id": 970 + "protocol_id": 1002 }, "minecraft:villager_spawn_egg": { - "protocol_id": 971 + "protocol_id": 1003 }, "minecraft:vindicator_spawn_egg": { - "protocol_id": 972 + "protocol_id": 1004 }, "minecraft:vine": { - "protocol_id": 314 + "protocol_id": 322 }, "minecraft:wandering_trader_spawn_egg": { - "protocol_id": 973 + "protocol_id": 1005 }, "minecraft:warden_spawn_egg": { - "protocol_id": 974 + "protocol_id": 1006 }, "minecraft:warped_button": { - "protocol_id": 642 + "protocol_id": 653 }, "minecraft:warped_door": { - "protocol_id": 665 + "protocol_id": 678 }, "minecraft:warped_fence": { - "protocol_id": 276 + "protocol_id": 284 }, "minecraft:warped_fence_gate": { - "protocol_id": 684 + "protocol_id": 699 }, "minecraft:warped_fungus": { - "protocol_id": 200 + "protocol_id": 204 }, "minecraft:warped_fungus_on_a_stick": { - "protocol_id": 696 + "protocol_id": 711 + }, + "minecraft:warped_hanging_sign": { + "protocol_id": 840 }, "minecraft:warped_hyphae": { - "protocol_id": 141 + "protocol_id": 145 }, "minecraft:warped_nylium": { "protocol_id": 21 }, "minecraft:warped_planks": { - "protocol_id": 31 + "protocol_id": 32 }, "minecraft:warped_pressure_plate": { - "protocol_id": 655 + "protocol_id": 667 }, "minecraft:warped_roots": { - "protocol_id": 202 + "protocol_id": 206 }, "minecraft:warped_sign": { - "protocol_id": 812 + "protocol_id": 830 }, "minecraft:warped_slab": { - "protocol_id": 222 + "protocol_id": 228 }, "minecraft:warped_stairs": { - "protocol_id": 346 + "protocol_id": 356 }, "minecraft:warped_stem": { - "protocol_id": 114 + "protocol_id": 116 }, "minecraft:warped_trapdoor": { - "protocol_id": 675 + "protocol_id": 689 }, "minecraft:warped_wart_block": { - "protocol_id": 470 + "protocol_id": 480 }, "minecraft:water_bucket": { - "protocol_id": 814 + "protocol_id": 842 }, "minecraft:waxed_copper_block": { - "protocol_id": 88 - }, - "minecraft:waxed_cut_copper": { - "protocol_id": 92 - }, - "minecraft:waxed_cut_copper_slab": { - "protocol_id": 100 - }, - "minecraft:waxed_cut_copper_stairs": { - "protocol_id": 96 - }, - "minecraft:waxed_exposed_copper": { - "protocol_id": 89 - }, - "minecraft:waxed_exposed_cut_copper": { - "protocol_id": 93 - }, - "minecraft:waxed_exposed_cut_copper_slab": { - "protocol_id": 101 - }, - "minecraft:waxed_exposed_cut_copper_stairs": { - "protocol_id": 97 - }, - "minecraft:waxed_oxidized_copper": { - "protocol_id": 91 - }, - "minecraft:waxed_oxidized_cut_copper": { - "protocol_id": 95 - }, - "minecraft:waxed_oxidized_cut_copper_slab": { - "protocol_id": 103 - }, - "minecraft:waxed_oxidized_cut_copper_stairs": { - "protocol_id": 99 - }, - "minecraft:waxed_weathered_copper": { "protocol_id": 90 }, - "minecraft:waxed_weathered_cut_copper": { + "minecraft:waxed_cut_copper": { "protocol_id": 94 }, - "minecraft:waxed_weathered_cut_copper_slab": { + "minecraft:waxed_cut_copper_slab": { "protocol_id": 102 }, - "minecraft:waxed_weathered_cut_copper_stairs": { + "minecraft:waxed_cut_copper_stairs": { "protocol_id": 98 }, + "minecraft:waxed_exposed_copper": { + "protocol_id": 91 + }, + "minecraft:waxed_exposed_cut_copper": { + "protocol_id": 95 + }, + "minecraft:waxed_exposed_cut_copper_slab": { + "protocol_id": 103 + }, + "minecraft:waxed_exposed_cut_copper_stairs": { + "protocol_id": 99 + }, + "minecraft:waxed_oxidized_copper": { + "protocol_id": 93 + }, + "minecraft:waxed_oxidized_cut_copper": { + "protocol_id": 97 + }, + "minecraft:waxed_oxidized_cut_copper_slab": { + "protocol_id": 105 + }, + "minecraft:waxed_oxidized_cut_copper_stairs": { + "protocol_id": 101 + }, + "minecraft:waxed_weathered_copper": { + "protocol_id": 92 + }, + "minecraft:waxed_weathered_cut_copper": { + "protocol_id": 96 + }, + "minecraft:waxed_weathered_cut_copper_slab": { + "protocol_id": 104 + }, + "minecraft:waxed_weathered_cut_copper_stairs": { + "protocol_id": 100 + }, "minecraft:weathered_copper": { - "protocol_id": 74 + "protocol_id": 76 }, "minecraft:weathered_cut_copper": { - "protocol_id": 78 + "protocol_id": 80 }, "minecraft:weathered_cut_copper_slab": { - "protocol_id": 86 + "protocol_id": 88 }, "minecraft:weathered_cut_copper_stairs": { - "protocol_id": 82 + "protocol_id": 84 }, "minecraft:weeping_vines": { - "protocol_id": 204 + "protocol_id": 208 }, "minecraft:wet_sponge": { - "protocol_id": 152 + "protocol_id": 156 }, "minecraft:wheat": { - "protocol_id": 772 + "protocol_id": 789 }, "minecraft:wheat_seeds": { - "protocol_id": 771 + "protocol_id": 788 }, "minecraft:white_banner": { - "protocol_id": 1025 + "protocol_id": 1059 }, "minecraft:white_bed": { - "protocol_id": 869 + "protocol_id": 897 }, "minecraft:white_candle": { - "protocol_id": 1126 + "protocol_id": 1160 }, "minecraft:white_carpet": { - "protocol_id": 398 + "protocol_id": 408 }, "minecraft:white_concrete": { - "protocol_id": 507 + "protocol_id": 517 }, "minecraft:white_concrete_powder": { - "protocol_id": 523 + "protocol_id": 533 }, "minecraft:white_dye": { - "protocol_id": 849 + "protocol_id": 877 }, "minecraft:white_glazed_terracotta": { - "protocol_id": 491 + "protocol_id": 501 }, "minecraft:white_shulker_box": { - "protocol_id": 475 + "protocol_id": 485 }, "minecraft:white_stained_glass": { - "protocol_id": 423 + "protocol_id": 433 }, "minecraft:white_stained_glass_pane": { - "protocol_id": 439 + "protocol_id": 449 }, "minecraft:white_terracotta": { - "protocol_id": 379 + "protocol_id": 389 }, "minecraft:white_tulip": { - "protocol_id": 190 + "protocol_id": 194 }, "minecraft:white_wool": { - "protocol_id": 167 - }, - "minecraft:witch_spawn_egg": { - "protocol_id": 975 - }, - "minecraft:wither_rose": { - "protocol_id": 195 - }, - "minecraft:wither_skeleton_skull": { - "protocol_id": 997 - }, - "minecraft:wither_skeleton_spawn_egg": { - "protocol_id": 976 - }, - "minecraft:wolf_spawn_egg": { - "protocol_id": 977 - }, - "minecraft:wooden_axe": { - "protocol_id": 738 - }, - "minecraft:wooden_hoe": { - "protocol_id": 739 - }, - "minecraft:wooden_pickaxe": { - "protocol_id": 737 - }, - "minecraft:wooden_shovel": { - "protocol_id": 736 - }, - "minecraft:wooden_sword": { - "protocol_id": 735 - }, - "minecraft:writable_book": { - "protocol_id": 985 - }, - "minecraft:written_book": { - "protocol_id": 986 - }, - "minecraft:yellow_banner": { - "protocol_id": 1029 - }, - "minecraft:yellow_bed": { - "protocol_id": 873 - }, - "minecraft:yellow_candle": { - "protocol_id": 1130 - }, - "minecraft:yellow_carpet": { - "protocol_id": 402 - }, - "minecraft:yellow_concrete": { - "protocol_id": 511 - }, - "minecraft:yellow_concrete_powder": { - "protocol_id": 527 - }, - "minecraft:yellow_dye": { - "protocol_id": 853 - }, - "minecraft:yellow_glazed_terracotta": { - "protocol_id": 495 - }, - "minecraft:yellow_shulker_box": { - "protocol_id": 479 - }, - "minecraft:yellow_stained_glass": { - "protocol_id": 427 - }, - "minecraft:yellow_stained_glass_pane": { - "protocol_id": 443 - }, - "minecraft:yellow_terracotta": { - "protocol_id": 383 - }, - "minecraft:yellow_wool": { "protocol_id": 171 }, + "minecraft:witch_spawn_egg": { + "protocol_id": 1007 + }, + "minecraft:wither_rose": { + "protocol_id": 199 + }, + "minecraft:wither_skeleton_skull": { + "protocol_id": 1030 + }, + "minecraft:wither_skeleton_spawn_egg": { + "protocol_id": 1009 + }, + "minecraft:wither_spawn_egg": { + "protocol_id": 1008 + }, + "minecraft:wolf_spawn_egg": { + "protocol_id": 1010 + }, + "minecraft:wooden_axe": { + "protocol_id": 755 + }, + "minecraft:wooden_hoe": { + "protocol_id": 756 + }, + "minecraft:wooden_pickaxe": { + "protocol_id": 754 + }, + "minecraft:wooden_shovel": { + "protocol_id": 753 + }, + "minecraft:wooden_sword": { + "protocol_id": 752 + }, + "minecraft:writable_book": { + "protocol_id": 1018 + }, + "minecraft:written_book": { + "protocol_id": 1019 + }, + "minecraft:yellow_banner": { + "protocol_id": 1063 + }, + "minecraft:yellow_bed": { + "protocol_id": 901 + }, + "minecraft:yellow_candle": { + "protocol_id": 1164 + }, + "minecraft:yellow_carpet": { + "protocol_id": 412 + }, + "minecraft:yellow_concrete": { + "protocol_id": 521 + }, + "minecraft:yellow_concrete_powder": { + "protocol_id": 537 + }, + "minecraft:yellow_dye": { + "protocol_id": 881 + }, + "minecraft:yellow_glazed_terracotta": { + "protocol_id": 505 + }, + "minecraft:yellow_shulker_box": { + "protocol_id": 489 + }, + "minecraft:yellow_stained_glass": { + "protocol_id": 437 + }, + "minecraft:yellow_stained_glass_pane": { + "protocol_id": 453 + }, + "minecraft:yellow_terracotta": { + "protocol_id": 393 + }, + "minecraft:yellow_wool": { + "protocol_id": 175 + }, "minecraft:zoglin_spawn_egg": { - "protocol_id": 978 + "protocol_id": 1011 }, "minecraft:zombie_head": { - "protocol_id": 999 + "protocol_id": 1032 }, "minecraft:zombie_horse_spawn_egg": { - "protocol_id": 980 + "protocol_id": 1013 }, "minecraft:zombie_spawn_egg": { - "protocol_id": 979 + "protocol_id": 1012 }, "minecraft:zombie_villager_spawn_egg": { - "protocol_id": 981 + "protocol_id": 1014 }, "minecraft:zombified_piglin_spawn_egg": { - "protocol_id": 982 + "protocol_id": 1015 } }, "protocol_id": 7 @@ -8098,16 +8326,16 @@ "default": "minecraft:dummy", "entries": { "minecraft:admiring_disabled": { - "protocol_id": 56 + "protocol_id": 57 }, "minecraft:admiring_item": { - "protocol_id": 53 + "protocol_id": 54 }, "minecraft:angry_at": { - "protocol_id": 51 + "protocol_id": 52 }, "minecraft:ate_recently": { - "protocol_id": 71 + "protocol_id": 72 }, "minecraft:attack_cooling_down": { "protocol_id": 15 @@ -8125,19 +8353,19 @@ "protocol_id": 30 }, "minecraft:celebrate_location": { - "protocol_id": 58 - }, - "minecraft:dancing": { "protocol_id": 59 }, + "minecraft:dancing": { + "protocol_id": 60 + }, "minecraft:dig_cooldown": { - "protocol_id": 80 + "protocol_id": 81 }, "minecraft:disable_walk_to_admire_item": { - "protocol_id": 55 + "protocol_id": 56 }, "minecraft:disturbance_location": { - "protocol_id": 75 + "protocol_id": 76 }, "minecraft:doors_to_close": { "protocol_id": 21 @@ -8145,11 +8373,14 @@ "minecraft:dummy": { "protocol_id": 0 }, + "minecraft:gaze_cooldown_ticks": { + "protocol_id": 41 + }, "minecraft:golem_detected_recently": { "protocol_id": 31 }, "minecraft:has_hunting_cooldown": { - "protocol_id": 44 + "protocol_id": 45 }, "minecraft:heard_bell_time": { "protocol_id": 29 @@ -8161,7 +8392,7 @@ "protocol_id": 1 }, "minecraft:hunted_recently": { - "protocol_id": 57 + "protocol_id": 58 }, "minecraft:hurt_by": { "protocol_id": 23 @@ -8176,25 +8407,25 @@ "protocol_id": 16 }, "minecraft:is_emerging": { - "protocol_id": 78 + "protocol_id": 79 }, "minecraft:is_in_water": { - "protocol_id": 47 - }, - "minecraft:is_panicking": { - "protocol_id": 49 - }, - "minecraft:is_pregnant": { "protocol_id": 48 }, + "minecraft:is_panicking": { + "protocol_id": 50 + }, + "minecraft:is_pregnant": { + "protocol_id": 49 + }, "minecraft:is_sniffing": { - "protocol_id": 77 + "protocol_id": 78 }, "minecraft:is_tempted": { - "protocol_id": 41 + "protocol_id": 42 }, "minecraft:item_pickup_cooldown_ticks": { - "protocol_id": 91 + "protocol_id": 92 }, "minecraft:job_site": { "protocol_id": 2 @@ -8209,19 +8440,19 @@ "protocol_id": 34 }, "minecraft:liked_noteblock": { - "protocol_id": 89 - }, - "minecraft:liked_noteblock_cooldown_ticks": { "protocol_id": 90 }, + "minecraft:liked_noteblock_cooldown_ticks": { + "protocol_id": 91 + }, "minecraft:liked_player": { - "protocol_id": 88 + "protocol_id": 89 }, "minecraft:long_jump_cooling_down": { - "protocol_id": 42 + "protocol_id": 43 }, "minecraft:long_jump_mid_jump": { - "protocol_id": 43 + "protocol_id": 44 }, "minecraft:look_target": { "protocol_id": 13 @@ -8233,7 +8464,7 @@ "protocol_id": 6 }, "minecraft:nearby_adult_piglins": { - "protocol_id": 63 + "protocol_id": 64 }, "minecraft:nearest_attackable": { "protocol_id": 27 @@ -8245,34 +8476,34 @@ "protocol_id": 26 }, "minecraft:nearest_player_holding_wanted_item": { - "protocol_id": 70 + "protocol_id": 71 }, "minecraft:nearest_players": { "protocol_id": 9 }, "minecraft:nearest_repellent": { - "protocol_id": 72 + "protocol_id": 73 }, "minecraft:nearest_targetable_player_not_wearing_gold": { - "protocol_id": 62 + "protocol_id": 63 }, "minecraft:nearest_visible_adult": { "protocol_id": 35 }, "minecraft:nearest_visible_adult_hoglins": { - "protocol_id": 65 - }, - "minecraft:nearest_visible_adult_piglin": { "protocol_id": 66 }, + "minecraft:nearest_visible_adult_piglin": { + "protocol_id": 67 + }, "minecraft:nearest_visible_adult_piglins": { - "protocol_id": 64 + "protocol_id": 65 }, "minecraft:nearest_visible_baby_hoglin": { - "protocol_id": 61 + "protocol_id": 62 }, "minecraft:nearest_visible_huntable_hoglin": { - "protocol_id": 60 + "protocol_id": 61 }, "minecraft:nearest_visible_nemesis": { "protocol_id": 37 @@ -8287,10 +8518,10 @@ "protocol_id": 36 }, "minecraft:nearest_visible_zombified": { - "protocol_id": 67 + "protocol_id": 68 }, "minecraft:pacified": { - "protocol_id": 73 + "protocol_id": 74 }, "minecraft:path": { "protocol_id": 19 @@ -8302,41 +8533,41 @@ "protocol_id": 3 }, "minecraft:ram_cooldown_ticks": { - "protocol_id": 45 - }, - "minecraft:ram_target": { "protocol_id": 46 }, + "minecraft:ram_target": { + "protocol_id": 47 + }, "minecraft:recent_projectile": { - "protocol_id": 76 + "protocol_id": 77 }, "minecraft:ride_target": { "protocol_id": 18 }, "minecraft:roar_sound_cooldown": { - "protocol_id": 81 + "protocol_id": 82 }, "minecraft:roar_sound_delay": { - "protocol_id": 79 + "protocol_id": 80 }, "minecraft:roar_target": { - "protocol_id": 74 + "protocol_id": 75 }, "minecraft:secondary_job_site": { "protocol_id": 5 }, "minecraft:sniff_cooldown": { - "protocol_id": 82 + "protocol_id": 83 }, "minecraft:sonic_boom_cooldown": { - "protocol_id": 85 - }, - "minecraft:sonic_boom_sound_cooldown": { "protocol_id": 86 }, - "minecraft:sonic_boom_sound_delay": { + "minecraft:sonic_boom_sound_cooldown": { "protocol_id": 87 }, + "minecraft:sonic_boom_sound_delay": { + "protocol_id": 88 + }, "minecraft:temptation_cooldown_ticks": { "protocol_id": 40 }, @@ -8344,25 +8575,25 @@ "protocol_id": 39 }, "minecraft:time_trying_to_reach_admire_item": { - "protocol_id": 54 + "protocol_id": 55 }, "minecraft:touch_cooldown": { - "protocol_id": 83 - }, - "minecraft:universal_anger": { - "protocol_id": 52 - }, - "minecraft:unreachable_tongue_targets": { - "protocol_id": 50 - }, - "minecraft:vibration_cooldown": { "protocol_id": 84 }, + "minecraft:universal_anger": { + "protocol_id": 53 + }, + "minecraft:unreachable_tongue_targets": { + "protocol_id": 51 + }, + "minecraft:vibration_cooldown": { + "protocol_id": 85 + }, "minecraft:visible_adult_hoglin_count": { - "protocol_id": 69 + "protocol_id": 70 }, "minecraft:visible_adult_piglin_count": { - "protocol_id": 68 + "protocol_id": 69 }, "minecraft:visible_mobs": { "protocol_id": 7 @@ -9305,11 +9536,14 @@ "minecraft:axolotl_temptations": { "protocol_id": 15 }, + "minecraft:camel_temptations": { + "protocol_id": 18 + }, "minecraft:dummy": { "protocol_id": 0 }, "minecraft:frog_attackables": { - "protocol_id": 18 + "protocol_id": 19 }, "minecraft:frog_temptations": { "protocol_id": 17 @@ -9327,7 +9561,7 @@ "protocol_id": 5 }, "minecraft:is_in_water": { - "protocol_id": 19 + "protocol_id": 20 }, "minecraft:nearest_adult": { "protocol_id": 13 @@ -9360,7 +9594,7 @@ "protocol_id": 6 }, "minecraft:warden_entity_sensor": { - "protocol_id": 20 + "protocol_id": 21 } }, "protocol_id": 27 @@ -9559,1466 +9793,1646 @@ "minecraft:block.bamboo_sapling.place": { "protocol_id": 96 }, - "minecraft:block.barrel.close": { + "minecraft:block.bamboo_wood.break": { "protocol_id": 97 }, - "minecraft:block.barrel.open": { + "minecraft:block.bamboo_wood.fall": { "protocol_id": 98 }, - "minecraft:block.basalt.break": { + "minecraft:block.bamboo_wood.hit": { "protocol_id": 99 }, - "minecraft:block.basalt.fall": { - "protocol_id": 103 - }, - "minecraft:block.basalt.hit": { - "protocol_id": 102 - }, - "minecraft:block.basalt.place": { - "protocol_id": 101 - }, - "minecraft:block.basalt.step": { + "minecraft:block.bamboo_wood.place": { "protocol_id": 100 }, - "minecraft:block.beacon.activate": { - "protocol_id": 109 + "minecraft:block.bamboo_wood.step": { + "protocol_id": 101 }, - "minecraft:block.beacon.ambient": { + "minecraft:block.bamboo_wood_button.click_off": { + "protocol_id": 106 + }, + "minecraft:block.bamboo_wood_button.click_on": { + "protocol_id": 107 + }, + "minecraft:block.bamboo_wood_door.close": { + "protocol_id": 102 + }, + "minecraft:block.bamboo_wood_door.open": { + "protocol_id": 103 + }, + "minecraft:block.bamboo_wood_fence_gate.close": { "protocol_id": 110 }, - "minecraft:block.beacon.deactivate": { + "minecraft:block.bamboo_wood_fence_gate.open": { "protocol_id": 111 }, - "minecraft:block.beacon.power_select": { + "minecraft:block.bamboo_wood_hanging_sign.break": { + "protocol_id": 553 + }, + "minecraft:block.bamboo_wood_hanging_sign.fall": { + "protocol_id": 554 + }, + "minecraft:block.bamboo_wood_hanging_sign.hit": { + "protocol_id": 555 + }, + "minecraft:block.bamboo_wood_hanging_sign.place": { + "protocol_id": 556 + }, + "minecraft:block.bamboo_wood_hanging_sign.step": { + "protocol_id": 552 + }, + "minecraft:block.bamboo_wood_pressure_plate.click_off": { + "protocol_id": 108 + }, + "minecraft:block.bamboo_wood_pressure_plate.click_on": { + "protocol_id": 109 + }, + "minecraft:block.bamboo_wood_trapdoor.close": { + "protocol_id": 104 + }, + "minecraft:block.bamboo_wood_trapdoor.open": { + "protocol_id": 105 + }, + "minecraft:block.barrel.close": { "protocol_id": 112 }, - "minecraft:block.beehive.drip": { - "protocol_id": 119 + "minecraft:block.barrel.open": { + "protocol_id": 113 }, - "minecraft:block.beehive.enter": { - "protocol_id": 120 + "minecraft:block.basalt.break": { + "protocol_id": 114 }, - "minecraft:block.beehive.exit": { - "protocol_id": 121 + "minecraft:block.basalt.fall": { + "protocol_id": 118 }, - "minecraft:block.beehive.shear": { - "protocol_id": 122 + "minecraft:block.basalt.hit": { + "protocol_id": 117 }, - "minecraft:block.beehive.work": { - "protocol_id": 123 + "minecraft:block.basalt.place": { + "protocol_id": 116 }, - "minecraft:block.bell.resonate": { - "protocol_id": 125 + "minecraft:block.basalt.step": { + "protocol_id": 115 }, - "minecraft:block.bell.use": { + "minecraft:block.beacon.activate": { "protocol_id": 124 }, - "minecraft:block.big_dripleaf.break": { + "minecraft:block.beacon.ambient": { + "protocol_id": 125 + }, + "minecraft:block.beacon.deactivate": { "protocol_id": 126 }, - "minecraft:block.big_dripleaf.fall": { + "minecraft:block.beacon.power_select": { "protocol_id": 127 }, - "minecraft:block.big_dripleaf.hit": { - "protocol_id": 128 + "minecraft:block.beehive.drip": { + "protocol_id": 134 }, - "minecraft:block.big_dripleaf.place": { - "protocol_id": 129 + "minecraft:block.beehive.enter": { + "protocol_id": 135 }, - "minecraft:block.big_dripleaf.step": { - "protocol_id": 130 + "minecraft:block.beehive.exit": { + "protocol_id": 136 }, - "minecraft:block.big_dripleaf.tilt_down": { - "protocol_id": 307 + "minecraft:block.beehive.shear": { + "protocol_id": 137 }, - "minecraft:block.big_dripleaf.tilt_up": { - "protocol_id": 308 - }, - "minecraft:block.blastfurnace.fire_crackle": { - "protocol_id": 146 - }, - "minecraft:block.bone_block.break": { + "minecraft:block.beehive.work": { "protocol_id": 138 }, - "minecraft:block.bone_block.fall": { - "protocol_id": 139 - }, - "minecraft:block.bone_block.hit": { + "minecraft:block.bell.resonate": { "protocol_id": 140 }, - "minecraft:block.bone_block.place": { + "minecraft:block.bell.use": { + "protocol_id": 139 + }, + "minecraft:block.big_dripleaf.break": { "protocol_id": 141 }, - "minecraft:block.bone_block.step": { + "minecraft:block.big_dripleaf.fall": { "protocol_id": 142 }, - "minecraft:block.brewing_stand.brew": { - "protocol_id": 150 + "minecraft:block.big_dripleaf.hit": { + "protocol_id": 143 }, - "minecraft:block.bubble_column.bubble_pop": { - "protocol_id": 151 + "minecraft:block.big_dripleaf.place": { + "protocol_id": 144 }, - "minecraft:block.bubble_column.upwards_ambient": { - "protocol_id": 152 + "minecraft:block.big_dripleaf.step": { + "protocol_id": 145 }, - "minecraft:block.bubble_column.upwards_inside": { + "minecraft:block.big_dripleaf.tilt_down": { + "protocol_id": 342 + }, + "minecraft:block.big_dripleaf.tilt_up": { + "protocol_id": 343 + }, + "minecraft:block.blastfurnace.fire_crackle": { + "protocol_id": 161 + }, + "minecraft:block.bone_block.break": { "protocol_id": 153 }, - "minecraft:block.bubble_column.whirlpool_ambient": { + "minecraft:block.bone_block.fall": { "protocol_id": 154 }, - "minecraft:block.bubble_column.whirlpool_inside": { + "minecraft:block.bone_block.hit": { "protocol_id": 155 }, + "minecraft:block.bone_block.place": { + "protocol_id": 156 + }, + "minecraft:block.bone_block.step": { + "protocol_id": 157 + }, + "minecraft:block.brewing_stand.brew": { + "protocol_id": 165 + }, + "minecraft:block.bubble_column.bubble_pop": { + "protocol_id": 166 + }, + "minecraft:block.bubble_column.upwards_ambient": { + "protocol_id": 167 + }, + "minecraft:block.bubble_column.upwards_inside": { + "protocol_id": 168 + }, + "minecraft:block.bubble_column.whirlpool_ambient": { + "protocol_id": 169 + }, + "minecraft:block.bubble_column.whirlpool_inside": { + "protocol_id": 170 + }, "minecraft:block.cake.add_candle": { - "protocol_id": 171 + "protocol_id": 186 }, "minecraft:block.calcite.break": { - "protocol_id": 172 + "protocol_id": 187 }, "minecraft:block.calcite.fall": { - "protocol_id": 176 + "protocol_id": 191 }, "minecraft:block.calcite.hit": { - "protocol_id": 175 + "protocol_id": 190 }, "minecraft:block.calcite.place": { - "protocol_id": 174 + "protocol_id": 189 }, "minecraft:block.calcite.step": { - "protocol_id": 173 + "protocol_id": 188 }, "minecraft:block.campfire.crackle": { - "protocol_id": 177 - }, - "minecraft:block.candle.ambient": { - "protocol_id": 178 - }, - "minecraft:block.candle.break": { - "protocol_id": 179 - }, - "minecraft:block.candle.extinguish": { - "protocol_id": 180 - }, - "minecraft:block.candle.fall": { - "protocol_id": 181 - }, - "minecraft:block.candle.hit": { - "protocol_id": 182 - }, - "minecraft:block.candle.place": { - "protocol_id": 183 - }, - "minecraft:block.candle.step": { - "protocol_id": 184 - }, - "minecraft:block.cave_vines.break": { - "protocol_id": 194 - }, - "minecraft:block.cave_vines.fall": { - "protocol_id": 195 - }, - "minecraft:block.cave_vines.hit": { - "protocol_id": 196 - }, - "minecraft:block.cave_vines.pick_berries": { - "protocol_id": 199 - }, - "minecraft:block.cave_vines.place": { - "protocol_id": 197 - }, - "minecraft:block.cave_vines.step": { - "protocol_id": 198 - }, - "minecraft:block.chain.break": { - "protocol_id": 200 - }, - "minecraft:block.chain.fall": { - "protocol_id": 201 - }, - "minecraft:block.chain.hit": { - "protocol_id": 202 - }, - "minecraft:block.chain.place": { "protocol_id": 203 }, - "minecraft:block.chain.step": { + "minecraft:block.candle.ambient": { "protocol_id": 204 }, - "minecraft:block.chest.close": { + "minecraft:block.candle.break": { "protocol_id": 205 }, - "minecraft:block.chest.locked": { + "minecraft:block.candle.extinguish": { "protocol_id": 206 }, - "minecraft:block.chest.open": { + "minecraft:block.candle.fall": { "protocol_id": 207 }, - "minecraft:block.chorus_flower.death": { - "protocol_id": 213 + "minecraft:block.candle.hit": { + "protocol_id": 208 }, - "minecraft:block.chorus_flower.grow": { - "protocol_id": 214 + "minecraft:block.candle.place": { + "protocol_id": 209 }, - "minecraft:block.comparator.click": { + "minecraft:block.candle.step": { + "protocol_id": 210 + }, + "minecraft:block.cave_vines.break": { "protocol_id": 220 }, - "minecraft:block.composter.empty": { + "minecraft:block.cave_vines.fall": { "protocol_id": 221 }, - "minecraft:block.composter.fill": { + "minecraft:block.cave_vines.hit": { "protocol_id": 222 }, - "minecraft:block.composter.fill_success": { - "protocol_id": 223 - }, - "minecraft:block.composter.ready": { - "protocol_id": 224 - }, - "minecraft:block.conduit.activate": { + "minecraft:block.cave_vines.pick_berries": { "protocol_id": 225 }, - "minecraft:block.conduit.ambient": { + "minecraft:block.cave_vines.place": { + "protocol_id": 223 + }, + "minecraft:block.cave_vines.step": { + "protocol_id": 224 + }, + "minecraft:block.chain.break": { "protocol_id": 226 }, - "minecraft:block.conduit.ambient.short": { + "minecraft:block.chain.fall": { "protocol_id": 227 }, - "minecraft:block.conduit.attack.target": { + "minecraft:block.chain.hit": { "protocol_id": 228 }, - "minecraft:block.conduit.deactivate": { + "minecraft:block.chain.place": { "protocol_id": 229 }, - "minecraft:block.copper.break": { + "minecraft:block.chain.step": { "protocol_id": 230 }, - "minecraft:block.copper.fall": { - "protocol_id": 234 - }, - "minecraft:block.copper.hit": { - "protocol_id": 233 - }, - "minecraft:block.copper.place": { - "protocol_id": 232 - }, - "minecraft:block.copper.step": { + "minecraft:block.chest.close": { "protocol_id": 231 }, - "minecraft:block.coral_block.break": { - "protocol_id": 235 + "minecraft:block.chest.locked": { + "protocol_id": 232 }, - "minecraft:block.coral_block.fall": { - "protocol_id": 236 + "minecraft:block.chest.open": { + "protocol_id": 233 }, - "minecraft:block.coral_block.hit": { - "protocol_id": 237 - }, - "minecraft:block.coral_block.place": { - "protocol_id": 238 - }, - "minecraft:block.coral_block.step": { + "minecraft:block.chiseled_bookshelf.break": { "protocol_id": 239 }, - "minecraft:block.crop.break": { + "minecraft:block.chiseled_bookshelf.fall": { + "protocol_id": 240 + }, + "minecraft:block.chiseled_bookshelf.hit": { + "protocol_id": 241 + }, + "minecraft:block.chiseled_bookshelf.insert": { + "protocol_id": 242 + }, + "minecraft:block.chiseled_bookshelf.insert.enchanted": { + "protocol_id": 243 + }, + "minecraft:block.chiseled_bookshelf.pickup": { + "protocol_id": 245 + }, + "minecraft:block.chiseled_bookshelf.pickup.enchanted": { + "protocol_id": 246 + }, + "minecraft:block.chiseled_bookshelf.place": { + "protocol_id": 247 + }, + "minecraft:block.chiseled_bookshelf.step": { + "protocol_id": 244 + }, + "minecraft:block.chorus_flower.death": { "protocol_id": 248 }, - "minecraft:block.deepslate.break": { - "protocol_id": 263 + "minecraft:block.chorus_flower.grow": { + "protocol_id": 249 }, - "minecraft:block.deepslate.fall": { - "protocol_id": 264 + "minecraft:block.comparator.click": { + "protocol_id": 255 }, - "minecraft:block.deepslate.hit": { - "protocol_id": 265 + "minecraft:block.composter.empty": { + "protocol_id": 256 }, - "minecraft:block.deepslate.place": { - "protocol_id": 266 + "minecraft:block.composter.fill": { + "protocol_id": 257 }, - "minecraft:block.deepslate.step": { - "protocol_id": 267 - }, - "minecraft:block.deepslate_bricks.break": { + "minecraft:block.composter.fill_success": { "protocol_id": 258 }, - "minecraft:block.deepslate_bricks.fall": { + "minecraft:block.composter.ready": { "protocol_id": 259 }, - "minecraft:block.deepslate_bricks.hit": { + "minecraft:block.conduit.activate": { "protocol_id": 260 }, - "minecraft:block.deepslate_bricks.place": { + "minecraft:block.conduit.ambient": { "protocol_id": 261 }, - "minecraft:block.deepslate_bricks.step": { + "minecraft:block.conduit.ambient.short": { "protocol_id": 262 }, - "minecraft:block.deepslate_tiles.break": { - "protocol_id": 268 + "minecraft:block.conduit.attack.target": { + "protocol_id": 263 }, - "minecraft:block.deepslate_tiles.fall": { + "minecraft:block.conduit.deactivate": { + "protocol_id": 264 + }, + "minecraft:block.copper.break": { + "protocol_id": 265 + }, + "minecraft:block.copper.fall": { "protocol_id": 269 }, - "minecraft:block.deepslate_tiles.hit": { + "minecraft:block.copper.hit": { + "protocol_id": 268 + }, + "minecraft:block.copper.place": { + "protocol_id": 267 + }, + "minecraft:block.copper.step": { + "protocol_id": 266 + }, + "minecraft:block.coral_block.break": { "protocol_id": 270 }, - "minecraft:block.deepslate_tiles.place": { + "minecraft:block.coral_block.fall": { "protocol_id": 271 }, - "minecraft:block.deepslate_tiles.step": { + "minecraft:block.coral_block.hit": { "protocol_id": 272 }, - "minecraft:block.dispenser.dispense": { + "minecraft:block.coral_block.place": { "protocol_id": 273 }, - "minecraft:block.dispenser.fail": { + "minecraft:block.coral_block.step": { "protocol_id": 274 }, - "minecraft:block.dispenser.launch": { - "protocol_id": 275 + "minecraft:block.crop.break": { + "protocol_id": 283 }, - "minecraft:block.dripstone_block.break": { - "protocol_id": 292 - }, - "minecraft:block.dripstone_block.fall": { - "protocol_id": 296 - }, - "minecraft:block.dripstone_block.hit": { - "protocol_id": 295 - }, - "minecraft:block.dripstone_block.place": { - "protocol_id": 294 - }, - "minecraft:block.dripstone_block.step": { - "protocol_id": 293 - }, - "minecraft:block.enchantment_table.use": { - "protocol_id": 329 - }, - "minecraft:block.end_gateway.spawn": { - "protocol_id": 352 - }, - "minecraft:block.end_portal.spawn": { - "protocol_id": 354 - }, - "minecraft:block.end_portal_frame.fill": { - "protocol_id": 353 - }, - "minecraft:block.ender_chest.close": { - "protocol_id": 330 - }, - "minecraft:block.ender_chest.open": { - "protocol_id": 331 - }, - "minecraft:block.fence_gate.close": { - "protocol_id": 366 - }, - "minecraft:block.fence_gate.open": { - "protocol_id": 367 - }, - "minecraft:block.fire.ambient": { - "protocol_id": 377 - }, - "minecraft:block.fire.extinguish": { - "protocol_id": 378 - }, - "minecraft:block.flowering_azalea.break": { - "protocol_id": 384 - }, - "minecraft:block.flowering_azalea.fall": { - "protocol_id": 385 - }, - "minecraft:block.flowering_azalea.hit": { - "protocol_id": 386 - }, - "minecraft:block.flowering_azalea.place": { - "protocol_id": 387 - }, - "minecraft:block.flowering_azalea.step": { - "protocol_id": 388 - }, - "minecraft:block.froglight.break": { - "protocol_id": 400 - }, - "minecraft:block.froglight.fall": { - "protocol_id": 401 - }, - "minecraft:block.froglight.hit": { - "protocol_id": 402 - }, - "minecraft:block.froglight.place": { - "protocol_id": 403 - }, - "minecraft:block.froglight.step": { - "protocol_id": 404 - }, - "minecraft:block.frogspawn.break": { - "protocol_id": 406 - }, - "minecraft:block.frogspawn.fall": { - "protocol_id": 407 - }, - "minecraft:block.frogspawn.hatch": { - "protocol_id": 408 - }, - "minecraft:block.frogspawn.hit": { - "protocol_id": 409 - }, - "minecraft:block.frogspawn.place": { - "protocol_id": 410 - }, - "minecraft:block.frogspawn.step": { - "protocol_id": 405 - }, - "minecraft:block.fungus.break": { - "protocol_id": 743 - }, - "minecraft:block.fungus.fall": { - "protocol_id": 747 - }, - "minecraft:block.fungus.hit": { - "protocol_id": 746 - }, - "minecraft:block.fungus.place": { - "protocol_id": 745 - }, - "minecraft:block.fungus.step": { - "protocol_id": 744 - }, - "minecraft:block.furnace.fire_crackle": { - "protocol_id": 424 - }, - "minecraft:block.gilded_blackstone.break": { - "protocol_id": 442 - }, - "minecraft:block.gilded_blackstone.fall": { - "protocol_id": 443 - }, - "minecraft:block.gilded_blackstone.hit": { - "protocol_id": 444 - }, - "minecraft:block.gilded_blackstone.place": { - "protocol_id": 445 - }, - "minecraft:block.gilded_blackstone.step": { - "protocol_id": 446 - }, - "minecraft:block.glass.break": { - "protocol_id": 447 - }, - "minecraft:block.glass.fall": { - "protocol_id": 448 - }, - "minecraft:block.glass.hit": { - "protocol_id": 449 - }, - "minecraft:block.glass.place": { - "protocol_id": 450 - }, - "minecraft:block.glass.step": { - "protocol_id": 451 - }, - "minecraft:block.grass.break": { - "protocol_id": 482 - }, - "minecraft:block.grass.fall": { - "protocol_id": 483 - }, - "minecraft:block.grass.hit": { - "protocol_id": 484 - }, - "minecraft:block.grass.place": { - "protocol_id": 485 - }, - "minecraft:block.grass.step": { - "protocol_id": 486 - }, - "minecraft:block.gravel.break": { - "protocol_id": 487 - }, - "minecraft:block.gravel.fall": { - "protocol_id": 488 - }, - "minecraft:block.gravel.hit": { - "protocol_id": 489 - }, - "minecraft:block.gravel.place": { - "protocol_id": 490 - }, - "minecraft:block.gravel.step": { - "protocol_id": 491 - }, - "minecraft:block.grindstone.use": { - "protocol_id": 492 - }, - "minecraft:block.growing_plant.crop": { - "protocol_id": 493 - }, - "minecraft:block.hanging_roots.break": { - "protocol_id": 502 - }, - "minecraft:block.hanging_roots.fall": { - "protocol_id": 503 - }, - "minecraft:block.hanging_roots.hit": { - "protocol_id": 504 - }, - "minecraft:block.hanging_roots.place": { - "protocol_id": 505 - }, - "minecraft:block.hanging_roots.step": { - "protocol_id": 506 - }, - "minecraft:block.honey_block.break": { - "protocol_id": 516 - }, - "minecraft:block.honey_block.fall": { - "protocol_id": 517 - }, - "minecraft:block.honey_block.hit": { - "protocol_id": 518 - }, - "minecraft:block.honey_block.place": { - "protocol_id": 519 - }, - "minecraft:block.honey_block.slide": { - "protocol_id": 520 - }, - "minecraft:block.honey_block.step": { - "protocol_id": 521 - }, - "minecraft:block.iron_door.close": { - "protocol_id": 564 - }, - "minecraft:block.iron_door.open": { - "protocol_id": 565 - }, - "minecraft:block.iron_trapdoor.close": { - "protocol_id": 572 - }, - "minecraft:block.iron_trapdoor.open": { - "protocol_id": 573 - }, - "minecraft:block.ladder.break": { - "protocol_id": 581 - }, - "minecraft:block.ladder.fall": { - "protocol_id": 582 - }, - "minecraft:block.ladder.hit": { - "protocol_id": 583 - }, - "minecraft:block.ladder.place": { - "protocol_id": 584 - }, - "minecraft:block.ladder.step": { - "protocol_id": 585 - }, - "minecraft:block.lantern.break": { - "protocol_id": 586 - }, - "minecraft:block.lantern.fall": { - "protocol_id": 587 - }, - "minecraft:block.lantern.hit": { - "protocol_id": 588 - }, - "minecraft:block.lantern.place": { - "protocol_id": 589 - }, - "minecraft:block.lantern.step": { - "protocol_id": 590 - }, - "minecraft:block.large_amethyst_bud.break": { - "protocol_id": 591 - }, - "minecraft:block.large_amethyst_bud.place": { - "protocol_id": 592 - }, - "minecraft:block.lava.ambient": { - "protocol_id": 593 - }, - "minecraft:block.lava.extinguish": { - "protocol_id": 594 - }, - "minecraft:block.lava.pop": { - "protocol_id": 595 - }, - "minecraft:block.lever.click": { - "protocol_id": 598 - }, - "minecraft:block.lily_pad.place": { - "protocol_id": 1210 - }, - "minecraft:block.lodestone.break": { - "protocol_id": 612 - }, - "minecraft:block.lodestone.fall": { - "protocol_id": 616 - }, - "minecraft:block.lodestone.hit": { - "protocol_id": 615 - }, - "minecraft:block.lodestone.place": { - "protocol_id": 614 - }, - "minecraft:block.lodestone.step": { - "protocol_id": 613 - }, - "minecraft:block.mangrove_roots.break": { - "protocol_id": 624 - }, - "minecraft:block.mangrove_roots.fall": { - "protocol_id": 625 - }, - "minecraft:block.mangrove_roots.hit": { - "protocol_id": 626 - }, - "minecraft:block.mangrove_roots.place": { - "protocol_id": 627 - }, - "minecraft:block.mangrove_roots.step": { - "protocol_id": 628 - }, - "minecraft:block.medium_amethyst_bud.break": { - "protocol_id": 629 - }, - "minecraft:block.medium_amethyst_bud.place": { - "protocol_id": 630 - }, - "minecraft:block.metal.break": { - "protocol_id": 631 - }, - "minecraft:block.metal.fall": { - "protocol_id": 632 - }, - "minecraft:block.metal.hit": { - "protocol_id": 633 - }, - "minecraft:block.metal.place": { - "protocol_id": 634 - }, - "minecraft:block.metal.step": { - "protocol_id": 637 - }, - "minecraft:block.metal_pressure_plate.click_off": { - "protocol_id": 635 - }, - "minecraft:block.metal_pressure_plate.click_on": { - "protocol_id": 636 - }, - "minecraft:block.moss.break": { - "protocol_id": 651 - }, - "minecraft:block.moss.fall": { - "protocol_id": 652 - }, - "minecraft:block.moss.hit": { - "protocol_id": 653 - }, - "minecraft:block.moss.place": { - "protocol_id": 654 - }, - "minecraft:block.moss.step": { - "protocol_id": 655 - }, - "minecraft:block.moss_carpet.break": { - "protocol_id": 646 - }, - "minecraft:block.moss_carpet.fall": { - "protocol_id": 647 - }, - "minecraft:block.moss_carpet.hit": { - "protocol_id": 648 - }, - "minecraft:block.moss_carpet.place": { - "protocol_id": 649 - }, - "minecraft:block.moss_carpet.step": { - "protocol_id": 650 - }, - "minecraft:block.mud.break": { - "protocol_id": 656 - }, - "minecraft:block.mud.fall": { - "protocol_id": 657 - }, - "minecraft:block.mud.hit": { - "protocol_id": 658 - }, - "minecraft:block.mud.place": { - "protocol_id": 659 - }, - "minecraft:block.mud.step": { - "protocol_id": 660 - }, - "minecraft:block.mud_bricks.break": { - "protocol_id": 661 - }, - "minecraft:block.mud_bricks.fall": { - "protocol_id": 662 - }, - "minecraft:block.mud_bricks.hit": { - "protocol_id": 663 - }, - "minecraft:block.mud_bricks.place": { - "protocol_id": 664 - }, - "minecraft:block.mud_bricks.step": { - "protocol_id": 665 - }, - "minecraft:block.muddy_mangrove_roots.break": { - "protocol_id": 666 - }, - "minecraft:block.muddy_mangrove_roots.fall": { - "protocol_id": 667 - }, - "minecraft:block.muddy_mangrove_roots.hit": { - "protocol_id": 668 - }, - "minecraft:block.muddy_mangrove_roots.place": { - "protocol_id": 669 - }, - "minecraft:block.muddy_mangrove_roots.step": { - "protocol_id": 670 - }, - "minecraft:block.nether_bricks.break": { - "protocol_id": 716 - }, - "minecraft:block.nether_bricks.fall": { - "protocol_id": 720 - }, - "minecraft:block.nether_bricks.hit": { - "protocol_id": 719 - }, - "minecraft:block.nether_bricks.place": { - "protocol_id": 718 - }, - "minecraft:block.nether_bricks.step": { - "protocol_id": 717 - }, - "minecraft:block.nether_gold_ore.break": { - "protocol_id": 933 - }, - "minecraft:block.nether_gold_ore.fall": { - "protocol_id": 934 - }, - "minecraft:block.nether_gold_ore.hit": { - "protocol_id": 935 - }, - "minecraft:block.nether_gold_ore.place": { - "protocol_id": 936 - }, - "minecraft:block.nether_gold_ore.step": { - "protocol_id": 937 - }, - "minecraft:block.nether_ore.break": { - "protocol_id": 938 - }, - "minecraft:block.nether_ore.fall": { - "protocol_id": 939 - }, - "minecraft:block.nether_ore.hit": { - "protocol_id": 940 - }, - "minecraft:block.nether_ore.place": { - "protocol_id": 941 - }, - "minecraft:block.nether_ore.step": { - "protocol_id": 942 - }, - "minecraft:block.nether_sprouts.break": { - "protocol_id": 738 - }, - "minecraft:block.nether_sprouts.fall": { - "protocol_id": 742 - }, - "minecraft:block.nether_sprouts.hit": { - "protocol_id": 741 - }, - "minecraft:block.nether_sprouts.place": { - "protocol_id": 740 - }, - "minecraft:block.nether_sprouts.step": { - "protocol_id": 739 - }, - "minecraft:block.nether_wart.break": { - "protocol_id": 721 - }, - "minecraft:block.netherite_block.break": { - "protocol_id": 758 - }, - "minecraft:block.netherite_block.fall": { - "protocol_id": 762 - }, - "minecraft:block.netherite_block.hit": { - "protocol_id": 761 - }, - "minecraft:block.netherite_block.place": { - "protocol_id": 760 - }, - "minecraft:block.netherite_block.step": { - "protocol_id": 759 - }, - "minecraft:block.netherrack.break": { - "protocol_id": 763 - }, - "minecraft:block.netherrack.fall": { - "protocol_id": 767 - }, - "minecraft:block.netherrack.hit": { - "protocol_id": 766 - }, - "minecraft:block.netherrack.place": { - "protocol_id": 765 - }, - "minecraft:block.netherrack.step": { - "protocol_id": 764 - }, - "minecraft:block.note_block.banjo": { - "protocol_id": 783 - }, - "minecraft:block.note_block.basedrum": { - "protocol_id": 768 - }, - "minecraft:block.note_block.bass": { - "protocol_id": 769 - }, - "minecraft:block.note_block.bell": { - "protocol_id": 770 - }, - "minecraft:block.note_block.bit": { - "protocol_id": 782 - }, - "minecraft:block.note_block.chime": { - "protocol_id": 771 - }, - "minecraft:block.note_block.cow_bell": { - "protocol_id": 780 - }, - "minecraft:block.note_block.didgeridoo": { - "protocol_id": 781 - }, - "minecraft:block.note_block.flute": { - "protocol_id": 772 - }, - "minecraft:block.note_block.guitar": { - "protocol_id": 773 - }, - "minecraft:block.note_block.harp": { - "protocol_id": 774 - }, - "minecraft:block.note_block.hat": { - "protocol_id": 775 - }, - "minecraft:block.note_block.iron_xylophone": { - "protocol_id": 779 - }, - "minecraft:block.note_block.pling": { - "protocol_id": 776 - }, - "minecraft:block.note_block.snare": { - "protocol_id": 777 - }, - "minecraft:block.note_block.xylophone": { - "protocol_id": 778 - }, - "minecraft:block.nylium.break": { - "protocol_id": 733 - }, - "minecraft:block.nylium.fall": { - "protocol_id": 737 - }, - "minecraft:block.nylium.hit": { - "protocol_id": 736 - }, - "minecraft:block.nylium.place": { - "protocol_id": 735 - }, - "minecraft:block.nylium.step": { - "protocol_id": 734 - }, - "minecraft:block.packed_mud.break": { - "protocol_id": 723 - }, - "minecraft:block.packed_mud.fall": { - "protocol_id": 724 - }, - "minecraft:block.packed_mud.hit": { - "protocol_id": 725 - }, - "minecraft:block.packed_mud.place": { - "protocol_id": 726 - }, - "minecraft:block.packed_mud.step": { - "protocol_id": 727 - }, - "minecraft:block.piston.contract": { - "protocol_id": 870 - }, - "minecraft:block.piston.extend": { - "protocol_id": 871 - }, - "minecraft:block.pointed_dripstone.break": { - "protocol_id": 297 - }, - "minecraft:block.pointed_dripstone.drip_lava": { - "protocol_id": 303 - }, - "minecraft:block.pointed_dripstone.drip_lava_into_cauldron": { - "protocol_id": 305 - }, - "minecraft:block.pointed_dripstone.drip_water": { - "protocol_id": 304 - }, - "minecraft:block.pointed_dripstone.drip_water_into_cauldron": { - "protocol_id": 306 - }, - "minecraft:block.pointed_dripstone.fall": { - "protocol_id": 301 - }, - "minecraft:block.pointed_dripstone.hit": { - "protocol_id": 300 - }, - "minecraft:block.pointed_dripstone.land": { - "protocol_id": 302 - }, - "minecraft:block.pointed_dripstone.place": { - "protocol_id": 299 - }, - "minecraft:block.pointed_dripstone.step": { + "minecraft:block.deepslate.break": { "protocol_id": 298 }, - "minecraft:block.polished_deepslate.break": { - "protocol_id": 898 + "minecraft:block.deepslate.fall": { + "protocol_id": 299 }, - "minecraft:block.polished_deepslate.fall": { - "protocol_id": 899 + "minecraft:block.deepslate.hit": { + "protocol_id": 300 }, - "minecraft:block.polished_deepslate.hit": { - "protocol_id": 900 + "minecraft:block.deepslate.place": { + "protocol_id": 301 }, - "minecraft:block.polished_deepslate.place": { - "protocol_id": 901 + "minecraft:block.deepslate.step": { + "protocol_id": 302 }, - "minecraft:block.polished_deepslate.step": { - "protocol_id": 902 + "minecraft:block.deepslate_bricks.break": { + "protocol_id": 293 }, - "minecraft:block.portal.ambient": { - "protocol_id": 903 + "minecraft:block.deepslate_bricks.fall": { + "protocol_id": 294 }, - "minecraft:block.portal.travel": { - "protocol_id": 904 + "minecraft:block.deepslate_bricks.hit": { + "protocol_id": 295 }, - "minecraft:block.portal.trigger": { - "protocol_id": 905 + "minecraft:block.deepslate_bricks.place": { + "protocol_id": 296 }, - "minecraft:block.powder_snow.break": { - "protocol_id": 906 + "minecraft:block.deepslate_bricks.step": { + "protocol_id": 297 }, - "minecraft:block.powder_snow.fall": { - "protocol_id": 907 + "minecraft:block.deepslate_tiles.break": { + "protocol_id": 303 }, - "minecraft:block.powder_snow.hit": { - "protocol_id": 908 + "minecraft:block.deepslate_tiles.fall": { + "protocol_id": 304 }, - "minecraft:block.powder_snow.place": { - "protocol_id": 909 + "minecraft:block.deepslate_tiles.hit": { + "protocol_id": 305 }, - "minecraft:block.powder_snow.step": { - "protocol_id": 910 + "minecraft:block.deepslate_tiles.place": { + "protocol_id": 306 }, - "minecraft:block.pumpkin.carve": { - "protocol_id": 918 + "minecraft:block.deepslate_tiles.step": { + "protocol_id": 307 }, - "minecraft:block.redstone_torch.burnout": { - "protocol_id": 943 + "minecraft:block.dispenser.dispense": { + "protocol_id": 308 }, - "minecraft:block.respawn_anchor.ambient": { - "protocol_id": 944 + "minecraft:block.dispenser.fail": { + "protocol_id": 309 }, - "minecraft:block.respawn_anchor.charge": { - "protocol_id": 945 + "minecraft:block.dispenser.launch": { + "protocol_id": 310 }, - "minecraft:block.respawn_anchor.deplete": { - "protocol_id": 946 + "minecraft:block.dripstone_block.break": { + "protocol_id": 327 }, - "minecraft:block.respawn_anchor.set_spawn": { - "protocol_id": 947 + "minecraft:block.dripstone_block.fall": { + "protocol_id": 331 }, - "minecraft:block.rooted_dirt.break": { - "protocol_id": 948 + "minecraft:block.dripstone_block.hit": { + "protocol_id": 330 }, - "minecraft:block.rooted_dirt.fall": { - "protocol_id": 949 + "minecraft:block.dripstone_block.place": { + "protocol_id": 329 }, - "minecraft:block.rooted_dirt.hit": { - "protocol_id": 950 + "minecraft:block.dripstone_block.step": { + "protocol_id": 328 }, - "minecraft:block.rooted_dirt.place": { - "protocol_id": 951 + "minecraft:block.enchantment_table.use": { + "protocol_id": 364 }, - "minecraft:block.rooted_dirt.step": { - "protocol_id": 952 + "minecraft:block.end_gateway.spawn": { + "protocol_id": 387 }, - "minecraft:block.roots.break": { + "minecraft:block.end_portal.spawn": { + "protocol_id": 389 + }, + "minecraft:block.end_portal_frame.fill": { + "protocol_id": 388 + }, + "minecraft:block.ender_chest.close": { + "protocol_id": 365 + }, + "minecraft:block.ender_chest.open": { + "protocol_id": 366 + }, + "minecraft:block.fence_gate.close": { + "protocol_id": 401 + }, + "minecraft:block.fence_gate.open": { + "protocol_id": 402 + }, + "minecraft:block.fire.ambient": { + "protocol_id": 412 + }, + "minecraft:block.fire.extinguish": { + "protocol_id": 413 + }, + "minecraft:block.flowering_azalea.break": { "protocol_id": 419 }, - "minecraft:block.roots.fall": { - "protocol_id": 423 - }, - "minecraft:block.roots.hit": { - "protocol_id": 422 - }, - "minecraft:block.roots.place": { - "protocol_id": 421 - }, - "minecraft:block.roots.step": { + "minecraft:block.flowering_azalea.fall": { "protocol_id": 420 }, - "minecraft:block.sand.break": { - "protocol_id": 957 + "minecraft:block.flowering_azalea.hit": { + "protocol_id": 421 }, - "minecraft:block.sand.fall": { - "protocol_id": 958 + "minecraft:block.flowering_azalea.place": { + "protocol_id": 422 }, - "minecraft:block.sand.hit": { - "protocol_id": 959 + "minecraft:block.flowering_azalea.step": { + "protocol_id": 423 }, - "minecraft:block.sand.place": { - "protocol_id": 960 + "minecraft:block.froglight.break": { + "protocol_id": 435 }, - "minecraft:block.sand.step": { - "protocol_id": 961 + "minecraft:block.froglight.fall": { + "protocol_id": 436 }, - "minecraft:block.scaffolding.break": { - "protocol_id": 962 + "minecraft:block.froglight.hit": { + "protocol_id": 437 }, - "minecraft:block.scaffolding.fall": { - "protocol_id": 963 + "minecraft:block.froglight.place": { + "protocol_id": 438 }, - "minecraft:block.scaffolding.hit": { - "protocol_id": 964 + "minecraft:block.froglight.step": { + "protocol_id": 439 }, - "minecraft:block.scaffolding.place": { - "protocol_id": 965 + "minecraft:block.frogspawn.break": { + "protocol_id": 441 }, - "minecraft:block.scaffolding.step": { - "protocol_id": 966 + "minecraft:block.frogspawn.fall": { + "protocol_id": 442 }, - "minecraft:block.sculk.break": { - "protocol_id": 969 + "minecraft:block.frogspawn.hatch": { + "protocol_id": 443 }, - "minecraft:block.sculk.charge": { - "protocol_id": 968 + "minecraft:block.frogspawn.hit": { + "protocol_id": 444 }, - "minecraft:block.sculk.fall": { - "protocol_id": 970 + "minecraft:block.frogspawn.place": { + "protocol_id": 445 }, - "minecraft:block.sculk.hit": { - "protocol_id": 971 + "minecraft:block.frogspawn.step": { + "protocol_id": 440 }, - "minecraft:block.sculk.place": { - "protocol_id": 972 + "minecraft:block.fungus.break": { + "protocol_id": 808 }, - "minecraft:block.sculk.spread": { - "protocol_id": 967 + "minecraft:block.fungus.fall": { + "protocol_id": 812 }, - "minecraft:block.sculk.step": { - "protocol_id": 973 + "minecraft:block.fungus.hit": { + "protocol_id": 811 }, - "minecraft:block.sculk_catalyst.bloom": { - "protocol_id": 974 + "minecraft:block.fungus.place": { + "protocol_id": 810 }, - "minecraft:block.sculk_catalyst.break": { - "protocol_id": 975 + "minecraft:block.fungus.step": { + "protocol_id": 809 }, - "minecraft:block.sculk_catalyst.fall": { - "protocol_id": 976 + "minecraft:block.furnace.fire_crackle": { + "protocol_id": 459 }, - "minecraft:block.sculk_catalyst.hit": { - "protocol_id": 977 + "minecraft:block.gilded_blackstone.break": { + "protocol_id": 477 }, - "minecraft:block.sculk_catalyst.place": { - "protocol_id": 978 + "minecraft:block.gilded_blackstone.fall": { + "protocol_id": 478 }, - "minecraft:block.sculk_catalyst.step": { - "protocol_id": 979 + "minecraft:block.gilded_blackstone.hit": { + "protocol_id": 479 }, - "minecraft:block.sculk_sensor.break": { - "protocol_id": 982 + "minecraft:block.gilded_blackstone.place": { + "protocol_id": 480 }, - "minecraft:block.sculk_sensor.clicking": { - "protocol_id": 980 + "minecraft:block.gilded_blackstone.step": { + "protocol_id": 481 }, - "minecraft:block.sculk_sensor.clicking_stop": { - "protocol_id": 981 + "minecraft:block.glass.break": { + "protocol_id": 482 }, - "minecraft:block.sculk_sensor.fall": { - "protocol_id": 983 + "minecraft:block.glass.fall": { + "protocol_id": 483 }, - "minecraft:block.sculk_sensor.hit": { - "protocol_id": 984 + "minecraft:block.glass.hit": { + "protocol_id": 484 }, - "minecraft:block.sculk_sensor.place": { - "protocol_id": 985 + "minecraft:block.glass.place": { + "protocol_id": 485 }, - "minecraft:block.sculk_sensor.step": { - "protocol_id": 986 + "minecraft:block.glass.step": { + "protocol_id": 486 }, - "minecraft:block.sculk_shrieker.break": { - "protocol_id": 987 + "minecraft:block.grass.break": { + "protocol_id": 517 }, - "minecraft:block.sculk_shrieker.fall": { - "protocol_id": 988 + "minecraft:block.grass.fall": { + "protocol_id": 518 }, - "minecraft:block.sculk_shrieker.hit": { - "protocol_id": 989 + "minecraft:block.grass.hit": { + "protocol_id": 519 }, - "minecraft:block.sculk_shrieker.place": { - "protocol_id": 990 + "minecraft:block.grass.place": { + "protocol_id": 520 }, - "minecraft:block.sculk_shrieker.shriek": { - "protocol_id": 991 + "minecraft:block.grass.step": { + "protocol_id": 521 }, - "minecraft:block.sculk_shrieker.step": { - "protocol_id": 992 + "minecraft:block.gravel.break": { + "protocol_id": 522 }, - "minecraft:block.sculk_vein.break": { - "protocol_id": 993 + "minecraft:block.gravel.fall": { + "protocol_id": 523 }, - "minecraft:block.sculk_vein.fall": { - "protocol_id": 994 + "minecraft:block.gravel.hit": { + "protocol_id": 524 }, - "minecraft:block.sculk_vein.hit": { - "protocol_id": 995 + "minecraft:block.gravel.place": { + "protocol_id": 525 }, - "minecraft:block.sculk_vein.place": { - "protocol_id": 996 + "minecraft:block.gravel.step": { + "protocol_id": 526 }, - "minecraft:block.sculk_vein.step": { - "protocol_id": 997 + "minecraft:block.grindstone.use": { + "protocol_id": 527 }, - "minecraft:block.shroomlight.break": { - "protocol_id": 1005 + "minecraft:block.growing_plant.crop": { + "protocol_id": 528 }, - "minecraft:block.shroomlight.fall": { - "protocol_id": 1009 + "minecraft:block.hanging_roots.break": { + "protocol_id": 537 }, - "minecraft:block.shroomlight.hit": { - "protocol_id": 1008 + "minecraft:block.hanging_roots.fall": { + "protocol_id": 538 }, - "minecraft:block.shroomlight.place": { - "protocol_id": 1007 + "minecraft:block.hanging_roots.hit": { + "protocol_id": 539 }, - "minecraft:block.shroomlight.step": { - "protocol_id": 1006 + "minecraft:block.hanging_roots.place": { + "protocol_id": 540 }, - "minecraft:block.shulker_box.close": { - "protocol_id": 1012 + "minecraft:block.hanging_roots.step": { + "protocol_id": 541 }, - "minecraft:block.shulker_box.open": { - "protocol_id": 1013 + "minecraft:block.hanging_sign.break": { + "protocol_id": 543 }, - "minecraft:block.slime_block.break": { - "protocol_id": 1046 + "minecraft:block.hanging_sign.fall": { + "protocol_id": 544 }, - "minecraft:block.slime_block.fall": { - "protocol_id": 1047 + "minecraft:block.hanging_sign.hit": { + "protocol_id": 545 }, - "minecraft:block.slime_block.hit": { - "protocol_id": 1048 + "minecraft:block.hanging_sign.place": { + "protocol_id": 546 }, - "minecraft:block.slime_block.place": { - "protocol_id": 1049 + "minecraft:block.hanging_sign.step": { + "protocol_id": 542 }, - "minecraft:block.slime_block.step": { - "protocol_id": 1050 + "minecraft:block.honey_block.break": { + "protocol_id": 566 }, - "minecraft:block.small_amethyst_bud.break": { - "protocol_id": 1051 + "minecraft:block.honey_block.fall": { + "protocol_id": 567 }, - "minecraft:block.small_amethyst_bud.place": { - "protocol_id": 1052 + "minecraft:block.honey_block.hit": { + "protocol_id": 568 }, - "minecraft:block.small_dripleaf.break": { - "protocol_id": 1053 + "minecraft:block.honey_block.place": { + "protocol_id": 569 }, - "minecraft:block.small_dripleaf.fall": { - "protocol_id": 1054 + "minecraft:block.honey_block.slide": { + "protocol_id": 570 }, - "minecraft:block.small_dripleaf.hit": { - "protocol_id": 1055 + "minecraft:block.honey_block.step": { + "protocol_id": 571 }, - "minecraft:block.small_dripleaf.place": { - "protocol_id": 1056 + "minecraft:block.iron_door.close": { + "protocol_id": 614 }, - "minecraft:block.small_dripleaf.step": { - "protocol_id": 1057 + "minecraft:block.iron_door.open": { + "protocol_id": 615 }, - "minecraft:block.smithing_table.use": { - "protocol_id": 1087 + "minecraft:block.iron_trapdoor.close": { + "protocol_id": 622 }, - "minecraft:block.smoker.smoke": { - "protocol_id": 1088 + "minecraft:block.iron_trapdoor.open": { + "protocol_id": 623 }, - "minecraft:block.snow.break": { - "protocol_id": 1090 + "minecraft:block.ladder.break": { + "protocol_id": 631 }, - "minecraft:block.snow.fall": { - "protocol_id": 1091 + "minecraft:block.ladder.fall": { + "protocol_id": 632 }, - "minecraft:block.snow.hit": { - "protocol_id": 1097 + "minecraft:block.ladder.hit": { + "protocol_id": 633 }, - "minecraft:block.snow.place": { - "protocol_id": 1098 + "minecraft:block.ladder.place": { + "protocol_id": 634 }, - "minecraft:block.snow.step": { - "protocol_id": 1099 + "minecraft:block.ladder.step": { + "protocol_id": 635 }, - "minecraft:block.soul_sand.break": { - "protocol_id": 1058 + "minecraft:block.lantern.break": { + "protocol_id": 636 }, - "minecraft:block.soul_sand.fall": { - "protocol_id": 1062 + "minecraft:block.lantern.fall": { + "protocol_id": 637 }, - "minecraft:block.soul_sand.hit": { - "protocol_id": 1061 + "minecraft:block.lantern.hit": { + "protocol_id": 638 }, - "minecraft:block.soul_sand.place": { - "protocol_id": 1060 + "minecraft:block.lantern.place": { + "protocol_id": 639 }, - "minecraft:block.soul_sand.step": { - "protocol_id": 1059 + "minecraft:block.lantern.step": { + "protocol_id": 640 }, - "minecraft:block.soul_soil.break": { - "protocol_id": 1063 + "minecraft:block.large_amethyst_bud.break": { + "protocol_id": 641 }, - "minecraft:block.soul_soil.fall": { - "protocol_id": 1067 + "minecraft:block.large_amethyst_bud.place": { + "protocol_id": 642 }, - "minecraft:block.soul_soil.hit": { - "protocol_id": 1066 + "minecraft:block.lava.ambient": { + "protocol_id": 643 }, - "minecraft:block.soul_soil.place": { - "protocol_id": 1065 + "minecraft:block.lava.extinguish": { + "protocol_id": 644 }, - "minecraft:block.soul_soil.step": { - "protocol_id": 1064 + "minecraft:block.lava.pop": { + "protocol_id": 645 }, - "minecraft:block.spore_blossom.break": { - "protocol_id": 1069 + "minecraft:block.lever.click": { + "protocol_id": 648 }, - "minecraft:block.spore_blossom.fall": { - "protocol_id": 1070 - }, - "minecraft:block.spore_blossom.hit": { - "protocol_id": 1071 - }, - "minecraft:block.spore_blossom.place": { - "protocol_id": 1072 - }, - "minecraft:block.spore_blossom.step": { - "protocol_id": 1073 - }, - "minecraft:block.stem.break": { - "protocol_id": 728 - }, - "minecraft:block.stem.fall": { - "protocol_id": 732 - }, - "minecraft:block.stem.hit": { - "protocol_id": 731 - }, - "minecraft:block.stem.place": { - "protocol_id": 730 - }, - "minecraft:block.stem.step": { - "protocol_id": 729 - }, - "minecraft:block.stone.break": { - "protocol_id": 1112 - }, - "minecraft:block.stone.fall": { - "protocol_id": 1115 - }, - "minecraft:block.stone.hit": { - "protocol_id": 1116 - }, - "minecraft:block.stone.place": { - "protocol_id": 1117 - }, - "minecraft:block.stone.step": { - "protocol_id": 1120 - }, - "minecraft:block.stone_button.click_off": { - "protocol_id": 1113 - }, - "minecraft:block.stone_button.click_on": { - "protocol_id": 1114 - }, - "minecraft:block.stone_pressure_plate.click_off": { - "protocol_id": 1118 - }, - "minecraft:block.stone_pressure_plate.click_on": { - "protocol_id": 1119 - }, - "minecraft:block.sweet_berry_bush.break": { - "protocol_id": 1125 - }, - "minecraft:block.sweet_berry_bush.pick_berries": { - "protocol_id": 1127 - }, - "minecraft:block.sweet_berry_bush.place": { - "protocol_id": 1126 - }, - "minecraft:block.tripwire.attach": { - "protocol_id": 1143 - }, - "minecraft:block.tripwire.click_off": { - "protocol_id": 1144 - }, - "minecraft:block.tripwire.click_on": { - "protocol_id": 1145 - }, - "minecraft:block.tripwire.detach": { - "protocol_id": 1146 - }, - "minecraft:block.tuff.break": { - "protocol_id": 1151 - }, - "minecraft:block.tuff.fall": { - "protocol_id": 1155 - }, - "minecraft:block.tuff.hit": { - "protocol_id": 1154 - }, - "minecraft:block.tuff.place": { - "protocol_id": 1153 - }, - "minecraft:block.tuff.step": { - "protocol_id": 1152 - }, - "minecraft:block.vine.break": { - "protocol_id": 1205 - }, - "minecraft:block.vine.fall": { - "protocol_id": 1206 - }, - "minecraft:block.vine.hit": { - "protocol_id": 1207 - }, - "minecraft:block.vine.place": { - "protocol_id": 1208 - }, - "minecraft:block.vine.step": { - "protocol_id": 1209 - }, - "minecraft:block.wart_block.break": { - "protocol_id": 753 - }, - "minecraft:block.wart_block.fall": { - "protocol_id": 757 - }, - "minecraft:block.wart_block.hit": { - "protocol_id": 756 - }, - "minecraft:block.wart_block.place": { - "protocol_id": 755 - }, - "minecraft:block.wart_block.step": { - "protocol_id": 754 - }, - "minecraft:block.water.ambient": { - "protocol_id": 1241 - }, - "minecraft:block.weeping_vines.break": { - "protocol_id": 748 - }, - "minecraft:block.weeping_vines.fall": { - "protocol_id": 752 - }, - "minecraft:block.weeping_vines.hit": { - "protocol_id": 751 - }, - "minecraft:block.weeping_vines.place": { - "protocol_id": 750 - }, - "minecraft:block.weeping_vines.step": { - "protocol_id": 749 - }, - "minecraft:block.wet_grass.break": { - "protocol_id": 1244 - }, - "minecraft:block.wet_grass.fall": { - "protocol_id": 1245 - }, - "minecraft:block.wet_grass.hit": { - "protocol_id": 1246 - }, - "minecraft:block.wet_grass.place": { - "protocol_id": 1247 - }, - "minecraft:block.wet_grass.step": { - "protocol_id": 1248 - }, - "minecraft:block.wood.break": { - "protocol_id": 1278 - }, - "minecraft:block.wood.fall": { + "minecraft:block.lily_pad.place": { "protocol_id": 1281 }, - "minecraft:block.wood.hit": { - "protocol_id": 1282 + "minecraft:block.lodestone.break": { + "protocol_id": 662 }, - "minecraft:block.wood.place": { - "protocol_id": 1283 + "minecraft:block.lodestone.fall": { + "protocol_id": 666 }, - "minecraft:block.wood.step": { - "protocol_id": 1286 + "minecraft:block.lodestone.hit": { + "protocol_id": 665 }, - "minecraft:block.wooden_button.click_off": { - "protocol_id": 1279 + "minecraft:block.lodestone.place": { + "protocol_id": 664 }, - "minecraft:block.wooden_button.click_on": { - "protocol_id": 1280 + "minecraft:block.lodestone.step": { + "protocol_id": 663 }, - "minecraft:block.wooden_door.close": { - "protocol_id": 1274 + "minecraft:block.mangrove_roots.break": { + "protocol_id": 674 }, - "minecraft:block.wooden_door.open": { - "protocol_id": 1275 + "minecraft:block.mangrove_roots.fall": { + "protocol_id": 675 }, - "minecraft:block.wooden_pressure_plate.click_off": { - "protocol_id": 1284 + "minecraft:block.mangrove_roots.hit": { + "protocol_id": 676 }, - "minecraft:block.wooden_pressure_plate.click_on": { - "protocol_id": 1285 + "minecraft:block.mangrove_roots.place": { + "protocol_id": 677 }, - "minecraft:block.wooden_trapdoor.close": { + "minecraft:block.mangrove_roots.step": { + "protocol_id": 678 + }, + "minecraft:block.medium_amethyst_bud.break": { + "protocol_id": 679 + }, + "minecraft:block.medium_amethyst_bud.place": { + "protocol_id": 680 + }, + "minecraft:block.metal.break": { + "protocol_id": 681 + }, + "minecraft:block.metal.fall": { + "protocol_id": 682 + }, + "minecraft:block.metal.hit": { + "protocol_id": 683 + }, + "minecraft:block.metal.place": { + "protocol_id": 684 + }, + "minecraft:block.metal.step": { + "protocol_id": 687 + }, + "minecraft:block.metal_pressure_plate.click_off": { + "protocol_id": 685 + }, + "minecraft:block.metal_pressure_plate.click_on": { + "protocol_id": 686 + }, + "minecraft:block.moss.break": { + "protocol_id": 701 + }, + "minecraft:block.moss.fall": { + "protocol_id": 702 + }, + "minecraft:block.moss.hit": { + "protocol_id": 703 + }, + "minecraft:block.moss.place": { + "protocol_id": 704 + }, + "minecraft:block.moss.step": { + "protocol_id": 705 + }, + "minecraft:block.moss_carpet.break": { + "protocol_id": 696 + }, + "minecraft:block.moss_carpet.fall": { + "protocol_id": 697 + }, + "minecraft:block.moss_carpet.hit": { + "protocol_id": 698 + }, + "minecraft:block.moss_carpet.place": { + "protocol_id": 699 + }, + "minecraft:block.moss_carpet.step": { + "protocol_id": 700 + }, + "minecraft:block.mud.break": { + "protocol_id": 706 + }, + "minecraft:block.mud.fall": { + "protocol_id": 707 + }, + "minecraft:block.mud.hit": { + "protocol_id": 708 + }, + "minecraft:block.mud.place": { + "protocol_id": 709 + }, + "minecraft:block.mud.step": { + "protocol_id": 710 + }, + "minecraft:block.mud_bricks.break": { + "protocol_id": 711 + }, + "minecraft:block.mud_bricks.fall": { + "protocol_id": 712 + }, + "minecraft:block.mud_bricks.hit": { + "protocol_id": 713 + }, + "minecraft:block.mud_bricks.place": { + "protocol_id": 714 + }, + "minecraft:block.mud_bricks.step": { + "protocol_id": 715 + }, + "minecraft:block.muddy_mangrove_roots.break": { + "protocol_id": 716 + }, + "minecraft:block.muddy_mangrove_roots.fall": { + "protocol_id": 717 + }, + "minecraft:block.muddy_mangrove_roots.hit": { + "protocol_id": 718 + }, + "minecraft:block.muddy_mangrove_roots.place": { + "protocol_id": 719 + }, + "minecraft:block.muddy_mangrove_roots.step": { + "protocol_id": 720 + }, + "minecraft:block.nether_bricks.break": { + "protocol_id": 766 + }, + "minecraft:block.nether_bricks.fall": { + "protocol_id": 770 + }, + "minecraft:block.nether_bricks.hit": { + "protocol_id": 769 + }, + "minecraft:block.nether_bricks.place": { + "protocol_id": 768 + }, + "minecraft:block.nether_bricks.step": { + "protocol_id": 767 + }, + "minecraft:block.nether_gold_ore.break": { + "protocol_id": 1004 + }, + "minecraft:block.nether_gold_ore.fall": { + "protocol_id": 1005 + }, + "minecraft:block.nether_gold_ore.hit": { + "protocol_id": 1006 + }, + "minecraft:block.nether_gold_ore.place": { + "protocol_id": 1007 + }, + "minecraft:block.nether_gold_ore.step": { + "protocol_id": 1008 + }, + "minecraft:block.nether_ore.break": { + "protocol_id": 1009 + }, + "minecraft:block.nether_ore.fall": { + "protocol_id": 1010 + }, + "minecraft:block.nether_ore.hit": { + "protocol_id": 1011 + }, + "minecraft:block.nether_ore.place": { + "protocol_id": 1012 + }, + "minecraft:block.nether_ore.step": { + "protocol_id": 1013 + }, + "minecraft:block.nether_sprouts.break": { + "protocol_id": 803 + }, + "minecraft:block.nether_sprouts.fall": { + "protocol_id": 807 + }, + "minecraft:block.nether_sprouts.hit": { + "protocol_id": 806 + }, + "minecraft:block.nether_sprouts.place": { + "protocol_id": 805 + }, + "minecraft:block.nether_sprouts.step": { + "protocol_id": 804 + }, + "minecraft:block.nether_wart.break": { + "protocol_id": 771 + }, + "minecraft:block.nether_wood.break": { + "protocol_id": 773 + }, + "minecraft:block.nether_wood.fall": { + "protocol_id": 774 + }, + "minecraft:block.nether_wood.hit": { + "protocol_id": 775 + }, + "minecraft:block.nether_wood.place": { + "protocol_id": 776 + }, + "minecraft:block.nether_wood.step": { + "protocol_id": 777 + }, + "minecraft:block.nether_wood_button.click_off": { + "protocol_id": 782 + }, + "minecraft:block.nether_wood_button.click_on": { + "protocol_id": 783 + }, + "minecraft:block.nether_wood_door.close": { + "protocol_id": 778 + }, + "minecraft:block.nether_wood_door.open": { + "protocol_id": 779 + }, + "minecraft:block.nether_wood_fence_gate.close": { + "protocol_id": 786 + }, + "minecraft:block.nether_wood_fence_gate.open": { + "protocol_id": 787 + }, + "minecraft:block.nether_wood_hanging_sign.break": { + "protocol_id": 548 + }, + "minecraft:block.nether_wood_hanging_sign.fall": { + "protocol_id": 549 + }, + "minecraft:block.nether_wood_hanging_sign.hit": { + "protocol_id": 550 + }, + "minecraft:block.nether_wood_hanging_sign.place": { + "protocol_id": 551 + }, + "minecraft:block.nether_wood_hanging_sign.step": { + "protocol_id": 547 + }, + "minecraft:block.nether_wood_pressure_plate.click_off": { + "protocol_id": 784 + }, + "minecraft:block.nether_wood_pressure_plate.click_on": { + "protocol_id": 785 + }, + "minecraft:block.nether_wood_trapdoor.close": { + "protocol_id": 780 + }, + "minecraft:block.nether_wood_trapdoor.open": { + "protocol_id": 781 + }, + "minecraft:block.netherite_block.break": { + "protocol_id": 823 + }, + "minecraft:block.netherite_block.fall": { + "protocol_id": 827 + }, + "minecraft:block.netherite_block.hit": { + "protocol_id": 826 + }, + "minecraft:block.netherite_block.place": { + "protocol_id": 825 + }, + "minecraft:block.netherite_block.step": { + "protocol_id": 824 + }, + "minecraft:block.netherrack.break": { + "protocol_id": 828 + }, + "minecraft:block.netherrack.fall": { + "protocol_id": 832 + }, + "minecraft:block.netherrack.hit": { + "protocol_id": 831 + }, + "minecraft:block.netherrack.place": { + "protocol_id": 830 + }, + "minecraft:block.netherrack.step": { + "protocol_id": 829 + }, + "minecraft:block.note_block.banjo": { + "protocol_id": 848 + }, + "minecraft:block.note_block.basedrum": { + "protocol_id": 833 + }, + "minecraft:block.note_block.bass": { + "protocol_id": 834 + }, + "minecraft:block.note_block.bell": { + "protocol_id": 835 + }, + "minecraft:block.note_block.bit": { + "protocol_id": 847 + }, + "minecraft:block.note_block.chime": { + "protocol_id": 836 + }, + "minecraft:block.note_block.cow_bell": { + "protocol_id": 845 + }, + "minecraft:block.note_block.didgeridoo": { + "protocol_id": 846 + }, + "minecraft:block.note_block.flute": { + "protocol_id": 837 + }, + "minecraft:block.note_block.guitar": { + "protocol_id": 838 + }, + "minecraft:block.note_block.harp": { + "protocol_id": 839 + }, + "minecraft:block.note_block.hat": { + "protocol_id": 840 + }, + "minecraft:block.note_block.imitate.creeper": { + "protocol_id": 851 + }, + "minecraft:block.note_block.imitate.ender_dragon": { + "protocol_id": 852 + }, + "minecraft:block.note_block.imitate.piglin": { + "protocol_id": 854 + }, + "minecraft:block.note_block.imitate.skeleton": { + "protocol_id": 850 + }, + "minecraft:block.note_block.imitate.wither_skeleton": { + "protocol_id": 853 + }, + "minecraft:block.note_block.imitate.zombie": { + "protocol_id": 849 + }, + "minecraft:block.note_block.iron_xylophone": { + "protocol_id": 844 + }, + "minecraft:block.note_block.pling": { + "protocol_id": 841 + }, + "minecraft:block.note_block.snare": { + "protocol_id": 842 + }, + "minecraft:block.note_block.xylophone": { + "protocol_id": 843 + }, + "minecraft:block.nylium.break": { + "protocol_id": 798 + }, + "minecraft:block.nylium.fall": { + "protocol_id": 802 + }, + "minecraft:block.nylium.hit": { + "protocol_id": 801 + }, + "minecraft:block.nylium.place": { + "protocol_id": 800 + }, + "minecraft:block.nylium.step": { + "protocol_id": 799 + }, + "minecraft:block.packed_mud.break": { + "protocol_id": 788 + }, + "minecraft:block.packed_mud.fall": { + "protocol_id": 789 + }, + "minecraft:block.packed_mud.hit": { + "protocol_id": 790 + }, + "minecraft:block.packed_mud.place": { + "protocol_id": 791 + }, + "minecraft:block.packed_mud.step": { + "protocol_id": 792 + }, + "minecraft:block.piston.contract": { + "protocol_id": 941 + }, + "minecraft:block.piston.extend": { + "protocol_id": 942 + }, + "minecraft:block.pointed_dripstone.break": { + "protocol_id": 332 + }, + "minecraft:block.pointed_dripstone.drip_lava": { + "protocol_id": 338 + }, + "minecraft:block.pointed_dripstone.drip_lava_into_cauldron": { + "protocol_id": 340 + }, + "minecraft:block.pointed_dripstone.drip_water": { + "protocol_id": 339 + }, + "minecraft:block.pointed_dripstone.drip_water_into_cauldron": { + "protocol_id": 341 + }, + "minecraft:block.pointed_dripstone.fall": { + "protocol_id": 336 + }, + "minecraft:block.pointed_dripstone.hit": { + "protocol_id": 335 + }, + "minecraft:block.pointed_dripstone.land": { + "protocol_id": 337 + }, + "minecraft:block.pointed_dripstone.place": { + "protocol_id": 334 + }, + "minecraft:block.pointed_dripstone.step": { + "protocol_id": 333 + }, + "minecraft:block.polished_deepslate.break": { + "protocol_id": 969 + }, + "minecraft:block.polished_deepslate.fall": { + "protocol_id": 970 + }, + "minecraft:block.polished_deepslate.hit": { + "protocol_id": 971 + }, + "minecraft:block.polished_deepslate.place": { + "protocol_id": 972 + }, + "minecraft:block.polished_deepslate.step": { + "protocol_id": 973 + }, + "minecraft:block.portal.ambient": { + "protocol_id": 974 + }, + "minecraft:block.portal.travel": { + "protocol_id": 975 + }, + "minecraft:block.portal.trigger": { + "protocol_id": 976 + }, + "minecraft:block.powder_snow.break": { + "protocol_id": 977 + }, + "minecraft:block.powder_snow.fall": { + "protocol_id": 978 + }, + "minecraft:block.powder_snow.hit": { + "protocol_id": 979 + }, + "minecraft:block.powder_snow.place": { + "protocol_id": 980 + }, + "minecraft:block.powder_snow.step": { + "protocol_id": 981 + }, + "minecraft:block.pumpkin.carve": { + "protocol_id": 989 + }, + "minecraft:block.redstone_torch.burnout": { + "protocol_id": 1014 + }, + "minecraft:block.respawn_anchor.ambient": { + "protocol_id": 1015 + }, + "minecraft:block.respawn_anchor.charge": { + "protocol_id": 1016 + }, + "minecraft:block.respawn_anchor.deplete": { + "protocol_id": 1017 + }, + "minecraft:block.respawn_anchor.set_spawn": { + "protocol_id": 1018 + }, + "minecraft:block.rooted_dirt.break": { + "protocol_id": 1019 + }, + "minecraft:block.rooted_dirt.fall": { + "protocol_id": 1020 + }, + "minecraft:block.rooted_dirt.hit": { + "protocol_id": 1021 + }, + "minecraft:block.rooted_dirt.place": { + "protocol_id": 1022 + }, + "minecraft:block.rooted_dirt.step": { + "protocol_id": 1023 + }, + "minecraft:block.roots.break": { + "protocol_id": 454 + }, + "minecraft:block.roots.fall": { + "protocol_id": 458 + }, + "minecraft:block.roots.hit": { + "protocol_id": 457 + }, + "minecraft:block.roots.place": { + "protocol_id": 456 + }, + "minecraft:block.roots.step": { + "protocol_id": 455 + }, + "minecraft:block.sand.break": { + "protocol_id": 1028 + }, + "minecraft:block.sand.fall": { + "protocol_id": 1029 + }, + "minecraft:block.sand.hit": { + "protocol_id": 1030 + }, + "minecraft:block.sand.place": { + "protocol_id": 1031 + }, + "minecraft:block.sand.step": { + "protocol_id": 1032 + }, + "minecraft:block.scaffolding.break": { + "protocol_id": 1033 + }, + "minecraft:block.scaffolding.fall": { + "protocol_id": 1034 + }, + "minecraft:block.scaffolding.hit": { + "protocol_id": 1035 + }, + "minecraft:block.scaffolding.place": { + "protocol_id": 1036 + }, + "minecraft:block.scaffolding.step": { + "protocol_id": 1037 + }, + "minecraft:block.sculk.break": { + "protocol_id": 1040 + }, + "minecraft:block.sculk.charge": { + "protocol_id": 1039 + }, + "minecraft:block.sculk.fall": { + "protocol_id": 1041 + }, + "minecraft:block.sculk.hit": { + "protocol_id": 1042 + }, + "minecraft:block.sculk.place": { + "protocol_id": 1043 + }, + "minecraft:block.sculk.spread": { + "protocol_id": 1038 + }, + "minecraft:block.sculk.step": { + "protocol_id": 1044 + }, + "minecraft:block.sculk_catalyst.bloom": { + "protocol_id": 1045 + }, + "minecraft:block.sculk_catalyst.break": { + "protocol_id": 1046 + }, + "minecraft:block.sculk_catalyst.fall": { + "protocol_id": 1047 + }, + "minecraft:block.sculk_catalyst.hit": { + "protocol_id": 1048 + }, + "minecraft:block.sculk_catalyst.place": { + "protocol_id": 1049 + }, + "minecraft:block.sculk_catalyst.step": { + "protocol_id": 1050 + }, + "minecraft:block.sculk_sensor.break": { + "protocol_id": 1053 + }, + "minecraft:block.sculk_sensor.clicking": { + "protocol_id": 1051 + }, + "minecraft:block.sculk_sensor.clicking_stop": { + "protocol_id": 1052 + }, + "minecraft:block.sculk_sensor.fall": { + "protocol_id": 1054 + }, + "minecraft:block.sculk_sensor.hit": { + "protocol_id": 1055 + }, + "minecraft:block.sculk_sensor.place": { + "protocol_id": 1056 + }, + "minecraft:block.sculk_sensor.step": { + "protocol_id": 1057 + }, + "minecraft:block.sculk_shrieker.break": { + "protocol_id": 1058 + }, + "minecraft:block.sculk_shrieker.fall": { + "protocol_id": 1059 + }, + "minecraft:block.sculk_shrieker.hit": { + "protocol_id": 1060 + }, + "minecraft:block.sculk_shrieker.place": { + "protocol_id": 1061 + }, + "minecraft:block.sculk_shrieker.shriek": { + "protocol_id": 1062 + }, + "minecraft:block.sculk_shrieker.step": { + "protocol_id": 1063 + }, + "minecraft:block.sculk_vein.break": { + "protocol_id": 1064 + }, + "minecraft:block.sculk_vein.fall": { + "protocol_id": 1065 + }, + "minecraft:block.sculk_vein.hit": { + "protocol_id": 1066 + }, + "minecraft:block.sculk_vein.place": { + "protocol_id": 1067 + }, + "minecraft:block.sculk_vein.step": { + "protocol_id": 1068 + }, + "minecraft:block.shroomlight.break": { + "protocol_id": 1076 + }, + "minecraft:block.shroomlight.fall": { + "protocol_id": 1080 + }, + "minecraft:block.shroomlight.hit": { + "protocol_id": 1079 + }, + "minecraft:block.shroomlight.place": { + "protocol_id": 1078 + }, + "minecraft:block.shroomlight.step": { + "protocol_id": 1077 + }, + "minecraft:block.shulker_box.close": { + "protocol_id": 1083 + }, + "minecraft:block.shulker_box.open": { + "protocol_id": 1084 + }, + "minecraft:block.slime_block.break": { + "protocol_id": 1117 + }, + "minecraft:block.slime_block.fall": { + "protocol_id": 1118 + }, + "minecraft:block.slime_block.hit": { + "protocol_id": 1119 + }, + "minecraft:block.slime_block.place": { + "protocol_id": 1120 + }, + "minecraft:block.slime_block.step": { + "protocol_id": 1121 + }, + "minecraft:block.small_amethyst_bud.break": { + "protocol_id": 1122 + }, + "minecraft:block.small_amethyst_bud.place": { + "protocol_id": 1123 + }, + "minecraft:block.small_dripleaf.break": { + "protocol_id": 1124 + }, + "minecraft:block.small_dripleaf.fall": { + "protocol_id": 1125 + }, + "minecraft:block.small_dripleaf.hit": { + "protocol_id": 1126 + }, + "minecraft:block.small_dripleaf.place": { + "protocol_id": 1127 + }, + "minecraft:block.small_dripleaf.step": { + "protocol_id": 1128 + }, + "minecraft:block.smithing_table.use": { + "protocol_id": 1158 + }, + "minecraft:block.smoker.smoke": { + "protocol_id": 1159 + }, + "minecraft:block.snow.break": { + "protocol_id": 1161 + }, + "minecraft:block.snow.fall": { + "protocol_id": 1162 + }, + "minecraft:block.snow.hit": { + "protocol_id": 1168 + }, + "minecraft:block.snow.place": { + "protocol_id": 1169 + }, + "minecraft:block.snow.step": { + "protocol_id": 1170 + }, + "minecraft:block.soul_sand.break": { + "protocol_id": 1129 + }, + "minecraft:block.soul_sand.fall": { + "protocol_id": 1133 + }, + "minecraft:block.soul_sand.hit": { + "protocol_id": 1132 + }, + "minecraft:block.soul_sand.place": { + "protocol_id": 1131 + }, + "minecraft:block.soul_sand.step": { + "protocol_id": 1130 + }, + "minecraft:block.soul_soil.break": { + "protocol_id": 1134 + }, + "minecraft:block.soul_soil.fall": { + "protocol_id": 1138 + }, + "minecraft:block.soul_soil.hit": { + "protocol_id": 1137 + }, + "minecraft:block.soul_soil.place": { + "protocol_id": 1136 + }, + "minecraft:block.soul_soil.step": { + "protocol_id": 1135 + }, + "minecraft:block.spore_blossom.break": { + "protocol_id": 1140 + }, + "minecraft:block.spore_blossom.fall": { + "protocol_id": 1141 + }, + "minecraft:block.spore_blossom.hit": { + "protocol_id": 1142 + }, + "minecraft:block.spore_blossom.place": { + "protocol_id": 1143 + }, + "minecraft:block.spore_blossom.step": { + "protocol_id": 1144 + }, + "minecraft:block.stem.break": { + "protocol_id": 793 + }, + "minecraft:block.stem.fall": { + "protocol_id": 797 + }, + "minecraft:block.stem.hit": { + "protocol_id": 796 + }, + "minecraft:block.stem.place": { + "protocol_id": 795 + }, + "minecraft:block.stem.step": { + "protocol_id": 794 + }, + "minecraft:block.stone.break": { + "protocol_id": 1183 + }, + "minecraft:block.stone.fall": { + "protocol_id": 1186 + }, + "minecraft:block.stone.hit": { + "protocol_id": 1187 + }, + "minecraft:block.stone.place": { + "protocol_id": 1188 + }, + "minecraft:block.stone.step": { + "protocol_id": 1191 + }, + "minecraft:block.stone_button.click_off": { + "protocol_id": 1184 + }, + "minecraft:block.stone_button.click_on": { + "protocol_id": 1185 + }, + "minecraft:block.stone_pressure_plate.click_off": { + "protocol_id": 1189 + }, + "minecraft:block.stone_pressure_plate.click_on": { + "protocol_id": 1190 + }, + "minecraft:block.sweet_berry_bush.break": { + "protocol_id": 1196 + }, + "minecraft:block.sweet_berry_bush.pick_berries": { + "protocol_id": 1198 + }, + "minecraft:block.sweet_berry_bush.place": { + "protocol_id": 1197 + }, + "minecraft:block.tripwire.attach": { + "protocol_id": 1214 + }, + "minecraft:block.tripwire.click_off": { + "protocol_id": 1215 + }, + "minecraft:block.tripwire.click_on": { + "protocol_id": 1216 + }, + "minecraft:block.tripwire.detach": { + "protocol_id": 1217 + }, + "minecraft:block.tuff.break": { + "protocol_id": 1222 + }, + "minecraft:block.tuff.fall": { + "protocol_id": 1226 + }, + "minecraft:block.tuff.hit": { + "protocol_id": 1225 + }, + "minecraft:block.tuff.place": { + "protocol_id": 1224 + }, + "minecraft:block.tuff.step": { + "protocol_id": 1223 + }, + "minecraft:block.vine.break": { "protocol_id": 1276 }, - "minecraft:block.wooden_trapdoor.open": { + "minecraft:block.vine.fall": { "protocol_id": 1277 }, + "minecraft:block.vine.hit": { + "protocol_id": 1278 + }, + "minecraft:block.vine.place": { + "protocol_id": 1279 + }, + "minecraft:block.vine.step": { + "protocol_id": 1280 + }, + "minecraft:block.wart_block.break": { + "protocol_id": 818 + }, + "minecraft:block.wart_block.fall": { + "protocol_id": 822 + }, + "minecraft:block.wart_block.hit": { + "protocol_id": 821 + }, + "minecraft:block.wart_block.place": { + "protocol_id": 820 + }, + "minecraft:block.wart_block.step": { + "protocol_id": 819 + }, + "minecraft:block.water.ambient": { + "protocol_id": 1312 + }, + "minecraft:block.weeping_vines.break": { + "protocol_id": 813 + }, + "minecraft:block.weeping_vines.fall": { + "protocol_id": 817 + }, + "minecraft:block.weeping_vines.hit": { + "protocol_id": 816 + }, + "minecraft:block.weeping_vines.place": { + "protocol_id": 815 + }, + "minecraft:block.weeping_vines.step": { + "protocol_id": 814 + }, + "minecraft:block.wet_grass.break": { + "protocol_id": 1315 + }, + "minecraft:block.wet_grass.fall": { + "protocol_id": 1316 + }, + "minecraft:block.wet_grass.hit": { + "protocol_id": 1317 + }, + "minecraft:block.wet_grass.place": { + "protocol_id": 1318 + }, + "minecraft:block.wet_grass.step": { + "protocol_id": 1319 + }, + "minecraft:block.wood.break": { + "protocol_id": 1349 + }, + "minecraft:block.wood.fall": { + "protocol_id": 1352 + }, + "minecraft:block.wood.hit": { + "protocol_id": 1353 + }, + "minecraft:block.wood.place": { + "protocol_id": 1354 + }, + "minecraft:block.wood.step": { + "protocol_id": 1357 + }, + "minecraft:block.wooden_button.click_off": { + "protocol_id": 1350 + }, + "minecraft:block.wooden_button.click_on": { + "protocol_id": 1351 + }, + "minecraft:block.wooden_door.close": { + "protocol_id": 1345 + }, + "minecraft:block.wooden_door.open": { + "protocol_id": 1346 + }, + "minecraft:block.wooden_pressure_plate.click_off": { + "protocol_id": 1355 + }, + "minecraft:block.wooden_pressure_plate.click_on": { + "protocol_id": 1356 + }, + "minecraft:block.wooden_trapdoor.close": { + "protocol_id": 1347 + }, + "minecraft:block.wooden_trapdoor.open": { + "protocol_id": 1348 + }, "minecraft:block.wool.break": { - "protocol_id": 1287 + "protocol_id": 1358 }, "minecraft:block.wool.fall": { - "protocol_id": 1288 + "protocol_id": 1359 }, "minecraft:block.wool.hit": { - "protocol_id": 1289 + "protocol_id": 1360 }, "minecraft:block.wool.place": { - "protocol_id": 1290 + "protocol_id": 1361 }, "minecraft:block.wool.step": { - "protocol_id": 1291 + "protocol_id": 1362 }, "minecraft:enchant.thorns.hit": { - "protocol_id": 1132 + "protocol_id": 1203 }, "minecraft:entity.allay.ambient_with_item": { "protocol_id": 0 @@ -11084,1867 +11498,1900 @@ "protocol_id": 78 }, "minecraft:entity.bat.ambient": { - "protocol_id": 104 + "protocol_id": 119 }, "minecraft:entity.bat.death": { - "protocol_id": 105 + "protocol_id": 120 }, "minecraft:entity.bat.hurt": { - "protocol_id": 106 + "protocol_id": 121 }, "minecraft:entity.bat.loop": { - "protocol_id": 107 + "protocol_id": 122 }, "minecraft:entity.bat.takeoff": { - "protocol_id": 108 + "protocol_id": 123 }, "minecraft:entity.bee.death": { - "protocol_id": 113 + "protocol_id": 128 }, "minecraft:entity.bee.hurt": { - "protocol_id": 114 + "protocol_id": 129 }, "minecraft:entity.bee.loop": { - "protocol_id": 116 - }, - "minecraft:entity.bee.loop_aggressive": { - "protocol_id": 115 - }, - "minecraft:entity.bee.pollinate": { - "protocol_id": 118 - }, - "minecraft:entity.bee.sting": { - "protocol_id": 117 - }, - "minecraft:entity.blaze.ambient": { "protocol_id": 131 }, - "minecraft:entity.blaze.burn": { - "protocol_id": 132 + "minecraft:entity.bee.loop_aggressive": { + "protocol_id": 130 }, - "minecraft:entity.blaze.death": { + "minecraft:entity.bee.pollinate": { "protocol_id": 133 }, + "minecraft:entity.bee.sting": { + "protocol_id": 132 + }, + "minecraft:entity.blaze.ambient": { + "protocol_id": 146 + }, + "minecraft:entity.blaze.burn": { + "protocol_id": 147 + }, + "minecraft:entity.blaze.death": { + "protocol_id": 148 + }, "minecraft:entity.blaze.hurt": { - "protocol_id": 134 + "protocol_id": 149 }, "minecraft:entity.blaze.shoot": { - "protocol_id": 135 + "protocol_id": 150 }, "minecraft:entity.boat.paddle_land": { - "protocol_id": 136 + "protocol_id": 151 }, "minecraft:entity.boat.paddle_water": { - "protocol_id": 137 + "protocol_id": 152 }, - "minecraft:entity.cat.ambient": { - "protocol_id": 185 - }, - "minecraft:entity.cat.beg_for_food": { - "protocol_id": 190 - }, - "minecraft:entity.cat.death": { - "protocol_id": 187 - }, - "minecraft:entity.cat.eat": { - "protocol_id": 188 - }, - "minecraft:entity.cat.hiss": { - "protocol_id": 189 - }, - "minecraft:entity.cat.hurt": { - "protocol_id": 191 - }, - "minecraft:entity.cat.purr": { + "minecraft:entity.camel.ambient": { "protocol_id": 192 }, - "minecraft:entity.cat.purreow": { + "minecraft:entity.camel.dash": { "protocol_id": 193 }, - "minecraft:entity.cat.stray_ambient": { - "protocol_id": 186 + "minecraft:entity.camel.dash_ready": { + "protocol_id": 194 }, - "minecraft:entity.chicken.ambient": { - "protocol_id": 208 + "minecraft:entity.camel.death": { + "protocol_id": 195 }, - "minecraft:entity.chicken.death": { - "protocol_id": 209 + "minecraft:entity.camel.eat": { + "protocol_id": 196 }, - "minecraft:entity.chicken.egg": { - "protocol_id": 210 + "minecraft:entity.camel.hurt": { + "protocol_id": 197 }, - "minecraft:entity.chicken.hurt": { + "minecraft:entity.camel.saddle": { + "protocol_id": 198 + }, + "minecraft:entity.camel.sit": { + "protocol_id": 199 + }, + "minecraft:entity.camel.stand": { + "protocol_id": 200 + }, + "minecraft:entity.camel.step": { + "protocol_id": 201 + }, + "minecraft:entity.camel.step_sand": { + "protocol_id": 202 + }, + "minecraft:entity.cat.ambient": { "protocol_id": 211 }, - "minecraft:entity.chicken.step": { - "protocol_id": 212 - }, - "minecraft:entity.cod.ambient": { + "minecraft:entity.cat.beg_for_food": { "protocol_id": 216 }, - "minecraft:entity.cod.death": { + "minecraft:entity.cat.death": { + "protocol_id": 213 + }, + "minecraft:entity.cat.eat": { + "protocol_id": 214 + }, + "minecraft:entity.cat.hiss": { + "protocol_id": 215 + }, + "minecraft:entity.cat.hurt": { "protocol_id": 217 }, - "minecraft:entity.cod.flop": { + "minecraft:entity.cat.purr": { "protocol_id": 218 }, - "minecraft:entity.cod.hurt": { + "minecraft:entity.cat.purreow": { "protocol_id": 219 }, + "minecraft:entity.cat.stray_ambient": { + "protocol_id": 212 + }, + "minecraft:entity.chicken.ambient": { + "protocol_id": 234 + }, + "minecraft:entity.chicken.death": { + "protocol_id": 235 + }, + "minecraft:entity.chicken.egg": { + "protocol_id": 236 + }, + "minecraft:entity.chicken.hurt": { + "protocol_id": 237 + }, + "minecraft:entity.chicken.step": { + "protocol_id": 238 + }, + "minecraft:entity.cod.ambient": { + "protocol_id": 251 + }, + "minecraft:entity.cod.death": { + "protocol_id": 252 + }, + "minecraft:entity.cod.flop": { + "protocol_id": 253 + }, + "minecraft:entity.cod.hurt": { + "protocol_id": 254 + }, "minecraft:entity.cow.ambient": { - "protocol_id": 240 + "protocol_id": 275 }, "minecraft:entity.cow.death": { - "protocol_id": 241 - }, - "minecraft:entity.cow.hurt": { - "protocol_id": 242 - }, - "minecraft:entity.cow.milk": { - "protocol_id": 243 - }, - "minecraft:entity.cow.step": { - "protocol_id": 244 - }, - "minecraft:entity.creeper.death": { - "protocol_id": 245 - }, - "minecraft:entity.creeper.hurt": { - "protocol_id": 246 - }, - "minecraft:entity.creeper.primed": { - "protocol_id": 247 - }, - "minecraft:entity.dolphin.ambient": { "protocol_id": 276 }, - "minecraft:entity.dolphin.ambient_water": { + "minecraft:entity.cow.hurt": { "protocol_id": 277 }, - "minecraft:entity.dolphin.attack": { + "minecraft:entity.cow.milk": { "protocol_id": 278 }, - "minecraft:entity.dolphin.death": { + "minecraft:entity.cow.step": { "protocol_id": 279 }, - "minecraft:entity.dolphin.eat": { + "minecraft:entity.creeper.death": { "protocol_id": 280 }, - "minecraft:entity.dolphin.hurt": { + "minecraft:entity.creeper.hurt": { "protocol_id": 281 }, - "minecraft:entity.dolphin.jump": { + "minecraft:entity.creeper.primed": { "protocol_id": 282 }, - "minecraft:entity.dolphin.play": { - "protocol_id": 283 - }, - "minecraft:entity.dolphin.splash": { - "protocol_id": 284 - }, - "minecraft:entity.dolphin.swim": { - "protocol_id": 285 - }, - "minecraft:entity.donkey.ambient": { - "protocol_id": 286 - }, - "minecraft:entity.donkey.angry": { - "protocol_id": 287 - }, - "minecraft:entity.donkey.chest": { - "protocol_id": 288 - }, - "minecraft:entity.donkey.death": { - "protocol_id": 289 - }, - "minecraft:entity.donkey.eat": { - "protocol_id": 290 - }, - "minecraft:entity.donkey.hurt": { - "protocol_id": 291 - }, - "minecraft:entity.dragon_fireball.explode": { - "protocol_id": 334 - }, - "minecraft:entity.drowned.ambient": { - "protocol_id": 309 - }, - "minecraft:entity.drowned.ambient_water": { - "protocol_id": 310 - }, - "minecraft:entity.drowned.death": { + "minecraft:entity.dolphin.ambient": { "protocol_id": 311 }, - "minecraft:entity.drowned.death_water": { + "minecraft:entity.dolphin.ambient_water": { "protocol_id": 312 }, - "minecraft:entity.drowned.hurt": { + "minecraft:entity.dolphin.attack": { "protocol_id": 313 }, - "minecraft:entity.drowned.hurt_water": { + "minecraft:entity.dolphin.death": { "protocol_id": 314 }, - "minecraft:entity.drowned.shoot": { + "minecraft:entity.dolphin.eat": { "protocol_id": 315 }, - "minecraft:entity.drowned.step": { + "minecraft:entity.dolphin.hurt": { "protocol_id": 316 }, - "minecraft:entity.drowned.swim": { + "minecraft:entity.dolphin.jump": { "protocol_id": 317 }, - "minecraft:entity.egg.throw": { + "minecraft:entity.dolphin.play": { + "protocol_id": 318 + }, + "minecraft:entity.dolphin.splash": { "protocol_id": 319 }, - "minecraft:entity.elder_guardian.ambient": { + "minecraft:entity.dolphin.swim": { "protocol_id": 320 }, - "minecraft:entity.elder_guardian.ambient_land": { + "minecraft:entity.donkey.ambient": { "protocol_id": 321 }, - "minecraft:entity.elder_guardian.curse": { + "minecraft:entity.donkey.angry": { "protocol_id": 322 }, - "minecraft:entity.elder_guardian.death": { + "minecraft:entity.donkey.chest": { "protocol_id": 323 }, - "minecraft:entity.elder_guardian.death_land": { + "minecraft:entity.donkey.death": { "protocol_id": 324 }, - "minecraft:entity.elder_guardian.flop": { + "minecraft:entity.donkey.eat": { "protocol_id": 325 }, - "minecraft:entity.elder_guardian.hurt": { + "minecraft:entity.donkey.hurt": { "protocol_id": 326 }, - "minecraft:entity.elder_guardian.hurt_land": { - "protocol_id": 327 - }, - "minecraft:entity.ender_dragon.ambient": { - "protocol_id": 332 - }, - "minecraft:entity.ender_dragon.death": { - "protocol_id": 333 - }, - "minecraft:entity.ender_dragon.flap": { - "protocol_id": 335 - }, - "minecraft:entity.ender_dragon.growl": { - "protocol_id": 336 - }, - "minecraft:entity.ender_dragon.hurt": { - "protocol_id": 337 - }, - "minecraft:entity.ender_dragon.shoot": { - "protocol_id": 338 - }, - "minecraft:entity.ender_eye.death": { - "protocol_id": 339 - }, - "minecraft:entity.ender_eye.launch": { - "protocol_id": 340 - }, - "minecraft:entity.ender_pearl.throw": { - "protocol_id": 351 - }, - "minecraft:entity.enderman.ambient": { - "protocol_id": 341 - }, - "minecraft:entity.enderman.death": { - "protocol_id": 342 - }, - "minecraft:entity.enderman.hurt": { - "protocol_id": 343 - }, - "minecraft:entity.enderman.scream": { - "protocol_id": 344 - }, - "minecraft:entity.enderman.stare": { - "protocol_id": 345 - }, - "minecraft:entity.enderman.teleport": { - "protocol_id": 346 - }, - "minecraft:entity.endermite.ambient": { - "protocol_id": 347 - }, - "minecraft:entity.endermite.death": { - "protocol_id": 348 - }, - "minecraft:entity.endermite.hurt": { - "protocol_id": 349 - }, - "minecraft:entity.endermite.step": { - "protocol_id": 350 - }, - "minecraft:entity.evoker.ambient": { - "protocol_id": 355 - }, - "minecraft:entity.evoker.cast_spell": { - "protocol_id": 356 - }, - "minecraft:entity.evoker.celebrate": { - "protocol_id": 357 - }, - "minecraft:entity.evoker.death": { - "protocol_id": 358 - }, - "minecraft:entity.evoker.hurt": { - "protocol_id": 360 - }, - "minecraft:entity.evoker.prepare_attack": { - "protocol_id": 361 - }, - "minecraft:entity.evoker.prepare_summon": { - "protocol_id": 362 - }, - "minecraft:entity.evoker.prepare_wololo": { - "protocol_id": 363 - }, - "minecraft:entity.evoker_fangs.attack": { - "protocol_id": 359 - }, - "minecraft:entity.experience_bottle.throw": { - "protocol_id": 364 - }, - "minecraft:entity.experience_orb.pickup": { - "protocol_id": 365 - }, - "minecraft:entity.firework_rocket.blast": { + "minecraft:entity.dragon_fireball.explode": { "protocol_id": 369 }, - "minecraft:entity.firework_rocket.blast_far": { + "minecraft:entity.drowned.ambient": { + "protocol_id": 344 + }, + "minecraft:entity.drowned.ambient_water": { + "protocol_id": 345 + }, + "minecraft:entity.drowned.death": { + "protocol_id": 346 + }, + "minecraft:entity.drowned.death_water": { + "protocol_id": 347 + }, + "minecraft:entity.drowned.hurt": { + "protocol_id": 348 + }, + "minecraft:entity.drowned.hurt_water": { + "protocol_id": 349 + }, + "minecraft:entity.drowned.shoot": { + "protocol_id": 350 + }, + "minecraft:entity.drowned.step": { + "protocol_id": 351 + }, + "minecraft:entity.drowned.swim": { + "protocol_id": 352 + }, + "minecraft:entity.egg.throw": { + "protocol_id": 354 + }, + "minecraft:entity.elder_guardian.ambient": { + "protocol_id": 355 + }, + "minecraft:entity.elder_guardian.ambient_land": { + "protocol_id": 356 + }, + "minecraft:entity.elder_guardian.curse": { + "protocol_id": 357 + }, + "minecraft:entity.elder_guardian.death": { + "protocol_id": 358 + }, + "minecraft:entity.elder_guardian.death_land": { + "protocol_id": 359 + }, + "minecraft:entity.elder_guardian.flop": { + "protocol_id": 360 + }, + "minecraft:entity.elder_guardian.hurt": { + "protocol_id": 361 + }, + "minecraft:entity.elder_guardian.hurt_land": { + "protocol_id": 362 + }, + "minecraft:entity.ender_dragon.ambient": { + "protocol_id": 367 + }, + "minecraft:entity.ender_dragon.death": { + "protocol_id": 368 + }, + "minecraft:entity.ender_dragon.flap": { "protocol_id": 370 }, - "minecraft:entity.firework_rocket.large_blast": { + "minecraft:entity.ender_dragon.growl": { "protocol_id": 371 }, - "minecraft:entity.firework_rocket.large_blast_far": { + "minecraft:entity.ender_dragon.hurt": { "protocol_id": 372 }, - "minecraft:entity.firework_rocket.launch": { + "minecraft:entity.ender_dragon.shoot": { "protocol_id": 373 }, - "minecraft:entity.firework_rocket.shoot": { + "minecraft:entity.ender_eye.death": { "protocol_id": 374 }, - "minecraft:entity.firework_rocket.twinkle": { + "minecraft:entity.ender_eye.launch": { "protocol_id": 375 }, - "minecraft:entity.firework_rocket.twinkle_far": { + "minecraft:entity.ender_pearl.throw": { + "protocol_id": 386 + }, + "minecraft:entity.enderman.ambient": { "protocol_id": 376 }, - "minecraft:entity.fish.swim": { + "minecraft:entity.enderman.death": { + "protocol_id": 377 + }, + "minecraft:entity.enderman.hurt": { + "protocol_id": 378 + }, + "minecraft:entity.enderman.scream": { "protocol_id": 379 }, - "minecraft:entity.fishing_bobber.retrieve": { + "minecraft:entity.enderman.stare": { "protocol_id": 380 }, - "minecraft:entity.fishing_bobber.splash": { + "minecraft:entity.enderman.teleport": { "protocol_id": 381 }, - "minecraft:entity.fishing_bobber.throw": { + "minecraft:entity.endermite.ambient": { "protocol_id": 382 }, - "minecraft:entity.fox.aggro": { - "protocol_id": 389 + "minecraft:entity.endermite.death": { + "protocol_id": 383 }, - "minecraft:entity.fox.ambient": { + "minecraft:entity.endermite.hurt": { + "protocol_id": 384 + }, + "minecraft:entity.endermite.step": { + "protocol_id": 385 + }, + "minecraft:entity.evoker.ambient": { "protocol_id": 390 }, - "minecraft:entity.fox.bite": { + "minecraft:entity.evoker.cast_spell": { "protocol_id": 391 }, - "minecraft:entity.fox.death": { + "minecraft:entity.evoker.celebrate": { "protocol_id": 392 }, - "minecraft:entity.fox.eat": { + "minecraft:entity.evoker.death": { "protocol_id": 393 }, - "minecraft:entity.fox.hurt": { - "protocol_id": 394 - }, - "minecraft:entity.fox.screech": { + "minecraft:entity.evoker.hurt": { "protocol_id": 395 }, - "minecraft:entity.fox.sleep": { + "minecraft:entity.evoker.prepare_attack": { "protocol_id": 396 }, - "minecraft:entity.fox.sniff": { + "minecraft:entity.evoker.prepare_summon": { "protocol_id": 397 }, - "minecraft:entity.fox.spit": { + "minecraft:entity.evoker.prepare_wololo": { "protocol_id": 398 }, - "minecraft:entity.fox.teleport": { + "minecraft:entity.evoker_fangs.attack": { + "protocol_id": 394 + }, + "minecraft:entity.experience_bottle.throw": { "protocol_id": 399 }, - "minecraft:entity.frog.ambient": { + "minecraft:entity.experience_orb.pickup": { + "protocol_id": 400 + }, + "minecraft:entity.firework_rocket.blast": { + "protocol_id": 404 + }, + "minecraft:entity.firework_rocket.blast_far": { + "protocol_id": 405 + }, + "minecraft:entity.firework_rocket.large_blast": { + "protocol_id": 406 + }, + "minecraft:entity.firework_rocket.large_blast_far": { + "protocol_id": 407 + }, + "minecraft:entity.firework_rocket.launch": { + "protocol_id": 408 + }, + "minecraft:entity.firework_rocket.shoot": { + "protocol_id": 409 + }, + "minecraft:entity.firework_rocket.twinkle": { + "protocol_id": 410 + }, + "minecraft:entity.firework_rocket.twinkle_far": { "protocol_id": 411 }, - "minecraft:entity.frog.death": { - "protocol_id": 412 - }, - "minecraft:entity.frog.eat": { - "protocol_id": 413 - }, - "minecraft:entity.frog.hurt": { + "minecraft:entity.fish.swim": { "protocol_id": 414 }, - "minecraft:entity.frog.lay_spawn": { + "minecraft:entity.fishing_bobber.retrieve": { "protocol_id": 415 }, - "minecraft:entity.frog.long_jump": { + "minecraft:entity.fishing_bobber.splash": { "protocol_id": 416 }, - "minecraft:entity.frog.step": { + "minecraft:entity.fishing_bobber.throw": { "protocol_id": 417 }, - "minecraft:entity.frog.tongue": { - "protocol_id": 418 + "minecraft:entity.fox.aggro": { + "protocol_id": 424 }, - "minecraft:entity.generic.big_fall": { + "minecraft:entity.fox.ambient": { "protocol_id": 425 }, - "minecraft:entity.generic.burn": { + "minecraft:entity.fox.bite": { "protocol_id": 426 }, - "minecraft:entity.generic.death": { + "minecraft:entity.fox.death": { "protocol_id": 427 }, - "minecraft:entity.generic.drink": { + "minecraft:entity.fox.eat": { "protocol_id": 428 }, - "minecraft:entity.generic.eat": { + "minecraft:entity.fox.hurt": { "protocol_id": 429 }, - "minecraft:entity.generic.explode": { + "minecraft:entity.fox.screech": { "protocol_id": 430 }, - "minecraft:entity.generic.extinguish_fire": { + "minecraft:entity.fox.sleep": { "protocol_id": 431 }, - "minecraft:entity.generic.hurt": { + "minecraft:entity.fox.sniff": { "protocol_id": 432 }, - "minecraft:entity.generic.small_fall": { + "minecraft:entity.fox.spit": { "protocol_id": 433 }, - "minecraft:entity.generic.splash": { + "minecraft:entity.fox.teleport": { "protocol_id": 434 }, - "minecraft:entity.generic.swim": { - "protocol_id": 435 + "minecraft:entity.frog.ambient": { + "protocol_id": 446 }, - "minecraft:entity.ghast.ambient": { - "protocol_id": 436 + "minecraft:entity.frog.death": { + "protocol_id": 447 }, - "minecraft:entity.ghast.death": { - "protocol_id": 437 + "minecraft:entity.frog.eat": { + "protocol_id": 448 }, - "minecraft:entity.ghast.hurt": { - "protocol_id": 438 + "minecraft:entity.frog.hurt": { + "protocol_id": 449 }, - "minecraft:entity.ghast.scream": { - "protocol_id": 439 + "minecraft:entity.frog.lay_spawn": { + "protocol_id": 450 }, - "minecraft:entity.ghast.shoot": { - "protocol_id": 440 + "minecraft:entity.frog.long_jump": { + "protocol_id": 451 }, - "minecraft:entity.ghast.warn": { - "protocol_id": 441 + "minecraft:entity.frog.step": { + "protocol_id": 452 }, - "minecraft:entity.glow_item_frame.add_item": { + "minecraft:entity.frog.tongue": { "protocol_id": 453 }, - "minecraft:entity.glow_item_frame.break": { - "protocol_id": 454 - }, - "minecraft:entity.glow_item_frame.place": { - "protocol_id": 455 - }, - "minecraft:entity.glow_item_frame.remove_item": { - "protocol_id": 456 - }, - "minecraft:entity.glow_item_frame.rotate_item": { - "protocol_id": 457 - }, - "minecraft:entity.glow_squid.ambient": { - "protocol_id": 458 - }, - "minecraft:entity.glow_squid.death": { - "protocol_id": 459 - }, - "minecraft:entity.glow_squid.hurt": { + "minecraft:entity.generic.big_fall": { "protocol_id": 460 }, - "minecraft:entity.glow_squid.squirt": { + "minecraft:entity.generic.burn": { "protocol_id": 461 }, - "minecraft:entity.goat.ambient": { + "minecraft:entity.generic.death": { "protocol_id": 462 }, - "minecraft:entity.goat.death": { + "minecraft:entity.generic.drink": { "protocol_id": 463 }, - "minecraft:entity.goat.eat": { + "minecraft:entity.generic.eat": { "protocol_id": 464 }, - "minecraft:entity.goat.horn_break": { - "protocol_id": 470 - }, - "minecraft:entity.goat.hurt": { + "minecraft:entity.generic.explode": { "protocol_id": 465 }, - "minecraft:entity.goat.long_jump": { + "minecraft:entity.generic.extinguish_fire": { "protocol_id": 466 }, - "minecraft:entity.goat.milk": { + "minecraft:entity.generic.hurt": { "protocol_id": 467 }, - "minecraft:entity.goat.prepare_ram": { + "minecraft:entity.generic.small_fall": { "protocol_id": 468 }, - "minecraft:entity.goat.ram_impact": { + "minecraft:entity.generic.splash": { "protocol_id": 469 }, - "minecraft:entity.goat.screaming.ambient": { + "minecraft:entity.generic.swim": { + "protocol_id": 470 + }, + "minecraft:entity.ghast.ambient": { + "protocol_id": 471 + }, + "minecraft:entity.ghast.death": { "protocol_id": 472 }, - "minecraft:entity.goat.screaming.death": { + "minecraft:entity.ghast.hurt": { "protocol_id": 473 }, - "minecraft:entity.goat.screaming.eat": { + "minecraft:entity.ghast.scream": { "protocol_id": 474 }, - "minecraft:entity.goat.screaming.horn_break": { - "protocol_id": 480 - }, - "minecraft:entity.goat.screaming.hurt": { + "minecraft:entity.ghast.shoot": { "protocol_id": 475 }, - "minecraft:entity.goat.screaming.long_jump": { + "minecraft:entity.ghast.warn": { "protocol_id": 476 }, - "minecraft:entity.goat.screaming.milk": { - "protocol_id": 477 + "minecraft:entity.glow_item_frame.add_item": { + "protocol_id": 488 }, - "minecraft:entity.goat.screaming.prepare_ram": { - "protocol_id": 478 + "minecraft:entity.glow_item_frame.break": { + "protocol_id": 489 }, - "minecraft:entity.goat.screaming.ram_impact": { - "protocol_id": 479 + "minecraft:entity.glow_item_frame.place": { + "protocol_id": 490 }, - "minecraft:entity.goat.step": { - "protocol_id": 481 + "minecraft:entity.glow_item_frame.remove_item": { + "protocol_id": 491 }, - "minecraft:entity.guardian.ambient": { + "minecraft:entity.glow_item_frame.rotate_item": { + "protocol_id": 492 + }, + "minecraft:entity.glow_squid.ambient": { + "protocol_id": 493 + }, + "minecraft:entity.glow_squid.death": { "protocol_id": 494 }, - "minecraft:entity.guardian.ambient_land": { + "minecraft:entity.glow_squid.hurt": { "protocol_id": 495 }, - "minecraft:entity.guardian.attack": { + "minecraft:entity.glow_squid.squirt": { "protocol_id": 496 }, - "minecraft:entity.guardian.death": { + "minecraft:entity.goat.ambient": { "protocol_id": 497 }, - "minecraft:entity.guardian.death_land": { + "minecraft:entity.goat.death": { "protocol_id": 498 }, - "minecraft:entity.guardian.flop": { + "minecraft:entity.goat.eat": { "protocol_id": 499 }, - "minecraft:entity.guardian.hurt": { + "minecraft:entity.goat.horn_break": { + "protocol_id": 505 + }, + "minecraft:entity.goat.hurt": { "protocol_id": 500 }, - "minecraft:entity.guardian.hurt_land": { + "minecraft:entity.goat.long_jump": { "protocol_id": 501 }, - "minecraft:entity.hoglin.ambient": { + "minecraft:entity.goat.milk": { + "protocol_id": 502 + }, + "minecraft:entity.goat.prepare_ram": { + "protocol_id": 503 + }, + "minecraft:entity.goat.ram_impact": { + "protocol_id": 504 + }, + "minecraft:entity.goat.screaming.ambient": { + "protocol_id": 507 + }, + "minecraft:entity.goat.screaming.death": { "protocol_id": 508 }, - "minecraft:entity.hoglin.angry": { + "minecraft:entity.goat.screaming.eat": { "protocol_id": 509 }, - "minecraft:entity.hoglin.attack": { - "protocol_id": 510 - }, - "minecraft:entity.hoglin.converted_to_zombified": { - "protocol_id": 511 - }, - "minecraft:entity.hoglin.death": { - "protocol_id": 512 - }, - "minecraft:entity.hoglin.hurt": { - "protocol_id": 513 - }, - "minecraft:entity.hoglin.retreat": { - "protocol_id": 514 - }, - "minecraft:entity.hoglin.step": { + "minecraft:entity.goat.screaming.horn_break": { "protocol_id": 515 }, - "minecraft:entity.horse.ambient": { + "minecraft:entity.goat.screaming.hurt": { + "protocol_id": 510 + }, + "minecraft:entity.goat.screaming.long_jump": { + "protocol_id": 511 + }, + "minecraft:entity.goat.screaming.milk": { + "protocol_id": 512 + }, + "minecraft:entity.goat.screaming.prepare_ram": { + "protocol_id": 513 + }, + "minecraft:entity.goat.screaming.ram_impact": { + "protocol_id": 514 + }, + "minecraft:entity.goat.step": { + "protocol_id": 516 + }, + "minecraft:entity.guardian.ambient": { + "protocol_id": 529 + }, + "minecraft:entity.guardian.ambient_land": { + "protocol_id": 530 + }, + "minecraft:entity.guardian.attack": { + "protocol_id": 531 + }, + "minecraft:entity.guardian.death": { "protocol_id": 532 }, - "minecraft:entity.horse.angry": { + "minecraft:entity.guardian.death_land": { "protocol_id": 533 }, - "minecraft:entity.horse.armor": { + "minecraft:entity.guardian.flop": { "protocol_id": 534 }, - "minecraft:entity.horse.breathe": { + "minecraft:entity.guardian.hurt": { "protocol_id": 535 }, - "minecraft:entity.horse.death": { + "minecraft:entity.guardian.hurt_land": { "protocol_id": 536 }, - "minecraft:entity.horse.eat": { - "protocol_id": 537 - }, - "minecraft:entity.horse.gallop": { - "protocol_id": 538 - }, - "minecraft:entity.horse.hurt": { - "protocol_id": 539 - }, - "minecraft:entity.horse.jump": { - "protocol_id": 540 - }, - "minecraft:entity.horse.land": { - "protocol_id": 541 - }, - "minecraft:entity.horse.saddle": { - "protocol_id": 542 - }, - "minecraft:entity.horse.step": { - "protocol_id": 543 - }, - "minecraft:entity.horse.step_wood": { - "protocol_id": 544 - }, - "minecraft:entity.hostile.big_fall": { - "protocol_id": 545 - }, - "minecraft:entity.hostile.death": { - "protocol_id": 546 - }, - "minecraft:entity.hostile.hurt": { - "protocol_id": 547 - }, - "minecraft:entity.hostile.small_fall": { - "protocol_id": 548 - }, - "minecraft:entity.hostile.splash": { - "protocol_id": 549 - }, - "minecraft:entity.hostile.swim": { - "protocol_id": 550 - }, - "minecraft:entity.husk.ambient": { - "protocol_id": 551 - }, - "minecraft:entity.husk.converted_to_zombie": { - "protocol_id": 552 - }, - "minecraft:entity.husk.death": { - "protocol_id": 553 - }, - "minecraft:entity.husk.hurt": { - "protocol_id": 554 - }, - "minecraft:entity.husk.step": { - "protocol_id": 555 - }, - "minecraft:entity.illusioner.ambient": { - "protocol_id": 556 - }, - "minecraft:entity.illusioner.cast_spell": { - "protocol_id": 557 - }, - "minecraft:entity.illusioner.death": { + "minecraft:entity.hoglin.ambient": { "protocol_id": 558 }, - "minecraft:entity.illusioner.hurt": { + "minecraft:entity.hoglin.angry": { "protocol_id": 559 }, - "minecraft:entity.illusioner.mirror_move": { + "minecraft:entity.hoglin.attack": { "protocol_id": 560 }, - "minecraft:entity.illusioner.prepare_blindness": { + "minecraft:entity.hoglin.converted_to_zombified": { "protocol_id": 561 }, - "minecraft:entity.illusioner.prepare_mirror": { + "minecraft:entity.hoglin.death": { "protocol_id": 562 }, - "minecraft:entity.iron_golem.attack": { - "protocol_id": 566 + "minecraft:entity.hoglin.hurt": { + "protocol_id": 563 }, - "minecraft:entity.iron_golem.damage": { - "protocol_id": 567 + "minecraft:entity.hoglin.retreat": { + "protocol_id": 564 }, - "minecraft:entity.iron_golem.death": { - "protocol_id": 568 + "minecraft:entity.hoglin.step": { + "protocol_id": 565 }, - "minecraft:entity.iron_golem.hurt": { - "protocol_id": 569 + "minecraft:entity.horse.ambient": { + "protocol_id": 582 }, - "minecraft:entity.iron_golem.repair": { - "protocol_id": 570 + "minecraft:entity.horse.angry": { + "protocol_id": 583 }, - "minecraft:entity.iron_golem.step": { - "protocol_id": 571 + "minecraft:entity.horse.armor": { + "protocol_id": 584 }, - "minecraft:entity.item.break": { - "protocol_id": 579 + "minecraft:entity.horse.breathe": { + "protocol_id": 585 }, - "minecraft:entity.item.pickup": { - "protocol_id": 580 + "minecraft:entity.horse.death": { + "protocol_id": 586 }, - "minecraft:entity.item_frame.add_item": { - "protocol_id": 574 + "minecraft:entity.horse.eat": { + "protocol_id": 587 }, - "minecraft:entity.item_frame.break": { - "protocol_id": 575 + "minecraft:entity.horse.gallop": { + "protocol_id": 588 }, - "minecraft:entity.item_frame.place": { - "protocol_id": 576 + "minecraft:entity.horse.hurt": { + "protocol_id": 589 }, - "minecraft:entity.item_frame.remove_item": { - "protocol_id": 577 + "minecraft:entity.horse.jump": { + "protocol_id": 590 }, - "minecraft:entity.item_frame.rotate_item": { - "protocol_id": 578 + "minecraft:entity.horse.land": { + "protocol_id": 591 }, - "minecraft:entity.leash_knot.break": { + "minecraft:entity.horse.saddle": { + "protocol_id": 592 + }, + "minecraft:entity.horse.step": { + "protocol_id": 593 + }, + "minecraft:entity.horse.step_wood": { + "protocol_id": 594 + }, + "minecraft:entity.hostile.big_fall": { + "protocol_id": 595 + }, + "minecraft:entity.hostile.death": { "protocol_id": 596 }, - "minecraft:entity.leash_knot.place": { + "minecraft:entity.hostile.hurt": { "protocol_id": 597 }, - "minecraft:entity.lightning_bolt.impact": { + "minecraft:entity.hostile.small_fall": { + "protocol_id": 598 + }, + "minecraft:entity.hostile.splash": { "protocol_id": 599 }, - "minecraft:entity.lightning_bolt.thunder": { + "minecraft:entity.hostile.swim": { "protocol_id": 600 }, - "minecraft:entity.lingering_potion.throw": { + "minecraft:entity.husk.ambient": { "protocol_id": 601 }, - "minecraft:entity.llama.ambient": { + "minecraft:entity.husk.converted_to_zombie": { "protocol_id": 602 }, - "minecraft:entity.llama.angry": { + "minecraft:entity.husk.death": { "protocol_id": 603 }, - "minecraft:entity.llama.chest": { + "minecraft:entity.husk.hurt": { "protocol_id": 604 }, - "minecraft:entity.llama.death": { + "minecraft:entity.husk.step": { "protocol_id": 605 }, - "minecraft:entity.llama.eat": { + "minecraft:entity.illusioner.ambient": { "protocol_id": 606 }, - "minecraft:entity.llama.hurt": { + "minecraft:entity.illusioner.cast_spell": { "protocol_id": 607 }, - "minecraft:entity.llama.spit": { + "minecraft:entity.illusioner.death": { "protocol_id": 608 }, - "minecraft:entity.llama.step": { + "minecraft:entity.illusioner.hurt": { "protocol_id": 609 }, - "minecraft:entity.llama.swag": { + "minecraft:entity.illusioner.mirror_move": { "protocol_id": 610 }, - "minecraft:entity.magma_cube.death": { - "protocol_id": 618 - }, - "minecraft:entity.magma_cube.death_small": { + "minecraft:entity.illusioner.prepare_blindness": { "protocol_id": 611 }, - "minecraft:entity.magma_cube.hurt": { + "minecraft:entity.illusioner.prepare_mirror": { + "protocol_id": 612 + }, + "minecraft:entity.iron_golem.attack": { + "protocol_id": 616 + }, + "minecraft:entity.iron_golem.damage": { + "protocol_id": 617 + }, + "minecraft:entity.iron_golem.death": { + "protocol_id": 618 + }, + "minecraft:entity.iron_golem.hurt": { "protocol_id": 619 }, - "minecraft:entity.magma_cube.hurt_small": { + "minecraft:entity.iron_golem.repair": { "protocol_id": 620 }, - "minecraft:entity.magma_cube.jump": { + "minecraft:entity.iron_golem.step": { "protocol_id": 621 }, - "minecraft:entity.magma_cube.squish": { - "protocol_id": 622 + "minecraft:entity.item.break": { + "protocol_id": 629 }, - "minecraft:entity.magma_cube.squish_small": { - "protocol_id": 623 + "minecraft:entity.item.pickup": { + "protocol_id": 630 }, - "minecraft:entity.minecart.inside": { - "protocol_id": 639 + "minecraft:entity.item_frame.add_item": { + "protocol_id": 624 }, - "minecraft:entity.minecart.inside.underwater": { - "protocol_id": 638 + "minecraft:entity.item_frame.break": { + "protocol_id": 625 }, - "minecraft:entity.minecart.riding": { - "protocol_id": 640 + "minecraft:entity.item_frame.place": { + "protocol_id": 626 }, - "minecraft:entity.mooshroom.convert": { - "protocol_id": 641 + "minecraft:entity.item_frame.remove_item": { + "protocol_id": 627 }, - "minecraft:entity.mooshroom.eat": { - "protocol_id": 642 + "minecraft:entity.item_frame.rotate_item": { + "protocol_id": 628 }, - "minecraft:entity.mooshroom.milk": { - "protocol_id": 643 + "minecraft:entity.leash_knot.break": { + "protocol_id": 646 }, - "minecraft:entity.mooshroom.shear": { - "protocol_id": 645 + "minecraft:entity.leash_knot.place": { + "protocol_id": 647 }, - "minecraft:entity.mooshroom.suspicious_milk": { - "protocol_id": 644 + "minecraft:entity.lightning_bolt.impact": { + "protocol_id": 649 }, - "minecraft:entity.mule.ambient": { + "minecraft:entity.lightning_bolt.thunder": { + "protocol_id": 650 + }, + "minecraft:entity.lingering_potion.throw": { + "protocol_id": 651 + }, + "minecraft:entity.llama.ambient": { + "protocol_id": 652 + }, + "minecraft:entity.llama.angry": { + "protocol_id": 653 + }, + "minecraft:entity.llama.chest": { + "protocol_id": 654 + }, + "minecraft:entity.llama.death": { + "protocol_id": 655 + }, + "minecraft:entity.llama.eat": { + "protocol_id": 656 + }, + "minecraft:entity.llama.hurt": { + "protocol_id": 657 + }, + "minecraft:entity.llama.spit": { + "protocol_id": 658 + }, + "minecraft:entity.llama.step": { + "protocol_id": 659 + }, + "minecraft:entity.llama.swag": { + "protocol_id": 660 + }, + "minecraft:entity.magma_cube.death": { + "protocol_id": 668 + }, + "minecraft:entity.magma_cube.death_small": { + "protocol_id": 661 + }, + "minecraft:entity.magma_cube.hurt": { + "protocol_id": 669 + }, + "minecraft:entity.magma_cube.hurt_small": { + "protocol_id": 670 + }, + "minecraft:entity.magma_cube.jump": { "protocol_id": 671 }, - "minecraft:entity.mule.angry": { + "minecraft:entity.magma_cube.squish": { "protocol_id": 672 }, - "minecraft:entity.mule.chest": { + "minecraft:entity.magma_cube.squish_small": { "protocol_id": 673 }, + "minecraft:entity.minecart.inside": { + "protocol_id": 689 + }, + "minecraft:entity.minecart.inside.underwater": { + "protocol_id": 688 + }, + "minecraft:entity.minecart.riding": { + "protocol_id": 690 + }, + "minecraft:entity.mooshroom.convert": { + "protocol_id": 691 + }, + "minecraft:entity.mooshroom.eat": { + "protocol_id": 692 + }, + "minecraft:entity.mooshroom.milk": { + "protocol_id": 693 + }, + "minecraft:entity.mooshroom.shear": { + "protocol_id": 695 + }, + "minecraft:entity.mooshroom.suspicious_milk": { + "protocol_id": 694 + }, + "minecraft:entity.mule.ambient": { + "protocol_id": 721 + }, + "minecraft:entity.mule.angry": { + "protocol_id": 722 + }, + "minecraft:entity.mule.chest": { + "protocol_id": 723 + }, "minecraft:entity.mule.death": { - "protocol_id": 674 + "protocol_id": 724 }, "minecraft:entity.mule.eat": { - "protocol_id": 675 + "protocol_id": 725 }, "minecraft:entity.mule.hurt": { - "protocol_id": 676 + "protocol_id": 726 }, "minecraft:entity.ocelot.ambient": { - "protocol_id": 785 - }, - "minecraft:entity.ocelot.death": { - "protocol_id": 786 - }, - "minecraft:entity.ocelot.hurt": { - "protocol_id": 784 - }, - "minecraft:entity.painting.break": { - "protocol_id": 787 - }, - "minecraft:entity.painting.place": { - "protocol_id": 788 - }, - "minecraft:entity.panda.aggressive_ambient": { - "protocol_id": 796 - }, - "minecraft:entity.panda.ambient": { - "protocol_id": 791 - }, - "minecraft:entity.panda.bite": { - "protocol_id": 799 - }, - "minecraft:entity.panda.cant_breed": { - "protocol_id": 795 - }, - "minecraft:entity.panda.death": { - "protocol_id": 792 - }, - "minecraft:entity.panda.eat": { - "protocol_id": 793 - }, - "minecraft:entity.panda.hurt": { - "protocol_id": 798 - }, - "minecraft:entity.panda.pre_sneeze": { - "protocol_id": 789 - }, - "minecraft:entity.panda.sneeze": { - "protocol_id": 790 - }, - "minecraft:entity.panda.step": { - "protocol_id": 794 - }, - "minecraft:entity.panda.worried_ambient": { - "protocol_id": 797 - }, - "minecraft:entity.parrot.ambient": { - "protocol_id": 800 - }, - "minecraft:entity.parrot.death": { - "protocol_id": 801 - }, - "minecraft:entity.parrot.eat": { - "protocol_id": 802 - }, - "minecraft:entity.parrot.fly": { - "protocol_id": 803 - }, - "minecraft:entity.parrot.hurt": { - "protocol_id": 804 - }, - "minecraft:entity.parrot.imitate.blaze": { - "protocol_id": 805 - }, - "minecraft:entity.parrot.imitate.creeper": { - "protocol_id": 806 - }, - "minecraft:entity.parrot.imitate.drowned": { - "protocol_id": 807 - }, - "minecraft:entity.parrot.imitate.elder_guardian": { - "protocol_id": 808 - }, - "minecraft:entity.parrot.imitate.ender_dragon": { - "protocol_id": 809 - }, - "minecraft:entity.parrot.imitate.endermite": { - "protocol_id": 810 - }, - "minecraft:entity.parrot.imitate.evoker": { - "protocol_id": 811 - }, - "minecraft:entity.parrot.imitate.ghast": { - "protocol_id": 812 - }, - "minecraft:entity.parrot.imitate.guardian": { - "protocol_id": 813 - }, - "minecraft:entity.parrot.imitate.hoglin": { - "protocol_id": 814 - }, - "minecraft:entity.parrot.imitate.husk": { - "protocol_id": 815 - }, - "minecraft:entity.parrot.imitate.illusioner": { - "protocol_id": 816 - }, - "minecraft:entity.parrot.imitate.magma_cube": { - "protocol_id": 817 - }, - "minecraft:entity.parrot.imitate.phantom": { - "protocol_id": 818 - }, - "minecraft:entity.parrot.imitate.piglin": { - "protocol_id": 819 - }, - "minecraft:entity.parrot.imitate.piglin_brute": { - "protocol_id": 820 - }, - "minecraft:entity.parrot.imitate.pillager": { - "protocol_id": 821 - }, - "minecraft:entity.parrot.imitate.ravager": { - "protocol_id": 822 - }, - "minecraft:entity.parrot.imitate.shulker": { - "protocol_id": 823 - }, - "minecraft:entity.parrot.imitate.silverfish": { - "protocol_id": 824 - }, - "minecraft:entity.parrot.imitate.skeleton": { - "protocol_id": 825 - }, - "minecraft:entity.parrot.imitate.slime": { - "protocol_id": 826 - }, - "minecraft:entity.parrot.imitate.spider": { - "protocol_id": 827 - }, - "minecraft:entity.parrot.imitate.stray": { - "protocol_id": 828 - }, - "minecraft:entity.parrot.imitate.vex": { - "protocol_id": 829 - }, - "minecraft:entity.parrot.imitate.vindicator": { - "protocol_id": 830 - }, - "minecraft:entity.parrot.imitate.warden": { - "protocol_id": 831 - }, - "minecraft:entity.parrot.imitate.witch": { - "protocol_id": 832 - }, - "minecraft:entity.parrot.imitate.wither": { - "protocol_id": 833 - }, - "minecraft:entity.parrot.imitate.wither_skeleton": { - "protocol_id": 834 - }, - "minecraft:entity.parrot.imitate.zoglin": { - "protocol_id": 835 - }, - "minecraft:entity.parrot.imitate.zombie": { - "protocol_id": 836 - }, - "minecraft:entity.parrot.imitate.zombie_villager": { - "protocol_id": 837 - }, - "minecraft:entity.parrot.step": { - "protocol_id": 838 - }, - "minecraft:entity.phantom.ambient": { - "protocol_id": 839 - }, - "minecraft:entity.phantom.bite": { - "protocol_id": 840 - }, - "minecraft:entity.phantom.death": { - "protocol_id": 841 - }, - "minecraft:entity.phantom.flap": { - "protocol_id": 842 - }, - "minecraft:entity.phantom.hurt": { - "protocol_id": 843 - }, - "minecraft:entity.phantom.swoop": { - "protocol_id": 844 - }, - "minecraft:entity.pig.ambient": { - "protocol_id": 845 - }, - "minecraft:entity.pig.death": { - "protocol_id": 846 - }, - "minecraft:entity.pig.hurt": { - "protocol_id": 847 - }, - "minecraft:entity.pig.saddle": { - "protocol_id": 848 - }, - "minecraft:entity.pig.step": { - "protocol_id": 849 - }, - "minecraft:entity.piglin.admiring_item": { - "protocol_id": 850 - }, - "minecraft:entity.piglin.ambient": { - "protocol_id": 851 - }, - "minecraft:entity.piglin.angry": { - "protocol_id": 852 - }, - "minecraft:entity.piglin.celebrate": { - "protocol_id": 853 - }, - "minecraft:entity.piglin.converted_to_zombified": { - "protocol_id": 859 - }, - "minecraft:entity.piglin.death": { - "protocol_id": 854 - }, - "minecraft:entity.piglin.hurt": { "protocol_id": 856 }, - "minecraft:entity.piglin.jealous": { - "protocol_id": 855 - }, - "minecraft:entity.piglin.retreat": { + "minecraft:entity.ocelot.death": { "protocol_id": 857 }, - "minecraft:entity.piglin.step": { + "minecraft:entity.ocelot.hurt": { + "protocol_id": 855 + }, + "minecraft:entity.painting.break": { "protocol_id": 858 }, - "minecraft:entity.piglin_brute.ambient": { - "protocol_id": 860 + "minecraft:entity.painting.place": { + "protocol_id": 859 }, - "minecraft:entity.piglin_brute.angry": { - "protocol_id": 861 - }, - "minecraft:entity.piglin_brute.converted_to_zombified": { - "protocol_id": 865 - }, - "minecraft:entity.piglin_brute.death": { - "protocol_id": 862 - }, - "minecraft:entity.piglin_brute.hurt": { - "protocol_id": 863 - }, - "minecraft:entity.piglin_brute.step": { - "protocol_id": 864 - }, - "minecraft:entity.pillager.ambient": { - "protocol_id": 866 - }, - "minecraft:entity.pillager.celebrate": { + "minecraft:entity.panda.aggressive_ambient": { "protocol_id": 867 }, - "minecraft:entity.pillager.death": { - "protocol_id": 868 + "minecraft:entity.panda.ambient": { + "protocol_id": 862 }, - "minecraft:entity.pillager.hurt": { + "minecraft:entity.panda.bite": { + "protocol_id": 870 + }, + "minecraft:entity.panda.cant_breed": { + "protocol_id": 866 + }, + "minecraft:entity.panda.death": { + "protocol_id": 863 + }, + "minecraft:entity.panda.eat": { + "protocol_id": 864 + }, + "minecraft:entity.panda.hurt": { "protocol_id": 869 }, - "minecraft:entity.player.attack.crit": { + "minecraft:entity.panda.pre_sneeze": { + "protocol_id": 860 + }, + "minecraft:entity.panda.sneeze": { + "protocol_id": 861 + }, + "minecraft:entity.panda.step": { + "protocol_id": 865 + }, + "minecraft:entity.panda.worried_ambient": { + "protocol_id": 868 + }, + "minecraft:entity.parrot.ambient": { + "protocol_id": 871 + }, + "minecraft:entity.parrot.death": { "protocol_id": 872 }, - "minecraft:entity.player.attack.knockback": { + "minecraft:entity.parrot.eat": { "protocol_id": 873 }, - "minecraft:entity.player.attack.nodamage": { + "minecraft:entity.parrot.fly": { "protocol_id": 874 }, - "minecraft:entity.player.attack.strong": { + "minecraft:entity.parrot.hurt": { "protocol_id": 875 }, - "minecraft:entity.player.attack.sweep": { + "minecraft:entity.parrot.imitate.blaze": { "protocol_id": 876 }, - "minecraft:entity.player.attack.weak": { + "minecraft:entity.parrot.imitate.creeper": { "protocol_id": 877 }, - "minecraft:entity.player.big_fall": { + "minecraft:entity.parrot.imitate.drowned": { "protocol_id": 878 }, - "minecraft:entity.player.breath": { + "minecraft:entity.parrot.imitate.elder_guardian": { "protocol_id": 879 }, - "minecraft:entity.player.burp": { + "minecraft:entity.parrot.imitate.ender_dragon": { "protocol_id": 880 }, - "minecraft:entity.player.death": { + "minecraft:entity.parrot.imitate.endermite": { "protocol_id": 881 }, - "minecraft:entity.player.hurt": { + "minecraft:entity.parrot.imitate.evoker": { "protocol_id": 882 }, - "minecraft:entity.player.hurt_drown": { + "minecraft:entity.parrot.imitate.ghast": { "protocol_id": 883 }, - "minecraft:entity.player.hurt_freeze": { + "minecraft:entity.parrot.imitate.guardian": { "protocol_id": 884 }, - "minecraft:entity.player.hurt_on_fire": { + "minecraft:entity.parrot.imitate.hoglin": { "protocol_id": 885 }, - "minecraft:entity.player.hurt_sweet_berry_bush": { + "minecraft:entity.parrot.imitate.husk": { "protocol_id": 886 }, - "minecraft:entity.player.levelup": { + "minecraft:entity.parrot.imitate.illusioner": { "protocol_id": 887 }, - "minecraft:entity.player.small_fall": { + "minecraft:entity.parrot.imitate.magma_cube": { "protocol_id": 888 }, - "minecraft:entity.player.splash": { + "minecraft:entity.parrot.imitate.phantom": { "protocol_id": 889 }, - "minecraft:entity.player.splash.high_speed": { + "minecraft:entity.parrot.imitate.piglin": { "protocol_id": 890 }, - "minecraft:entity.player.swim": { + "minecraft:entity.parrot.imitate.piglin_brute": { "protocol_id": 891 }, - "minecraft:entity.polar_bear.ambient": { + "minecraft:entity.parrot.imitate.pillager": { "protocol_id": 892 }, - "minecraft:entity.polar_bear.ambient_baby": { + "minecraft:entity.parrot.imitate.ravager": { "protocol_id": 893 }, - "minecraft:entity.polar_bear.death": { + "minecraft:entity.parrot.imitate.shulker": { "protocol_id": 894 }, - "minecraft:entity.polar_bear.hurt": { + "minecraft:entity.parrot.imitate.silverfish": { "protocol_id": 895 }, - "minecraft:entity.polar_bear.step": { + "minecraft:entity.parrot.imitate.skeleton": { "protocol_id": 896 }, - "minecraft:entity.polar_bear.warning": { + "minecraft:entity.parrot.imitate.slime": { "protocol_id": 897 }, - "minecraft:entity.puffer_fish.ambient": { + "minecraft:entity.parrot.imitate.spider": { + "protocol_id": 898 + }, + "minecraft:entity.parrot.imitate.stray": { + "protocol_id": 899 + }, + "minecraft:entity.parrot.imitate.vex": { + "protocol_id": 900 + }, + "minecraft:entity.parrot.imitate.vindicator": { + "protocol_id": 901 + }, + "minecraft:entity.parrot.imitate.warden": { + "protocol_id": 902 + }, + "minecraft:entity.parrot.imitate.witch": { + "protocol_id": 903 + }, + "minecraft:entity.parrot.imitate.wither": { + "protocol_id": 904 + }, + "minecraft:entity.parrot.imitate.wither_skeleton": { + "protocol_id": 905 + }, + "minecraft:entity.parrot.imitate.zoglin": { + "protocol_id": 906 + }, + "minecraft:entity.parrot.imitate.zombie": { + "protocol_id": 907 + }, + "minecraft:entity.parrot.imitate.zombie_villager": { + "protocol_id": 908 + }, + "minecraft:entity.parrot.step": { + "protocol_id": 909 + }, + "minecraft:entity.phantom.ambient": { + "protocol_id": 910 + }, + "minecraft:entity.phantom.bite": { "protocol_id": 911 }, - "minecraft:entity.puffer_fish.blow_out": { + "minecraft:entity.phantom.death": { "protocol_id": 912 }, - "minecraft:entity.puffer_fish.blow_up": { + "minecraft:entity.phantom.flap": { "protocol_id": 913 }, - "minecraft:entity.puffer_fish.death": { + "minecraft:entity.phantom.hurt": { "protocol_id": 914 }, - "minecraft:entity.puffer_fish.flop": { + "minecraft:entity.phantom.swoop": { "protocol_id": 915 }, - "minecraft:entity.puffer_fish.hurt": { + "minecraft:entity.pig.ambient": { "protocol_id": 916 }, - "minecraft:entity.puffer_fish.sting": { + "minecraft:entity.pig.death": { "protocol_id": 917 }, - "minecraft:entity.rabbit.ambient": { + "minecraft:entity.pig.hurt": { + "protocol_id": 918 + }, + "minecraft:entity.pig.saddle": { "protocol_id": 919 }, - "minecraft:entity.rabbit.attack": { + "minecraft:entity.pig.step": { "protocol_id": 920 }, - "minecraft:entity.rabbit.death": { + "minecraft:entity.piglin.admiring_item": { "protocol_id": 921 }, - "minecraft:entity.rabbit.hurt": { + "minecraft:entity.piglin.ambient": { "protocol_id": 922 }, - "minecraft:entity.rabbit.jump": { + "minecraft:entity.piglin.angry": { "protocol_id": 923 }, - "minecraft:entity.ravager.ambient": { - "protocol_id": 925 + "minecraft:entity.piglin.celebrate": { + "protocol_id": 924 }, - "minecraft:entity.ravager.attack": { - "protocol_id": 926 - }, - "minecraft:entity.ravager.celebrate": { - "protocol_id": 927 - }, - "minecraft:entity.ravager.death": { - "protocol_id": 928 - }, - "minecraft:entity.ravager.hurt": { - "protocol_id": 929 - }, - "minecraft:entity.ravager.roar": { - "protocol_id": 932 - }, - "minecraft:entity.ravager.step": { + "minecraft:entity.piglin.converted_to_zombified": { "protocol_id": 930 }, - "minecraft:entity.ravager.stunned": { + "minecraft:entity.piglin.death": { + "protocol_id": 925 + }, + "minecraft:entity.piglin.hurt": { + "protocol_id": 927 + }, + "minecraft:entity.piglin.jealous": { + "protocol_id": 926 + }, + "minecraft:entity.piglin.retreat": { + "protocol_id": 928 + }, + "minecraft:entity.piglin.step": { + "protocol_id": 929 + }, + "minecraft:entity.piglin_brute.ambient": { "protocol_id": 931 }, - "minecraft:entity.salmon.ambient": { + "minecraft:entity.piglin_brute.angry": { + "protocol_id": 932 + }, + "minecraft:entity.piglin_brute.converted_to_zombified": { + "protocol_id": 936 + }, + "minecraft:entity.piglin_brute.death": { + "protocol_id": 933 + }, + "minecraft:entity.piglin_brute.hurt": { + "protocol_id": 934 + }, + "minecraft:entity.piglin_brute.step": { + "protocol_id": 935 + }, + "minecraft:entity.pillager.ambient": { + "protocol_id": 937 + }, + "minecraft:entity.pillager.celebrate": { + "protocol_id": 938 + }, + "minecraft:entity.pillager.death": { + "protocol_id": 939 + }, + "minecraft:entity.pillager.hurt": { + "protocol_id": 940 + }, + "minecraft:entity.player.attack.crit": { + "protocol_id": 943 + }, + "minecraft:entity.player.attack.knockback": { + "protocol_id": 944 + }, + "minecraft:entity.player.attack.nodamage": { + "protocol_id": 945 + }, + "minecraft:entity.player.attack.strong": { + "protocol_id": 946 + }, + "minecraft:entity.player.attack.sweep": { + "protocol_id": 947 + }, + "minecraft:entity.player.attack.weak": { + "protocol_id": 948 + }, + "minecraft:entity.player.big_fall": { + "protocol_id": 949 + }, + "minecraft:entity.player.breath": { + "protocol_id": 950 + }, + "minecraft:entity.player.burp": { + "protocol_id": 951 + }, + "minecraft:entity.player.death": { + "protocol_id": 952 + }, + "minecraft:entity.player.hurt": { "protocol_id": 953 }, - "minecraft:entity.salmon.death": { + "minecraft:entity.player.hurt_drown": { "protocol_id": 954 }, - "minecraft:entity.salmon.flop": { + "minecraft:entity.player.hurt_freeze": { "protocol_id": 955 }, - "minecraft:entity.salmon.hurt": { + "minecraft:entity.player.hurt_on_fire": { "protocol_id": 956 }, - "minecraft:entity.sheep.ambient": { + "minecraft:entity.player.hurt_sweet_berry_bush": { + "protocol_id": 957 + }, + "minecraft:entity.player.levelup": { + "protocol_id": 958 + }, + "minecraft:entity.player.small_fall": { + "protocol_id": 959 + }, + "minecraft:entity.player.splash": { + "protocol_id": 960 + }, + "minecraft:entity.player.splash.high_speed": { + "protocol_id": 961 + }, + "minecraft:entity.player.swim": { + "protocol_id": 962 + }, + "minecraft:entity.polar_bear.ambient": { + "protocol_id": 963 + }, + "minecraft:entity.polar_bear.ambient_baby": { + "protocol_id": 964 + }, + "minecraft:entity.polar_bear.death": { + "protocol_id": 965 + }, + "minecraft:entity.polar_bear.hurt": { + "protocol_id": 966 + }, + "minecraft:entity.polar_bear.step": { + "protocol_id": 967 + }, + "minecraft:entity.polar_bear.warning": { + "protocol_id": 968 + }, + "minecraft:entity.puffer_fish.ambient": { + "protocol_id": 982 + }, + "minecraft:entity.puffer_fish.blow_out": { + "protocol_id": 983 + }, + "minecraft:entity.puffer_fish.blow_up": { + "protocol_id": 984 + }, + "minecraft:entity.puffer_fish.death": { + "protocol_id": 985 + }, + "minecraft:entity.puffer_fish.flop": { + "protocol_id": 986 + }, + "minecraft:entity.puffer_fish.hurt": { + "protocol_id": 987 + }, + "minecraft:entity.puffer_fish.sting": { + "protocol_id": 988 + }, + "minecraft:entity.rabbit.ambient": { + "protocol_id": 990 + }, + "minecraft:entity.rabbit.attack": { + "protocol_id": 991 + }, + "minecraft:entity.rabbit.death": { + "protocol_id": 992 + }, + "minecraft:entity.rabbit.hurt": { + "protocol_id": 993 + }, + "minecraft:entity.rabbit.jump": { + "protocol_id": 994 + }, + "minecraft:entity.ravager.ambient": { + "protocol_id": 996 + }, + "minecraft:entity.ravager.attack": { + "protocol_id": 997 + }, + "minecraft:entity.ravager.celebrate": { "protocol_id": 998 }, - "minecraft:entity.sheep.death": { + "minecraft:entity.ravager.death": { "protocol_id": 999 }, - "minecraft:entity.sheep.hurt": { + "minecraft:entity.ravager.hurt": { "protocol_id": 1000 }, - "minecraft:entity.sheep.shear": { + "minecraft:entity.ravager.roar": { + "protocol_id": 1003 + }, + "minecraft:entity.ravager.step": { "protocol_id": 1001 }, - "minecraft:entity.sheep.step": { + "minecraft:entity.ravager.stunned": { "protocol_id": 1002 }, - "minecraft:entity.shulker.ambient": { - "protocol_id": 1011 - }, - "minecraft:entity.shulker.close": { - "protocol_id": 1016 - }, - "minecraft:entity.shulker.death": { - "protocol_id": 1017 - }, - "minecraft:entity.shulker.hurt": { - "protocol_id": 1018 - }, - "minecraft:entity.shulker.hurt_closed": { - "protocol_id": 1019 - }, - "minecraft:entity.shulker.open": { - "protocol_id": 1020 - }, - "minecraft:entity.shulker.shoot": { - "protocol_id": 1021 - }, - "minecraft:entity.shulker.teleport": { - "protocol_id": 1022 - }, - "minecraft:entity.shulker_bullet.hit": { - "protocol_id": 1014 - }, - "minecraft:entity.shulker_bullet.hurt": { - "protocol_id": 1015 - }, - "minecraft:entity.silverfish.ambient": { - "protocol_id": 1023 - }, - "minecraft:entity.silverfish.death": { + "minecraft:entity.salmon.ambient": { "protocol_id": 1024 }, - "minecraft:entity.silverfish.hurt": { + "minecraft:entity.salmon.death": { "protocol_id": 1025 }, - "minecraft:entity.silverfish.step": { + "minecraft:entity.salmon.flop": { "protocol_id": 1026 }, - "minecraft:entity.skeleton.ambient": { + "minecraft:entity.salmon.hurt": { "protocol_id": 1027 }, - "minecraft:entity.skeleton.converted_to_stray": { - "protocol_id": 1028 + "minecraft:entity.sheep.ambient": { + "protocol_id": 1069 }, - "minecraft:entity.skeleton.death": { - "protocol_id": 1029 + "minecraft:entity.sheep.death": { + "protocol_id": 1070 }, - "minecraft:entity.skeleton.hurt": { - "protocol_id": 1038 + "minecraft:entity.sheep.hurt": { + "protocol_id": 1071 }, - "minecraft:entity.skeleton.shoot": { - "protocol_id": 1039 + "minecraft:entity.sheep.shear": { + "protocol_id": 1072 }, - "minecraft:entity.skeleton.step": { - "protocol_id": 1040 + "minecraft:entity.sheep.step": { + "protocol_id": 1073 }, - "minecraft:entity.skeleton_horse.ambient": { - "protocol_id": 1030 - }, - "minecraft:entity.skeleton_horse.ambient_water": { - "protocol_id": 1034 - }, - "minecraft:entity.skeleton_horse.death": { - "protocol_id": 1031 - }, - "minecraft:entity.skeleton_horse.gallop_water": { - "protocol_id": 1035 - }, - "minecraft:entity.skeleton_horse.hurt": { - "protocol_id": 1032 - }, - "minecraft:entity.skeleton_horse.jump_water": { - "protocol_id": 1036 - }, - "minecraft:entity.skeleton_horse.step_water": { - "protocol_id": 1037 - }, - "minecraft:entity.skeleton_horse.swim": { - "protocol_id": 1033 - }, - "minecraft:entity.slime.attack": { - "protocol_id": 1041 - }, - "minecraft:entity.slime.death": { - "protocol_id": 1042 - }, - "minecraft:entity.slime.death_small": { - "protocol_id": 1083 - }, - "minecraft:entity.slime.hurt": { - "protocol_id": 1043 - }, - "minecraft:entity.slime.hurt_small": { - "protocol_id": 1084 - }, - "minecraft:entity.slime.jump": { - "protocol_id": 1044 - }, - "minecraft:entity.slime.jump_small": { - "protocol_id": 1085 - }, - "minecraft:entity.slime.squish": { - "protocol_id": 1045 - }, - "minecraft:entity.slime.squish_small": { - "protocol_id": 1086 - }, - "minecraft:entity.snow_golem.ambient": { - "protocol_id": 1092 - }, - "minecraft:entity.snow_golem.death": { - "protocol_id": 1093 - }, - "minecraft:entity.snow_golem.hurt": { - "protocol_id": 1094 - }, - "minecraft:entity.snow_golem.shear": { - "protocol_id": 1096 - }, - "minecraft:entity.snow_golem.shoot": { - "protocol_id": 1095 - }, - "minecraft:entity.snowball.throw": { - "protocol_id": 1089 - }, - "minecraft:entity.spider.ambient": { - "protocol_id": 1100 - }, - "minecraft:entity.spider.death": { - "protocol_id": 1101 - }, - "minecraft:entity.spider.hurt": { - "protocol_id": 1102 - }, - "minecraft:entity.spider.step": { - "protocol_id": 1103 - }, - "minecraft:entity.splash_potion.break": { - "protocol_id": 1104 - }, - "minecraft:entity.splash_potion.throw": { - "protocol_id": 1105 - }, - "minecraft:entity.squid.ambient": { - "protocol_id": 1108 - }, - "minecraft:entity.squid.death": { - "protocol_id": 1109 - }, - "minecraft:entity.squid.hurt": { - "protocol_id": 1110 - }, - "minecraft:entity.squid.squirt": { - "protocol_id": 1111 - }, - "minecraft:entity.stray.ambient": { - "protocol_id": 1121 - }, - "minecraft:entity.stray.death": { - "protocol_id": 1122 - }, - "minecraft:entity.stray.hurt": { - "protocol_id": 1123 - }, - "minecraft:entity.stray.step": { - "protocol_id": 1124 - }, - "minecraft:entity.strider.ambient": { - "protocol_id": 1074 - }, - "minecraft:entity.strider.death": { - "protocol_id": 1077 - }, - "minecraft:entity.strider.eat": { - "protocol_id": 1081 - }, - "minecraft:entity.strider.happy": { - "protocol_id": 1075 - }, - "minecraft:entity.strider.hurt": { - "protocol_id": 1078 - }, - "minecraft:entity.strider.retreat": { - "protocol_id": 1076 - }, - "minecraft:entity.strider.saddle": { + "minecraft:entity.shulker.ambient": { "protocol_id": 1082 }, - "minecraft:entity.strider.step": { - "protocol_id": 1079 + "minecraft:entity.shulker.close": { + "protocol_id": 1087 }, - "minecraft:entity.strider.step_lava": { - "protocol_id": 1080 + "minecraft:entity.shulker.death": { + "protocol_id": 1088 }, - "minecraft:entity.tadpole.death": { - "protocol_id": 1128 + "minecraft:entity.shulker.hurt": { + "protocol_id": 1089 }, - "minecraft:entity.tadpole.flop": { - "protocol_id": 1129 + "minecraft:entity.shulker.hurt_closed": { + "protocol_id": 1090 }, - "minecraft:entity.tadpole.grow_up": { - "protocol_id": 1130 + "minecraft:entity.shulker.open": { + "protocol_id": 1091 }, - "minecraft:entity.tadpole.hurt": { - "protocol_id": 1131 + "minecraft:entity.shulker.shoot": { + "protocol_id": 1092 }, - "minecraft:entity.tnt.primed": { - "protocol_id": 1133 + "minecraft:entity.shulker.teleport": { + "protocol_id": 1093 }, - "minecraft:entity.tropical_fish.ambient": { - "protocol_id": 1147 + "minecraft:entity.shulker_bullet.hit": { + "protocol_id": 1085 }, - "minecraft:entity.tropical_fish.death": { - "protocol_id": 1148 + "minecraft:entity.shulker_bullet.hurt": { + "protocol_id": 1086 }, - "minecraft:entity.tropical_fish.flop": { - "protocol_id": 1149 + "minecraft:entity.silverfish.ambient": { + "protocol_id": 1094 }, - "minecraft:entity.tropical_fish.hurt": { - "protocol_id": 1150 + "minecraft:entity.silverfish.death": { + "protocol_id": 1095 }, - "minecraft:entity.turtle.ambient_land": { + "minecraft:entity.silverfish.hurt": { + "protocol_id": 1096 + }, + "minecraft:entity.silverfish.step": { + "protocol_id": 1097 + }, + "minecraft:entity.skeleton.ambient": { + "protocol_id": 1098 + }, + "minecraft:entity.skeleton.converted_to_stray": { + "protocol_id": 1099 + }, + "minecraft:entity.skeleton.death": { + "protocol_id": 1100 + }, + "minecraft:entity.skeleton.hurt": { + "protocol_id": 1109 + }, + "minecraft:entity.skeleton.shoot": { + "protocol_id": 1110 + }, + "minecraft:entity.skeleton.step": { + "protocol_id": 1111 + }, + "minecraft:entity.skeleton_horse.ambient": { + "protocol_id": 1101 + }, + "minecraft:entity.skeleton_horse.ambient_water": { + "protocol_id": 1105 + }, + "minecraft:entity.skeleton_horse.death": { + "protocol_id": 1102 + }, + "minecraft:entity.skeleton_horse.gallop_water": { + "protocol_id": 1106 + }, + "minecraft:entity.skeleton_horse.hurt": { + "protocol_id": 1103 + }, + "minecraft:entity.skeleton_horse.jump_water": { + "protocol_id": 1107 + }, + "minecraft:entity.skeleton_horse.step_water": { + "protocol_id": 1108 + }, + "minecraft:entity.skeleton_horse.swim": { + "protocol_id": 1104 + }, + "minecraft:entity.slime.attack": { + "protocol_id": 1112 + }, + "minecraft:entity.slime.death": { + "protocol_id": 1113 + }, + "minecraft:entity.slime.death_small": { + "protocol_id": 1154 + }, + "minecraft:entity.slime.hurt": { + "protocol_id": 1114 + }, + "minecraft:entity.slime.hurt_small": { + "protocol_id": 1155 + }, + "minecraft:entity.slime.jump": { + "protocol_id": 1115 + }, + "minecraft:entity.slime.jump_small": { "protocol_id": 1156 }, - "minecraft:entity.turtle.death": { + "minecraft:entity.slime.squish": { + "protocol_id": 1116 + }, + "minecraft:entity.slime.squish_small": { "protocol_id": 1157 }, - "minecraft:entity.turtle.death_baby": { - "protocol_id": 1158 - }, - "minecraft:entity.turtle.egg_break": { - "protocol_id": 1159 - }, - "minecraft:entity.turtle.egg_crack": { - "protocol_id": 1160 - }, - "minecraft:entity.turtle.egg_hatch": { - "protocol_id": 1161 - }, - "minecraft:entity.turtle.hurt": { - "protocol_id": 1162 - }, - "minecraft:entity.turtle.hurt_baby": { + "minecraft:entity.snow_golem.ambient": { "protocol_id": 1163 }, - "minecraft:entity.turtle.lay_egg": { + "minecraft:entity.snow_golem.death": { "protocol_id": 1164 }, - "minecraft:entity.turtle.shamble": { + "minecraft:entity.snow_golem.hurt": { "protocol_id": 1165 }, - "minecraft:entity.turtle.shamble_baby": { - "protocol_id": 1166 - }, - "minecraft:entity.turtle.swim": { + "minecraft:entity.snow_golem.shear": { "protocol_id": 1167 }, - "minecraft:entity.vex.ambient": { - "protocol_id": 1177 + "minecraft:entity.snow_golem.shoot": { + "protocol_id": 1166 }, - "minecraft:entity.vex.charge": { - "protocol_id": 1178 + "minecraft:entity.snowball.throw": { + "protocol_id": 1160 }, - "minecraft:entity.vex.death": { + "minecraft:entity.spider.ambient": { + "protocol_id": 1171 + }, + "minecraft:entity.spider.death": { + "protocol_id": 1172 + }, + "minecraft:entity.spider.hurt": { + "protocol_id": 1173 + }, + "minecraft:entity.spider.step": { + "protocol_id": 1174 + }, + "minecraft:entity.splash_potion.break": { + "protocol_id": 1175 + }, + "minecraft:entity.splash_potion.throw": { + "protocol_id": 1176 + }, + "minecraft:entity.squid.ambient": { "protocol_id": 1179 }, - "minecraft:entity.vex.hurt": { + "minecraft:entity.squid.death": { "protocol_id": 1180 }, - "minecraft:entity.villager.ambient": { + "minecraft:entity.squid.hurt": { "protocol_id": 1181 }, - "minecraft:entity.villager.celebrate": { + "minecraft:entity.squid.squirt": { "protocol_id": 1182 }, - "minecraft:entity.villager.death": { - "protocol_id": 1183 - }, - "minecraft:entity.villager.hurt": { - "protocol_id": 1184 - }, - "minecraft:entity.villager.no": { - "protocol_id": 1185 - }, - "minecraft:entity.villager.trade": { - "protocol_id": 1186 - }, - "minecraft:entity.villager.work_armorer": { - "protocol_id": 1188 - }, - "minecraft:entity.villager.work_butcher": { - "protocol_id": 1189 - }, - "minecraft:entity.villager.work_cartographer": { - "protocol_id": 1190 - }, - "minecraft:entity.villager.work_cleric": { - "protocol_id": 1191 - }, - "minecraft:entity.villager.work_farmer": { + "minecraft:entity.stray.ambient": { "protocol_id": 1192 }, - "minecraft:entity.villager.work_fisherman": { + "minecraft:entity.stray.death": { "protocol_id": 1193 }, - "minecraft:entity.villager.work_fletcher": { + "minecraft:entity.stray.hurt": { "protocol_id": 1194 }, - "minecraft:entity.villager.work_leatherworker": { + "minecraft:entity.stray.step": { "protocol_id": 1195 }, - "minecraft:entity.villager.work_librarian": { - "protocol_id": 1196 + "minecraft:entity.strider.ambient": { + "protocol_id": 1145 }, - "minecraft:entity.villager.work_mason": { - "protocol_id": 1197 + "minecraft:entity.strider.death": { + "protocol_id": 1148 }, - "minecraft:entity.villager.work_shepherd": { - "protocol_id": 1198 + "minecraft:entity.strider.eat": { + "protocol_id": 1152 }, - "minecraft:entity.villager.work_toolsmith": { + "minecraft:entity.strider.happy": { + "protocol_id": 1146 + }, + "minecraft:entity.strider.hurt": { + "protocol_id": 1149 + }, + "minecraft:entity.strider.retreat": { + "protocol_id": 1147 + }, + "minecraft:entity.strider.saddle": { + "protocol_id": 1153 + }, + "minecraft:entity.strider.step": { + "protocol_id": 1150 + }, + "minecraft:entity.strider.step_lava": { + "protocol_id": 1151 + }, + "minecraft:entity.tadpole.death": { "protocol_id": 1199 }, - "minecraft:entity.villager.work_weaponsmith": { + "minecraft:entity.tadpole.flop": { "protocol_id": 1200 }, - "minecraft:entity.villager.yes": { - "protocol_id": 1187 - }, - "minecraft:entity.vindicator.ambient": { + "minecraft:entity.tadpole.grow_up": { "protocol_id": 1201 }, - "minecraft:entity.vindicator.celebrate": { + "minecraft:entity.tadpole.hurt": { "protocol_id": 1202 }, - "minecraft:entity.vindicator.death": { - "protocol_id": 1203 - }, - "minecraft:entity.vindicator.hurt": { + "minecraft:entity.tnt.primed": { "protocol_id": 1204 }, - "minecraft:entity.wandering_trader.ambient": { - "protocol_id": 1211 - }, - "minecraft:entity.wandering_trader.death": { - "protocol_id": 1212 - }, - "minecraft:entity.wandering_trader.disappeared": { - "protocol_id": 1213 - }, - "minecraft:entity.wandering_trader.drink_milk": { - "protocol_id": 1214 - }, - "minecraft:entity.wandering_trader.drink_potion": { - "protocol_id": 1215 - }, - "minecraft:entity.wandering_trader.hurt": { - "protocol_id": 1216 - }, - "minecraft:entity.wandering_trader.no": { - "protocol_id": 1217 - }, - "minecraft:entity.wandering_trader.reappeared": { + "minecraft:entity.tropical_fish.ambient": { "protocol_id": 1218 }, - "minecraft:entity.wandering_trader.trade": { + "minecraft:entity.tropical_fish.death": { "protocol_id": 1219 }, - "minecraft:entity.wandering_trader.yes": { + "minecraft:entity.tropical_fish.flop": { "protocol_id": 1220 }, - "minecraft:entity.warden.agitated": { + "minecraft:entity.tropical_fish.hurt": { "protocol_id": 1221 }, - "minecraft:entity.warden.ambient": { - "protocol_id": 1222 - }, - "minecraft:entity.warden.angry": { - "protocol_id": 1223 - }, - "minecraft:entity.warden.attack_impact": { - "protocol_id": 1224 - }, - "minecraft:entity.warden.death": { - "protocol_id": 1225 - }, - "minecraft:entity.warden.dig": { - "protocol_id": 1226 - }, - "minecraft:entity.warden.emerge": { + "minecraft:entity.turtle.ambient_land": { "protocol_id": 1227 }, - "minecraft:entity.warden.heartbeat": { + "minecraft:entity.turtle.death": { "protocol_id": 1228 }, - "minecraft:entity.warden.hurt": { + "minecraft:entity.turtle.death_baby": { "protocol_id": 1229 }, - "minecraft:entity.warden.listening": { + "minecraft:entity.turtle.egg_break": { "protocol_id": 1230 }, - "minecraft:entity.warden.listening_angry": { + "minecraft:entity.turtle.egg_crack": { "protocol_id": 1231 }, - "minecraft:entity.warden.nearby_close": { + "minecraft:entity.turtle.egg_hatch": { "protocol_id": 1232 }, - "minecraft:entity.warden.nearby_closer": { + "minecraft:entity.turtle.hurt": { "protocol_id": 1233 }, - "minecraft:entity.warden.nearby_closest": { + "minecraft:entity.turtle.hurt_baby": { "protocol_id": 1234 }, - "minecraft:entity.warden.roar": { + "minecraft:entity.turtle.lay_egg": { "protocol_id": 1235 }, - "minecraft:entity.warden.sniff": { + "minecraft:entity.turtle.shamble": { "protocol_id": 1236 }, - "minecraft:entity.warden.sonic_boom": { + "minecraft:entity.turtle.shamble_baby": { "protocol_id": 1237 }, - "minecraft:entity.warden.sonic_charge": { + "minecraft:entity.turtle.swim": { "protocol_id": 1238 }, - "minecraft:entity.warden.step": { - "protocol_id": 1239 + "minecraft:entity.vex.ambient": { + "protocol_id": 1248 }, - "minecraft:entity.warden.tendril_clicks": { - "protocol_id": 1240 - }, - "minecraft:entity.witch.ambient": { + "minecraft:entity.vex.charge": { "protocol_id": 1249 }, - "minecraft:entity.witch.celebrate": { + "minecraft:entity.vex.death": { "protocol_id": 1250 }, - "minecraft:entity.witch.death": { + "minecraft:entity.vex.hurt": { "protocol_id": 1251 }, - "minecraft:entity.witch.drink": { + "minecraft:entity.villager.ambient": { "protocol_id": 1252 }, - "minecraft:entity.witch.hurt": { + "minecraft:entity.villager.celebrate": { "protocol_id": 1253 }, - "minecraft:entity.witch.throw": { + "minecraft:entity.villager.death": { "protocol_id": 1254 }, - "minecraft:entity.wither.ambient": { + "minecraft:entity.villager.hurt": { "protocol_id": 1255 }, - "minecraft:entity.wither.break_block": { + "minecraft:entity.villager.no": { "protocol_id": 1256 }, - "minecraft:entity.wither.death": { + "minecraft:entity.villager.trade": { "protocol_id": 1257 }, - "minecraft:entity.wither.hurt": { - "protocol_id": 1258 - }, - "minecraft:entity.wither.shoot": { + "minecraft:entity.villager.work_armorer": { "protocol_id": 1259 }, - "minecraft:entity.wither.spawn": { - "protocol_id": 1264 - }, - "minecraft:entity.wither_skeleton.ambient": { + "minecraft:entity.villager.work_butcher": { "protocol_id": 1260 }, - "minecraft:entity.wither_skeleton.death": { + "minecraft:entity.villager.work_cartographer": { "protocol_id": 1261 }, - "minecraft:entity.wither_skeleton.hurt": { + "minecraft:entity.villager.work_cleric": { "protocol_id": 1262 }, - "minecraft:entity.wither_skeleton.step": { + "minecraft:entity.villager.work_farmer": { "protocol_id": 1263 }, - "minecraft:entity.wolf.ambient": { + "minecraft:entity.villager.work_fisherman": { + "protocol_id": 1264 + }, + "minecraft:entity.villager.work_fletcher": { "protocol_id": 1265 }, - "minecraft:entity.wolf.death": { + "minecraft:entity.villager.work_leatherworker": { "protocol_id": 1266 }, - "minecraft:entity.wolf.growl": { + "minecraft:entity.villager.work_librarian": { "protocol_id": 1267 }, - "minecraft:entity.wolf.howl": { + "minecraft:entity.villager.work_mason": { "protocol_id": 1268 }, - "minecraft:entity.wolf.hurt": { + "minecraft:entity.villager.work_shepherd": { "protocol_id": 1269 }, - "minecraft:entity.wolf.pant": { + "minecraft:entity.villager.work_toolsmith": { "protocol_id": 1270 }, - "minecraft:entity.wolf.shake": { + "minecraft:entity.villager.work_weaponsmith": { "protocol_id": 1271 }, - "minecraft:entity.wolf.step": { + "minecraft:entity.villager.yes": { + "protocol_id": 1258 + }, + "minecraft:entity.vindicator.ambient": { "protocol_id": 1272 }, - "minecraft:entity.wolf.whine": { + "minecraft:entity.vindicator.celebrate": { "protocol_id": 1273 }, - "minecraft:entity.zoglin.ambient": { + "minecraft:entity.vindicator.death": { + "protocol_id": 1274 + }, + "minecraft:entity.vindicator.hurt": { + "protocol_id": 1275 + }, + "minecraft:entity.wandering_trader.ambient": { + "protocol_id": 1282 + }, + "minecraft:entity.wandering_trader.death": { + "protocol_id": 1283 + }, + "minecraft:entity.wandering_trader.disappeared": { + "protocol_id": 1284 + }, + "minecraft:entity.wandering_trader.drink_milk": { + "protocol_id": 1285 + }, + "minecraft:entity.wandering_trader.drink_potion": { + "protocol_id": 1286 + }, + "minecraft:entity.wandering_trader.hurt": { + "protocol_id": 1287 + }, + "minecraft:entity.wandering_trader.no": { + "protocol_id": 1288 + }, + "minecraft:entity.wandering_trader.reappeared": { + "protocol_id": 1289 + }, + "minecraft:entity.wandering_trader.trade": { + "protocol_id": 1290 + }, + "minecraft:entity.wandering_trader.yes": { + "protocol_id": 1291 + }, + "minecraft:entity.warden.agitated": { "protocol_id": 1292 }, - "minecraft:entity.zoglin.angry": { + "minecraft:entity.warden.ambient": { "protocol_id": 1293 }, - "minecraft:entity.zoglin.attack": { + "minecraft:entity.warden.angry": { "protocol_id": 1294 }, - "minecraft:entity.zoglin.death": { + "minecraft:entity.warden.attack_impact": { "protocol_id": 1295 }, - "minecraft:entity.zoglin.hurt": { + "minecraft:entity.warden.death": { "protocol_id": 1296 }, - "minecraft:entity.zoglin.step": { + "minecraft:entity.warden.dig": { "protocol_id": 1297 }, - "minecraft:entity.zombie.ambient": { + "minecraft:entity.warden.emerge": { "protocol_id": 1298 }, - "minecraft:entity.zombie.attack_iron_door": { - "protocol_id": 1300 - }, - "minecraft:entity.zombie.attack_wooden_door": { + "minecraft:entity.warden.heartbeat": { "protocol_id": 1299 }, - "minecraft:entity.zombie.break_wooden_door": { + "minecraft:entity.warden.hurt": { + "protocol_id": 1300 + }, + "minecraft:entity.warden.listening": { "protocol_id": 1301 }, - "minecraft:entity.zombie.converted_to_drowned": { + "minecraft:entity.warden.listening_angry": { "protocol_id": 1302 }, - "minecraft:entity.zombie.death": { + "minecraft:entity.warden.nearby_close": { "protocol_id": 1303 }, - "minecraft:entity.zombie.destroy_egg": { + "minecraft:entity.warden.nearby_closer": { "protocol_id": 1304 }, - "minecraft:entity.zombie.hurt": { - "protocol_id": 1308 - }, - "minecraft:entity.zombie.infect": { - "protocol_id": 1309 - }, - "minecraft:entity.zombie.step": { - "protocol_id": 1314 - }, - "minecraft:entity.zombie_horse.ambient": { + "minecraft:entity.warden.nearby_closest": { "protocol_id": 1305 }, - "minecraft:entity.zombie_horse.death": { + "minecraft:entity.warden.roar": { "protocol_id": 1306 }, - "minecraft:entity.zombie_horse.hurt": { + "minecraft:entity.warden.sniff": { "protocol_id": 1307 }, - "minecraft:entity.zombie_villager.ambient": { - "protocol_id": 1315 + "minecraft:entity.warden.sonic_boom": { + "protocol_id": 1308 }, - "minecraft:entity.zombie_villager.converted": { - "protocol_id": 1316 + "minecraft:entity.warden.sonic_charge": { + "protocol_id": 1309 }, - "minecraft:entity.zombie_villager.cure": { - "protocol_id": 1317 - }, - "minecraft:entity.zombie_villager.death": { - "protocol_id": 1318 - }, - "minecraft:entity.zombie_villager.hurt": { - "protocol_id": 1319 - }, - "minecraft:entity.zombie_villager.step": { - "protocol_id": 1320 - }, - "minecraft:entity.zombified_piglin.ambient": { + "minecraft:entity.warden.step": { "protocol_id": 1310 }, - "minecraft:entity.zombified_piglin.angry": { + "minecraft:entity.warden.tendril_clicks": { "protocol_id": 1311 }, + "minecraft:entity.witch.ambient": { + "protocol_id": 1320 + }, + "minecraft:entity.witch.celebrate": { + "protocol_id": 1321 + }, + "minecraft:entity.witch.death": { + "protocol_id": 1322 + }, + "minecraft:entity.witch.drink": { + "protocol_id": 1323 + }, + "minecraft:entity.witch.hurt": { + "protocol_id": 1324 + }, + "minecraft:entity.witch.throw": { + "protocol_id": 1325 + }, + "minecraft:entity.wither.ambient": { + "protocol_id": 1326 + }, + "minecraft:entity.wither.break_block": { + "protocol_id": 1327 + }, + "minecraft:entity.wither.death": { + "protocol_id": 1328 + }, + "minecraft:entity.wither.hurt": { + "protocol_id": 1329 + }, + "minecraft:entity.wither.shoot": { + "protocol_id": 1330 + }, + "minecraft:entity.wither.spawn": { + "protocol_id": 1335 + }, + "minecraft:entity.wither_skeleton.ambient": { + "protocol_id": 1331 + }, + "minecraft:entity.wither_skeleton.death": { + "protocol_id": 1332 + }, + "minecraft:entity.wither_skeleton.hurt": { + "protocol_id": 1333 + }, + "minecraft:entity.wither_skeleton.step": { + "protocol_id": 1334 + }, + "minecraft:entity.wolf.ambient": { + "protocol_id": 1336 + }, + "minecraft:entity.wolf.death": { + "protocol_id": 1337 + }, + "minecraft:entity.wolf.growl": { + "protocol_id": 1338 + }, + "minecraft:entity.wolf.howl": { + "protocol_id": 1339 + }, + "minecraft:entity.wolf.hurt": { + "protocol_id": 1340 + }, + "minecraft:entity.wolf.pant": { + "protocol_id": 1341 + }, + "minecraft:entity.wolf.shake": { + "protocol_id": 1342 + }, + "minecraft:entity.wolf.step": { + "protocol_id": 1343 + }, + "minecraft:entity.wolf.whine": { + "protocol_id": 1344 + }, + "minecraft:entity.zoglin.ambient": { + "protocol_id": 1363 + }, + "minecraft:entity.zoglin.angry": { + "protocol_id": 1364 + }, + "minecraft:entity.zoglin.attack": { + "protocol_id": 1365 + }, + "minecraft:entity.zoglin.death": { + "protocol_id": 1366 + }, + "minecraft:entity.zoglin.hurt": { + "protocol_id": 1367 + }, + "minecraft:entity.zoglin.step": { + "protocol_id": 1368 + }, + "minecraft:entity.zombie.ambient": { + "protocol_id": 1369 + }, + "minecraft:entity.zombie.attack_iron_door": { + "protocol_id": 1371 + }, + "minecraft:entity.zombie.attack_wooden_door": { + "protocol_id": 1370 + }, + "minecraft:entity.zombie.break_wooden_door": { + "protocol_id": 1372 + }, + "minecraft:entity.zombie.converted_to_drowned": { + "protocol_id": 1373 + }, + "minecraft:entity.zombie.death": { + "protocol_id": 1374 + }, + "minecraft:entity.zombie.destroy_egg": { + "protocol_id": 1375 + }, + "minecraft:entity.zombie.hurt": { + "protocol_id": 1379 + }, + "minecraft:entity.zombie.infect": { + "protocol_id": 1380 + }, + "minecraft:entity.zombie.step": { + "protocol_id": 1385 + }, + "minecraft:entity.zombie_horse.ambient": { + "protocol_id": 1376 + }, + "minecraft:entity.zombie_horse.death": { + "protocol_id": 1377 + }, + "minecraft:entity.zombie_horse.hurt": { + "protocol_id": 1378 + }, + "minecraft:entity.zombie_villager.ambient": { + "protocol_id": 1386 + }, + "minecraft:entity.zombie_villager.converted": { + "protocol_id": 1387 + }, + "minecraft:entity.zombie_villager.cure": { + "protocol_id": 1388 + }, + "minecraft:entity.zombie_villager.death": { + "protocol_id": 1389 + }, + "minecraft:entity.zombie_villager.hurt": { + "protocol_id": 1390 + }, + "minecraft:entity.zombie_villager.step": { + "protocol_id": 1391 + }, + "minecraft:entity.zombified_piglin.ambient": { + "protocol_id": 1381 + }, + "minecraft:entity.zombified_piglin.angry": { + "protocol_id": 1382 + }, "minecraft:entity.zombified_piglin.death": { - "protocol_id": 1312 + "protocol_id": 1383 }, "minecraft:entity.zombified_piglin.hurt": { - "protocol_id": 1313 + "protocol_id": 1384 }, "minecraft:event.raid.horn": { - "protocol_id": 924 + "protocol_id": 995 }, "minecraft:item.armor.equip_chain": { "protocol_id": 53 @@ -12983,352 +13430,352 @@ "protocol_id": 71 }, "minecraft:item.bone_meal.use": { - "protocol_id": 143 - }, - "minecraft:item.book.page_turn": { - "protocol_id": 144 - }, - "minecraft:item.book.put": { - "protocol_id": 145 - }, - "minecraft:item.bottle.empty": { - "protocol_id": 147 - }, - "minecraft:item.bottle.fill": { - "protocol_id": 148 - }, - "minecraft:item.bottle.fill_dragonbreath": { - "protocol_id": 149 - }, - "minecraft:item.bucket.empty": { - "protocol_id": 156 - }, - "minecraft:item.bucket.empty_axolotl": { - "protocol_id": 157 - }, - "minecraft:item.bucket.empty_fish": { "protocol_id": 158 }, - "minecraft:item.bucket.empty_lava": { + "minecraft:item.book.page_turn": { "protocol_id": 159 }, - "minecraft:item.bucket.empty_powder_snow": { + "minecraft:item.book.put": { "protocol_id": 160 }, - "minecraft:item.bucket.empty_tadpole": { - "protocol_id": 161 - }, - "minecraft:item.bucket.fill": { + "minecraft:item.bottle.empty": { "protocol_id": 162 }, - "minecraft:item.bucket.fill_axolotl": { + "minecraft:item.bottle.fill": { "protocol_id": 163 }, - "minecraft:item.bucket.fill_fish": { + "minecraft:item.bottle.fill_dragonbreath": { "protocol_id": 164 }, + "minecraft:item.bucket.empty": { + "protocol_id": 171 + }, + "minecraft:item.bucket.empty_axolotl": { + "protocol_id": 172 + }, + "minecraft:item.bucket.empty_fish": { + "protocol_id": 173 + }, + "minecraft:item.bucket.empty_lava": { + "protocol_id": 174 + }, + "minecraft:item.bucket.empty_powder_snow": { + "protocol_id": 175 + }, + "minecraft:item.bucket.empty_tadpole": { + "protocol_id": 176 + }, + "minecraft:item.bucket.fill": { + "protocol_id": 177 + }, + "minecraft:item.bucket.fill_axolotl": { + "protocol_id": 178 + }, + "minecraft:item.bucket.fill_fish": { + "protocol_id": 179 + }, "minecraft:item.bucket.fill_lava": { - "protocol_id": 165 + "protocol_id": 180 }, "minecraft:item.bucket.fill_powder_snow": { - "protocol_id": 166 + "protocol_id": 181 }, "minecraft:item.bucket.fill_tadpole": { - "protocol_id": 167 + "protocol_id": 182 }, "minecraft:item.bundle.drop_contents": { - "protocol_id": 168 + "protocol_id": 183 }, "minecraft:item.bundle.insert": { - "protocol_id": 169 + "protocol_id": 184 }, "minecraft:item.bundle.remove_one": { - "protocol_id": 170 + "protocol_id": 185 }, "minecraft:item.chorus_fruit.teleport": { - "protocol_id": 215 - }, - "minecraft:item.crop.plant": { - "protocol_id": 249 - }, - "minecraft:item.crossbow.hit": { "protocol_id": 250 }, + "minecraft:item.crop.plant": { + "protocol_id": 284 + }, + "minecraft:item.crossbow.hit": { + "protocol_id": 285 + }, "minecraft:item.crossbow.loading_end": { - "protocol_id": 251 + "protocol_id": 286 }, "minecraft:item.crossbow.loading_middle": { - "protocol_id": 252 + "protocol_id": 287 }, "minecraft:item.crossbow.loading_start": { - "protocol_id": 253 + "protocol_id": 288 }, "minecraft:item.crossbow.quick_charge_1": { - "protocol_id": 254 + "protocol_id": 289 }, "minecraft:item.crossbow.quick_charge_2": { - "protocol_id": 255 + "protocol_id": 290 }, "minecraft:item.crossbow.quick_charge_3": { - "protocol_id": 256 + "protocol_id": 291 }, "minecraft:item.crossbow.shoot": { - "protocol_id": 257 + "protocol_id": 292 }, "minecraft:item.dye.use": { - "protocol_id": 318 + "protocol_id": 353 }, "minecraft:item.elytra.flying": { - "protocol_id": 328 + "protocol_id": 363 }, "minecraft:item.firecharge.use": { - "protocol_id": 368 + "protocol_id": 403 }, "minecraft:item.flintandsteel.use": { - "protocol_id": 383 + "protocol_id": 418 }, "minecraft:item.glow_ink_sac.use": { - "protocol_id": 452 + "protocol_id": 487 }, "minecraft:item.goat_horn.play": { - "protocol_id": 471 + "protocol_id": 506 }, "minecraft:item.goat_horn.sound.0": { - "protocol_id": 524 + "protocol_id": 574 }, "minecraft:item.goat_horn.sound.1": { - "protocol_id": 525 + "protocol_id": 575 }, "minecraft:item.goat_horn.sound.2": { - "protocol_id": 526 + "protocol_id": 576 }, "minecraft:item.goat_horn.sound.3": { - "protocol_id": 527 + "protocol_id": 577 }, "minecraft:item.goat_horn.sound.4": { - "protocol_id": 528 + "protocol_id": 578 }, "minecraft:item.goat_horn.sound.5": { - "protocol_id": 529 + "protocol_id": 579 }, "minecraft:item.goat_horn.sound.6": { - "protocol_id": 530 + "protocol_id": 580 }, "minecraft:item.goat_horn.sound.7": { - "protocol_id": 531 + "protocol_id": 581 }, "minecraft:item.hoe.till": { - "protocol_id": 507 + "protocol_id": 557 }, "minecraft:item.honey_bottle.drink": { - "protocol_id": 523 + "protocol_id": 573 }, "minecraft:item.honeycomb.wax_on": { - "protocol_id": 522 + "protocol_id": 572 }, "minecraft:item.ink_sac.use": { - "protocol_id": 563 + "protocol_id": 613 }, "minecraft:item.lodestone_compass.lock": { - "protocol_id": 617 + "protocol_id": 667 }, "minecraft:item.nether_wart.plant": { - "protocol_id": 722 + "protocol_id": 772 }, "minecraft:item.shield.block": { - "protocol_id": 1003 + "protocol_id": 1074 }, "minecraft:item.shield.break": { - "protocol_id": 1004 + "protocol_id": 1075 }, "minecraft:item.shovel.flatten": { - "protocol_id": 1010 + "protocol_id": 1081 }, "minecraft:item.spyglass.stop_using": { - "protocol_id": 1107 + "protocol_id": 1178 }, "minecraft:item.spyglass.use": { - "protocol_id": 1106 + "protocol_id": 1177 }, "minecraft:item.totem.use": { - "protocol_id": 1134 + "protocol_id": 1205 }, "minecraft:item.trident.hit": { - "protocol_id": 1135 + "protocol_id": 1206 }, "minecraft:item.trident.hit_ground": { - "protocol_id": 1136 + "protocol_id": 1207 }, "minecraft:item.trident.return": { - "protocol_id": 1137 + "protocol_id": 1208 }, "minecraft:item.trident.riptide_1": { - "protocol_id": 1138 + "protocol_id": 1209 }, "minecraft:item.trident.riptide_2": { - "protocol_id": 1139 + "protocol_id": 1210 }, "minecraft:item.trident.riptide_3": { - "protocol_id": 1140 + "protocol_id": 1211 }, "minecraft:item.trident.throw": { - "protocol_id": 1141 + "protocol_id": 1212 }, "minecraft:item.trident.thunder": { - "protocol_id": 1142 + "protocol_id": 1213 }, "minecraft:music.creative": { - "protocol_id": 677 + "protocol_id": 727 }, "minecraft:music.credits": { - "protocol_id": 678 + "protocol_id": 728 }, "minecraft:music.dragon": { - "protocol_id": 694 + "protocol_id": 744 }, "minecraft:music.end": { - "protocol_id": 695 + "protocol_id": 745 }, "minecraft:music.game": { - "protocol_id": 696 + "protocol_id": 746 }, "minecraft:music.menu": { - "protocol_id": 697 + "protocol_id": 747 }, "minecraft:music.nether.basalt_deltas": { - "protocol_id": 698 + "protocol_id": 748 }, "minecraft:music.nether.crimson_forest": { - "protocol_id": 699 + "protocol_id": 749 }, "minecraft:music.nether.nether_wastes": { - "protocol_id": 709 + "protocol_id": 759 }, "minecraft:music.nether.soul_sand_valley": { - "protocol_id": 712 + "protocol_id": 762 }, "minecraft:music.nether.warped_forest": { - "protocol_id": 714 + "protocol_id": 764 }, "minecraft:music.overworld.deep_dark": { - "protocol_id": 700 + "protocol_id": 750 }, "minecraft:music.overworld.dripstone_caves": { - "protocol_id": 701 + "protocol_id": 751 }, "minecraft:music.overworld.frozen_peaks": { - "protocol_id": 710 + "protocol_id": 760 }, "minecraft:music.overworld.grove": { - "protocol_id": 702 + "protocol_id": 752 }, "minecraft:music.overworld.jagged_peaks": { - "protocol_id": 703 + "protocol_id": 753 }, "minecraft:music.overworld.jungle_and_forest": { - "protocol_id": 706 + "protocol_id": 756 }, "minecraft:music.overworld.lush_caves": { - "protocol_id": 704 + "protocol_id": 754 }, "minecraft:music.overworld.meadow": { - "protocol_id": 708 + "protocol_id": 758 }, "minecraft:music.overworld.old_growth_taiga": { - "protocol_id": 707 + "protocol_id": 757 }, "minecraft:music.overworld.snowy_slopes": { - "protocol_id": 711 + "protocol_id": 761 }, "minecraft:music.overworld.stony_peaks": { - "protocol_id": 713 + "protocol_id": 763 }, "minecraft:music.overworld.swamp": { - "protocol_id": 705 + "protocol_id": 755 }, "minecraft:music.under_water": { - "protocol_id": 715 + "protocol_id": 765 }, "minecraft:music_disc.11": { - "protocol_id": 680 + "protocol_id": 730 }, "minecraft:music_disc.13": { - "protocol_id": 681 + "protocol_id": 731 }, "minecraft:music_disc.5": { - "protocol_id": 679 + "protocol_id": 729 }, "minecraft:music_disc.blocks": { - "protocol_id": 682 + "protocol_id": 732 }, "minecraft:music_disc.cat": { - "protocol_id": 683 + "protocol_id": 733 }, "minecraft:music_disc.chirp": { - "protocol_id": 684 + "protocol_id": 734 }, "minecraft:music_disc.far": { - "protocol_id": 685 + "protocol_id": 735 }, "minecraft:music_disc.mall": { - "protocol_id": 686 + "protocol_id": 736 }, "minecraft:music_disc.mellohi": { - "protocol_id": 687 + "protocol_id": 737 }, "minecraft:music_disc.otherside": { - "protocol_id": 693 + "protocol_id": 743 }, "minecraft:music_disc.pigstep": { - "protocol_id": 688 + "protocol_id": 738 }, "minecraft:music_disc.stal": { - "protocol_id": 689 + "protocol_id": 739 }, "minecraft:music_disc.strad": { - "protocol_id": 690 + "protocol_id": 740 }, "minecraft:music_disc.wait": { - "protocol_id": 691 + "protocol_id": 741 }, "minecraft:music_disc.ward": { - "protocol_id": 692 + "protocol_id": 742 }, "minecraft:particle.soul_escape": { - "protocol_id": 1068 + "protocol_id": 1139 }, "minecraft:ui.button.click": { - "protocol_id": 1168 + "protocol_id": 1239 }, "minecraft:ui.cartography_table.take_result": { - "protocol_id": 1171 - }, - "minecraft:ui.loom.select_pattern": { - "protocol_id": 1169 - }, - "minecraft:ui.loom.take_result": { - "protocol_id": 1170 - }, - "minecraft:ui.stonecutter.select_recipe": { - "protocol_id": 1173 - }, - "minecraft:ui.stonecutter.take_result": { - "protocol_id": 1172 - }, - "minecraft:ui.toast.challenge_complete": { - "protocol_id": 1174 - }, - "minecraft:ui.toast.in": { - "protocol_id": 1175 - }, - "minecraft:ui.toast.out": { - "protocol_id": 1176 - }, - "minecraft:weather.rain": { "protocol_id": 1242 }, - "minecraft:weather.rain.above": { + "minecraft:ui.loom.select_pattern": { + "protocol_id": 1240 + }, + "minecraft:ui.loom.take_result": { + "protocol_id": 1241 + }, + "minecraft:ui.stonecutter.select_recipe": { + "protocol_id": 1244 + }, + "minecraft:ui.stonecutter.take_result": { "protocol_id": 1243 + }, + "minecraft:ui.toast.challenge_complete": { + "protocol_id": 1245 + }, + "minecraft:ui.toast.in": { + "protocol_id": 1246 + }, + "minecraft:ui.toast.out": { + "protocol_id": 1247 + }, + "minecraft:weather.rain": { + "protocol_id": 1313 + }, + "minecraft:weather.rain.above": { + "protocol_id": 1314 } }, "protocol_id": 1