diff --git a/.github/workflows/pullrequest.yml b/.github/workflows/pullrequest.yml index 78a3ce299..9621fa1d0 100644 --- a/.github/workflows/pullrequest.yml +++ b/.github/workflows/pullrequest.yml @@ -15,10 +15,10 @@ jobs: key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }} restore-keys: | ${{ runner.os }}-maven- - - name: Set up JDK 1.8 + - name: Set up JDK 16 uses: actions/setup-java@v1 with: - java-version: 1.8 + java-version: 16 - name: submodules-init uses: snickerbockers/submodules-init@v4 - name: Build with Maven diff --git a/ap/pom.xml b/ap/pom.xml index f8cc2dd1b..912c6731b 100644 --- a/ap/pom.xml +++ b/ap/pom.xml @@ -6,9 +6,9 @@ org.geysermc geyser-parent - 1.4.2-SNAPSHOT + 1.4.3-SNAPSHOT ap - 1.4.2-SNAPSHOT + 1.4.3-SNAPSHOT \ No newline at end of file diff --git a/bootstrap/bungeecord/pom.xml b/bootstrap/bungeecord/pom.xml index b01ac7984..bef37d453 100644 --- a/bootstrap/bungeecord/pom.xml +++ b/bootstrap/bungeecord/pom.xml @@ -6,7 +6,7 @@ org.geysermc bootstrap-parent - 1.4.2-SNAPSHOT + 1.4.3-SNAPSHOT bootstrap-bungeecord @@ -14,7 +14,7 @@ org.geysermc connector - 1.4.2-SNAPSHOT + 1.4.3-SNAPSHOT compile @@ -49,7 +49,7 @@ org.apache.maven.plugins maven-shade-plugin - 3.2.1 + 3.3.0-SNAPSHOT package diff --git a/bootstrap/bungeecord/src/main/java/org/geysermc/platform/bungeecord/command/BungeeCommandSender.java b/bootstrap/bungeecord/src/main/java/org/geysermc/platform/bungeecord/command/BungeeCommandSender.java index 807cf4786..1f3a875b2 100644 --- a/bootstrap/bungeecord/src/main/java/org/geysermc/platform/bungeecord/command/BungeeCommandSender.java +++ b/bootstrap/bungeecord/src/main/java/org/geysermc/platform/bungeecord/command/BungeeCommandSender.java @@ -57,8 +57,7 @@ public class BungeeCommandSender implements CommandSender { @Override public String getLocale() { - if (handle instanceof ProxiedPlayer) { - ProxiedPlayer player = (ProxiedPlayer) handle; + if (handle instanceof ProxiedPlayer player) { String locale = player.getLocale().getLanguage() + "_" + player.getLocale().getCountry(); return LanguageUtils.formatLocale(locale); } diff --git a/bootstrap/pom.xml b/bootstrap/pom.xml index c54d489fa..38489fa25 100644 --- a/bootstrap/pom.xml +++ b/bootstrap/pom.xml @@ -6,7 +6,7 @@ org.geysermc geyser-parent - 1.4.2-SNAPSHOT + 1.4.3-SNAPSHOT bootstrap-parent pom @@ -34,7 +34,7 @@ org.geysermc ap - 1.4.2-SNAPSHOT + 1.4.3-SNAPSHOT provided diff --git a/bootstrap/spigot/pom.xml b/bootstrap/spigot/pom.xml index cc2a73ffd..dd6b28473 100644 --- a/bootstrap/spigot/pom.xml +++ b/bootstrap/spigot/pom.xml @@ -6,7 +6,7 @@ org.geysermc bootstrap-parent - 1.4.2-SNAPSHOT + 1.4.3-SNAPSHOT bootstrap-spigot @@ -21,7 +21,7 @@ org.geysermc connector - 1.4.2-SNAPSHOT + 1.4.3-SNAPSHOT compile @@ -66,7 +66,7 @@ org.apache.maven.plugins maven-shade-plugin - 3.2.1 + 3.3.0-SNAPSHOT package diff --git a/bootstrap/spigot/src/main/java/org/geysermc/platform/spigot/command/SpigotCommandSender.java b/bootstrap/spigot/src/main/java/org/geysermc/platform/spigot/command/SpigotCommandSender.java index c1c2b2c72..16533623a 100644 --- a/bootstrap/spigot/src/main/java/org/geysermc/platform/spigot/command/SpigotCommandSender.java +++ b/bootstrap/spigot/src/main/java/org/geysermc/platform/spigot/command/SpigotCommandSender.java @@ -97,8 +97,7 @@ public class SpigotCommandSender implements CommandSender { * @return the locale of the Spigot player */ private String getSpigotLocale() { - if (handle instanceof Player) { - Player player = (Player) handle; + if (handle instanceof Player player) { if (USE_LEGACY_METHOD) { try { // sigh diff --git a/bootstrap/spigot/src/main/java/org/geysermc/platform/spigot/world/GeyserSpigot1_11CraftingListener.java b/bootstrap/spigot/src/main/java/org/geysermc/platform/spigot/world/GeyserSpigot1_11CraftingListener.java index 4f24af19c..f7a9d6df7 100644 --- a/bootstrap/spigot/src/main/java/org/geysermc/platform/spigot/world/GeyserSpigot1_11CraftingListener.java +++ b/bootstrap/spigot/src/main/java/org/geysermc/platform/spigot/world/GeyserSpigot1_11CraftingListener.java @@ -109,8 +109,7 @@ public class GeyserSpigot1_11CraftingListener implements Listener { if (output == null || output.getId() == 0) continue; // If items make air we don't want that boolean isNotAllAir = false; // Check for all-air recipes - if (recipe instanceof ShapedRecipe) { - ShapedRecipe shapedRecipe = (ShapedRecipe) recipe; + if (recipe instanceof ShapedRecipe shapedRecipe) { int size = shapedRecipe.getShape().length * shapedRecipe.getShape()[0].length(); Ingredient[] ingredients = new Ingredient[size]; ItemData[] input = new ItemData[size]; @@ -134,8 +133,7 @@ public class GeyserSpigot1_11CraftingListener implements Listener { craftingDataPacket.getCraftingData().add(CraftingData.fromShaped(uuid.toString(), shapedRecipe.getShape()[0].length(), shapedRecipe.getShape().length, Arrays.asList(input), Collections.singletonList(output), uuid, "crafting_table", 0, netId++)); - } else if (recipe instanceof ShapelessRecipe) { - ShapelessRecipe shapelessRecipe = (ShapelessRecipe) recipe; + } else if (recipe instanceof ShapelessRecipe shapelessRecipe) { Ingredient[] ingredients = new Ingredient[shapelessRecipe.getIngredientList().size()]; ItemData[] input = new ItemData[shapelessRecipe.getIngredientList().size()]; diff --git a/bootstrap/spigot/src/main/java/org/geysermc/platform/spigot/world/manager/GeyserSpigotWorldManager.java b/bootstrap/spigot/src/main/java/org/geysermc/platform/spigot/world/manager/GeyserSpigotWorldManager.java index 516cf13dc..a0e97c51a 100644 --- a/bootstrap/spigot/src/main/java/org/geysermc/platform/spigot/world/manager/GeyserSpigotWorldManager.java +++ b/bootstrap/spigot/src/main/java/org/geysermc/platform/spigot/world/manager/GeyserSpigotWorldManager.java @@ -99,14 +99,13 @@ public class GeyserSpigotWorldManager extends GeyserWorldManager { } Block block = bukkitPlayer.getWorld().getBlockAt(x, y, z); - if (!(block.getState() instanceof Lectern)) { + if (!(block.getState() instanceof Lectern lectern)) { session.getConnector().getLogger().error("Lectern expected at: " + Vector3i.from(x, y, z).toString() + " but was not! " + block.toString()); return; } - Lectern lectern = (Lectern) block.getState(); ItemStack itemStack = lectern.getInventory().getItem(0); - if (itemStack == null || !(itemStack.getItemMeta() instanceof BookMeta)) { + if (itemStack == null || !(itemStack.getItemMeta() instanceof BookMeta bookMeta)) { if (!isChunkLoad) { // We need to update the lectern since it's not going to be updated otherwise BlockEntityUtils.updateBlockEntity(session, LecternInventoryTranslator.getBaseLecternTag(x, y, z, 0).build(), Vector3i.from(x, y, z)); @@ -115,7 +114,6 @@ public class GeyserSpigotWorldManager extends GeyserWorldManager { return; } - BookMeta bookMeta = (BookMeta) itemStack.getItemMeta(); // On the count: allow the book to show/open even there are no pages. We know there is a book here, after all, and this matches Java behavior boolean hasBookPages = bookMeta.getPageCount() > 0; NbtMapBuilder lecternTag = LecternInventoryTranslator.getBaseLecternTag(x, y, z, hasBookPages ? bookMeta.getPageCount() : 1); diff --git a/bootstrap/sponge/pom.xml b/bootstrap/sponge/pom.xml index 4991e8aaf..a5582bbe0 100644 --- a/bootstrap/sponge/pom.xml +++ b/bootstrap/sponge/pom.xml @@ -6,7 +6,7 @@ org.geysermc bootstrap-parent - 1.4.2-SNAPSHOT + 1.4.3-SNAPSHOT bootstrap-sponge @@ -14,7 +14,7 @@ org.geysermc connector - 1.4.2-SNAPSHOT + 1.4.3-SNAPSHOT compile @@ -48,7 +48,7 @@ org.apache.maven.plugins maven-shade-plugin - 3.2.1 + 3.3.0-SNAPSHOT package diff --git a/bootstrap/standalone/pom.xml b/bootstrap/standalone/pom.xml index e39097b4a..64a6f6fee 100644 --- a/bootstrap/standalone/pom.xml +++ b/bootstrap/standalone/pom.xml @@ -6,7 +6,7 @@ org.geysermc bootstrap-parent - 1.4.2-SNAPSHOT + 1.4.3-SNAPSHOT bootstrap-standalone @@ -14,7 +14,7 @@ org.geysermc connector - 1.4.2-SNAPSHOT + 1.4.3-SNAPSHOT compile @@ -89,7 +89,7 @@ org.apache.maven.plugins maven-shade-plugin - 3.2.1 + 3.3.0-SNAPSHOT com.github.edwgiz diff --git a/bootstrap/standalone/src/main/java/org/geysermc/platform/standalone/GeyserStandaloneBootstrap.java b/bootstrap/standalone/src/main/java/org/geysermc/platform/standalone/GeyserStandaloneBootstrap.java index f875127cc..6a612f17d 100644 --- a/bootstrap/standalone/src/main/java/org/geysermc/platform/standalone/GeyserStandaloneBootstrap.java +++ b/bootstrap/standalone/src/main/java/org/geysermc/platform/standalone/GeyserStandaloneBootstrap.java @@ -98,32 +98,26 @@ public class GeyserStandaloneBootstrap implements GeyserBootstrap { // Allows gui and nogui without options, for backwards compatibility String arg = args[i]; switch (arg) { - case "--gui": - case "gui": - useGuiOpts = true; - break; - case "--nogui": - case "nogui": - useGuiOpts = false; - break; - case "--config": - case "-c": + case "--gui", "gui" -> useGuiOpts = true; + case "--nogui", "nogui" -> useGuiOpts = false; + case "--config", "-c" -> { if (i >= args.length - 1) { System.err.println(MessageFormat.format(LanguageUtils.getLocaleStringLog("geyser.bootstrap.args.config_not_specified"), "-c")); return; } - configFilenameOpt = args[i+1]; i++; + configFilenameOpt = args[i + 1]; + i++; System.out.println(MessageFormat.format(LanguageUtils.getLocaleStringLog("geyser.bootstrap.args.config_specified"), configFilenameOpt)); - break; - case "--help": - case "-h": + } + case "--help", "-h" -> { System.out.println(MessageFormat.format(LanguageUtils.getLocaleStringLog("geyser.bootstrap.args.usage"), "[java -jar] Geyser.jar [opts]")); System.out.println(" " + LanguageUtils.getLocaleStringLog("geyser.bootstrap.args.options")); System.out.println(" -c, --config [file] " + LanguageUtils.getLocaleStringLog("geyser.bootstrap.args.config")); System.out.println(" -h, --help " + LanguageUtils.getLocaleStringLog("geyser.bootstrap.args.help")); System.out.println(" --gui, --nogui " + LanguageUtils.getLocaleStringLog("geyser.bootstrap.args.gui")); return; - default: + } + default -> { // We have likely added a config option argument if (arg.startsWith("--")) { // Split the argument by an = @@ -159,9 +153,9 @@ public class GeyserStandaloneBootstrap implements GeyserBootstrap { } } } - System.err.println(LanguageUtils.getLocaleStringLog("geyser.bootstrap.args.unrecognised", arg)); return; + } } } bootstrap.onEnable(useGuiOpts, configFilenameOpt); diff --git a/bootstrap/standalone/src/main/java/org/geysermc/platform/standalone/gui/GraphPanel.java b/bootstrap/standalone/src/main/java/org/geysermc/platform/standalone/gui/GraphPanel.java index 68adfde52..9cfa9399d 100644 --- a/bootstrap/standalone/src/main/java/org/geysermc/platform/standalone/gui/GraphPanel.java +++ b/bootstrap/standalone/src/main/java/org/geysermc/platform/standalone/gui/GraphPanel.java @@ -68,11 +68,10 @@ public final class GraphPanel extends JPanel { @Override protected void paintComponent(Graphics graphics) { super.paintComponent(graphics); - if (!(graphics instanceof Graphics2D)) { + if (!(graphics instanceof final Graphics2D g)) { graphics.drawString("Graphics is not Graphics2D, unable to render", 0, 0); return; } - final Graphics2D g = (Graphics2D) graphics; g.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON); final int length = values.size(); diff --git a/bootstrap/velocity/pom.xml b/bootstrap/velocity/pom.xml index 1e74bafbc..33df2be80 100644 --- a/bootstrap/velocity/pom.xml +++ b/bootstrap/velocity/pom.xml @@ -6,7 +6,7 @@ org.geysermc bootstrap-parent - 1.4.2-SNAPSHOT + 1.4.3-SNAPSHOT bootstrap-velocity @@ -14,7 +14,7 @@ org.geysermc connector - 1.4.2-SNAPSHOT + 1.4.3-SNAPSHOT compile @@ -48,7 +48,7 @@ org.apache.maven.plugins maven-shade-plugin - 3.2.1 + 3.3.0-SNAPSHOT package diff --git a/common/pom.xml b/common/pom.xml index edf31c2b8..a3e86ff9b 100644 --- a/common/pom.xml +++ b/common/pom.xml @@ -6,7 +6,7 @@ org.geysermc geyser-parent - 1.4.2-SNAPSHOT + 1.4.3-SNAPSHOT common diff --git a/connector/pom.xml b/connector/pom.xml index e6bb897dd..0a15c759d 100644 --- a/connector/pom.xml +++ b/connector/pom.xml @@ -6,7 +6,7 @@ org.geysermc geyser-parent - 1.4.2-SNAPSHOT + 1.4.3-SNAPSHOT connector @@ -21,13 +21,13 @@ org.geysermc ap - 1.4.2-SNAPSHOT + 1.4.3-SNAPSHOT provided org.geysermc common - 1.4.2-SNAPSHOT + 1.4.3-SNAPSHOT compile diff --git a/connector/src/main/java/org/geysermc/connector/GeyserConnector.java b/connector/src/main/java/org/geysermc/connector/GeyserConnector.java index 0c9217147..7e22792fa 100644 --- a/connector/src/main/java/org/geysermc/connector/GeyserConnector.java +++ b/connector/src/main/java/org/geysermc/connector/GeyserConnector.java @@ -384,40 +384,9 @@ public class GeyserConnector { logger.warning(LanguageUtils.getLocaleStringLog("geyser.core.movement_warn")); } - checkForOutdatedJava(); - newsHandler.handleNews(null, NewsItemAction.ON_SERVER_STARTED); } - private void checkForOutdatedJava() { - final int supportedJavaVersion = 16; - // Taken from Paper - String javaVersion = System.getProperty("java.version"); - Matcher matcher = Pattern.compile("(?:1\\.)?(\\d+)").matcher(javaVersion); - if (!matcher.find()) { - getLogger().debug("Could not parse Java version string " + javaVersion); - return; - } - - String version = matcher.group(1); - int majorVersion; - try { - majorVersion = Integer.parseInt(version); - } catch (NumberFormatException e) { - getLogger().debug("Could not format as an int: " + version); - return; - } - - if (majorVersion < supportedJavaVersion) { - getLogger().warning("*********************************************"); - getLogger().warning(""); - getLogger().warning(LanguageUtils.getLocaleStringLog("geyser.bootstrap.unsupported_java.header")); - getLogger().warning(LanguageUtils.getLocaleStringLog("geyser.bootstrap.unsupported_java.message", supportedJavaVersion, javaVersion)); - getLogger().warning(""); - getLogger().warning("*********************************************"); - } - } - public void shutdown() { bootstrap.getGeyserLogger().info(LanguageUtils.getLocaleStringLog("geyser.core.shutdown")); shuttingDown = true; diff --git a/connector/src/main/java/org/geysermc/connector/command/defaults/DumpCommand.java b/connector/src/main/java/org/geysermc/connector/command/defaults/DumpCommand.java index 07a690298..0a1c81114 100644 --- a/connector/src/main/java/org/geysermc/connector/command/defaults/DumpCommand.java +++ b/connector/src/main/java/org/geysermc/connector/command/defaults/DumpCommand.java @@ -69,15 +69,9 @@ public class DumpCommand extends GeyserCommand { if (args.length >= 1) { for (String arg : args) { switch (arg) { - case "full": - showSensitive = true; - break; - case "offline": - offlineDump = true; - break; - case "logs": - addLog = true; - break; + case "full" -> showSensitive = true; + case "offline" -> offlineDump = true; + case "logs" -> addLog = true; } } } diff --git a/connector/src/main/java/org/geysermc/connector/configuration/EmoteOffhandWorkaroundOption.java b/connector/src/main/java/org/geysermc/connector/configuration/EmoteOffhandWorkaroundOption.java index 954e3d32a..c28048046 100644 --- a/connector/src/main/java/org/geysermc/connector/configuration/EmoteOffhandWorkaroundOption.java +++ b/connector/src/main/java/org/geysermc/connector/configuration/EmoteOffhandWorkaroundOption.java @@ -40,14 +40,11 @@ public enum EmoteOffhandWorkaroundOption { @Override public EmoteOffhandWorkaroundOption deserialize(JsonParser p, DeserializationContext ctxt) throws IOException { String value = p.getValueAsString(); - switch (value) { - case "no-emotes": - return NO_EMOTES; - case "emotes-and-offhand": - return EMOTES_AND_OFFHAND; - default: - return DISABLED; - } + return switch (value) { + case "no-emotes" -> NO_EMOTES; + case "emotes-and-offhand" -> EMOTES_AND_OFFHAND; + default -> DISABLED; + }; } } } diff --git a/connector/src/main/java/org/geysermc/connector/entity/EnderCrystalEntity.java b/connector/src/main/java/org/geysermc/connector/entity/EnderCrystalEntity.java index 596ccf089..e4b60980f 100644 --- a/connector/src/main/java/org/geysermc/connector/entity/EnderCrystalEntity.java +++ b/connector/src/main/java/org/geysermc/connector/entity/EnderCrystalEntity.java @@ -48,8 +48,7 @@ public class EnderCrystalEntity extends Entity { // Show beam // Usually performed client-side on Bedrock except for Ender Dragon respawn event if (entityMetadata.getId() == 8) { - if (entityMetadata.getValue() instanceof Position) { - Position pos = (Position) entityMetadata.getValue(); + if (entityMetadata.getValue() instanceof Position pos) { metadata.put(EntityData.BLOCK_TARGET, Vector3i.from(pos.getX(), pos.getY(), pos.getZ())); } else { metadata.put(EntityData.BLOCK_TARGET, Vector3i.ZERO); diff --git a/connector/src/main/java/org/geysermc/connector/entity/Entity.java b/connector/src/main/java/org/geysermc/connector/entity/Entity.java index eb9b8ec1c..f8bf9693d 100644 --- a/connector/src/main/java/org/geysermc/connector/entity/Entity.java +++ b/connector/src/main/java/org/geysermc/connector/entity/Entity.java @@ -256,11 +256,9 @@ public class Entity { setAir((int) entityMetadata.getValue()); break; case 2: // custom name - if (entityMetadata.getValue() instanceof Component) { - Component message = (Component) entityMetadata.getValue(); - if (message != null) - // Always translate even if it's a TextMessage since there could be translatable parameters - metadata.put(EntityData.NAMETAG, MessageTranslator.convertMessage(message, session.getLocale())); + if (entityMetadata.getValue() instanceof Component message) { + // Always translate even if it's a TextMessage since there could be translatable parameters + metadata.put(EntityData.NAMETAG, MessageTranslator.convertMessage(message, session.getLocale())); } break; case 3: // is custom name visible diff --git a/connector/src/main/java/org/geysermc/connector/entity/LivingEntity.java b/connector/src/main/java/org/geysermc/connector/entity/LivingEntity.java index 5ba66f71a..44a9859d5 100644 --- a/connector/src/main/java/org/geysermc/connector/entity/LivingEntity.java +++ b/connector/src/main/java/org/geysermc/connector/entity/LivingEntity.java @@ -84,21 +84,21 @@ public class LivingEntity extends Entity { @Override public void updateBedrockMetadata(EntityMetadata entityMetadata, GeyserSession session) { switch (entityMetadata.getId()) { - case 8: // blocking + case 8 -> { // blocking byte xd = (byte) entityMetadata.getValue(); //blocking gets triggered when using a bow, but if we set USING_ITEM for all items, it may look like //you're "mining" with ex. a shield. ItemMapping shield = session.getItemMappings().getStoredItems().shield(); boolean isUsingShield = (getHand().getId() == shield.getBedrockId() || - getHand().equals(ItemData.AIR) && getOffHand().getId() == shield.getBedrockId()); + getHand().equals(ItemData.AIR) && getOffHand().getId() == shield.getBedrockId()); metadata.getFlags().setFlag(EntityFlag.USING_ITEM, (xd & 0x01) == 0x01 && !isUsingShield); metadata.getFlags().setFlag(EntityFlag.BLOCKING, (xd & 0x01) == 0x01); // Riptide spin attack metadata.getFlags().setFlag(EntityFlag.DAMAGE_NEARBY_MOBS, (xd & 0x04) == 0x04); - break; - case 9: + } + case 9 -> { this.health = (float) entityMetadata.getValue(); AttributeData healthData = createHealthAttribute(); @@ -106,14 +106,10 @@ public class LivingEntity extends Entity { attributesPacket.setRuntimeEntityId(geyserId); attributesPacket.setAttributes(Collections.singletonList(healthData)); session.sendUpstreamPacket(attributesPacket); - break; - case 10: - metadata.put(EntityData.EFFECT_COLOR, entityMetadata.getValue()); - break; - case 11: - metadata.put(EntityData.EFFECT_AMBIENT, (byte) ((boolean) entityMetadata.getValue() ? 1 : 0)); - break; - case 14: // Bed Position + } + case 10 -> metadata.put(EntityData.EFFECT_COLOR, entityMetadata.getValue()); + case 11 -> metadata.put(EntityData.EFFECT_AMBIENT, (byte) ((boolean) entityMetadata.getValue() ? 1 : 0)); + case 14 -> { // Bed Position Position bedPosition = (Position) entityMetadata.getValue(); if (bedPosition != null) { metadata.put(EntityData.BED_POSITION, Vector3i.from(bedPosition.getX(), bedPosition.getY(), bedPosition.getZ())); @@ -128,7 +124,7 @@ public class LivingEntity extends Entity { // Player is no longer sleeping metadata.put(EntityData.PLAYER_FLAGS, (byte) 0); } - break; + } } super.updateBedrockMetadata(entityMetadata, session); @@ -249,28 +245,16 @@ public class LivingEntity extends Entity { */ protected void updateAttribute(Attribute javaAttribute, List newAttributes) { switch (javaAttribute.getType()) { - case GENERIC_MAX_HEALTH: + case GENERIC_MAX_HEALTH -> { this.maxHealth = (float) AttributeUtils.calculateValue(javaAttribute); newAttributes.add(createHealthAttribute()); - break; - case GENERIC_ATTACK_DAMAGE: - newAttributes.add(calculateAttribute(javaAttribute, GeyserAttributeType.ATTACK_DAMAGE)); - break; - case GENERIC_FLYING_SPEED: - newAttributes.add(calculateAttribute(javaAttribute, GeyserAttributeType.FLYING_SPEED)); - break; - case GENERIC_MOVEMENT_SPEED: - newAttributes.add(calculateAttribute(javaAttribute, GeyserAttributeType.MOVEMENT_SPEED)); - break; - case GENERIC_FOLLOW_RANGE: - newAttributes.add(calculateAttribute(javaAttribute, GeyserAttributeType.FOLLOW_RANGE)); - break; - case GENERIC_KNOCKBACK_RESISTANCE: - newAttributes.add(calculateAttribute(javaAttribute, GeyserAttributeType.KNOCKBACK_RESISTANCE)); - break; - case HORSE_JUMP_STRENGTH: - newAttributes.add(calculateAttribute(javaAttribute, GeyserAttributeType.HORSE_JUMP_STRENGTH)); - break; + } + case GENERIC_ATTACK_DAMAGE -> newAttributes.add(calculateAttribute(javaAttribute, GeyserAttributeType.ATTACK_DAMAGE)); + case GENERIC_FLYING_SPEED -> newAttributes.add(calculateAttribute(javaAttribute, GeyserAttributeType.FLYING_SPEED)); + case GENERIC_MOVEMENT_SPEED -> newAttributes.add(calculateAttribute(javaAttribute, GeyserAttributeType.MOVEMENT_SPEED)); + case GENERIC_FOLLOW_RANGE -> newAttributes.add(calculateAttribute(javaAttribute, GeyserAttributeType.FOLLOW_RANGE)); + case GENERIC_KNOCKBACK_RESISTANCE -> newAttributes.add(calculateAttribute(javaAttribute, GeyserAttributeType.KNOCKBACK_RESISTANCE)); + case HORSE_JUMP_STRENGTH -> newAttributes.add(calculateAttribute(javaAttribute, GeyserAttributeType.HORSE_JUMP_STRENGTH)); } } diff --git a/connector/src/main/java/org/geysermc/connector/entity/PaintingEntity.java b/connector/src/main/java/org/geysermc/connector/entity/PaintingEntity.java index 3e2ff7ead..b620e598b 100644 --- a/connector/src/main/java/org/geysermc/connector/entity/PaintingEntity.java +++ b/connector/src/main/java/org/geysermc/connector/entity/PaintingEntity.java @@ -68,12 +68,12 @@ public class PaintingEntity extends Entity { double widthOffset = paintingName.getWidth() > 1 ? 0.5 : 0; double heightOffset = paintingName.getHeight() > 1 && paintingName.getHeight() != 3 ? 0.5 : 0; - switch (direction) { - case 0: return position.add(widthOffset, heightOffset, OFFSET); - case 1: return position.add(-OFFSET, heightOffset, widthOffset); - case 2: return position.add(-widthOffset, heightOffset, -OFFSET); - case 3: return position.add(OFFSET, heightOffset, -widthOffset); - } - return position; + return switch (direction) { + case 0 -> position.add(widthOffset, heightOffset, OFFSET); + case 1 -> position.add(-OFFSET, heightOffset, widthOffset); + case 2 -> position.add(-widthOffset, heightOffset, -OFFSET); + case 3 -> position.add(OFFSET, heightOffset, -widthOffset); + default -> position; + }; } } diff --git a/connector/src/main/java/org/geysermc/connector/entity/living/ArmorStandEntity.java b/connector/src/main/java/org/geysermc/connector/entity/living/ArmorStandEntity.java index d447f6379..6a87097a1 100644 --- a/connector/src/main/java/org/geysermc/connector/entity/living/ArmorStandEntity.java +++ b/connector/src/main/java/org/geysermc/connector/entity/living/ArmorStandEntity.java @@ -161,42 +161,42 @@ public class ArmorStandEntity extends LivingEntity { EntityFlag negativeYToggle = null; EntityFlag negativeZToggle = null; switch (entityMetadata.getId()) { - case 16: // Head + case 16 -> { // Head dataLeech = EntityData.MARK_VARIANT; negativeXToggle = EntityFlag.INTERESTED; negativeYToggle = EntityFlag.CHARGED; negativeZToggle = EntityFlag.POWERED; - break; - case 17: // Body + } + case 17 -> { // Body dataLeech = EntityData.VARIANT; negativeXToggle = EntityFlag.IN_LOVE; negativeYToggle = EntityFlag.CELEBRATING; negativeZToggle = EntityFlag.CELEBRATING_SPECIAL; - break; - case 18: // Left arm + } + case 18 -> { // Left arm dataLeech = EntityData.TRADE_TIER; negativeXToggle = EntityFlag.CHARGING; negativeYToggle = EntityFlag.CRITICAL; negativeZToggle = EntityFlag.DANCING; - break; - case 19: // Right arm + } + case 19 -> { // Right arm dataLeech = EntityData.MAX_TRADE_TIER; negativeXToggle = EntityFlag.ELDER; negativeYToggle = EntityFlag.EMOTING; negativeZToggle = EntityFlag.IDLING; - break; - case 20: // Left leg + } + case 20 -> { // Left leg dataLeech = EntityData.SKIN_ID; negativeXToggle = EntityFlag.IS_ILLAGER_CAPTAIN; negativeYToggle = EntityFlag.IS_IN_UI; negativeZToggle = EntityFlag.LINGERING; - break; - case 21: // Right leg + } + case 21 -> { // Right leg dataLeech = EntityData.HURT_DIRECTION; negativeXToggle = EntityFlag.IS_PREGNANT; negativeYToggle = EntityFlag.SHEARED; negativeZToggle = EntityFlag.STALKING; - break; + } } if (dataLeech != null) { // Indicate that rotation should be checked diff --git a/connector/src/main/java/org/geysermc/connector/entity/living/animal/AxolotlEntity.java b/connector/src/main/java/org/geysermc/connector/entity/living/animal/AxolotlEntity.java index 3d2be0ce7..0968cecb0 100644 --- a/connector/src/main/java/org/geysermc/connector/entity/living/animal/AxolotlEntity.java +++ b/connector/src/main/java/org/geysermc/connector/entity/living/animal/AxolotlEntity.java @@ -44,12 +44,8 @@ public class AxolotlEntity extends AnimalEntity { if (entityMetadata.getId() == 17) { int variant = (int) entityMetadata.getValue(); switch (variant) { - case 1: // Java - "Wild" (brown) - variant = 3; - break; - case 3: // Java - cyan - variant = 1; - break; + case 1 -> variant = 3; // Java - "Wild" (brown) + case 3 -> variant = 1; // Java - cyan } metadata.put(EntityData.VARIANT, variant); } diff --git a/connector/src/main/java/org/geysermc/connector/entity/living/animal/tameable/CatEntity.java b/connector/src/main/java/org/geysermc/connector/entity/living/animal/tameable/CatEntity.java index 904f563f9..f22124409 100644 --- a/connector/src/main/java/org/geysermc/connector/entity/living/animal/tameable/CatEntity.java +++ b/connector/src/main/java/org/geysermc/connector/entity/living/animal/tameable/CatEntity.java @@ -59,23 +59,14 @@ public class CatEntity extends TameableEntity { } if (entityMetadata.getId() == 19) { // Different colors in Java and Bedrock for some reason - int variantColor; - switch ((int) entityMetadata.getValue()) { - case 0: - variantColor = 8; - break; - case 8: - variantColor = 0; - break; - case 9: - variantColor = 10; - break; - case 10: - variantColor = 9; - break; - default: - variantColor = (int) entityMetadata.getValue(); - } + int metadataValue = (int) entityMetadata.getValue(); + int variantColor = switch (metadataValue) { + case 0 -> 8; + case 8 -> 0; + case 9 -> 10; + case 10 -> 9; + default -> metadataValue; + }; metadata.put(EntityData.VARIANT, variantColor); } if (entityMetadata.getId() == 20) { diff --git a/connector/src/main/java/org/geysermc/connector/entity/living/monster/raid/SpellcasterIllagerEntity.java b/connector/src/main/java/org/geysermc/connector/entity/living/monster/raid/SpellcasterIllagerEntity.java index 7e92a7569..693220dda 100644 --- a/connector/src/main/java/org/geysermc/connector/entity/living/monster/raid/SpellcasterIllagerEntity.java +++ b/connector/src/main/java/org/geysermc/connector/entity/living/monster/raid/SpellcasterIllagerEntity.java @@ -49,19 +49,13 @@ public class SpellcasterIllagerEntity extends AbstractIllagerEntity { int spellType = (int) (byte) entityMetadata.getValue(); // Summon vex, attack, or wololo metadata.getFlags().setFlag(EntityFlag.CASTING, spellType == 1 || spellType == 2 || spellType == 3); - int rgbData = 0; - // Set the spell color based on Java values - switch (spellType) { - case 1: - rgbData = SUMMON_VEX_PARTICLE_COLOR; - break; - case 2: - rgbData = ATTACK_PARTICLE_COLOR; - break; - case 3: - rgbData = WOLOLO_PARTICLE_COLOR; - break; - } + int rgbData = switch (spellType) { + // Set the spell color based on Java values + case 1 -> SUMMON_VEX_PARTICLE_COLOR; + case 2 -> ATTACK_PARTICLE_COLOR; + case 3 -> WOLOLO_PARTICLE_COLOR; + default -> 0; + }; metadata.put(EntityData.EVOKER_SPELL_COLOR, rgbData); } super.updateBedrockMetadata(entityMetadata, session); diff --git a/connector/src/main/java/org/geysermc/connector/entity/player/PlayerEntity.java b/connector/src/main/java/org/geysermc/connector/entity/player/PlayerEntity.java index 6d4117a80..d5170d2fc 100644 --- a/connector/src/main/java/org/geysermc/connector/entity/player/PlayerEntity.java +++ b/connector/src/main/java/org/geysermc/connector/entity/player/PlayerEntity.java @@ -316,17 +316,12 @@ public class PlayerEntity extends LivingEntity { protected void setDimensions(Pose pose) { float height; switch (pose) { - case SNEAKING: - height = 1.5f; - break; - case FALL_FLYING: - case SPIN_ATTACK: - case SWIMMING: - height = 0.6f; - break; - default: + case SNEAKING -> height = 1.5f; + case FALL_FLYING, SPIN_ATTACK, SWIMMING -> height = 0.6f; + default -> { super.setDimensions(pose); return; + } } metadata.put(EntityData.BOUNDING_BOX_WIDTH, entityType.getWidth()); metadata.put(EntityData.BOUNDING_BOX_HEIGHT, height); diff --git a/connector/src/main/java/org/geysermc/connector/network/BedrockProtocol.java b/connector/src/main/java/org/geysermc/connector/network/BedrockProtocol.java index 660f1d039..3efb7a849 100644 --- a/connector/src/main/java/org/geysermc/connector/network/BedrockProtocol.java +++ b/connector/src/main/java/org/geysermc/connector/network/BedrockProtocol.java @@ -26,9 +26,7 @@ package org.geysermc.connector.network; import com.nukkitx.protocol.bedrock.BedrockPacketCodec; -import com.nukkitx.protocol.bedrock.v440.Bedrock_v440; import com.nukkitx.protocol.bedrock.v448.Bedrock_v448; -import org.geysermc.connector.GeyserConnector; import java.util.ArrayList; import java.util.List; @@ -49,11 +47,6 @@ public class BedrockProtocol { public static final List SUPPORTED_BEDROCK_CODECS = new ArrayList<>(); static { - if (!GeyserConnector.getInstance().getConfig().isExtendedWorldHeight()) { - SUPPORTED_BEDROCK_CODECS.add(Bedrock_v440.V440_CODEC.toBuilder() - .minecraftVersion("1.17.0/1.17.1/1.17.2") - .build()); - } SUPPORTED_BEDROCK_CODECS.add(DEFAULT_BEDROCK_CODEC.toBuilder() .minecraftVersion("1.17.10/1.17.11") .build()); diff --git a/connector/src/main/java/org/geysermc/connector/network/ConnectorServerEventHandler.java b/connector/src/main/java/org/geysermc/connector/network/ConnectorServerEventHandler.java index 94dd0b744..dcc3cb50b 100644 --- a/connector/src/main/java/org/geysermc/connector/network/ConnectorServerEventHandler.java +++ b/connector/src/main/java/org/geysermc/connector/network/ConnectorServerEventHandler.java @@ -129,10 +129,10 @@ public class ConnectorServerEventHandler implements BedrockServerEventHandler { } // Fallbacks to prevent errors and allow Bedrock to see the server - if (pong.getMotd() == null || pong.getMotd().trim().isEmpty()) { + if (pong.getMotd() == null || pong.getMotd().isBlank()) { pong.setMotd(GeyserConnector.NAME); } - if (pong.getSubMotd() == null || pong.getSubMotd().trim().isEmpty()) { + if (pong.getSubMotd() == null || pong.getSubMotd().isBlank()) { // Sub-MOTD cannot be empty as of 1.16.210.59 pong.setSubMotd(GeyserConnector.NAME); } diff --git a/connector/src/main/java/org/geysermc/connector/network/session/cache/EntityEffectCache.java b/connector/src/main/java/org/geysermc/connector/network/session/cache/EntityEffectCache.java index 7cf296be2..e165ea545 100644 --- a/connector/src/main/java/org/geysermc/connector/network/session/cache/EntityEffectCache.java +++ b/connector/src/main/java/org/geysermc/connector/network/session/cache/EntityEffectCache.java @@ -48,30 +48,18 @@ public class EntityEffectCache { public void setEffect(Effect effect, int effectAmplifier) { switch (effect) { - case CONDUIT_POWER: - conduitPower = effectAmplifier + 1; - break; - case FASTER_DIG: - haste = effectAmplifier + 1; - break; - case SLOWER_DIG: - miningFatigue = effectAmplifier + 1; - break; + case CONDUIT_POWER -> conduitPower = effectAmplifier + 1; + case FASTER_DIG -> haste = effectAmplifier + 1; + case SLOWER_DIG -> miningFatigue = effectAmplifier + 1; } entityEffects.add(effect); } public void removeEffect(Effect effect) { switch (effect) { - case CONDUIT_POWER: - conduitPower = 0; - break; - case FASTER_DIG: - haste = 0; - break; - case SLOWER_DIG: - miningFatigue = 0; - break; + case CONDUIT_POWER -> conduitPower = 0; + case FASTER_DIG -> haste = 0; + case SLOWER_DIG -> miningFatigue = 0; } entityEffects.remove(effect); } diff --git a/connector/src/main/java/org/geysermc/connector/network/translators/bedrock/BedrockAnimateTranslator.java b/connector/src/main/java/org/geysermc/connector/network/translators/bedrock/BedrockAnimateTranslator.java index 53912bf4e..229cba6e7 100644 --- a/connector/src/main/java/org/geysermc/connector/network/translators/bedrock/BedrockAnimateTranslator.java +++ b/connector/src/main/java/org/geysermc/connector/network/translators/bedrock/BedrockAnimateTranslator.java @@ -46,26 +46,25 @@ public class BedrockAnimateTranslator extends PacketTranslator { } switch (packet.getAction()) { - case SWING_ARM: + case SWING_ARM -> // Delay so entity damage can be processed first session.scheduleInEventLoop(() -> session.sendDownstreamPacket(new ClientPlayerSwingArmPacket(Hand.MAIN_HAND)), 25, TimeUnit.MILLISECONDS ); - break; // These two might need to be flipped, but my recommendation is getting moving working first - case ROW_LEFT: + case ROW_LEFT -> { // Packet value is a float of how long one has been rowing, so we convert that into a boolean session.setSteeringLeft(packet.getRowingTime() > 0.0); ClientSteerBoatPacket steerLeftPacket = new ClientSteerBoatPacket(session.isSteeringLeft(), session.isSteeringRight()); session.sendDownstreamPacket(steerLeftPacket); - break; - case ROW_RIGHT: + } + case ROW_RIGHT -> { session.setSteeringRight(packet.getRowingTime() > 0.0); ClientSteerBoatPacket steerRightPacket = new ClientSteerBoatPacket(session.isSteeringLeft(), session.isSteeringRight()); session.sendDownstreamPacket(steerRightPacket); - break; + } } } } diff --git a/connector/src/main/java/org/geysermc/connector/network/translators/bedrock/BedrockCommandBlockUpdateTranslator.java b/connector/src/main/java/org/geysermc/connector/network/translators/bedrock/BedrockCommandBlockUpdateTranslator.java index f8f503387..4a87776b1 100644 --- a/connector/src/main/java/org/geysermc/connector/network/translators/bedrock/BedrockCommandBlockUpdateTranslator.java +++ b/connector/src/main/java/org/geysermc/connector/network/translators/bedrock/BedrockCommandBlockUpdateTranslator.java @@ -42,18 +42,14 @@ public class BedrockCommandBlockUpdateTranslator extends PacketTranslator // The green one + CommandBlockMode.SEQUENCE; + case REPEATING -> // The purple one + CommandBlockMode.AUTO; + default -> // NORMAL, the orange one + CommandBlockMode.REDSTONE; + }; boolean isConditional = packet.isConditional(); boolean automatic = !packet.isRedstoneMode(); // Automatic = Always Active option in Java ClientUpdateCommandBlockPacket commandBlockPacket = new ClientUpdateCommandBlockPacket( diff --git a/connector/src/main/java/org/geysermc/connector/network/translators/bedrock/BedrockEntityPickRequestTranslator.java b/connector/src/main/java/org/geysermc/connector/network/translators/bedrock/BedrockEntityPickRequestTranslator.java index c6677dbdc..c1febb795 100644 --- a/connector/src/main/java/org/geysermc/connector/network/translators/bedrock/BedrockEntityPickRequestTranslator.java +++ b/connector/src/main/java/org/geysermc/connector/network/translators/bedrock/BedrockEntityPickRequestTranslator.java @@ -50,59 +50,30 @@ public class BedrockEntityPickRequestTranslator extends PacketTranslator { // Include type of boat in the name int variant = entity.getMetadata().getInt(EntityData.VARIANT); - String typeOfBoat; - switch (variant) { - case 1: - typeOfBoat = "spruce"; - break; - case 2: - typeOfBoat = "birch"; - break; - case 3: - typeOfBoat = "jungle"; - break; - case 4: - typeOfBoat = "acacia"; - break; - case 5: - typeOfBoat = "dark_oak"; - break; - default: - typeOfBoat = "oak"; - break; - } + String typeOfBoat = switch (variant) { + case 1 -> "spruce"; + case 2 -> "birch"; + case 3 -> "jungle"; + case 4 -> "acacia"; + case 5 -> "dark_oak"; + default -> "oak"; + }; itemName = typeOfBoat + "_boat"; - break; - case LEASH_KNOT: - itemName = "lead"; - break; - case MINECART_CHEST: - case MINECART_COMMAND_BLOCK: - case MINECART_FURNACE: - case MINECART_HOPPER: - case MINECART_TNT: - // Move MINECART to the end of the name - itemName = entity.getEntityType().toString().toLowerCase().replace("minecart_", "") + "_minecart"; - break; - case MINECART_SPAWNER: - // Turns into a normal minecart - itemName = "minecart"; - break; - case ARMOR_STAND: - case END_CRYSTAL: - //case ITEM_FRAME: Not an entity in Bedrock Edition - //case GLOW_ITEM_FRAME: - case MINECART: - case PAINTING: - // No spawn egg, just an item - itemName = entity.getEntityType().toString().toLowerCase(); - break; - default: - itemName = entity.getEntityType().toString().toLowerCase() + "_spawn_egg"; - break; + } + case LEASH_KNOT -> itemName = "lead"; + case MINECART_CHEST, MINECART_COMMAND_BLOCK, MINECART_FURNACE, MINECART_HOPPER, MINECART_TNT -> + // Move MINECART to the end of the name + itemName = entity.getEntityType().toString().toLowerCase().replace("minecart_", "") + "_minecart"; + case MINECART_SPAWNER -> itemName = "minecart"; // Turns into a normal minecart + //case ITEM_FRAME -> Not an entity in Bedrock Edition + //case GLOW_ITEM_FRAME -> + case ARMOR_STAND, END_CRYSTAL, MINECART, PAINTING -> + // No spawn egg, just an item + itemName = entity.getEntityType().toString().toLowerCase(); + default -> itemName = entity.getEntityType().toString().toLowerCase() + "_spawn_egg"; } String fullItemName = "minecraft:" + itemName; diff --git a/connector/src/main/java/org/geysermc/connector/network/translators/bedrock/BedrockInventoryTransactionTranslator.java b/connector/src/main/java/org/geysermc/connector/network/translators/bedrock/BedrockInventoryTransactionTranslator.java index 2de4e4cad..469b70ea0 100644 --- a/connector/src/main/java/org/geysermc/connector/network/translators/bedrock/BedrockInventoryTransactionTranslator.java +++ b/connector/src/main/java/org/geysermc/connector/network/translators/bedrock/BedrockInventoryTransactionTranslator.java @@ -108,7 +108,7 @@ public class BedrockInventoryTransactionTranslator extends PacketTranslator { // Check to make sure the client isn't spamming interaction // Based on Nukkit 1.0, with changes to ensure holding down still works boolean hasAlreadyClicked = System.currentTimeMillis() - session.getLastInteractionTime() < 110.0 && @@ -155,17 +155,14 @@ public class BedrockInventoryTransactionTranslator extends PacketTranslator playerPosition = playerPosition.sub(0, (EntityType.PLAYER.getOffset() - 1.27f), 0); - break; - case SWIMMING: - case FALL_FLYING: // Elytra - case SPIN_ATTACK: // Trident spin attack + case SWIMMING, + FALL_FLYING, // Elytra + SPIN_ATTACK -> // Trident spin attack playerPosition = playerPosition.sub(0, (EntityType.PLAYER.getOffset() - 0.4f), 0); - break; - case SLEEPING: + case SLEEPING -> playerPosition = playerPosition.sub(0, (EntityType.PLAYER.getOffset() - 0.2f), 0); - break; } // else, we don't have to modify the position float diffX = playerPosition.getX() - packet.getBlockPosition().getX(); @@ -248,15 +245,14 @@ public class BedrockInventoryTransactionTranslator extends PacketTranslator { if (packet.getActions().size() == 1 && packet.getLegacySlots().size() > 0) { InventoryActionData actionData = packet.getActions().get(0); LegacySetItemSlotData slotData = packet.getLegacySlots().get(0); @@ -286,8 +282,8 @@ public class BedrockInventoryTransactionTranslator extends PacketTranslator { int blockState = session.getGameMode() == GameMode.CREATIVE ? session.getConnector().getWorldManager().getBlockAt(session, packet.getBlockPosition()) : session.getBreakingBlock(); @@ -301,11 +297,11 @@ public class BedrockInventoryTransactionTranslator extends PacketTranslator MAXIMUM_BLOCK_DESTROYING_DISTANCE) { restoreCorrectBlock(session, packet.getBlockPosition(), packet); @@ -331,7 +327,7 @@ public class BedrockInventoryTransactionTranslator extends PacketTranslator { // Resend the packet so we get the eating sounds session.sendUpstreamPacket(packet); return; - case COMPLETE_TRADE: + } + case COMPLETE_TRADE -> { ClientSelectTradePacket selectTradePacket = new ClientSelectTradePacket(packet.getData()); session.sendDownstreamPacket(selectTradePacket); session.scheduleInEventLoop(() -> { Entity villager = session.getPlayerEntity(); Inventory openInventory = session.getOpenInventory(); - if (openInventory instanceof MerchantContainer) { - MerchantContainer merchantInventory = (MerchantContainer) openInventory; + if (openInventory instanceof MerchantContainer merchantInventory) { VillagerTrade[] trades = merchantInventory.getVillagerTrades(); if (trades != null && packet.getData() >= 0 && packet.getData() < trades.length) { VillagerTrade trade = merchantInventory.getVillagerTrades()[packet.getData()]; @@ -68,6 +68,7 @@ public class BedrockEntityEventTranslator extends PacketTranslator Math.abs((middleX + offset.getX()) - otherBox.getMiddleX()) * 2 < (sizeX + otherBox.getSizeX()); + case Y -> Math.abs((middleY + offset.getY()) - otherBox.getMiddleY()) * 2 < (sizeY + otherBox.getSizeY()); + case Z -> Math.abs((middleZ + offset.getZ()) - otherBox.getMiddleZ()) * 2 < (sizeZ + otherBox.getSizeZ()); + }; } /** @@ -141,21 +137,14 @@ public class BoundingBox implements Cloneable { * @return The distance to move in the direction of {@code side} */ public double getIntersectionSize(BoundingBox otherBoundingBox, Direction side) { - switch (side) { - case DOWN: - return getMax().getY() - otherBoundingBox.getMin().getY(); - case UP: - return otherBoundingBox.getMax().getY() - getMin().getY(); - case NORTH: - return getMax().getZ() - otherBoundingBox.getMin().getZ(); - case SOUTH: - return otherBoundingBox.getMax().getZ() - getMin().getZ(); - case WEST: - return getMax().getX() - otherBoundingBox.getMin().getX(); - case EAST: - return otherBoundingBox.getMax().getX() - getMin().getX(); - } - return 0; + return switch (side) { + case DOWN -> getMax().getY() - otherBoundingBox.getMin().getY(); + case UP -> otherBoundingBox.getMax().getY() - getMin().getY(); + case NORTH -> getMax().getZ() - otherBoundingBox.getMin().getZ(); + case SOUTH -> otherBoundingBox.getMax().getZ() - getMin().getZ(); + case WEST -> getMax().getX() - otherBoundingBox.getMin().getX(); + case EAST -> otherBoundingBox.getMax().getX() - getMin().getX(); + }; } @SneakyThrows(CloneNotSupportedException.class) diff --git a/connector/src/main/java/org/geysermc/connector/network/translators/collision/CollisionManager.java b/connector/src/main/java/org/geysermc/connector/network/translators/collision/CollisionManager.java index 8ec42d4a9..943682f5c 100644 --- a/connector/src/main/java/org/geysermc/connector/network/translators/collision/CollisionManager.java +++ b/connector/src/main/java/org/geysermc/connector/network/translators/collision/CollisionManager.java @@ -31,8 +31,8 @@ import com.nukkitx.math.vector.Vector3i; import com.nukkitx.protocol.bedrock.data.entity.EntityData; import com.nukkitx.protocol.bedrock.data.entity.EntityFlag; import com.nukkitx.protocol.bedrock.data.entity.EntityFlags; -import com.nukkitx.protocol.bedrock.packet.*; -import com.nukkitx.protocol.bedrock.v448.Bedrock_v448; +import com.nukkitx.protocol.bedrock.packet.MovePlayerPacket; +import com.nukkitx.protocol.bedrock.packet.SetEntityDataPacket; import lombok.Getter; import lombok.Setter; import org.geysermc.connector.entity.player.PlayerEntity; @@ -420,13 +420,8 @@ public class CollisionManager { boolean flagsChanged; boolean isSneakingWithScaffolding = (touchingScaffolding || onScaffolding) && session.isSneaking(); - if (session.getUpstream().getProtocolVersion() < Bedrock_v448.V448_CODEC.getProtocolVersion()) { - // Now no longer sent with BDS as of 1.17.10 - flagsChanged = flags.setFlag(EntityFlag.FALL_THROUGH_SCAFFOLDING, isSneakingWithScaffolding); - } else { - flagsChanged = flags.setFlag(EntityFlag.OVER_DESCENDABLE_BLOCK, onScaffolding); - flagsChanged |= flags.setFlag(EntityFlag.IN_ASCENDABLE_BLOCK, touchingScaffolding); - } + flagsChanged = flags.setFlag(EntityFlag.OVER_DESCENDABLE_BLOCK, onScaffolding); + flagsChanged |= flags.setFlag(EntityFlag.IN_ASCENDABLE_BLOCK, touchingScaffolding); flagsChanged |= flags.setFlag(EntityFlag.OVER_SCAFFOLDING, isSneakingWithScaffolding); flagsChanged |= flags.setFlag(EntityFlag.IN_SCAFFOLDING, touchingScaffolding); diff --git a/connector/src/main/java/org/geysermc/connector/network/translators/collision/translators/DoorCollision.java b/connector/src/main/java/org/geysermc/connector/network/translators/collision/translators/DoorCollision.java index cdfeec8cf..8fb3e6981 100644 --- a/connector/src/main/java/org/geysermc/connector/network/translators/collision/translators/DoorCollision.java +++ b/connector/src/main/java/org/geysermc/connector/network/translators/collision/translators/DoorCollision.java @@ -75,18 +75,10 @@ public class DoorCollision extends BlockCollision { int z = blockPos.getZ(); switch (facing) { - case 1: // North - playerCollision.setMiddleZ(z + 0.5125); - break; - case 2: // East - playerCollision.setMiddleX(x + 0.5125); - break; - case 3: // South - playerCollision.setMiddleZ(z + 0.4875); - break; - case 4: // West - playerCollision.setMiddleX(x + 0.4875); - break; + case 1 -> playerCollision.setMiddleZ(z + 0.5125); // North + case 2 -> playerCollision.setMiddleX(x + 0.5125); // East + case 3 -> playerCollision.setMiddleZ(z + 0.4875); // South + case 4 -> playerCollision.setMiddleX(x + 0.4875); // West } } diff --git a/connector/src/main/java/org/geysermc/connector/network/translators/inventory/InventoryTranslator.java b/connector/src/main/java/org/geysermc/connector/network/translators/inventory/InventoryTranslator.java index 5c7a08834..b6a00982a 100644 --- a/connector/src/main/java/org/geysermc/connector/network/translators/inventory/InventoryTranslator.java +++ b/connector/src/main/java/org/geysermc/connector/network/translators/inventory/InventoryTranslator.java @@ -159,21 +159,14 @@ public abstract class InventoryTranslator { // Some special request that shouldn't be processed normally response = translateSpecialRequest(session, inventory, request); } else { - switch (firstAction.getType()) { - case CRAFT_RECIPE: - response = translateCraftingRequest(session, inventory, request); - break; - case CRAFT_RECIPE_AUTO: - response = translateAutoCraftingRequest(session, inventory, request); - break; - case CRAFT_CREATIVE: - // This is also used for pulling items out of creative - response = translateCreativeRequest(session, inventory, request); - break; - default: - response = translateRequest(session, inventory, request); - break; - } + response = switch (firstAction.getType()) { + case CRAFT_RECIPE -> translateCraftingRequest(session, inventory, request); + case CRAFT_RECIPE_AUTO -> translateAutoCraftingRequest(session, inventory, request); + case CRAFT_CREATIVE -> + // This is also used for pulling items out of creative + translateCreativeRequest(session, inventory, request); + default -> translateRequest(session, inventory, request); + }; } } else { response = rejectRequest(request); @@ -572,7 +565,7 @@ public abstract class InventoryTranslator { } switch (recipe.getType()) { - case CRAFTING_SHAPED: + case CRAFTING_SHAPED -> { ShapedRecipeData shapedData = (ShapedRecipeData) recipe.getData(); ingredients = shapedData.getIngredients(); recipeWidth = shapedData.getWidth(); @@ -580,8 +573,8 @@ public abstract class InventoryTranslator { if (shapedData.getWidth() > gridDimensions || shapedData.getHeight() > gridDimensions) { return rejectRequest(request); } - break; - case CRAFTING_SHAPELESS: + } + case CRAFTING_SHAPELESS -> { ShapelessRecipeData shapelessData = (ShapelessRecipeData) recipe.getData(); ingredients = shapelessData.getIngredients(); recipeWidth = gridDimensions; @@ -589,7 +582,7 @@ public abstract class InventoryTranslator { if (ingredients.length > gridSize) { return rejectRequest(request); } - break; + } } break; } diff --git a/connector/src/main/java/org/geysermc/connector/network/translators/inventory/click/ClickPlan.java b/connector/src/main/java/org/geysermc/connector/network/translators/inventory/click/ClickPlan.java index 997193091..1aec8bff2 100644 --- a/connector/src/main/java/org/geysermc/connector/network/translators/inventory/click/ClickPlan.java +++ b/connector/src/main/java/org/geysermc/connector/network/translators/inventory/click/ClickPlan.java @@ -179,31 +179,30 @@ public class ClickPlan { private void simulateAction(ClickAction action) { GeyserItemStack cursor = simulating ? getCursor() : session.getPlayerInventory().getCursor(); switch (action.click) { - case LEFT_OUTSIDE: + case LEFT_OUTSIDE -> { setCursor(GeyserItemStack.EMPTY); return; - case RIGHT_OUTSIDE: + } + case RIGHT_OUTSIDE -> { if (!cursor.isEmpty()) { cursor.sub(1); } return; + } } GeyserItemStack clicked = simulating ? getItem(action.slot) : inventory.getItem(action.slot); if (translator.getSlotType(action.slot) == SlotType.OUTPUT) { switch (action.click) { - case LEFT: - case RIGHT: + case LEFT, RIGHT -> { if (cursor.isEmpty() && !clicked.isEmpty()) { setCursor(clicked.copy()); } else if (InventoryUtils.canStack(cursor, clicked)) { cursor.add(clicked.getAmount()); } reduceCraftingGrid(false); - break; - case LEFT_SHIFT: - reduceCraftingGrid(true); - break; + } + case LEFT_SHIFT -> reduceCraftingGrid(true); } } else { switch (action.click) { diff --git a/connector/src/main/java/org/geysermc/connector/network/translators/inventory/translators/AnvilInventoryTranslator.java b/connector/src/main/java/org/geysermc/connector/network/translators/inventory/translators/AnvilInventoryTranslator.java index 1f36eaabe..9aef64b36 100644 --- a/connector/src/main/java/org/geysermc/connector/network/translators/inventory/translators/AnvilInventoryTranslator.java +++ b/connector/src/main/java/org/geysermc/connector/network/translators/inventory/translators/AnvilInventoryTranslator.java @@ -43,42 +43,32 @@ public class AnvilInventoryTranslator extends AbstractBlockInventoryTranslator { @Override public int bedrockSlotToJava(StackRequestSlotInfoData slotInfoData) { - switch (slotInfoData.getContainer()) { - case ANVIL_INPUT: - return 0; - case ANVIL_MATERIAL: - return 1; - case ANVIL_RESULT: - case CREATIVE_OUTPUT: - return 2; - } - return super.bedrockSlotToJava(slotInfoData); + return switch (slotInfoData.getContainer()) { + case ANVIL_INPUT -> 0; + case ANVIL_MATERIAL -> 1; + case ANVIL_RESULT, CREATIVE_OUTPUT -> 2; + default -> super.bedrockSlotToJava(slotInfoData); + }; } @Override public BedrockContainerSlot javaSlotToBedrockContainer(int slot) { - switch (slot) { - case 0: - return new BedrockContainerSlot(ContainerSlotType.ANVIL_INPUT, 1); - case 1: - return new BedrockContainerSlot(ContainerSlotType.ANVIL_MATERIAL, 2); - case 2: - return new BedrockContainerSlot(ContainerSlotType.ANVIL_RESULT, 50); - } - return super.javaSlotToBedrockContainer(slot); + return switch (slot) { + case 0 -> new BedrockContainerSlot(ContainerSlotType.ANVIL_INPUT, 1); + case 1 -> new BedrockContainerSlot(ContainerSlotType.ANVIL_MATERIAL, 2); + case 2 -> new BedrockContainerSlot(ContainerSlotType.ANVIL_RESULT, 50); + default -> super.javaSlotToBedrockContainer(slot); + }; } @Override public int javaSlotToBedrock(int slot) { - switch (slot) { - case 0: - return 1; - case 1: - return 2; - case 2: - return 50; - } - return super.javaSlotToBedrock(slot); + return switch (slot) { + case 0 -> 1; + case 1 -> 2; + case 2 -> 50; + default -> super.javaSlotToBedrock(slot); + }; } @Override diff --git a/connector/src/main/java/org/geysermc/connector/network/translators/inventory/translators/BrewingInventoryTranslator.java b/connector/src/main/java/org/geysermc/connector/network/translators/inventory/translators/BrewingInventoryTranslator.java index c54722849..17baff323 100644 --- a/connector/src/main/java/org/geysermc/connector/network/translators/inventory/translators/BrewingInventoryTranslator.java +++ b/connector/src/main/java/org/geysermc/connector/network/translators/inventory/translators/BrewingInventoryTranslator.java @@ -82,33 +82,23 @@ public class BrewingInventoryTranslator extends AbstractBlockInventoryTranslator @Override public int javaSlotToBedrock(int slot) { - switch (slot) { - case 0: - return 1; - case 1: - return 2; - case 2: - return 3; - case 3: - return 0; - case 4: - return 4; - } - return super.javaSlotToBedrock(slot); + return switch (slot) { + case 0 -> 1; + case 1 -> 2; + case 2 -> 3; + case 3 -> 0; + case 4 -> 4; + default -> super.javaSlotToBedrock(slot); + }; } @Override public BedrockContainerSlot javaSlotToBedrockContainer(int slot) { - switch (slot) { - case 0: - case 1: - case 2: - return new BedrockContainerSlot(ContainerSlotType.BREWING_RESULT, javaSlotToBedrock(slot)); - case 3: - return new BedrockContainerSlot(ContainerSlotType.BREWING_INPUT, 0); - case 4: - return new BedrockContainerSlot(ContainerSlotType.BREWING_FUEL, 4); - } - return super.javaSlotToBedrockContainer(slot); + return switch (slot) { + case 0, 1, 2 -> new BedrockContainerSlot(ContainerSlotType.BREWING_RESULT, javaSlotToBedrock(slot)); + case 3 -> new BedrockContainerSlot(ContainerSlotType.BREWING_INPUT, 0); + case 4 -> new BedrockContainerSlot(ContainerSlotType.BREWING_FUEL, 4); + default -> super.javaSlotToBedrockContainer(slot); + }; } } diff --git a/connector/src/main/java/org/geysermc/connector/network/translators/inventory/translators/CartographyInventoryTranslator.java b/connector/src/main/java/org/geysermc/connector/network/translators/inventory/translators/CartographyInventoryTranslator.java index 76bf21bd3..ef00f9343 100644 --- a/connector/src/main/java/org/geysermc/connector/network/translators/inventory/translators/CartographyInventoryTranslator.java +++ b/connector/src/main/java/org/geysermc/connector/network/translators/inventory/translators/CartographyInventoryTranslator.java @@ -59,42 +59,32 @@ public class CartographyInventoryTranslator extends AbstractBlockInventoryTransl @Override public int bedrockSlotToJava(StackRequestSlotInfoData slotInfoData) { - switch (slotInfoData.getContainer()) { - case CARTOGRAPHY_INPUT: - return 0; - case CARTOGRAPHY_ADDITIONAL: - return 1; - case CARTOGRAPHY_RESULT: - case CREATIVE_OUTPUT: - return 2; - } - return super.bedrockSlotToJava(slotInfoData); + return switch (slotInfoData.getContainer()) { + case CARTOGRAPHY_INPUT -> 0; + case CARTOGRAPHY_ADDITIONAL -> 1; + case CARTOGRAPHY_RESULT, CREATIVE_OUTPUT -> 2; + default -> super.bedrockSlotToJava(slotInfoData); + }; } @Override public BedrockContainerSlot javaSlotToBedrockContainer(int slot) { - switch (slot) { - case 0: - return new BedrockContainerSlot(ContainerSlotType.CARTOGRAPHY_INPUT, 12); - case 1: - return new BedrockContainerSlot(ContainerSlotType.CARTOGRAPHY_ADDITIONAL, 13); - case 2: - return new BedrockContainerSlot(ContainerSlotType.CARTOGRAPHY_RESULT, 50); - } - return super.javaSlotToBedrockContainer(slot); + return switch (slot) { + case 0 -> new BedrockContainerSlot(ContainerSlotType.CARTOGRAPHY_INPUT, 12); + case 1 -> new BedrockContainerSlot(ContainerSlotType.CARTOGRAPHY_ADDITIONAL, 13); + case 2 -> new BedrockContainerSlot(ContainerSlotType.CARTOGRAPHY_RESULT, 50); + default -> super.javaSlotToBedrockContainer(slot); + }; } @Override public int javaSlotToBedrock(int slot) { - switch (slot) { - case 0: - return 12; - case 1: - return 13; - case 2: - return 50; - } - return super.javaSlotToBedrock(slot); + return switch (slot) { + case 0 -> 12; + case 1 -> 13; + case 2 -> 50; + default -> super.javaSlotToBedrock(slot); + }; } @Override diff --git a/connector/src/main/java/org/geysermc/connector/network/translators/inventory/translators/GrindstoneInventoryTranslator.java b/connector/src/main/java/org/geysermc/connector/network/translators/inventory/translators/GrindstoneInventoryTranslator.java index 65364e147..a71594153 100644 --- a/connector/src/main/java/org/geysermc/connector/network/translators/inventory/translators/GrindstoneInventoryTranslator.java +++ b/connector/src/main/java/org/geysermc/connector/network/translators/inventory/translators/GrindstoneInventoryTranslator.java @@ -38,41 +38,31 @@ public class GrindstoneInventoryTranslator extends AbstractBlockInventoryTransla @Override public int bedrockSlotToJava(StackRequestSlotInfoData slotInfoData) { - switch (slotInfoData.getContainer()) { - case GRINDSTONE_INPUT: - return 0; - case GRINDSTONE_ADDITIONAL: - return 1; - case GRINDSTONE_RESULT: - case CREATIVE_OUTPUT: - return 2; - } - return super.bedrockSlotToJava(slotInfoData); + return switch (slotInfoData.getContainer()) { + case GRINDSTONE_INPUT -> 0; + case GRINDSTONE_ADDITIONAL -> 1; + case GRINDSTONE_RESULT, CREATIVE_OUTPUT -> 2; + default -> super.bedrockSlotToJava(slotInfoData); + }; } @Override public BedrockContainerSlot javaSlotToBedrockContainer(int slot) { - switch (slot) { - case 0: - return new BedrockContainerSlot(ContainerSlotType.GRINDSTONE_INPUT, 16); - case 1: - return new BedrockContainerSlot(ContainerSlotType.GRINDSTONE_ADDITIONAL, 17); - case 2: - return new BedrockContainerSlot(ContainerSlotType.GRINDSTONE_RESULT, 50); - } - return super.javaSlotToBedrockContainer(slot); + return switch (slot) { + case 0 -> new BedrockContainerSlot(ContainerSlotType.GRINDSTONE_INPUT, 16); + case 1 -> new BedrockContainerSlot(ContainerSlotType.GRINDSTONE_ADDITIONAL, 17); + case 2 -> new BedrockContainerSlot(ContainerSlotType.GRINDSTONE_RESULT, 50); + default -> super.javaSlotToBedrockContainer(slot); + }; } @Override public int javaSlotToBedrock(int slot) { - switch (slot) { - case 0: - return 16; - case 1: - return 17; - case 2: - return 50; - } - return super.javaSlotToBedrock(slot); + return switch (slot) { + case 0 -> 16; + case 1 -> 17; + case 2 -> 50; + default -> super.javaSlotToBedrock(slot); + }; } } diff --git a/connector/src/main/java/org/geysermc/connector/network/translators/inventory/translators/LoomInventoryTranslator.java b/connector/src/main/java/org/geysermc/connector/network/translators/inventory/translators/LoomInventoryTranslator.java index ec8f33f2e..c6909ec9f 100644 --- a/connector/src/main/java/org/geysermc/connector/network/translators/inventory/translators/LoomInventoryTranslator.java +++ b/connector/src/main/java/org/geysermc/connector/network/translators/inventory/translators/LoomInventoryTranslator.java @@ -125,10 +125,9 @@ public class LoomInventoryTranslator extends AbstractBlockInventoryTranslator { public ItemStackResponsePacket.Response translateSpecialRequest(GeyserSession session, Inventory inventory, ItemStackRequest request) { // TODO: I anticipate this will be changed in the future to use something non-deprecated. Keep an eye out. StackRequestActionData data = request.getActions()[1]; - if (!(data instanceof CraftResultsDeprecatedStackRequestActionData)) { + if (!(data instanceof CraftResultsDeprecatedStackRequestActionData craftData)) { return rejectRequest(request); } - CraftResultsDeprecatedStackRequestActionData craftData = (CraftResultsDeprecatedStackRequestActionData) data; // Get the patterns compound tag List newBlockEntityTag = craftData.getResultItems()[0].getTag().getList("Patterns", NbtType.COMPOUND); @@ -177,48 +176,35 @@ public class LoomInventoryTranslator extends AbstractBlockInventoryTranslator { @Override public int bedrockSlotToJava(StackRequestSlotInfoData slotInfoData) { - switch (slotInfoData.getContainer()) { - case LOOM_INPUT: - return 0; - case LOOM_DYE: - return 1; - case LOOM_MATERIAL: - return 2; - case LOOM_RESULT: - case CREATIVE_OUTPUT: - return 3; - } - return super.bedrockSlotToJava(slotInfoData); + return switch (slotInfoData.getContainer()) { + case LOOM_INPUT -> 0; + case LOOM_DYE -> 1; + case LOOM_MATERIAL -> 2; + case LOOM_RESULT, CREATIVE_OUTPUT -> 3; + default -> super.bedrockSlotToJava(slotInfoData); + }; } @Override public BedrockContainerSlot javaSlotToBedrockContainer(int slot) { - switch (slot) { - case 0: - return new BedrockContainerSlot(ContainerSlotType.LOOM_INPUT, 9); - case 1: - return new BedrockContainerSlot(ContainerSlotType.LOOM_DYE, 10); - case 2: - return new BedrockContainerSlot(ContainerSlotType.LOOM_MATERIAL, 11); - case 3: - return new BedrockContainerSlot(ContainerSlotType.LOOM_RESULT, 50); - } - return super.javaSlotToBedrockContainer(slot); + return switch (slot) { + case 0 -> new BedrockContainerSlot(ContainerSlotType.LOOM_INPUT, 9); + case 1 -> new BedrockContainerSlot(ContainerSlotType.LOOM_DYE, 10); + case 2 -> new BedrockContainerSlot(ContainerSlotType.LOOM_MATERIAL, 11); + case 3 -> new BedrockContainerSlot(ContainerSlotType.LOOM_RESULT, 50); + default -> super.javaSlotToBedrockContainer(slot); + }; } @Override public int javaSlotToBedrock(int slot) { - switch (slot) { - case 0: - return 9; - case 1: - return 10; - case 2: - return 11; - case 3: - return 50; - } - return super.javaSlotToBedrock(slot); + return switch (slot) { + case 0 -> 9; + case 1 -> 10; + case 2 -> 11; + case 3 -> 50; + default -> super.javaSlotToBedrock(slot); + }; } @Override diff --git a/connector/src/main/java/org/geysermc/connector/network/translators/inventory/translators/MerchantInventoryTranslator.java b/connector/src/main/java/org/geysermc/connector/network/translators/inventory/translators/MerchantInventoryTranslator.java index 736568868..63531ba8a 100644 --- a/connector/src/main/java/org/geysermc/connector/network/translators/inventory/translators/MerchantInventoryTranslator.java +++ b/connector/src/main/java/org/geysermc/connector/network/translators/inventory/translators/MerchantInventoryTranslator.java @@ -56,42 +56,32 @@ public class MerchantInventoryTranslator extends BaseInventoryTranslator { @Override public int javaSlotToBedrock(int slot) { - switch (slot) { - case 0: - return 4; - case 1: - return 5; - case 2: - return 50; - } - return super.javaSlotToBedrock(slot); + return switch (slot) { + case 0 -> 4; + case 1 -> 5; + case 2 -> 50; + default -> super.javaSlotToBedrock(slot); + }; } @Override public BedrockContainerSlot javaSlotToBedrockContainer(int slot) { - switch (slot) { - case 0: - return new BedrockContainerSlot(ContainerSlotType.TRADE2_INGREDIENT1, 4); - case 1: - return new BedrockContainerSlot(ContainerSlotType.TRADE2_INGREDIENT2, 5); - case 2: - return new BedrockContainerSlot(ContainerSlotType.TRADE2_RESULT, 50); - } - return super.javaSlotToBedrockContainer(slot); + return switch (slot) { + case 0 -> new BedrockContainerSlot(ContainerSlotType.TRADE2_INGREDIENT1, 4); + case 1 -> new BedrockContainerSlot(ContainerSlotType.TRADE2_INGREDIENT2, 5); + case 2 -> new BedrockContainerSlot(ContainerSlotType.TRADE2_RESULT, 50); + default -> super.javaSlotToBedrockContainer(slot); + }; } @Override public int bedrockSlotToJava(StackRequestSlotInfoData slotInfoData) { - switch (slotInfoData.getContainer()) { - case TRADE2_INGREDIENT1: - return 0; - case TRADE2_INGREDIENT2: - return 1; - case TRADE2_RESULT: - case CREATIVE_OUTPUT: - return 2; - } - return super.bedrockSlotToJava(slotInfoData); + return switch (slotInfoData.getContainer()) { + case TRADE2_INGREDIENT1 -> 0; + case TRADE2_INGREDIENT2 -> 1; + case TRADE2_RESULT, CREATIVE_OUTPUT -> 2; + default -> super.bedrockSlotToJava(slotInfoData); + }; } @Override diff --git a/connector/src/main/java/org/geysermc/connector/network/translators/inventory/translators/PlayerInventoryTranslator.java b/connector/src/main/java/org/geysermc/connector/network/translators/inventory/translators/PlayerInventoryTranslator.java index adde2b26f..f52a3053d 100644 --- a/connector/src/main/java/org/geysermc/connector/network/translators/inventory/translators/PlayerInventoryTranslator.java +++ b/connector/src/main/java/org/geysermc/connector/network/translators/inventory/translators/PlayerInventoryTranslator.java @@ -218,8 +218,7 @@ public class PlayerInventoryTranslator extends InventoryTranslator { IntSet affectedSlots = new IntOpenHashSet(); for (StackRequestActionData action : request.getActions()) { switch (action.getType()) { - case TAKE: - case PLACE: { + case TAKE, PLACE -> { TransferStackRequestActionData transferAction = (TransferStackRequestActionData) action; if (!(checkNetId(session, inventory, transferAction.getSource()) && checkNetId(session, inventory, transferAction.getDestination()))) { return rejectRequest(request); @@ -265,9 +264,8 @@ public class PlayerInventoryTranslator extends InventoryTranslator { affectedSlots.add(sourceSlot); affectedSlots.add(destSlot); } - break; } - case SWAP: { + case SWAP -> { SwapStackRequestActionData swapAction = (SwapStackRequestActionData) action; if (!(checkNetId(session, inventory, swapAction.getSource()) && checkNetId(session, inventory, swapAction.getDestination()))) { return rejectRequest(request); @@ -306,9 +304,8 @@ public class PlayerInventoryTranslator extends InventoryTranslator { affectedSlots.add(sourceSlot); affectedSlots.add(destSlot); } - break; } - case DROP: { + case DROP -> { DropStackRequestActionData dropAction = (DropStackRequestActionData) action; if (!checkNetId(session, inventory, dropAction.getSource())) { return rejectRequest(request); @@ -334,9 +331,8 @@ public class PlayerInventoryTranslator extends InventoryTranslator { session.sendDownstreamPacket(creativeDropPacket); sourceItem.sub(dropAction.getCount()); - break; } - case DESTROY: { + case DESTROY -> { // Only called when a creative client wants to destroy an item... I think - Camotoy DestroyStackRequestActionData destroyAction = (DestroyStackRequestActionData) action; if (!checkNetId(session, inventory, destroyAction.getSource())) { @@ -356,11 +352,11 @@ public class PlayerInventoryTranslator extends InventoryTranslator { // Just sync up the item on our end, since the server doesn't care what's in our cursor playerInv.getCursor().sub(destroyAction.getCount()); } - break; } - default: + default -> { session.getConnector().getLogger().error("Unknown crafting state induced by " + session.getName()); return rejectRequest(request); + } } } for (int slot : affectedSlots) { diff --git a/connector/src/main/java/org/geysermc/connector/network/translators/inventory/translators/SmithingInventoryTranslator.java b/connector/src/main/java/org/geysermc/connector/network/translators/inventory/translators/SmithingInventoryTranslator.java index dbe04f68b..8b30be406 100644 --- a/connector/src/main/java/org/geysermc/connector/network/translators/inventory/translators/SmithingInventoryTranslator.java +++ b/connector/src/main/java/org/geysermc/connector/network/translators/inventory/translators/SmithingInventoryTranslator.java @@ -38,41 +38,31 @@ public class SmithingInventoryTranslator extends AbstractBlockInventoryTranslato @Override public int bedrockSlotToJava(StackRequestSlotInfoData slotInfoData) { - switch (slotInfoData.getContainer()) { - case SMITHING_TABLE_INPUT: - return 0; - case SMITHING_TABLE_MATERIAL: - return 1; - case SMITHING_TABLE_RESULT: - case CREATIVE_OUTPUT: - return 2; - } - return super.bedrockSlotToJava(slotInfoData); + return switch (slotInfoData.getContainer()) { + case SMITHING_TABLE_INPUT -> 0; + case SMITHING_TABLE_MATERIAL -> 1; + case SMITHING_TABLE_RESULT, CREATIVE_OUTPUT -> 2; + default -> super.bedrockSlotToJava(slotInfoData); + }; } @Override public BedrockContainerSlot javaSlotToBedrockContainer(int slot) { - switch (slot) { - case 0: - return new BedrockContainerSlot(ContainerSlotType.SMITHING_TABLE_INPUT, 51); - case 1: - return new BedrockContainerSlot(ContainerSlotType.SMITHING_TABLE_MATERIAL, 52); - case 2: - return new BedrockContainerSlot(ContainerSlotType.SMITHING_TABLE_RESULT, 50); - } - return super.javaSlotToBedrockContainer(slot); + return switch (slot) { + case 0 -> new BedrockContainerSlot(ContainerSlotType.SMITHING_TABLE_INPUT, 51); + case 1 -> new BedrockContainerSlot(ContainerSlotType.SMITHING_TABLE_MATERIAL, 52); + case 2 -> new BedrockContainerSlot(ContainerSlotType.SMITHING_TABLE_RESULT, 50); + default -> super.javaSlotToBedrockContainer(slot); + }; } @Override public int javaSlotToBedrock(int slot) { - switch (slot) { - case 0: - return 51; - case 1: - return 52; - case 2: - return 50; - } - return super.javaSlotToBedrock(slot); + return switch (slot) { + case 0 -> 51; + case 1 -> 52; + case 2 -> 50; + default -> super.javaSlotToBedrock(slot); + }; } } diff --git a/connector/src/main/java/org/geysermc/connector/network/translators/inventory/translators/StonecutterInventoryTranslator.java b/connector/src/main/java/org/geysermc/connector/network/translators/inventory/translators/StonecutterInventoryTranslator.java index e4dea7265..d6bbe7d5d 100644 --- a/connector/src/main/java/org/geysermc/connector/network/translators/inventory/translators/StonecutterInventoryTranslator.java +++ b/connector/src/main/java/org/geysermc/connector/network/translators/inventory/translators/StonecutterInventoryTranslator.java @@ -61,10 +61,9 @@ public class StonecutterInventoryTranslator extends AbstractBlockInventoryTransl public ItemStackResponsePacket.Response translateSpecialRequest(GeyserSession session, Inventory inventory, ItemStackRequest request) { // TODO: Also surely to change in the future StackRequestActionData data = request.getActions()[1]; - if (!(data instanceof CraftResultsDeprecatedStackRequestActionData)) { + if (!(data instanceof CraftResultsDeprecatedStackRequestActionData craftData)) { return rejectRequest(request); } - CraftResultsDeprecatedStackRequestActionData craftData = (CraftResultsDeprecatedStackRequestActionData) data; StonecutterContainer container = (StonecutterContainer) inventory; // Get the ID of the item we are cutting @@ -94,14 +93,11 @@ public class StonecutterInventoryTranslator extends AbstractBlockInventoryTransl @Override public int bedrockSlotToJava(StackRequestSlotInfoData slotInfoData) { - switch (slotInfoData.getContainer()) { - case STONECUTTER_INPUT: - return 0; - case STONECUTTER_RESULT: - case CREATIVE_OUTPUT: - return 1; - } - return super.bedrockSlotToJava(slotInfoData); + return switch (slotInfoData.getContainer()) { + case STONECUTTER_INPUT -> 0; + case STONECUTTER_RESULT, CREATIVE_OUTPUT -> 1; + default -> super.bedrockSlotToJava(slotInfoData); + }; } @Override diff --git a/connector/src/main/java/org/geysermc/connector/network/translators/item/ItemTranslator.java b/connector/src/main/java/org/geysermc/connector/network/translators/item/ItemTranslator.java index ec55bc48c..9fcf984cd 100644 --- a/connector/src/main/java/org/geysermc/connector/network/translators/item/ItemTranslator.java +++ b/connector/src/main/java/org/geysermc/connector/network/translators/item/ItemTranslator.java @@ -299,8 +299,7 @@ public abstract class ItemTranslator { return ((StringTag) tag).getValue(); } - if (tag instanceof ListTag) { - ListTag listTag = (ListTag) tag; + if (tag instanceof ListTag listTag) { List tagList = new ArrayList<>(); for (Tag value : listTag) { @@ -313,8 +312,7 @@ public abstract class ItemTranslator { return new NbtList(type, tagList); } - if (tag instanceof CompoundTag) { - CompoundTag compoundTag = (CompoundTag) tag; + if (tag instanceof CompoundTag compoundTag) { return translateNbtToBedrock(compoundTag); } @@ -390,8 +388,7 @@ public abstract class ItemTranslator { return new ListTag(name, tags); } - if (object instanceof NbtMap) { - NbtMap map = (NbtMap) object; + if (object instanceof NbtMap map) { return translateToJavaNBT(name, map); } diff --git a/connector/src/main/java/org/geysermc/connector/network/translators/item/translators/nbt/BookPagesTranslator.java b/connector/src/main/java/org/geysermc/connector/network/translators/item/translators/nbt/BookPagesTranslator.java index 208db0987..f1bf69f64 100644 --- a/connector/src/main/java/org/geysermc/connector/network/translators/item/translators/nbt/BookPagesTranslator.java +++ b/connector/src/main/java/org/geysermc/connector/network/translators/item/translators/nbt/BookPagesTranslator.java @@ -49,11 +49,9 @@ public class BookPagesTranslator extends NbtItemStackTranslator { List pages = new ArrayList<>(); ListTag pagesTag = itemTag.get("pages"); for (Tag tag : pagesTag.getValue()) { - if (!(tag instanceof StringTag)) + if (!(tag instanceof StringTag textTag)) continue; - StringTag textTag = (StringTag) tag; - CompoundTag pageTag = new CompoundTag(""); pageTag.put(new StringTag("photoname", "")); pageTag.put(new StringTag("text", MessageTranslator.convertMessageLenient(textTag.getValue()))); @@ -72,11 +70,9 @@ public class BookPagesTranslator extends NbtItemStackTranslator { List pages = new ArrayList<>(); ListTag pagesTag = itemTag.get("pages"); for (Tag tag : pagesTag.getValue()) { - if (!(tag instanceof CompoundTag)) + if (!(tag instanceof CompoundTag pageTag)) continue; - CompoundTag pageTag = (CompoundTag) tag; - StringTag textTag = pageTag.get("text"); pages.add(new StringTag("", textTag.getValue())); } diff --git a/connector/src/main/java/org/geysermc/connector/network/translators/item/translators/nbt/EnchantmentTranslator.java b/connector/src/main/java/org/geysermc/connector/network/translators/item/translators/nbt/EnchantmentTranslator.java index 58caad3f1..6d7ab4de6 100644 --- a/connector/src/main/java/org/geysermc/connector/network/translators/item/translators/nbt/EnchantmentTranslator.java +++ b/connector/src/main/java/org/geysermc/connector/network/translators/item/translators/nbt/EnchantmentTranslator.java @@ -82,10 +82,9 @@ public class EnchantmentTranslator extends NbtItemStackTranslator { List enchantments = new ArrayList<>(); List storedEnchantments = new ArrayList<>(); for (Tag value : enchantmentTag.getValue()) { - if (!(value instanceof CompoundTag)) + if (!(value instanceof CompoundTag tagValue)) continue; - CompoundTag tagValue = (CompoundTag) value; ShortTag bedrockId = tagValue.get("id"); if (bedrockId == null) continue; diff --git a/connector/src/main/java/org/geysermc/connector/network/translators/java/JavaChatTranslator.java b/connector/src/main/java/org/geysermc/connector/network/translators/java/JavaChatTranslator.java index e059517d7..57e473267 100644 --- a/connector/src/main/java/org/geysermc/connector/network/translators/java/JavaChatTranslator.java +++ b/connector/src/main/java/org/geysermc/connector/network/translators/java/JavaChatTranslator.java @@ -41,20 +41,12 @@ public class JavaChatTranslator extends PacketTranslator { textPacket.setPlatformChatId(""); textPacket.setSourceName(""); textPacket.setXuid(session.getAuthData().getXboxUUID()); - switch (packet.getType()) { - case CHAT: - textPacket.setType(TextPacket.Type.CHAT); - break; - case SYSTEM: - textPacket.setType(TextPacket.Type.SYSTEM); - break; - case NOTIFICATION: - textPacket.setType(TextPacket.Type.TIP); - break; - default: - textPacket.setType(TextPacket.Type.RAW); - break; - } + textPacket.setType(switch (packet.getType()) { + case CHAT -> TextPacket.Type.CHAT; + case SYSTEM -> TextPacket.Type.SYSTEM; + case NOTIFICATION -> TextPacket.Type.TIP; + default -> TextPacket.Type.RAW; + }); textPacket.setNeedsTranslation(false); textPacket.setMessage(MessageTranslator.convertMessage(packet.getMessage(), session.getLocale())); diff --git a/connector/src/main/java/org/geysermc/connector/network/translators/java/JavaDeclareCommandsTranslator.java b/connector/src/main/java/org/geysermc/connector/network/translators/java/JavaDeclareCommandsTranslator.java index e4116c6aa..996619eac 100644 --- a/connector/src/main/java/org/geysermc/connector/network/translators/java/JavaDeclareCommandsTranslator.java +++ b/connector/src/main/java/org/geysermc/connector/network/translators/java/JavaDeclareCommandsTranslator.java @@ -204,67 +204,25 @@ public class JavaDeclareCommandsTranslator extends PacketTranslator=", "==", etc - return CommandParam.OPERATOR; - - case BLOCK_STATE: - return BlockRegistries.JAVA_TO_BEDROCK_IDENTIFIERS.get().keySet().toArray(new String[0]); - - case ITEM_STACK: - return session.getItemMappings().getItemNames(); - - case ITEM_ENCHANTMENT: - return Enchantment.JavaEnchantment.ALL_JAVA_IDENTIFIERS; - - case ENTITY_SUMMON: - return EntityType.ALL_JAVA_IDENTIFIERS; - - case COLOR: - return VALID_COLORS; - - case SCOREBOARD_SLOT: - return VALID_SCOREBOARD_SLOTS; - - default: - return CommandParam.STRING; - } + return switch (parser) { + case FLOAT, ROTATION, DOUBLE -> CommandParam.FLOAT; + case INTEGER, LONG -> CommandParam.INT; + case ENTITY, GAME_PROFILE -> CommandParam.TARGET; + case BLOCK_POS -> CommandParam.BLOCK_POSITION; + case COLUMN_POS, VEC3 -> CommandParam.POSITION; + case MESSAGE -> CommandParam.MESSAGE; + case NBT, NBT_COMPOUND_TAG, NBT_TAG, NBT_PATH -> CommandParam.JSON; + case RESOURCE_LOCATION, FUNCTION -> CommandParam.FILE_PATH; + case BOOL -> ENUM_BOOLEAN; + case OPERATION -> CommandParam.OPERATOR; // ">=", "==", etc + case BLOCK_STATE -> BlockRegistries.JAVA_TO_BEDROCK_IDENTIFIERS.get().keySet().toArray(new String[0]); + case ITEM_STACK -> session.getItemMappings().getItemNames(); + case ITEM_ENCHANTMENT -> Enchantment.JavaEnchantment.ALL_JAVA_IDENTIFIERS; + case ENTITY_SUMMON -> EntityType.ALL_JAVA_IDENTIFIERS; + case COLOR -> VALID_COLORS; + case SCOREBOARD_SLOT -> VALID_SCOREBOARD_SLOTS; + default -> CommandParam.STRING; + }; } @Getter diff --git a/connector/src/main/java/org/geysermc/connector/network/translators/java/JavaDeclareRecipesTranslator.java b/connector/src/main/java/org/geysermc/connector/network/translators/java/JavaDeclareRecipesTranslator.java index fd534759b..8d01470e0 100644 --- a/connector/src/main/java/org/geysermc/connector/network/translators/java/JavaDeclareRecipesTranslator.java +++ b/connector/src/main/java/org/geysermc/connector/network/translators/java/JavaDeclareRecipesTranslator.java @@ -82,7 +82,7 @@ public class JavaDeclareRecipesTranslator extends PacketTranslator { ShapelessRecipeData shapelessRecipeData = (ShapelessRecipeData) recipe.getData(); ItemData output = ItemTranslator.translateToBedrock(session, shapelessRecipeData.getResult()); // Strip NBT - tools won't appear in the recipe book otherwise @@ -94,9 +94,8 @@ public class JavaDeclareRecipesTranslator extends PacketTranslator { ShapedRecipeData shapedRecipeData = (ShapedRecipeData) recipe.getData(); ItemData output = ItemTranslator.translateToBedrock(session, shapedRecipeData.getResult()); // See above @@ -106,12 +105,11 @@ public class JavaDeclareRecipesTranslator extends PacketTranslator { StoneCuttingRecipeData stoneCuttingData = (StoneCuttingRecipeData) recipe.getData(); ItemStack ingredient = stoneCuttingData.getIngredient().getOptions()[0]; List data = unsortedStonecutterData.get(ingredient.getId()); @@ -121,14 +119,12 @@ public class JavaDeclareRecipesTranslator extends PacketTranslator { List craftingData = recipeTypes.get(recipe.getType()); if (craftingData != null) { craftingDataPacket.getCraftingData().addAll(craftingData); } - break; } } } diff --git a/connector/src/main/java/org/geysermc/connector/network/translators/java/entity/JavaEntityEquipmentTranslator.java b/connector/src/main/java/org/geysermc/connector/network/translators/java/entity/JavaEntityEquipmentTranslator.java index 5dc015418..f297f1a38 100644 --- a/connector/src/main/java/org/geysermc/connector/network/translators/java/entity/JavaEntityEquipmentTranslator.java +++ b/connector/src/main/java/org/geysermc/connector/network/translators/java/entity/JavaEntityEquipmentTranslator.java @@ -50,7 +50,7 @@ public class JavaEntityEquipmentTranslator extends PacketTranslator { livingEntity.setHelmet(item); armorUpdated = true; - break; - case CHESTPLATE: + } + case CHESTPLATE -> { livingEntity.setChestplate(item); armorUpdated = true; - break; - case LEGGINGS: + } + case LEGGINGS -> { livingEntity.setLeggings(item); armorUpdated = true; - break; - case BOOTS: + } + case BOOTS -> { livingEntity.setBoots(item); armorUpdated = true; - break; - case MAIN_HAND: + } + case MAIN_HAND -> { livingEntity.setHand(item); mainHandUpdated = true; - break; - case OFF_HAND: + } + case OFF_HAND -> { livingEntity.setOffHand(item); offHandUpdated = true; - break; + } } } diff --git a/connector/src/main/java/org/geysermc/connector/network/translators/java/entity/JavaEntitySetPassengersTranslator.java b/connector/src/main/java/org/geysermc/connector/network/translators/java/entity/JavaEntitySetPassengersTranslator.java index 3e9fa0755..da282648b 100644 --- a/connector/src/main/java/org/geysermc/connector/network/translators/java/entity/JavaEntitySetPassengersTranslator.java +++ b/connector/src/main/java/org/geysermc/connector/network/translators/java/entity/JavaEntitySetPassengersTranslator.java @@ -124,14 +124,10 @@ public class JavaEntitySetPassengersTranslator extends PacketTranslator { entity.getMetadata().put(EntityData.RIDER_MAX_ROTATION, 181.0f); entity.updateBedrockMetadata(session); - break; + } } } } diff --git a/connector/src/main/java/org/geysermc/connector/network/translators/java/entity/JavaEntityStatusTranslator.java b/connector/src/main/java/org/geysermc/connector/network/translators/java/entity/JavaEntityStatusTranslator.java index 45d801c3d..8eafdd8bb 100644 --- a/connector/src/main/java/org/geysermc/connector/network/translators/java/entity/JavaEntityStatusTranslator.java +++ b/connector/src/main/java/org/geysermc/connector/network/translators/java/entity/JavaEntityStatusTranslator.java @@ -211,8 +211,7 @@ public class JavaEntityStatusTranslator extends PacketTranslator { PlayerEntity playerEntity; boolean self = entry.getProfile().getId().equals(session.getPlayerEntity().getUuid()); @@ -90,8 +90,8 @@ public class JavaPlayerListEntryTranslator extends PacketTranslator { // As the player entity is no longer present, we can remove the entry PlayerEntity entity = session.getEntityCache().removePlayerEntity(entry.getProfile().getId()); if (entity != null) { @@ -105,7 +105,7 @@ public class JavaPlayerListEntryTranslator extends PacketTranslator objective.setDisplayName(MessageTranslator.convertMessage(packet.getDisplayName())) + .setType(packet.getType().ordinal()); + case REMOVE -> scoreboard.unregisterObjective(packet.getName()); } if (objective == null || !objective.isActive()) { diff --git a/connector/src/main/java/org/geysermc/connector/network/translators/java/scoreboard/JavaTeamTranslator.java b/connector/src/main/java/org/geysermc/connector/network/translators/java/scoreboard/JavaTeamTranslator.java index 6ec4813d4..d8d2273b9 100644 --- a/connector/src/main/java/org/geysermc/connector/network/translators/java/scoreboard/JavaTeamTranslator.java +++ b/connector/src/main/java/org/geysermc/connector/network/translators/java/scoreboard/JavaTeamTranslator.java @@ -57,15 +57,13 @@ public class JavaTeamTranslator extends PacketTranslator { Scoreboard scoreboard = session.getWorldCache().getScoreboard(); Team team = scoreboard.getTeam(packet.getTeamName()); switch (packet.getAction()) { - case CREATE: - scoreboard.registerNewTeam(packet.getTeamName(), toPlayerSet(packet.getPlayers())) - .setName(MessageTranslator.convertMessage(packet.getDisplayName())) - .setColor(packet.getColor()) - .setNameTagVisibility(packet.getNameTagVisibility()) - .setPrefix(MessageTranslator.convertMessage(packet.getPrefix(), session.getLocale())) - .setSuffix(MessageTranslator.convertMessage(packet.getSuffix(), session.getLocale())); - break; - case UPDATE: + case CREATE -> scoreboard.registerNewTeam(packet.getTeamName(), toPlayerSet(packet.getPlayers())) + .setName(MessageTranslator.convertMessage(packet.getDisplayName())) + .setColor(packet.getColor()) + .setNameTagVisibility(packet.getNameTagVisibility()) + .setPrefix(MessageTranslator.convertMessage(packet.getPrefix(), session.getLocale())) + .setSuffix(MessageTranslator.convertMessage(packet.getSuffix(), session.getLocale())); + case UPDATE -> { if (team == null) { LOGGER.debug(LanguageUtils.getLocaleStringLog( "geyser.network.translator.team.failed_not_registered", @@ -80,8 +78,8 @@ public class JavaTeamTranslator extends PacketTranslator { .setPrefix(MessageTranslator.convertMessage(packet.getPrefix(), session.getLocale())) .setSuffix(MessageTranslator.convertMessage(packet.getSuffix(), session.getLocale())) .setUpdateType(UpdateType.UPDATE); - break; - case ADD_PLAYER: + } + case ADD_PLAYER -> { if (team == null) { LOGGER.debug(LanguageUtils.getLocaleStringLog( "geyser.network.translator.team.failed_not_registered", @@ -90,8 +88,8 @@ public class JavaTeamTranslator extends PacketTranslator { return; } team.addEntities(packet.getPlayers()); - break; - case REMOVE_PLAYER: + } + case REMOVE_PLAYER -> { if (team == null) { LOGGER.debug(LanguageUtils.getLocaleStringLog( "geyser.network.translator.team.failed_not_registered", @@ -100,10 +98,8 @@ public class JavaTeamTranslator extends PacketTranslator { return; } team.removeEntities(packet.getPlayers()); - break; - case REMOVE: - scoreboard.removeTeam(packet.getTeamName()); - break; + } + case REMOVE -> scoreboard.removeTeam(packet.getTeamName()); } // ScoreboardUpdater will handle it for us if the packets per second diff --git a/connector/src/main/java/org/geysermc/connector/network/translators/java/world/JavaBlockBreakAnimTranslator.java b/connector/src/main/java/org/geysermc/connector/network/translators/java/world/JavaBlockBreakAnimTranslator.java index 1a2b5e469..da2e74604 100644 --- a/connector/src/main/java/org/geysermc/connector/network/translators/java/world/JavaBlockBreakAnimTranslator.java +++ b/connector/src/main/java/org/geysermc/connector/network/translators/java/world/JavaBlockBreakAnimTranslator.java @@ -53,40 +53,20 @@ public class JavaBlockBreakAnimTranslator extends PacketTranslator levelEventPacket.setData(breakTime); + case STAGE_2 -> levelEventPacket.setData(breakTime * 2); + case STAGE_3 -> levelEventPacket.setData(breakTime * 3); + case STAGE_4 -> levelEventPacket.setData(breakTime * 4); + case STAGE_5 -> levelEventPacket.setData(breakTime * 5); + case STAGE_6 -> levelEventPacket.setData(breakTime * 6); + case STAGE_7 -> levelEventPacket.setData(breakTime * 7); + case STAGE_8 -> levelEventPacket.setData(breakTime * 8); + case STAGE_9 -> levelEventPacket.setData(breakTime * 9); + case STAGE_10 -> levelEventPacket.setData(breakTime * 10); + case RESET -> { levelEventPacket.setType(LevelEventType.BLOCK_STOP_BREAK); levelEventPacket.setData(0); - break; + } } session.sendUpstreamPacket(levelEventPacket); } diff --git a/connector/src/main/java/org/geysermc/connector/network/translators/java/world/JavaBlockValueTranslator.java b/connector/src/main/java/org/geysermc/connector/network/translators/java/world/JavaBlockValueTranslator.java index 2f46ed6e6..4f4215cf7 100644 --- a/connector/src/main/java/org/geysermc/connector/network/translators/java/world/JavaBlockValueTranslator.java +++ b/connector/src/main/java/org/geysermc/connector/network/translators/java/world/JavaBlockValueTranslator.java @@ -52,8 +52,7 @@ public class JavaBlockValueTranslator extends PacketTranslator 0 ? 1 : 0); session.sendUpstreamPacket(blockEventPacket); @@ -62,9 +61,9 @@ public class JavaBlockValueTranslator extends PacketTranslator 0; // north + case 4 -> 1; // east + case 5 -> 3;// west + default -> bellValue.getValue(); // south (2) is identical + }; builder.putInt("Direction", bedrockRingDirection); builder.putByte("Ringing", (byte) 1); builder.putInt("Ticks", 0); diff --git a/connector/src/main/java/org/geysermc/connector/network/translators/java/world/JavaNotifyClientTranslator.java b/connector/src/main/java/org/geysermc/connector/network/translators/java/world/JavaNotifyClientTranslator.java index 1cdc09a75..282712172 100644 --- a/connector/src/main/java/org/geysermc/connector/network/translators/java/world/JavaNotifyClientTranslator.java +++ b/connector/src/main/java/org/geysermc/connector/network/translators/java/world/JavaNotifyClientTranslator.java @@ -125,16 +125,16 @@ public class JavaNotifyClientTranslator extends PacketTranslator { ClientRequestPacket javaRespawnPacket = new ClientRequestPacket(ClientRequest.RESPAWN); session.sendDownstreamPacket(javaRespawnPacket); - break; - case FIRST_TIME: + } + case FIRST_TIME -> { ShowCreditsPacket showCreditsPacket = new ShowCreditsPacket(); showCreditsPacket.setStatus(ShowCreditsPacket.Status.START_CREDITS); showCreditsPacket.setRuntimeEntityId(entity.getGeyserId()); session.sendUpstreamPacket(showCreditsPacket); - break; + } } break; case AFFECTED_BY_ELDER_GUARDIAN: diff --git a/connector/src/main/java/org/geysermc/connector/network/translators/java/world/JavaPlayEffectTranslator.java b/connector/src/main/java/org/geysermc/connector/network/translators/java/world/JavaPlayEffectTranslator.java index aca7a1f93..e29fd437f 100644 --- a/connector/src/main/java/org/geysermc/connector/network/translators/java/world/JavaPlayEffectTranslator.java +++ b/connector/src/main/java/org/geysermc/connector/network/translators/java/world/JavaPlayEffectTranslator.java @@ -80,34 +80,28 @@ public class JavaPlayEffectTranslator extends PacketTranslator { effectPacket.setType(LevelEventType.PARTICLE_CROP_GROWTH); ComposterEffectData composterEffectData = (ComposterEffectData) packet.getData(); LevelSoundEventPacket soundEventPacket = new LevelSoundEventPacket(); switch (composterEffectData) { - case FILL: - soundEventPacket.setSound(SoundEvent.COMPOSTER_FILL); - break; - case FILL_SUCCESS: - soundEventPacket.setSound(SoundEvent.COMPOSTER_FILL_LAYER); - break; + case FILL -> soundEventPacket.setSound(SoundEvent.COMPOSTER_FILL); + case FILL_SUCCESS -> soundEventPacket.setSound(SoundEvent.COMPOSTER_FILL_LAYER); } soundEventPacket.setPosition(pos); soundEventPacket.setIdentifier(""); @@ -115,9 +109,8 @@ public class JavaPlayEffectTranslator extends PacketTranslator { effectPacket.setType(LevelEventType.PARTICLE_EVAPORATE); effectPacket.setPosition(pos.add(-0.5f, 0.7f, -0.5f)); @@ -129,9 +122,8 @@ public class JavaPlayEffectTranslator extends PacketTranslator { effectPacket.setType(LevelEventType.PARTICLE_EVAPORATE); effectPacket.setPosition(pos.add(-0.5f, 0, -0.5f)); @@ -143,9 +135,8 @@ public class JavaPlayEffectTranslator extends PacketTranslator { effectPacket.setType(LevelEventType.PARTICLE_EVAPORATE); effectPacket.setPosition(pos.add(-0.5f, 0.3125f, -0.5f)); @@ -157,53 +148,50 @@ public class JavaPlayEffectTranslator extends PacketTranslator { effectPacket.setType(LevelEventType.PARTICLE_SHOOT); SmokeEffectData smokeEffectData = (SmokeEffectData) packet.getData(); int data = 0; switch (smokeEffectData) { - case DOWN: + case DOWN -> { data = 4; pos = pos.add(0, -0.9f, 0); - break; - case UP: + } + case UP -> { data = 4; pos = pos.add(0, 0.5f, 0); - break; - case NORTH: + } + case NORTH -> { data = 1; pos = pos.add(0, -0.2f, -0.7f); - break; - case SOUTH: + } + case SOUTH -> { data = 7; pos = pos.add(0, -0.2f, 0.7f); - break; - case WEST: + } + case WEST -> { data = 3; pos = pos.add(-0.7f, -0.2f, 0); - break; - case EAST: + } + case EAST -> { data = 5; pos = pos.add(0.7f, -0.2f, 0); - break; - + } } effectPacket.setPosition(pos); effectPacket.setData(data); - break; } + //TODO: Block break particles when under fire - case BREAK_BLOCK: { + case BREAK_BLOCK -> { effectPacket.setType(LevelEventType.PARTICLE_DESTROY_BLOCK); BreakBlockEffectData breakBlockEffectData = (BreakBlockEffectData) packet.getData(); effectPacket.setData(session.getBlockMappings().getBedrockBlockId(breakBlockEffectData.getBlockState())); - break; } - case BREAK_SPLASH_POTION: { + case BREAK_SPLASH_POTION -> { effectPacket.setType(LevelEventType.PARTICLE_POTION_SPLASH); effectPacket.setPosition(pos.add(0, -0.5f, 0)); @@ -218,25 +206,21 @@ public class JavaPlayEffectTranslator extends PacketTranslator { effectPacket.setType(LevelEventType.PARTICLE_EYE_OF_ENDER_DEATH); - break; } - case MOB_SPAWN: { + case MOB_SPAWN -> { effectPacket.setType(LevelEventType.PARTICLE_MOB_BLOCK_SPAWN); // TODO: Check, but I don't think I really verified this ever went into effect on Java - break; } - case BONEMEAL_GROW_WITH_SOUND: // Note that there is no particle without sound in Bedrock. If you wanted to implement the sound, send a PlaySoundPacket with "item.bone_meal.use" and volume and pitch at 1.0F - case BONEMEAL_GROW: { + // Note that there is no particle without sound in Bedrock. If you wanted to implement the sound, send a PlaySoundPacket with "item.bone_meal.use" and volume and pitch at 1.0F + case BONEMEAL_GROW_WITH_SOUND, BONEMEAL_GROW -> { effectPacket.setType(LevelEventType.PARTICLE_CROP_GROWTH); BonemealGrowEffectData growEffectData = (BonemealGrowEffectData) packet.getData(); effectPacket.setData(growEffectData.getParticleCount()); - break; } - case ENDERDRAGON_FIREBALL_EXPLODE: { + case ENDERDRAGON_FIREBALL_EXPLODE -> { effectPacket.setType(LevelEventType.PARTICLE_EYE_OF_ENDER_DEATH); // TODO DragonFireballEffectData fireballEffectData = (DragonFireballEffectData) packet.getData(); @@ -250,19 +234,16 @@ public class JavaPlayEffectTranslator extends PacketTranslator { effectPacket.setType(LevelEventType.PARTICLE_GENERIC_SPAWN); effectPacket.setData(61); - break; } - case EVAPORATE: { + case EVAPORATE -> { effectPacket.setType(LevelEventType.PARTICLE_EVAPORATE_WATER); effectPacket.setPosition(pos.add(-0.5f, 0.5f, -0.5f)); - break; } - case END_GATEWAY_SPAWN: { + case END_GATEWAY_SPAWN -> { effectPacket.setType(LevelEventType.PARTICLE_EXPLOSION); LevelSoundEventPacket soundEventPacket = new LevelSoundEventPacket(); @@ -273,30 +254,24 @@ public class JavaPlayEffectTranslator extends PacketTranslator { effectPacket.setType(LevelEventType.PARTICLE_DRIPSTONE_DRIP); - break; } - case ELECTRIC_SPARK: { + case ELECTRIC_SPARK -> { // Matches with a Bedrock server but doesn't seem to match up with Java effectPacket.setType(LevelEventType.PARTICLE_ELECTRIC_SPARK); - break; } - case WAX_ON: { + case WAX_ON -> { effectPacket.setType(LevelEventType.PARTICLE_WAX_ON); - break; } - case WAX_OFF: { + case WAX_OFF -> { effectPacket.setType(LevelEventType.PARTICLE_WAX_OFF); - break; } - case SCRAPE: { + case SCRAPE -> { effectPacket.setType(LevelEventType.PARTICLE_SCRAPE); - break; } - default: { + default -> { GeyserConnector.getInstance().getLogger().debug("Unhandled particle effect: " + particleEffect.name()); return; } diff --git a/connector/src/main/java/org/geysermc/connector/network/translators/java/world/JavaSpawnParticleTranslator.java b/connector/src/main/java/org/geysermc/connector/network/translators/java/world/JavaSpawnParticleTranslator.java index df17ceada..3efd8e468 100644 --- a/connector/src/main/java/org/geysermc/connector/network/translators/java/world/JavaSpawnParticleTranslator.java +++ b/connector/src/main/java/org/geysermc/connector/network/translators/java/world/JavaSpawnParticleTranslator.java @@ -82,7 +82,7 @@ public class JavaSpawnParticleTranslator extends PacketTranslator createParticle(GeyserSession session, Particle particle) { switch (particle.getType()) { - case BLOCK: { + case BLOCK -> { int blockState = session.getBlockMappings().getBedrockBlockId(((BlockParticleData) particle.getData()).getBlockState()); return (position) -> { LevelEventPacket packet = new LevelEventPacket(); @@ -92,7 +92,7 @@ public class JavaSpawnParticleTranslator extends PacketTranslator { int blockState = session.getBlockMappings().getBedrockBlockId(((FallingDustParticleData) particle.getData()).getBlockState()); return (position) -> { LevelEventPacket packet = new LevelEventPacket(); @@ -104,7 +104,7 @@ public class JavaSpawnParticleTranslator extends PacketTranslator { ItemStack javaItem = ((ItemParticleData) particle.getData()).getItemStack(); ItemData bedrockItem = ItemTranslator.translateToBedrock(session, javaItem); int data = bedrockItem.getId() << 16 | bedrockItem.getDamage(); @@ -116,8 +116,7 @@ public class JavaSpawnParticleTranslator extends PacketTranslator { //TODO DustParticleData data = (DustParticleData) particle.getData(); int r = (int) (data.getRed() * 255); int g = (int) (data.getGreen() * 255); @@ -131,7 +130,7 @@ public class JavaSpawnParticleTranslator extends PacketTranslator { ParticleMapping particleMapping = Registries.PARTICLES.get(particle.getType()); if (particleMapping == null) { //TODO ensure no particle can be null return null; diff --git a/connector/src/main/java/org/geysermc/connector/network/translators/java/world/JavaTradeListTranslator.java b/connector/src/main/java/org/geysermc/connector/network/translators/java/world/JavaTradeListTranslator.java index 8b05d0469..556f8b95d 100644 --- a/connector/src/main/java/org/geysermc/connector/network/translators/java/world/JavaTradeListTranslator.java +++ b/connector/src/main/java/org/geysermc/connector/network/translators/java/world/JavaTradeListTranslator.java @@ -53,12 +53,11 @@ public class JavaTradeListTranslator extends PacketTranslator "minecraft:mountains"; + case "icy" -> "minecraft:ice_spikes"; + case "mesa" -> "minecraft:badlands"; + case "mushroom" -> "minecraft:mushroom_fields"; + case "nether" -> "minecraft:nether_wastes"; + default -> "minecraft:ocean"; // Typically ID 0 so a good default + case "taiga", "jungle", "plains", "savanna", "the_end", "beach", "ocean", "desert", "river", "swamp" -> "minecraft:" + category; + }; bedrockId = Registries.BIOME_IDENTIFIERS.get().getInt(replacementBiome); } diff --git a/connector/src/main/java/org/geysermc/connector/network/translators/world/block/BlockStateValues.java b/connector/src/main/java/org/geysermc/connector/network/translators/world/block/BlockStateValues.java index fe60bd4de..bf62b83aa 100644 --- a/connector/src/main/java/org/geysermc/connector/network/translators/world/block/BlockStateValues.java +++ b/connector/src/main/java/org/geysermc/connector/network/translators/world/block/BlockStateValues.java @@ -155,21 +155,12 @@ public class BlockStateValues { if (javaId.contains("wall_skull") || javaId.contains("wall_head")) { String direction = javaId.substring(javaId.lastIndexOf("facing=") + 7); - int rotation = 0; - switch (direction.substring(0, direction.length() - 1)) { - case "north": - rotation = 180; - break; - case "south": - rotation = 0; - break; - case "west": - rotation = 90; - break; - case "east": - rotation = 270; - break; - } + int rotation = switch (direction.substring(0, direction.length() - 1)) { + case "north" -> 180; + case "west" -> 90; + case "east" -> 270; + default -> 0; // Also south + }; SKULL_WALL_DIRECTIONS.put(javaBlockState, rotation); } @@ -405,16 +396,12 @@ public class BlockStateValues { */ public static float getSlipperiness(int state) { String blockIdentifier = BlockRegistries.JAVA_BLOCKS.getOrDefault(state, BlockMapping.AIR).getJavaIdentifier(); - switch (blockIdentifier) { - case "minecraft:slime_block": - return 0.8f; - case "minecraft:ice": - case "minecraft:packed_ice": - return 0.98f; - case "minecraft:blue_ice": - return 0.989f; - } - return 0.6f; + return switch (blockIdentifier) { + case "minecraft:slime_block" -> 0.8f; + case "minecraft:ice", "minecraft:packed_ice" -> 0.98f; + case "minecraft:blue_ice" -> 0.989f; + default -> 0.6f; + }; } private static Direction getBlockDirection(String javaId) { diff --git a/connector/src/main/java/org/geysermc/connector/network/translators/world/block/entity/PistonBlockEntity.java b/connector/src/main/java/org/geysermc/connector/network/translators/world/block/entity/PistonBlockEntity.java index 99d9da30d..c22287a4b 100644 --- a/connector/src/main/java/org/geysermc/connector/network/translators/world/block/entity/PistonBlockEntity.java +++ b/connector/src/main/java/org/geysermc/connector/network/translators/world/block/entity/PistonBlockEntity.java @@ -147,13 +147,8 @@ public class PistonBlockEntity { // Set progress and lastProgress to allow 0 tick pistons to animate switch (action) { - case PUSHING: - progress = 0; - break; - case PULLING: - case CANCELLED_MID_PUSH: - progress = 1; - break; + case PUSHING -> progress = 0; + case PULLING, CANCELLED_MID_PUSH -> progress = 1; } lastProgress = progress; @@ -182,13 +177,8 @@ public class PistonBlockEntity { // Set progress and lastProgress to allow 0 tick pistons to animate switch (action) { - case PUSHING: - progress = 0; - break; - case PULLING: - case CANCELLED_MID_PUSH: - progress = 1; - break; + case PUSHING -> progress = 0; + case PULLING, CANCELLED_MID_PUSH -> progress = 1; } lastProgress = progress; @@ -326,15 +316,11 @@ public class PistonBlockEntity { if (block.getHardness() == -1.0d) { return false; } - switch (block.getPistonBehavior()) { - case BLOCK: - case DESTROY: - return false; - case PUSH_ONLY: // Glazed terracotta can only be pushed - return isPushing; - } - // Pistons can't move block entities - return !block.isBlockEntity(); + return switch (block.getPistonBehavior()) { + case BLOCK, DESTROY -> false; + case PUSH_ONLY -> isPushing; // Glazed terracotta can only be pushed + default -> !block.isBlockEntity(); // Pistons can't move block entities + }; } /** @@ -723,21 +709,20 @@ public class PistonBlockEntity { */ private void updateProgress() { switch (action) { - case PUSHING: + case PUSHING -> { lastProgress = progress; progress += 0.5f; if (progress >= 1.0f) { progress = 1.0f; } - break; - case CANCELLED_MID_PUSH: - case PULLING: + } + case CANCELLED_MID_PUSH, PULLING -> { lastProgress = progress; progress -= 0.5f; if (progress <= 0.0f) { progress = 0.0f; } - break; + } } } @@ -745,14 +730,10 @@ public class PistonBlockEntity { * @return True if the piston has finished its movement, otherwise false */ public boolean isDone() { - switch (action) { - case PUSHING: - return progress == 1.0f && lastProgress == 1.0f; - case PULLING: - case CANCELLED_MID_PUSH: - return progress == 0.0f && lastProgress == 0.0f; - } - return true; + return switch (action) { + case PUSHING -> progress == 1.0f && lastProgress == 1.0f; + case PULLING, CANCELLED_MID_PUSH -> progress == 0.0f && lastProgress == 0.0f; + }; } public boolean canBeRemoved() { diff --git a/connector/src/main/java/org/geysermc/connector/network/translators/world/block/entity/SignBlockEntityTranslator.java b/connector/src/main/java/org/geysermc/connector/network/translators/world/block/entity/SignBlockEntityTranslator.java index 0551386c5..6e3cfc45b 100644 --- a/connector/src/main/java/org/geysermc/connector/network/translators/world/block/entity/SignBlockEntityTranslator.java +++ b/connector/src/main/java/org/geysermc/connector/network/translators/world/block/entity/SignBlockEntityTranslator.java @@ -41,59 +41,24 @@ public class SignBlockEntityTranslator extends BlockEntityTranslator { */ private int getBedrockSignColor(String javaColor) { //TODO create a DyeColor class and combine with FireworkColor??? - int dyeColor; - switch (javaColor) { - case "white": - dyeColor = 16383998; - break; - case "orange": - dyeColor = 16351261; - break; - case "magenta": - dyeColor = 13061821; - break; - case "light_blue": - dyeColor = 3847130; - break; - case "yellow": - dyeColor = 16701501; - break; - case "lime": - dyeColor = 8439583; - break; - case "pink": - dyeColor = 15961002; - break; - case "gray": - dyeColor = 4673362; - break; - case "light_gray": - dyeColor = 10329495; - break; - case "cyan": - dyeColor = 1481884; - break; - case "purple": - dyeColor = 8991416; - break; - case "blue": - dyeColor = 3949738; - break; - case "brown": - dyeColor = 8606770; - break; - case "green": - dyeColor = 6192150; - break; - case "red": - dyeColor = 11546150; - break; - case "black": - default: - // The proper Java color is 1908001, but this does not render well with glow text. - dyeColor = 0; - break; - } + int dyeColor = switch (javaColor) { + case "white" -> 16383998; + case "orange" -> 16351261; + case "magenta" -> 13061821; + case "light_blue" -> 3847130; + case "yellow" -> 16701501; + case "lime" -> 8439583; + case "pink" -> 15961002; + case "gray" -> 4673362; + case "light_gray" -> 10329495; + case "cyan" -> 1481884; + case "purple" -> 8991416; + case "blue" -> 3949738; + case "brown" -> 8606770; + case "green" -> 6192150; + case "red" -> 11546150; + default -> 0; // The proper Java color is 1908001, but this does not render well with glow text. + }; // Add the transparency of the color, too. return dyeColor | (255 << 24); } diff --git a/connector/src/main/java/org/geysermc/connector/network/translators/world/block/entity/SkullBlockEntityTranslator.java b/connector/src/main/java/org/geysermc/connector/network/translators/world/block/entity/SkullBlockEntityTranslator.java index c5551651b..90458ca71 100644 --- a/connector/src/main/java/org/geysermc/connector/network/translators/world/block/entity/SkullBlockEntityTranslator.java +++ b/connector/src/main/java/org/geysermc/connector/network/translators/world/block/entity/SkullBlockEntityTranslator.java @@ -99,22 +99,10 @@ public class SkullBlockEntityTranslator extends BlockEntityTranslator implements y += 0.25f; rotation = BlockStateValues.getSkullWallDirections().get(blockState); switch ((int) rotation) { - case 180: - // North - z += 0.24f; - break; - case 0: - // South - z -= 0.24f; - break; - case 90: - // West - x += 0.24f; - break; - case 270: - // East - x -= 0.24f; - break; + case 180 -> z += 0.24f; // North + case 0 -> z -= 0.24f; // South + case 90 -> x += 0.24f; // West + case 270 -> x -= 0.24f; // East } } else { rotation = (180f + (floorRotation * 22.5f)) % 360; diff --git a/connector/src/main/java/org/geysermc/connector/registry/loader/SoundEffectsRegistryLoader.java b/connector/src/main/java/org/geysermc/connector/registry/loader/SoundEffectsRegistryLoader.java index 22070ee7a..4e44ac095 100644 --- a/connector/src/main/java/org/geysermc/connector/registry/loader/SoundEffectsRegistryLoader.java +++ b/connector/src/main/java/org/geysermc/connector/registry/loader/SoundEffectsRegistryLoader.java @@ -58,22 +58,20 @@ public class SoundEffectsRegistryLoader extends EffectRegistryLoader { javaEffect = SoundEffect.valueOf(entry.getKey()); LevelEventType levelEventType = LevelEventType.valueOf(node.get("name").asText()); int data = node.has("data") ? node.get("data").intValue() : 0; effect = new SoundLevelEffect(levelEventType, data); - break; } - case "soundEvent": { + case "soundEvent" -> { javaEffect = SoundEffect.valueOf(entry.getKey()); SoundEvent soundEvent = SoundEvent.valueOf(node.get("name").asText()); String identifier = node.has("identifier") ? node.get("identifier").asText() : ""; int extraData = node.has("extraData") ? node.get("extraData").intValue() : -1; effect = new SoundEventEffect(soundEvent, identifier, extraData); - break; } - case "playSound": { + case "playSound" -> { javaEffect = SoundEffect.valueOf(entry.getKey()); String name = node.get("name").asText(); float volume = node.has("volume") ? node.get("volume").floatValue() : 1.0f; @@ -82,7 +80,6 @@ public class SoundEffectsRegistryLoader extends EffectRegistryLoader> stateMapperBuilder = ImmutableMap.>builder() .put("1_17_10", (bedrockIdentifier, statesBuilder) -> null); - if (!GeyserConnector.getInstance().getConfig().isExtendedWorldHeight()) { - stateMapperBuilder.put("1_17_0", (bedrockIdentifier, statesBuilder) -> { - if (bedrockIdentifier.contains("candle")) { - // Replace candles with sea pickles or cake - if (bedrockIdentifier.contains("cake")) { - statesBuilder.remove("lit"); - statesBuilder.putInt("bite_counter", 0); - return "minecraft:cake"; - } else { - statesBuilder.put("cluster_count", statesBuilder.remove("candles")); - statesBuilder.putBoolean("dead_bit", ((byte) (statesBuilder.remove("lit"))) != 0); - return "minecraft:sea_pickle"; - } - } - return null; - }); - } STATE_MAPPER = stateMapperBuilder.build(); PALETTE_VERSIONS = new Object2IntOpenHashMap<>(); - if (!GeyserConnector.getInstance().getConfig().isExtendedWorldHeight()) { - PALETTE_VERSIONS.put("1_17_0", Bedrock_v440.V440_CODEC.getProtocolVersion()); - } PALETTE_VERSIONS.put("1_17_10", Bedrock_v448.V448_CODEC.getProtocolVersion()); } @@ -159,17 +138,10 @@ public class BlockRegistryPopulator { } switch (javaId) { - case "minecraft:air": - airRuntimeId = bedrockRuntimeId; - break; - case "minecraft:water[level=0]": - waterRuntimeId = bedrockRuntimeId; - break; - case "minecraft:command_block[conditional=false,facing=north]": - commandBlockRuntimeId = bedrockRuntimeId; - break; - case "minecraft:moving_piston[facing=north,type=normal]": - movingBlockRuntimeId = bedrockRuntimeId; + case "minecraft:air" -> airRuntimeId = bedrockRuntimeId; + case "minecraft:water[level=0]" -> waterRuntimeId = bedrockRuntimeId; + case "minecraft:command_block[conditional=false,facing=north]" -> commandBlockRuntimeId = bedrockRuntimeId; + case "minecraft:moving_piston[facing=north,type=normal]" -> movingBlockRuntimeId = bedrockRuntimeId; } if (javaId.contains("jigsaw")) { @@ -414,14 +386,9 @@ public class BlockRegistryPopulator { Map.Entry stateEntry = statesIterator.next(); JsonNode stateValue = stateEntry.getValue(); switch (stateValue.getNodeType()) { - case BOOLEAN: - statesBuilder.putBoolean(stateEntry.getKey(), stateValue.booleanValue()); - continue; - case STRING: - statesBuilder.putString(stateEntry.getKey(), stateValue.textValue()); - continue; - case NUMBER: - statesBuilder.putInt(stateEntry.getKey(), stateValue.intValue()); + case BOOLEAN -> statesBuilder.putBoolean(stateEntry.getKey(), stateValue.booleanValue()); + case STRING -> statesBuilder.putString(stateEntry.getKey(), stateValue.textValue()); + case NUMBER -> statesBuilder.putInt(stateEntry.getKey(), stateValue.intValue()); } } } diff --git a/connector/src/main/java/org/geysermc/connector/registry/populator/ItemRegistryPopulator.java b/connector/src/main/java/org/geysermc/connector/registry/populator/ItemRegistryPopulator.java index 967424017..6657442e9 100644 --- a/connector/src/main/java/org/geysermc/connector/registry/populator/ItemRegistryPopulator.java +++ b/connector/src/main/java/org/geysermc/connector/registry/populator/ItemRegistryPopulator.java @@ -35,7 +35,6 @@ import com.nukkitx.protocol.bedrock.data.SoundEvent; import com.nukkitx.protocol.bedrock.data.inventory.ComponentItemData; import com.nukkitx.protocol.bedrock.data.inventory.ItemData; import com.nukkitx.protocol.bedrock.packet.StartGamePacket; -import com.nukkitx.protocol.bedrock.v440.Bedrock_v440; import com.nukkitx.protocol.bedrock.v448.Bedrock_v448; import it.unimi.dsi.fastutil.ints.Int2ObjectMap; import it.unimi.dsi.fastutil.ints.Int2ObjectOpenHashMap; @@ -67,27 +66,6 @@ public class ItemRegistryPopulator { if (GeyserConnector.getInstance().getConfig().isExtendedWorldHeight()) { PALETTE_VERSIONS.put("1_17_10.caves_and_cliffs", new PaletteVersion(Bedrock_v448.V448_CODEC.getProtocolVersion(), Collections.emptyMap())); } else { - PALETTE_VERSIONS.put("1_17_0", new PaletteVersion(Bedrock_v440.V440_CODEC.getProtocolVersion(), new Object2ObjectOpenHashMap() { - { - put("minecraft:candle", "minecraft:sea_pickle"); - put("minecraft:white_candle", "minecraft:sea_pickle"); - put("minecraft:orange_candle", "minecraft:sea_pickle"); - put("minecraft:magenta_candle", "minecraft:sea_pickle"); - put("minecraft:light_blue_candle", "minecraft:sea_pickle"); - put("minecraft:yellow_candle", "minecraft:sea_pickle"); - put("minecraft:lime_candle", "minecraft:sea_pickle"); - put("minecraft:pink_candle", "minecraft:sea_pickle"); - put("minecraft:gray_candle", "minecraft:sea_pickle"); - put("minecraft:light_gray_candle", "minecraft:sea_pickle"); - put("minecraft:cyan_candle", "minecraft:sea_pickle"); - put("minecraft:purple_candle", "minecraft:sea_pickle"); - put("minecraft:blue_candle", "minecraft:sea_pickle"); - put("minecraft:brown_candle", "minecraft:sea_pickle"); - put("minecraft:green_candle", "minecraft:sea_pickle"); - put("minecraft:red_candle", "minecraft:sea_pickle"); - put("minecraft:black_candle", "minecraft:sea_pickle"); - } - })); PALETTE_VERSIONS.put("1_17_10", new PaletteVersion(Bedrock_v448.V448_CODEC.getProtocolVersion(), Collections.emptyMap())); } } diff --git a/connector/src/main/java/org/geysermc/connector/scoreboard/Objective.java b/connector/src/main/java/org/geysermc/connector/scoreboard/Objective.java index f4b895350..72f70b9d8 100644 --- a/connector/src/main/java/org/geysermc/connector/scoreboard/Objective.java +++ b/connector/src/main/java/org/geysermc/connector/scoreboard/Objective.java @@ -76,25 +76,19 @@ public final class Objective { } private static String translateDisplaySlot(ScoreboardPosition displaySlot) { - switch (displaySlot) { - case BELOW_NAME: - return "belowname"; - case PLAYER_LIST: - return "list"; - default: - return "sidebar"; - } + return switch (displaySlot) { + case BELOW_NAME -> "belowname"; + case PLAYER_LIST -> "list"; + default -> "sidebar"; + }; } private static ScoreboardPosition correctDisplaySlot(ScoreboardPosition displaySlot) { - switch (displaySlot) { - case BELOW_NAME: - return ScoreboardPosition.BELOW_NAME; - case PLAYER_LIST: - return ScoreboardPosition.PLAYER_LIST; - default: - return ScoreboardPosition.SIDEBAR; - } + return switch (displaySlot) { + case BELOW_NAME -> ScoreboardPosition.BELOW_NAME; + case PLAYER_LIST -> ScoreboardPosition.PLAYER_LIST; + default -> ScoreboardPosition.SIDEBAR; + }; } public void registerScore(String id, int score) { diff --git a/connector/src/main/java/org/geysermc/connector/scoreboard/Scoreboard.java b/connector/src/main/java/org/geysermc/connector/scoreboard/Scoreboard.java index f3d435706..de27db0bf 100644 --- a/connector/src/main/java/org/geysermc/connector/scoreboard/Scoreboard.java +++ b/connector/src/main/java/org/geysermc/connector/scoreboard/Scoreboard.java @@ -240,12 +240,8 @@ public final class Scoreboard { Team current = teamIterator.next(); switch (current.getUpdateType()) { - case ADD: - case UPDATE: - current.markUpdated(); - break; - case REMOVE: - teamIterator.remove(); + case ADD, UPDATE -> current.markUpdated(); + case REMOVE -> teamIterator.remove(); } } diff --git a/connector/src/main/java/org/geysermc/connector/scoreboard/Team.java b/connector/src/main/java/org/geysermc/connector/scoreboard/Team.java index 9fe9f8cf2..efefb339a 100644 --- a/connector/src/main/java/org/geysermc/connector/scoreboard/Team.java +++ b/connector/src/main/java/org/geysermc/connector/scoreboard/Team.java @@ -181,17 +181,12 @@ public final class Team { } public boolean isVisibleFor(String entity) { - switch (nameTagVisibility) { - case HIDE_FOR_OTHER_TEAMS: - return hasEntity(entity); - case HIDE_FOR_OWN_TEAM: - return !hasEntity(entity); - case ALWAYS: - return true; - case NEVER: - return false; - } - return true; + return switch (nameTagVisibility) { + case HIDE_FOR_OTHER_TEAMS -> hasEntity(entity); + case HIDE_FOR_OWN_TEAM -> !hasEntity(entity); + case ALWAYS -> true; + case NEVER -> false; + }; } @Override diff --git a/connector/src/main/java/org/geysermc/connector/skin/FloodgateSkinUploader.java b/connector/src/main/java/org/geysermc/connector/skin/FloodgateSkinUploader.java index 8c07cccbc..cf76c529a 100644 --- a/connector/src/main/java/org/geysermc/connector/skin/FloodgateSkinUploader.java +++ b/connector/src/main/java/org/geysermc/connector/skin/FloodgateSkinUploader.java @@ -132,18 +132,10 @@ public final class FloodgateSkinUploader { case LOG_MESSAGE: String logMessage = node.get("message").asText(); switch (node.get("priority").asInt()) { - case -1: - logger.debug("Got a message from skin uploader: " + logMessage); - break; - case 0: - logger.info("Got a message from skin uploader: " +logMessage); - break; - case 1: - logger.error("Got a message from skin uploader: " + logMessage); - break; - default: - logger.info(logMessage); - break; + case -1 -> logger.debug("Got a message from skin uploader: " + logMessage); + case 0 -> logger.info("Got a message from skin uploader: " + logMessage); + case 1 -> logger.error("Got a message from skin uploader: " + logMessage); + default -> logger.info(logMessage); } break; case NEWS_ADDED: diff --git a/connector/src/main/java/org/geysermc/connector/skin/SkinProvider.java b/connector/src/main/java/org/geysermc/connector/skin/SkinProvider.java index 6574c9350..4b97ba5fb 100644 --- a/connector/src/main/java/org/geysermc/connector/skin/SkinProvider.java +++ b/connector/src/main/java/org/geysermc/connector/skin/SkinProvider.java @@ -679,11 +679,11 @@ public class SkinProvider { } public static String toRequestedType(CapeUrlType type, UUID uuid, String username) { - switch (type) { - case UUID: return uuid.toString().replace("-", ""); - case UUID_DASHED: return uuid.toString(); - default: return username; - } + return switch (type) { + case UUID -> uuid.toString().replace("-", ""); + case UUID_DASHED -> uuid.toString(); + default -> username; + }; } } @@ -715,11 +715,11 @@ public class SkinProvider { } public static String toRequestedType(CapeUrlType type, UUID uuid, String username) { - switch (type) { - case UUID: return uuid.toString().replace("-", ""); - case UUID_DASHED: return uuid.toString(); - default: return username; - } + return switch (type) { + case UUID -> uuid.toString().replace("-", ""); + case UUID_DASHED -> uuid.toString(); + default -> username; + }; } } } diff --git a/connector/src/main/java/org/geysermc/connector/utils/Axis.java b/connector/src/main/java/org/geysermc/connector/utils/Axis.java index 4294744be..1075f8d2c 100644 --- a/connector/src/main/java/org/geysermc/connector/utils/Axis.java +++ b/connector/src/main/java/org/geysermc/connector/utils/Axis.java @@ -37,14 +37,10 @@ public enum Axis { * @return The component of the vector in this axis */ public double choose(Vector3d vector) { - switch (this) { - case X: - return vector.getX(); - case Y: - return vector.getY(); - case Z: - return vector.getZ(); - } - return -1; + return switch (this) { + case X -> vector.getX(); + case Y -> vector.getY(); + case Z -> vector.getZ(); + }; } } diff --git a/connector/src/main/java/org/geysermc/connector/utils/BlockUtils.java b/connector/src/main/java/org/geysermc/connector/utils/BlockUtils.java index db2271e5c..fd877a522 100644 --- a/connector/src/main/java/org/geysermc/connector/utils/BlockUtils.java +++ b/connector/src/main/java/org/geysermc/connector/utils/BlockUtils.java @@ -67,23 +67,16 @@ public class BlockUtils { private static double toolBreakTimeBonus(String toolType, String toolTier, boolean isShearsEffective) { if (toolType.equals("shears")) return isShearsEffective ? 5.0 : 15.0; if (toolType.equals("")) return 1.0; - switch (toolTier) { + return switch (toolTier) { // https://minecraft.gamepedia.com/Breaking#Speed - case "wooden": - return 2.0; - case "stone": - return 4.0; - case "iron": - return 6.0; - case "diamond": - return 8.0; - case "netherite": - return 9.0; - case "golden": - return 12.0; - default: - return 1.0; - } + case "wooden" -> 2.0; + case "stone" -> 4.0; + case "iron" -> 6.0; + case "diamond" -> 8.0; + case "netherite" -> 9.0; + case "golden" -> 12.0; + default -> 1.0; + }; } private static boolean canToolTierBreakBlock(GeyserSession session, BlockMapping blockMapping, String toolTier) { @@ -208,21 +201,15 @@ public class BlockUtils { * @return the block position with the block face accounted for */ public static Vector3i getBlockPosition(Vector3i blockPos, int face) { - switch (face) { - case 0: - return blockPos.sub(0, 1, 0); - case 1: - return blockPos.add(0, 1, 0); - case 2: - return blockPos.sub(0, 0, 1); - case 3: - return blockPos.add(0, 0, 1); - case 4: - return blockPos.sub(1, 0, 0); - case 5: - return blockPos.add(1, 0, 0); - } - return blockPos; + return switch (face) { + case 0 -> blockPos.sub(0, 1, 0); + case 1 -> blockPos.add(0, 1, 0); + case 2 -> blockPos.sub(0, 0, 1); + case 3 -> blockPos.add(0, 0, 1); + case 4 -> blockPos.sub(1, 0, 0); + case 5 -> blockPos.add(1, 0, 0); + default -> blockPos; + }; } /** diff --git a/connector/src/main/java/org/geysermc/connector/utils/ChunkUtils.java b/connector/src/main/java/org/geysermc/connector/utils/ChunkUtils.java index 854c367ec..3b2614d77 100644 --- a/connector/src/main/java/org/geysermc/connector/utils/ChunkUtils.java +++ b/connector/src/main/java/org/geysermc/connector/utils/ChunkUtils.java @@ -263,8 +263,7 @@ public class ChunkUtils { tagName = "Empty"; // Sometimes legacy tags have their ID be a StringTag with empty value for (Tag subTag : tag) { - if (subTag instanceof StringTag) { - StringTag stringTag = (StringTag) subTag; + if (subTag instanceof StringTag stringTag) { if (stringTag.getValue().isEmpty()) { tagName = stringTag.getName(); break; diff --git a/connector/src/main/java/org/geysermc/connector/utils/DimensionUtils.java b/connector/src/main/java/org/geysermc/connector/utils/DimensionUtils.java index 886bb416f..632e17280 100644 --- a/connector/src/main/java/org/geysermc/connector/utils/DimensionUtils.java +++ b/connector/src/main/java/org/geysermc/connector/utils/DimensionUtils.java @@ -111,14 +111,11 @@ public class DimensionUtils { * @return Converted Bedrock edition dimension ID */ public static int javaToBedrock(String javaDimension) { - switch (javaDimension) { - case NETHER: - return BEDROCK_NETHER_ID; - case THE_END: - return 2; - default: - return 0; - } + return switch (javaDimension) { + case NETHER -> BEDROCK_NETHER_ID; + case THE_END -> 2; + default -> 0; + }; } /** diff --git a/connector/src/main/java/org/geysermc/connector/utils/EntityUtils.java b/connector/src/main/java/org/geysermc/connector/utils/EntityUtils.java index b5b0d24ca..5c4929a91 100644 --- a/connector/src/main/java/org/geysermc/connector/utils/EntityUtils.java +++ b/connector/src/main/java/org/geysermc/connector/utils/EntityUtils.java @@ -44,26 +44,15 @@ public final class EntityUtils { * @return The numeric ID for the Bedrock edition effect */ public static int toBedrockEffectId(Effect effect) { - switch (effect) { - case GLOWING: - case LUCK: - case UNLUCK: - case DOLPHINS_GRACE: - // All Java-exclusive effects as of 1.16.2 - return 0; - case LEVITATION: - return 24; - case CONDUIT_POWER: - return 26; - case SLOW_FALLING: - return 27; - case BAD_OMEN: - return 28; - case HERO_OF_THE_VILLAGE: - return 29; - default: - return effect.ordinal() + 1; - } + return switch (effect) { + case GLOWING, LUCK, UNLUCK, DOLPHINS_GRACE -> 0; // All Java-exclusive effects as of 1.16.2 + case LEVITATION -> 24; + case CONDUIT_POWER -> 26; + case SLOW_FALLING -> 27; + case BAD_OMEN -> 28; + case HERO_OF_THE_VILLAGE -> 29; + default -> effect.ordinal() + 1; + }; } /** @@ -84,46 +73,20 @@ public final class EntityUtils { float height = mount.getMetadata().getFloat(EntityData.BOUNDING_BOX_HEIGHT); float mountedHeightOffset = height * 0.75f; switch (mount.getEntityType()) { - case CHICKEN: - case SPIDER: - mountedHeightOffset = height * 0.5f; - break; - case DONKEY: - case MULE: - mountedHeightOffset -= 0.25f; - break; - case LLAMA: - mountedHeightOffset = height * 0.67f; - break; - case MINECART: - case MINECART_HOPPER: - case MINECART_TNT: - case MINECART_CHEST: - case MINECART_FURNACE: - case MINECART_SPAWNER: - case MINECART_COMMAND_BLOCK: - mountedHeightOffset = 0; - break; - case BOAT: - mountedHeightOffset = -0.1f; - break; - case HOGLIN: - case ZOGLIN: + case CHICKEN, SPIDER -> mountedHeightOffset = height * 0.5f; + case DONKEY, MULE -> mountedHeightOffset -= 0.25f; + case LLAMA -> mountedHeightOffset = height * 0.67f; + case MINECART, MINECART_HOPPER, MINECART_TNT, MINECART_CHEST, MINECART_FURNACE, MINECART_SPAWNER, + MINECART_COMMAND_BLOCK -> mountedHeightOffset = 0; + case BOAT -> mountedHeightOffset = -0.1f; + case HOGLIN, ZOGLIN -> { boolean isBaby = mount.getMetadata().getFlags().getFlag(EntityFlag.BABY); mountedHeightOffset = height - (isBaby ? 0.2f : 0.15f); - break; - case PIGLIN: - mountedHeightOffset = height * 0.92f; - break; - case RAVAGER: - mountedHeightOffset = 2.1f; - break; - case SKELETON_HORSE: - mountedHeightOffset -= 0.1875f; - break; - case STRIDER: - mountedHeightOffset = height - 0.19f; - break; + } + case PIGLIN -> mountedHeightOffset = height * 0.92f; + case RAVAGER -> mountedHeightOffset = 2.1f; + case SKELETON_HORSE -> mountedHeightOffset -= 0.1875f; + case STRIDER -> mountedHeightOffset = height - 0.19f; } return mountedHeightOffset; } @@ -207,15 +170,8 @@ public final class EntityUtils { yOffset += EntityType.PLAYER.getOffset(); } switch (mount.getEntityType()) { - case MINECART: - case MINECART_HOPPER: - case MINECART_TNT: - case MINECART_CHEST: - case MINECART_FURNACE: - case MINECART_SPAWNER: - case MINECART_COMMAND_BLOCK: - case BOAT: - yOffset -= mount.getEntityType().getHeight() * 0.5f; + case MINECART, MINECART_HOPPER, MINECART_TNT, MINECART_CHEST, MINECART_FURNACE, MINECART_SPAWNER, + MINECART_COMMAND_BLOCK, BOAT -> yOffset -= mount.getEntityType().getHeight() * 0.5f; } Vector3f offset = Vector3f.from(xOffset, yOffset, zOffset); passenger.getMetadata().put(EntityData.RIDER_SEAT_POSITION, offset); diff --git a/connector/src/main/java/org/geysermc/connector/utils/SignUtils.java b/connector/src/main/java/org/geysermc/connector/utils/SignUtils.java index f396fce9e..b324c745d 100644 --- a/connector/src/main/java/org/geysermc/connector/utils/SignUtils.java +++ b/connector/src/main/java/org/geysermc/connector/utils/SignUtils.java @@ -48,52 +48,14 @@ public class SignUtils { * @return width of the character */ public static int getCharacterWidth(char c) { - switch (c) { - case '!': - case ',': - case '.': - case ':': - case ';': - case 'i': - case '|': - case '¡': - return 2; - - case '\'': - case 'l': - case 'ì': - case 'í': - return 3; - - case ' ': - case 'I': - case '[': - case ']': - case 't': - case '×': - case 'ï': - return 4; - - case '"': - case '(': - case ')': - case '*': - case '<': - case '>': - case 'f': - case 'k': - case '{': - case '}': - return 5; - - case '@': - case '~': - case '®': - return 7; - - default: - return 6; - } + return switch (c) { + case '!', ',', '.', ':', ';', 'i', '|', '¡' -> 2; + case '\'', 'l', 'ì', 'í' -> 3; + case ' ', 'I', '[', ']', 't', '×', 'ï' -> 4; + case '"', '(', ')', '*', '<', '>', 'f', 'k', '{', '}' -> 5; + case '@', '~', '®' -> 7; + default -> 6; + }; } } diff --git a/connector/src/main/resources/bedrock/block_palette.1_17_0.nbt b/connector/src/main/resources/bedrock/block_palette.1_17_0.nbt deleted file mode 100644 index c4f908b5e..000000000 Binary files a/connector/src/main/resources/bedrock/block_palette.1_17_0.nbt and /dev/null differ diff --git a/connector/src/main/resources/bedrock/creative_items.1_17_0.json b/connector/src/main/resources/bedrock/creative_items.1_17_0.json deleted file mode 100644 index 2226e8272..000000000 --- a/connector/src/main/resources/bedrock/creative_items.1_17_0.json +++ /dev/null @@ -1,5135 +0,0 @@ -{ - "items" : [ - { - "id" : "minecraft:planks", - "blockRuntimeId" : 5640 - }, - { - "id" : "minecraft:planks", - "blockRuntimeId" : 5641 - }, - { - "id" : "minecraft:planks", - "blockRuntimeId" : 5642 - }, - { - "id" : "minecraft:planks", - "blockRuntimeId" : 5643 - }, - { - "id" : "minecraft:planks", - "blockRuntimeId" : 5644 - }, - { - "id" : "minecraft:planks", - "blockRuntimeId" : 5645 - }, - { - "id" : "minecraft:crimson_planks", - "blockRuntimeId" : 3799 - }, - { - "id" : "minecraft:warped_planks", - "blockRuntimeId" : 7352 - }, - { - "id" : "minecraft:cobblestone_wall", - "blockRuntimeId" : 1278 - }, - { - "id" : "minecraft:cobblestone_wall", - "blockRuntimeId" : 1279 - }, - { - "id" : "minecraft:cobblestone_wall", - "blockRuntimeId" : 1280 - }, - { - "id" : "minecraft:cobblestone_wall", - "blockRuntimeId" : 1281 - }, - { - "id" : "minecraft:cobblestone_wall", - "blockRuntimeId" : 1282 - }, - { - "id" : "minecraft:cobblestone_wall", - "blockRuntimeId" : 1283 - }, - { - "id" : "minecraft:cobblestone_wall", - "blockRuntimeId" : 1290 - }, - { - "id" : "minecraft:cobblestone_wall", - "blockRuntimeId" : 1285 - }, - { - "id" : "minecraft:cobblestone_wall", - "blockRuntimeId" : 1286 - }, - { - "id" : "minecraft:cobblestone_wall", - "blockRuntimeId" : 1284 - }, - { - "id" : "minecraft:cobblestone_wall", - "blockRuntimeId" : 1287 - }, - { - "id" : "minecraft:cobblestone_wall", - "blockRuntimeId" : 1291 - }, - { - "id" : "minecraft:cobblestone_wall", - "blockRuntimeId" : 1288 - }, - { - "id" : "minecraft:cobblestone_wall", - "blockRuntimeId" : 1289 - }, - { - "id" : "minecraft:blackstone_wall", - "blockRuntimeId" : 497 - }, - { - "id" : "minecraft:polished_blackstone_wall", - "blockRuntimeId" : 5884 - }, - { - "id" : "minecraft:polished_blackstone_brick_wall", - "blockRuntimeId" : 5681 - }, - { - "id" : "minecraft:cobbled_deepslate_wall", - "blockRuntimeId" : 1115 - }, - { - "id" : "minecraft:deepslate_tile_wall", - "blockRuntimeId" : 4247 - }, - { - "id" : "minecraft:polished_deepslate_wall", - "blockRuntimeId" : 6059 - }, - { - "id" : "minecraft:deepslate_brick_wall", - "blockRuntimeId" : 4064 - }, - { - "id" : "minecraft:fence", - "blockRuntimeId" : 4723 - }, - { - "id" : "minecraft:fence", - "blockRuntimeId" : 4724 - }, - { - "id" : "minecraft:fence", - "blockRuntimeId" : 4725 - }, - { - "id" : "minecraft:fence", - "blockRuntimeId" : 4726 - }, - { - "id" : "minecraft:fence", - "blockRuntimeId" : 4727 - }, - { - "id" : "minecraft:fence", - "blockRuntimeId" : 4728 - }, - { - "id" : "minecraft:nether_brick_fence", - "blockRuntimeId" : 5552 - }, - { - "id" : "minecraft:crimson_fence", - "blockRuntimeId" : 3777 - }, - { - "id" : "minecraft:warped_fence", - "blockRuntimeId" : 7330 - }, - { - "id" : "minecraft:fence_gate", - "blockRuntimeId" : 4729 - }, - { - "id" : "minecraft:spruce_fence_gate", - "blockRuntimeId" : 6764 - }, - { - "id" : "minecraft:birch_fence_gate", - "blockRuntimeId" : 400 - }, - { - "id" : "minecraft:jungle_fence_gate", - "blockRuntimeId" : 5158 - }, - { - "id" : "minecraft:acacia_fence_gate", - "blockRuntimeId" : 44 - }, - { - "id" : "minecraft:dark_oak_fence_gate", - "blockRuntimeId" : 3930 - }, - { - "id" : "minecraft:crimson_fence_gate", - "blockRuntimeId" : 3778 - }, - { - "id" : "minecraft:warped_fence_gate", - "blockRuntimeId" : 7331 - }, - { - "id" : "minecraft:normal_stone_stairs", - "blockRuntimeId" : 5571 - }, - { - "id" : "minecraft:stone_stairs", - "blockRuntimeId" : 7035 - }, - { - "id" : "minecraft:mossy_cobblestone_stairs", - "blockRuntimeId" : 5533 - }, - { - "id" : "minecraft:oak_stairs", - "blockRuntimeId" : 5580 - }, - { - "id" : "minecraft:spruce_stairs", - "blockRuntimeId" : 6796 - }, - { - "id" : "minecraft:birch_stairs", - "blockRuntimeId" : 432 - }, - { - "id" : "minecraft:jungle_stairs", - "blockRuntimeId" : 5190 - }, - { - "id" : "minecraft:acacia_stairs", - "blockRuntimeId" : 76 - }, - { - "id" : "minecraft:dark_oak_stairs", - "blockRuntimeId" : 3962 - }, - { - "id" : "minecraft:stone_brick_stairs", - "blockRuntimeId" : 6941 - }, - { - "id" : "minecraft:mossy_stone_brick_stairs", - "blockRuntimeId" : 5541 - }, - { - "id" : "minecraft:sandstone_stairs", - "blockRuntimeId" : 6533 - }, - { - "id" : "minecraft:smooth_sandstone_stairs", - "blockRuntimeId" : 6657 - }, - { - "id" : "minecraft:red_sandstone_stairs", - "blockRuntimeId" : 6460 - }, - { - "id" : "minecraft:smooth_red_sandstone_stairs", - "blockRuntimeId" : 6649 - }, - { - "id" : "minecraft:granite_stairs", - "blockRuntimeId" : 4914 - }, - { - "id" : "minecraft:polished_granite_stairs", - "blockRuntimeId" : 6229 - }, - { - "id" : "minecraft:diorite_stairs", - "blockRuntimeId" : 4425 - }, - { - "id" : "minecraft:polished_diorite_stairs", - "blockRuntimeId" : 6221 - }, - { - "id" : "minecraft:andesite_stairs", - "blockRuntimeId" : 144 - }, - { - "id" : "minecraft:polished_andesite_stairs", - "blockRuntimeId" : 5657 - }, - { - "id" : "minecraft:brick_stairs", - "blockRuntimeId" : 856 - }, - { - "id" : "minecraft:nether_brick_stairs", - "blockRuntimeId" : 5553 - }, - { - "id" : "minecraft:red_nether_brick_stairs", - "blockRuntimeId" : 6448 - }, - { - "id" : "minecraft:end_brick_stairs", - "blockRuntimeId" : 4669 - }, - { - "id" : "minecraft:quartz_stairs", - "blockRuntimeId" : 6392 - }, - { - "id" : "minecraft:smooth_quartz_stairs", - "blockRuntimeId" : 6641 - }, - { - "id" : "minecraft:purpur_stairs", - "blockRuntimeId" : 6370 - }, - { - "id" : "minecraft:prismarine_stairs", - "blockRuntimeId" : 6292 - }, - { - "id" : "minecraft:dark_prismarine_stairs", - "blockRuntimeId" : 3986 - }, - { - "id" : "minecraft:prismarine_bricks_stairs", - "blockRuntimeId" : 6284 - }, - { - "id" : "minecraft:crimson_stairs", - "blockRuntimeId" : 3819 - }, - { - "id" : "minecraft:warped_stairs", - "blockRuntimeId" : 7372 - }, - { - "id" : "minecraft:blackstone_stairs", - "blockRuntimeId" : 489 - }, - { - "id" : "minecraft:polished_blackstone_stairs", - "blockRuntimeId" : 5876 - }, - { - "id" : "minecraft:polished_blackstone_brick_stairs", - "blockRuntimeId" : 5673 - }, - { - "id" : "minecraft:cut_copper_stairs", - "blockRuntimeId" : 3872 - }, - { - "id" : "minecraft:exposed_cut_copper_stairs", - "blockRuntimeId" : 4705 - }, - { - "id" : "minecraft:weathered_cut_copper_stairs", - "blockRuntimeId" : 7499 - }, - { - "id" : "minecraft:oxidized_cut_copper_stairs", - "blockRuntimeId" : 5611 - }, - { - "id" : "minecraft:waxed_cut_copper_stairs", - "blockRuntimeId" : 7443 - }, - { - "id" : "minecraft:waxed_exposed_cut_copper_stairs", - "blockRuntimeId" : 7457 - }, - { - "id" : "minecraft:waxed_weathered_cut_copper_stairs", - "blockRuntimeId" : 7485 - }, - { - "id" : "minecraft:waxed_oxidized_cut_copper_stairs", - "blockRuntimeId" : 7471 - }, - { - "id" : "minecraft:cobbled_deepslate_stairs", - "blockRuntimeId" : 1107 - }, - { - "id" : "minecraft:deepslate_tile_stairs", - "blockRuntimeId" : 4239 - }, - { - "id" : "minecraft:polished_deepslate_stairs", - "blockRuntimeId" : 6051 - }, - { - "id" : "minecraft:deepslate_brick_stairs", - "blockRuntimeId" : 4056 - }, - { - "id" : "minecraft:wooden_door" - }, - { - "id" : "minecraft:spruce_door" - }, - { - "id" : "minecraft:birch_door" - }, - { - "id" : "minecraft:jungle_door" - }, - { - "id" : "minecraft:acacia_door" - }, - { - "id" : "minecraft:dark_oak_door" - }, - { - "id" : "minecraft:iron_door" - }, - { - "id" : "minecraft:crimson_door" - }, - { - "id" : "minecraft:warped_door" - }, - { - "id" : "minecraft:trapdoor", - "blockRuntimeId" : 7117 - }, - { - "id" : "minecraft:spruce_trapdoor", - "blockRuntimeId" : 6820 - }, - { - "id" : "minecraft:birch_trapdoor", - "blockRuntimeId" : 456 - }, - { - "id" : "minecraft:jungle_trapdoor", - "blockRuntimeId" : 5214 - }, - { - "id" : "minecraft:acacia_trapdoor", - "blockRuntimeId" : 100 - }, - { - "id" : "minecraft:dark_oak_trapdoor", - "blockRuntimeId" : 3970 - }, - { - "id" : "minecraft:iron_trapdoor", - "blockRuntimeId" : 5073 - }, - { - "id" : "minecraft:crimson_trapdoor", - "blockRuntimeId" : 3846 - }, - { - "id" : "minecraft:warped_trapdoor", - "blockRuntimeId" : 7399 - }, - { - "id" : "minecraft:iron_bars", - "blockRuntimeId" : 5038 - }, - { - "id" : "minecraft:glass", - "blockRuntimeId" : 4820 - }, - { - "id" : "minecraft:stained_glass", - "blockRuntimeId" : 6842 - }, - { - "id" : "minecraft:stained_glass", - "blockRuntimeId" : 6850 - }, - { - "id" : "minecraft:stained_glass", - "blockRuntimeId" : 6849 - }, - { - "id" : "minecraft:stained_glass", - "blockRuntimeId" : 6857 - }, - { - "id" : "minecraft:stained_glass", - "blockRuntimeId" : 6854 - }, - { - "id" : "minecraft:stained_glass", - "blockRuntimeId" : 6856 - }, - { - "id" : "minecraft:stained_glass", - "blockRuntimeId" : 6843 - }, - { - "id" : "minecraft:stained_glass", - "blockRuntimeId" : 6846 - }, - { - "id" : "minecraft:stained_glass", - "blockRuntimeId" : 6847 - }, - { - "id" : "minecraft:stained_glass", - "blockRuntimeId" : 6855 - }, - { - "id" : "minecraft:stained_glass", - "blockRuntimeId" : 6851 - }, - { - "id" : "minecraft:stained_glass", - "blockRuntimeId" : 6845 - }, - { - "id" : "minecraft:stained_glass", - "blockRuntimeId" : 6853 - }, - { - "id" : "minecraft:stained_glass", - "blockRuntimeId" : 6852 - }, - { - "id" : "minecraft:stained_glass", - "blockRuntimeId" : 6844 - }, - { - "id" : "minecraft:stained_glass", - "blockRuntimeId" : 6848 - }, - { - "id" : "minecraft:tinted_glass", - "blockRuntimeId" : 7106 - }, - { - "id" : "minecraft:glass_pane", - "blockRuntimeId" : 4821 - }, - { - "id" : "minecraft:stained_glass_pane", - "blockRuntimeId" : 6858 - }, - { - "id" : "minecraft:stained_glass_pane", - "blockRuntimeId" : 6866 - }, - { - "id" : "minecraft:stained_glass_pane", - "blockRuntimeId" : 6865 - }, - { - "id" : "minecraft:stained_glass_pane", - "blockRuntimeId" : 6873 - }, - { - "id" : "minecraft:stained_glass_pane", - "blockRuntimeId" : 6870 - }, - { - "id" : "minecraft:stained_glass_pane", - "blockRuntimeId" : 6872 - }, - { - "id" : "minecraft:stained_glass_pane", - "blockRuntimeId" : 6859 - }, - { - "id" : "minecraft:stained_glass_pane", - "blockRuntimeId" : 6862 - }, - { - "id" : "minecraft:stained_glass_pane", - "blockRuntimeId" : 6863 - }, - { - "id" : "minecraft:stained_glass_pane", - "blockRuntimeId" : 6871 - }, - { - "id" : "minecraft:stained_glass_pane", - "blockRuntimeId" : 6867 - }, - { - "id" : "minecraft:stained_glass_pane", - "blockRuntimeId" : 6861 - }, - { - "id" : "minecraft:stained_glass_pane", - "blockRuntimeId" : 6869 - }, - { - "id" : "minecraft:stained_glass_pane", - "blockRuntimeId" : 6868 - }, - { - "id" : "minecraft:stained_glass_pane", - "blockRuntimeId" : 6860 - }, - { - "id" : "minecraft:stained_glass_pane", - "blockRuntimeId" : 6864 - }, - { - "id" : "minecraft:ladder", - "blockRuntimeId" : 5262 - }, - { - "id" : "minecraft:scaffolding", - "blockRuntimeId" : 6553 - }, - { - "id" : "minecraft:double_stone_slab", - "blockRuntimeId" : 6977 - }, - { - "id" : "minecraft:double_stone_slab4", - "blockRuntimeId" : 7027 - }, - { - "id" : "minecraft:double_stone_slab", - "blockRuntimeId" : 6980 - }, - { - "id" : "minecraft:double_stone_slab2", - "blockRuntimeId" : 6998 - }, - { - "id" : "minecraft:wooden_slab", - "blockRuntimeId" : 7647 - }, - { - "id" : "minecraft:wooden_slab", - "blockRuntimeId" : 7648 - }, - { - "id" : "minecraft:wooden_slab", - "blockRuntimeId" : 7649 - }, - { - "id" : "minecraft:wooden_slab", - "blockRuntimeId" : 7650 - }, - { - "id" : "minecraft:wooden_slab", - "blockRuntimeId" : 7651 - }, - { - "id" : "minecraft:wooden_slab", - "blockRuntimeId" : 7652 - }, - { - "id" : "minecraft:double_stone_slab", - "blockRuntimeId" : 6982 - }, - { - "id" : "minecraft:double_stone_slab4", - "blockRuntimeId" : 7025 - }, - { - "id" : "minecraft:double_stone_slab", - "blockRuntimeId" : 6978 - }, - { - "id" : "minecraft:double_stone_slab4", - "blockRuntimeId" : 7028 - }, - { - "id" : "minecraft:double_stone_slab2", - "blockRuntimeId" : 6999 - }, - { - "id" : "minecraft:double_stone_slab2", - "blockRuntimeId" : 6993 - }, - { - "id" : "minecraft:double_stone_slab4", - "blockRuntimeId" : 7029 - }, - { - "id" : "minecraft:double_stone_slab3", - "blockRuntimeId" : 7010 - }, - { - "id" : "minecraft:double_stone_slab3", - "blockRuntimeId" : 7015 - }, - { - "id" : "minecraft:double_stone_slab3", - "blockRuntimeId" : 7016 - }, - { - "id" : "minecraft:double_stone_slab3", - "blockRuntimeId" : 7013 - }, - { - "id" : "minecraft:double_stone_slab3", - "blockRuntimeId" : 7014 - }, - { - "id" : "minecraft:double_stone_slab3", - "blockRuntimeId" : 7012 - }, - { - "id" : "minecraft:double_stone_slab3", - "blockRuntimeId" : 7011 - }, - { - "id" : "minecraft:double_stone_slab", - "blockRuntimeId" : 6981 - }, - { - "id" : "minecraft:double_stone_slab", - "blockRuntimeId" : 6984 - }, - { - "id" : "minecraft:double_stone_slab2", - "blockRuntimeId" : 7000 - }, - { - "id" : "minecraft:double_stone_slab3", - "blockRuntimeId" : 7009 - }, - { - "id" : "minecraft:double_stone_slab", - "blockRuntimeId" : 6983 - }, - { - "id" : "minecraft:double_stone_slab4", - "blockRuntimeId" : 7026 - }, - { - "id" : "minecraft:double_stone_slab2", - "blockRuntimeId" : 6994 - }, - { - "id" : "minecraft:double_stone_slab2", - "blockRuntimeId" : 6995 - }, - { - "id" : "minecraft:double_stone_slab2", - "blockRuntimeId" : 6996 - }, - { - "id" : "minecraft:double_stone_slab2", - "blockRuntimeId" : 6997 - }, - { - "id" : "minecraft:crimson_slab", - "blockRuntimeId" : 3817 - }, - { - "id" : "minecraft:warped_slab", - "blockRuntimeId" : 7370 - }, - { - "id" : "minecraft:blackstone_slab", - "blockRuntimeId" : 487 - }, - { - "id" : "minecraft:polished_blackstone_slab", - "blockRuntimeId" : 5874 - }, - { - "id" : "minecraft:polished_blackstone_brick_slab", - "blockRuntimeId" : 5671 - }, - { - "id" : "minecraft:cut_copper_slab", - "blockRuntimeId" : 3870 - }, - { - "id" : "minecraft:exposed_cut_copper_slab", - "blockRuntimeId" : 4703 - }, - { - "id" : "minecraft:weathered_cut_copper_slab", - "blockRuntimeId" : 7497 - }, - { - "id" : "minecraft:oxidized_cut_copper_slab", - "blockRuntimeId" : 5609 - }, - { - "id" : "minecraft:waxed_cut_copper_slab", - "blockRuntimeId" : 7441 - }, - { - "id" : "minecraft:waxed_exposed_cut_copper_slab", - "blockRuntimeId" : 7455 - }, - { - "id" : "minecraft:waxed_weathered_cut_copper_slab", - "blockRuntimeId" : 7483 - }, - { - "id" : "minecraft:waxed_oxidized_cut_copper_slab", - "blockRuntimeId" : 7469 - }, - { - "id" : "minecraft:cobbled_deepslate_slab", - "blockRuntimeId" : 1105 - }, - { - "id" : "minecraft:polished_deepslate_slab", - "blockRuntimeId" : 6049 - }, - { - "id" : "minecraft:deepslate_tile_slab", - "blockRuntimeId" : 4237 - }, - { - "id" : "minecraft:deepslate_brick_slab", - "blockRuntimeId" : 4054 - }, - { - "id" : "minecraft:brick_block", - "blockRuntimeId" : 855 - }, - { - "id" : "minecraft:chiseled_nether_bricks", - "blockRuntimeId" : 1090 - }, - { - "id" : "minecraft:cracked_nether_bricks", - "blockRuntimeId" : 3728 - }, - { - "id" : "minecraft:quartz_bricks", - "blockRuntimeId" : 6390 - }, - { - "id" : "minecraft:stonebrick", - "blockRuntimeId" : 7043 - }, - { - "id" : "minecraft:stonebrick", - "blockRuntimeId" : 7044 - }, - { - "id" : "minecraft:stonebrick", - "blockRuntimeId" : 7045 - }, - { - "id" : "minecraft:stonebrick", - "blockRuntimeId" : 7046 - }, - { - "id" : "minecraft:end_bricks", - "blockRuntimeId" : 4677 - }, - { - "id" : "minecraft:prismarine", - "blockRuntimeId" : 6283 - }, - { - "id" : "minecraft:polished_blackstone_bricks", - "blockRuntimeId" : 5843 - }, - { - "id" : "minecraft:cracked_polished_blackstone_bricks", - "blockRuntimeId" : 3729 - }, - { - "id" : "minecraft:gilded_blackstone", - "blockRuntimeId" : 4819 - }, - { - "id" : "minecraft:chiseled_polished_blackstone", - "blockRuntimeId" : 1091 - }, - { - "id" : "minecraft:deepslate_tiles", - "blockRuntimeId" : 4409 - }, - { - "id" : "minecraft:cracked_deepslate_tiles", - "blockRuntimeId" : 3727 - }, - { - "id" : "minecraft:deepslate_bricks", - "blockRuntimeId" : 4226 - }, - { - "id" : "minecraft:cracked_deepslate_bricks", - "blockRuntimeId" : 3726 - }, - { - "id" : "minecraft:chiseled_deepslate", - "blockRuntimeId" : 1089 - }, - { - "id" : "minecraft:cobblestone", - "blockRuntimeId" : 1277 - }, - { - "id" : "minecraft:mossy_cobblestone", - "blockRuntimeId" : 5532 - }, - { - "id" : "minecraft:cobbled_deepslate", - "blockRuntimeId" : 1102 - }, - { - "id" : "minecraft:smooth_stone", - "blockRuntimeId" : 6665 - }, - { - "id" : "minecraft:sandstone", - "blockRuntimeId" : 6529 - }, - { - "id" : "minecraft:sandstone", - "blockRuntimeId" : 6530 - }, - { - "id" : "minecraft:sandstone", - "blockRuntimeId" : 6531 - }, - { - "id" : "minecraft:sandstone", - "blockRuntimeId" : 6532 - }, - { - "id" : "minecraft:red_sandstone", - "blockRuntimeId" : 6456 - }, - { - "id" : "minecraft:red_sandstone", - "blockRuntimeId" : 6457 - }, - { - "id" : "minecraft:red_sandstone", - "blockRuntimeId" : 6458 - }, - { - "id" : "minecraft:red_sandstone", - "blockRuntimeId" : 6459 - }, - { - "id" : "minecraft:coal_block", - "blockRuntimeId" : 1100 - }, - { - "id" : "minecraft:dried_kelp_block", - "blockRuntimeId" : 4533 - }, - { - "id" : "minecraft:gold_block", - "blockRuntimeId" : 4900 - }, - { - "id" : "minecraft:iron_block", - "blockRuntimeId" : 5039 - }, - { - "id" : "minecraft:copper_block", - "blockRuntimeId" : 3636 - }, - { - "id" : "minecraft:exposed_copper", - "blockRuntimeId" : 4701 - }, - { - "id" : "minecraft:weathered_copper", - "blockRuntimeId" : 7495 - }, - { - "id" : "minecraft:oxidized_copper", - "blockRuntimeId" : 5607 - }, - { - "id" : "minecraft:waxed_copper", - "blockRuntimeId" : 7439 - }, - { - "id" : "minecraft:waxed_exposed_copper", - "blockRuntimeId" : 7453 - }, - { - "id" : "minecraft:waxed_weathered_copper", - "blockRuntimeId" : 7481 - }, - { - "id" : "minecraft:waxed_oxidized_copper", - "blockRuntimeId" : 7467 - }, - { - "id" : "minecraft:cut_copper", - "blockRuntimeId" : 3869 - }, - { - "id" : "minecraft:exposed_cut_copper", - "blockRuntimeId" : 4702 - }, - { - "id" : "minecraft:weathered_cut_copper", - "blockRuntimeId" : 7496 - }, - { - "id" : "minecraft:oxidized_cut_copper", - "blockRuntimeId" : 5608 - }, - { - "id" : "minecraft:waxed_cut_copper", - "blockRuntimeId" : 7440 - }, - { - "id" : "minecraft:waxed_exposed_cut_copper", - "blockRuntimeId" : 7454 - }, - { - "id" : "minecraft:waxed_weathered_cut_copper", - "blockRuntimeId" : 7482 - }, - { - "id" : "minecraft:waxed_oxidized_cut_copper", - "blockRuntimeId" : 7468 - }, - { - "id" : "minecraft:emerald_block", - "blockRuntimeId" : 4666 - }, - { - "id" : "minecraft:diamond_block", - "blockRuntimeId" : 4423 - }, - { - "id" : "minecraft:lapis_block", - "blockRuntimeId" : 5270 - }, - { - "id" : "minecraft:raw_iron_block", - "blockRuntimeId" : 6412 - }, - { - "id" : "minecraft:raw_copper_block", - "blockRuntimeId" : 6410 - }, - { - "id" : "minecraft:raw_gold_block", - "blockRuntimeId" : 6411 - }, - { - "id" : "minecraft:quartz_block", - "blockRuntimeId" : 6378 - }, - { - "id" : "minecraft:quartz_block", - "blockRuntimeId" : 6380 - }, - { - "id" : "minecraft:quartz_block", - "blockRuntimeId" : 6379 - }, - { - "id" : "minecraft:quartz_block", - "blockRuntimeId" : 6381 - }, - { - "id" : "minecraft:prismarine", - "blockRuntimeId" : 6281 - }, - { - "id" : "minecraft:prismarine", - "blockRuntimeId" : 6282 - }, - { - "id" : "minecraft:slime", - "blockRuntimeId" : 6618 - }, - { - "id" : "minecraft:honey_block", - "blockRuntimeId" : 5017 - }, - { - "id" : "minecraft:honeycomb_block", - "blockRuntimeId" : 5018 - }, - { - "id" : "minecraft:hay_block", - "blockRuntimeId" : 4989 - }, - { - "id" : "minecraft:bone_block", - "blockRuntimeId" : 672 - }, - { - "id" : "minecraft:nether_brick", - "blockRuntimeId" : 5551 - }, - { - "id" : "minecraft:red_nether_brick", - "blockRuntimeId" : 6447 - }, - { - "id" : "minecraft:netherite_block", - "blockRuntimeId" : 5568 - }, - { - "id" : "minecraft:lodestone", - "blockRuntimeId" : 5438 - }, - { - "id" : "minecraft:wool", - "blockRuntimeId" : 7659 - }, - { - "id" : "minecraft:wool", - "blockRuntimeId" : 7667 - }, - { - "id" : "minecraft:wool", - "blockRuntimeId" : 7666 - }, - { - "id" : "minecraft:wool", - "blockRuntimeId" : 7674 - }, - { - "id" : "minecraft:wool", - "blockRuntimeId" : 7671 - }, - { - "id" : "minecraft:wool", - "blockRuntimeId" : 7673 - }, - { - "id" : "minecraft:wool", - "blockRuntimeId" : 7660 - }, - { - "id" : "minecraft:wool", - "blockRuntimeId" : 7663 - }, - { - "id" : "minecraft:wool", - "blockRuntimeId" : 7664 - }, - { - "id" : "minecraft:wool", - "blockRuntimeId" : 7672 - }, - { - "id" : "minecraft:wool", - "blockRuntimeId" : 7668 - }, - { - "id" : "minecraft:wool", - "blockRuntimeId" : 7662 - }, - { - "id" : "minecraft:wool", - "blockRuntimeId" : 7670 - }, - { - "id" : "minecraft:wool", - "blockRuntimeId" : 7669 - }, - { - "id" : "minecraft:wool", - "blockRuntimeId" : 7661 - }, - { - "id" : "minecraft:wool", - "blockRuntimeId" : 7665 - }, - { - "id" : "minecraft:carpet", - "blockRuntimeId" : 923 - }, - { - "id" : "minecraft:carpet", - "blockRuntimeId" : 931 - }, - { - "id" : "minecraft:carpet", - "blockRuntimeId" : 930 - }, - { - "id" : "minecraft:carpet", - "blockRuntimeId" : 938 - }, - { - "id" : "minecraft:carpet", - "blockRuntimeId" : 935 - }, - { - "id" : "minecraft:carpet", - "blockRuntimeId" : 937 - }, - { - "id" : "minecraft:carpet", - "blockRuntimeId" : 924 - }, - { - "id" : "minecraft:carpet", - "blockRuntimeId" : 927 - }, - { - "id" : "minecraft:carpet", - "blockRuntimeId" : 928 - }, - { - "id" : "minecraft:carpet", - "blockRuntimeId" : 936 - }, - { - "id" : "minecraft:carpet", - "blockRuntimeId" : 932 - }, - { - "id" : "minecraft:carpet", - "blockRuntimeId" : 926 - }, - { - "id" : "minecraft:carpet", - "blockRuntimeId" : 934 - }, - { - "id" : "minecraft:carpet", - "blockRuntimeId" : 933 - }, - { - "id" : "minecraft:carpet", - "blockRuntimeId" : 925 - }, - { - "id" : "minecraft:carpet", - "blockRuntimeId" : 929 - }, - { - "id" : "minecraft:concrete_powder", - "blockRuntimeId" : 3619 - }, - { - "id" : "minecraft:concrete_powder", - "blockRuntimeId" : 3627 - }, - { - "id" : "minecraft:concrete_powder", - "blockRuntimeId" : 3626 - }, - { - "id" : "minecraft:concrete_powder", - "blockRuntimeId" : 3634 - }, - { - "id" : "minecraft:concrete_powder", - "blockRuntimeId" : 3631 - }, - { - "id" : "minecraft:concrete_powder", - "blockRuntimeId" : 3633 - }, - { - "id" : "minecraft:concrete_powder", - "blockRuntimeId" : 3620 - }, - { - "id" : "minecraft:concrete_powder", - "blockRuntimeId" : 3623 - }, - { - "id" : "minecraft:concrete_powder", - "blockRuntimeId" : 3624 - }, - { - "id" : "minecraft:concrete_powder", - "blockRuntimeId" : 3632 - }, - { - "id" : "minecraft:concrete_powder", - "blockRuntimeId" : 3628 - }, - { - "id" : "minecraft:concrete_powder", - "blockRuntimeId" : 3622 - }, - { - "id" : "minecraft:concrete_powder", - "blockRuntimeId" : 3630 - }, - { - "id" : "minecraft:concrete_powder", - "blockRuntimeId" : 3629 - }, - { - "id" : "minecraft:concrete_powder", - "blockRuntimeId" : 3621 - }, - { - "id" : "minecraft:concrete_powder", - "blockRuntimeId" : 3625 - }, - { - "id" : "minecraft:concrete", - "blockRuntimeId" : 3603 - }, - { - "id" : "minecraft:concrete", - "blockRuntimeId" : 3611 - }, - { - "id" : "minecraft:concrete", - "blockRuntimeId" : 3610 - }, - { - "id" : "minecraft:concrete", - "blockRuntimeId" : 3618 - }, - { - "id" : "minecraft:concrete", - "blockRuntimeId" : 3615 - }, - { - "id" : "minecraft:concrete", - "blockRuntimeId" : 3617 - }, - { - "id" : "minecraft:concrete", - "blockRuntimeId" : 3604 - }, - { - "id" : "minecraft:concrete", - "blockRuntimeId" : 3607 - }, - { - "id" : "minecraft:concrete", - "blockRuntimeId" : 3608 - }, - { - "id" : "minecraft:concrete", - "blockRuntimeId" : 3616 - }, - { - "id" : "minecraft:concrete", - "blockRuntimeId" : 3612 - }, - { - "id" : "minecraft:concrete", - "blockRuntimeId" : 3606 - }, - { - "id" : "minecraft:concrete", - "blockRuntimeId" : 3614 - }, - { - "id" : "minecraft:concrete", - "blockRuntimeId" : 3613 - }, - { - "id" : "minecraft:concrete", - "blockRuntimeId" : 3605 - }, - { - "id" : "minecraft:concrete", - "blockRuntimeId" : 3609 - }, - { - "id" : "minecraft:clay", - "blockRuntimeId" : 1099 - }, - { - "id" : "minecraft:hardened_clay", - "blockRuntimeId" : 4988 - }, - { - "id" : "minecraft:stained_hardened_clay", - "blockRuntimeId" : 6874 - }, - { - "id" : "minecraft:stained_hardened_clay", - "blockRuntimeId" : 6882 - }, - { - "id" : "minecraft:stained_hardened_clay", - "blockRuntimeId" : 6881 - }, - { - "id" : "minecraft:stained_hardened_clay", - "blockRuntimeId" : 6889 - }, - { - "id" : "minecraft:stained_hardened_clay", - "blockRuntimeId" : 6886 - }, - { - "id" : "minecraft:stained_hardened_clay", - "blockRuntimeId" : 6888 - }, - { - "id" : "minecraft:stained_hardened_clay", - "blockRuntimeId" : 6875 - }, - { - "id" : "minecraft:stained_hardened_clay", - "blockRuntimeId" : 6878 - }, - { - "id" : "minecraft:stained_hardened_clay", - "blockRuntimeId" : 6879 - }, - { - "id" : "minecraft:stained_hardened_clay", - "blockRuntimeId" : 6887 - }, - { - "id" : "minecraft:stained_hardened_clay", - "blockRuntimeId" : 6883 - }, - { - "id" : "minecraft:stained_hardened_clay", - "blockRuntimeId" : 6877 - }, - { - "id" : "minecraft:stained_hardened_clay", - "blockRuntimeId" : 6885 - }, - { - "id" : "minecraft:stained_hardened_clay", - "blockRuntimeId" : 6884 - }, - { - "id" : "minecraft:stained_hardened_clay", - "blockRuntimeId" : 6876 - }, - { - "id" : "minecraft:stained_hardened_clay", - "blockRuntimeId" : 6880 - }, - { - "id" : "minecraft:white_glazed_terracotta", - "blockRuntimeId" : 7544 - }, - { - "id" : "minecraft:silver_glazed_terracotta", - "blockRuntimeId" : 6600 - }, - { - "id" : "minecraft:gray_glazed_terracotta", - "blockRuntimeId" : 4925 - }, - { - "id" : "minecraft:black_glazed_terracotta", - "blockRuntimeId" : 478 - }, - { - "id" : "minecraft:brown_glazed_terracotta", - "blockRuntimeId" : 864 - }, - { - "id" : "minecraft:red_glazed_terracotta", - "blockRuntimeId" : 6424 - }, - { - "id" : "minecraft:orange_glazed_terracotta", - "blockRuntimeId" : 5601 - }, - { - "id" : "minecraft:yellow_glazed_terracotta", - "blockRuntimeId" : 7676 - }, - { - "id" : "minecraft:lime_glazed_terracotta", - "blockRuntimeId" : 5407 - }, - { - "id" : "minecraft:green_glazed_terracotta", - "blockRuntimeId" : 4931 - }, - { - "id" : "minecraft:cyan_glazed_terracotta", - "blockRuntimeId" : 3880 - }, - { - "id" : "minecraft:light_blue_glazed_terracotta", - "blockRuntimeId" : 5379 - }, - { - "id" : "minecraft:blue_glazed_terracotta", - "blockRuntimeId" : 665 - }, - { - "id" : "minecraft:purple_glazed_terracotta", - "blockRuntimeId" : 6352 - }, - { - "id" : "minecraft:magenta_glazed_terracotta", - "blockRuntimeId" : 5461 - }, - { - "id" : "minecraft:pink_glazed_terracotta", - "blockRuntimeId" : 5622 - }, - { - "id" : "minecraft:purpur_block", - "blockRuntimeId" : 6358 - }, - { - "id" : "minecraft:purpur_block", - "blockRuntimeId" : 6360 - }, - { - "id" : "minecraft:nether_wart_block", - "blockRuntimeId" : 5567 - }, - { - "id" : "minecraft:warped_wart_block", - "blockRuntimeId" : 7421 - }, - { - "id" : "minecraft:shroomlight", - "blockRuntimeId" : 6583 - }, - { - "id" : "minecraft:crimson_nylium", - "blockRuntimeId" : 3798 - }, - { - "id" : "minecraft:warped_nylium", - "blockRuntimeId" : 7351 - }, - { - "id" : "minecraft:basalt", - "blockRuntimeId" : 214 - }, - { - "id" : "minecraft:polished_basalt", - "blockRuntimeId" : 5665 - }, - { - "id" : "minecraft:smooth_basalt", - "blockRuntimeId" : 6640 - }, - { - "id" : "minecraft:soul_soil", - "blockRuntimeId" : 6710 - }, - { - "id" : "minecraft:dirt", - "blockRuntimeId" : 4433 - }, - { - "id" : "minecraft:dirt", - "blockRuntimeId" : 4434 - }, - { - "id" : "minecraft:farmland", - "blockRuntimeId" : 4715 - }, - { - "id" : "minecraft:grass", - "blockRuntimeId" : 4922 - }, - { - "id" : "minecraft:grass_path", - "blockRuntimeId" : 4923 - }, - { - "id" : "minecraft:podzol", - "blockRuntimeId" : 5646 - }, - { - "id" : "minecraft:mycelium", - "blockRuntimeId" : 5550 - }, - { - "id" : "minecraft:stone", - "blockRuntimeId" : 6934 - }, - { - "id" : "minecraft:iron_ore", - "blockRuntimeId" : 5072 - }, - { - "id" : "minecraft:gold_ore", - "blockRuntimeId" : 4901 - }, - { - "id" : "minecraft:diamond_ore", - "blockRuntimeId" : 4424 - }, - { - "id" : "minecraft:lapis_ore", - "blockRuntimeId" : 5271 - }, - { - "id" : "minecraft:redstone_ore", - "blockRuntimeId" : 6470 - }, - { - "id" : "minecraft:coal_ore", - "blockRuntimeId" : 1101 - }, - { - "id" : "minecraft:emerald_ore", - "blockRuntimeId" : 4667 - }, - { - "id" : "minecraft:quartz_ore", - "blockRuntimeId" : 6391 - }, - { - "id" : "minecraft:nether_gold_ore", - "blockRuntimeId" : 5561 - }, - { - "id" : "minecraft:ancient_debris", - "blockRuntimeId" : 143 - }, - { - "id" : "minecraft:copper_ore", - "blockRuntimeId" : 3637 - }, - { - "id" : "minecraft:deepslate_iron_ore", - "blockRuntimeId" : 4232 - }, - { - "id" : "minecraft:deepslate_gold_ore", - "blockRuntimeId" : 4231 - }, - { - "id" : "minecraft:deepslate_diamond_ore", - "blockRuntimeId" : 4229 - }, - { - "id" : "minecraft:deepslate_lapis_ore", - "blockRuntimeId" : 4233 - }, - { - "id" : "minecraft:deepslate_redstone_ore", - "blockRuntimeId" : 4234 - }, - { - "id" : "minecraft:deepslate_emerald_ore", - "blockRuntimeId" : 4230 - }, - { - "id" : "minecraft:deepslate_coal_ore", - "blockRuntimeId" : 4227 - }, - { - "id" : "minecraft:deepslate_copper_ore", - "blockRuntimeId" : 4228 - }, - { - "id" : "minecraft:gravel", - "blockRuntimeId" : 4924 - }, - { - "id" : "minecraft:stone", - "blockRuntimeId" : 6935 - }, - { - "id" : "minecraft:stone", - "blockRuntimeId" : 6937 - }, - { - "id" : "minecraft:stone", - "blockRuntimeId" : 6939 - }, - { - "id" : "minecraft:blackstone", - "blockRuntimeId" : 484 - }, - { - "id" : "minecraft:stone", - "blockRuntimeId" : 6936 - }, - { - "id" : "minecraft:stone", - "blockRuntimeId" : 6938 - }, - { - "id" : "minecraft:stone", - "blockRuntimeId" : 6940 - }, - { - "id" : "minecraft:polished_blackstone", - "blockRuntimeId" : 5668 - }, - { - "id" : "minecraft:deepslate", - "blockRuntimeId" : 4049 - }, - { - "id" : "minecraft:polished_deepslate", - "blockRuntimeId" : 6046 - }, - { - "id" : "minecraft:sand", - "blockRuntimeId" : 6527 - }, - { - "id" : "minecraft:sand", - "blockRuntimeId" : 6528 - }, - { - "id" : "minecraft:cactus", - "blockRuntimeId" : 890 - }, - { - "id" : "minecraft:log", - "blockRuntimeId" : 5439 - }, - { - "id" : "minecraft:stripped_oak_log", - "blockRuntimeId" : 7073 - }, - { - "id" : "minecraft:log", - "blockRuntimeId" : 5440 - }, - { - "id" : "minecraft:stripped_spruce_log", - "blockRuntimeId" : 7076 - }, - { - "id" : "minecraft:log", - "blockRuntimeId" : 5441 - }, - { - "id" : "minecraft:stripped_birch_log", - "blockRuntimeId" : 7058 - }, - { - "id" : "minecraft:log", - "blockRuntimeId" : 5442 - }, - { - "id" : "minecraft:stripped_jungle_log", - "blockRuntimeId" : 7070 - }, - { - "id" : "minecraft:log2", - "blockRuntimeId" : 5451 - }, - { - "id" : "minecraft:stripped_acacia_log", - "blockRuntimeId" : 7055 - }, - { - "id" : "minecraft:log2", - "blockRuntimeId" : 5452 - }, - { - "id" : "minecraft:stripped_dark_oak_log", - "blockRuntimeId" : 7067 - }, - { - "id" : "minecraft:crimson_stem", - "blockRuntimeId" : 3843 - }, - { - "id" : "minecraft:stripped_crimson_stem", - "blockRuntimeId" : 7064 - }, - { - "id" : "minecraft:warped_stem", - "blockRuntimeId" : 7396 - }, - { - "id" : "minecraft:stripped_warped_stem", - "blockRuntimeId" : 7082 - }, - { - "id" : "minecraft:wood", - "blockRuntimeId" : 7551 - }, - { - "id" : "minecraft:wood", - "blockRuntimeId" : 7557 - }, - { - "id" : "minecraft:wood", - "blockRuntimeId" : 7552 - }, - { - "id" : "minecraft:wood", - "blockRuntimeId" : 7558 - }, - { - "id" : "minecraft:wood", - "blockRuntimeId" : 7553 - }, - { - "id" : "minecraft:wood", - "blockRuntimeId" : 7559 - }, - { - "id" : "minecraft:wood", - "blockRuntimeId" : 7554 - }, - { - "id" : "minecraft:wood", - "blockRuntimeId" : 7560 - }, - { - "id" : "minecraft:wood", - "blockRuntimeId" : 7555 - }, - { - "id" : "minecraft:wood", - "blockRuntimeId" : 7561 - }, - { - "id" : "minecraft:wood", - "blockRuntimeId" : 7556 - }, - { - "id" : "minecraft:wood", - "blockRuntimeId" : 7562 - }, - { - "id" : "minecraft:crimson_hyphae", - "blockRuntimeId" : 3795 - }, - { - "id" : "minecraft:stripped_crimson_hyphae", - "blockRuntimeId" : 7061 - }, - { - "id" : "minecraft:warped_hyphae", - "blockRuntimeId" : 7348 - }, - { - "id" : "minecraft:stripped_warped_hyphae", - "blockRuntimeId" : 7079 - }, - { - "id" : "minecraft:leaves", - "blockRuntimeId" : 5315 - }, - { - "id" : "minecraft:leaves", - "blockRuntimeId" : 5316 - }, - { - "id" : "minecraft:leaves", - "blockRuntimeId" : 5317 - }, - { - "id" : "minecraft:leaves", - "blockRuntimeId" : 5318 - }, - { - "id" : "minecraft:leaves2", - "blockRuntimeId" : 5331 - }, - { - "id" : "minecraft:leaves2", - "blockRuntimeId" : 5332 - }, - { - "id" : "minecraft:azalea_leaves", - "blockRuntimeId" : 169 - }, - { - "id" : "minecraft:azalea_leaves_flowered", - "blockRuntimeId" : 173 - }, - { - "id" : "minecraft:sapling", - "blockRuntimeId" : 6541 - }, - { - "id" : "minecraft:sapling", - "blockRuntimeId" : 6542 - }, - { - "id" : "minecraft:sapling", - "blockRuntimeId" : 6543 - }, - { - "id" : "minecraft:sapling", - "blockRuntimeId" : 6544 - }, - { - "id" : "minecraft:sapling", - "blockRuntimeId" : 6545 - }, - { - "id" : "minecraft:sapling", - "blockRuntimeId" : 6546 - }, - { - "id" : "minecraft:bee_nest", - "blockRuntimeId" : 236 - }, - { - "id" : "minecraft:wheat_seeds" - }, - { - "id" : "minecraft:pumpkin_seeds" - }, - { - "id" : "minecraft:melon_seeds" - }, - { - "id" : "minecraft:beetroot_seeds" - }, - { - "id" : "minecraft:wheat" - }, - { - "id" : "minecraft:beetroot" - }, - { - "id" : "minecraft:potato" - }, - { - "id" : "minecraft:poisonous_potato" - }, - { - "id" : "minecraft:carrot" - }, - { - "id" : "minecraft:golden_carrot" - }, - { - "id" : "minecraft:apple" - }, - { - "id" : "minecraft:golden_apple" - }, - { - "id" : "minecraft:enchanted_golden_apple" - }, - { - "id" : "minecraft:melon_block", - "blockRuntimeId" : 5474 - }, - { - "id" : "minecraft:melon_slice" - }, - { - "id" : "minecraft:glistering_melon_slice" - }, - { - "id" : "minecraft:sweet_berries" - }, - { - "id" : "minecraft:glow_berries" - }, - { - "id" : "minecraft:pumpkin", - "blockRuntimeId" : 6300 - }, - { - "id" : "minecraft:carved_pumpkin", - "blockRuntimeId" : 948 - }, - { - "id" : "minecraft:lit_pumpkin", - "blockRuntimeId" : 5426 - }, - { - "id" : "minecraft:honeycomb" - }, - { - "id" : "minecraft:tallgrass", - "blockRuntimeId" : 7103 - }, - { - "id" : "minecraft:double_plant", - "blockRuntimeId" : 4453 - }, - { - "id" : "minecraft:tallgrass", - "blockRuntimeId" : 7102 - }, - { - "id" : "minecraft:double_plant", - "blockRuntimeId" : 4452 - }, - { - "id" : "minecraft:nether_sprouts" - }, - { - "id" : "minecraft:coral", - "blockRuntimeId" : 3641 - }, - { - "id" : "minecraft:coral", - "blockRuntimeId" : 3639 - }, - { - "id" : "minecraft:coral", - "blockRuntimeId" : 3640 - }, - { - "id" : "minecraft:coral", - "blockRuntimeId" : 3638 - }, - { - "id" : "minecraft:coral", - "blockRuntimeId" : 3642 - }, - { - "id" : "minecraft:coral", - "blockRuntimeId" : 3646 - }, - { - "id" : "minecraft:coral", - "blockRuntimeId" : 3644 - }, - { - "id" : "minecraft:coral", - "blockRuntimeId" : 3645 - }, - { - "id" : "minecraft:coral", - "blockRuntimeId" : 3643 - }, - { - "id" : "minecraft:coral", - "blockRuntimeId" : 3647 - }, - { - "id" : "minecraft:coral_fan", - "blockRuntimeId" : 3661 - }, - { - "id" : "minecraft:coral_fan", - "blockRuntimeId" : 3659 - }, - { - "id" : "minecraft:coral_fan", - "blockRuntimeId" : 3660 - }, - { - "id" : "minecraft:coral_fan", - "blockRuntimeId" : 3658 - }, - { - "id" : "minecraft:coral_fan", - "blockRuntimeId" : 3662 - }, - { - "id" : "minecraft:coral_fan_dead", - "blockRuntimeId" : 3671 - }, - { - "id" : "minecraft:coral_fan_dead", - "blockRuntimeId" : 3669 - }, - { - "id" : "minecraft:coral_fan_dead", - "blockRuntimeId" : 3670 - }, - { - "id" : "minecraft:coral_fan_dead", - "blockRuntimeId" : 3668 - }, - { - "id" : "minecraft:coral_fan_dead", - "blockRuntimeId" : 3672 - }, - { - "id" : "minecraft:kelp" - }, - { - "id" : "minecraft:seagrass", - "blockRuntimeId" : 6579 - }, - { - "id" : "minecraft:crimson_roots", - "blockRuntimeId" : 3816 - }, - { - "id" : "minecraft:warped_roots", - "blockRuntimeId" : 7369 - }, - { - "id" : "minecraft:yellow_flower", - "blockRuntimeId" : 7675 - }, - { - "id" : "minecraft:red_flower", - "blockRuntimeId" : 6413 - }, - { - "id" : "minecraft:red_flower", - "blockRuntimeId" : 6414 - }, - { - "id" : "minecraft:red_flower", - "blockRuntimeId" : 6415 - }, - { - "id" : "minecraft:red_flower", - "blockRuntimeId" : 6416 - }, - { - "id" : "minecraft:red_flower", - "blockRuntimeId" : 6417 - }, - { - "id" : "minecraft:red_flower", - "blockRuntimeId" : 6418 - }, - { - "id" : "minecraft:red_flower", - "blockRuntimeId" : 6419 - }, - { - "id" : "minecraft:red_flower", - "blockRuntimeId" : 6420 - }, - { - "id" : "minecraft:red_flower", - "blockRuntimeId" : 6421 - }, - { - "id" : "minecraft:red_flower", - "blockRuntimeId" : 6422 - }, - { - "id" : "minecraft:red_flower", - "blockRuntimeId" : 6423 - }, - { - "id" : "minecraft:double_plant", - "blockRuntimeId" : 4450 - }, - { - "id" : "minecraft:double_plant", - "blockRuntimeId" : 4451 - }, - { - "id" : "minecraft:double_plant", - "blockRuntimeId" : 4454 - }, - { - "id" : "minecraft:double_plant", - "blockRuntimeId" : 4455 - }, - { - "id" : "minecraft:wither_rose", - "blockRuntimeId" : 7550 - }, - { - "id" : "minecraft:white_dye" - }, - { - "id" : "minecraft:light_gray_dye" - }, - { - "id" : "minecraft:gray_dye" - }, - { - "id" : "minecraft:black_dye" - }, - { - "id" : "minecraft:brown_dye" - }, - { - "id" : "minecraft:red_dye" - }, - { - "id" : "minecraft:orange_dye" - }, - { - "id" : "minecraft:yellow_dye" - }, - { - "id" : "minecraft:lime_dye" - }, - { - "id" : "minecraft:green_dye" - }, - { - "id" : "minecraft:cyan_dye" - }, - { - "id" : "minecraft:light_blue_dye" - }, - { - "id" : "minecraft:blue_dye" - }, - { - "id" : "minecraft:purple_dye" - }, - { - "id" : "minecraft:magenta_dye" - }, - { - "id" : "minecraft:pink_dye" - }, - { - "id" : "minecraft:ink_sac" - }, - { - "id" : "minecraft:glow_ink_sac" - }, - { - "id" : "minecraft:cocoa_beans" - }, - { - "id" : "minecraft:lapis_lazuli" - }, - { - "id" : "minecraft:bone_meal" - }, - { - "id" : "minecraft:vine", - "blockRuntimeId" : 7256 - }, - { - "id" : "minecraft:weeping_vines", - "blockRuntimeId" : 7510 - }, - { - "id" : "minecraft:twisting_vines", - "blockRuntimeId" : 7184 - }, - { - "id" : "minecraft:waterlily", - "blockRuntimeId" : 7438 - }, - { - "id" : "minecraft:deadbush", - "blockRuntimeId" : 4048 - }, - { - "id" : "minecraft:bamboo", - "blockRuntimeId" : 177 - }, - { - "id" : "minecraft:snow", - "blockRuntimeId" : 6666 - }, - { - "id" : "minecraft:ice", - "blockRuntimeId" : 5031 - }, - { - "id" : "minecraft:packed_ice", - "blockRuntimeId" : 5621 - }, - { - "id" : "minecraft:blue_ice", - "blockRuntimeId" : 671 - }, - { - "id" : "minecraft:snow_layer", - "blockRuntimeId" : 6667 - }, - { - "id" : "minecraft:pointed_dripstone", - "blockRuntimeId" : 5652 - }, - { - "id" : "minecraft:dripstone_block", - "blockRuntimeId" : 4534 - }, - { - "id" : "minecraft:moss_carpet", - "blockRuntimeId" : 5531 - }, - { - "id" : "minecraft:moss_block", - "blockRuntimeId" : 5530 - }, - { - "id" : "minecraft:dirt_with_roots", - "blockRuntimeId" : 4435 - }, - { - "id" : "minecraft:hanging_roots", - "blockRuntimeId" : 4953 - }, - { - "id" : "minecraft:big_dripleaf", - "blockRuntimeId" : 328 - }, - { - "id" : "minecraft:small_dripleaf_block", - "blockRuntimeId" : 6632 - }, - { - "id" : "minecraft:spore_blossom", - "blockRuntimeId" : 6719 - }, - { - "id" : "minecraft:azalea", - "blockRuntimeId" : 168 - }, - { - "id" : "minecraft:flowering_azalea", - "blockRuntimeId" : 4764 - }, - { - "id" : "minecraft:glow_lichen", - "blockRuntimeId" : 4897 - }, - { - "id" : "minecraft:amethyst_block", - "blockRuntimeId" : 136 - }, - { - "id" : "minecraft:budding_amethyst", - "blockRuntimeId" : 889 - }, - { - "id" : "minecraft:amethyst_cluster", - "blockRuntimeId" : 137 - }, - { - "id" : "minecraft:large_amethyst_bud", - "blockRuntimeId" : 5272 - }, - { - "id" : "minecraft:medium_amethyst_bud", - "blockRuntimeId" : 5468 - }, - { - "id" : "minecraft:small_amethyst_bud", - "blockRuntimeId" : 6619 - }, - { - "id" : "minecraft:tuff", - "blockRuntimeId" : 7171 - }, - { - "id" : "minecraft:calcite", - "blockRuntimeId" : 913 - }, - { - "id" : "minecraft:chicken" - }, - { - "id" : "minecraft:porkchop" - }, - { - "id" : "minecraft:beef" - }, - { - "id" : "minecraft:mutton" - }, - { - "id" : "minecraft:rabbit" - }, - { - "id" : "minecraft:cod" - }, - { - "id" : "minecraft:salmon" - }, - { - "id" : "minecraft:tropical_fish" - }, - { - "id" : "minecraft:pufferfish" - }, - { - "id" : "minecraft:brown_mushroom", - "blockRuntimeId" : 870 - }, - { - "id" : "minecraft:red_mushroom", - "blockRuntimeId" : 6430 - }, - { - "id" : "minecraft:crimson_fungus", - "blockRuntimeId" : 3794 - }, - { - "id" : "minecraft:warped_fungus", - "blockRuntimeId" : 7347 - }, - { - "id" : "minecraft:brown_mushroom_block", - "blockRuntimeId" : 885 - }, - { - "id" : "minecraft:red_mushroom_block", - "blockRuntimeId" : 6445 - }, - { - "id" : "minecraft:brown_mushroom_block", - "blockRuntimeId" : 886 - }, - { - "id" : "minecraft:brown_mushroom_block", - "blockRuntimeId" : 871 - }, - { - "id" : "minecraft:egg" - }, - { - "id" : "minecraft:sugar_cane" - }, - { - "id" : "minecraft:sugar" - }, - { - "id" : "minecraft:rotten_flesh" - }, - { - "id" : "minecraft:bone" - }, - { - "id" : "minecraft:web", - "blockRuntimeId" : 7509 - }, - { - "id" : "minecraft:spider_eye" - }, - { - "id" : "minecraft:mob_spawner", - "blockRuntimeId" : 5523 - }, - { - "id" : "minecraft:monster_egg", - "blockRuntimeId" : 5524 - }, - { - "id" : "minecraft:monster_egg", - "blockRuntimeId" : 5525 - }, - { - "id" : "minecraft:monster_egg", - "blockRuntimeId" : 5526 - }, - { - "id" : "minecraft:monster_egg", - "blockRuntimeId" : 5527 - }, - { - "id" : "minecraft:monster_egg", - "blockRuntimeId" : 5528 - }, - { - "id" : "minecraft:monster_egg", - "blockRuntimeId" : 5529 - }, - { - "id" : "minecraft:infested_deepslate", - "blockRuntimeId" : 5032 - }, - { - "id" : "minecraft:dragon_egg", - "blockRuntimeId" : 4532 - }, - { - "id" : "minecraft:turtle_egg", - "blockRuntimeId" : 7172 - }, - { - "id" : "minecraft:chicken_spawn_egg" - }, - { - "id" : "minecraft:bee_spawn_egg" - }, - { - "id" : "minecraft:cow_spawn_egg" - }, - { - "id" : "minecraft:pig_spawn_egg" - }, - { - "id" : "minecraft:sheep_spawn_egg" - }, - { - "id" : "minecraft:wolf_spawn_egg" - }, - { - "id" : "minecraft:polar_bear_spawn_egg" - }, - { - "id" : "minecraft:ocelot_spawn_egg" - }, - { - "id" : "minecraft:cat_spawn_egg" - }, - { - "id" : "minecraft:mooshroom_spawn_egg" - }, - { - "id" : "minecraft:bat_spawn_egg" - }, - { - "id" : "minecraft:parrot_spawn_egg" - }, - { - "id" : "minecraft:rabbit_spawn_egg" - }, - { - "id" : "minecraft:llama_spawn_egg" - }, - { - "id" : "minecraft:horse_spawn_egg" - }, - { - "id" : "minecraft:donkey_spawn_egg" - }, - { - "id" : "minecraft:mule_spawn_egg" - }, - { - "id" : "minecraft:skeleton_horse_spawn_egg" - }, - { - "id" : "minecraft:zombie_horse_spawn_egg" - }, - { - "id" : "minecraft:tropical_fish_spawn_egg" - }, - { - "id" : "minecraft:cod_spawn_egg" - }, - { - "id" : "minecraft:pufferfish_spawn_egg" - }, - { - "id" : "minecraft:salmon_spawn_egg" - }, - { - "id" : "minecraft:dolphin_spawn_egg" - }, - { - "id" : "minecraft:turtle_spawn_egg" - }, - { - "id" : "minecraft:panda_spawn_egg" - }, - { - "id" : "minecraft:fox_spawn_egg" - }, - { - "id" : "minecraft:creeper_spawn_egg" - }, - { - "id" : "minecraft:enderman_spawn_egg" - }, - { - "id" : "minecraft:silverfish_spawn_egg" - }, - { - "id" : "minecraft:skeleton_spawn_egg" - }, - { - "id" : "minecraft:wither_skeleton_spawn_egg" - }, - { - "id" : "minecraft:stray_spawn_egg" - }, - { - "id" : "minecraft:slime_spawn_egg" - }, - { - "id" : "minecraft:spider_spawn_egg" - }, - { - "id" : "minecraft:zombie_spawn_egg" - }, - { - "id" : "minecraft:zombie_pigman_spawn_egg" - }, - { - "id" : "minecraft:husk_spawn_egg" - }, - { - "id" : "minecraft:drowned_spawn_egg" - }, - { - "id" : "minecraft:squid_spawn_egg" - }, - { - "id" : "minecraft:glow_squid_spawn_egg" - }, - { - "id" : "minecraft:cave_spider_spawn_egg" - }, - { - "id" : "minecraft:witch_spawn_egg" - }, - { - "id" : "minecraft:guardian_spawn_egg" - }, - { - "id" : "minecraft:elder_guardian_spawn_egg" - }, - { - "id" : "minecraft:endermite_spawn_egg" - }, - { - "id" : "minecraft:magma_cube_spawn_egg" - }, - { - "id" : "minecraft:strider_spawn_egg" - }, - { - "id" : "minecraft:hoglin_spawn_egg" - }, - { - "id" : "minecraft:piglin_spawn_egg" - }, - { - "id" : "minecraft:zoglin_spawn_egg" - }, - { - "id" : "minecraft:piglin_brute_spawn_egg" - }, - { - "id" : "minecraft:goat_spawn_egg" - }, - { - "id" : "minecraft:axolotl_spawn_egg" - }, - { - "id" : "minecraft:ghast_spawn_egg" - }, - { - "id" : "minecraft:blaze_spawn_egg" - }, - { - "id" : "minecraft:shulker_spawn_egg" - }, - { - "id" : "minecraft:vindicator_spawn_egg" - }, - { - "id" : "minecraft:evoker_spawn_egg" - }, - { - "id" : "minecraft:vex_spawn_egg" - }, - { - "id" : "minecraft:villager_spawn_egg" - }, - { - "id" : "minecraft:wandering_trader_spawn_egg" - }, - { - "id" : "minecraft:zombie_villager_spawn_egg" - }, - { - "id" : "minecraft:phantom_spawn_egg" - }, - { - "id" : "minecraft:pillager_spawn_egg" - }, - { - "id" : "minecraft:ravager_spawn_egg" - }, - { - "id" : "minecraft:obsidian", - "blockRuntimeId" : 5600 - }, - { - "id" : "minecraft:crying_obsidian", - "blockRuntimeId" : 3868 - }, - { - "id" : "minecraft:bedrock", - "blockRuntimeId" : 234 - }, - { - "id" : "minecraft:soul_sand", - "blockRuntimeId" : 6709 - }, - { - "id" : "minecraft:netherrack", - "blockRuntimeId" : 5569 - }, - { - "id" : "minecraft:magma", - "blockRuntimeId" : 5467 - }, - { - "id" : "minecraft:nether_wart" - }, - { - "id" : "minecraft:end_stone", - "blockRuntimeId" : 4694 - }, - { - "id" : "minecraft:chorus_flower", - "blockRuntimeId" : 1092 - }, - { - "id" : "minecraft:chorus_plant", - "blockRuntimeId" : 1098 - }, - { - "id" : "minecraft:chorus_fruit" - }, - { - "id" : "minecraft:popped_chorus_fruit" - }, - { - "id" : "minecraft:sponge", - "blockRuntimeId" : 6717 - }, - { - "id" : "minecraft:sponge", - "blockRuntimeId" : 6718 - }, - { - "id" : "minecraft:coral_block", - "blockRuntimeId" : 3648 - }, - { - "id" : "minecraft:coral_block", - "blockRuntimeId" : 3649 - }, - { - "id" : "minecraft:coral_block", - "blockRuntimeId" : 3650 - }, - { - "id" : "minecraft:coral_block", - "blockRuntimeId" : 3651 - }, - { - "id" : "minecraft:coral_block", - "blockRuntimeId" : 3652 - }, - { - "id" : "minecraft:coral_block", - "blockRuntimeId" : 3653 - }, - { - "id" : "minecraft:coral_block", - "blockRuntimeId" : 3654 - }, - { - "id" : "minecraft:coral_block", - "blockRuntimeId" : 3655 - }, - { - "id" : "minecraft:coral_block", - "blockRuntimeId" : 3656 - }, - { - "id" : "minecraft:coral_block", - "blockRuntimeId" : 3657 - }, - { - "id" : "minecraft:leather_helmet" - }, - { - "id" : "minecraft:chainmail_helmet" - }, - { - "id" : "minecraft:iron_helmet" - }, - { - "id" : "minecraft:golden_helmet" - }, - { - "id" : "minecraft:diamond_helmet" - }, - { - "id" : "minecraft:netherite_helmet" - }, - { - "id" : "minecraft:leather_chestplate" - }, - { - "id" : "minecraft:chainmail_chestplate" - }, - { - "id" : "minecraft:iron_chestplate" - }, - { - "id" : "minecraft:golden_chestplate" - }, - { - "id" : "minecraft:diamond_chestplate" - }, - { - "id" : "minecraft:netherite_chestplate" - }, - { - "id" : "minecraft:leather_leggings" - }, - { - "id" : "minecraft:chainmail_leggings" - }, - { - "id" : "minecraft:iron_leggings" - }, - { - "id" : "minecraft:golden_leggings" - }, - { - "id" : "minecraft:diamond_leggings" - }, - { - "id" : "minecraft:netherite_leggings" - }, - { - "id" : "minecraft:leather_boots" - }, - { - "id" : "minecraft:chainmail_boots" - }, - { - "id" : "minecraft:iron_boots" - }, - { - "id" : "minecraft:golden_boots" - }, - { - "id" : "minecraft:diamond_boots" - }, - { - "id" : "minecraft:netherite_boots" - }, - { - "id" : "minecraft:wooden_sword" - }, - { - "id" : "minecraft:stone_sword" - }, - { - "id" : "minecraft:iron_sword" - }, - { - "id" : "minecraft:golden_sword" - }, - { - "id" : "minecraft:diamond_sword" - }, - { - "id" : "minecraft:netherite_sword" - }, - { - "id" : "minecraft:wooden_axe" - }, - { - "id" : "minecraft:stone_axe" - }, - { - "id" : "minecraft:iron_axe" - }, - { - "id" : "minecraft:golden_axe" - }, - { - "id" : "minecraft:diamond_axe" - }, - { - "id" : "minecraft:netherite_axe" - }, - { - "id" : "minecraft:wooden_pickaxe" - }, - { - "id" : "minecraft:stone_pickaxe" - }, - { - "id" : "minecraft:iron_pickaxe" - }, - { - "id" : "minecraft:golden_pickaxe" - }, - { - "id" : "minecraft:diamond_pickaxe" - }, - { - "id" : "minecraft:netherite_pickaxe" - }, - { - "id" : "minecraft:wooden_shovel" - }, - { - "id" : "minecraft:stone_shovel" - }, - { - "id" : "minecraft:iron_shovel" - }, - { - "id" : "minecraft:golden_shovel" - }, - { - "id" : "minecraft:diamond_shovel" - }, - { - "id" : "minecraft:netherite_shovel" - }, - { - "id" : "minecraft:wooden_hoe" - }, - { - "id" : "minecraft:stone_hoe" - }, - { - "id" : "minecraft:iron_hoe" - }, - { - "id" : "minecraft:golden_hoe" - }, - { - "id" : "minecraft:diamond_hoe" - }, - { - "id" : "minecraft:netherite_hoe" - }, - { - "id" : "minecraft:bow" - }, - { - "id" : "minecraft:crossbow" - }, - { - "id" : "minecraft:arrow" - }, - { - "id" : "minecraft:arrow", - "damage" : 6 - }, - { - "id" : "minecraft:arrow", - "damage" : 7 - }, - { - "id" : "minecraft:arrow", - "damage" : 8 - }, - { - "id" : "minecraft:arrow", - "damage" : 9 - }, - { - "id" : "minecraft:arrow", - "damage" : 10 - }, - { - "id" : "minecraft:arrow", - "damage" : 11 - }, - { - "id" : "minecraft:arrow", - "damage" : 12 - }, - { - "id" : "minecraft:arrow", - "damage" : 13 - }, - { - "id" : "minecraft:arrow", - "damage" : 14 - }, - { - "id" : "minecraft:arrow", - "damage" : 15 - }, - { - "id" : "minecraft:arrow", - "damage" : 16 - }, - { - "id" : "minecraft:arrow", - "damage" : 17 - }, - { - "id" : "minecraft:arrow", - "damage" : 18 - }, - { - "id" : "minecraft:arrow", - "damage" : 19 - }, - { - "id" : "minecraft:arrow", - "damage" : 20 - }, - { - "id" : "minecraft:arrow", - "damage" : 21 - }, - { - "id" : "minecraft:arrow", - "damage" : 22 - }, - { - "id" : "minecraft:arrow", - "damage" : 23 - }, - { - "id" : "minecraft:arrow", - "damage" : 24 - }, - { - "id" : "minecraft:arrow", - "damage" : 25 - }, - { - "id" : "minecraft:arrow", - "damage" : 26 - }, - { - "id" : "minecraft:arrow", - "damage" : 27 - }, - { - "id" : "minecraft:arrow", - "damage" : 28 - }, - { - "id" : "minecraft:arrow", - "damage" : 29 - }, - { - "id" : "minecraft:arrow", - "damage" : 30 - }, - { - "id" : "minecraft:arrow", - "damage" : 31 - }, - { - "id" : "minecraft:arrow", - "damage" : 32 - }, - { - "id" : "minecraft:arrow", - "damage" : 33 - }, - { - "id" : "minecraft:arrow", - "damage" : 34 - }, - { - "id" : "minecraft:arrow", - "damage" : 35 - }, - { - "id" : "minecraft:arrow", - "damage" : 36 - }, - { - "id" : "minecraft:arrow", - "damage" : 37 - }, - { - "id" : "minecraft:arrow", - "damage" : 38 - }, - { - "id" : "minecraft:arrow", - "damage" : 39 - }, - { - "id" : "minecraft:arrow", - "damage" : 40 - }, - { - "id" : "minecraft:arrow", - "damage" : 41 - }, - { - "id" : "minecraft:arrow", - "damage" : 42 - }, - { - "id" : "minecraft:arrow", - "damage" : 43 - }, - { - "id" : "minecraft:shield" - }, - { - "id" : "minecraft:cooked_chicken" - }, - { - "id" : "minecraft:cooked_porkchop" - }, - { - "id" : "minecraft:cooked_beef" - }, - { - "id" : "minecraft:cooked_mutton" - }, - { - "id" : "minecraft:cooked_rabbit" - }, - { - "id" : "minecraft:cooked_cod" - }, - { - "id" : "minecraft:cooked_salmon" - }, - { - "id" : "minecraft:bread" - }, - { - "id" : "minecraft:mushroom_stew" - }, - { - "id" : "minecraft:beetroot_soup" - }, - { - "id" : "minecraft:rabbit_stew" - }, - { - "id" : "minecraft:baked_potato" - }, - { - "id" : "minecraft:cookie" - }, - { - "id" : "minecraft:pumpkin_pie" - }, - { - "id" : "minecraft:cake" - }, - { - "id" : "minecraft:dried_kelp" - }, - { - "id" : "minecraft:fishing_rod" - }, - { - "id" : "minecraft:carrot_on_a_stick" - }, - { - "id" : "minecraft:warped_fungus_on_a_stick" - }, - { - "id" : "minecraft:snowball" - }, - { - "id" : "minecraft:shears" - }, - { - "id" : "minecraft:flint_and_steel" - }, - { - "id" : "minecraft:lead" - }, - { - "id" : "minecraft:clock" - }, - { - "id" : "minecraft:compass" - }, - { - "id" : "minecraft:empty_map" - }, - { - "id" : "minecraft:empty_map", - "damage" : 2 - }, - { - "id" : "minecraft:saddle" - }, - { - "id" : "minecraft:leather_horse_armor" - }, - { - "id" : "minecraft:iron_horse_armor" - }, - { - "id" : "minecraft:golden_horse_armor" - }, - { - "id" : "minecraft:diamond_horse_armor" - }, - { - "id" : "minecraft:trident" - }, - { - "id" : "minecraft:turtle_helmet" - }, - { - "id" : "minecraft:elytra" - }, - { - "id" : "minecraft:totem_of_undying" - }, - { - "id" : "minecraft:glass_bottle" - }, - { - "id" : "minecraft:experience_bottle" - }, - { - "id" : "minecraft:potion" - }, - { - "id" : "minecraft:potion", - "damage" : 1 - }, - { - "id" : "minecraft:potion", - "damage" : 2 - }, - { - "id" : "minecraft:potion", - "damage" : 3 - }, - { - "id" : "minecraft:potion", - "damage" : 4 - }, - { - "id" : "minecraft:potion", - "damage" : 5 - }, - { - "id" : "minecraft:potion", - "damage" : 6 - }, - { - "id" : "minecraft:potion", - "damage" : 7 - }, - { - "id" : "minecraft:potion", - "damage" : 8 - }, - { - "id" : "minecraft:potion", - "damage" : 9 - }, - { - "id" : "minecraft:potion", - "damage" : 10 - }, - { - "id" : "minecraft:potion", - "damage" : 11 - }, - { - "id" : "minecraft:potion", - "damage" : 12 - }, - { - "id" : "minecraft:potion", - "damage" : 13 - }, - { - "id" : "minecraft:potion", - "damage" : 14 - }, - { - "id" : "minecraft:potion", - "damage" : 15 - }, - { - "id" : "minecraft:potion", - "damage" : 16 - }, - { - "id" : "minecraft:potion", - "damage" : 17 - }, - { - "id" : "minecraft:potion", - "damage" : 18 - }, - { - "id" : "minecraft:potion", - "damage" : 19 - }, - { - "id" : "minecraft:potion", - "damage" : 20 - }, - { - "id" : "minecraft:potion", - "damage" : 21 - }, - { - "id" : "minecraft:potion", - "damage" : 22 - }, - { - "id" : "minecraft:potion", - "damage" : 23 - }, - { - "id" : "minecraft:potion", - "damage" : 24 - }, - { - "id" : "minecraft:potion", - "damage" : 25 - }, - { - "id" : "minecraft:potion", - "damage" : 26 - }, - { - "id" : "minecraft:potion", - "damage" : 27 - }, - { - "id" : "minecraft:potion", - "damage" : 28 - }, - { - "id" : "minecraft:potion", - "damage" : 29 - }, - { - "id" : "minecraft:potion", - "damage" : 30 - }, - { - "id" : "minecraft:potion", - "damage" : 31 - }, - { - "id" : "minecraft:potion", - "damage" : 32 - }, - { - "id" : "minecraft:potion", - "damage" : 33 - }, - { - "id" : "minecraft:potion", - "damage" : 34 - }, - { - "id" : "minecraft:potion", - "damage" : 35 - }, - { - "id" : "minecraft:potion", - "damage" : 36 - }, - { - "id" : "minecraft:potion", - "damage" : 37 - }, - { - "id" : "minecraft:potion", - "damage" : 38 - }, - { - "id" : "minecraft:potion", - "damage" : 39 - }, - { - "id" : "minecraft:potion", - "damage" : 40 - }, - { - "id" : "minecraft:potion", - "damage" : 41 - }, - { - "id" : "minecraft:potion", - "damage" : 42 - }, - { - "id" : "minecraft:splash_potion" - }, - { - "id" : "minecraft:splash_potion", - "damage" : 1 - }, - { - "id" : "minecraft:splash_potion", - "damage" : 2 - }, - { - "id" : "minecraft:splash_potion", - "damage" : 3 - }, - { - "id" : "minecraft:splash_potion", - "damage" : 4 - }, - { - "id" : "minecraft:splash_potion", - "damage" : 5 - }, - { - "id" : "minecraft:splash_potion", - "damage" : 6 - }, - { - "id" : "minecraft:splash_potion", - "damage" : 7 - }, - { - "id" : "minecraft:splash_potion", - "damage" : 8 - }, - { - "id" : "minecraft:splash_potion", - "damage" : 9 - }, - { - "id" : "minecraft:splash_potion", - "damage" : 10 - }, - { - "id" : "minecraft:splash_potion", - "damage" : 11 - }, - { - "id" : "minecraft:splash_potion", - "damage" : 12 - }, - { - "id" : "minecraft:splash_potion", - "damage" : 13 - }, - { - "id" : "minecraft:splash_potion", - "damage" : 14 - }, - { - "id" : "minecraft:splash_potion", - "damage" : 15 - }, - { - "id" : "minecraft:splash_potion", - "damage" : 16 - }, - { - "id" : "minecraft:splash_potion", - "damage" : 17 - }, - { - "id" : "minecraft:splash_potion", - "damage" : 18 - }, - { - "id" : "minecraft:splash_potion", - "damage" : 19 - }, - { - "id" : "minecraft:splash_potion", - "damage" : 20 - }, - { - "id" : "minecraft:splash_potion", - "damage" : 21 - }, - { - "id" : "minecraft:splash_potion", - "damage" : 22 - }, - { - "id" : "minecraft:splash_potion", - "damage" : 23 - }, - { - "id" : "minecraft:splash_potion", - "damage" : 24 - }, - { - "id" : "minecraft:splash_potion", - "damage" : 25 - }, - { - "id" : "minecraft:splash_potion", - "damage" : 26 - }, - { - "id" : "minecraft:splash_potion", - "damage" : 27 - }, - { - "id" : "minecraft:splash_potion", - "damage" : 28 - }, - { - "id" : "minecraft:splash_potion", - "damage" : 29 - }, - { - "id" : "minecraft:splash_potion", - "damage" : 30 - }, - { - "id" : "minecraft:splash_potion", - "damage" : 31 - }, - { - "id" : "minecraft:splash_potion", - "damage" : 32 - }, - { - "id" : "minecraft:splash_potion", - "damage" : 33 - }, - { - "id" : "minecraft:splash_potion", - "damage" : 34 - }, - { - "id" : "minecraft:splash_potion", - "damage" : 35 - }, - { - "id" : "minecraft:splash_potion", - "damage" : 36 - }, - { - "id" : "minecraft:splash_potion", - "damage" : 37 - }, - { - "id" : "minecraft:splash_potion", - "damage" : 38 - }, - { - "id" : "minecraft:splash_potion", - "damage" : 39 - }, - { - "id" : "minecraft:splash_potion", - "damage" : 40 - }, - { - "id" : "minecraft:splash_potion", - "damage" : 41 - }, - { - "id" : "minecraft:splash_potion", - "damage" : 42 - }, - { - "id" : "minecraft:lingering_potion" - }, - { - "id" : "minecraft:lingering_potion", - "damage" : 1 - }, - { - "id" : "minecraft:lingering_potion", - "damage" : 2 - }, - { - "id" : "minecraft:lingering_potion", - "damage" : 3 - }, - { - "id" : "minecraft:lingering_potion", - "damage" : 4 - }, - { - "id" : "minecraft:lingering_potion", - "damage" : 5 - }, - { - "id" : "minecraft:lingering_potion", - "damage" : 6 - }, - { - "id" : "minecraft:lingering_potion", - "damage" : 7 - }, - { - "id" : "minecraft:lingering_potion", - "damage" : 8 - }, - { - "id" : "minecraft:lingering_potion", - "damage" : 9 - }, - { - "id" : "minecraft:lingering_potion", - "damage" : 10 - }, - { - "id" : "minecraft:lingering_potion", - "damage" : 11 - }, - { - "id" : "minecraft:lingering_potion", - "damage" : 12 - }, - { - "id" : "minecraft:lingering_potion", - "damage" : 13 - }, - { - "id" : "minecraft:lingering_potion", - "damage" : 14 - }, - { - "id" : "minecraft:lingering_potion", - "damage" : 15 - }, - { - "id" : "minecraft:lingering_potion", - "damage" : 16 - }, - { - "id" : "minecraft:lingering_potion", - "damage" : 17 - }, - { - "id" : "minecraft:lingering_potion", - "damage" : 18 - }, - { - "id" : "minecraft:lingering_potion", - "damage" : 19 - }, - { - "id" : "minecraft:lingering_potion", - "damage" : 20 - }, - { - "id" : "minecraft:lingering_potion", - "damage" : 21 - }, - { - "id" : "minecraft:lingering_potion", - "damage" : 22 - }, - { - "id" : "minecraft:lingering_potion", - "damage" : 23 - }, - { - "id" : "minecraft:lingering_potion", - "damage" : 24 - }, - { - "id" : "minecraft:lingering_potion", - "damage" : 25 - }, - { - "id" : "minecraft:lingering_potion", - "damage" : 26 - }, - { - "id" : "minecraft:lingering_potion", - "damage" : 27 - }, - { - "id" : "minecraft:lingering_potion", - "damage" : 28 - }, - { - "id" : "minecraft:lingering_potion", - "damage" : 29 - }, - { - "id" : "minecraft:lingering_potion", - "damage" : 30 - }, - { - "id" : "minecraft:lingering_potion", - "damage" : 31 - }, - { - "id" : "minecraft:lingering_potion", - "damage" : 32 - }, - { - "id" : "minecraft:lingering_potion", - "damage" : 33 - }, - { - "id" : "minecraft:lingering_potion", - "damage" : 34 - }, - { - "id" : "minecraft:lingering_potion", - "damage" : 35 - }, - { - "id" : "minecraft:lingering_potion", - "damage" : 36 - }, - { - "id" : "minecraft:lingering_potion", - "damage" : 37 - }, - { - "id" : "minecraft:lingering_potion", - "damage" : 38 - }, - { - "id" : "minecraft:lingering_potion", - "damage" : 39 - }, - { - "id" : "minecraft:lingering_potion", - "damage" : 40 - }, - { - "id" : "minecraft:lingering_potion", - "damage" : 41 - }, - { - "id" : "minecraft:lingering_potion", - "damage" : 42 - }, - { - "id" : "minecraft:spyglass" - }, - { - "id" : "minecraft:stick" - }, - { - "id" : "minecraft:bed" - }, - { - "id" : "minecraft:bed", - "damage" : 8 - }, - { - "id" : "minecraft:bed", - "damage" : 7 - }, - { - "id" : "minecraft:bed", - "damage" : 15 - }, - { - "id" : "minecraft:bed", - "damage" : 12 - }, - { - "id" : "minecraft:bed", - "damage" : 14 - }, - { - "id" : "minecraft:bed", - "damage" : 1 - }, - { - "id" : "minecraft:bed", - "damage" : 4 - }, - { - "id" : "minecraft:bed", - "damage" : 5 - }, - { - "id" : "minecraft:bed", - "damage" : 13 - }, - { - "id" : "minecraft:bed", - "damage" : 9 - }, - { - "id" : "minecraft:bed", - "damage" : 3 - }, - { - "id" : "minecraft:bed", - "damage" : 11 - }, - { - "id" : "minecraft:bed", - "damage" : 10 - }, - { - "id" : "minecraft:bed", - "damage" : 2 - }, - { - "id" : "minecraft:bed", - "damage" : 6 - }, - { - "id" : "minecraft:torch", - "blockRuntimeId" : 7111 - }, - { - "id" : "minecraft:soul_torch", - "blockRuntimeId" : 6711 - }, - { - "id" : "minecraft:sea_pickle", - "blockRuntimeId" : 6571 - }, - { - "id" : "minecraft:lantern", - "blockRuntimeId" : 5268 - }, - { - "id" : "minecraft:soul_lantern", - "blockRuntimeId" : 6707 - }, - { - "id" : "minecraft:crafting_table", - "blockRuntimeId" : 3730 - }, - { - "id" : "minecraft:cartography_table", - "blockRuntimeId" : 947 - }, - { - "id" : "minecraft:fletching_table", - "blockRuntimeId" : 4761 - }, - { - "id" : "minecraft:smithing_table", - "blockRuntimeId" : 6633 - }, - { - "id" : "minecraft:beehive", - "blockRuntimeId" : 260 - }, - { - "id" : "minecraft:campfire" - }, - { - "id" : "minecraft:soul_campfire" - }, - { - "id" : "minecraft:furnace", - "blockRuntimeId" : 4813 - }, - { - "id" : "minecraft:blast_furnace", - "blockRuntimeId" : 659 - }, - { - "id" : "minecraft:smoker", - "blockRuntimeId" : 6634 - }, - { - "id" : "minecraft:respawn_anchor", - "blockRuntimeId" : 6522 - }, - { - "id" : "minecraft:brewing_stand" - }, - { - "id" : "minecraft:anvil", - "blockRuntimeId" : 152 - }, - { - "id" : "minecraft:anvil", - "blockRuntimeId" : 156 - }, - { - "id" : "minecraft:anvil", - "blockRuntimeId" : 160 - }, - { - "id" : "minecraft:grindstone", - "blockRuntimeId" : 4937 - }, - { - "id" : "minecraft:enchanting_table", - "blockRuntimeId" : 4668 - }, - { - "id" : "minecraft:bookshelf", - "blockRuntimeId" : 684 - }, - { - "id" : "minecraft:lectern", - "blockRuntimeId" : 5339 - }, - { - "id" : "minecraft:cauldron" - }, - { - "id" : "minecraft:composter", - "blockRuntimeId" : 3594 - }, - { - "id" : "minecraft:chest", - "blockRuntimeId" : 1083 - }, - { - "id" : "minecraft:trapped_chest", - "blockRuntimeId" : 7133 - }, - { - "id" : "minecraft:ender_chest", - "blockRuntimeId" : 4695 - }, - { - "id" : "minecraft:barrel", - "blockRuntimeId" : 201 - }, - { - "id" : "minecraft:undyed_shulker_box", - "blockRuntimeId" : 7216 - }, - { - "id" : "minecraft:shulker_box", - "blockRuntimeId" : 6584 - }, - { - "id" : "minecraft:shulker_box", - "blockRuntimeId" : 6592 - }, - { - "id" : "minecraft:shulker_box", - "blockRuntimeId" : 6591 - }, - { - "id" : "minecraft:shulker_box", - "blockRuntimeId" : 6599 - }, - { - "id" : "minecraft:shulker_box", - "blockRuntimeId" : 6596 - }, - { - "id" : "minecraft:shulker_box", - "blockRuntimeId" : 6598 - }, - { - "id" : "minecraft:shulker_box", - "blockRuntimeId" : 6585 - }, - { - "id" : "minecraft:shulker_box", - "blockRuntimeId" : 6588 - }, - { - "id" : "minecraft:shulker_box", - "blockRuntimeId" : 6589 - }, - { - "id" : "minecraft:shulker_box", - "blockRuntimeId" : 6597 - }, - { - "id" : "minecraft:shulker_box", - "blockRuntimeId" : 6593 - }, - { - "id" : "minecraft:shulker_box", - "blockRuntimeId" : 6587 - }, - { - "id" : "minecraft:shulker_box", - "blockRuntimeId" : 6595 - }, - { - "id" : "minecraft:shulker_box", - "blockRuntimeId" : 6594 - }, - { - "id" : "minecraft:shulker_box", - "blockRuntimeId" : 6586 - }, - { - "id" : "minecraft:shulker_box", - "blockRuntimeId" : 6590 - }, - { - "id" : "minecraft:armor_stand" - }, - { - "id" : "minecraft:noteblock", - "blockRuntimeId" : 5579 - }, - { - "id" : "minecraft:jukebox", - "blockRuntimeId" : 5113 - }, - { - "id" : "minecraft:music_disc_13" - }, - { - "id" : "minecraft:music_disc_cat" - }, - { - "id" : "minecraft:music_disc_blocks" - }, - { - "id" : "minecraft:music_disc_chirp" - }, - { - "id" : "minecraft:music_disc_far" - }, - { - "id" : "minecraft:music_disc_mall" - }, - { - "id" : "minecraft:music_disc_mellohi" - }, - { - "id" : "minecraft:music_disc_stal" - }, - { - "id" : "minecraft:music_disc_strad" - }, - { - "id" : "minecraft:music_disc_ward" - }, - { - "id" : "minecraft:music_disc_11" - }, - { - "id" : "minecraft:music_disc_wait" - }, - { - "id" : "minecraft:music_disc_pigstep" - }, - { - "id" : "minecraft:glowstone_dust" - }, - { - "id" : "minecraft:glowstone", - "blockRuntimeId" : 4899 - }, - { - "id" : "minecraft:redstone_lamp", - "blockRuntimeId" : 6469 - }, - { - "id" : "minecraft:sealantern", - "blockRuntimeId" : 6582 - }, - { - "id" : "minecraft:oak_sign" - }, - { - "id" : "minecraft:spruce_sign" - }, - { - "id" : "minecraft:birch_sign" - }, - { - "id" : "minecraft:jungle_sign" - }, - { - "id" : "minecraft:acacia_sign" - }, - { - "id" : "minecraft:dark_oak_sign" - }, - { - "id" : "minecraft:crimson_sign" - }, - { - "id" : "minecraft:warped_sign" - }, - { - "id" : "minecraft:painting" - }, - { - "id" : "minecraft:frame" - }, - { - "id" : "minecraft:honey_bottle" - }, - { - "id" : "minecraft:flower_pot" - }, - { - "id" : "minecraft:bowl" - }, - { - "id" : "minecraft:bucket" - }, - { - "id" : "minecraft:milk_bucket" - }, - { - "id" : "minecraft:water_bucket" - }, - { - "id" : "minecraft:lava_bucket" - }, - { - "id" : "minecraft:cod_bucket" - }, - { - "id" : "minecraft:salmon_bucket" - }, - { - "id" : "minecraft:tropical_fish_bucket" - }, - { - "id" : "minecraft:pufferfish_bucket" - }, - { - "id" : "minecraft:powder_snow_bucket" - }, - { - "id" : "minecraft:axolotl_bucket" - }, - { - "id" : "minecraft:glow_frame" - }, - { - "id" : "minecraft:skull", - "damage" : 3 - }, - { - "id" : "minecraft:skull", - "damage" : 2 - }, - { - "id" : "minecraft:skull", - "damage" : 4 - }, - { - "id" : "minecraft:skull", - "damage" : 5 - }, - { - "id" : "minecraft:skull" - }, - { - "id" : "minecraft:skull", - "damage" : 1 - }, - { - "id" : "minecraft:beacon", - "blockRuntimeId" : 217 - }, - { - "id" : "minecraft:bell", - "blockRuntimeId" : 292 - }, - { - "id" : "minecraft:conduit", - "blockRuntimeId" : 3635 - }, - { - "id" : "minecraft:stonecutter_block", - "blockRuntimeId" : 7049 - }, - { - "id" : "minecraft:end_portal_frame", - "blockRuntimeId" : 4680 - }, - { - "id" : "minecraft:coal" - }, - { - "id" : "minecraft:charcoal" - }, - { - "id" : "minecraft:diamond" - }, - { - "id" : "minecraft:iron_nugget" - }, - { - "id" : "minecraft:raw_iron" - }, - { - "id" : "minecraft:raw_gold" - }, - { - "id" : "minecraft:raw_copper" - }, - { - "id" : "minecraft:copper_ingot" - }, - { - "id" : "minecraft:iron_ingot" - }, - { - "id" : "minecraft:netherite_scrap" - }, - { - "id" : "minecraft:netherite_ingot" - }, - { - "id" : "minecraft:gold_nugget" - }, - { - "id" : "minecraft:gold_ingot" - }, - { - "id" : "minecraft:emerald" - }, - { - "id" : "minecraft:quartz" - }, - { - "id" : "minecraft:clay_ball" - }, - { - "id" : "minecraft:brick" - }, - { - "id" : "minecraft:netherbrick" - }, - { - "id" : "minecraft:prismarine_shard" - }, - { - "id" : "minecraft:amethyst_shard" - }, - { - "id" : "minecraft:prismarine_crystals" - }, - { - "id" : "minecraft:nautilus_shell" - }, - { - "id" : "minecraft:heart_of_the_sea" - }, - { - "id" : "minecraft:scute" - }, - { - "id" : "minecraft:phantom_membrane" - }, - { - "id" : "minecraft:string" - }, - { - "id" : "minecraft:feather" - }, - { - "id" : "minecraft:flint" - }, - { - "id" : "minecraft:gunpowder" - }, - { - "id" : "minecraft:leather" - }, - { - "id" : "minecraft:rabbit_hide" - }, - { - "id" : "minecraft:rabbit_foot" - }, - { - "id" : "minecraft:fire_charge" - }, - { - "id" : "minecraft:blaze_rod" - }, - { - "id" : "minecraft:blaze_powder" - }, - { - "id" : "minecraft:magma_cream" - }, - { - "id" : "minecraft:fermented_spider_eye" - }, - { - "id" : "minecraft:dragon_breath" - }, - { - "id" : "minecraft:shulker_shell" - }, - { - "id" : "minecraft:ghast_tear" - }, - { - "id" : "minecraft:slime_ball" - }, - { - "id" : "minecraft:ender_pearl" - }, - { - "id" : "minecraft:ender_eye" - }, - { - "id" : "minecraft:nether_star" - }, - { - "id" : "minecraft:end_rod", - "blockRuntimeId" : 4688 - }, - { - "id" : "minecraft:lightning_rod", - "blockRuntimeId" : 5401 - }, - { - "id" : "minecraft:end_crystal" - }, - { - "id" : "minecraft:paper" - }, - { - "id" : "minecraft:book" - }, - { - "id" : "minecraft:writable_book" - }, - { - "id" : "minecraft:enchanted_book", - "nbt_b64" : "CgAACQQAZW5jaAoBAAAAAgIAaWQAAAIDAGx2bAEAAAA=" - }, - { - "id" : "minecraft:enchanted_book", - "nbt_b64" : "CgAACQQAZW5jaAoBAAAAAgIAaWQAAAIDAGx2bAIAAAA=" - }, - { - "id" : "minecraft:enchanted_book", - "nbt_b64" : "CgAACQQAZW5jaAoBAAAAAgIAaWQAAAIDAGx2bAMAAAA=" - }, - { - "id" : "minecraft:enchanted_book", - "nbt_b64" : "CgAACQQAZW5jaAoBAAAAAgIAaWQAAAIDAGx2bAQAAAA=" - }, - { - "id" : "minecraft:enchanted_book", - "nbt_b64" : "CgAACQQAZW5jaAoBAAAAAgIAaWQBAAIDAGx2bAEAAAA=" - }, - { - "id" : "minecraft:enchanted_book", - "nbt_b64" : "CgAACQQAZW5jaAoBAAAAAgIAaWQBAAIDAGx2bAIAAAA=" - }, - { - "id" : "minecraft:enchanted_book", - "nbt_b64" : "CgAACQQAZW5jaAoBAAAAAgIAaWQBAAIDAGx2bAMAAAA=" - }, - { - "id" : "minecraft:enchanted_book", - "nbt_b64" : "CgAACQQAZW5jaAoBAAAAAgIAaWQBAAIDAGx2bAQAAAA=" - }, - { - "id" : "minecraft:enchanted_book", - "nbt_b64" : "CgAACQQAZW5jaAoBAAAAAgIAaWQCAAIDAGx2bAEAAAA=" - }, - { - "id" : "minecraft:enchanted_book", - "nbt_b64" : "CgAACQQAZW5jaAoBAAAAAgIAaWQCAAIDAGx2bAIAAAA=" - }, - { - "id" : "minecraft:enchanted_book", - "nbt_b64" : "CgAACQQAZW5jaAoBAAAAAgIAaWQCAAIDAGx2bAMAAAA=" - }, - { - "id" : "minecraft:enchanted_book", - "nbt_b64" : "CgAACQQAZW5jaAoBAAAAAgIAaWQCAAIDAGx2bAQAAAA=" - }, - { - "id" : "minecraft:enchanted_book", - "nbt_b64" : "CgAACQQAZW5jaAoBAAAAAgIAaWQDAAIDAGx2bAEAAAA=" - }, - { - "id" : "minecraft:enchanted_book", - "nbt_b64" : "CgAACQQAZW5jaAoBAAAAAgIAaWQDAAIDAGx2bAIAAAA=" - }, - { - "id" : "minecraft:enchanted_book", - "nbt_b64" : "CgAACQQAZW5jaAoBAAAAAgIAaWQDAAIDAGx2bAMAAAA=" - }, - { - "id" : "minecraft:enchanted_book", - "nbt_b64" : "CgAACQQAZW5jaAoBAAAAAgIAaWQDAAIDAGx2bAQAAAA=" - }, - { - "id" : "minecraft:enchanted_book", - "nbt_b64" : "CgAACQQAZW5jaAoBAAAAAgIAaWQEAAIDAGx2bAEAAAA=" - }, - { - "id" : "minecraft:enchanted_book", - "nbt_b64" : "CgAACQQAZW5jaAoBAAAAAgIAaWQEAAIDAGx2bAIAAAA=" - }, - { - "id" : "minecraft:enchanted_book", - "nbt_b64" : "CgAACQQAZW5jaAoBAAAAAgIAaWQEAAIDAGx2bAMAAAA=" - }, - { - "id" : "minecraft:enchanted_book", - "nbt_b64" : "CgAACQQAZW5jaAoBAAAAAgIAaWQEAAIDAGx2bAQAAAA=" - }, - { - "id" : "minecraft:enchanted_book", - "nbt_b64" : "CgAACQQAZW5jaAoBAAAAAgIAaWQFAAIDAGx2bAEAAAA=" - }, - { - "id" : "minecraft:enchanted_book", - "nbt_b64" : "CgAACQQAZW5jaAoBAAAAAgIAaWQFAAIDAGx2bAIAAAA=" - }, - { - "id" : "minecraft:enchanted_book", - "nbt_b64" : "CgAACQQAZW5jaAoBAAAAAgIAaWQFAAIDAGx2bAMAAAA=" - }, - { - "id" : "minecraft:enchanted_book", - "nbt_b64" : "CgAACQQAZW5jaAoBAAAAAgIAaWQGAAIDAGx2bAEAAAA=" - }, - { - "id" : "minecraft:enchanted_book", - "nbt_b64" : "CgAACQQAZW5jaAoBAAAAAgIAaWQGAAIDAGx2bAIAAAA=" - }, - { - "id" : "minecraft:enchanted_book", - "nbt_b64" : "CgAACQQAZW5jaAoBAAAAAgIAaWQGAAIDAGx2bAMAAAA=" - }, - { - "id" : "minecraft:enchanted_book", - "nbt_b64" : "CgAACQQAZW5jaAoBAAAAAgIAaWQHAAIDAGx2bAEAAAA=" - }, - { - "id" : "minecraft:enchanted_book", - "nbt_b64" : "CgAACQQAZW5jaAoBAAAAAgIAaWQHAAIDAGx2bAIAAAA=" - }, - { - "id" : "minecraft:enchanted_book", - "nbt_b64" : "CgAACQQAZW5jaAoBAAAAAgIAaWQHAAIDAGx2bAMAAAA=" - }, - { - "id" : "minecraft:enchanted_book", - "nbt_b64" : "CgAACQQAZW5jaAoBAAAAAgIAaWQIAAIDAGx2bAEAAAA=" - }, - { - "id" : "minecraft:enchanted_book", - "nbt_b64" : "CgAACQQAZW5jaAoBAAAAAgIAaWQJAAIDAGx2bAEAAAA=" - }, - { - "id" : "minecraft:enchanted_book", - "nbt_b64" : "CgAACQQAZW5jaAoBAAAAAgIAaWQJAAIDAGx2bAIAAAA=" - }, - { - "id" : "minecraft:enchanted_book", - "nbt_b64" : "CgAACQQAZW5jaAoBAAAAAgIAaWQJAAIDAGx2bAMAAAA=" - }, - { - "id" : "minecraft:enchanted_book", - "nbt_b64" : "CgAACQQAZW5jaAoBAAAAAgIAaWQJAAIDAGx2bAQAAAA=" - }, - { - "id" : "minecraft:enchanted_book", - "nbt_b64" : "CgAACQQAZW5jaAoBAAAAAgIAaWQJAAIDAGx2bAUAAAA=" - }, - { - "id" : "minecraft:enchanted_book", - "nbt_b64" : "CgAACQQAZW5jaAoBAAAAAgIAaWQKAAIDAGx2bAEAAAA=" - }, - { - "id" : "minecraft:enchanted_book", - "nbt_b64" : "CgAACQQAZW5jaAoBAAAAAgIAaWQKAAIDAGx2bAIAAAA=" - }, - { - "id" : "minecraft:enchanted_book", - "nbt_b64" : "CgAACQQAZW5jaAoBAAAAAgIAaWQKAAIDAGx2bAMAAAA=" - }, - { - "id" : "minecraft:enchanted_book", - "nbt_b64" : "CgAACQQAZW5jaAoBAAAAAgIAaWQKAAIDAGx2bAQAAAA=" - }, - { - "id" : "minecraft:enchanted_book", - "nbt_b64" : "CgAACQQAZW5jaAoBAAAAAgIAaWQKAAIDAGx2bAUAAAA=" - }, - { - "id" : "minecraft:enchanted_book", - "nbt_b64" : "CgAACQQAZW5jaAoBAAAAAgIAaWQLAAIDAGx2bAEAAAA=" - }, - { - "id" : "minecraft:enchanted_book", - "nbt_b64" : "CgAACQQAZW5jaAoBAAAAAgIAaWQLAAIDAGx2bAIAAAA=" - }, - { - "id" : "minecraft:enchanted_book", - "nbt_b64" : "CgAACQQAZW5jaAoBAAAAAgIAaWQLAAIDAGx2bAMAAAA=" - }, - { - "id" : "minecraft:enchanted_book", - "nbt_b64" : "CgAACQQAZW5jaAoBAAAAAgIAaWQLAAIDAGx2bAQAAAA=" - }, - { - "id" : "minecraft:enchanted_book", - "nbt_b64" : "CgAACQQAZW5jaAoBAAAAAgIAaWQLAAIDAGx2bAUAAAA=" - }, - { - "id" : "minecraft:enchanted_book", - "nbt_b64" : "CgAACQQAZW5jaAoBAAAAAgIAaWQMAAIDAGx2bAEAAAA=" - }, - { - "id" : "minecraft:enchanted_book", - "nbt_b64" : "CgAACQQAZW5jaAoBAAAAAgIAaWQMAAIDAGx2bAIAAAA=" - }, - { - "id" : "minecraft:enchanted_book", - "nbt_b64" : "CgAACQQAZW5jaAoBAAAAAgIAaWQNAAIDAGx2bAEAAAA=" - }, - { - "id" : "minecraft:enchanted_book", - "nbt_b64" : "CgAACQQAZW5jaAoBAAAAAgIAaWQNAAIDAGx2bAIAAAA=" - }, - { - "id" : "minecraft:enchanted_book", - "nbt_b64" : "CgAACQQAZW5jaAoBAAAAAgIAaWQOAAIDAGx2bAEAAAA=" - }, - { - "id" : "minecraft:enchanted_book", - "nbt_b64" : "CgAACQQAZW5jaAoBAAAAAgIAaWQOAAIDAGx2bAIAAAA=" - }, - { - "id" : "minecraft:enchanted_book", - "nbt_b64" : "CgAACQQAZW5jaAoBAAAAAgIAaWQOAAIDAGx2bAMAAAA=" - }, - { - "id" : "minecraft:enchanted_book", - "nbt_b64" : "CgAACQQAZW5jaAoBAAAAAgIAaWQPAAIDAGx2bAEAAAA=" - }, - { - "id" : "minecraft:enchanted_book", - "nbt_b64" : "CgAACQQAZW5jaAoBAAAAAgIAaWQPAAIDAGx2bAIAAAA=" - }, - { - "id" : "minecraft:enchanted_book", - "nbt_b64" : "CgAACQQAZW5jaAoBAAAAAgIAaWQPAAIDAGx2bAMAAAA=" - }, - { - "id" : "minecraft:enchanted_book", - "nbt_b64" : "CgAACQQAZW5jaAoBAAAAAgIAaWQPAAIDAGx2bAQAAAA=" - }, - { - "id" : "minecraft:enchanted_book", - "nbt_b64" : "CgAACQQAZW5jaAoBAAAAAgIAaWQPAAIDAGx2bAUAAAA=" - }, - { - "id" : "minecraft:enchanted_book", - "nbt_b64" : "CgAACQQAZW5jaAoBAAAAAgIAaWQQAAIDAGx2bAEAAAA=" - }, - { - "id" : "minecraft:enchanted_book", - "nbt_b64" : "CgAACQQAZW5jaAoBAAAAAgIAaWQRAAIDAGx2bAEAAAA=" - }, - { - "id" : "minecraft:enchanted_book", - "nbt_b64" : "CgAACQQAZW5jaAoBAAAAAgIAaWQRAAIDAGx2bAIAAAA=" - }, - { - "id" : "minecraft:enchanted_book", - "nbt_b64" : "CgAACQQAZW5jaAoBAAAAAgIAaWQRAAIDAGx2bAMAAAA=" - }, - { - "id" : "minecraft:enchanted_book", - "nbt_b64" : "CgAACQQAZW5jaAoBAAAAAgIAaWQSAAIDAGx2bAEAAAA=" - }, - { - "id" : "minecraft:enchanted_book", - "nbt_b64" : "CgAACQQAZW5jaAoBAAAAAgIAaWQSAAIDAGx2bAIAAAA=" - }, - { - "id" : "minecraft:enchanted_book", - "nbt_b64" : "CgAACQQAZW5jaAoBAAAAAgIAaWQSAAIDAGx2bAMAAAA=" - }, - { - "id" : "minecraft:enchanted_book", - "nbt_b64" : "CgAACQQAZW5jaAoBAAAAAgIAaWQTAAIDAGx2bAEAAAA=" - }, - { - "id" : "minecraft:enchanted_book", - "nbt_b64" : "CgAACQQAZW5jaAoBAAAAAgIAaWQTAAIDAGx2bAIAAAA=" - }, - { - "id" : "minecraft:enchanted_book", - "nbt_b64" : "CgAACQQAZW5jaAoBAAAAAgIAaWQTAAIDAGx2bAMAAAA=" - }, - { - "id" : "minecraft:enchanted_book", - "nbt_b64" : "CgAACQQAZW5jaAoBAAAAAgIAaWQTAAIDAGx2bAQAAAA=" - }, - { - "id" : "minecraft:enchanted_book", - "nbt_b64" : "CgAACQQAZW5jaAoBAAAAAgIAaWQTAAIDAGx2bAUAAAA=" - }, - { - "id" : "minecraft:enchanted_book", - "nbt_b64" : "CgAACQQAZW5jaAoBAAAAAgIAaWQUAAIDAGx2bAEAAAA=" - }, - { - "id" : "minecraft:enchanted_book", - "nbt_b64" : "CgAACQQAZW5jaAoBAAAAAgIAaWQUAAIDAGx2bAIAAAA=" - }, - { - "id" : "minecraft:enchanted_book", - "nbt_b64" : "CgAACQQAZW5jaAoBAAAAAgIAaWQVAAIDAGx2bAEAAAA=" - }, - { - "id" : "minecraft:enchanted_book", - "nbt_b64" : "CgAACQQAZW5jaAoBAAAAAgIAaWQWAAIDAGx2bAEAAAA=" - }, - { - "id" : "minecraft:enchanted_book", - "nbt_b64" : "CgAACQQAZW5jaAoBAAAAAgIAaWQXAAIDAGx2bAEAAAA=" - }, - { - "id" : "minecraft:enchanted_book", - "nbt_b64" : "CgAACQQAZW5jaAoBAAAAAgIAaWQXAAIDAGx2bAIAAAA=" - }, - { - "id" : "minecraft:enchanted_book", - "nbt_b64" : "CgAACQQAZW5jaAoBAAAAAgIAaWQXAAIDAGx2bAMAAAA=" - }, - { - "id" : "minecraft:enchanted_book", - "nbt_b64" : "CgAACQQAZW5jaAoBAAAAAgIAaWQYAAIDAGx2bAEAAAA=" - }, - { - "id" : "minecraft:enchanted_book", - "nbt_b64" : "CgAACQQAZW5jaAoBAAAAAgIAaWQYAAIDAGx2bAIAAAA=" - }, - { - "id" : "minecraft:enchanted_book", - "nbt_b64" : "CgAACQQAZW5jaAoBAAAAAgIAaWQYAAIDAGx2bAMAAAA=" - }, - { - "id" : "minecraft:enchanted_book", - "nbt_b64" : "CgAACQQAZW5jaAoBAAAAAgIAaWQZAAIDAGx2bAEAAAA=" - }, - { - "id" : "minecraft:enchanted_book", - "nbt_b64" : "CgAACQQAZW5jaAoBAAAAAgIAaWQZAAIDAGx2bAIAAAA=" - }, - { - "id" : "minecraft:enchanted_book", - "nbt_b64" : "CgAACQQAZW5jaAoBAAAAAgIAaWQaAAIDAGx2bAEAAAA=" - }, - { - "id" : "minecraft:enchanted_book", - "nbt_b64" : "CgAACQQAZW5jaAoBAAAAAgIAaWQbAAIDAGx2bAEAAAA=" - }, - { - "id" : "minecraft:enchanted_book", - "nbt_b64" : "CgAACQQAZW5jaAoBAAAAAgIAaWQcAAIDAGx2bAEAAAA=" - }, - { - "id" : "minecraft:enchanted_book", - "nbt_b64" : "CgAACQQAZW5jaAoBAAAAAgIAaWQdAAIDAGx2bAEAAAA=" - }, - { - "id" : "minecraft:enchanted_book", - "nbt_b64" : "CgAACQQAZW5jaAoBAAAAAgIAaWQdAAIDAGx2bAIAAAA=" - }, - { - "id" : "minecraft:enchanted_book", - "nbt_b64" : "CgAACQQAZW5jaAoBAAAAAgIAaWQdAAIDAGx2bAMAAAA=" - }, - { - "id" : "minecraft:enchanted_book", - "nbt_b64" : "CgAACQQAZW5jaAoBAAAAAgIAaWQdAAIDAGx2bAQAAAA=" - }, - { - "id" : "minecraft:enchanted_book", - "nbt_b64" : "CgAACQQAZW5jaAoBAAAAAgIAaWQdAAIDAGx2bAUAAAA=" - }, - { - "id" : "minecraft:enchanted_book", - "nbt_b64" : "CgAACQQAZW5jaAoBAAAAAgIAaWQeAAIDAGx2bAEAAAA=" - }, - { - "id" : "minecraft:enchanted_book", - "nbt_b64" : "CgAACQQAZW5jaAoBAAAAAgIAaWQeAAIDAGx2bAIAAAA=" - }, - { - "id" : "minecraft:enchanted_book", - "nbt_b64" : "CgAACQQAZW5jaAoBAAAAAgIAaWQeAAIDAGx2bAMAAAA=" - }, - { - "id" : "minecraft:enchanted_book", - "nbt_b64" : "CgAACQQAZW5jaAoBAAAAAgIAaWQfAAIDAGx2bAEAAAA=" - }, - { - "id" : "minecraft:enchanted_book", - "nbt_b64" : "CgAACQQAZW5jaAoBAAAAAgIAaWQfAAIDAGx2bAIAAAA=" - }, - { - "id" : "minecraft:enchanted_book", - "nbt_b64" : "CgAACQQAZW5jaAoBAAAAAgIAaWQfAAIDAGx2bAMAAAA=" - }, - { - "id" : "minecraft:enchanted_book", - "nbt_b64" : "CgAACQQAZW5jaAoBAAAAAgIAaWQgAAIDAGx2bAEAAAA=" - }, - { - "id" : "minecraft:enchanted_book", - "nbt_b64" : "CgAACQQAZW5jaAoBAAAAAgIAaWQhAAIDAGx2bAEAAAA=" - }, - { - "id" : "minecraft:enchanted_book", - "nbt_b64" : "CgAACQQAZW5jaAoBAAAAAgIAaWQiAAIDAGx2bAEAAAA=" - }, - { - "id" : "minecraft:enchanted_book", - "nbt_b64" : "CgAACQQAZW5jaAoBAAAAAgIAaWQiAAIDAGx2bAIAAAA=" - }, - { - "id" : "minecraft:enchanted_book", - "nbt_b64" : "CgAACQQAZW5jaAoBAAAAAgIAaWQiAAIDAGx2bAMAAAA=" - }, - { - "id" : "minecraft:enchanted_book", - "nbt_b64" : "CgAACQQAZW5jaAoBAAAAAgIAaWQiAAIDAGx2bAQAAAA=" - }, - { - "id" : "minecraft:enchanted_book", - "nbt_b64" : "CgAACQQAZW5jaAoBAAAAAgIAaWQjAAIDAGx2bAEAAAA=" - }, - { - "id" : "minecraft:enchanted_book", - "nbt_b64" : "CgAACQQAZW5jaAoBAAAAAgIAaWQjAAIDAGx2bAIAAAA=" - }, - { - "id" : "minecraft:enchanted_book", - "nbt_b64" : "CgAACQQAZW5jaAoBAAAAAgIAaWQjAAIDAGx2bAMAAAA=" - }, - { - "id" : "minecraft:enchanted_book", - "nbt_b64" : "CgAACQQAZW5jaAoBAAAAAgIAaWQkAAIDAGx2bAEAAAA=" - }, - { - "id" : "minecraft:enchanted_book", - "nbt_b64" : "CgAACQQAZW5jaAoBAAAAAgIAaWQkAAIDAGx2bAIAAAA=" - }, - { - "id" : "minecraft:enchanted_book", - "nbt_b64" : "CgAACQQAZW5jaAoBAAAAAgIAaWQkAAIDAGx2bAMAAAA=" - }, - { - "id" : "minecraft:oak_boat" - }, - { - "id" : "minecraft:spruce_boat" - }, - { - "id" : "minecraft:birch_boat" - }, - { - "id" : "minecraft:jungle_boat" - }, - { - "id" : "minecraft:acacia_boat" - }, - { - "id" : "minecraft:dark_oak_boat" - }, - { - "id" : "minecraft:rail", - "blockRuntimeId" : 6400 - }, - { - "id" : "minecraft:golden_rail", - "blockRuntimeId" : 4902 - }, - { - "id" : "minecraft:detector_rail", - "blockRuntimeId" : 4411 - }, - { - "id" : "minecraft:activator_rail", - "blockRuntimeId" : 122 - }, - { - "id" : "minecraft:minecart" - }, - { - "id" : "minecraft:chest_minecart" - }, - { - "id" : "minecraft:hopper_minecart" - }, - { - "id" : "minecraft:tnt_minecart" - }, - { - "id" : "minecraft:redstone" - }, - { - "id" : "minecraft:redstone_block", - "blockRuntimeId" : 6468 - }, - { - "id" : "minecraft:redstone_torch", - "blockRuntimeId" : 6471 - }, - { - "id" : "minecraft:lever", - "blockRuntimeId" : 5347 - }, - { - "id" : "minecraft:wooden_button", - "blockRuntimeId" : 7587 - }, - { - "id" : "minecraft:spruce_button", - "blockRuntimeId" : 6720 - }, - { - "id" : "minecraft:birch_button", - "blockRuntimeId" : 356 - }, - { - "id" : "minecraft:jungle_button", - "blockRuntimeId" : 5114 - }, - { - "id" : "minecraft:acacia_button" - }, - { - "id" : "minecraft:dark_oak_button", - "blockRuntimeId" : 3886 - }, - { - "id" : "minecraft:stone_button", - "blockRuntimeId" : 6949 - }, - { - "id" : "minecraft:crimson_button", - "blockRuntimeId" : 3731 - }, - { - "id" : "minecraft:warped_button", - "blockRuntimeId" : 7284 - }, - { - "id" : "minecraft:polished_blackstone_button", - "blockRuntimeId" : 5844 - }, - { - "id" : "minecraft:tripwire_hook", - "blockRuntimeId" : 7155 - }, - { - "id" : "minecraft:wooden_pressure_plate", - "blockRuntimeId" : 7631 - }, - { - "id" : "minecraft:spruce_pressure_plate", - "blockRuntimeId" : 6780 - }, - { - "id" : "minecraft:birch_pressure_plate", - "blockRuntimeId" : 416 - }, - { - "id" : "minecraft:jungle_pressure_plate", - "blockRuntimeId" : 5174 - }, - { - "id" : "minecraft:acacia_pressure_plate", - "blockRuntimeId" : 60 - }, - { - "id" : "minecraft:dark_oak_pressure_plate", - "blockRuntimeId" : 3946 - }, - { - "id" : "minecraft:crimson_pressure_plate", - "blockRuntimeId" : 3800 - }, - { - "id" : "minecraft:warped_pressure_plate", - "blockRuntimeId" : 7353 - }, - { - "id" : "minecraft:stone_pressure_plate", - "blockRuntimeId" : 6961 - }, - { - "id" : "minecraft:light_weighted_pressure_plate", - "blockRuntimeId" : 5385 - }, - { - "id" : "minecraft:heavy_weighted_pressure_plate", - "blockRuntimeId" : 5001 - }, - { - "id" : "minecraft:polished_blackstone_pressure_plate", - "blockRuntimeId" : 5858 - }, - { - "id" : "minecraft:observer", - "blockRuntimeId" : 5588 - }, - { - "id" : "minecraft:daylight_detector", - "blockRuntimeId" : 4016 - }, - { - "id" : "minecraft:repeater" - }, - { - "id" : "minecraft:comparator" - }, - { - "id" : "minecraft:hopper" - }, - { - "id" : "minecraft:dropper", - "blockRuntimeId" : 4538 - }, - { - "id" : "minecraft:dispenser", - "blockRuntimeId" : 4439 - }, - { - "id" : "minecraft:piston", - "blockRuntimeId" : 5629 - }, - { - "id" : "minecraft:sticky_piston", - "blockRuntimeId" : 6923 - }, - { - "id" : "minecraft:tnt", - "blockRuntimeId" : 7107 - }, - { - "id" : "minecraft:name_tag" - }, - { - "id" : "minecraft:loom", - "blockRuntimeId" : 5457 - }, - { - "id" : "minecraft:banner" - }, - { - "id" : "minecraft:banner", - "damage" : 8 - }, - { - "id" : "minecraft:banner", - "damage" : 7 - }, - { - "id" : "minecraft:banner", - "damage" : 15 - }, - { - "id" : "minecraft:banner", - "damage" : 12 - }, - { - "id" : "minecraft:banner", - "damage" : 14 - }, - { - "id" : "minecraft:banner", - "damage" : 1 - }, - { - "id" : "minecraft:banner", - "damage" : 4 - }, - { - "id" : "minecraft:banner", - "damage" : 5 - }, - { - "id" : "minecraft:banner", - "damage" : 13 - }, - { - "id" : "minecraft:banner", - "damage" : 9 - }, - { - "id" : "minecraft:banner", - "damage" : 3 - }, - { - "id" : "minecraft:banner", - "damage" : 11 - }, - { - "id" : "minecraft:banner", - "damage" : 10 - }, - { - "id" : "minecraft:banner", - "damage" : 2 - }, - { - "id" : "minecraft:banner", - "damage" : 6 - }, - { - "id" : "minecraft:banner", - "damage" : 15, - "nbt_b64" : "CgAAAwQAVHlwZQEAAAAA" - }, - { - "id" : "minecraft:creeper_banner_pattern" - }, - { - "id" : "minecraft:skull_banner_pattern" - }, - { - "id" : "minecraft:flower_banner_pattern" - }, - { - "id" : "minecraft:mojang_banner_pattern" - }, - { - "id" : "minecraft:field_masoned_banner_pattern" - }, - { - "id" : "minecraft:bordure_indented_banner_pattern" - }, - { - "id" : "minecraft:piglin_banner_pattern" - }, - { - "id" : "minecraft:firework_rocket", - "nbt_b64" : "CgAACgkARmlyZXdvcmtzCQoARXhwbG9zaW9ucwAAAAAAAQYARmxpZ2h0AQAA" - }, - { - "id" : "minecraft:firework_rocket", - "nbt_b64" : "CgAACgkARmlyZXdvcmtzCQoARXhwbG9zaW9ucwoBAAAABw0ARmlyZXdvcmtDb2xvcgEAAAAABwwARmlyZXdvcmtGYWRlAAAAAAEPAEZpcmV3b3JrRmxpY2tlcgABDQBGaXJld29ya1RyYWlsAAEMAEZpcmV3b3JrVHlwZQAAAQYARmxpZ2h0AQAA" - }, - { - "id" : "minecraft:firework_rocket", - "nbt_b64" : "CgAACgkARmlyZXdvcmtzCQoARXhwbG9zaW9ucwoBAAAABw0ARmlyZXdvcmtDb2xvcgEAAAAIBwwARmlyZXdvcmtGYWRlAAAAAAEPAEZpcmV3b3JrRmxpY2tlcgABDQBGaXJld29ya1RyYWlsAAEMAEZpcmV3b3JrVHlwZQAAAQYARmxpZ2h0AQAA" - }, - { - "id" : "minecraft:firework_rocket", - "nbt_b64" : "CgAACgkARmlyZXdvcmtzCQoARXhwbG9zaW9ucwoBAAAABw0ARmlyZXdvcmtDb2xvcgEAAAAHBwwARmlyZXdvcmtGYWRlAAAAAAEPAEZpcmV3b3JrRmxpY2tlcgABDQBGaXJld29ya1RyYWlsAAEMAEZpcmV3b3JrVHlwZQAAAQYARmxpZ2h0AQAA" - }, - { - "id" : "minecraft:firework_rocket", - "nbt_b64" : "CgAACgkARmlyZXdvcmtzCQoARXhwbG9zaW9ucwoBAAAABw0ARmlyZXdvcmtDb2xvcgEAAAAPBwwARmlyZXdvcmtGYWRlAAAAAAEPAEZpcmV3b3JrRmxpY2tlcgABDQBGaXJld29ya1RyYWlsAAEMAEZpcmV3b3JrVHlwZQAAAQYARmxpZ2h0AQAA" - }, - { - "id" : "minecraft:firework_rocket", - "nbt_b64" : "CgAACgkARmlyZXdvcmtzCQoARXhwbG9zaW9ucwoBAAAABw0ARmlyZXdvcmtDb2xvcgEAAAAMBwwARmlyZXdvcmtGYWRlAAAAAAEPAEZpcmV3b3JrRmxpY2tlcgABDQBGaXJld29ya1RyYWlsAAEMAEZpcmV3b3JrVHlwZQAAAQYARmxpZ2h0AQAA" - }, - { - "id" : "minecraft:firework_rocket", - "nbt_b64" : "CgAACgkARmlyZXdvcmtzCQoARXhwbG9zaW9ucwoBAAAABw0ARmlyZXdvcmtDb2xvcgEAAAAOBwwARmlyZXdvcmtGYWRlAAAAAAEPAEZpcmV3b3JrRmxpY2tlcgABDQBGaXJld29ya1RyYWlsAAEMAEZpcmV3b3JrVHlwZQAAAQYARmxpZ2h0AQAA" - }, - { - "id" : "minecraft:firework_rocket", - "nbt_b64" : "CgAACgkARmlyZXdvcmtzCQoARXhwbG9zaW9ucwoBAAAABw0ARmlyZXdvcmtDb2xvcgEAAAABBwwARmlyZXdvcmtGYWRlAAAAAAEPAEZpcmV3b3JrRmxpY2tlcgABDQBGaXJld29ya1RyYWlsAAEMAEZpcmV3b3JrVHlwZQAAAQYARmxpZ2h0AQAA" - }, - { - "id" : "minecraft:firework_rocket", - "nbt_b64" : "CgAACgkARmlyZXdvcmtzCQoARXhwbG9zaW9ucwoBAAAABw0ARmlyZXdvcmtDb2xvcgEAAAAEBwwARmlyZXdvcmtGYWRlAAAAAAEPAEZpcmV3b3JrRmxpY2tlcgABDQBGaXJld29ya1RyYWlsAAEMAEZpcmV3b3JrVHlwZQAAAQYARmxpZ2h0AQAA" - }, - { - "id" : "minecraft:firework_rocket", - "nbt_b64" : "CgAACgkARmlyZXdvcmtzCQoARXhwbG9zaW9ucwoBAAAABw0ARmlyZXdvcmtDb2xvcgEAAAAFBwwARmlyZXdvcmtGYWRlAAAAAAEPAEZpcmV3b3JrRmxpY2tlcgABDQBGaXJld29ya1RyYWlsAAEMAEZpcmV3b3JrVHlwZQAAAQYARmxpZ2h0AQAA" - }, - { - "id" : "minecraft:firework_rocket", - "nbt_b64" : "CgAACgkARmlyZXdvcmtzCQoARXhwbG9zaW9ucwoBAAAABw0ARmlyZXdvcmtDb2xvcgEAAAANBwwARmlyZXdvcmtGYWRlAAAAAAEPAEZpcmV3b3JrRmxpY2tlcgABDQBGaXJld29ya1RyYWlsAAEMAEZpcmV3b3JrVHlwZQAAAQYARmxpZ2h0AQAA" - }, - { - "id" : "minecraft:firework_rocket", - "nbt_b64" : "CgAACgkARmlyZXdvcmtzCQoARXhwbG9zaW9ucwoBAAAABw0ARmlyZXdvcmtDb2xvcgEAAAAJBwwARmlyZXdvcmtGYWRlAAAAAAEPAEZpcmV3b3JrRmxpY2tlcgABDQBGaXJld29ya1RyYWlsAAEMAEZpcmV3b3JrVHlwZQAAAQYARmxpZ2h0AQAA" - }, - { - "id" : "minecraft:firework_rocket", - "nbt_b64" : "CgAACgkARmlyZXdvcmtzCQoARXhwbG9zaW9ucwoBAAAABw0ARmlyZXdvcmtDb2xvcgEAAAADBwwARmlyZXdvcmtGYWRlAAAAAAEPAEZpcmV3b3JrRmxpY2tlcgABDQBGaXJld29ya1RyYWlsAAEMAEZpcmV3b3JrVHlwZQAAAQYARmxpZ2h0AQAA" - }, - { - "id" : "minecraft:firework_rocket", - "nbt_b64" : "CgAACgkARmlyZXdvcmtzCQoARXhwbG9zaW9ucwoBAAAABw0ARmlyZXdvcmtDb2xvcgEAAAALBwwARmlyZXdvcmtGYWRlAAAAAAEPAEZpcmV3b3JrRmxpY2tlcgABDQBGaXJld29ya1RyYWlsAAEMAEZpcmV3b3JrVHlwZQAAAQYARmxpZ2h0AQAA" - }, - { - "id" : "minecraft:firework_rocket", - "nbt_b64" : "CgAACgkARmlyZXdvcmtzCQoARXhwbG9zaW9ucwoBAAAABw0ARmlyZXdvcmtDb2xvcgEAAAAKBwwARmlyZXdvcmtGYWRlAAAAAAEPAEZpcmV3b3JrRmxpY2tlcgABDQBGaXJld29ya1RyYWlsAAEMAEZpcmV3b3JrVHlwZQAAAQYARmxpZ2h0AQAA" - }, - { - "id" : "minecraft:firework_rocket", - "nbt_b64" : "CgAACgkARmlyZXdvcmtzCQoARXhwbG9zaW9ucwoBAAAABw0ARmlyZXdvcmtDb2xvcgEAAAACBwwARmlyZXdvcmtGYWRlAAAAAAEPAEZpcmV3b3JrRmxpY2tlcgABDQBGaXJld29ya1RyYWlsAAEMAEZpcmV3b3JrVHlwZQAAAQYARmxpZ2h0AQAA" - }, - { - "id" : "minecraft:firework_rocket", - "nbt_b64" : "CgAACgkARmlyZXdvcmtzCQoARXhwbG9zaW9ucwoBAAAABw0ARmlyZXdvcmtDb2xvcgEAAAAGBwwARmlyZXdvcmtGYWRlAAAAAAEPAEZpcmV3b3JrRmxpY2tlcgABDQBGaXJld29ya1RyYWlsAAEMAEZpcmV3b3JrVHlwZQAAAQYARmxpZ2h0AQAA" - }, - { - "id" : "minecraft:firework_star", - "nbt_b64" : "CgAACg0ARmlyZXdvcmtzSXRlbQcNAEZpcmV3b3JrQ29sb3IBAAAAAAcMAEZpcmV3b3JrRmFkZQAAAAABDwBGaXJld29ya0ZsaWNrZXIAAQ0ARmlyZXdvcmtUcmFpbAABDABGaXJld29ya1R5cGUAAAMLAGN1c3RvbUNvbG9yIR0d/wA=" - }, - { - "id" : "minecraft:firework_star", - "damage" : 8, - "nbt_b64" : "CgAACg0ARmlyZXdvcmtzSXRlbQcNAEZpcmV3b3JrQ29sb3IBAAAACAcMAEZpcmV3b3JrRmFkZQAAAAABDwBGaXJld29ya0ZsaWNrZXIAAQ0ARmlyZXdvcmtUcmFpbAABDABGaXJld29ya1R5cGUAAAMLAGN1c3RvbUNvbG9yUk9H/wA=" - }, - { - "id" : "minecraft:firework_star", - "damage" : 7, - "nbt_b64" : "CgAACg0ARmlyZXdvcmtzSXRlbQcNAEZpcmV3b3JrQ29sb3IBAAAABwcMAEZpcmV3b3JrRmFkZQAAAAABDwBGaXJld29ya0ZsaWNrZXIAAQ0ARmlyZXdvcmtUcmFpbAABDABGaXJld29ya1R5cGUAAAMLAGN1c3RvbUNvbG9yl52d/wA=" - }, - { - "id" : "minecraft:firework_star", - "damage" : 15, - "nbt_b64" : "CgAACg0ARmlyZXdvcmtzSXRlbQcNAEZpcmV3b3JrQ29sb3IBAAAADwcMAEZpcmV3b3JrRmFkZQAAAAABDwBGaXJld29ya0ZsaWNrZXIAAQ0ARmlyZXdvcmtUcmFpbAABDABGaXJld29ya1R5cGUAAAMLAGN1c3RvbUNvbG9y8PDw/wA=" - }, - { - "id" : "minecraft:firework_star", - "damage" : 12, - "nbt_b64" : "CgAACg0ARmlyZXdvcmtzSXRlbQcNAEZpcmV3b3JrQ29sb3IBAAAADAcMAEZpcmV3b3JrRmFkZQAAAAABDwBGaXJld29ya0ZsaWNrZXIAAQ0ARmlyZXdvcmtUcmFpbAABDABGaXJld29ya1R5cGUAAAMLAGN1c3RvbUNvbG9y2rM6/wA=" - }, - { - "id" : "minecraft:firework_star", - "damage" : 14, - "nbt_b64" : "CgAACg0ARmlyZXdvcmtzSXRlbQcNAEZpcmV3b3JrQ29sb3IBAAAADgcMAEZpcmV3b3JrRmFkZQAAAAABDwBGaXJld29ya0ZsaWNrZXIAAQ0ARmlyZXdvcmtUcmFpbAABDABGaXJld29ya1R5cGUAAAMLAGN1c3RvbUNvbG9yHYD5/wA=" - }, - { - "id" : "minecraft:firework_star", - "damage" : 1, - "nbt_b64" : "CgAACg0ARmlyZXdvcmtzSXRlbQcNAEZpcmV3b3JrQ29sb3IBAAAAAQcMAEZpcmV3b3JrRmFkZQAAAAABDwBGaXJld29ya0ZsaWNrZXIAAQ0ARmlyZXdvcmtUcmFpbAABDABGaXJld29ya1R5cGUAAAMLAGN1c3RvbUNvbG9yJi6w/wA=" - }, - { - "id" : "minecraft:firework_star", - "damage" : 4, - "nbt_b64" : "CgAACg0ARmlyZXdvcmtzSXRlbQcNAEZpcmV3b3JrQ29sb3IBAAAABAcMAEZpcmV3b3JrRmFkZQAAAAABDwBGaXJld29ya0ZsaWNrZXIAAQ0ARmlyZXdvcmtUcmFpbAABDABGaXJld29ya1R5cGUAAAMLAGN1c3RvbUNvbG9yqkQ8/wA=" - }, - { - "id" : "minecraft:firework_star", - "damage" : 5, - "nbt_b64" : "CgAACg0ARmlyZXdvcmtzSXRlbQcNAEZpcmV3b3JrQ29sb3IBAAAABQcMAEZpcmV3b3JrRmFkZQAAAAABDwBGaXJld29ya0ZsaWNrZXIAAQ0ARmlyZXdvcmtUcmFpbAABDABGaXJld29ya1R5cGUAAAMLAGN1c3RvbUNvbG9yuDKJ/wA=" - }, - { - "id" : "minecraft:firework_star", - "damage" : 13, - "nbt_b64" : "CgAACg0ARmlyZXdvcmtzSXRlbQcNAEZpcmV3b3JrQ29sb3IBAAAADQcMAEZpcmV3b3JrRmFkZQAAAAABDwBGaXJld29ya0ZsaWNrZXIAAQ0ARmlyZXdvcmtUcmFpbAABDABGaXJld29ya1R5cGUAAAMLAGN1c3RvbUNvbG9yvU7H/wA=" - }, - { - "id" : "minecraft:firework_star", - "damage" : 9, - "nbt_b64" : "CgAACg0ARmlyZXdvcmtzSXRlbQcNAEZpcmV3b3JrQ29sb3IBAAAACQcMAEZpcmV3b3JrRmFkZQAAAAABDwBGaXJld29ya0ZsaWNrZXIAAQ0ARmlyZXdvcmtUcmFpbAABDABGaXJld29ya1R5cGUAAAMLAGN1c3RvbUNvbG9yqovz/wA=" - }, - { - "id" : "minecraft:firework_star", - "damage" : 3, - "nbt_b64" : "CgAACg0ARmlyZXdvcmtzSXRlbQcNAEZpcmV3b3JrQ29sb3IBAAAAAwcMAEZpcmV3b3JrRmFkZQAAAAABDwBGaXJld29ya0ZsaWNrZXIAAQ0ARmlyZXdvcmtUcmFpbAABDABGaXJld29ya1R5cGUAAAMLAGN1c3RvbUNvbG9yMlSD/wA=" - }, - { - "id" : "minecraft:firework_star", - "damage" : 11, - "nbt_b64" : "CgAACg0ARmlyZXdvcmtzSXRlbQcNAEZpcmV3b3JrQ29sb3IBAAAACwcMAEZpcmV3b3JrRmFkZQAAAAABDwBGaXJld29ya0ZsaWNrZXIAAQ0ARmlyZXdvcmtUcmFpbAABDABGaXJld29ya1R5cGUAAAMLAGN1c3RvbUNvbG9yPdj+/wA=" - }, - { - "id" : "minecraft:firework_star", - "damage" : 10, - "nbt_b64" : "CgAACg0ARmlyZXdvcmtzSXRlbQcNAEZpcmV3b3JrQ29sb3IBAAAACgcMAEZpcmV3b3JrRmFkZQAAAAABDwBGaXJld29ya0ZsaWNrZXIAAQ0ARmlyZXdvcmtUcmFpbAABDABGaXJld29ya1R5cGUAAAMLAGN1c3RvbUNvbG9yH8eA/wA=" - }, - { - "id" : "minecraft:firework_star", - "damage" : 2, - "nbt_b64" : "CgAACg0ARmlyZXdvcmtzSXRlbQcNAEZpcmV3b3JrQ29sb3IBAAAAAgcMAEZpcmV3b3JrRmFkZQAAAAABDwBGaXJld29ya0ZsaWNrZXIAAQ0ARmlyZXdvcmtUcmFpbAABDABGaXJld29ya1R5cGUAAAMLAGN1c3RvbUNvbG9yFnxe/wA=" - }, - { - "id" : "minecraft:firework_star", - "damage" : 6, - "nbt_b64" : "CgAACg0ARmlyZXdvcmtzSXRlbQcNAEZpcmV3b3JrQ29sb3IBAAAABgcMAEZpcmV3b3JrRmFkZQAAAAABDwBGaXJld29ya0ZsaWNrZXIAAQ0ARmlyZXdvcmtUcmFpbAABDABGaXJld29ya1R5cGUAAAMLAGN1c3RvbUNvbG9ynJwW/wA=" - }, - { - "id" : "minecraft:chain" - }, - { - "id" : "minecraft:target", - "blockRuntimeId" : 7105 - }, - { - "id" : "minecraft:lodestone_compass" - } - ] -} \ No newline at end of file diff --git a/connector/src/main/resources/bedrock/runtime_item_states.1_17_0.json b/connector/src/main/resources/bedrock/runtime_item_states.1_17_0.json deleted file mode 100644 index d52495ed4..000000000 --- a/connector/src/main/resources/bedrock/runtime_item_states.1_17_0.json +++ /dev/null @@ -1,4154 +0,0 @@ -[ - { - "name" : "minecraft:acacia_boat", - "id" : 379 - }, - { - "name" : "minecraft:acacia_button", - "id" : -140 - }, - { - "name" : "minecraft:acacia_door", - "id" : 556 - }, - { - "name" : "minecraft:acacia_fence_gate", - "id" : 187 - }, - { - "name" : "minecraft:acacia_pressure_plate", - "id" : -150 - }, - { - "name" : "minecraft:acacia_sign", - "id" : 579 - }, - { - "name" : "minecraft:acacia_stairs", - "id" : 163 - }, - { - "name" : "minecraft:acacia_standing_sign", - "id" : -190 - }, - { - "name" : "minecraft:acacia_trapdoor", - "id" : -145 - }, - { - "name" : "minecraft:acacia_wall_sign", - "id" : -191 - }, - { - "name" : "minecraft:activator_rail", - "id" : 126 - }, - { - "name" : "minecraft:agent_spawn_egg", - "id" : 487 - }, - { - "name" : "minecraft:air", - "id" : -158 - }, - { - "name" : "minecraft:allow", - "id" : 210 - }, - { - "name" : "minecraft:amethyst_block", - "id" : -327 - }, - { - "name" : "minecraft:amethyst_cluster", - "id" : -329 - }, - { - "name" : "minecraft:amethyst_shard", - "id" : 623 - }, - { - "name" : "minecraft:ancient_debris", - "id" : -271 - }, - { - "name" : "minecraft:andesite_stairs", - "id" : -171 - }, - { - "name" : "minecraft:anvil", - "id" : 145 - }, - { - "name" : "minecraft:apple", - "id" : 257 - }, - { - "name" : "minecraft:armor_stand", - "id" : 552 - }, - { - "name" : "minecraft:arrow", - "id" : 301 - }, - { - "name" : "minecraft:axolotl_bucket", - "id" : 369 - }, - { - "name" : "minecraft:axolotl_spawn_egg", - "id" : 500 - }, - { - "name" : "minecraft:azalea", - "id" : -337 - }, - { - "name" : "minecraft:azalea_leaves", - "id" : -324 - }, - { - "name" : "minecraft:azalea_leaves_flowered", - "id" : -325 - }, - { - "name" : "minecraft:baked_potato", - "id" : 281 - }, - { - "name" : "minecraft:balloon", - "id" : 597 - }, - { - "name" : "minecraft:bamboo", - "id" : -163 - }, - { - "name" : "minecraft:bamboo_sapling", - "id" : -164 - }, - { - "name" : "minecraft:banner", - "id" : 567 - }, - { - "name" : "minecraft:banner_pattern", - "id" : 627 - }, - { - "name" : "minecraft:barrel", - "id" : -203 - }, - { - "name" : "minecraft:barrier", - "id" : -161 - }, - { - "name" : "minecraft:basalt", - "id" : -234 - }, - { - "name" : "minecraft:bat_spawn_egg", - "id" : 453 - }, - { - "name" : "minecraft:beacon", - "id" : 138 - }, - { - "name" : "minecraft:bed", - "id" : 418 - }, - { - "name" : "minecraft:bedrock", - "id" : 7 - }, - { - "name" : "minecraft:bee_nest", - "id" : -218 - }, - { - "name" : "minecraft:bee_spawn_egg", - "id" : 494 - }, - { - "name" : "minecraft:beef", - "id" : 273 - }, - { - "name" : "minecraft:beehive", - "id" : -219 - }, - { - "name" : "minecraft:beetroot", - "id" : 285 - }, - { - "name" : "minecraft:beetroot_seeds", - "id" : 295 - }, - { - "name" : "minecraft:beetroot_soup", - "id" : 286 - }, - { - "name" : "minecraft:bell", - "id" : -206 - }, - { - "name" : "minecraft:big_dripleaf", - "id" : -323 - }, - { - "name" : "minecraft:birch_boat", - "id" : 376 - }, - { - "name" : "minecraft:birch_button", - "id" : -141 - }, - { - "name" : "minecraft:birch_door", - "id" : 554 - }, - { - "name" : "minecraft:birch_fence_gate", - "id" : 184 - }, - { - "name" : "minecraft:birch_pressure_plate", - "id" : -151 - }, - { - "name" : "minecraft:birch_sign", - "id" : 577 - }, - { - "name" : "minecraft:birch_stairs", - "id" : 135 - }, - { - "name" : "minecraft:birch_standing_sign", - "id" : -186 - }, - { - "name" : "minecraft:birch_trapdoor", - "id" : -146 - }, - { - "name" : "minecraft:birch_wall_sign", - "id" : -187 - }, - { - "name" : "minecraft:black_dye", - "id" : 395 - }, - { - "name" : "minecraft:black_glazed_terracotta", - "id" : 235 - }, - { - "name" : "minecraft:blackstone", - "id" : -273 - }, - { - "name" : "minecraft:blackstone_double_slab", - "id" : -283 - }, - { - "name" : "minecraft:blackstone_slab", - "id" : -282 - }, - { - "name" : "minecraft:blackstone_stairs", - "id" : -276 - }, - { - "name" : "minecraft:blackstone_wall", - "id" : -277 - }, - { - "name" : "minecraft:blast_furnace", - "id" : -196 - }, - { - "name" : "minecraft:blaze_powder", - "id" : 429 - }, - { - "name" : "minecraft:blaze_rod", - "id" : 423 - }, - { - "name" : "minecraft:blaze_spawn_egg", - "id" : 456 - }, - { - "name" : "minecraft:bleach", - "id" : 595 - }, - { - "name" : "minecraft:blue_dye", - "id" : 399 - }, - { - "name" : "minecraft:blue_glazed_terracotta", - "id" : 231 - }, - { - "name" : "minecraft:blue_ice", - "id" : -11 - }, - { - "name" : "minecraft:boat", - "id" : 625 - }, - { - "name" : "minecraft:bone", - "id" : 415 - }, - { - "name" : "minecraft:bone_block", - "id" : 216 - }, - { - "name" : "minecraft:bone_meal", - "id" : 411 - }, - { - "name" : "minecraft:book", - "id" : 387 - }, - { - "name" : "minecraft:bookshelf", - "id" : 47 - }, - { - "name" : "minecraft:border_block", - "id" : 212 - }, - { - "name" : "minecraft:bordure_indented_banner_pattern", - "id" : 586 - }, - { - "name" : "minecraft:bow", - "id" : 300 - }, - { - "name" : "minecraft:bowl", - "id" : 321 - }, - { - "name" : "minecraft:bread", - "id" : 261 - }, - { - "name" : "minecraft:brewing_stand", - "id" : 431 - }, - { - "name" : "minecraft:brewingstandblock", - "id" : 117 - }, - { - "name" : "minecraft:brick", - "id" : 383 - }, - { - "name" : "minecraft:brick_block", - "id" : 45 - }, - { - "name" : "minecraft:brick_stairs", - "id" : 108 - }, - { - "name" : "minecraft:brown_dye", - "id" : 398 - }, - { - "name" : "minecraft:brown_glazed_terracotta", - "id" : 232 - }, - { - "name" : "minecraft:brown_mushroom", - "id" : 39 - }, - { - "name" : "minecraft:brown_mushroom_block", - "id" : 99 - }, - { - "name" : "minecraft:bubble_column", - "id" : -160 - }, - { - "name" : "minecraft:bucket", - "id" : 360 - }, - { - "name" : "minecraft:budding_amethyst", - "id" : -328 - }, - { - "name" : "minecraft:cactus", - "id" : 81 - }, - { - "name" : "minecraft:cake", - "id" : 417 - }, - { - "name" : "minecraft:calcite", - "id" : -326 - }, - { - "name" : "minecraft:camera", - "id" : 592 - }, - { - "name" : "minecraft:campfire", - "id" : 588 - }, - { - "name" : "minecraft:carpet", - "id" : 171 - }, - { - "name" : "minecraft:carrot", - "id" : 279 - }, - { - "name" : "minecraft:carrot_on_a_stick", - "id" : 517 - }, - { - "name" : "minecraft:carrots", - "id" : 141 - }, - { - "name" : "minecraft:cartography_table", - "id" : -200 - }, - { - "name" : "minecraft:carved_pumpkin", - "id" : -155 - }, - { - "name" : "minecraft:cat_spawn_egg", - "id" : 488 - }, - { - "name" : "minecraft:cauldron", - "id" : 432 - }, - { - "name" : "minecraft:cave_spider_spawn_egg", - "id" : 457 - }, - { - "name" : "minecraft:cave_vines", - "id" : -322 - }, - { - "name" : "minecraft:cave_vines_body_with_berries", - "id" : -375 - }, - { - "name" : "minecraft:cave_vines_head_with_berries", - "id" : -376 - }, - { - "name" : "minecraft:chain", - "id" : 617 - }, - { - "name" : "minecraft:chain_command_block", - "id" : 189 - }, - { - "name" : "minecraft:chainmail_boots", - "id" : 342 - }, - { - "name" : "minecraft:chainmail_chestplate", - "id" : 340 - }, - { - "name" : "minecraft:chainmail_helmet", - "id" : 339 - }, - { - "name" : "minecraft:chainmail_leggings", - "id" : 341 - }, - { - "name" : "minecraft:charcoal", - "id" : 303 - }, - { - "name" : "minecraft:chemical_heat", - "id" : 192 - }, - { - "name" : "minecraft:chemistry_table", - "id" : 238 - }, - { - "name" : "minecraft:chest", - "id" : 54 - }, - { - "name" : "minecraft:chest_minecart", - "id" : 389 - }, - { - "name" : "minecraft:chicken", - "id" : 275 - }, - { - "name" : "minecraft:chicken_spawn_egg", - "id" : 435 - }, - { - "name" : "minecraft:chiseled_deepslate", - "id" : -395 - }, - { - "name" : "minecraft:chiseled_nether_bricks", - "id" : -302 - }, - { - "name" : "minecraft:chiseled_polished_blackstone", - "id" : -279 - }, - { - "name" : "minecraft:chorus_flower", - "id" : 200 - }, - { - "name" : "minecraft:chorus_fruit", - "id" : 558 - }, - { - "name" : "minecraft:chorus_plant", - "id" : 240 - }, - { - "name" : "minecraft:clay", - "id" : 82 - }, - { - "name" : "minecraft:clay_ball", - "id" : 384 - }, - { - "name" : "minecraft:clock", - "id" : 393 - }, - { - "name" : "minecraft:coal", - "id" : 302 - }, - { - "name" : "minecraft:coal_block", - "id" : 173 - }, - { - "name" : "minecraft:coal_ore", - "id" : 16 - }, - { - "name" : "minecraft:cobbled_deepslate", - "id" : -379 - }, - { - "name" : "minecraft:cobbled_deepslate_double_slab", - "id" : -396 - }, - { - "name" : "minecraft:cobbled_deepslate_slab", - "id" : -380 - }, - { - "name" : "minecraft:cobbled_deepslate_stairs", - "id" : -381 - }, - { - "name" : "minecraft:cobbled_deepslate_wall", - "id" : -382 - }, - { - "name" : "minecraft:cobblestone", - "id" : 4 - }, - { - "name" : "minecraft:cobblestone_wall", - "id" : 139 - }, - { - "name" : "minecraft:cocoa", - "id" : 127 - }, - { - "name" : "minecraft:cocoa_beans", - "id" : 412 - }, - { - "name" : "minecraft:cod", - "id" : 264 - }, - { - "name" : "minecraft:cod_bucket", - "id" : 364 - }, - { - "name" : "minecraft:cod_spawn_egg", - "id" : 480 - }, - { - "name" : "minecraft:colored_torch_bp", - "id" : 204 - }, - { - "name" : "minecraft:colored_torch_rg", - "id" : 202 - }, - { - "name" : "minecraft:command_block", - "id" : 137 - }, - { - "name" : "minecraft:command_block_minecart", - "id" : 563 - }, - { - "name" : "minecraft:comparator", - "id" : 522 - }, - { - "name" : "minecraft:compass", - "id" : 391 - }, - { - "name" : "minecraft:composter", - "id" : -213 - }, - { - "name" : "minecraft:compound", - "id" : 593 - }, - { - "name" : "minecraft:concrete", - "id" : 236 - }, - { - "name" : "minecraft:concrete_powder", - "id" : 237 - }, - { - "name" : "minecraft:conduit", - "id" : -157 - }, - { - "name" : "minecraft:cooked_beef", - "id" : 274 - }, - { - "name" : "minecraft:cooked_chicken", - "id" : 276 - }, - { - "name" : "minecraft:cooked_cod", - "id" : 268 - }, - { - "name" : "minecraft:cooked_mutton", - "id" : 551 - }, - { - "name" : "minecraft:cooked_porkchop", - "id" : 263 - }, - { - "name" : "minecraft:cooked_rabbit", - "id" : 289 - }, - { - "name" : "minecraft:cooked_salmon", - "id" : 269 - }, - { - "name" : "minecraft:cookie", - "id" : 271 - }, - { - "name" : "minecraft:copper_block", - "id" : -340 - }, - { - "name" : "minecraft:copper_ingot", - "id" : 504 - }, - { - "name" : "minecraft:copper_ore", - "id" : -311 - }, - { - "name" : "minecraft:coral", - "id" : -131 - }, - { - "name" : "minecraft:coral_block", - "id" : -132 - }, - { - "name" : "minecraft:coral_fan", - "id" : -133 - }, - { - "name" : "minecraft:coral_fan_dead", - "id" : -134 - }, - { - "name" : "minecraft:coral_fan_hang", - "id" : -135 - }, - { - "name" : "minecraft:coral_fan_hang2", - "id" : -136 - }, - { - "name" : "minecraft:coral_fan_hang3", - "id" : -137 - }, - { - "name" : "minecraft:cow_spawn_egg", - "id" : 436 - }, - { - "name" : "minecraft:cracked_deepslate_bricks", - "id" : -410 - }, - { - "name" : "minecraft:cracked_deepslate_tiles", - "id" : -409 - }, - { - "name" : "minecraft:cracked_nether_bricks", - "id" : -303 - }, - { - "name" : "minecraft:cracked_polished_blackstone_bricks", - "id" : -280 - }, - { - "name" : "minecraft:crafting_table", - "id" : 58 - }, - { - "name" : "minecraft:creeper_banner_pattern", - "id" : 582 - }, - { - "name" : "minecraft:creeper_spawn_egg", - "id" : 441 - }, - { - "name" : "minecraft:crimson_button", - "id" : -260 - }, - { - "name" : "minecraft:crimson_door", - "id" : 614 - }, - { - "name" : "minecraft:crimson_double_slab", - "id" : -266 - }, - { - "name" : "minecraft:crimson_fence", - "id" : -256 - }, - { - "name" : "minecraft:crimson_fence_gate", - "id" : -258 - }, - { - "name" : "minecraft:crimson_fungus", - "id" : -228 - }, - { - "name" : "minecraft:crimson_hyphae", - "id" : -299 - }, - { - "name" : "minecraft:crimson_nylium", - "id" : -232 - }, - { - "name" : "minecraft:crimson_planks", - "id" : -242 - }, - { - "name" : "minecraft:crimson_pressure_plate", - "id" : -262 - }, - { - "name" : "minecraft:crimson_roots", - "id" : -223 - }, - { - "name" : "minecraft:crimson_sign", - "id" : 612 - }, - { - "name" : "minecraft:crimson_slab", - "id" : -264 - }, - { - "name" : "minecraft:crimson_stairs", - "id" : -254 - }, - { - "name" : "minecraft:crimson_standing_sign", - "id" : -250 - }, - { - "name" : "minecraft:crimson_stem", - "id" : -225 - }, - { - "name" : "minecraft:crimson_trapdoor", - "id" : -246 - }, - { - "name" : "minecraft:crimson_wall_sign", - "id" : -252 - }, - { - "name" : "minecraft:crossbow", - "id" : 575 - }, - { - "name" : "minecraft:crying_obsidian", - "id" : -289 - }, - { - "name" : "minecraft:cut_copper", - "id" : -347 - }, - { - "name" : "minecraft:cut_copper_slab", - "id" : -361 - }, - { - "name" : "minecraft:cut_copper_stairs", - "id" : -354 - }, - { - "name" : "minecraft:cyan_dye", - "id" : 401 - }, - { - "name" : "minecraft:cyan_glazed_terracotta", - "id" : 229 - }, - { - "name" : "minecraft:dark_oak_boat", - "id" : 380 - }, - { - "name" : "minecraft:dark_oak_button", - "id" : -142 - }, - { - "name" : "minecraft:dark_oak_door", - "id" : 557 - }, - { - "name" : "minecraft:dark_oak_fence_gate", - "id" : 186 - }, - { - "name" : "minecraft:dark_oak_pressure_plate", - "id" : -152 - }, - { - "name" : "minecraft:dark_oak_sign", - "id" : 580 - }, - { - "name" : "minecraft:dark_oak_stairs", - "id" : 164 - }, - { - "name" : "minecraft:dark_oak_trapdoor", - "id" : -147 - }, - { - "name" : "minecraft:dark_prismarine_stairs", - "id" : -3 - }, - { - "name" : "minecraft:darkoak_standing_sign", - "id" : -192 - }, - { - "name" : "minecraft:darkoak_wall_sign", - "id" : -193 - }, - { - "name" : "minecraft:daylight_detector", - "id" : 151 - }, - { - "name" : "minecraft:daylight_detector_inverted", - "id" : 178 - }, - { - "name" : "minecraft:deadbush", - "id" : 32 - }, - { - "name" : "minecraft:deepslate", - "id" : -378 - }, - { - "name" : "minecraft:deepslate_brick_double_slab", - "id" : -399 - }, - { - "name" : "minecraft:deepslate_brick_slab", - "id" : -392 - }, - { - "name" : "minecraft:deepslate_brick_stairs", - "id" : -393 - }, - { - "name" : "minecraft:deepslate_brick_wall", - "id" : -394 - }, - { - "name" : "minecraft:deepslate_bricks", - "id" : -391 - }, - { - "name" : "minecraft:deepslate_coal_ore", - "id" : -406 - }, - { - "name" : "minecraft:deepslate_copper_ore", - "id" : -408 - }, - { - "name" : "minecraft:deepslate_diamond_ore", - "id" : -405 - }, - { - "name" : "minecraft:deepslate_emerald_ore", - "id" : -407 - }, - { - "name" : "minecraft:deepslate_gold_ore", - "id" : -402 - }, - { - "name" : "minecraft:deepslate_iron_ore", - "id" : -401 - }, - { - "name" : "minecraft:deepslate_lapis_ore", - "id" : -400 - }, - { - "name" : "minecraft:deepslate_redstone_ore", - "id" : -403 - }, - { - "name" : "minecraft:deepslate_tile_double_slab", - "id" : -398 - }, - { - "name" : "minecraft:deepslate_tile_slab", - "id" : -388 - }, - { - "name" : "minecraft:deepslate_tile_stairs", - "id" : -389 - }, - { - "name" : "minecraft:deepslate_tile_wall", - "id" : -390 - }, - { - "name" : "minecraft:deepslate_tiles", - "id" : -387 - }, - { - "name" : "minecraft:deny", - "id" : 211 - }, - { - "name" : "minecraft:detector_rail", - "id" : 28 - }, - { - "name" : "minecraft:diamond", - "id" : 304 - }, - { - "name" : "minecraft:diamond_axe", - "id" : 319 - }, - { - "name" : "minecraft:diamond_block", - "id" : 57 - }, - { - "name" : "minecraft:diamond_boots", - "id" : 350 - }, - { - "name" : "minecraft:diamond_chestplate", - "id" : 348 - }, - { - "name" : "minecraft:diamond_helmet", - "id" : 347 - }, - { - "name" : "minecraft:diamond_hoe", - "id" : 332 - }, - { - "name" : "minecraft:diamond_horse_armor", - "id" : 533 - }, - { - "name" : "minecraft:diamond_leggings", - "id" : 349 - }, - { - "name" : "minecraft:diamond_ore", - "id" : 56 - }, - { - "name" : "minecraft:diamond_pickaxe", - "id" : 318 - }, - { - "name" : "minecraft:diamond_shovel", - "id" : 317 - }, - { - "name" : "minecraft:diamond_sword", - "id" : 316 - }, - { - "name" : "minecraft:diorite_stairs", - "id" : -170 - }, - { - "name" : "minecraft:dirt", - "id" : 3 - }, - { - "name" : "minecraft:dirt_with_roots", - "id" : -318 - }, - { - "name" : "minecraft:dispenser", - "id" : 23 - }, - { - "name" : "minecraft:dolphin_spawn_egg", - "id" : 484 - }, - { - "name" : "minecraft:donkey_spawn_egg", - "id" : 465 - }, - { - "name" : "minecraft:double_cut_copper_slab", - "id" : -368 - }, - { - "name" : "minecraft:double_plant", - "id" : 175 - }, - { - "name" : "minecraft:double_stone_slab", - "id" : 44 - }, - { - "name" : "minecraft:double_stone_slab2", - "id" : 182 - }, - { - "name" : "minecraft:double_stone_slab3", - "id" : -162 - }, - { - "name" : "minecraft:double_stone_slab4", - "id" : -166 - }, - { - "name" : "minecraft:double_wooden_slab", - "id" : 157 - }, - { - "name" : "minecraft:dragon_breath", - "id" : 560 - }, - { - "name" : "minecraft:dragon_egg", - "id" : 122 - }, - { - "name" : "minecraft:dried_kelp", - "id" : 270 - }, - { - "name" : "minecraft:dried_kelp_block", - "id" : -139 - }, - { - "name" : "minecraft:dripstone_block", - "id" : -317 - }, - { - "name" : "minecraft:dropper", - "id" : 125 - }, - { - "name" : "minecraft:drowned_spawn_egg", - "id" : 483 - }, - { - "name" : "minecraft:dye", - "id" : 626 - }, - { - "name" : "minecraft:egg", - "id" : 390 - }, - { - "name" : "minecraft:elder_guardian_spawn_egg", - "id" : 471 - }, - { - "name" : "minecraft:element_0", - "id" : 36 - }, - { - "name" : "minecraft:element_1", - "id" : -12 - }, - { - "name" : "minecraft:element_10", - "id" : -21 - }, - { - "name" : "minecraft:element_100", - "id" : -111 - }, - { - "name" : "minecraft:element_101", - "id" : -112 - }, - { - "name" : "minecraft:element_102", - "id" : -113 - }, - { - "name" : "minecraft:element_103", - "id" : -114 - }, - { - "name" : "minecraft:element_104", - "id" : -115 - }, - { - "name" : "minecraft:element_105", - "id" : -116 - }, - { - "name" : "minecraft:element_106", - "id" : -117 - }, - { - "name" : "minecraft:element_107", - "id" : -118 - }, - { - "name" : "minecraft:element_108", - "id" : -119 - }, - { - "name" : "minecraft:element_109", - "id" : -120 - }, - { - "name" : "minecraft:element_11", - "id" : -22 - }, - { - "name" : "minecraft:element_110", - "id" : -121 - }, - { - "name" : "minecraft:element_111", - "id" : -122 - }, - { - "name" : "minecraft:element_112", - "id" : -123 - }, - { - "name" : "minecraft:element_113", - "id" : -124 - }, - { - "name" : "minecraft:element_114", - "id" : -125 - }, - { - "name" : "minecraft:element_115", - "id" : -126 - }, - { - "name" : "minecraft:element_116", - "id" : -127 - }, - { - "name" : "minecraft:element_117", - "id" : -128 - }, - { - "name" : "minecraft:element_118", - "id" : -129 - }, - { - "name" : "minecraft:element_12", - "id" : -23 - }, - { - "name" : "minecraft:element_13", - "id" : -24 - }, - { - "name" : "minecraft:element_14", - "id" : -25 - }, - { - "name" : "minecraft:element_15", - "id" : -26 - }, - { - "name" : "minecraft:element_16", - "id" : -27 - }, - { - "name" : "minecraft:element_17", - "id" : -28 - }, - { - "name" : "minecraft:element_18", - "id" : -29 - }, - { - "name" : "minecraft:element_19", - "id" : -30 - }, - { - "name" : "minecraft:element_2", - "id" : -13 - }, - { - "name" : "minecraft:element_20", - "id" : -31 - }, - { - "name" : "minecraft:element_21", - "id" : -32 - }, - { - "name" : "minecraft:element_22", - "id" : -33 - }, - { - "name" : "minecraft:element_23", - "id" : -34 - }, - { - "name" : "minecraft:element_24", - "id" : -35 - }, - { - "name" : "minecraft:element_25", - "id" : -36 - }, - { - "name" : "minecraft:element_26", - "id" : -37 - }, - { - "name" : "minecraft:element_27", - "id" : -38 - }, - { - "name" : "minecraft:element_28", - "id" : -39 - }, - { - "name" : "minecraft:element_29", - "id" : -40 - }, - { - "name" : "minecraft:element_3", - "id" : -14 - }, - { - "name" : "minecraft:element_30", - "id" : -41 - }, - { - "name" : "minecraft:element_31", - "id" : -42 - }, - { - "name" : "minecraft:element_32", - "id" : -43 - }, - { - "name" : "minecraft:element_33", - "id" : -44 - }, - { - "name" : "minecraft:element_34", - "id" : -45 - }, - { - "name" : "minecraft:element_35", - "id" : -46 - }, - { - "name" : "minecraft:element_36", - "id" : -47 - }, - { - "name" : "minecraft:element_37", - "id" : -48 - }, - { - "name" : "minecraft:element_38", - "id" : -49 - }, - { - "name" : "minecraft:element_39", - "id" : -50 - }, - { - "name" : "minecraft:element_4", - "id" : -15 - }, - { - "name" : "minecraft:element_40", - "id" : -51 - }, - { - "name" : "minecraft:element_41", - "id" : -52 - }, - { - "name" : "minecraft:element_42", - "id" : -53 - }, - { - "name" : "minecraft:element_43", - "id" : -54 - }, - { - "name" : "minecraft:element_44", - "id" : -55 - }, - { - "name" : "minecraft:element_45", - "id" : -56 - }, - { - "name" : "minecraft:element_46", - "id" : -57 - }, - { - "name" : "minecraft:element_47", - "id" : -58 - }, - { - "name" : "minecraft:element_48", - "id" : -59 - }, - { - "name" : "minecraft:element_49", - "id" : -60 - }, - { - "name" : "minecraft:element_5", - "id" : -16 - }, - { - "name" : "minecraft:element_50", - "id" : -61 - }, - { - "name" : "minecraft:element_51", - "id" : -62 - }, - { - "name" : "minecraft:element_52", - "id" : -63 - }, - { - "name" : "minecraft:element_53", - "id" : -64 - }, - { - "name" : "minecraft:element_54", - "id" : -65 - }, - { - "name" : "minecraft:element_55", - "id" : -66 - }, - { - "name" : "minecraft:element_56", - "id" : -67 - }, - { - "name" : "minecraft:element_57", - "id" : -68 - }, - { - "name" : "minecraft:element_58", - "id" : -69 - }, - { - "name" : "minecraft:element_59", - "id" : -70 - }, - { - "name" : "minecraft:element_6", - "id" : -17 - }, - { - "name" : "minecraft:element_60", - "id" : -71 - }, - { - "name" : "minecraft:element_61", - "id" : -72 - }, - { - "name" : "minecraft:element_62", - "id" : -73 - }, - { - "name" : "minecraft:element_63", - "id" : -74 - }, - { - "name" : "minecraft:element_64", - "id" : -75 - }, - { - "name" : "minecraft:element_65", - "id" : -76 - }, - { - "name" : "minecraft:element_66", - "id" : -77 - }, - { - "name" : "minecraft:element_67", - "id" : -78 - }, - { - "name" : "minecraft:element_68", - "id" : -79 - }, - { - "name" : "minecraft:element_69", - "id" : -80 - }, - { - "name" : "minecraft:element_7", - "id" : -18 - }, - { - "name" : "minecraft:element_70", - "id" : -81 - }, - { - "name" : "minecraft:element_71", - "id" : -82 - }, - { - "name" : "minecraft:element_72", - "id" : -83 - }, - { - "name" : "minecraft:element_73", - "id" : -84 - }, - { - "name" : "minecraft:element_74", - "id" : -85 - }, - { - "name" : "minecraft:element_75", - "id" : -86 - }, - { - "name" : "minecraft:element_76", - "id" : -87 - }, - { - "name" : "minecraft:element_77", - "id" : -88 - }, - { - "name" : "minecraft:element_78", - "id" : -89 - }, - { - "name" : "minecraft:element_79", - "id" : -90 - }, - { - "name" : "minecraft:element_8", - "id" : -19 - }, - { - "name" : "minecraft:element_80", - "id" : -91 - }, - { - "name" : "minecraft:element_81", - "id" : -92 - }, - { - "name" : "minecraft:element_82", - "id" : -93 - }, - { - "name" : "minecraft:element_83", - "id" : -94 - }, - { - "name" : "minecraft:element_84", - "id" : -95 - }, - { - "name" : "minecraft:element_85", - "id" : -96 - }, - { - "name" : "minecraft:element_86", - "id" : -97 - }, - { - "name" : "minecraft:element_87", - "id" : -98 - }, - { - "name" : "minecraft:element_88", - "id" : -99 - }, - { - "name" : "minecraft:element_89", - "id" : -100 - }, - { - "name" : "minecraft:element_9", - "id" : -20 - }, - { - "name" : "minecraft:element_90", - "id" : -101 - }, - { - "name" : "minecraft:element_91", - "id" : -102 - }, - { - "name" : "minecraft:element_92", - "id" : -103 - }, - { - "name" : "minecraft:element_93", - "id" : -104 - }, - { - "name" : "minecraft:element_94", - "id" : -105 - }, - { - "name" : "minecraft:element_95", - "id" : -106 - }, - { - "name" : "minecraft:element_96", - "id" : -107 - }, - { - "name" : "minecraft:element_97", - "id" : -108 - }, - { - "name" : "minecraft:element_98", - "id" : -109 - }, - { - "name" : "minecraft:element_99", - "id" : -110 - }, - { - "name" : "minecraft:elytra", - "id" : 564 - }, - { - "name" : "minecraft:emerald", - "id" : 512 - }, - { - "name" : "minecraft:emerald_block", - "id" : 133 - }, - { - "name" : "minecraft:emerald_ore", - "id" : 129 - }, - { - "name" : "minecraft:empty_map", - "id" : 515 - }, - { - "name" : "minecraft:enchanted_book", - "id" : 521 - }, - { - "name" : "minecraft:enchanted_golden_apple", - "id" : 259 - }, - { - "name" : "minecraft:enchanting_table", - "id" : 116 - }, - { - "name" : "minecraft:end_brick_stairs", - "id" : -178 - }, - { - "name" : "minecraft:end_bricks", - "id" : 206 - }, - { - "name" : "minecraft:end_crystal", - "id" : 629 - }, - { - "name" : "minecraft:end_gateway", - "id" : 209 - }, - { - "name" : "minecraft:end_portal", - "id" : 119 - }, - { - "name" : "minecraft:end_portal_frame", - "id" : 120 - }, - { - "name" : "minecraft:end_rod", - "id" : 208 - }, - { - "name" : "minecraft:end_stone", - "id" : 121 - }, - { - "name" : "minecraft:ender_chest", - "id" : 130 - }, - { - "name" : "minecraft:ender_eye", - "id" : 433 - }, - { - "name" : "minecraft:ender_pearl", - "id" : 422 - }, - { - "name" : "minecraft:enderman_spawn_egg", - "id" : 442 - }, - { - "name" : "minecraft:endermite_spawn_egg", - "id" : 460 - }, - { - "name" : "minecraft:evoker_spawn_egg", - "id" : 475 - }, - { - "name" : "minecraft:experience_bottle", - "id" : 508 - }, - { - "name" : "minecraft:exposed_copper", - "id" : -341 - }, - { - "name" : "minecraft:exposed_cut_copper", - "id" : -348 - }, - { - "name" : "minecraft:exposed_cut_copper_slab", - "id" : -362 - }, - { - "name" : "minecraft:exposed_cut_copper_stairs", - "id" : -355 - }, - { - "name" : "minecraft:exposed_double_cut_copper_slab", - "id" : -369 - }, - { - "name" : "minecraft:farmland", - "id" : 60 - }, - { - "name" : "minecraft:feather", - "id" : 327 - }, - { - "name" : "minecraft:fence", - "id" : 85 - }, - { - "name" : "minecraft:fence_gate", - "id" : 107 - }, - { - "name" : "minecraft:fermented_spider_eye", - "id" : 428 - }, - { - "name" : "minecraft:field_masoned_banner_pattern", - "id" : 585 - }, - { - "name" : "minecraft:filled_map", - "id" : 420 - }, - { - "name" : "minecraft:fire", - "id" : 51 - }, - { - "name" : "minecraft:fire_charge", - "id" : 509 - }, - { - "name" : "minecraft:firework_rocket", - "id" : 519 - }, - { - "name" : "minecraft:firework_star", - "id" : 520 - }, - { - "name" : "minecraft:fishing_rod", - "id" : 392 - }, - { - "name" : "minecraft:fletching_table", - "id" : -201 - }, - { - "name" : "minecraft:flint", - "id" : 356 - }, - { - "name" : "minecraft:flint_and_steel", - "id" : 299 - }, - { - "name" : "minecraft:flower_banner_pattern", - "id" : 581 - }, - { - "name" : "minecraft:flower_pot", - "id" : 514 - }, - { - "name" : "minecraft:flowering_azalea", - "id" : -338 - }, - { - "name" : "minecraft:flowing_lava", - "id" : 10 - }, - { - "name" : "minecraft:flowing_water", - "id" : 8 - }, - { - "name" : "minecraft:fox_spawn_egg", - "id" : 490 - }, - { - "name" : "minecraft:frame", - "id" : 513 - }, - { - "name" : "minecraft:frosted_ice", - "id" : 207 - }, - { - "name" : "minecraft:furnace", - "id" : 61 - }, - { - "name" : "minecraft:ghast_spawn_egg", - "id" : 454 - }, - { - "name" : "minecraft:ghast_tear", - "id" : 424 - }, - { - "name" : "minecraft:gilded_blackstone", - "id" : -281 - }, - { - "name" : "minecraft:glass", - "id" : 20 - }, - { - "name" : "minecraft:glass_bottle", - "id" : 427 - }, - { - "name" : "minecraft:glass_pane", - "id" : 102 - }, - { - "name" : "minecraft:glistering_melon_slice", - "id" : 434 - }, - { - "name" : "minecraft:glow_berries", - "id" : 630 - }, - { - "name" : "minecraft:glow_frame", - "id" : 621 - }, - { - "name" : "minecraft:glow_ink_sac", - "id" : 503 - }, - { - "name" : "minecraft:glow_lichen", - "id" : -411 - }, - { - "name" : "minecraft:glow_squid_spawn_egg", - "id" : 502 - }, - { - "name" : "minecraft:glow_stick", - "id" : 166 - }, - { - "name" : "minecraft:glowingobsidian", - "id" : 246 - }, - { - "name" : "minecraft:glowstone", - "id" : 89 - }, - { - "name" : "minecraft:glowstone_dust", - "id" : 394 - }, - { - "name" : "minecraft:goat_horn", - "id" : 622 - }, - { - "name" : "minecraft:goat_spawn_egg", - "id" : 501 - }, - { - "name" : "minecraft:gold_block", - "id" : 41 - }, - { - "name" : "minecraft:gold_ingot", - "id" : 306 - }, - { - "name" : "minecraft:gold_nugget", - "id" : 425 - }, - { - "name" : "minecraft:gold_ore", - "id" : 14 - }, - { - "name" : "minecraft:golden_apple", - "id" : 258 - }, - { - "name" : "minecraft:golden_axe", - "id" : 325 - }, - { - "name" : "minecraft:golden_boots", - "id" : 354 - }, - { - "name" : "minecraft:golden_carrot", - "id" : 283 - }, - { - "name" : "minecraft:golden_chestplate", - "id" : 352 - }, - { - "name" : "minecraft:golden_helmet", - "id" : 351 - }, - { - "name" : "minecraft:golden_hoe", - "id" : 333 - }, - { - "name" : "minecraft:golden_horse_armor", - "id" : 532 - }, - { - "name" : "minecraft:golden_leggings", - "id" : 353 - }, - { - "name" : "minecraft:golden_pickaxe", - "id" : 324 - }, - { - "name" : "minecraft:golden_rail", - "id" : 27 - }, - { - "name" : "minecraft:golden_shovel", - "id" : 323 - }, - { - "name" : "minecraft:golden_sword", - "id" : 322 - }, - { - "name" : "minecraft:granite_stairs", - "id" : -169 - }, - { - "name" : "minecraft:grass", - "id" : 2 - }, - { - "name" : "minecraft:grass_path", - "id" : 198 - }, - { - "name" : "minecraft:gravel", - "id" : 13 - }, - { - "name" : "minecraft:gray_dye", - "id" : 403 - }, - { - "name" : "minecraft:gray_glazed_terracotta", - "id" : 227 - }, - { - "name" : "minecraft:green_dye", - "id" : 397 - }, - { - "name" : "minecraft:green_glazed_terracotta", - "id" : 233 - }, - { - "name" : "minecraft:grindstone", - "id" : -195 - }, - { - "name" : "minecraft:guardian_spawn_egg", - "id" : 461 - }, - { - "name" : "minecraft:gunpowder", - "id" : 328 - }, - { - "name" : "minecraft:hanging_roots", - "id" : -319 - }, - { - "name" : "minecraft:hard_glass", - "id" : 253 - }, - { - "name" : "minecraft:hard_glass_pane", - "id" : 190 - }, - { - "name" : "minecraft:hard_stained_glass", - "id" : 254 - }, - { - "name" : "minecraft:hard_stained_glass_pane", - "id" : 191 - }, - { - "name" : "minecraft:hardened_clay", - "id" : 172 - }, - { - "name" : "minecraft:hay_block", - "id" : 170 - }, - { - "name" : "minecraft:heart_of_the_sea", - "id" : 571 - }, - { - "name" : "minecraft:heavy_weighted_pressure_plate", - "id" : 148 - }, - { - "name" : "minecraft:hoglin_spawn_egg", - "id" : 496 - }, - { - "name" : "minecraft:honey_block", - "id" : -220 - }, - { - "name" : "minecraft:honey_bottle", - "id" : 591 - }, - { - "name" : "minecraft:honeycomb", - "id" : 590 - }, - { - "name" : "minecraft:honeycomb_block", - "id" : -221 - }, - { - "name" : "minecraft:hopper", - "id" : 527 - }, - { - "name" : "minecraft:hopper_minecart", - "id" : 526 - }, - { - "name" : "minecraft:horse_spawn_egg", - "id" : 458 - }, - { - "name" : "minecraft:husk_spawn_egg", - "id" : 463 - }, - { - "name" : "minecraft:ice", - "id" : 79 - }, - { - "name" : "minecraft:ice_bomb", - "id" : 594 - }, - { - "name" : "minecraft:infested_deepslate", - "id" : -454 - }, - { - "name" : "minecraft:info_update", - "id" : 248 - }, - { - "name" : "minecraft:info_update2", - "id" : 249 - }, - { - "name" : "minecraft:ink_sac", - "id" : 413 - }, - { - "name" : "minecraft:invisiblebedrock", - "id" : 95 - }, - { - "name" : "minecraft:iron_axe", - "id" : 298 - }, - { - "name" : "minecraft:iron_bars", - "id" : 101 - }, - { - "name" : "minecraft:iron_block", - "id" : 42 - }, - { - "name" : "minecraft:iron_boots", - "id" : 346 - }, - { - "name" : "minecraft:iron_chestplate", - "id" : 344 - }, - { - "name" : "minecraft:iron_door", - "id" : 372 - }, - { - "name" : "minecraft:iron_helmet", - "id" : 343 - }, - { - "name" : "minecraft:iron_hoe", - "id" : 331 - }, - { - "name" : "minecraft:iron_horse_armor", - "id" : 531 - }, - { - "name" : "minecraft:iron_ingot", - "id" : 305 - }, - { - "name" : "minecraft:iron_leggings", - "id" : 345 - }, - { - "name" : "minecraft:iron_nugget", - "id" : 569 - }, - { - "name" : "minecraft:iron_ore", - "id" : 15 - }, - { - "name" : "minecraft:iron_pickaxe", - "id" : 297 - }, - { - "name" : "minecraft:iron_shovel", - "id" : 296 - }, - { - "name" : "minecraft:iron_sword", - "id" : 307 - }, - { - "name" : "minecraft:iron_trapdoor", - "id" : 167 - }, - { - "name" : "minecraft:item.acacia_door", - "id" : 196 - }, - { - "name" : "minecraft:item.bed", - "id" : 26 - }, - { - "name" : "minecraft:item.beetroot", - "id" : 244 - }, - { - "name" : "minecraft:item.birch_door", - "id" : 194 - }, - { - "name" : "minecraft:item.cake", - "id" : 92 - }, - { - "name" : "minecraft:item.camera", - "id" : 242 - }, - { - "name" : "minecraft:item.campfire", - "id" : -209 - }, - { - "name" : "minecraft:item.cauldron", - "id" : 118 - }, - { - "name" : "minecraft:item.chain", - "id" : -286 - }, - { - "name" : "minecraft:item.crimson_door", - "id" : -244 - }, - { - "name" : "minecraft:item.dark_oak_door", - "id" : 197 - }, - { - "name" : "minecraft:item.flower_pot", - "id" : 140 - }, - { - "name" : "minecraft:item.frame", - "id" : 199 - }, - { - "name" : "minecraft:item.glow_frame", - "id" : -339 - }, - { - "name" : "minecraft:item.hopper", - "id" : 154 - }, - { - "name" : "minecraft:item.iron_door", - "id" : 71 - }, - { - "name" : "minecraft:item.jungle_door", - "id" : 195 - }, - { - "name" : "minecraft:item.kelp", - "id" : -138 - }, - { - "name" : "minecraft:item.nether_sprouts", - "id" : -238 - }, - { - "name" : "minecraft:item.nether_wart", - "id" : 115 - }, - { - "name" : "minecraft:item.reeds", - "id" : 83 - }, - { - "name" : "minecraft:item.skull", - "id" : 144 - }, - { - "name" : "minecraft:item.soul_campfire", - "id" : -290 - }, - { - "name" : "minecraft:item.spruce_door", - "id" : 193 - }, - { - "name" : "minecraft:item.warped_door", - "id" : -245 - }, - { - "name" : "minecraft:item.wheat", - "id" : 59 - }, - { - "name" : "minecraft:item.wooden_door", - "id" : 64 - }, - { - "name" : "minecraft:jigsaw", - "id" : -211 - }, - { - "name" : "minecraft:jukebox", - "id" : 84 - }, - { - "name" : "minecraft:jungle_boat", - "id" : 377 - }, - { - "name" : "minecraft:jungle_button", - "id" : -143 - }, - { - "name" : "minecraft:jungle_door", - "id" : 555 - }, - { - "name" : "minecraft:jungle_fence_gate", - "id" : 185 - }, - { - "name" : "minecraft:jungle_pressure_plate", - "id" : -153 - }, - { - "name" : "minecraft:jungle_sign", - "id" : 578 - }, - { - "name" : "minecraft:jungle_stairs", - "id" : 136 - }, - { - "name" : "minecraft:jungle_standing_sign", - "id" : -188 - }, - { - "name" : "minecraft:jungle_trapdoor", - "id" : -148 - }, - { - "name" : "minecraft:jungle_wall_sign", - "id" : -189 - }, - { - "name" : "minecraft:kelp", - "id" : 382 - }, - { - "name" : "minecraft:ladder", - "id" : 65 - }, - { - "name" : "minecraft:lantern", - "id" : -208 - }, - { - "name" : "minecraft:lapis_block", - "id" : 22 - }, - { - "name" : "minecraft:lapis_lazuli", - "id" : 414 - }, - { - "name" : "minecraft:lapis_ore", - "id" : 21 - }, - { - "name" : "minecraft:large_amethyst_bud", - "id" : -330 - }, - { - "name" : "minecraft:lava", - "id" : 11 - }, - { - "name" : "minecraft:lava_bucket", - "id" : 363 - }, - { - "name" : "minecraft:lava_cauldron", - "id" : -210 - }, - { - "name" : "minecraft:lead", - "id" : 547 - }, - { - "name" : "minecraft:leather", - "id" : 381 - }, - { - "name" : "minecraft:leather_boots", - "id" : 338 - }, - { - "name" : "minecraft:leather_chestplate", - "id" : 336 - }, - { - "name" : "minecraft:leather_helmet", - "id" : 335 - }, - { - "name" : "minecraft:leather_horse_armor", - "id" : 530 - }, - { - "name" : "minecraft:leather_leggings", - "id" : 337 - }, - { - "name" : "minecraft:leaves", - "id" : 18 - }, - { - "name" : "minecraft:leaves2", - "id" : 161 - }, - { - "name" : "minecraft:lectern", - "id" : -194 - }, - { - "name" : "minecraft:lever", - "id" : 69 - }, - { - "name" : "minecraft:light_block", - "id" : -215 - }, - { - "name" : "minecraft:light_blue_dye", - "id" : 407 - }, - { - "name" : "minecraft:light_blue_glazed_terracotta", - "id" : 223 - }, - { - "name" : "minecraft:light_gray_dye", - "id" : 402 - }, - { - "name" : "minecraft:light_weighted_pressure_plate", - "id" : 147 - }, - { - "name" : "minecraft:lightning_rod", - "id" : -312 - }, - { - "name" : "minecraft:lime_dye", - "id" : 405 - }, - { - "name" : "minecraft:lime_glazed_terracotta", - "id" : 225 - }, - { - "name" : "minecraft:lingering_potion", - "id" : 562 - }, - { - "name" : "minecraft:lit_blast_furnace", - "id" : -214 - }, - { - "name" : "minecraft:lit_deepslate_redstone_ore", - "id" : -404 - }, - { - "name" : "minecraft:lit_furnace", - "id" : 62 - }, - { - "name" : "minecraft:lit_pumpkin", - "id" : 91 - }, - { - "name" : "minecraft:lit_redstone_lamp", - "id" : 124 - }, - { - "name" : "minecraft:lit_redstone_ore", - "id" : 74 - }, - { - "name" : "minecraft:lit_smoker", - "id" : -199 - }, - { - "name" : "minecraft:llama_spawn_egg", - "id" : 473 - }, - { - "name" : "minecraft:lodestone", - "id" : -222 - }, - { - "name" : "minecraft:lodestone_compass", - "id" : 600 - }, - { - "name" : "minecraft:log", - "id" : 17 - }, - { - "name" : "minecraft:log2", - "id" : 162 - }, - { - "name" : "minecraft:loom", - "id" : -204 - }, - { - "name" : "minecraft:magenta_dye", - "id" : 408 - }, - { - "name" : "minecraft:magenta_glazed_terracotta", - "id" : 222 - }, - { - "name" : "minecraft:magma", - "id" : 213 - }, - { - "name" : "minecraft:magma_cream", - "id" : 430 - }, - { - "name" : "minecraft:magma_cube_spawn_egg", - "id" : 455 - }, - { - "name" : "minecraft:medicine", - "id" : 598 - }, - { - "name" : "minecraft:medium_amethyst_bud", - "id" : -331 - }, - { - "name" : "minecraft:melon_block", - "id" : 103 - }, - { - "name" : "minecraft:melon_seeds", - "id" : 293 - }, - { - "name" : "minecraft:melon_slice", - "id" : 272 - }, - { - "name" : "minecraft:melon_stem", - "id" : 105 - }, - { - "name" : "minecraft:milk_bucket", - "id" : 361 - }, - { - "name" : "minecraft:minecart", - "id" : 370 - }, - { - "name" : "minecraft:mob_spawner", - "id" : 52 - }, - { - "name" : "minecraft:mojang_banner_pattern", - "id" : 584 - }, - { - "name" : "minecraft:monster_egg", - "id" : 97 - }, - { - "name" : "minecraft:mooshroom_spawn_egg", - "id" : 440 - }, - { - "name" : "minecraft:moss_block", - "id" : -320 - }, - { - "name" : "minecraft:moss_carpet", - "id" : -335 - }, - { - "name" : "minecraft:mossy_cobblestone", - "id" : 48 - }, - { - "name" : "minecraft:mossy_cobblestone_stairs", - "id" : -179 - }, - { - "name" : "minecraft:mossy_stone_brick_stairs", - "id" : -175 - }, - { - "name" : "minecraft:movingblock", - "id" : 250 - }, - { - "name" : "minecraft:mule_spawn_egg", - "id" : 466 - }, - { - "name" : "minecraft:mushroom_stew", - "id" : 260 - }, - { - "name" : "minecraft:music_disc_11", - "id" : 544 - }, - { - "name" : "minecraft:music_disc_13", - "id" : 534 - }, - { - "name" : "minecraft:music_disc_blocks", - "id" : 536 - }, - { - "name" : "minecraft:music_disc_cat", - "id" : 535 - }, - { - "name" : "minecraft:music_disc_chirp", - "id" : 537 - }, - { - "name" : "minecraft:music_disc_far", - "id" : 538 - }, - { - "name" : "minecraft:music_disc_mall", - "id" : 539 - }, - { - "name" : "minecraft:music_disc_mellohi", - "id" : 540 - }, - { - "name" : "minecraft:music_disc_pigstep", - "id" : 618 - }, - { - "name" : "minecraft:music_disc_stal", - "id" : 541 - }, - { - "name" : "minecraft:music_disc_strad", - "id" : 542 - }, - { - "name" : "minecraft:music_disc_wait", - "id" : 545 - }, - { - "name" : "minecraft:music_disc_ward", - "id" : 543 - }, - { - "name" : "minecraft:mutton", - "id" : 550 - }, - { - "name" : "minecraft:mycelium", - "id" : 110 - }, - { - "name" : "minecraft:name_tag", - "id" : 548 - }, - { - "name" : "minecraft:nautilus_shell", - "id" : 570 - }, - { - "name" : "minecraft:nether_brick", - "id" : 112 - }, - { - "name" : "minecraft:nether_brick_fence", - "id" : 113 - }, - { - "name" : "minecraft:nether_brick_stairs", - "id" : 114 - }, - { - "name" : "minecraft:nether_gold_ore", - "id" : -288 - }, - { - "name" : "minecraft:nether_sprouts", - "id" : 619 - }, - { - "name" : "minecraft:nether_star", - "id" : 518 - }, - { - "name" : "minecraft:nether_wart", - "id" : 294 - }, - { - "name" : "minecraft:nether_wart_block", - "id" : 214 - }, - { - "name" : "minecraft:netherbrick", - "id" : 523 - }, - { - "name" : "minecraft:netherite_axe", - "id" : 605 - }, - { - "name" : "minecraft:netherite_block", - "id" : -270 - }, - { - "name" : "minecraft:netherite_boots", - "id" : 610 - }, - { - "name" : "minecraft:netherite_chestplate", - "id" : 608 - }, - { - "name" : "minecraft:netherite_helmet", - "id" : 607 - }, - { - "name" : "minecraft:netherite_hoe", - "id" : 606 - }, - { - "name" : "minecraft:netherite_ingot", - "id" : 601 - }, - { - "name" : "minecraft:netherite_leggings", - "id" : 609 - }, - { - "name" : "minecraft:netherite_pickaxe", - "id" : 604 - }, - { - "name" : "minecraft:netherite_scrap", - "id" : 611 - }, - { - "name" : "minecraft:netherite_shovel", - "id" : 603 - }, - { - "name" : "minecraft:netherite_sword", - "id" : 602 - }, - { - "name" : "minecraft:netherrack", - "id" : 87 - }, - { - "name" : "minecraft:netherreactor", - "id" : 247 - }, - { - "name" : "minecraft:normal_stone_stairs", - "id" : -180 - }, - { - "name" : "minecraft:noteblock", - "id" : 25 - }, - { - "name" : "minecraft:npc_spawn_egg", - "id" : 470 - }, - { - "name" : "minecraft:oak_boat", - "id" : 375 - }, - { - "name" : "minecraft:oak_sign", - "id" : 358 - }, - { - "name" : "minecraft:oak_stairs", - "id" : 53 - }, - { - "name" : "minecraft:observer", - "id" : 251 - }, - { - "name" : "minecraft:obsidian", - "id" : 49 - }, - { - "name" : "minecraft:ocelot_spawn_egg", - "id" : 451 - }, - { - "name" : "minecraft:orange_dye", - "id" : 409 - }, - { - "name" : "minecraft:orange_glazed_terracotta", - "id" : 221 - }, - { - "name" : "minecraft:oxidized_copper", - "id" : -343 - }, - { - "name" : "minecraft:oxidized_cut_copper", - "id" : -350 - }, - { - "name" : "minecraft:oxidized_cut_copper_slab", - "id" : -364 - }, - { - "name" : "minecraft:oxidized_cut_copper_stairs", - "id" : -357 - }, - { - "name" : "minecraft:oxidized_double_cut_copper_slab", - "id" : -371 - }, - { - "name" : "minecraft:packed_ice", - "id" : 174 - }, - { - "name" : "minecraft:painting", - "id" : 357 - }, - { - "name" : "minecraft:panda_spawn_egg", - "id" : 489 - }, - { - "name" : "minecraft:paper", - "id" : 386 - }, - { - "name" : "minecraft:parrot_spawn_egg", - "id" : 478 - }, - { - "name" : "minecraft:phantom_membrane", - "id" : 574 - }, - { - "name" : "minecraft:phantom_spawn_egg", - "id" : 486 - }, - { - "name" : "minecraft:pig_spawn_egg", - "id" : 437 - }, - { - "name" : "minecraft:piglin_banner_pattern", - "id" : 587 - }, - { - "name" : "minecraft:piglin_brute_spawn_egg", - "id" : 499 - }, - { - "name" : "minecraft:piglin_spawn_egg", - "id" : 497 - }, - { - "name" : "minecraft:pillager_spawn_egg", - "id" : 491 - }, - { - "name" : "minecraft:pink_dye", - "id" : 404 - }, - { - "name" : "minecraft:pink_glazed_terracotta", - "id" : 226 - }, - { - "name" : "minecraft:piston", - "id" : 33 - }, - { - "name" : "minecraft:pistonarmcollision", - "id" : 34 - }, - { - "name" : "minecraft:planks", - "id" : 5 - }, - { - "name" : "minecraft:podzol", - "id" : 243 - }, - { - "name" : "minecraft:pointed_dripstone", - "id" : -308 - }, - { - "name" : "minecraft:poisonous_potato", - "id" : 282 - }, - { - "name" : "minecraft:polar_bear_spawn_egg", - "id" : 472 - }, - { - "name" : "minecraft:polished_andesite_stairs", - "id" : -174 - }, - { - "name" : "minecraft:polished_basalt", - "id" : -235 - }, - { - "name" : "minecraft:polished_blackstone", - "id" : -291 - }, - { - "name" : "minecraft:polished_blackstone_brick_double_slab", - "id" : -285 - }, - { - "name" : "minecraft:polished_blackstone_brick_slab", - "id" : -284 - }, - { - "name" : "minecraft:polished_blackstone_brick_stairs", - "id" : -275 - }, - { - "name" : "minecraft:polished_blackstone_brick_wall", - "id" : -278 - }, - { - "name" : "minecraft:polished_blackstone_bricks", - "id" : -274 - }, - { - "name" : "minecraft:polished_blackstone_button", - "id" : -296 - }, - { - "name" : "minecraft:polished_blackstone_double_slab", - "id" : -294 - }, - { - "name" : "minecraft:polished_blackstone_pressure_plate", - "id" : -295 - }, - { - "name" : "minecraft:polished_blackstone_slab", - "id" : -293 - }, - { - "name" : "minecraft:polished_blackstone_stairs", - "id" : -292 - }, - { - "name" : "minecraft:polished_blackstone_wall", - "id" : -297 - }, - { - "name" : "minecraft:polished_deepslate", - "id" : -383 - }, - { - "name" : "minecraft:polished_deepslate_double_slab", - "id" : -397 - }, - { - "name" : "minecraft:polished_deepslate_slab", - "id" : -384 - }, - { - "name" : "minecraft:polished_deepslate_stairs", - "id" : -385 - }, - { - "name" : "minecraft:polished_deepslate_wall", - "id" : -386 - }, - { - "name" : "minecraft:polished_diorite_stairs", - "id" : -173 - }, - { - "name" : "minecraft:polished_granite_stairs", - "id" : -172 - }, - { - "name" : "minecraft:popped_chorus_fruit", - "id" : 559 - }, - { - "name" : "minecraft:porkchop", - "id" : 262 - }, - { - "name" : "minecraft:portal", - "id" : 90 - }, - { - "name" : "minecraft:potato", - "id" : 280 - }, - { - "name" : "minecraft:potatoes", - "id" : 142 - }, - { - "name" : "minecraft:potion", - "id" : 426 - }, - { - "name" : "minecraft:powder_snow", - "id" : -306 - }, - { - "name" : "minecraft:powder_snow_bucket", - "id" : 368 - }, - { - "name" : "minecraft:powered_comparator", - "id" : 150 - }, - { - "name" : "minecraft:powered_repeater", - "id" : 94 - }, - { - "name" : "minecraft:prismarine", - "id" : 168 - }, - { - "name" : "minecraft:prismarine_bricks_stairs", - "id" : -4 - }, - { - "name" : "minecraft:prismarine_crystals", - "id" : 549 - }, - { - "name" : "minecraft:prismarine_shard", - "id" : 565 - }, - { - "name" : "minecraft:prismarine_stairs", - "id" : -2 - }, - { - "name" : "minecraft:pufferfish", - "id" : 267 - }, - { - "name" : "minecraft:pufferfish_bucket", - "id" : 367 - }, - { - "name" : "minecraft:pufferfish_spawn_egg", - "id" : 481 - }, - { - "name" : "minecraft:pumpkin", - "id" : 86 - }, - { - "name" : "minecraft:pumpkin_pie", - "id" : 284 - }, - { - "name" : "minecraft:pumpkin_seeds", - "id" : 292 - }, - { - "name" : "minecraft:pumpkin_stem", - "id" : 104 - }, - { - "name" : "minecraft:purple_dye", - "id" : 400 - }, - { - "name" : "minecraft:purple_glazed_terracotta", - "id" : 219 - }, - { - "name" : "minecraft:purpur_block", - "id" : 201 - }, - { - "name" : "minecraft:purpur_stairs", - "id" : 203 - }, - { - "name" : "minecraft:quartz", - "id" : 524 - }, - { - "name" : "minecraft:quartz_block", - "id" : 155 - }, - { - "name" : "minecraft:quartz_bricks", - "id" : -304 - }, - { - "name" : "minecraft:quartz_ore", - "id" : 153 - }, - { - "name" : "minecraft:quartz_stairs", - "id" : 156 - }, - { - "name" : "minecraft:rabbit", - "id" : 288 - }, - { - "name" : "minecraft:rabbit_foot", - "id" : 528 - }, - { - "name" : "minecraft:rabbit_hide", - "id" : 529 - }, - { - "name" : "minecraft:rabbit_spawn_egg", - "id" : 459 - }, - { - "name" : "minecraft:rabbit_stew", - "id" : 290 - }, - { - "name" : "minecraft:rail", - "id" : 66 - }, - { - "name" : "minecraft:rapid_fertilizer", - "id" : 596 - }, - { - "name" : "minecraft:ravager_spawn_egg", - "id" : 493 - }, - { - "name" : "minecraft:raw_copper", - "id" : 507 - }, - { - "name" : "minecraft:raw_copper_block", - "id" : -452 - }, - { - "name" : "minecraft:raw_gold", - "id" : 506 - }, - { - "name" : "minecraft:raw_gold_block", - "id" : -453 - }, - { - "name" : "minecraft:raw_iron", - "id" : 505 - }, - { - "name" : "minecraft:raw_iron_block", - "id" : -451 - }, - { - "name" : "minecraft:real_double_stone_slab", - "id" : 43 - }, - { - "name" : "minecraft:real_double_stone_slab2", - "id" : 181 - }, - { - "name" : "minecraft:real_double_stone_slab3", - "id" : -167 - }, - { - "name" : "minecraft:real_double_stone_slab4", - "id" : -168 - }, - { - "name" : "minecraft:red_dye", - "id" : 396 - }, - { - "name" : "minecraft:red_flower", - "id" : 38 - }, - { - "name" : "minecraft:red_glazed_terracotta", - "id" : 234 - }, - { - "name" : "minecraft:red_mushroom", - "id" : 40 - }, - { - "name" : "minecraft:red_mushroom_block", - "id" : 100 - }, - { - "name" : "minecraft:red_nether_brick", - "id" : 215 - }, - { - "name" : "minecraft:red_nether_brick_stairs", - "id" : -184 - }, - { - "name" : "minecraft:red_sandstone", - "id" : 179 - }, - { - "name" : "minecraft:red_sandstone_stairs", - "id" : 180 - }, - { - "name" : "minecraft:redstone", - "id" : 373 - }, - { - "name" : "minecraft:redstone_block", - "id" : 152 - }, - { - "name" : "minecraft:redstone_lamp", - "id" : 123 - }, - { - "name" : "minecraft:redstone_ore", - "id" : 73 - }, - { - "name" : "minecraft:redstone_torch", - "id" : 76 - }, - { - "name" : "minecraft:redstone_wire", - "id" : 55 - }, - { - "name" : "minecraft:repeater", - "id" : 419 - }, - { - "name" : "minecraft:repeating_command_block", - "id" : 188 - }, - { - "name" : "minecraft:reserved6", - "id" : 255 - }, - { - "name" : "minecraft:respawn_anchor", - "id" : -272 - }, - { - "name" : "minecraft:rotten_flesh", - "id" : 277 - }, - { - "name" : "minecraft:saddle", - "id" : 371 - }, - { - "name" : "minecraft:salmon", - "id" : 265 - }, - { - "name" : "minecraft:salmon_bucket", - "id" : 365 - }, - { - "name" : "minecraft:salmon_spawn_egg", - "id" : 482 - }, - { - "name" : "minecraft:sand", - "id" : 12 - }, - { - "name" : "minecraft:sandstone", - "id" : 24 - }, - { - "name" : "minecraft:sandstone_stairs", - "id" : 128 - }, - { - "name" : "minecraft:sapling", - "id" : 6 - }, - { - "name" : "minecraft:scaffolding", - "id" : -165 - }, - { - "name" : "minecraft:sculk_sensor", - "id" : -307 - }, - { - "name" : "minecraft:scute", - "id" : 572 - }, - { - "name" : "minecraft:sea_pickle", - "id" : -156 - }, - { - "name" : "minecraft:seagrass", - "id" : -130 - }, - { - "name" : "minecraft:sealantern", - "id" : 169 - }, - { - "name" : "minecraft:shears", - "id" : 421 - }, - { - "name" : "minecraft:sheep_spawn_egg", - "id" : 438 - }, - { - "name" : "minecraft:shield", - "id" : 355 - }, - { - "name" : "minecraft:shroomlight", - "id" : -230 - }, - { - "name" : "minecraft:shulker_box", - "id" : 218 - }, - { - "name" : "minecraft:shulker_shell", - "id" : 566 - }, - { - "name" : "minecraft:shulker_spawn_egg", - "id" : 469 - }, - { - "name" : "minecraft:silver_glazed_terracotta", - "id" : 228 - }, - { - "name" : "minecraft:silverfish_spawn_egg", - "id" : 443 - }, - { - "name" : "minecraft:skeleton_horse_spawn_egg", - "id" : 467 - }, - { - "name" : "minecraft:skeleton_spawn_egg", - "id" : 444 - }, - { - "name" : "minecraft:skull", - "id" : 516 - }, - { - "name" : "minecraft:skull_banner_pattern", - "id" : 583 - }, - { - "name" : "minecraft:slime", - "id" : 165 - }, - { - "name" : "minecraft:slime_ball", - "id" : 388 - }, - { - "name" : "minecraft:slime_spawn_egg", - "id" : 445 - }, - { - "name" : "minecraft:small_amethyst_bud", - "id" : -332 - }, - { - "name" : "minecraft:small_dripleaf_block", - "id" : -336 - }, - { - "name" : "minecraft:smithing_table", - "id" : -202 - }, - { - "name" : "minecraft:smoker", - "id" : -198 - }, - { - "name" : "minecraft:smooth_basalt", - "id" : -377 - }, - { - "name" : "minecraft:smooth_quartz_stairs", - "id" : -185 - }, - { - "name" : "minecraft:smooth_red_sandstone_stairs", - "id" : -176 - }, - { - "name" : "minecraft:smooth_sandstone_stairs", - "id" : -177 - }, - { - "name" : "minecraft:smooth_stone", - "id" : -183 - }, - { - "name" : "minecraft:snow", - "id" : 80 - }, - { - "name" : "minecraft:snow_layer", - "id" : 78 - }, - { - "name" : "minecraft:snowball", - "id" : 374 - }, - { - "name" : "minecraft:soul_campfire", - "id" : 620 - }, - { - "name" : "minecraft:soul_fire", - "id" : -237 - }, - { - "name" : "minecraft:soul_lantern", - "id" : -269 - }, - { - "name" : "minecraft:soul_sand", - "id" : 88 - }, - { - "name" : "minecraft:soul_soil", - "id" : -236 - }, - { - "name" : "minecraft:soul_torch", - "id" : -268 - }, - { - "name" : "minecraft:sparkler", - "id" : 599 - }, - { - "name" : "minecraft:spawn_egg", - "id" : 628 - }, - { - "name" : "minecraft:spider_eye", - "id" : 278 - }, - { - "name" : "minecraft:spider_spawn_egg", - "id" : 446 - }, - { - "name" : "minecraft:splash_potion", - "id" : 561 - }, - { - "name" : "minecraft:sponge", - "id" : 19 - }, - { - "name" : "minecraft:spore_blossom", - "id" : -321 - }, - { - "name" : "minecraft:spruce_boat", - "id" : 378 - }, - { - "name" : "minecraft:spruce_button", - "id" : -144 - }, - { - "name" : "minecraft:spruce_door", - "id" : 553 - }, - { - "name" : "minecraft:spruce_fence_gate", - "id" : 183 - }, - { - "name" : "minecraft:spruce_pressure_plate", - "id" : -154 - }, - { - "name" : "minecraft:spruce_sign", - "id" : 576 - }, - { - "name" : "minecraft:spruce_stairs", - "id" : 134 - }, - { - "name" : "minecraft:spruce_standing_sign", - "id" : -181 - }, - { - "name" : "minecraft:spruce_trapdoor", - "id" : -149 - }, - { - "name" : "minecraft:spruce_wall_sign", - "id" : -182 - }, - { - "name" : "minecraft:spyglass", - "id" : 624 - }, - { - "name" : "minecraft:squid_spawn_egg", - "id" : 450 - }, - { - "name" : "minecraft:stained_glass", - "id" : 241 - }, - { - "name" : "minecraft:stained_glass_pane", - "id" : 160 - }, - { - "name" : "minecraft:stained_hardened_clay", - "id" : 159 - }, - { - "name" : "minecraft:standing_banner", - "id" : 176 - }, - { - "name" : "minecraft:standing_sign", - "id" : 63 - }, - { - "name" : "minecraft:stick", - "id" : 320 - }, - { - "name" : "minecraft:sticky_piston", - "id" : 29 - }, - { - "name" : "minecraft:stickypistonarmcollision", - "id" : -217 - }, - { - "name" : "minecraft:stone", - "id" : 1 - }, - { - "name" : "minecraft:stone_axe", - "id" : 315 - }, - { - "name" : "minecraft:stone_brick_stairs", - "id" : 109 - }, - { - "name" : "minecraft:stone_button", - "id" : 77 - }, - { - "name" : "minecraft:stone_hoe", - "id" : 330 - }, - { - "name" : "minecraft:stone_pickaxe", - "id" : 314 - }, - { - "name" : "minecraft:stone_pressure_plate", - "id" : 70 - }, - { - "name" : "minecraft:stone_shovel", - "id" : 313 - }, - { - "name" : "minecraft:stone_stairs", - "id" : 67 - }, - { - "name" : "minecraft:stone_sword", - "id" : 312 - }, - { - "name" : "minecraft:stonebrick", - "id" : 98 - }, - { - "name" : "minecraft:stonecutter", - "id" : 245 - }, - { - "name" : "minecraft:stonecutter_block", - "id" : -197 - }, - { - "name" : "minecraft:stray_spawn_egg", - "id" : 462 - }, - { - "name" : "minecraft:strider_spawn_egg", - "id" : 495 - }, - { - "name" : "minecraft:string", - "id" : 326 - }, - { - "name" : "minecraft:stripped_acacia_log", - "id" : -8 - }, - { - "name" : "minecraft:stripped_birch_log", - "id" : -6 - }, - { - "name" : "minecraft:stripped_crimson_hyphae", - "id" : -300 - }, - { - "name" : "minecraft:stripped_crimson_stem", - "id" : -240 - }, - { - "name" : "minecraft:stripped_dark_oak_log", - "id" : -9 - }, - { - "name" : "minecraft:stripped_jungle_log", - "id" : -7 - }, - { - "name" : "minecraft:stripped_oak_log", - "id" : -10 - }, - { - "name" : "minecraft:stripped_spruce_log", - "id" : -5 - }, - { - "name" : "minecraft:stripped_warped_hyphae", - "id" : -301 - }, - { - "name" : "minecraft:stripped_warped_stem", - "id" : -241 - }, - { - "name" : "minecraft:structure_block", - "id" : 252 - }, - { - "name" : "minecraft:structure_void", - "id" : 217 - }, - { - "name" : "minecraft:sugar", - "id" : 416 - }, - { - "name" : "minecraft:sugar_cane", - "id" : 385 - }, - { - "name" : "minecraft:suspicious_stew", - "id" : 589 - }, - { - "name" : "minecraft:sweet_berries", - "id" : 287 - }, - { - "name" : "minecraft:sweet_berry_bush", - "id" : -207 - }, - { - "name" : "minecraft:tallgrass", - "id" : 31 - }, - { - "name" : "minecraft:target", - "id" : -239 - }, - { - "name" : "minecraft:tinted_glass", - "id" : -334 - }, - { - "name" : "minecraft:tnt", - "id" : 46 - }, - { - "name" : "minecraft:tnt_minecart", - "id" : 525 - }, - { - "name" : "minecraft:torch", - "id" : 50 - }, - { - "name" : "minecraft:totem_of_undying", - "id" : 568 - }, - { - "name" : "minecraft:trapdoor", - "id" : 96 - }, - { - "name" : "minecraft:trapped_chest", - "id" : 146 - }, - { - "name" : "minecraft:trident", - "id" : 546 - }, - { - "name" : "minecraft:tripwire", - "id" : 132 - }, - { - "name" : "minecraft:tripwire_hook", - "id" : 131 - }, - { - "name" : "minecraft:tropical_fish", - "id" : 266 - }, - { - "name" : "minecraft:tropical_fish_bucket", - "id" : 366 - }, - { - "name" : "minecraft:tropical_fish_spawn_egg", - "id" : 479 - }, - { - "name" : "minecraft:tuff", - "id" : -333 - }, - { - "name" : "minecraft:turtle_egg", - "id" : -159 - }, - { - "name" : "minecraft:turtle_helmet", - "id" : 573 - }, - { - "name" : "minecraft:turtle_spawn_egg", - "id" : 485 - }, - { - "name" : "minecraft:twisting_vines", - "id" : -287 - }, - { - "name" : "minecraft:underwater_torch", - "id" : 239 - }, - { - "name" : "minecraft:undyed_shulker_box", - "id" : 205 - }, - { - "name" : "minecraft:unknown", - "id" : -305 - }, - { - "name" : "minecraft:unlit_redstone_torch", - "id" : 75 - }, - { - "name" : "minecraft:unpowered_comparator", - "id" : 149 - }, - { - "name" : "minecraft:unpowered_repeater", - "id" : 93 - }, - { - "name" : "minecraft:vex_spawn_egg", - "id" : 476 - }, - { - "name" : "minecraft:villager_spawn_egg", - "id" : 449 - }, - { - "name" : "minecraft:vindicator_spawn_egg", - "id" : 474 - }, - { - "name" : "minecraft:vine", - "id" : 106 - }, - { - "name" : "minecraft:wall_banner", - "id" : 177 - }, - { - "name" : "minecraft:wall_sign", - "id" : 68 - }, - { - "name" : "minecraft:wandering_trader_spawn_egg", - "id" : 492 - }, - { - "name" : "minecraft:warped_button", - "id" : -261 - }, - { - "name" : "minecraft:warped_door", - "id" : 615 - }, - { - "name" : "minecraft:warped_double_slab", - "id" : -267 - }, - { - "name" : "minecraft:warped_fence", - "id" : -257 - }, - { - "name" : "minecraft:warped_fence_gate", - "id" : -259 - }, - { - "name" : "minecraft:warped_fungus", - "id" : -229 - }, - { - "name" : "minecraft:warped_fungus_on_a_stick", - "id" : 616 - }, - { - "name" : "minecraft:warped_hyphae", - "id" : -298 - }, - { - "name" : "minecraft:warped_nylium", - "id" : -233 - }, - { - "name" : "minecraft:warped_planks", - "id" : -243 - }, - { - "name" : "minecraft:warped_pressure_plate", - "id" : -263 - }, - { - "name" : "minecraft:warped_roots", - "id" : -224 - }, - { - "name" : "minecraft:warped_sign", - "id" : 613 - }, - { - "name" : "minecraft:warped_slab", - "id" : -265 - }, - { - "name" : "minecraft:warped_stairs", - "id" : -255 - }, - { - "name" : "minecraft:warped_standing_sign", - "id" : -251 - }, - { - "name" : "minecraft:warped_stem", - "id" : -226 - }, - { - "name" : "minecraft:warped_trapdoor", - "id" : -247 - }, - { - "name" : "minecraft:warped_wall_sign", - "id" : -253 - }, - { - "name" : "minecraft:warped_wart_block", - "id" : -227 - }, - { - "name" : "minecraft:water", - "id" : 9 - }, - { - "name" : "minecraft:water_bucket", - "id" : 362 - }, - { - "name" : "minecraft:waterlily", - "id" : 111 - }, - { - "name" : "minecraft:waxed_copper", - "id" : -344 - }, - { - "name" : "minecraft:waxed_cut_copper", - "id" : -351 - }, - { - "name" : "minecraft:waxed_cut_copper_slab", - "id" : -365 - }, - { - "name" : "minecraft:waxed_cut_copper_stairs", - "id" : -358 - }, - { - "name" : "minecraft:waxed_double_cut_copper_slab", - "id" : -372 - }, - { - "name" : "minecraft:waxed_exposed_copper", - "id" : -345 - }, - { - "name" : "minecraft:waxed_exposed_cut_copper", - "id" : -352 - }, - { - "name" : "minecraft:waxed_exposed_cut_copper_slab", - "id" : -366 - }, - { - "name" : "minecraft:waxed_exposed_cut_copper_stairs", - "id" : -359 - }, - { - "name" : "minecraft:waxed_exposed_double_cut_copper_slab", - "id" : -373 - }, - { - "name" : "minecraft:waxed_oxidized_copper", - "id" : -446 - }, - { - "name" : "minecraft:waxed_oxidized_cut_copper", - "id" : -447 - }, - { - "name" : "minecraft:waxed_oxidized_cut_copper_slab", - "id" : -449 - }, - { - "name" : "minecraft:waxed_oxidized_cut_copper_stairs", - "id" : -448 - }, - { - "name" : "minecraft:waxed_oxidized_double_cut_copper_slab", - "id" : -450 - }, - { - "name" : "minecraft:waxed_weathered_copper", - "id" : -346 - }, - { - "name" : "minecraft:waxed_weathered_cut_copper", - "id" : -353 - }, - { - "name" : "minecraft:waxed_weathered_cut_copper_slab", - "id" : -367 - }, - { - "name" : "minecraft:waxed_weathered_cut_copper_stairs", - "id" : -360 - }, - { - "name" : "minecraft:waxed_weathered_double_cut_copper_slab", - "id" : -374 - }, - { - "name" : "minecraft:weathered_copper", - "id" : -342 - }, - { - "name" : "minecraft:weathered_cut_copper", - "id" : -349 - }, - { - "name" : "minecraft:weathered_cut_copper_slab", - "id" : -363 - }, - { - "name" : "minecraft:weathered_cut_copper_stairs", - "id" : -356 - }, - { - "name" : "minecraft:weathered_double_cut_copper_slab", - "id" : -370 - }, - { - "name" : "minecraft:web", - "id" : 30 - }, - { - "name" : "minecraft:weeping_vines", - "id" : -231 - }, - { - "name" : "minecraft:wheat", - "id" : 334 - }, - { - "name" : "minecraft:wheat_seeds", - "id" : 291 - }, - { - "name" : "minecraft:white_dye", - "id" : 410 - }, - { - "name" : "minecraft:white_glazed_terracotta", - "id" : 220 - }, - { - "name" : "minecraft:witch_spawn_egg", - "id" : 452 - }, - { - "name" : "minecraft:wither_rose", - "id" : -216 - }, - { - "name" : "minecraft:wither_skeleton_spawn_egg", - "id" : 464 - }, - { - "name" : "minecraft:wolf_spawn_egg", - "id" : 439 - }, - { - "name" : "minecraft:wood", - "id" : -212 - }, - { - "name" : "minecraft:wooden_axe", - "id" : 311 - }, - { - "name" : "minecraft:wooden_button", - "id" : 143 - }, - { - "name" : "minecraft:wooden_door", - "id" : 359 - }, - { - "name" : "minecraft:wooden_hoe", - "id" : 329 - }, - { - "name" : "minecraft:wooden_pickaxe", - "id" : 310 - }, - { - "name" : "minecraft:wooden_pressure_plate", - "id" : 72 - }, - { - "name" : "minecraft:wooden_shovel", - "id" : 309 - }, - { - "name" : "minecraft:wooden_slab", - "id" : 158 - }, - { - "name" : "minecraft:wooden_sword", - "id" : 308 - }, - { - "name" : "minecraft:wool", - "id" : 35 - }, - { - "name" : "minecraft:writable_book", - "id" : 510 - }, - { - "name" : "minecraft:written_book", - "id" : 511 - }, - { - "name" : "minecraft:yellow_dye", - "id" : 406 - }, - { - "name" : "minecraft:yellow_flower", - "id" : 37 - }, - { - "name" : "minecraft:yellow_glazed_terracotta", - "id" : 224 - }, - { - "name" : "minecraft:zoglin_spawn_egg", - "id" : 498 - }, - { - "name" : "minecraft:zombie_horse_spawn_egg", - "id" : 468 - }, - { - "name" : "minecraft:zombie_pigman_spawn_egg", - "id" : 448 - }, - { - "name" : "minecraft:zombie_spawn_egg", - "id" : 447 - }, - { - "name" : "minecraft:zombie_villager_spawn_egg", - "id" : 477 - } -] \ No newline at end of file diff --git a/pom.xml b/pom.xml index 43baad6ea..dd4a6b020 100644 --- a/pom.xml +++ b/pom.xml @@ -5,7 +5,7 @@ 4.0.0 org.geysermc geyser-parent - 1.4.2-SNAPSHOT + 1.4.3-SNAPSHOT pom Geyser Allows for players from Minecraft Bedrock Edition to join Minecraft Java Edition servers. @@ -15,8 +15,8 @@ Geyser UTF-8 UTF-8 - 1.8 - 1.8 + 16 + 16 @@ -37,6 +37,14 @@ connector + + + + apache.snapshots + https://repository.apache.org/snapshots/ + + + jitpack.io