From bc0cfde8f9ac442001913b3bd06f00868ab9d0be Mon Sep 17 00:00:00 2001 From: Camotoy <20743703+Camotoy@users.noreply.github.com> Date: Fri, 10 Sep 2021 14:10:56 -0400 Subject: [PATCH] Set the minimum Java version to 16; drop Bedrock 1.17.0 (#2477) --- .github/workflows/pullrequest.yml | 4 +- ap/pom.xml | 4 +- bootstrap/bungeecord/pom.xml | 6 +- .../command/BungeeCommandSender.java | 3 +- bootstrap/pom.xml | 4 +- bootstrap/spigot/pom.xml | 6 +- .../spigot/command/SpigotCommandSender.java | 3 +- .../GeyserSpigot1_11CraftingListener.java | 6 +- .../manager/GeyserSpigotWorldManager.java | 6 +- bootstrap/sponge/pom.xml | 6 +- bootstrap/standalone/pom.xml | 6 +- .../standalone/GeyserStandaloneBootstrap.java | 26 +- .../platform/standalone/gui/GraphPanel.java | 3 +- bootstrap/velocity/pom.xml | 6 +- common/pom.xml | 2 +- connector/pom.xml | 6 +- .../geysermc/connector/GeyserConnector.java | 31 - .../command/defaults/DumpCommand.java | 12 +- .../EmoteOffhandWorkaroundOption.java | 13 +- .../connector/entity/EnderCrystalEntity.java | 3 +- .../org/geysermc/connector/entity/Entity.java | 8 +- .../connector/entity/LivingEntity.java | 50 +- .../connector/entity/PaintingEntity.java | 14 +- .../entity/living/ArmorStandEntity.java | 24 +- .../entity/living/animal/AxolotlEntity.java | 8 +- .../living/animal/tameable/CatEntity.java | 25 +- .../raid/SpellcasterIllagerEntity.java | 20 +- .../connector/entity/player/PlayerEntity.java | 13 +- .../connector/network/BedrockProtocol.java | 7 - .../network/ConnectorServerEventHandler.java | 4 +- .../session/cache/EntityEffectCache.java | 24 +- .../bedrock/BedrockAnimateTranslator.java | 11 +- .../BedrockCommandBlockUpdateTranslator.java | 20 +- .../BedrockEntityPickRequestTranslator.java | 71 +- ...BedrockInventoryTransactionTranslator.java | 34 +- .../BedrockLecternUpdateTranslator.java | 3 +- .../entity/BedrockEntityEventTranslator.java | 9 +- .../translators/chat/MessageTranslator.java | 2 +- .../translators/collision/BoundingBox.java | 37 +- .../collision/CollisionManager.java | 13 +- .../collision/translators/DoorCollision.java | 16 +- .../inventory/InventoryTranslator.java | 31 +- .../inventory/click/ClickPlan.java | 15 +- .../translators/AnvilInventoryTranslator.java | 46 +- .../BrewingInventoryTranslator.java | 38 +- .../CartographyInventoryTranslator.java | 46 +- .../GrindstoneInventoryTranslator.java | 46 +- .../translators/LoomInventoryTranslator.java | 58 +- .../MerchantInventoryTranslator.java | 46 +- .../PlayerInventoryTranslator.java | 16 +- .../SmithingInventoryTranslator.java | 46 +- .../StonecutterInventoryTranslator.java | 16 +- .../translators/item/ItemTranslator.java | 9 +- .../translators/nbt/BookPagesTranslator.java | 8 +- .../nbt/EnchantmentTranslator.java | 3 +- .../translators/java/JavaChatTranslator.java | 20 +- .../java/JavaDeclareCommandsTranslator.java | 80 +- .../java/JavaDeclareRecipesTranslator.java | 14 +- .../entity/JavaEntityEquipmentTranslator.java | 27 +- .../JavaEntitySetPassengersTranslator.java | 8 +- .../entity/JavaEntityStatusTranslator.java | 3 +- .../player/JavaPlayerListEntryTranslator.java | 8 +- .../JavaScoreboardObjectiveTranslator.java | 11 +- .../java/scoreboard/JavaTeamTranslator.java | 30 +- .../world/JavaBlockBreakAnimTranslator.java | 44 +- .../java/world/JavaBlockValueTranslator.java | 30 +- .../world/JavaNotifyClientTranslator.java | 8 +- .../java/world/JavaPlayEffectTranslator.java | 101 +- .../world/JavaSpawnParticleTranslator.java | 11 +- .../java/world/JavaTradeListTranslator.java | 3 +- .../translators/world/BiomeTranslator.java | 42 +- .../world/block/BlockStateValues.java | 37 +- .../world/block/entity/PistonBlockEntity.java | 53 +- .../entity/SignBlockEntityTranslator.java | 71 +- .../entity/SkullBlockEntityTranslator.java | 20 +- .../loader/SoundEffectsRegistryLoader.java | 9 +- .../populator/BlockRegistryPopulator.java | 47 +- .../populator/ItemRegistryPopulator.java | 22 - .../connector/scoreboard/Objective.java | 26 +- .../connector/scoreboard/Scoreboard.java | 8 +- .../geysermc/connector/scoreboard/Team.java | 17 +- .../connector/skin/FloodgateSkinUploader.java | 16 +- .../geysermc/connector/skin/SkinProvider.java | 20 +- .../org/geysermc/connector/utils/Axis.java | 14 +- .../geysermc/connector/utils/BlockUtils.java | 49 +- .../geysermc/connector/utils/ChunkUtils.java | 3 +- .../connector/utils/DimensionUtils.java | 13 +- .../geysermc/connector/utils/EntityUtils.java | 90 +- .../geysermc/connector/utils/SignUtils.java | 54 +- .../bedrock/block_palette.1_17_0.nbt | Bin 40439 -> 0 bytes .../bedrock/creative_items.1_17_0.json | 5135 ----------------- .../bedrock/runtime_item_states.1_17_0.json | 4154 ------------- pom.xml | 14 +- 93 files changed, 668 insertions(+), 10637 deletions(-) delete mode 100644 connector/src/main/resources/bedrock/block_palette.1_17_0.nbt delete mode 100644 connector/src/main/resources/bedrock/creative_items.1_17_0.json delete mode 100644 connector/src/main/resources/bedrock/runtime_item_states.1_17_0.json 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 c4f908b5e7e20bfb446ca1a46521a5cff25a426a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 40439 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 VAIS)7nt6Z^COkccFUEfK{{iHuH@W}- 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