From 3fa364b448e4939ec22750fcd94f02285519c31f Mon Sep 17 00:00:00 2001 From: JOO200 Date: Tue, 28 Dec 2021 12:16:16 +0100 Subject: [PATCH 01/55] Fix for #1983, Use Math.floor instead of int cast (#1986) --- .../java/com/sk89q/worldedit/math/convolution/HeightMap.java | 4 ++-- .../com/sk89q/worldedit/math/convolution/HeightMapFilter.java | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/worldedit-core/src/main/java/com/sk89q/worldedit/math/convolution/HeightMap.java b/worldedit-core/src/main/java/com/sk89q/worldedit/math/convolution/HeightMap.java index c356c0787a..c58e874ce9 100644 --- a/worldedit-core/src/main/java/com/sk89q/worldedit/math/convolution/HeightMap.java +++ b/worldedit-core/src/main/java/com/sk89q/worldedit/math/convolution/HeightMap.java @@ -144,7 +144,7 @@ public int apply(int[] data) throws MaxChangedBlocksException { // Grow -- start from 1 below top replacing airblocks for (int y = newHeight - 1 - originY; y >= 0; --y) { - int copyFrom = (int) (y * scale); + int copyFrom = (int) Math.floor(y * scale); session.setBlock(BlockVector3.at(xr, originY + y, zr), session.getBlock(BlockVector3.at(xr, originY + copyFrom, zr))); ++blocksChanged; } @@ -152,7 +152,7 @@ public int apply(int[] data) throws MaxChangedBlocksException { } else if (curHeight > newHeight) { // Shrink -- start from bottom for (int y = 0; y < newHeight - originY; ++y) { - int copyFrom = (int) (y * scale); + int copyFrom = (int) Math.floor(y * scale); session.setBlock(BlockVector3.at(xr, originY + y, zr), session.getBlock(BlockVector3.at(xr, originY + copyFrom, zr))); ++blocksChanged; } diff --git a/worldedit-core/src/main/java/com/sk89q/worldedit/math/convolution/HeightMapFilter.java b/worldedit-core/src/main/java/com/sk89q/worldedit/math/convolution/HeightMapFilter.java index 73126c34fc..03339015bb 100644 --- a/worldedit-core/src/main/java/com/sk89q/worldedit/math/convolution/HeightMapFilter.java +++ b/worldedit-core/src/main/java/com/sk89q/worldedit/math/convolution/HeightMapFilter.java @@ -120,7 +120,7 @@ public int[] filter(int[] inData, int width, int height) { z += f * inData[offsetY + offsetX]; } } - outData[index++] = (int) (z + 0.5); + outData[index++] = (int) Math.floor(z + 0.5); } } return outData; From fb5ec199425b78957f65ebab7aad9d69fc509d17 Mon Sep 17 00:00:00 2001 From: Octavia Togami Date: Sun, 2 Jan 2022 15:52:23 -0800 Subject: [PATCH 02/55] Fix error for snapshot restore missing chunk --- .../java/com/sk89q/worldedit/world/storage/McRegionReader.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/worldedit-core/src/main/java/com/sk89q/worldedit/world/storage/McRegionReader.java b/worldedit-core/src/main/java/com/sk89q/worldedit/world/storage/McRegionReader.java index 6131be919a..789bdc4d39 100644 --- a/worldedit-core/src/main/java/com/sk89q/worldedit/world/storage/McRegionReader.java +++ b/worldedit-core/src/main/java/com/sk89q/worldedit/world/storage/McRegionReader.java @@ -126,7 +126,7 @@ public synchronized InputStream getChunkInputStream(BlockVector2 position) throw // The chunk hasn't been generated if (offset == 0) { - throw new DataException("The chunk at " + x + "," + z + " is not generated"); + throw new DataException("The chunk at " + position + " is not generated"); } int sectorNumber = offset >> 8; From 512a07ea5dcd5342574827f516dd97c3edd12d82 Mon Sep 17 00:00:00 2001 From: Maddy Miller Date: Fri, 7 Jan 2022 14:52:12 +1000 Subject: [PATCH 03/55] Add the UPDATE SideEffect to Forge (#2000) --- buildSrc/build.gradle.kts | 1 + worldedit-forge/build.gradle.kts | 7 ++ .../sk89q/worldedit/forge/ForgePlatform.java | 13 ++- .../forge/internal/ExtendedChunk.java | 43 ++++++++++ .../internal/ForgeWorldNativeAccess.java | 5 ++ .../mixin/MixinLevelChunkSetBlockHook.java | 85 +++++++++++++++++++ .../src/main/resources/worldedit.mixins.json | 13 +++ 7 files changed, 165 insertions(+), 2 deletions(-) create mode 100644 worldedit-forge/src/main/java/com/sk89q/worldedit/forge/internal/ExtendedChunk.java create mode 100644 worldedit-forge/src/main/java/com/sk89q/worldedit/forge/mixin/MixinLevelChunkSetBlockHook.java create mode 100644 worldedit-forge/src/main/resources/worldedit.mixins.json diff --git a/buildSrc/build.gradle.kts b/buildSrc/build.gradle.kts index b6be0fdfde..1b79270374 100644 --- a/buildSrc/build.gradle.kts +++ b/buildSrc/build.gradle.kts @@ -56,4 +56,5 @@ dependencies { implementation("net.fabricmc:sponge-mixin:$mixinVersion") implementation("org.enginehub.gradle:gradle-codecov-plugin:0.1.0") implementation("io.papermc.paperweight.userdev:io.papermc.paperweight.userdev.gradle.plugin:1.3.3") + implementation("org.spongepowered:mixingradle:0.7.32") } diff --git a/worldedit-forge/build.gradle.kts b/worldedit-forge/build.gradle.kts index c9fb12b1cc..16af6d410a 100644 --- a/worldedit-forge/build.gradle.kts +++ b/worldedit-forge/build.gradle.kts @@ -5,6 +5,7 @@ import net.minecraftforge.gradle.userdev.tasks.RenameJarInPlace plugins { id("net.minecraftforge.gradle") + id("org.spongepowered.mixin") `java-library` } @@ -29,6 +30,7 @@ dependencies { }) "minecraft"("net.minecraftforge:forge:$minecraftVersion-$forgeVersion") + "annotationProcessor"("org.spongepowered:mixin:0.8.5:processor") } configure { @@ -54,6 +56,11 @@ configure { } +configure { + add(sourceSets["main"], "worldedit.mixins.refmap.json") + config("worldedit.mixins.json") +} + configure { archivesBaseName = "$archivesBaseName-mc$minecraftVersion" } diff --git a/worldedit-forge/src/main/java/com/sk89q/worldedit/forge/ForgePlatform.java b/worldedit-forge/src/main/java/com/sk89q/worldedit/forge/ForgePlatform.java index 876e5c36b2..39c08d6452 100644 --- a/worldedit-forge/src/main/java/com/sk89q/worldedit/forge/ForgePlatform.java +++ b/worldedit-forge/src/main/java/com/sk89q/worldedit/forge/ForgePlatform.java @@ -19,6 +19,7 @@ package com.sk89q.worldedit.forge; +import com.google.common.collect.Iterables; import com.google.common.collect.Sets; import com.sk89q.worldedit.WorldEdit; import com.sk89q.worldedit.command.util.PermissionCondition; @@ -28,6 +29,7 @@ import com.sk89q.worldedit.extension.platform.Capability; import com.sk89q.worldedit.extension.platform.MultiUserPlatform; import com.sk89q.worldedit.extension.platform.Preference; +import com.sk89q.worldedit.forge.internal.ExtendedChunk; import com.sk89q.worldedit.util.SideEffect; import com.sk89q.worldedit.util.io.ResourceLoader; import com.sk89q.worldedit.world.DataFixer; @@ -41,6 +43,7 @@ import net.minecraft.server.level.ServerLevel; import net.minecraft.server.level.ServerPlayer; import net.minecraft.server.players.PlayerList; +import net.minecraft.world.level.chunk.LevelChunk; import net.minecraft.world.level.storage.ServerLevelData; import net.minecraftforge.server.ServerLifecycleHooks; import org.enginehub.piston.Command; @@ -212,7 +215,7 @@ public Map getCapabilities() { return capabilities; } - private static final Set SUPPORTED_SIDE_EFFECTS = Sets.immutableEnumSet( + private static final Set SUPPORTED_SIDE_EFFECTS_NO_MIXIN = Sets.immutableEnumSet( SideEffect.VALIDATION, SideEffect.ENTITY_AI, SideEffect.LIGHTING, @@ -220,9 +223,15 @@ public Map getCapabilities() { SideEffect.EVENTS ); + private static final Set SUPPORTED_SIDE_EFFECTS = Sets.immutableEnumSet( + Iterables.concat(SUPPORTED_SIDE_EFFECTS_NO_MIXIN, Collections.singleton(SideEffect.UPDATE)) + ); + @Override public Set getSupportedSideEffects() { - return SUPPORTED_SIDE_EFFECTS; + return ExtendedChunk.class.isAssignableFrom(LevelChunk.class) + ? SUPPORTED_SIDE_EFFECTS + : SUPPORTED_SIDE_EFFECTS_NO_MIXIN; } @Override diff --git a/worldedit-forge/src/main/java/com/sk89q/worldedit/forge/internal/ExtendedChunk.java b/worldedit-forge/src/main/java/com/sk89q/worldedit/forge/internal/ExtendedChunk.java new file mode 100644 index 0000000000..7fb97026dc --- /dev/null +++ b/worldedit-forge/src/main/java/com/sk89q/worldedit/forge/internal/ExtendedChunk.java @@ -0,0 +1,43 @@ +/* + * WorldEdit, a Minecraft world manipulation toolkit + * Copyright (C) sk89q + * Copyright (C) WorldEdit team and contributors + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +package com.sk89q.worldedit.forge.internal; + +import com.sk89q.worldedit.util.SideEffect; +import net.minecraft.core.BlockPos; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.level.chunk.ChunkAccess; + +import javax.annotation.Nullable; + +public interface ExtendedChunk { + /** + * {@link ChunkAccess#setBlockState(BlockPos, BlockState, boolean)} with the extra + * {@link SideEffect#UPDATE} flag. + * + * @param pos the position to set + * @param state the state to set + * @param moved I honestly have no idea and can't be bothered to investigate, we pass {@code + * false} + * @param update the update flag, see side-effect for details + * @return the old block state, or {@code null} if unchanged + */ + @Nullable + BlockState setBlockState(BlockPos pos, BlockState state, boolean moved, boolean update); +} diff --git a/worldedit-forge/src/main/java/com/sk89q/worldedit/forge/internal/ForgeWorldNativeAccess.java b/worldedit-forge/src/main/java/com/sk89q/worldedit/forge/internal/ForgeWorldNativeAccess.java index 885db2884a..a59a823762 100644 --- a/worldedit-forge/src/main/java/com/sk89q/worldedit/forge/internal/ForgeWorldNativeAccess.java +++ b/worldedit-forge/src/main/java/com/sk89q/worldedit/forge/internal/ForgeWorldNativeAccess.java @@ -77,6 +77,11 @@ public BlockState getBlockState(LevelChunk chunk, BlockPos position) { @Nullable @Override public BlockState setBlockState(LevelChunk chunk, BlockPos position, BlockState state) { + if (chunk instanceof ExtendedChunk) { + return ((ExtendedChunk) chunk).setBlockState( + position, state, false, sideEffectSet.shouldApply(SideEffect.UPDATE) + ); + } return chunk.setBlockState(position, state, false); } diff --git a/worldedit-forge/src/main/java/com/sk89q/worldedit/forge/mixin/MixinLevelChunkSetBlockHook.java b/worldedit-forge/src/main/java/com/sk89q/worldedit/forge/mixin/MixinLevelChunkSetBlockHook.java new file mode 100644 index 0000000000..4bfa690b3b --- /dev/null +++ b/worldedit-forge/src/main/java/com/sk89q/worldedit/forge/mixin/MixinLevelChunkSetBlockHook.java @@ -0,0 +1,85 @@ +/* + * WorldEdit, a Minecraft world manipulation toolkit + * Copyright (C) sk89q + * Copyright (C) WorldEdit team and contributors + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +package com.sk89q.worldedit.forge.mixin; + +import com.sk89q.worldedit.forge.internal.ExtendedChunk; +import net.minecraft.core.BlockPos; +import net.minecraft.core.Registry; +import net.minecraft.server.MinecraftServer; +import net.minecraft.world.level.ChunkPos; +import net.minecraft.world.level.Level; +import net.minecraft.world.level.LevelHeightAccessor; +import net.minecraft.world.level.biome.Biome; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.level.chunk.ChunkAccess; +import net.minecraft.world.level.chunk.LevelChunk; +import net.minecraft.world.level.chunk.LevelChunkSection; +import net.minecraft.world.level.chunk.UpgradeData; +import net.minecraft.world.level.levelgen.blending.BlendingData; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Redirect; +import org.spongepowered.asm.mixin.injection.Slice; + +import javax.annotation.Nullable; + +@Mixin(LevelChunk.class) +public abstract class MixinLevelChunkSetBlockHook extends ChunkAccess implements ExtendedChunk { + private boolean shouldUpdate = true; + + public MixinLevelChunkSetBlockHook(ChunkPos chunkPos, UpgradeData upgradeData, LevelHeightAccessor levelHeightAccessor, Registry registry, long l, @org.jetbrains.annotations.Nullable LevelChunkSection[] levelChunkSections, @org.jetbrains.annotations.Nullable BlendingData blendingData) { + super(chunkPos, upgradeData, levelHeightAccessor, registry, l, levelChunkSections, blendingData); + } + + @Nullable + @Override + public BlockState setBlockState(BlockPos pos, BlockState state, boolean moved, boolean update) { + // save the state for the hook + shouldUpdate = update; + try { + return setBlockState(pos, state, moved); + } finally { + // restore natural mode + shouldUpdate = true; + } + } + + @Redirect( + method = "setBlockState", + slice = @Slice( + from = @At(value = "INVOKE", target = "Lnet/minecraft/world/level/block/state/BlockState;is(Lnet/minecraft/world/level/block/Block;)Z") + ), + at = @At(value = "INVOKE", target = "Lnet/minecraft/world/level/block/state/BlockState;onPlace(Lnet/minecraft/world/level/Level;Lnet/minecraft/core/BlockPos;Lnet/minecraft/world/level/block/state/BlockState;Z)V") + ) + public void setBlockStateHook(BlockState target, Level world, BlockPos pos, BlockState old, boolean move) { + boolean localShouldUpdate; + MinecraftServer server = world.getServer(); + if (server == null || Thread.currentThread() != server.getRunningThread()) { + // We're not on the server thread for some reason, WorldEdit will never be here + // so we'll just ignore our flag + localShouldUpdate = true; + } else { + localShouldUpdate = shouldUpdate; + } + if (localShouldUpdate) { + target.onPlace(world, pos, old, move); + } + } +} diff --git a/worldedit-forge/src/main/resources/worldedit.mixins.json b/worldedit-forge/src/main/resources/worldedit.mixins.json new file mode 100644 index 0000000000..e16bdc7d55 --- /dev/null +++ b/worldedit-forge/src/main/resources/worldedit.mixins.json @@ -0,0 +1,13 @@ +{ + "required": true, + "package": "com.sk89q.worldedit.forge.mixin", + "compatibilityLevel": "JAVA_17", + "mixins": [ + "MixinLevelChunkSetBlockHook" + ], + "server": [ + ], + "injectors": { + "defaultRequire": 1 + } +} From 0ad3ab14d9aba383996e539d23d28b60e4d1e610 Mon Sep 17 00:00:00 2001 From: wizjany Date: Sun, 16 Jan 2022 13:03:45 -0500 Subject: [PATCH 04/55] Remove extra label from bukkit command usage string. This is never actually shown anywhere since we use our own help factory, but apparently the bukkit api exposes it so... --- .../main/java/com/sk89q/bukkit/util/CommandRegistration.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/worldedit-bukkit/src/main/java/com/sk89q/bukkit/util/CommandRegistration.java b/worldedit-bukkit/src/main/java/com/sk89q/bukkit/util/CommandRegistration.java index d9c0ef37d0..e24078e11d 100644 --- a/worldedit-bukkit/src/main/java/com/sk89q/bukkit/util/CommandRegistration.java +++ b/worldedit-bukkit/src/main/java/com/sk89q/bukkit/util/CommandRegistration.java @@ -75,7 +75,7 @@ public boolean register(List registered) { } for (CommandInfo command : registered) { DynamicPluginCommand cmd = new DynamicPluginCommand(command.getAliases(), - command.getDesc(), "/" + command.getAliases()[0] + " " + command.getUsage(), executor, command.getRegisteredWith(), plugin); + command.getDesc(), command.getUsage(), executor, command.getRegisteredWith(), plugin); cmd.setPermissions(command.getPermissions()); commandMap.register(plugin.getDescription().getName(), cmd); } From ab61a849e87a3056677d9ff2583b8321e97ae176 Mon Sep 17 00:00:00 2001 From: Maddy Miller Date: Sun, 23 Jan 2022 16:15:40 +1000 Subject: [PATCH 05/55] Fix Fabric regenerate outside of overworld (#2016) * Fix Fabric regenerate outside of overworld * License --- .../sk89q/worldedit/fabric/FabricWorld.java | 9 ++++-- .../mixin/AccessorDerivedLevelData.java | 32 +++++++++++++++++++ .../src/main/resources/worldedit.mixins.json | 1 + 3 files changed, 40 insertions(+), 2 deletions(-) create mode 100644 worldedit-fabric/src/main/java/com/sk89q/worldedit/fabric/mixin/AccessorDerivedLevelData.java diff --git a/worldedit-fabric/src/main/java/com/sk89q/worldedit/fabric/FabricWorld.java b/worldedit-fabric/src/main/java/com/sk89q/worldedit/fabric/FabricWorld.java index f6214d5714..04164a8212 100644 --- a/worldedit-fabric/src/main/java/com/sk89q/worldedit/fabric/FabricWorld.java +++ b/worldedit-fabric/src/main/java/com/sk89q/worldedit/fabric/FabricWorld.java @@ -38,6 +38,7 @@ import com.sk89q.worldedit.fabric.internal.ExtendedMinecraftServer; import com.sk89q.worldedit.fabric.internal.FabricWorldNativeAccess; import com.sk89q.worldedit.fabric.internal.NBTConverter; +import com.sk89q.worldedit.fabric.mixin.AccessorDerivedLevelData; import com.sk89q.worldedit.fabric.mixin.AccessorPrimaryLevelData; import com.sk89q.worldedit.fabric.mixin.AccessorServerChunkCache; import com.sk89q.worldedit.internal.Constants; @@ -316,8 +317,12 @@ private void doRegen(Region region, Extent extent, RegenOptions options) throws LevelStorageSource levelStorage = LevelStorageSource.createDefault(tempDir); try (LevelStorageSource.LevelStorageAccess session = levelStorage.createAccess("WorldEditTempGen")) { ServerLevel originalWorld = (ServerLevel) getWorld(); - AccessorPrimaryLevelData levelProperties = (AccessorPrimaryLevelData) - originalWorld.getLevelData(); + AccessorPrimaryLevelData levelProperties; + if (originalWorld.getLevelData() instanceof AccessorDerivedLevelData derivedLevelData) { + levelProperties = (AccessorPrimaryLevelData) derivedLevelData.getWrapped(); + } else { + levelProperties = (AccessorPrimaryLevelData) originalWorld.getLevelData(); + } WorldGenSettings originalOpts = levelProperties.worldGenSettings(); long seed = options.getSeed().orElse(originalWorld.getSeed()); diff --git a/worldedit-fabric/src/main/java/com/sk89q/worldedit/fabric/mixin/AccessorDerivedLevelData.java b/worldedit-fabric/src/main/java/com/sk89q/worldedit/fabric/mixin/AccessorDerivedLevelData.java new file mode 100644 index 0000000000..8af17bc613 --- /dev/null +++ b/worldedit-fabric/src/main/java/com/sk89q/worldedit/fabric/mixin/AccessorDerivedLevelData.java @@ -0,0 +1,32 @@ +/* + * WorldEdit, a Minecraft world manipulation toolkit + * Copyright (C) sk89q + * Copyright (C) WorldEdit team and contributors + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +package com.sk89q.worldedit.fabric.mixin; + +import net.minecraft.world.level.storage.DerivedLevelData; +import net.minecraft.world.level.storage.ServerLevelData; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.gen.Accessor; + +@Mixin(DerivedLevelData.class) +public interface AccessorDerivedLevelData extends ServerLevelData { + + @Accessor + ServerLevelData getWrapped(); +} diff --git a/worldedit-fabric/src/main/resources/worldedit.mixins.json b/worldedit-fabric/src/main/resources/worldedit.mixins.json index 37f3c7809b..076670106b 100644 --- a/worldedit-fabric/src/main/resources/worldedit.mixins.json +++ b/worldedit-fabric/src/main/resources/worldedit.mixins.json @@ -5,6 +5,7 @@ "mixins": [ "AccessorClientboundBlockEntityDataPacket", "AccessorPrimaryLevelData", + "AccessorDerivedLevelData", "AccessorServerChunkCache", "MixinLevelChunkSetBlockHook", "MixinMinecraftServer", From fb50324767609d184abb9a7581766eefc0965e2c Mon Sep 17 00:00:00 2001 From: Octavia Togami Date: Sat, 29 Jan 2022 10:02:42 -0800 Subject: [PATCH 06/55] Update worldedit-sponge to API 8 (#1771) * Sponge 8 work Remove text adapter Debugging the bugs out * Resolve compiling for latest Sponge * Update for latest SpongeAPI 8 snapshots * Fixed a few issues with Sponge8 WorldEdit. Command completions are still broken. * Resolve completions * Bump to Sponge API 8 release * Remove VALIDATION as a supported SideEffect on Sponge for now. * Append Sponge API version to archive name * Implement regeneration on Sponge; currently hangs due to a Sponge bug. * Fixed typo * Fix commands without permissions and version handling * Make changes from PR comments and re-add bStats Co-authored-by: Madeline Miller --- buildSrc/build.gradle.kts | 3 +- buildSrc/src/main/kotlin/LibsConfig.kt | 3 + worldedit-bukkit/build.gradle.kts | 2 +- worldedit-core/build.gradle.kts | 2 +- worldedit-libs/sponge/build.gradle.kts | 1 - worldedit-sponge/build.gradle.kts | 77 +++- .../worldedit/sponge/CUIChannelHandler.java | 58 +-- .../worldedit/sponge/CommandAdapter.java | 39 +- ...apterLoadException.java => Constants.java} | 26 +- .../sk89q/worldedit/sponge/SpongeAdapter.java | 156 +++++-- .../worldedit/sponge/SpongeBiomeRegistry.java | 9 +- .../sponge/SpongeBlockCategoryRegistry.java | 44 ++ .../worldedit/sponge/SpongeBlockMaterial.java | 96 ++++ .../worldedit/sponge/SpongeBlockRegistry.java | 92 ++++ .../worldedit/sponge/SpongeCommandSender.java | 63 ++- .../sk89q/worldedit/sponge/SpongeEntity.java | 24 +- .../sponge/SpongeEntityProperties.java | 20 +- .../sponge/SpongeItemCategoryRegistry.java | 44 ++ .../worldedit/sponge/SpongeItemRegistry.java | 47 ++ .../sponge/SpongePermissionsProvider.java | 20 +- .../worldedit/sponge/SpongePlatform.java | 78 ++-- .../sk89q/worldedit/sponge/SpongePlayer.java | 130 +++--- .../worldedit/sponge/SpongeRegistries.java | 37 +- .../worldedit/sponge/SpongeTextAdapter.java | 14 +- .../sk89q/worldedit/sponge/SpongeWorld.java | 428 ++++++++++++------ .../worldedit/sponge/SpongeWorldEdit.java | 409 +++++++++-------- .../worldedit/sponge/ThreadSafeCache.java | 6 +- .../sponge/adapter/SpongeImplAdapter.java | 52 --- .../sponge/adapter/SpongeImplLoader.java | 195 -------- .../config/ConfigurateConfiguration.java | 112 ++--- .../sponge/config/SpongeConfiguration.java | 12 +- .../sponge/internal/ExtendedChunk.java | 43 ++ .../sponge/internal/LocaleResolver.java | 35 ++ .../worldedit/sponge/internal/NbtAdapter.java | 279 ++++++++++++ .../sponge/internal/SpongeTransmogrifier.java | 179 ++++++++ .../internal/SpongeWorldNativeAccess.java | 152 +++++++ .../adapter/impl/Sponge_1_10_Impl$1.class | Bin 1735 -> 0 bytes .../Sponge_1_10_Impl$SpongeNMSWorld.class | Bin 7204 -> 0 bytes ...Sponge_1_10_Impl$TileEntityBaseBlock.class | Bin 1163 -> 0 bytes .../adapter/impl/Sponge_1_10_Impl.class | Bin 12745 -> 0 bytes .../adapter/impl/Sponge_1_11_2_Impl$1.class | Bin 1741 -> 0 bytes .../Sponge_1_11_2_Impl$SpongeNMSWorld.class | Bin 7255 -> 0 bytes ...onge_1_11_2_Impl$TileEntityBaseBlock.class | Bin 1175 -> 0 bytes .../adapter/impl/Sponge_1_11_2_Impl.class | Bin 12755 -> 0 bytes .../adapter/impl/Sponge_1_11_Impl$1.class | Bin 1735 -> 0 bytes .../Sponge_1_11_Impl$SpongeNMSWorld.class | Bin 7237 -> 0 bytes ...Sponge_1_11_Impl$TileEntityBaseBlock.class | Bin 1163 -> 0 bytes .../adapter/impl/Sponge_1_11_Impl.class | Bin 12741 -> 0 bytes .../adapter/impl/Sponge_1_12_1_Impl$1.class | Bin 1741 -> 0 bytes .../Sponge_1_12_1_Impl$SpongeNMSWorld.class | Bin 9427 -> 0 bytes ...onge_1_12_1_Impl$TileEntityBaseBlock.class | Bin 1495 -> 0 bytes .../adapter/impl/Sponge_1_12_1_Impl.class | Bin 15702 -> 0 bytes .../adapter/impl/Sponge_1_12_2_Impl$1.class | Bin 1741 -> 0 bytes .../Sponge_1_12_2_Impl$SpongeNMSWorld.class | Bin 9427 -> 0 bytes ...onge_1_12_2_Impl$TileEntityBaseBlock.class | Bin 1495 -> 0 bytes .../adapter/impl/Sponge_1_12_2_Impl.class | Bin 15702 -> 0 bytes .../adapter/impl/Sponge_1_12_Impl$1.class | Bin 1735 -> 0 bytes .../Sponge_1_12_Impl$SpongeNMSWorld.class | Bin 9409 -> 0 bytes ...Sponge_1_12_Impl$TileEntityBaseBlock.class | Bin 1483 -> 0 bytes .../adapter/impl/Sponge_1_12_Impl.class | Bin 15686 -> 0 bytes .../adapter/impl/Sponge_Dev_Impl$1.class | Bin 1764 -> 0 bytes .../impl/Sponge_Dev_Impl$SpongeNMSWorld.class | Bin 9379 -> 0 bytes .../Sponge_Dev_Impl$TileEntityBaseBlock.class | Bin 1474 -> 0 bytes .../sponge/adapter/impl/Sponge_Dev_Impl.class | Bin 15229 -> 0 bytes 64 files changed, 2059 insertions(+), 928 deletions(-) rename worldedit-sponge/src/main/java/com/sk89q/worldedit/sponge/{adapter/AdapterLoadException.java => Constants.java} (65%) create mode 100644 worldedit-sponge/src/main/java/com/sk89q/worldedit/sponge/SpongeBlockCategoryRegistry.java create mode 100644 worldedit-sponge/src/main/java/com/sk89q/worldedit/sponge/SpongeBlockMaterial.java create mode 100644 worldedit-sponge/src/main/java/com/sk89q/worldedit/sponge/SpongeBlockRegistry.java create mode 100644 worldedit-sponge/src/main/java/com/sk89q/worldedit/sponge/SpongeItemCategoryRegistry.java create mode 100644 worldedit-sponge/src/main/java/com/sk89q/worldedit/sponge/SpongeItemRegistry.java delete mode 100644 worldedit-sponge/src/main/java/com/sk89q/worldedit/sponge/adapter/SpongeImplAdapter.java delete mode 100644 worldedit-sponge/src/main/java/com/sk89q/worldedit/sponge/adapter/SpongeImplLoader.java create mode 100644 worldedit-sponge/src/main/java/com/sk89q/worldedit/sponge/internal/ExtendedChunk.java create mode 100644 worldedit-sponge/src/main/java/com/sk89q/worldedit/sponge/internal/LocaleResolver.java create mode 100644 worldedit-sponge/src/main/java/com/sk89q/worldedit/sponge/internal/NbtAdapter.java create mode 100644 worldedit-sponge/src/main/java/com/sk89q/worldedit/sponge/internal/SpongeTransmogrifier.java create mode 100644 worldedit-sponge/src/main/java/com/sk89q/worldedit/sponge/internal/SpongeWorldNativeAccess.java delete mode 100644 worldedit-sponge/src/main/resources/com/sk89q/worldedit/sponge/adapter/impl/Sponge_1_10_Impl$1.class delete mode 100644 worldedit-sponge/src/main/resources/com/sk89q/worldedit/sponge/adapter/impl/Sponge_1_10_Impl$SpongeNMSWorld.class delete mode 100644 worldedit-sponge/src/main/resources/com/sk89q/worldedit/sponge/adapter/impl/Sponge_1_10_Impl$TileEntityBaseBlock.class delete mode 100644 worldedit-sponge/src/main/resources/com/sk89q/worldedit/sponge/adapter/impl/Sponge_1_10_Impl.class delete mode 100644 worldedit-sponge/src/main/resources/com/sk89q/worldedit/sponge/adapter/impl/Sponge_1_11_2_Impl$1.class delete mode 100644 worldedit-sponge/src/main/resources/com/sk89q/worldedit/sponge/adapter/impl/Sponge_1_11_2_Impl$SpongeNMSWorld.class delete mode 100644 worldedit-sponge/src/main/resources/com/sk89q/worldedit/sponge/adapter/impl/Sponge_1_11_2_Impl$TileEntityBaseBlock.class delete mode 100644 worldedit-sponge/src/main/resources/com/sk89q/worldedit/sponge/adapter/impl/Sponge_1_11_2_Impl.class delete mode 100644 worldedit-sponge/src/main/resources/com/sk89q/worldedit/sponge/adapter/impl/Sponge_1_11_Impl$1.class delete mode 100644 worldedit-sponge/src/main/resources/com/sk89q/worldedit/sponge/adapter/impl/Sponge_1_11_Impl$SpongeNMSWorld.class delete mode 100644 worldedit-sponge/src/main/resources/com/sk89q/worldedit/sponge/adapter/impl/Sponge_1_11_Impl$TileEntityBaseBlock.class delete mode 100644 worldedit-sponge/src/main/resources/com/sk89q/worldedit/sponge/adapter/impl/Sponge_1_11_Impl.class delete mode 100644 worldedit-sponge/src/main/resources/com/sk89q/worldedit/sponge/adapter/impl/Sponge_1_12_1_Impl$1.class delete mode 100644 worldedit-sponge/src/main/resources/com/sk89q/worldedit/sponge/adapter/impl/Sponge_1_12_1_Impl$SpongeNMSWorld.class delete mode 100644 worldedit-sponge/src/main/resources/com/sk89q/worldedit/sponge/adapter/impl/Sponge_1_12_1_Impl$TileEntityBaseBlock.class delete mode 100644 worldedit-sponge/src/main/resources/com/sk89q/worldedit/sponge/adapter/impl/Sponge_1_12_1_Impl.class delete mode 100644 worldedit-sponge/src/main/resources/com/sk89q/worldedit/sponge/adapter/impl/Sponge_1_12_2_Impl$1.class delete mode 100644 worldedit-sponge/src/main/resources/com/sk89q/worldedit/sponge/adapter/impl/Sponge_1_12_2_Impl$SpongeNMSWorld.class delete mode 100644 worldedit-sponge/src/main/resources/com/sk89q/worldedit/sponge/adapter/impl/Sponge_1_12_2_Impl$TileEntityBaseBlock.class delete mode 100644 worldedit-sponge/src/main/resources/com/sk89q/worldedit/sponge/adapter/impl/Sponge_1_12_2_Impl.class delete mode 100644 worldedit-sponge/src/main/resources/com/sk89q/worldedit/sponge/adapter/impl/Sponge_1_12_Impl$1.class delete mode 100644 worldedit-sponge/src/main/resources/com/sk89q/worldedit/sponge/adapter/impl/Sponge_1_12_Impl$SpongeNMSWorld.class delete mode 100644 worldedit-sponge/src/main/resources/com/sk89q/worldedit/sponge/adapter/impl/Sponge_1_12_Impl$TileEntityBaseBlock.class delete mode 100644 worldedit-sponge/src/main/resources/com/sk89q/worldedit/sponge/adapter/impl/Sponge_1_12_Impl.class delete mode 100644 worldedit-sponge/src/main/resources/com/sk89q/worldedit/sponge/adapter/impl/Sponge_Dev_Impl$1.class delete mode 100644 worldedit-sponge/src/main/resources/com/sk89q/worldedit/sponge/adapter/impl/Sponge_Dev_Impl$SpongeNMSWorld.class delete mode 100644 worldedit-sponge/src/main/resources/com/sk89q/worldedit/sponge/adapter/impl/Sponge_Dev_Impl$TileEntityBaseBlock.class delete mode 100644 worldedit-sponge/src/main/resources/com/sk89q/worldedit/sponge/adapter/impl/Sponge_Dev_Impl.class diff --git a/buildSrc/build.gradle.kts b/buildSrc/build.gradle.kts index 1b79270374..c9b966f315 100644 --- a/buildSrc/build.gradle.kts +++ b/buildSrc/build.gradle.kts @@ -50,7 +50,8 @@ dependencies { implementation("org.ajoberstar.grgit:grgit-gradle:4.1.0") implementation("gradle.plugin.com.github.johnrengelman:shadow:7.1.0") implementation("org.jfrog.buildinfo:build-info-extractor-gradle:4.24.23") - implementation("org.spongepowered:SpongeGradle:0.11.5") + implementation("org.spongepowered:spongegradle-plugin-development:2.0.1") + implementation("org.spongepowered:vanillagradle:0.1") implementation("net.minecraftforge.gradle:ForgeGradle:5.1.26") implementation("net.fabricmc:fabric-loom:$loomVersion") implementation("net.fabricmc:sponge-mixin:$mixinVersion") diff --git a/buildSrc/src/main/kotlin/LibsConfig.kt b/buildSrc/src/main/kotlin/LibsConfig.kt index 5a422a4d8d..07a558e7dc 100644 --- a/buildSrc/src/main/kotlin/LibsConfig.kt +++ b/buildSrc/src/main/kotlin/LibsConfig.kt @@ -51,6 +51,9 @@ fun Project.applyLibrariesConfiguration() { exclude(dependency("org.checkerframework:checker-qual")) exclude(dependency("org.apache.logging.log4j:log4j-api")) exclude(dependency("com.google.code.findbugs:jsr305")) + exclude { + it.moduleGroup == "org.jetbrains.kotlin" + } } relocations.forEach { (from, to) -> diff --git a/worldedit-bukkit/build.gradle.kts b/worldedit-bukkit/build.gradle.kts index 5b37794ca8..cf4cebc6ac 100644 --- a/worldedit-bukkit/build.gradle.kts +++ b/worldedit-bukkit/build.gradle.kts @@ -51,7 +51,7 @@ dependencies { } "implementation"("io.papermc:paperlib:1.0.7") "compileOnly"("com.sk89q:dummypermscompat:1.10") - "implementation"("org.bstats:bstats-bukkit:2.1.0") + "implementation"("org.bstats:bstats-bukkit:2.2.1") "implementation"("it.unimi.dsi:fastutil") "testImplementation"("org.mockito:mockito-core:1.9.0-rc1") diff --git a/worldedit-core/build.gradle.kts b/worldedit-core/build.gradle.kts index 0e7c38abfb..0b7d45f1c4 100644 --- a/worldedit-core/build.gradle.kts +++ b/worldedit-core/build.gradle.kts @@ -39,7 +39,7 @@ dependencies { "implementation"("org.mozilla:rhino-runtime:1.7.13") "implementation"("org.yaml:snakeyaml:1.26") "implementation"("com.google.guava:guava") - "implementation"("com.google.code.findbugs:jsr305:1.3.9") + "compileOnlyApi"("com.google.code.findbugs:jsr305:1.3.9") "implementation"("com.google.code.gson:gson") "implementation"("org.apache.logging.log4j:log4j-api:${Versions.LOG4J}") { diff --git a/worldedit-libs/sponge/build.gradle.kts b/worldedit-libs/sponge/build.gradle.kts index 47bd7e59c5..7f10cf0124 100644 --- a/worldedit-libs/sponge/build.gradle.kts +++ b/worldedit-libs/sponge/build.gradle.kts @@ -8,5 +8,4 @@ repositories { } } dependencies { - "shade"("net.kyori:text-adapter-spongeapi:${Versions.TEXT_EXTRAS}") } diff --git a/worldedit-sponge/build.gradle.kts b/worldedit-sponge/build.gradle.kts index affa68b86a..f2f0c90181 100644 --- a/worldedit-sponge/build.gradle.kts +++ b/worldedit-sponge/build.gradle.kts @@ -1,54 +1,83 @@ import com.github.jengelman.gradle.plugins.shadow.tasks.ShadowJar +import org.spongepowered.gradle.plugin.config.PluginLoaders +import org.spongepowered.plugin.metadata.model.PluginDependency plugins { id("org.spongepowered.gradle.plugin") + id("org.spongepowered.gradle.vanilla") } applyPlatformAndCoreConfiguration() applyShadowConfiguration() -// I can't believe sponge sets this in a base plugin with no opt-out -convention.getPlugin(JavaPluginConvention::class.java).apply { - setSourceCompatibility(null) - setTargetCompatibility(null) +repositories { + mavenCentral() } -repositories { - maven { url = uri("https://repo.codemc.org/repository/maven-public") } +minecraft { + version("1.16.5") +} + +val spongeApiVersion = "8.0.0"; + +sponge { + apiVersion(spongeApiVersion) + license("GPL-3.0-or-later") + plugin("worldedit") { + loader { + name(PluginLoaders.JAVA_PLAIN) + version("1.0") + } + displayName("WorldEdit") + version(project.ext["internalVersion"].toString()) + entrypoint("com.sk89q.worldedit.sponge.SpongeWorldEdit") + description("WorldEdit is an easy-to-use in-game world editor for Minecraft, supporting both single- and multi-player.") + links { + homepage("https://enginehub.org/worldedit/") + source("https://github.com/EngineHub/WorldEdit") + issues("https://github.com/EngineHub/WorldEdit/issues") + } + contributor("EngineHub") { + description("Various members of the EngineHub team") + } + dependency("spongeapi") { + loadOrder(PluginDependency.LoadOrder.AFTER) + optional(false) + } + } } dependencies { api(project(":worldedit-core")) api(project(":worldedit-libs:sponge")) - api("org.spongepowered:spongeapi:7.1.0") { - exclude(group = "org.slf4j", module = "slf4j-api") - } implementation(platform("org.apache.logging.log4j:log4j-bom:${Versions.LOG4J}") { because("Sponge 8 (will?) provides Log4J") }) api("org.apache.logging.log4j:log4j-api") - api("org.bstats:bstats-sponge:1.7") - testImplementation("org.mockito:mockito-core:1.9.0-rc1") + api("org.bstats:bstats-sponge:3.0.0") + testImplementation("org.mockito:mockito-core:${Versions.MOCKITO}") +} + +configure { + archivesName.set("${project.name}-api$spongeApiVersion") } addJarManifest(WorldEditKind.Mod, includeClasspath = true) tasks.named("shadowJar") { dependencies { - relocate ("org.bstats", "com.sk89q.worldedit.sponge.bstats") { - include(dependency("org.bstats:bstats-sponge:1.7")) + relocate("org.bstats", "com.sk89q.worldedit.sponge.bstats") { + include(dependency("org.bstats:")) } - } -} + include(dependency(":worldedit-core")) -if (project.hasProperty("signing")) { - apply(plugin = "signing") - - configure { - sign("shadowJar") - } - - tasks.named("build").configure { - dependsOn("signShadowJar") + relocate("org.antlr.v4", "com.sk89q.worldedit.sponge.antlr4") + include(dependency("org.antlr:antlr4-runtime")) + relocate("it.unimi.dsi.fastutil", "com.sk89q.worldedit.sponge.fastutil") { + include(dependency("it.unimi.dsi:fastutil")) + } } } +tasks.named("assemble").configure { + dependsOn("shadowJar") +} diff --git a/worldedit-sponge/src/main/java/com/sk89q/worldedit/sponge/CUIChannelHandler.java b/worldedit-sponge/src/main/java/com/sk89q/worldedit/sponge/CUIChannelHandler.java index 8e342f79ca..79f23a134c 100644 --- a/worldedit-sponge/src/main/java/com/sk89q/worldedit/sponge/CUIChannelHandler.java +++ b/worldedit-sponge/src/main/java/com/sk89q/worldedit/sponge/CUIChannelHandler.java @@ -20,42 +20,48 @@ package com.sk89q.worldedit.sponge; import com.sk89q.worldedit.LocalSession; -import org.spongepowered.api.Platform; -import org.spongepowered.api.Sponge; -import org.spongepowered.api.entity.living.player.Player; -import org.spongepowered.api.network.ChannelBinding; -import org.spongepowered.api.network.ChannelBuf; -import org.spongepowered.api.network.PlayerConnection; -import org.spongepowered.api.network.RawDataListener; -import org.spongepowered.api.network.RemoteConnection; +import com.sk89q.worldedit.WorldEdit; +import com.sk89q.worldedit.util.lifecycle.SimpleLifecycled; +import org.spongepowered.api.ResourceKey; +import org.spongepowered.api.entity.living.player.server.ServerPlayer; +import org.spongepowered.api.event.Listener; +import org.spongepowered.api.event.lifecycle.RegisterChannelEvent; +import org.spongepowered.api.network.ServerPlayerConnection; +import org.spongepowered.api.network.channel.ChannelBuf; +import org.spongepowered.api.network.channel.raw.RawDataChannel; +import org.spongepowered.api.network.channel.raw.play.RawPlayDataHandler; import java.nio.charset.StandardCharsets; -public class CUIChannelHandler implements RawDataListener { - public static final String CUI_PLUGIN_CHANNEL = "worldedit:cui"; +public class CUIChannelHandler implements RawPlayDataHandler { + public static final ResourceKey CUI_PLUGIN_CHANNEL = ResourceKey.of("worldedit", "cui"); + private static final SimpleLifecycled CHANNEL = SimpleLifecycled.invalid(); - private static ChannelBinding.RawDataChannel channel; - - public static void init() { - channel = Sponge.getChannelRegistrar().createRawChannel(SpongeWorldEdit.inst(), CUI_PLUGIN_CHANNEL); - channel.addListener(Platform.Type.SERVER, new CUIChannelHandler()); + public static final class RegistrationHandler { + @Listener + public void onChannelRegistration(RegisterChannelEvent event) { + RawDataChannel channel = event.register(CUI_PLUGIN_CHANNEL, RawDataChannel.class); + channel.play().addHandler(ServerPlayerConnection.class, new CUIChannelHandler()); + CHANNEL.newValue(channel); + } } - - public static ChannelBinding.RawDataChannel getActiveChannel() { - return channel; + public static RawDataChannel channel() { + return CHANNEL.valueOrThrow(); } @Override - public void handlePayload(ChannelBuf data, RemoteConnection connection, Platform.Type side) { - if (connection instanceof PlayerConnection) { - Player player = ((PlayerConnection) connection).getPlayer(); + public void handlePayload(ChannelBuf data, ServerPlayerConnection connection) { + ServerPlayer player = connection.player(); - LocalSession session = SpongeWorldEdit.inst().getSession(player); + SpongePlayer spongePlayer = SpongeAdapter.adapt(player); + LocalSession session = WorldEdit.getInstance().getSessionManager().get( + spongePlayer + ); - final SpongePlayer actor = SpongeWorldEdit.inst().wrapPlayer(player); - session.handleCUIInitializationMessage(new String(data.readBytes(data.available()), StandardCharsets.UTF_8), - actor); - } + session.handleCUIInitializationMessage( + new String(data.readBytes(data.available()), StandardCharsets.UTF_8), + spongePlayer + ); } } diff --git a/worldedit-sponge/src/main/java/com/sk89q/worldedit/sponge/CommandAdapter.java b/worldedit-sponge/src/main/java/com/sk89q/worldedit/sponge/CommandAdapter.java index 261d811b8d..be08709a14 100644 --- a/worldedit-sponge/src/main/java/com/sk89q/worldedit/sponge/CommandAdapter.java +++ b/worldedit-sponge/src/main/java/com/sk89q/worldedit/sponge/CommandAdapter.java @@ -20,18 +20,17 @@ package com.sk89q.worldedit.sponge; import com.sk89q.worldedit.command.util.PermissionCondition; +import com.sk89q.worldedit.sponge.internal.LocaleResolver; +import net.kyori.adventure.text.Component; +import org.checkerframework.checker.nullness.qual.NonNull; import org.enginehub.piston.Command; -import org.spongepowered.api.command.CommandCallable; -import org.spongepowered.api.command.CommandSource; -import org.spongepowered.api.text.Text; +import org.spongepowered.api.command.CommandCause; import java.util.Collections; import java.util.Optional; import java.util.Set; -import static com.sk89q.worldedit.sponge.SpongeTextAdapter.convert; - -public abstract class CommandAdapter implements CommandCallable { +public abstract class CommandAdapter implements org.spongepowered.api.command.Command.Raw { private final Command command; protected CommandAdapter(Command command) { @@ -39,12 +38,18 @@ protected CommandAdapter(Command command) { } @Override - public boolean testPermission(CommandSource source) { + public boolean canExecute(CommandCause cause) { Set permissions = command.getCondition().as(PermissionCondition.class) .map(PermissionCondition::getPermissions) .orElseGet(Collections::emptySet); + + // Allow commands without permission nodes to always execute. + if (permissions.isEmpty()) { + return true; + } + for (String perm : permissions) { - if (source.hasPermission(perm)) { + if (cause.hasPermission(perm)) { return true; } } @@ -52,19 +57,25 @@ public boolean testPermission(CommandSource source) { } @Override - public Optional getShortDescription(CommandSource source) { + public Optional shortDescription(CommandCause cause) { return Optional.of(command.getDescription()) - .map(desc -> SpongeTextAdapter.convert(desc, source.getLocale())); + .map(desc -> SpongeTextAdapter.convert(desc, LocaleResolver.resolveLocale(cause.audience()))); + } + + @Override + public Optional extendedDescription(CommandCause cause) { + return command.getFooter() + .map(footer -> SpongeTextAdapter.convert(footer, LocaleResolver.resolveLocale(cause.audience()))); } @Override - public Optional getHelp(CommandSource source) { + public Optional help(@NonNull CommandCause cause) { return Optional.of(command.getFullHelp()) - .map(help -> SpongeTextAdapter.convert(help, source.getLocale())); + .map(help -> SpongeTextAdapter.convert(help, LocaleResolver.resolveLocale(cause.audience()))); } @Override - public Text getUsage(CommandSource source) { - return convert(command.getUsage(), source.getLocale()); + public Component usage(CommandCause cause) { + return SpongeTextAdapter.convert(command.getUsage(), LocaleResolver.resolveLocale(cause.audience())); } } diff --git a/worldedit-sponge/src/main/java/com/sk89q/worldedit/sponge/adapter/AdapterLoadException.java b/worldedit-sponge/src/main/java/com/sk89q/worldedit/sponge/Constants.java similarity index 65% rename from worldedit-sponge/src/main/java/com/sk89q/worldedit/sponge/adapter/AdapterLoadException.java rename to worldedit-sponge/src/main/java/com/sk89q/worldedit/sponge/Constants.java index f2698fc729..7edfd16c6f 100644 --- a/worldedit-sponge/src/main/java/com/sk89q/worldedit/sponge/adapter/AdapterLoadException.java +++ b/worldedit-sponge/src/main/java/com/sk89q/worldedit/sponge/Constants.java @@ -17,25 +17,23 @@ * along with this program. If not, see . */ -package com.sk89q.worldedit.sponge.adapter; +package com.sk89q.worldedit.sponge; + +import org.spongepowered.api.data.persistence.DataQuery; /** - * Thrown when no adapter can be found. + * Kinda mirrors Sponge Common's Constants class. + * + *

Internal. Do not use.

*/ -public class AdapterLoadException extends Exception { - - public AdapterLoadException() { - } - - public AdapterLoadException(String message) { - super(message); - } +public class Constants { + public static class Sponge { + public static final DataQuery UNSAFE_NBT = DataQuery.of("UnsafeData"); - public AdapterLoadException(String message, Throwable cause) { - super(message, cause); + private Sponge() { + } } - public AdapterLoadException(Throwable cause) { - super(cause); + private Constants() { } } diff --git a/worldedit-sponge/src/main/java/com/sk89q/worldedit/sponge/SpongeAdapter.java b/worldedit-sponge/src/main/java/com/sk89q/worldedit/sponge/SpongeAdapter.java index 5f720b679c..034e988d12 100644 --- a/worldedit-sponge/src/main/java/com/sk89q/worldedit/sponge/SpongeAdapter.java +++ b/worldedit-sponge/src/main/java/com/sk89q/worldedit/sponge/SpongeAdapter.java @@ -19,15 +19,37 @@ package com.sk89q.worldedit.sponge; -import com.flowpowered.math.vector.Vector3d; +import com.sk89q.jnbt.CompoundTag; +import com.sk89q.worldedit.blocks.BaseItemStack; +import com.sk89q.worldedit.internal.block.BlockStateIdAccess; import com.sk89q.worldedit.math.BlockVector3; import com.sk89q.worldedit.math.Vector3; +import com.sk89q.worldedit.sponge.internal.NbtAdapter; +import com.sk89q.worldedit.sponge.internal.SpongeTransmogrifier; +import com.sk89q.worldedit.util.Direction; import com.sk89q.worldedit.util.Location; import com.sk89q.worldedit.world.World; import com.sk89q.worldedit.world.biome.BiomeType; -import com.sk89q.worldedit.world.biome.BiomeTypes; +import com.sk89q.worldedit.world.block.BlockState; +import com.sk89q.worldedit.world.item.ItemTypes; +import net.minecraft.world.level.block.Block; +import org.spongepowered.api.ResourceKey; import org.spongepowered.api.Sponge; +import org.spongepowered.api.data.persistence.DataContainer; +import org.spongepowered.api.data.persistence.DataView; import org.spongepowered.api.entity.living.player.Player; +import org.spongepowered.api.entity.living.player.server.ServerPlayer; +import org.spongepowered.api.item.inventory.ItemStack; +import org.spongepowered.api.registry.RegistryKey; +import org.spongepowered.api.registry.RegistryReference; +import org.spongepowered.api.registry.RegistryTypes; +import org.spongepowered.api.world.biome.Biome; +import org.spongepowered.api.world.server.ServerLocation; +import org.spongepowered.api.world.server.ServerWorld; +import org.spongepowered.math.vector.Vector3d; +import org.spongepowered.math.vector.Vector3i; + +import java.util.Objects; import static com.google.common.base.Preconditions.checkNotNull; @@ -36,22 +58,21 @@ */ public class SpongeAdapter { - private SpongeAdapter() { + public static org.spongepowered.api.block.BlockState adapt(BlockState blockState) { + int blockStateId = BlockStateIdAccess.getBlockStateId(blockState); + if (!BlockStateIdAccess.isValidInternalId(blockStateId)) { + return SpongeTransmogrifier.transmogToMinecraft(blockState); + } + return (org.spongepowered.api.block.BlockState) Block.stateById(blockStateId); } - /** - * Create a WorldEdit world from a Sponge extent. - * - * @param world the Sponge extent - * @return a WorldEdit world - */ - public static World checkWorld(org.spongepowered.api.world.extent.Extent world) { - checkNotNull(world); - if (world instanceof org.spongepowered.api.world.World) { - return adapt((org.spongepowered.api.world.World) world); - } else { - throw new IllegalArgumentException("Extent type is not a world"); + public static BlockState adapt(org.spongepowered.api.block.BlockState blockState) { + int blockStateId = Block.getId((net.minecraft.world.level.block.state.BlockState) blockState); + BlockState worldEdit = BlockStateIdAccess.getBlockStateById(blockStateId); + if (worldEdit == null) { + return SpongeTransmogrifier.transmogToWorldEdit(blockState); } + return worldEdit; } /** @@ -60,9 +81,9 @@ public static World checkWorld(org.spongepowered.api.world.extent.Extent world) * @param world the Sponge world * @return a WorldEdit world */ - public static World adapt(org.spongepowered.api.world.World world) { + public static World adapt(ServerWorld world) { checkNotNull(world); - return SpongeWorldEdit.inst().getWorld(world); + return new SpongeWorld(world); } /** @@ -71,12 +92,13 @@ public static World adapt(org.spongepowered.api.world.World world) { * @param player The Sponge player * @return The WorldEdit player */ - public static SpongePlayer adapt(Player player) { - return SpongeWorldEdit.inst().wrapPlayer(player); + public static SpongePlayer adapt(ServerPlayer player) { + Objects.requireNonNull(player); + return new SpongePlayer(player); } /** - * Create a Bukkit Player from a WorldEdit Player. + * Create a Sponge Player from a WorldEdit Player. * * @param player The WorldEdit player * @return The Bukkit player @@ -91,12 +113,15 @@ public static Player adapt(com.sk89q.worldedit.entity.Player player) { * @param world the WorldEdit world * @return a Sponge world */ - public static org.spongepowered.api.world.World adapt(World world) { + public static ServerWorld adapt(World world) { checkNotNull(world); if (world instanceof SpongeWorld) { return ((SpongeWorld) world).getWorld(); } else { - org.spongepowered.api.world.World match = Sponge.getServer().getWorld(world.getName()).orElse(null); + // Currently this is 99% certain to fail, we don't have consistent world name/id mapping + ServerWorld match = Sponge.server().worldManager().world( + ResourceKey.resolve(world.getName()) + ).orElse(null); if (match != null) { return match; } else { @@ -105,12 +130,9 @@ public static org.spongepowered.api.world.World adapt(World world) { } } - public static BiomeType adapt(org.spongepowered.api.world.biome.BiomeType biomeType) { - return BiomeTypes.get(biomeType.getId()); - } - - public static org.spongepowered.api.world.biome.BiomeType adapt(BiomeType biomeType) { - return Sponge.getRegistry().getType(org.spongepowered.api.world.biome.BiomeType.class, biomeType.getId()).orElse(null); + public static RegistryReference adapt(BiomeType biomeType) { + return RegistryKey.of(RegistryTypes.BIOME, ResourceKey.resolve(biomeType.getId())) + .asReference(); } /** @@ -119,14 +141,15 @@ public static org.spongepowered.api.world.biome.BiomeType adapt(BiomeType biomeT * @param location the Sponge location * @return a WorldEdit location */ - public static Location adapt(org.spongepowered.api.world.Location location, Vector3d rotation) { + public static Location adapt(ServerLocation location, Vector3d rotation) { checkNotNull(location); Vector3 position = asVector(location); return new Location( - adapt(location.getExtent()), - position, - (float) rotation.getX(), - (float) rotation.getY()); + adapt(location.world()), + position, + (float) rotation.x(), + (float) rotation.y() + ); } /** @@ -135,12 +158,13 @@ public static Location adapt(org.spongepowered.api.world.Location adapt(Location location) { + public static ServerLocation adapt(Location location) { checkNotNull(location); Vector3 position = location.toVector(); - return new org.spongepowered.api.world.Location<>( - adapt((World) location.getExtent()), - position.getX(), position.getY(), position.getZ()); + return ServerLocation.of( + adapt((World) location.getExtent()), + position.getX(), position.getY(), position.getZ() + ); } /** @@ -155,24 +179,66 @@ public static Vector3d adaptRotation(Location location) { } /** - * Create a WorldEdit Vector from a Bukkit location. + * Create a WorldEdit Vector from a Sponge location. * - * @param location The Bukkit location + * @param location The Sponge location * @return a WorldEdit vector */ - public static Vector3 asVector(org.spongepowered.api.world.Location location) { + public static Vector3 asVector(ServerLocation location) { checkNotNull(location); - return Vector3.at(location.getX(), location.getY(), location.getZ()); + return Vector3.at(location.x(), location.y(), location.z()); } /** - * Create a WorldEdit BlockVector from a Bukkit location. + * Create a WorldEdit BlockVector from a Sponge location. * - * @param location The Bukkit location + * @param location The Sponge location * @return a WorldEdit vector */ - public static BlockVector3 asBlockVector(org.spongepowered.api.world.Location location) { + public static BlockVector3 asBlockVector(ServerLocation location) { checkNotNull(location); - return BlockVector3.at(location.getX(), location.getY(), location.getZ()); + return BlockVector3.at(location.x(), location.y(), location.z()); } + + public static BaseItemStack adapt(ItemStack itemStack) { + CompoundTag tag = itemStack.toContainer().getView(Constants.Sponge.UNSAFE_NBT) + .map(NbtAdapter::adaptToWorldEdit) + .orElse(null); + return new BaseItemStack( + ItemTypes.get(itemStack.type().key(RegistryTypes.ITEM_TYPE).asString()), + tag, + itemStack.quantity() + ); + } + + public static ItemStack adapt(BaseItemStack itemStack) { + ItemStack stack = ItemStack.builder() + .itemType(() -> Sponge.game().registry(RegistryTypes.ITEM_TYPE) + .value(ResourceKey.resolve(itemStack.getType().getId()))) + .quantity(itemStack.getAmount()) + .build(); + if (itemStack.getNbtData() != null) { + stack.setRawData( + DataContainer.createNew(DataView.SafetyMode.NO_DATA_CLONED) + .set(Constants.Sponge.UNSAFE_NBT, NbtAdapter.adaptFromWorldEdit(itemStack.getNbtData())) + ); + } + return stack; + } + + public static Direction adapt(org.spongepowered.api.util.Direction direction) { + return Direction.valueOf(direction.name()); + } + + public static Vector3i adaptVector3i(BlockVector3 bv3) { + return new Vector3i(bv3.getX(), bv3.getY(), bv3.getZ()); + } + + public static BlockVector3 adaptVector3i(Vector3i vec3i) { + return BlockVector3.at(vec3i.x(), vec3i.y(), vec3i.z()); + } + + private SpongeAdapter() { + } + } diff --git a/worldedit-sponge/src/main/java/com/sk89q/worldedit/sponge/SpongeBiomeRegistry.java b/worldedit-sponge/src/main/java/com/sk89q/worldedit/sponge/SpongeBiomeRegistry.java index fd012d2941..48dafb6a2e 100644 --- a/worldedit-sponge/src/main/java/com/sk89q/worldedit/sponge/SpongeBiomeRegistry.java +++ b/worldedit-sponge/src/main/java/com/sk89q/worldedit/sponge/SpongeBiomeRegistry.java @@ -24,7 +24,8 @@ import com.sk89q.worldedit.util.translation.TranslationManager; import com.sk89q.worldedit.world.biome.BiomeData; import com.sk89q.worldedit.world.registry.BiomeRegistry; -import org.spongepowered.api.world.biome.BiomeType; +import org.spongepowered.api.registry.RegistryReference; +import org.spongepowered.api.world.biome.Biome; import javax.annotation.Nullable; @@ -49,21 +50,21 @@ public BiomeData getData(com.sk89q.worldedit.world.biome.BiomeType biome) { @Deprecated private static class SpongeBiomeData implements BiomeData { - private final BiomeType biome; + private final RegistryReference biome; /** * Create a new instance. * * @param biome the base biome */ - private SpongeBiomeData(BiomeType biome) { + private SpongeBiomeData(RegistryReference biome) { this.biome = biome; } @SuppressWarnings("deprecation") @Override public String getName() { - return biome.getName(); + return biome.location().asString(); } } diff --git a/worldedit-sponge/src/main/java/com/sk89q/worldedit/sponge/SpongeBlockCategoryRegistry.java b/worldedit-sponge/src/main/java/com/sk89q/worldedit/sponge/SpongeBlockCategoryRegistry.java new file mode 100644 index 0000000000..8990fd9487 --- /dev/null +++ b/worldedit-sponge/src/main/java/com/sk89q/worldedit/sponge/SpongeBlockCategoryRegistry.java @@ -0,0 +1,44 @@ +/* + * WorldEdit, a Minecraft world manipulation toolkit + * Copyright (C) sk89q + * Copyright (C) WorldEdit team and contributors + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +package com.sk89q.worldedit.sponge; + +import com.sk89q.worldedit.world.block.BlockType; +import com.sk89q.worldedit.world.registry.BlockCategoryRegistry; +import net.minecraft.core.Registry; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.tags.BlockTags; +import net.minecraft.tags.Tag; + +import java.util.Collections; +import java.util.Optional; +import java.util.Set; +import java.util.stream.Collectors; + +public class SpongeBlockCategoryRegistry implements BlockCategoryRegistry { + @Override + public Set getCategorisedByName(String category) { + return Optional.ofNullable(BlockTags.getAllTags().getTag(new ResourceLocation(category))) + .map(Tag::getValues) + .orElse(Collections.emptyList()) + .stream() + .map(b -> BlockType.REGISTRY.get(Registry.BLOCK.getKey(b).toString())) + .collect(Collectors.toSet()); + } +} diff --git a/worldedit-sponge/src/main/java/com/sk89q/worldedit/sponge/SpongeBlockMaterial.java b/worldedit-sponge/src/main/java/com/sk89q/worldedit/sponge/SpongeBlockMaterial.java new file mode 100644 index 0000000000..142b53a9ef --- /dev/null +++ b/worldedit-sponge/src/main/java/com/sk89q/worldedit/sponge/SpongeBlockMaterial.java @@ -0,0 +1,96 @@ +/* + * WorldEdit, a Minecraft world manipulation toolkit + * Copyright (C) sk89q + * Copyright (C) WorldEdit team and contributors + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +package com.sk89q.worldedit.sponge; + +import com.sk89q.worldedit.world.registry.BlockMaterial; +import com.sk89q.worldedit.world.registry.PassthroughBlockMaterial; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.level.material.Material; +import net.minecraft.world.level.material.PushReaction; + +import javax.annotation.Nullable; + +/** + * Sponge block material that pulls as much info as possible from the Minecraft + * Material, and passes the rest to another implementation, typically the + * bundled block info. + */ +public class SpongeBlockMaterial extends PassthroughBlockMaterial { + + private final Material delegate; + private final BlockState block; + + public SpongeBlockMaterial(Material delegate, BlockState block, @Nullable BlockMaterial secondary) { + super(secondary); + this.delegate = delegate; + this.block = block; + } + + @Override + public boolean isAir() { + return delegate == Material.AIR || super.isAir(); + } + + @Override + public boolean isOpaque() { + return delegate.isSolidBlocking(); + } + + @Override + public boolean isLiquid() { + return delegate.isLiquid(); + } + + @Override + public boolean isSolid() { + return delegate.isSolid(); + } + + @Override + public boolean isFragileWhenPushed() { + return delegate.getPushReaction() == PushReaction.DESTROY; + } + + @Override + public boolean isUnpushable() { + return delegate.getPushReaction() == PushReaction.BLOCK; + } + + @Override + public boolean isMovementBlocker() { + return delegate.blocksMotion(); + } + + @Override + public boolean isBurnable() { + return delegate.isFlammable(); + } + + @Override + public boolean isToolRequired() { + return block.requiresCorrectToolForDrops(); + } + + @Override + public boolean isReplacedDuringPlacement() { + return delegate.isReplaceable(); + } + +} diff --git a/worldedit-sponge/src/main/java/com/sk89q/worldedit/sponge/SpongeBlockRegistry.java b/worldedit-sponge/src/main/java/com/sk89q/worldedit/sponge/SpongeBlockRegistry.java new file mode 100644 index 0000000000..89515a5b94 --- /dev/null +++ b/worldedit-sponge/src/main/java/com/sk89q/worldedit/sponge/SpongeBlockRegistry.java @@ -0,0 +1,92 @@ +/* + * WorldEdit, a Minecraft world manipulation toolkit + * Copyright (C) sk89q + * Copyright (C) WorldEdit team and contributors + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +package com.sk89q.worldedit.sponge; + +import com.sk89q.worldedit.registry.state.Property; +import com.sk89q.worldedit.sponge.internal.SpongeTransmogrifier; +import com.sk89q.worldedit.util.formatting.text.Component; +import com.sk89q.worldedit.world.block.BlockState; +import com.sk89q.worldedit.world.block.BlockType; +import com.sk89q.worldedit.world.registry.BlockMaterial; +import com.sk89q.worldedit.world.registry.BundledBlockRegistry; +import net.minecraft.world.level.block.Block; +import org.spongepowered.api.ResourceKey; +import org.spongepowered.api.Sponge; +import org.spongepowered.api.registry.RegistryTypes; +import org.spongepowered.api.state.StateProperty; + +import java.util.Collection; +import java.util.HashMap; +import java.util.Map; +import java.util.OptionalInt; +import java.util.TreeMap; + +public class SpongeBlockRegistry extends BundledBlockRegistry { + + private final Map materialMap = + new HashMap<>(); + + @Override + public Component getRichName(BlockType blockType) { + return SpongeTextAdapter.convert(Sponge.game().registry(RegistryTypes.BLOCK_TYPE) + .value(ResourceKey.resolve(blockType.getId())).asComponent()); + } + + @Override + public BlockMaterial getMaterial(BlockType blockType) { + org.spongepowered.api.block.BlockType spongeBlockType = + Sponge.game().registry(RegistryTypes.BLOCK_TYPE) + .value(ResourceKey.resolve(blockType.getId())); + return materialMap.computeIfAbsent( + spongeBlockType.defaultState(), + m -> { + net.minecraft.world.level.block.state.BlockState blockState = + (net.minecraft.world.level.block.state.BlockState) m; + return new SpongeBlockMaterial( + blockState.getMaterial(), + blockState, + super.getMaterial(blockType) + ); + } + ); + } + + @Override + public Map> getProperties(BlockType blockType) { + org.spongepowered.api.block.BlockType spongeBlockType = + Sponge.game().registry(RegistryTypes.BLOCK_TYPE) + .value(ResourceKey.resolve(blockType.getId())); + Map> map = new TreeMap<>(); + Collection> propertyKeys = spongeBlockType + .defaultState().stateProperties(); + for (StateProperty key : propertyKeys) { + map.put(key.name(), SpongeTransmogrifier.transmogToWorldEditProperty(key)); + } + return map; + } + + @Override + public OptionalInt getInternalBlockStateId(BlockState state) { + org.spongepowered.api.block.BlockState equivalent = SpongeAdapter.adapt(state); + return OptionalInt.of(Block.getId( + (net.minecraft.world.level.block.state.BlockState) equivalent + )); + } +} diff --git a/worldedit-sponge/src/main/java/com/sk89q/worldedit/sponge/SpongeCommandSender.java b/worldedit-sponge/src/main/java/com/sk89q/worldedit/sponge/SpongeCommandSender.java index 39b8cfd2c8..a75ee8fc6c 100644 --- a/worldedit-sponge/src/main/java/com/sk89q/worldedit/sponge/SpongeCommandSender.java +++ b/worldedit-sponge/src/main/java/com/sk89q/worldedit/sponge/SpongeCommandSender.java @@ -23,21 +23,15 @@ import com.sk89q.worldedit.extension.platform.Actor; import com.sk89q.worldedit.internal.cui.CUIEvent; import com.sk89q.worldedit.session.SessionKey; -import com.sk89q.worldedit.util.auth.AuthorizationException; -import com.sk89q.worldedit.util.formatting.WorldEditText; import com.sk89q.worldedit.util.formatting.text.Component; -import com.sk89q.worldedit.util.formatting.text.adapter.spongeapi.TextAdapter; -import org.spongepowered.api.command.CommandSource; +import com.sk89q.worldedit.util.formatting.text.TextComponent; +import com.sk89q.worldedit.util.formatting.text.format.TextColor; +import net.kyori.adventure.audience.Audience; import org.spongepowered.api.entity.living.player.Player; -import org.spongepowered.api.text.Text; -import org.spongepowered.api.text.format.TextColor; -import org.spongepowered.api.text.format.TextColors; -import org.spongepowered.api.text.serializer.TextSerializers; import java.io.File; import java.util.Locale; import java.util.UUID; -import javax.annotation.Nullable; import static com.google.common.base.Preconditions.checkArgument; import static com.google.common.base.Preconditions.checkNotNull; @@ -49,15 +43,15 @@ public class SpongeCommandSender implements Actor { */ private static final UUID DEFAULT_ID = UUID.fromString("a233eb4b-4cab-42cd-9fd9-7e7b9a3f74be"); - private final CommandSource sender; - private final SpongeWorldEdit plugin; + private final Audience sender; - public SpongeCommandSender(SpongeWorldEdit plugin, CommandSource sender) { - checkNotNull(plugin); + public SpongeCommandSender(Audience sender) { checkNotNull(sender); - checkArgument(!(sender instanceof Player), "Cannot wrap a player"); + checkArgument( + !(sender instanceof Player), + "Players should be wrapped using the specialized class" + ); - this.plugin = plugin; this.sender = sender; } @@ -68,42 +62,44 @@ public UUID getUniqueId() { @Override public String getName() { - return sender.getName(); + return "Console"; } - @SuppressWarnings("deprecation") @Override + @Deprecated public void printRaw(String msg) { for (String part : msg.split("\n")) { - sender.sendMessage(TextSerializers.LEGACY_FORMATTING_CODE.deserialize(part)); + sender.sendMessage(net.kyori.adventure.text.Component.text(part)); } } @Override + @Deprecated public void print(String msg) { - sendColorized(msg, TextColors.LIGHT_PURPLE); + for (String part : msg.split("\n")) { + print(TextComponent.of(part, TextColor.LIGHT_PURPLE)); + } } @Override + @Deprecated public void printDebug(String msg) { - sendColorized(msg, TextColors.GRAY); + for (String part : msg.split("\n")) { + print(TextComponent.of(part, TextColor.GRAY)); + } } @Override + @Deprecated public void printError(String msg) { - sendColorized(msg, TextColors.RED); + for (String part : msg.split("\n")) { + print(TextComponent.of(part, TextColor.RED)); + } } @Override public void print(Component component) { - TextAdapter.sendMessage(sender, WorldEditText.format(component, getLocale())); - } - - @SuppressWarnings("deprecation") - private void sendColorized(String msg, TextColor formatting) { - for (String part : msg.split("\n")) { - sender.sendMessage(Text.of(formatting, TextSerializers.LEGACY_FORMATTING_CODE.deserialize(part))); - } + sender.sendMessage(SpongeTextAdapter.convert(component, getLocale())); } @Override @@ -122,7 +118,7 @@ public boolean hasPermission(String perm) { } @Override - public void checkPermission(String permission) throws AuthorizationException { + public void checkPermission(String permission) { } @Override @@ -152,20 +148,19 @@ public Locale getLocale() { @Override public SessionKey getSessionKey() { return new SessionKey() { - @Nullable @Override public String getName() { - return null; + return "Console"; } @Override public boolean isActive() { - return false; + return true; } @Override public boolean isPersistent() { - return false; + return true; } @Override diff --git a/worldedit-sponge/src/main/java/com/sk89q/worldedit/sponge/SpongeEntity.java b/worldedit-sponge/src/main/java/com/sk89q/worldedit/sponge/SpongeEntity.java index 532a366082..9902ebbfcc 100644 --- a/worldedit-sponge/src/main/java/com/sk89q/worldedit/sponge/SpongeEntity.java +++ b/worldedit-sponge/src/main/java/com/sk89q/worldedit/sponge/SpongeEntity.java @@ -19,14 +19,17 @@ package com.sk89q.worldedit.sponge; -import com.flowpowered.math.vector.Vector3d; import com.sk89q.worldedit.entity.BaseEntity; import com.sk89q.worldedit.entity.Entity; import com.sk89q.worldedit.entity.metadata.EntityProperties; import com.sk89q.worldedit.extent.Extent; +import com.sk89q.worldedit.sponge.internal.NbtAdapter; import com.sk89q.worldedit.util.Location; import com.sk89q.worldedit.world.NullWorld; -import org.spongepowered.api.world.World; +import com.sk89q.worldedit.world.entity.EntityType; +import org.spongepowered.api.registry.RegistryTypes; +import org.spongepowered.api.world.server.ServerLocation; +import org.spongepowered.math.vector.Vector3d; import java.lang.ref.WeakReference; import javax.annotation.Nullable; @@ -46,7 +49,14 @@ class SpongeEntity implements Entity { public BaseEntity getState() { org.spongepowered.api.entity.Entity entity = entityRef.get(); if (entity != null) { - return SpongeWorldEdit.inst().getAdapter().createBaseEntity(entity); + return new BaseEntity( + EntityType.REGISTRY.get( + entity.type().key(RegistryTypes.ENTITY_TYPE).asString() + ), + entity.toContainer().getView(Constants.Sponge.UNSAFE_NBT) + .map(NbtAdapter::adaptToWorldEdit) + .orElse(null) + ); } else { return null; } @@ -56,10 +66,10 @@ public BaseEntity getState() { public Location getLocation() { org.spongepowered.api.entity.Entity entity = entityRef.get(); if (entity != null) { - org.spongepowered.api.world.Location entityLoc = entity.getLocation(); - Vector3d entityRot = entity.getRotation(); + ServerLocation entityLoc = entity.serverLocation(); + Vector3d entityRot = entity.rotation(); - return SpongeWorldEdit.inst().getAdapter().adapt(entityLoc, entityRot); + return SpongeAdapter.adapt(entityLoc, entityRot); } else { return new Location(NullWorld.getInstance()); } @@ -79,7 +89,7 @@ public boolean setLocation(Location location) { public Extent getExtent() { org.spongepowered.api.entity.Entity entity = entityRef.get(); if (entity != null) { - return SpongeWorldEdit.inst().getAdapter().getWorld(entity.getWorld()); + return SpongeAdapter.adapt(entity.serverLocation().world()); } else { return NullWorld.getInstance(); } diff --git a/worldedit-sponge/src/main/java/com/sk89q/worldedit/sponge/SpongeEntityProperties.java b/worldedit-sponge/src/main/java/com/sk89q/worldedit/sponge/SpongeEntityProperties.java index 7373ae642f..f7b0269a7f 100644 --- a/worldedit-sponge/src/main/java/com/sk89q/worldedit/sponge/SpongeEntityProperties.java +++ b/worldedit-sponge/src/main/java/com/sk89q/worldedit/sponge/SpongeEntityProperties.java @@ -20,29 +20,27 @@ package com.sk89q.worldedit.sponge; import com.sk89q.worldedit.entity.metadata.EntityProperties; -import org.spongepowered.api.data.key.Keys; +import org.spongepowered.api.data.Keys; import org.spongepowered.api.entity.Entity; import org.spongepowered.api.entity.ExperienceOrb; import org.spongepowered.api.entity.FallingBlock; import org.spongepowered.api.entity.Item; -import org.spongepowered.api.entity.explosive.PrimedTNT; +import org.spongepowered.api.entity.explosive.fused.PrimedTNT; import org.spongepowered.api.entity.hanging.ItemFrame; import org.spongepowered.api.entity.hanging.Painting; import org.spongepowered.api.entity.living.Ambient; import org.spongepowered.api.entity.living.ArmorStand; +import org.spongepowered.api.entity.living.ComplexLivingPart; import org.spongepowered.api.entity.living.Humanoid; import org.spongepowered.api.entity.living.Living; -import org.spongepowered.api.entity.living.Villager; import org.spongepowered.api.entity.living.animal.Animal; -import org.spongepowered.api.entity.living.complex.ComplexLivingPart; +import org.spongepowered.api.entity.living.aquatic.Aquatic; import org.spongepowered.api.entity.living.golem.Golem; import org.spongepowered.api.entity.living.player.Player; +import org.spongepowered.api.entity.living.trader.Trader; import org.spongepowered.api.entity.projectile.Projectile; import org.spongepowered.api.entity.vehicle.Boat; import org.spongepowered.api.entity.vehicle.minecart.Minecart; -import org.spongepowered.api.text.Text; - -import java.util.Optional; import static com.google.common.base.Preconditions.checkNotNull; @@ -122,7 +120,7 @@ public boolean isAmbient() { @Override public boolean isNPC() { - return entity instanceof Villager; + return entity instanceof Trader; } @Override @@ -132,12 +130,12 @@ public boolean isGolem() { @Override public boolean isTamed() { - return entity.get(Keys.TAMED_OWNER).orElse(Optional.empty()).isPresent(); + return entity.get(Keys.IS_TAMED).orElse(false); } @Override public boolean isTagged() { - return !entity.get(Keys.DISPLAY_NAME).orElse(Text.EMPTY).isEmpty(); + return entity.get(Keys.CUSTOM_NAME).isPresent(); } @Override @@ -152,6 +150,6 @@ public boolean isPasteable() { @Override public boolean isWaterCreature() { - return false; // TODO api8 + return entity instanceof Aquatic; } } diff --git a/worldedit-sponge/src/main/java/com/sk89q/worldedit/sponge/SpongeItemCategoryRegistry.java b/worldedit-sponge/src/main/java/com/sk89q/worldedit/sponge/SpongeItemCategoryRegistry.java new file mode 100644 index 0000000000..b417c34da2 --- /dev/null +++ b/worldedit-sponge/src/main/java/com/sk89q/worldedit/sponge/SpongeItemCategoryRegistry.java @@ -0,0 +1,44 @@ +/* + * WorldEdit, a Minecraft world manipulation toolkit + * Copyright (C) sk89q + * Copyright (C) WorldEdit team and contributors + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +package com.sk89q.worldedit.sponge; + +import com.sk89q.worldedit.world.item.ItemType; +import com.sk89q.worldedit.world.registry.ItemCategoryRegistry; +import net.minecraft.core.Registry; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.tags.ItemTags; +import net.minecraft.tags.Tag; + +import java.util.Collections; +import java.util.Optional; +import java.util.Set; +import java.util.stream.Collectors; + +public class SpongeItemCategoryRegistry implements ItemCategoryRegistry { + @Override + public Set getCategorisedByName(String category) { + return Optional.ofNullable(ItemTags.getAllTags().getTag(new ResourceLocation(category))) + .map(Tag::getValues) + .orElse(Collections.emptyList()) + .stream() + .map(b -> ItemType.REGISTRY.get(Registry.ITEM.getKey(b).toString())) + .collect(Collectors.toSet()); + } +} diff --git a/worldedit-sponge/src/main/java/com/sk89q/worldedit/sponge/SpongeItemRegistry.java b/worldedit-sponge/src/main/java/com/sk89q/worldedit/sponge/SpongeItemRegistry.java new file mode 100644 index 0000000000..61dd1222d9 --- /dev/null +++ b/worldedit-sponge/src/main/java/com/sk89q/worldedit/sponge/SpongeItemRegistry.java @@ -0,0 +1,47 @@ +/* + * WorldEdit, a Minecraft world manipulation toolkit + * Copyright (C) sk89q + * Copyright (C) WorldEdit team and contributors + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +package com.sk89q.worldedit.sponge; + +import com.sk89q.worldedit.blocks.BaseItemStack; +import com.sk89q.worldedit.util.formatting.text.Component; +import com.sk89q.worldedit.util.formatting.text.TranslatableComponent; +import com.sk89q.worldedit.world.item.ItemType; +import com.sk89q.worldedit.world.registry.BundledItemRegistry; +import net.minecraft.world.item.ItemStack; +import org.spongepowered.api.ResourceKey; +import org.spongepowered.api.Sponge; +import org.spongepowered.api.registry.RegistryTypes; + +public class SpongeItemRegistry extends BundledItemRegistry { + + @Override + public Component getRichName(ItemType itemType) { + return SpongeTextAdapter.convert(Sponge.game().registry(RegistryTypes.ITEM_TYPE) + .value(ResourceKey.resolve(itemType.getId())).asComponent()); + } + + @Override + public Component getRichName(BaseItemStack itemStack) { + return TranslatableComponent.of( + ((ItemStack) (Object) SpongeAdapter.adapt(itemStack)).getDescriptionId() + ); + } + +} diff --git a/worldedit-sponge/src/main/java/com/sk89q/worldedit/sponge/SpongePermissionsProvider.java b/worldedit-sponge/src/main/java/com/sk89q/worldedit/sponge/SpongePermissionsProvider.java index 0e8fc89c94..da99c0eca6 100644 --- a/worldedit-sponge/src/main/java/com/sk89q/worldedit/sponge/SpongePermissionsProvider.java +++ b/worldedit-sponge/src/main/java/com/sk89q/worldedit/sponge/SpongePermissionsProvider.java @@ -20,28 +20,28 @@ package com.sk89q.worldedit.sponge; import org.spongepowered.api.Sponge; -import org.spongepowered.api.command.CommandCallable; -import org.spongepowered.api.entity.living.player.Player; +import org.spongepowered.api.entity.living.player.server.ServerPlayer; import org.spongepowered.api.service.permission.PermissionDescription; import org.spongepowered.api.service.permission.PermissionService; import org.spongepowered.api.service.permission.SubjectReference; public class SpongePermissionsProvider { - public boolean hasPermission(Player player, String permission) { + public boolean hasPermission(ServerPlayer player, String permission) { return player.hasPermission(permission); } - public void registerPermission(CommandCallable command, String permission) { - Sponge.getGame().getServiceManager().getRegistration(PermissionService.class).ifPresent((permissionService -> { - PermissionDescription.Builder permissionBuilder = permissionService.getProvider().newDescriptionBuilder(SpongeWorldEdit.inst()); + public void registerPermission(String permission) { + Sponge.game().serviceProvider().registration(PermissionService.class).ifPresent((permissionService -> { + PermissionDescription.Builder permissionBuilder = permissionService.service() + .newDescriptionBuilder(SpongeWorldEdit.inst().getPluginContainer()); permissionBuilder.id(permission).register(); })); } - public String[] getGroups(Player player) { - return player.getParents().stream() - .map(SubjectReference::getSubjectIdentifier) - .toArray(String[]::new); + public String[] getGroups(ServerPlayer player) { + return player.parents().stream() + .map(SubjectReference::subjectIdentifier) + .toArray(String[]::new); } } diff --git a/worldedit-sponge/src/main/java/com/sk89q/worldedit/sponge/SpongePlatform.java b/worldedit-sponge/src/main/java/com/sk89q/worldedit/sponge/SpongePlatform.java index 804c2def4c..f8d7a8377e 100644 --- a/worldedit-sponge/src/main/java/com/sk89q/worldedit/sponge/SpongePlatform.java +++ b/worldedit-sponge/src/main/java/com/sk89q/worldedit/sponge/SpongePlatform.java @@ -19,31 +19,25 @@ package com.sk89q.worldedit.sponge; -import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableSet; -import com.sk89q.worldedit.WorldEdit; import com.sk89q.worldedit.entity.Player; -import com.sk89q.worldedit.event.platform.CommandEvent; -import com.sk89q.worldedit.event.platform.CommandSuggestionEvent; import com.sk89q.worldedit.extension.platform.AbstractPlatform; import com.sk89q.worldedit.extension.platform.Actor; import com.sk89q.worldedit.extension.platform.Capability; import com.sk89q.worldedit.extension.platform.MultiUserPlatform; import com.sk89q.worldedit.extension.platform.Preference; -import com.sk89q.worldedit.internal.command.CommandUtil; import com.sk89q.worldedit.sponge.config.SpongeConfiguration; import com.sk89q.worldedit.util.SideEffect; import com.sk89q.worldedit.world.World; import com.sk89q.worldedit.world.registry.Registries; -import org.enginehub.piston.Command; import org.enginehub.piston.CommandManager; +import org.spongepowered.api.ResourceKey; import org.spongepowered.api.Sponge; -import org.spongepowered.api.command.CommandException; -import org.spongepowered.api.command.CommandResult; -import org.spongepowered.api.command.CommandSource; -import org.spongepowered.api.entity.EntityType; +import org.spongepowered.api.entity.living.player.server.ServerPlayer; +import org.spongepowered.api.registry.RegistryTypes; import org.spongepowered.api.scheduler.Task; -import org.spongepowered.api.world.Location; +import org.spongepowered.api.util.Ticks; +import org.spongepowered.api.world.server.ServerWorld; import java.util.ArrayList; import java.util.Collection; @@ -76,13 +70,13 @@ public Registries getRegistries() { @Override public int getDataVersion() { - // TODO add to adapter - org.spongepowered.common.data.util.DataUtil#MINECRAFT_DATA_VERSION - return 1631; + return Sponge.platform().minecraftVersion().dataVersion().orElse(-1); } @Override public boolean isValidMobType(String type) { - return Sponge.getRegistry().getType(EntityType.class, type).isPresent(); + return Sponge.game().registry(RegistryTypes.ENTITY_TYPE) + .findValue(ResourceKey.resolve(type)).isPresent(); } @Override @@ -93,16 +87,21 @@ public void reload() { @Override public int schedule(long delay, long period, Runnable task) { - Task.builder().delayTicks(delay).intervalTicks(period).execute(task).submit(SpongeWorldEdit.inst()); - return 0; // TODO This isn't right, but we only check for -1 values + Task t = Task.builder() + .delay(Ticks.of(delay)) + .interval(Ticks.of(period)) + .execute(task) + .plugin(SpongeWorldEdit.inst().getPluginContainer()) + .build(); + return Math.abs(t.hashCode()); // TODO This isn't right, but we only check for -1 values } @Override public List getWorlds() { - Collection worlds = Sponge.getServer().getWorlds(); + Collection worlds = Sponge.server().worldManager().worlds(); List ret = new ArrayList<>(worlds.size()); - for (org.spongepowered.api.world.World world : worlds) { - ret.add(SpongeWorldEdit.inst().getAdapter().getWorld(world)); + for (ServerWorld world : worlds) { + ret.add(SpongeAdapter.adapt(world)); } return ret; } @@ -113,8 +112,8 @@ public Player matchPlayer(Player player) { if (player instanceof SpongePlayer) { return player; } else { - Optional optPlayer = Sponge.getServer().getPlayer(player.getUniqueId()); - return optPlayer.map(player1 -> new SpongePlayer(this, player1)).orElse(null); + Optional optPlayer = Sponge.server().player(player.getUniqueId()); + return optPlayer.map(SpongePlayer::new).orElse(null); } } @@ -124,9 +123,10 @@ public World matchWorld(World world) { if (world instanceof SpongeWorld) { return world; } else { - for (org.spongepowered.api.world.World ws : Sponge.getServer().getWorlds()) { - if (ws.getName().equals(world.getName())) { - return SpongeWorldEdit.inst().getAdapter().getWorld(ws); + // TODO this needs fixing for world name shenanigans + for (ServerWorld spongeWorld : Sponge.server().worldManager().worlds()) { + if (spongeWorld.key().toString().equals(world.getName())) { + return SpongeAdapter.adapt(spongeWorld); } } @@ -136,26 +136,6 @@ public World matchWorld(World world) { @Override public void registerCommands(CommandManager manager) { - for (Command command : manager.getAllCommands().collect(toList())) { - CommandAdapter adapter = new CommandAdapter(command) { - @Override - public CommandResult process(CommandSource source, String arguments) throws org.spongepowered.api.command.CommandException { - CommandEvent weEvent = new CommandEvent(SpongeWorldEdit.inst().wrapCommandSource(source), command.getName() + " " + arguments); - WorldEdit.getInstance().getEventBus().post(weEvent); - return weEvent.isCancelled() ? CommandResult.success() : CommandResult.empty(); - } - - @Override - public List getSuggestions(CommandSource source, String arguments, @Nullable Location targetPosition) throws CommandException { - CommandSuggestionEvent weEvent = new CommandSuggestionEvent(SpongeWorldEdit.inst().wrapCommandSource(source), command.getName() + " " + arguments); - WorldEdit.getInstance().getEventBus().post(weEvent); - return CommandUtil.fixSuggestions(arguments, weEvent.getSuggestions()); - } - }; - ImmutableList.Builder aliases = ImmutableList.builder(); - aliases.add(command.getName()).addAll(command.getAliases()); - Sponge.getCommandManager().register(SpongeWorldEdit.inst(), adapter, aliases.build()); - } } @Override @@ -197,15 +177,13 @@ public Map getCapabilities() { @Override public Set getSupportedSideEffects() { - return ImmutableSet.of(); + return ImmutableSet.of( + SideEffect.UPDATE, SideEffect.ENTITY_AI, SideEffect.LIGHTING, SideEffect.NEIGHBORS + ); } @Override public Collection getConnectedUsers() { - List users = new ArrayList<>(); - for (org.spongepowered.api.entity.living.player.Player player : Sponge.getServer().getOnlinePlayers()) { - users.add(new SpongePlayer(this, player)); - } - return users; + return Sponge.server().onlinePlayers().stream().map(SpongePlayer::new).collect(toList()); } } diff --git a/worldedit-sponge/src/main/java/com/sk89q/worldedit/sponge/SpongePlayer.java b/worldedit-sponge/src/main/java/com/sk89q/worldedit/sponge/SpongePlayer.java index f0f814d74f..821448872f 100644 --- a/worldedit-sponge/src/main/java/com/sk89q/worldedit/sponge/SpongePlayer.java +++ b/worldedit-sponge/src/main/java/com/sk89q/worldedit/sponge/SpongePlayer.java @@ -19,7 +19,7 @@ package com.sk89q.worldedit.sponge; -import com.flowpowered.math.vector.Vector3d; +import com.sk89q.jnbt.CompoundTag; import com.sk89q.util.StringUtil; import com.sk89q.worldedit.blocks.BaseItemStack; import com.sk89q.worldedit.entity.BaseEntity; @@ -29,63 +29,68 @@ import com.sk89q.worldedit.math.BlockVector3; import com.sk89q.worldedit.math.Vector3; import com.sk89q.worldedit.session.SessionKey; +import com.sk89q.worldedit.sponge.internal.NbtAdapter; import com.sk89q.worldedit.util.HandSide; import com.sk89q.worldedit.util.Location; -import com.sk89q.worldedit.util.formatting.WorldEditText; import com.sk89q.worldedit.util.formatting.text.Component; -import com.sk89q.worldedit.util.formatting.text.adapter.spongeapi.TextAdapter; +import com.sk89q.worldedit.world.block.BaseBlock; import com.sk89q.worldedit.world.block.BlockStateHolder; import com.sk89q.worldedit.world.gamemode.GameMode; import com.sk89q.worldedit.world.gamemode.GameModes; -import com.sk89q.worldedit.world.item.ItemTypes; +import net.kyori.adventure.text.format.NamedTextColor; +import net.kyori.adventure.text.format.TextColor; +import net.kyori.adventure.text.serializer.legacy.LegacyComponentSerializer; +import net.minecraft.core.BlockPos; +import net.minecraft.network.protocol.game.ClientboundBlockEntityDataPacket; +import net.minecraft.network.protocol.game.ClientboundBlockUpdatePacket; +import org.spongepowered.api.ResourceKey; import org.spongepowered.api.Sponge; -import org.spongepowered.api.data.key.Keys; +import org.spongepowered.api.data.Keys; import org.spongepowered.api.data.type.HandTypes; import org.spongepowered.api.entity.living.player.Player; -import org.spongepowered.api.item.ItemType; +import org.spongepowered.api.entity.living.player.server.ServerPlayer; import org.spongepowered.api.item.inventory.ItemStack; -import org.spongepowered.api.text.Text; -import org.spongepowered.api.text.format.TextColor; -import org.spongepowered.api.text.format.TextColors; -import org.spongepowered.api.text.serializer.TextSerializers; -import org.spongepowered.api.world.World; +import org.spongepowered.api.registry.RegistryTypes; +import org.spongepowered.api.world.server.ServerLocation; +import org.spongepowered.math.vector.Vector3d; import java.nio.charset.StandardCharsets; import java.util.Locale; -import java.util.Optional; import java.util.UUID; import javax.annotation.Nullable; public class SpongePlayer extends AbstractPlayerActor { + private static final int STRUCTURE_BLOCK_PACKET_ID = 7; - private final Player player; + private final ServerPlayer player; - protected SpongePlayer(SpongePlatform platform, Player player) { + protected SpongePlayer(ServerPlayer player) { this.player = player; ThreadSafeCache.getInstance().getOnlineIds().add(getUniqueId()); } @Override public UUID getUniqueId() { - return player.getUniqueId(); + return player.uniqueId(); } @Override public BaseItemStack getItemInHand(HandSide handSide) { - Optional is = this.player.getItemInHand(handSide == HandSide.MAIN_HAND - ? HandTypes.MAIN_HAND : HandTypes.OFF_HAND); - return is.map(itemStack -> new BaseItemStack(ItemTypes.get(itemStack.getType().getId()))).orElse(null); + ItemStack is = this.player.itemInHand( + handSide == HandSide.MAIN_HAND ? HandTypes.MAIN_HAND : HandTypes.OFF_HAND + ); + return SpongeAdapter.adapt(is); } @Override public String getName() { - return this.player.getName(); + return this.player.name(); } @SuppressWarnings("deprecation") @Override public String getDisplayName() { - return player.getDisplayNameData().displayName().getDirect().map(TextSerializers.LEGACY_FORMATTING_CODE::serialize).orElse(getName()); + return LegacyComponentSerializer.legacySection().serialize(player.displayName().get()); } @Override @@ -95,10 +100,10 @@ public BaseEntity getState() { @Override public Location getLocation() { - org.spongepowered.api.world.Location entityLoc = this.player.getLocation(); - Vector3d entityRot = this.player.getRotation(); + ServerLocation entityLoc = this.player.serverLocation(); + Vector3d entityRot = this.player.rotation(); - return SpongeWorldEdit.inst().getAdapter().adapt(entityLoc, entityRot); + return SpongeAdapter.adapt(entityLoc, entityRot); } @Override @@ -108,15 +113,12 @@ public boolean setLocation(Location location) { @Override public com.sk89q.worldedit.world.World getWorld() { - return SpongeWorldEdit.inst().getAdapter().getWorld(player.getWorld()); + return SpongeAdapter.adapt(player.serverLocation().world()); } @Override public void giveItem(BaseItemStack itemStack) { - this.player.getInventory().offer( - ItemStack.of(Sponge.getGame().getRegistry().getType(ItemType.class, itemStack.getType().getId()).get(), - itemStack.getAmount()) - ); + this.player.inventory().offer(SpongeAdapter.adapt(itemStack)); } @Override @@ -128,46 +130,55 @@ public void dispatchCUIEvent(CUIEvent event) { } String finalData = send; - CUIChannelHandler.getActiveChannel().sendTo(player, buffer -> buffer.writeBytes(finalData.getBytes(StandardCharsets.UTF_8))); + CUIChannelHandler.channel().play().sendTo( + player, + buffer -> buffer.writeBytes(finalData.getBytes(StandardCharsets.UTF_8)) + ); } @Override + @Deprecated public void printRaw(String msg) { for (String part : msg.split("\n")) { - this.player.sendMessage(TextSerializers.FORMATTING_CODE.deserialize(part)); + this.player.sendMessage(LegacyComponentSerializer.legacySection().deserialize(part)); } } @Override + @Deprecated public void printDebug(String msg) { - sendColorized(msg, TextColors.GRAY); + sendColorized(msg, NamedTextColor.GRAY); } @Override + @Deprecated public void print(String msg) { - sendColorized(msg, TextColors.LIGHT_PURPLE); + sendColorized(msg, NamedTextColor.LIGHT_PURPLE); } @Override + @Deprecated public void printError(String msg) { - sendColorized(msg, TextColors.RED); + sendColorized(msg, NamedTextColor.RED); } @Override public void print(Component component) { - TextAdapter.sendMessage(player, WorldEditText.format(component, getLocale())); + player.sendMessage(SpongeTextAdapter.convert(component, getLocale())); } private void sendColorized(String msg, TextColor formatting) { for (String part : msg.split("\n")) { - this.player.sendMessage(Text.of(formatting, TextSerializers.FORMATTING_CODE.deserialize(part))); + this.player.sendMessage( + LegacyComponentSerializer.legacySection().deserialize(part).color(formatting) + ); } } @Override public boolean trySetPosition(Vector3 pos, float pitch, float yaw) { - org.spongepowered.api.world.Location loc = new org.spongepowered.api.world.Location<>( - this.player.getWorld(), pos.getX(), pos.getY(), pos.getZ() + ServerLocation loc = ServerLocation.of( + this.player.world(), pos.getX(), pos.getY(), pos.getZ() ); return this.player.setLocationAndRotation(loc, new Vector3d(pitch, yaw, 0)); @@ -196,13 +207,16 @@ public T getFacet(Class cls) { @Override public GameMode getGameMode() { - return GameModes.get(player.getGameModeData().type().get().getId()); + return GameModes.get(player.gameMode().get().key(RegistryTypes.GAME_MODE).asString()); } @Override public void setGameMode(GameMode gameMode) { - player.getGameModeData().type().set(Sponge.getRegistry().getType(org.spongepowered.api.entity.living.player.gamemode.GameMode.class, - gameMode.getId()).get()); + player.gameMode().set( + Sponge.game().registry(RegistryTypes.GAME_MODE).value( + ResourceKey.resolve(gameMode.getId()) + ) + ); } @Override @@ -217,24 +231,34 @@ public void setFlying(boolean flying) { @Override public > void sendFakeBlock(BlockVector3 pos, B block) { - org.spongepowered.api.world.Location loc = player.getWorld().getLocation(pos.getX(), pos.getY(), pos.getZ()); if (block == null) { - player.sendBlockChange(loc.getBlockPosition(), loc.getBlock()); + player.resetBlockChange(pos.getX(), pos.getY(), pos.getZ()); } else { - // TODO - // player.sendBlockChange(loc, BukkitAdapter.adapt(block)); - // if (block instanceof BaseBlock && ((BaseBlock) block).hasNbtData()) { - // BukkitImplAdapter adapter = WorldEditPlugin.getInstance().getBukkitImplAdapter(); - // if (adapter != null) { - // adapter.sendFakeNBT(player, pos, ((BaseBlock) block).getNbtData()); - // } - // } + net.minecraft.server.level.ServerPlayer mcPlayer = + ((net.minecraft.server.level.ServerPlayer) player); + final ClientboundBlockUpdatePacket packetOut = new ClientboundBlockUpdatePacket( + new BlockPos(pos.getX(), pos.getY(), pos.getZ()), + (net.minecraft.world.level.block.state.BlockState) + SpongeAdapter.adapt(block.toImmutableState()) + ); + mcPlayer.connection.send(packetOut); + if (block instanceof BaseBlock && block.getBlockType().equals(com.sk89q.worldedit.world.block.BlockTypes.STRUCTURE_BLOCK)) { + final BaseBlock baseBlock = (BaseBlock) block; + final CompoundTag nbtData = baseBlock.getNbtData(); + if (nbtData != null) { + mcPlayer.connection.send(new ClientboundBlockEntityDataPacket( + new BlockPos(pos.getBlockX(), pos.getBlockY(), pos.getBlockZ()), + STRUCTURE_BLOCK_PACKET_ID, + NbtAdapter.adaptNMSToWorldEdit(nbtData)) + ); + } + } } } @Override public Locale getLocale() { - return player.getLocale(); + return player.locale(); } @Override @@ -249,8 +273,8 @@ static class SessionKeyImpl implements SessionKey { private final String name; SessionKeyImpl(Player player) { - this.uuid = player.getUniqueId(); - this.name = player.getName(); + this.uuid = player.uniqueId(); + this.name = player.name(); } @Override diff --git a/worldedit-sponge/src/main/java/com/sk89q/worldedit/sponge/SpongeRegistries.java b/worldedit-sponge/src/main/java/com/sk89q/worldedit/sponge/SpongeRegistries.java index 47b83250e2..04baa39365 100644 --- a/worldedit-sponge/src/main/java/com/sk89q/worldedit/sponge/SpongeRegistries.java +++ b/worldedit-sponge/src/main/java/com/sk89q/worldedit/sponge/SpongeRegistries.java @@ -20,7 +20,11 @@ package com.sk89q.worldedit.sponge; import com.sk89q.worldedit.world.registry.BiomeRegistry; +import com.sk89q.worldedit.world.registry.BlockCategoryRegistry; +import com.sk89q.worldedit.world.registry.BlockRegistry; import com.sk89q.worldedit.world.registry.BundledRegistries; +import com.sk89q.worldedit.world.registry.ItemCategoryRegistry; +import com.sk89q.worldedit.world.registry.ItemRegistry; /** * World data for the Sponge platform. @@ -28,20 +32,39 @@ class SpongeRegistries extends BundledRegistries { private static final SpongeRegistries INSTANCE = new SpongeRegistries(); + + public static SpongeRegistries getInstance() { + return INSTANCE; + } + private final BiomeRegistry biomeRegistry = new SpongeBiomeRegistry(); + private final BlockRegistry blockRegistry = new SpongeBlockRegistry(); + private final BlockCategoryRegistry blockCategoryRegistry = new SpongeBlockCategoryRegistry(); + private final ItemRegistry itemRegistry = new SpongeItemRegistry(); + private final ItemCategoryRegistry itemCategoryRegistry = new SpongeItemCategoryRegistry(); @Override public BiomeRegistry getBiomeRegistry() { return biomeRegistry; } - /** - * Get a static instance. - * - * @return an instance - */ - public static SpongeRegistries getInstance() { - return INSTANCE; + @Override + public BlockRegistry getBlockRegistry() { + return blockRegistry; } + @Override + public BlockCategoryRegistry getBlockCategoryRegistry() { + return blockCategoryRegistry; + } + + @Override + public ItemRegistry getItemRegistry() { + return itemRegistry; + } + + @Override + public ItemCategoryRegistry getItemCategoryRegistry() { + return itemCategoryRegistry; + } } diff --git a/worldedit-sponge/src/main/java/com/sk89q/worldedit/sponge/SpongeTextAdapter.java b/worldedit-sponge/src/main/java/com/sk89q/worldedit/sponge/SpongeTextAdapter.java index 1731f98d13..7709737e43 100644 --- a/worldedit-sponge/src/main/java/com/sk89q/worldedit/sponge/SpongeTextAdapter.java +++ b/worldedit-sponge/src/main/java/com/sk89q/worldedit/sponge/SpongeTextAdapter.java @@ -22,16 +22,22 @@ import com.sk89q.worldedit.util.formatting.WorldEditText; import com.sk89q.worldedit.util.formatting.text.Component; import com.sk89q.worldedit.util.formatting.text.serializer.gson.GsonComponentSerializer; -import org.spongepowered.api.text.Text; -import org.spongepowered.api.text.serializer.TextSerializers; import java.util.Locale; public class SpongeTextAdapter { - public static Text convert(Component component, Locale locale) { + public static net.kyori.adventure.text.Component convert(Component component, Locale locale) { component = WorldEditText.format(component, locale); - return TextSerializers.JSON.deserialize(GsonComponentSerializer.INSTANCE.serialize(component)); + return net.kyori.adventure.text.serializer.gson.GsonComponentSerializer.gson() + .deserialize(GsonComponentSerializer.INSTANCE.serialize(component)); + } + + public static Component convert(net.kyori.adventure.text.Component component) { + return GsonComponentSerializer.INSTANCE.deserialize( + net.kyori.adventure.text.serializer.gson.GsonComponentSerializer.gson() + .serialize(component) + ); } private SpongeTextAdapter() { diff --git a/worldedit-sponge/src/main/java/com/sk89q/worldedit/sponge/SpongeWorld.java b/worldedit-sponge/src/main/java/com/sk89q/worldedit/sponge/SpongeWorld.java index c37535160c..9b24f2338f 100644 --- a/worldedit-sponge/src/main/java/com/sk89q/worldedit/sponge/SpongeWorld.java +++ b/worldedit-sponge/src/main/java/com/sk89q/worldedit/sponge/SpongeWorld.java @@ -19,50 +19,72 @@ package com.sk89q.worldedit.sponge; -import com.flowpowered.math.vector.Vector3d; -import com.flowpowered.math.vector.Vector3i; +import com.google.common.collect.Sets; +import com.sk89q.jnbt.CompoundTag; import com.sk89q.worldedit.EditSession; import com.sk89q.worldedit.WorldEditException; import com.sk89q.worldedit.blocks.BaseItemStack; import com.sk89q.worldedit.entity.BaseEntity; import com.sk89q.worldedit.entity.Entity; import com.sk89q.worldedit.extent.Extent; +import com.sk89q.worldedit.internal.util.LogManagerCompat; import com.sk89q.worldedit.math.BlockVector3; import com.sk89q.worldedit.math.Vector3; +import com.sk89q.worldedit.regions.CuboidRegion; import com.sk89q.worldedit.regions.Region; -import com.sk89q.worldedit.registry.state.Property; +import com.sk89q.worldedit.sponge.internal.NbtAdapter; +import com.sk89q.worldedit.sponge.internal.SpongeWorldNativeAccess; import com.sk89q.worldedit.util.Location; +import com.sk89q.worldedit.util.SideEffect; +import com.sk89q.worldedit.util.SideEffectSet; +import com.sk89q.worldedit.util.TreeGenerator; import com.sk89q.worldedit.world.AbstractWorld; import com.sk89q.worldedit.world.RegenOptions; -import com.sk89q.worldedit.world.WorldUnloadedException; +import com.sk89q.worldedit.world.World; import com.sk89q.worldedit.world.biome.BiomeType; import com.sk89q.worldedit.world.block.BaseBlock; +import com.sk89q.worldedit.world.block.BlockState; import com.sk89q.worldedit.world.block.BlockStateHolder; import com.sk89q.worldedit.world.item.ItemTypes; import com.sk89q.worldedit.world.weather.WeatherType; import com.sk89q.worldedit.world.weather.WeatherTypes; +import net.minecraft.core.BlockPos; +import net.minecraft.data.worldgen.Features; +import net.minecraft.server.level.ServerLevel; +import net.minecraft.world.level.LevelReader; +import net.minecraft.world.level.levelgen.feature.ConfiguredFeature; +import org.apache.logging.log4j.Logger; +import org.spongepowered.api.ResourceKey; +import org.spongepowered.api.Server; import org.spongepowered.api.Sponge; -import org.spongepowered.api.block.BlockSnapshot; -import org.spongepowered.api.block.BlockState; -import org.spongepowered.api.block.BlockType; -import org.spongepowered.api.block.BlockTypes; -import org.spongepowered.api.block.tileentity.TileEntity; -import org.spongepowered.api.data.key.Keys; -import org.spongepowered.api.data.property.block.GroundLuminanceProperty; -import org.spongepowered.api.data.property.block.SkyLuminanceProperty; +import org.spongepowered.api.block.entity.BlockEntityArchetype; +import org.spongepowered.api.block.entity.BlockEntityType; +import org.spongepowered.api.data.persistence.DataContainer; +import org.spongepowered.api.data.persistence.DataView; import org.spongepowered.api.entity.EntityType; import org.spongepowered.api.entity.EntityTypes; +import org.spongepowered.api.entity.Item; +import org.spongepowered.api.registry.RegistryTypes; +import org.spongepowered.api.util.Ticks; import org.spongepowered.api.world.BlockChangeFlags; -import org.spongepowered.api.world.World; -import org.spongepowered.api.world.weather.Weather; +import org.spongepowered.api.world.LightTypes; +import org.spongepowered.api.world.SerializationBehavior; +import org.spongepowered.api.world.generation.config.WorldGenerationConfig; +import org.spongepowered.api.world.server.ServerLocation; +import org.spongepowered.api.world.server.ServerWorld; +import org.spongepowered.api.world.server.WorldTemplate; +import org.spongepowered.api.world.volume.stream.StreamOptions; +import org.spongepowered.math.vector.Vector3d; +import org.spongepowered.math.vector.Vector3i; import java.lang.ref.WeakReference; import java.nio.file.Path; -import java.util.ArrayList; import java.util.List; -import java.util.Locale; -import java.util.Map; -import java.util.Optional; +import java.util.Random; +import java.util.Set; +import java.util.concurrent.ExecutionException; +import java.util.concurrent.ThreadLocalRandom; +import java.util.stream.Collectors; import javax.annotation.Nullable; import static com.google.common.base.Preconditions.checkNotNull; @@ -70,43 +92,34 @@ /** * An adapter to Minecraft worlds for WorldEdit. */ -public abstract class SpongeWorld extends AbstractWorld { +public final class SpongeWorld extends AbstractWorld { - private final WeakReference worldRef; + private static final Random random = new Random(); + private static final Logger LOGGER = LogManagerCompat.getLogger(); + + private final WeakReference worldRef; + private final SpongeWorldNativeAccess worldNativeAccess; /** * Construct a new world. * * @param world the world */ - protected SpongeWorld(World world) { + protected SpongeWorld(ServerWorld world) { checkNotNull(world); this.worldRef = new WeakReference<>(world); + this.worldNativeAccess = new SpongeWorldNativeAccess(new WeakReference<>((ServerLevel) world)); } /** * Get the underlying handle to the world. * * @return the world - * @throws WorldEditException thrown if a reference to the world was lost (i.e. world was unloaded) - */ - public World getWorldChecked() throws WorldEditException { - World world = worldRef.get(); - if (world != null) { - return world; - } else { - throw new WorldUnloadedException(); - } - } - - /** - * Get the underlying handle to the world. - * - * @return the world - * @throws RuntimeException thrown if a reference to the world was lost (i.e. world was unloaded) + * @throws RuntimeException thrown if a reference to the world was lost (i.e. world was + * unloaded) */ - public World getWorld() { - World world = worldRef.get(); + ServerWorld getWorld() { + ServerWorld world = worldRef.get(); if (world != null) { return world; } else { @@ -114,101 +127,237 @@ public World getWorld() { } } + // This is sus but leaving it for later world name/id reworks @Override public String getName() { - return getWorld().getName(); + return getWorld().key().asString(); } @Override public String getId() { - return getName().replace(" ", "_").toLowerCase(Locale.ROOT) - + getWorld().getDimension().getType().getName().toLowerCase(Locale.ROOT); + return getWorld().key().asString(); } @Override public Path getStoragePath() { - return getWorld().getDirectory(); + return getWorld().directory(); + } + + @Override + public BlockState getBlock(BlockVector3 position) { + return SpongeAdapter.adapt(getWorld().block( + position.getX(), position.getY(), position.getZ() + )); + } + + @Override + public BaseBlock getFullBlock(BlockVector3 position) { + CompoundTag entity = getWorld() + .blockEntity(position.getX(), position.getY(), position.getZ()) + .map(e -> NbtAdapter.adaptToWorldEdit(e.createArchetype().blockEntityData())) + .orElse(null); + return getBlock(position).toBaseBlock(entity); } - @SuppressWarnings("WeakerAccess") - protected BlockState getBlockState(BlockStateHolder block) { - if (block instanceof com.sk89q.worldedit.world.block.BlockState) { - BlockState state = Sponge.getRegistry().getType(BlockType.class, block.getBlockType().getId()).orElse(BlockTypes.AIR).getDefaultState(); - for (Map.Entry, Object> entry : block.getStates().entrySet()) { - // TODO Convert across states + @Override + public > boolean setBlock(BlockVector3 position, B block, SideEffectSet sideEffects) throws WorldEditException { + checkNotNull(position); + checkNotNull(block); + + ServerWorld world = getWorld(); + + org.spongepowered.api.block.BlockState newState = SpongeAdapter.adapt(block.toImmutableState()); + + boolean didSet = world.setBlock( + position.getX(), position.getY(), position.getZ(), + newState, + BlockChangeFlags.NONE + .withUpdateNeighbors(sideEffects.shouldApply(SideEffect.NEIGHBORS)) + .withNotifyClients(true) + .withPhysics(sideEffects.shouldApply(SideEffect.UPDATE)) + .withNotifyObservers(sideEffects.shouldApply(SideEffect.UPDATE)) + .withLightingUpdates(sideEffects.shouldApply(SideEffect.LIGHTING)) + .withPathfindingUpdates(sideEffects.shouldApply(SideEffect.ENTITY_AI)) + .withNeighborDropsAllowed(false) + .withBlocksMoving(false) + .withForcedReRender(false) + .withIgnoreRender(false) + ); + if (!didSet) { + // still update NBT if the block is the same + if (world.block(position.getX(), position.getY(), position.getZ()) == newState) { + didSet = block.toBaseBlock().hasNbtData(); } - return state; - } else { - throw new UnsupportedOperationException("Missing Sponge adapter for WorldEdit!"); } - } - @SuppressWarnings("WeakerAccess") - protected abstract void applyTileEntityData(TileEntity entity, BaseBlock block); + // Create the TileEntity + if (didSet && block instanceof BaseBlock && ((BaseBlock) block).hasNbtData()) { + BaseBlock baseBlock = (BaseBlock) block; + BlockEntityArchetype.builder() + .blockEntity((BlockEntityType) + world.engine().registry(RegistryTypes.BLOCK_ENTITY_TYPE) + .value(ResourceKey.resolve(baseBlock.getNbtId())) + ) + .blockEntityData(NbtAdapter.adaptFromWorldEdit(baseBlock.getNbtData())) + .state(newState) + .build() + .apply(ServerLocation.of(world, position.getX(), position.getY(), position.getZ())); + } - private static final BlockSnapshot.Builder builder = BlockSnapshot.builder(); + return true; + } @Override - public > boolean setBlock(BlockVector3 position, B block, boolean notifyAndLight) throws WorldEditException { + public Set applySideEffects(BlockVector3 position, com.sk89q.worldedit.world.block.BlockState previousType, SideEffectSet sideEffectSet) throws WorldEditException { checkNotNull(position); - checkNotNull(block); - World world = getWorldChecked(); + worldNativeAccess.applySideEffects(position, previousType, sideEffectSet); + + return Sets.intersection( + SpongeWorldEdit.inst().getInternalPlatform().getSupportedSideEffects(), + sideEffectSet.getSideEffectsToApply() + ); + } - // First set the block - Vector3i pos = new Vector3i(position.getX(), position.getY(), position.getZ()); - BlockState newState = getBlockState(block); + @Override + public boolean clearContainerBlockContents(BlockVector3 position) { + getWorld().removeBlockEntity(position.getX(), position.getY(), position.getZ()); + return true; + } - BlockSnapshot snapshot = builder.reset() - .blockState(newState) - .position(pos) - .world(world.getProperties()) - .build(); + @Override + public boolean regenerate(Region region, Extent extent, RegenOptions options) { + Server server = Sponge.server(); + + final String id = "worldedittemp_" + getWorld().key().value(); + + WorldGenerationConfig baseConfig = getWorld().asTemplate().generationConfig(); + + WorldTemplate tempWorldProperties = getWorld().asTemplate().asBuilder() + .key(ResourceKey.of("worldedit", id)) + .loadOnStartup(false) + .serializationBehavior(SerializationBehavior.NONE) + .generationConfig(options.getSeed().isPresent() + ? WorldGenerationConfig.Mutable.builder() + .generateBonusChest(baseConfig.generateBonusChest()) + .generateFeatures(baseConfig.generateFeatures()) + .seed(options.getSeed().getAsLong()) + .build() + : baseConfig) + .build(); + + ServerWorld tempWorld; + try { + tempWorld = server.worldManager().loadWorld(tempWorldProperties).get(); + } catch (InterruptedException | ExecutionException e) { + LOGGER.error("Failed to load temp world", e); + return false; + } - snapshot.restore(true, notifyAndLight ? BlockChangeFlags.ALL : BlockChangeFlags.NONE); + try { + // Pre-gen all the chunks + // We need to also pull one more chunk in every direction + CuboidRegion expandedPreGen = new CuboidRegion(region.getMinimumPoint().subtract(16, 16, 16), region.getMaximumPoint().add(16, 16, 16)); + for (BlockVector3 chunk : expandedPreGen.getChunkCubes()) { + tempWorld.loadChunk(chunk.getBlockX(), chunk.getBlockY(), chunk.getBlockZ(), true); + } - // Create the TileEntity - if (block instanceof BaseBlock && ((BaseBlock) block).hasNbtData()) { - // Kill the old TileEntity - world.getTileEntity(pos).ifPresent(tileEntity -> applyTileEntityData(tileEntity, (BaseBlock) block)); + World from = SpongeAdapter.adapt(tempWorld); + for (BlockVector3 vec : region) { + extent.setBlock(vec, from.getFullBlock(vec)); + if (options.shouldRegenBiomes()) { + extent.setBiome(vec, from.getBiome(vec)); + } + } + } catch (WorldEditException e) { + throw new RuntimeException(e); + } finally { + // Remove temp world + server.worldManager().unloadWorld(tempWorldProperties.key()).thenRun(() -> server.worldManager().deleteWorld(tempWorldProperties.key())); } return true; } - @Override - public boolean notifyAndLightBlock(BlockVector3 position, com.sk89q.worldedit.world.block.BlockState previousType) throws WorldEditException { - // TODO Move this to adapter - return false; + + @Nullable + private static ConfiguredFeature createTreeFeatureGenerator(TreeGenerator.TreeType type) { + switch (type) { + // Based off of the SaplingGenerator class, as well as uses of DefaultBiomeFeatures fields + case TREE: + return Features.OAK; + case BIG_TREE: + return Features.FANCY_OAK; + case REDWOOD: + return Features.SPRUCE; + case TALL_REDWOOD: + return Features.MEGA_SPRUCE; + case MEGA_REDWOOD: + return Features.MEGA_PINE; + case BIRCH: + return Features.BIRCH; + case JUNGLE: + return Features.MEGA_JUNGLE_TREE; + case SMALL_JUNGLE: + return Features.JUNGLE_TREE; + case SHORT_JUNGLE: + return Features.JUNGLE_TREE_NO_VINE; + case JUNGLE_BUSH: + return Features.JUNGLE_BUSH; + case SWAMP: + return Features.SWAMP_TREE; + case ACACIA: + return Features.ACACIA; + case DARK_OAK: + return Features.DARK_OAK; + case TALL_BIRCH: + return Features.BIRCH_TALL; + case RED_MUSHROOM: + return Features.HUGE_RED_MUSHROOM; + case BROWN_MUSHROOM: + return Features.HUGE_BROWN_MUSHROOM; + case WARPED_FUNGUS: + return Features.WARPED_FUNGI; + case CRIMSON_FUNGUS: + return Features.CRIMSON_FUNGI; + case CHORUS_PLANT: + return Features.CHORUS_PLANT; + case RANDOM: + return createTreeFeatureGenerator(TreeGenerator.TreeType.values()[ThreadLocalRandom.current().nextInt(TreeGenerator.TreeType.values().length)]); + default: + return null; + } } @Override - public boolean regenerate(Region region, Extent extent, RegenOptions options) { - return false; + public boolean generateTree(TreeGenerator.TreeType type, EditSession editSession, BlockVector3 position) { + ConfiguredFeature generator = createTreeFeatureGenerator(type); + ServerLevel world = (ServerLevel) getWorld(); + return generator != null && generator.place( + world, world.getChunkSource().getGenerator(), random, + new BlockPos(position.getX(), position.getY(), position.getZ()) + ); } @Override public int getBlockLightLevel(BlockVector3 position) { checkNotNull(position); - BlockState state = getWorld().getBlock(new Vector3i(position.getX(), position.getY(), position.getZ())); - - Optional groundLuminanceProperty = state.getProperty(GroundLuminanceProperty.class); - Optional skyLuminanceProperty = state.getProperty(SkyLuminanceProperty.class); - - if (!groundLuminanceProperty.isPresent() || !skyLuminanceProperty.isPresent()) { - return 0; - } + int skyLight = getWorld().light(LightTypes.SKY, position.getX(), position.getY(), position.getZ()); + int groundLight = getWorld().light(LightTypes.BLOCK, position.getX(), position.getY(), position.getZ()); - //noinspection ConstantConditions - return (int) Math.max(groundLuminanceProperty.get().getValue(), skyLuminanceProperty.get().getValue()); + return Math.max(skyLight, groundLight); } @Override public BiomeType getBiome(BlockVector3 position) { checkNotNull(position); - return SpongeAdapter.adapt(getWorld().getBiome(position.getBlockX(), position.getBlockY(), position.getBlockZ())); + return BiomeType.REGISTRY.get( + getWorld().registry(RegistryTypes.BIOME) + .valueKey(getWorld().biome(position.getBlockX(), position.getBlockY(), position.getBlockZ())) + .asString() + ); } @Override @@ -216,7 +365,12 @@ public boolean setBiome(BlockVector3 position, BiomeType biome) { checkNotNull(position); checkNotNull(biome); - getWorld().setBiome(position.getBlockX(), position.getY(), position.getBlockZ(), SpongeAdapter.adapt(biome)); + getWorld().setBiome( + position.getBlockX(), position.getY(), position.getBlockZ(), + getWorld().registry(RegistryTypes.BIOME).value( + ResourceKey.resolve(biome.getId()) + ) + ); return true; } @@ -229,24 +383,32 @@ public void dropItem(Vector3 position, BaseItemStack item) { return; } - org.spongepowered.api.entity.Entity entity = getWorld().createEntity( - EntityTypes.ITEM, - new Vector3d(position.getX(), position.getY(), position.getZ()) + Item itemEntity = getWorld().createEntity( + EntityTypes.ITEM, + new Vector3d(position.getX(), position.getY(), position.getZ()) ); - entity.offer(Keys.REPRESENTED_ITEM, SpongeWorldEdit.toSpongeItemStack(item).createSnapshot()); - getWorld().spawnEntity(entity); + itemEntity.item().set( + SpongeAdapter.adapt(item).createSnapshot() + ); + getWorld().spawnEntity(itemEntity); } @Override public void simulateBlockMine(BlockVector3 position) { - // TODO + getWorld().destroyBlock( + new Vector3i(position.getX(), position.getY(), position.getZ()), + true + ); } @Override public boolean canPlaceAt(BlockVector3 position, com.sk89q.worldedit.world.block.BlockState blockState) { - // TODO - return true; + return ((net.minecraft.world.level.block.state.BlockState) SpongeAdapter.adapt(blockState)) + .canSurvive( + ((LevelReader) getWorld()), + new BlockPos(position.getX(), position.getY(), position.getZ()) + ); } @Override @@ -260,57 +422,60 @@ public boolean equals(Object o) { return false; } else if ((o instanceof SpongeWorld)) { SpongeWorld other = ((SpongeWorld) o); - World otherWorld = other.worldRef.get(); - World thisWorld = worldRef.get(); + ServerWorld otherWorld = other.worldRef.get(); + ServerWorld thisWorld = worldRef.get(); return otherWorld != null && otherWorld.equals(thisWorld); } else { return o instanceof com.sk89q.worldedit.world.World - && ((com.sk89q.worldedit.world.World) o).getName().equals(getName()); + && ((com.sk89q.worldedit.world.World) o).getName().equals(getName()); } } @Override public List getEntities(Region region) { - List entities = new ArrayList<>(); - for (org.spongepowered.api.entity.Entity entity : getWorld().getEntities()) { - org.spongepowered.api.world.Location loc = entity.getLocation(); - if (region.contains(BlockVector3.at(loc.getX(), loc.getY(), loc.getZ()))) { - entities.add(new SpongeEntity(entity)); - } - } - return entities; + return getWorld() + .entityStream( + SpongeAdapter.adaptVector3i(region.getMinimumPoint()), + SpongeAdapter.adaptVector3i(region.getMaximumPoint()), + // We don't need to force load or clone to copy entities + StreamOptions.builder() + .setCarbonCopy(false) + .setLoadingStyle(StreamOptions.LoadingStyle.NONE) + .build() + ) + .toStream() + .map(ve -> new SpongeEntity(ve.type())) + .collect(Collectors.toList()); } @Override public List getEntities() { - List entities = new ArrayList<>(); - for (org.spongepowered.api.entity.Entity entity : getWorld().getEntities()) { - entities.add(new SpongeEntity(entity)); - } - return entities; + return getWorld().entities().stream() + .map(SpongeEntity::new) + .collect(Collectors.toList()); } - protected abstract void applyEntityData(org.spongepowered.api.entity.Entity entity, BaseEntity data); - @Nullable @Override public Entity createEntity(Location location, BaseEntity entity) { - World world = getWorld(); + ServerWorld world = getWorld(); - EntityType entityType = Sponge.getRegistry().getType(EntityType.class, entity.getType().getId()).get(); + EntityType entityType = Sponge.game().registry(RegistryTypes.ENTITY_TYPE) + .value(ResourceKey.resolve(entity.getType().getId())); Vector3d pos = new Vector3d(location.getX(), location.getY(), location.getZ()); org.spongepowered.api.entity.Entity newEnt = world.createEntity(entityType, pos); if (entity.hasNbtData()) { - applyEntityData(newEnt, entity); + newEnt.setRawData(DataContainer.createNew(DataView.SafetyMode.NO_DATA_CLONED) + .set(Constants.Sponge.UNSAFE_NBT, entity.getNbtData())); } // Overwrite any data set by the NBT application Vector3 dir = location.getDirection(); newEnt.setLocationAndRotation( - new org.spongepowered.api.world.Location<>(getWorld(), pos), - new Vector3d(dir.getX(), dir.getY(), dir.getZ()) + ServerLocation.of(getWorld(), pos), + new Vector3d(dir.getX(), dir.getY(), dir.getZ()) ); if (world.spawnEntity(newEnt)) { @@ -322,27 +487,38 @@ public Entity createEntity(Location location, BaseEntity entity) { @Override public WeatherType getWeather() { - return WeatherTypes.get(getWorld().getWeather().getId()); + return WeatherTypes.get( + getWorld().weather().type().key(RegistryTypes.WEATHER_TYPE).asString() + ); } @Override public long getRemainingWeatherDuration() { - return getWorld().getRemainingDuration(); + return getWorld().weather().remainingDuration().ticks(); } @Override public void setWeather(WeatherType weatherType) { - getWorld().setWeather(Sponge.getRegistry().getType(Weather.class, weatherType.getId()).get()); + getWorld().setWeather( + Sponge.game().registry(RegistryTypes.WEATHER_TYPE).value( + ResourceKey.resolve(weatherType.getId()) + ) + ); } @Override public void setWeather(WeatherType weatherType, long duration) { - getWorld().setWeather(Sponge.getRegistry().getType(Weather.class, weatherType.getId()).get(), duration); + getWorld().setWeather( + Sponge.game().registry(RegistryTypes.WEATHER_TYPE).value( + ResourceKey.resolve(weatherType.getId()) + ), + Ticks.of(duration) + ); } @Override public BlockVector3 getSpawnPosition() { - return SpongeAdapter.asBlockVector(getWorld().getSpawnLocation()); + return SpongeAdapter.adaptVector3i(getWorld().properties().spawnPosition()); } } diff --git a/worldedit-sponge/src/main/java/com/sk89q/worldedit/sponge/SpongeWorldEdit.java b/worldedit-sponge/src/main/java/com/sk89q/worldedit/sponge/SpongeWorldEdit.java index c9b218a4d6..836be233ca 100644 --- a/worldedit-sponge/src/main/java/com/sk89q/worldedit/sponge/SpongeWorldEdit.java +++ b/worldedit-sponge/src/main/java/com/sk89q/worldedit/sponge/SpongeWorldEdit.java @@ -19,227 +19,284 @@ package com.sk89q.worldedit.sponge; +import com.google.common.base.Joiner; import com.google.inject.Inject; -import com.sk89q.worldedit.LocalSession; import com.sk89q.worldedit.WorldEdit; -import com.sk89q.worldedit.blocks.BaseItemStack; +import com.sk89q.worldedit.command.util.PermissionCondition; +import com.sk89q.worldedit.event.platform.CommandEvent; +import com.sk89q.worldedit.event.platform.CommandSuggestionEvent; import com.sk89q.worldedit.event.platform.PlatformReadyEvent; +import com.sk89q.worldedit.event.platform.PlatformUnreadyEvent; +import com.sk89q.worldedit.event.platform.PlatformsRegisteredEvent; import com.sk89q.worldedit.event.platform.SessionIdleEvent; import com.sk89q.worldedit.extension.platform.Actor; import com.sk89q.worldedit.extension.platform.Capability; import com.sk89q.worldedit.extension.platform.Platform; +import com.sk89q.worldedit.extension.platform.PlatformManager; import com.sk89q.worldedit.internal.anvil.ChunkDeleter; -import com.sk89q.worldedit.sponge.adapter.AdapterLoadException; -import com.sk89q.worldedit.sponge.adapter.SpongeImplAdapter; -import com.sk89q.worldedit.sponge.adapter.SpongeImplLoader; +import com.sk89q.worldedit.internal.command.CommandUtil; import com.sk89q.worldedit.sponge.config.SpongeConfiguration; +import com.sk89q.worldedit.world.biome.BiomeType; +import com.sk89q.worldedit.world.block.BlockCategory; +import com.sk89q.worldedit.world.item.ItemCategory; +import net.kyori.adventure.audience.Audience; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.tags.BlockTags; +import net.minecraft.tags.ItemTags; import org.apache.logging.log4j.Logger; -import org.bstats.sponge.Metrics2; +import org.bstats.sponge.Metrics; +import org.spongepowered.api.ResourceKey; +import org.spongepowered.api.Server; import org.spongepowered.api.Sponge; import org.spongepowered.api.block.BlockSnapshot; import org.spongepowered.api.block.BlockType; import org.spongepowered.api.block.BlockTypes; -import org.spongepowered.api.command.CommandSource; +import org.spongepowered.api.command.Command; +import org.spongepowered.api.command.CommandCause; +import org.spongepowered.api.command.CommandCompletion; +import org.spongepowered.api.command.CommandResult; +import org.spongepowered.api.command.parameter.ArgumentReader; import org.spongepowered.api.config.ConfigDir; -import org.spongepowered.api.entity.living.player.Player; +import org.spongepowered.api.entity.living.player.server.ServerPlayer; import org.spongepowered.api.event.Listener; import org.spongepowered.api.event.block.InteractBlockEvent; import org.spongepowered.api.event.filter.cause.Root; -import org.spongepowered.api.event.game.state.GameAboutToStartServerEvent; -import org.spongepowered.api.event.game.state.GameInitializationEvent; -import org.spongepowered.api.event.game.state.GamePostInitializationEvent; -import org.spongepowered.api.event.game.state.GamePreInitializationEvent; -import org.spongepowered.api.event.game.state.GameStartedServerEvent; -import org.spongepowered.api.event.game.state.GameStoppingServerEvent; import org.spongepowered.api.event.item.inventory.InteractItemEvent; -import org.spongepowered.api.event.network.ClientConnectionEvent; -import org.spongepowered.api.item.ItemType; -import org.spongepowered.api.item.inventory.ItemStack; -import org.spongepowered.api.plugin.Plugin; -import org.spongepowered.api.plugin.PluginContainer; +import org.spongepowered.api.event.lifecycle.ConstructPluginEvent; +import org.spongepowered.api.event.lifecycle.RegisterCommandEvent; +import org.spongepowered.api.event.lifecycle.StartedEngineEvent; +import org.spongepowered.api.event.lifecycle.StartingEngineEvent; +import org.spongepowered.api.event.lifecycle.StoppingEngineEvent; +import org.spongepowered.api.event.network.ServerSideConnectionEvent; +import org.spongepowered.api.registry.RegistryTypes; import org.spongepowered.api.scheduler.Task; -import org.spongepowered.api.world.Location; -import org.spongepowered.api.world.World; +import org.spongepowered.api.world.server.ServerLocation; +import org.spongepowered.api.world.server.ServerWorld; +import org.spongepowered.math.vector.Vector3d; +import org.spongepowered.plugin.PluginContainer; +import org.spongepowered.plugin.builtin.jvm.Plugin; -import java.io.File; -import java.io.IOException; import java.nio.file.Files; import java.nio.file.Path; +import java.util.Collections; +import java.util.List; import java.util.Optional; +import java.util.Set; import java.util.concurrent.TimeUnit; -import static com.google.common.base.Preconditions.checkNotNull; import static com.sk89q.worldedit.internal.anvil.ChunkDeleter.DELCHUNKS_FILE_NAME; +import static java.util.stream.Collectors.toList; /** * The Sponge implementation of WorldEdit. */ -@Plugin(id = SpongeWorldEdit.MOD_ID, name = "WorldEdit", - description = "WorldEdit is an easy-to-use in-game world editor for Minecraft", - url = "https://enginehub.org/worldedit/") +@Plugin(SpongeWorldEdit.MOD_ID) public class SpongeWorldEdit { - // I think this breaks right now b/c SpongeAPI 7 injects an slf4j logger - // But it should be fine in 8, where they're also Log4j - @Inject - private Logger logger; - - private final Metrics2 metrics; - public static final String MOD_ID = "worldedit"; private static final int BSTATS_PLUGIN_ID = 3329; - private SpongePermissionsProvider provider; - - @Inject - private PluginContainer container; - private static SpongeWorldEdit inst; - public static PluginContainer container() { - return inst.container; - } - public static SpongeWorldEdit inst() { return inst; } - private SpongePlatform platform; - private SpongeImplAdapter spongeAdapter; + private final Logger logger; + private final PluginContainer container; + private final SpongeConfiguration config; + private final Path workingDir; - @Inject - private SpongeConfiguration config; - - @Inject @ConfigDir(sharedRoot = false) - private File workingDir; + private SpongePermissionsProvider provider; + private SpongePlatform platform; @Inject - public SpongeWorldEdit(Metrics2.Factory metricsFactory) { + public SpongeWorldEdit(Logger logger, + PluginContainer container, + SpongeConfiguration config, + Metrics.Factory metricsFactory, + @ConfigDir(sharedRoot = false) + Path workingDir) { + this.logger = logger; + this.container = container; + this.config = config; + this.workingDir = workingDir; + metricsFactory.make(BSTATS_PLUGIN_ID); inst = this; - metrics = metricsFactory.make(BSTATS_PLUGIN_ID); } @Listener - public void preInit(GamePreInitializationEvent event) { - // Load configuration - config.load(); + public void onPluginConstruction(ConstructPluginEvent event) { + this.platform = new SpongePlatform(this); + WorldEdit.getInstance().getPlatformManager().register(platform); - Task.builder().interval(30, TimeUnit.SECONDS).execute(ThreadSafeCache.getInstance()).submit(this); - } + this.provider = new SpongePermissionsProvider(); - @Listener - public void init(GameInitializationEvent event) { - CUIChannelHandler.init(); - } + Task.builder() + .plugin(container) + .interval(30, TimeUnit.SECONDS) + .execute(ThreadSafeCache.getInstance()) + .build(); - @Listener - public void postInit(GamePostInitializationEvent event) { + event.game().eventManager().registerListeners( + container, + new CUIChannelHandler.RegistrationHandler() + ); logger.info("WorldEdit for Sponge (version " + getInternalVersion() + ") is loaded"); } @Listener - public void serverAboutToStart(GameAboutToStartServerEvent event) { - if (this.platform != null) { - logger.warn("GameAboutToStartServerEvent occurred when GameStoppingServerEvent hasn't"); - WorldEdit.getInstance().getPlatformManager().unregister(platform); - } - - final Path delChunks = workingDir.toPath().resolve(DELCHUNKS_FILE_NAME); + public void serverStarting(StartingEngineEvent event) { + final Path delChunks = workingDir.resolve(DELCHUNKS_FILE_NAME); if (Files.exists(delChunks)) { ChunkDeleter.runFromFile(delChunks, true); } + } - this.platform = new SpongePlatform(this); - this.provider = new SpongePermissionsProvider(); - - for (BlockType blockType : Sponge.getRegistry().getAllOf(BlockType.class)) { - // TODO Handle blockstate stuff - String id = blockType.getId(); + @Listener + public void serverStarted(StartedEngineEvent event) { + event.game().registry(RegistryTypes.BLOCK_TYPE).streamEntries().forEach(blockType -> { + String id = blockType.key().asString(); if (!com.sk89q.worldedit.world.block.BlockType.REGISTRY.keySet().contains(id)) { - com.sk89q.worldedit.world.block.BlockType.REGISTRY.register(id, new com.sk89q.worldedit.world.block.BlockType(id)); + com.sk89q.worldedit.world.block.BlockType.REGISTRY.register(id, new com.sk89q.worldedit.world.block.BlockType( + id, + input -> { + BlockType spongeBlockType = Sponge.game().registry(RegistryTypes.BLOCK_TYPE).value( + ResourceKey.resolve(input.getBlockType().getId()) + ); + return SpongeAdapter.adapt(spongeBlockType.defaultState()); + } + )); } - } + }); - for (ItemType itemType : Sponge.getRegistry().getAllOf(ItemType.class)) { - String id = itemType.getId(); + event.game().registry(RegistryTypes.ITEM_TYPE).streamEntries().forEach(itemType -> { + String id = itemType.key().asString(); if (!com.sk89q.worldedit.world.item.ItemType.REGISTRY.keySet().contains(id)) { com.sk89q.worldedit.world.item.ItemType.REGISTRY.register(id, new com.sk89q.worldedit.world.item.ItemType(id)); } + }); + + event.game().registry(RegistryTypes.ENTITY_TYPE).streamEntries().forEach(entityType -> { + String id = entityType.key().asString(); + if (!com.sk89q.worldedit.world.entity.EntityType.REGISTRY.keySet().contains(id)) { + com.sk89q.worldedit.world.entity.EntityType.REGISTRY.register(id, new com.sk89q.worldedit.world.entity.EntityType(id)); + } + }); + + for (ServerWorld world : event.engine().worldManager().worlds()) { + world.registry(RegistryTypes.BIOME).streamEntries().forEach(biomeType -> { + String id = biomeType.key().asString(); + if (!BiomeType.REGISTRY.keySet().contains(id)) { + BiomeType.REGISTRY.register(id, new BiomeType(id)); + } + }); } - WorldEdit.getInstance().getPlatformManager().register(platform); + for (ResourceLocation name : BlockTags.getAllTags().getAvailableTags()) { + if (BlockCategory.REGISTRY.get(name.toString()) == null) { + BlockCategory.REGISTRY.register(name.toString(), new BlockCategory(name.toString())); + } + } + for (ResourceLocation name : ItemTags.getAllTags().getAvailableTags()) { + if (ItemCategory.REGISTRY.get(name.toString()) == null) { + ItemCategory.REGISTRY.register(name.toString(), new ItemCategory(name.toString())); + } + } + + config.load(); + WorldEdit.getInstance().getEventBus().post(new PlatformReadyEvent(platform)); } @Listener - public void serverStopping(GameStoppingServerEvent event) { + public void serverStopping(StoppingEngineEvent event) { WorldEdit worldEdit = WorldEdit.getInstance(); worldEdit.getSessionManager().unload(); - worldEdit.getPlatformManager().unregister(platform); + WorldEdit.getInstance().getEventBus().post(new PlatformUnreadyEvent(platform)); } @Listener - public void serverStarted(GameStartedServerEvent event) { - WorldEdit.getInstance().getEventBus().post(new PlatformReadyEvent(platform)); + public void registerCommand(RegisterCommandEvent event) { + WorldEdit.getInstance().getEventBus().post(new PlatformsRegisteredEvent()); + PlatformManager manager = WorldEdit.getInstance().getPlatformManager(); + Platform commandsPlatform = manager.queryCapability(Capability.USER_COMMANDS); + if (commandsPlatform != platform || !platform.isHookingEvents()) { + // We're not in control of commands/events -- do not register. + return; + } + + List commands = manager.getPlatformCommandManager().getCommandManager() + .getAllCommands().collect(toList()); + for (org.enginehub.piston.Command command : commands) { + registerAdaptedCommand(event, command); - loadAdapter(); + Set perms = command.getCondition().as(PermissionCondition.class) + .map(PermissionCondition::getPermissions) + .orElseGet(Collections::emptySet); + if (!perms.isEmpty()) { + perms.forEach(getPermissionsProvider()::registerPermission); + } + } } - private void loadAdapter() { - WorldEdit worldEdit = WorldEdit.getInstance(); + private String rebuildArguments(String commandLabel, String args) { + int plSep = commandLabel.indexOf(":"); + if (plSep >= 0 && plSep < commandLabel.length() + 1) { + commandLabel = commandLabel.substring(plSep + 1); + } - // Attempt to load a Sponge adapter - SpongeImplLoader adapterLoader = new SpongeImplLoader(); + StringBuilder sb = new StringBuilder("/").append(commandLabel); - try { - adapterLoader.addFromPath(getClass().getClassLoader()); - } catch (IOException e) { - logger.warn("Failed to search path for Sponge adapters"); + String[] split = args.split(" ", -1); + if (split.length > 0) { + sb.append(" "); } + return Joiner.on(" ").appendTo(sb, split).toString(); + } - try { - adapterLoader.addFromJar(container.getSource().get().toFile()); - } catch (IOException e) { - logger.warn("Failed to search " + container.getSource().get().toFile() + " for Sponge adapters", e); - } - try { - spongeAdapter = adapterLoader.loadAdapter(); - logger.info("Using " + spongeAdapter.getClass().getCanonicalName() + " as the Sponge adapter"); - } catch (AdapterLoadException e) { - Platform platform = worldEdit.getPlatformManager().queryCapability(Capability.WORLD_EDITING); - if (platform instanceof SpongePlatform) { - logger.warn(e.getMessage()); - } else { - logger.info("WorldEdit could not find a Sponge adapter for this MC version, " - + "but it seems that you have another implementation of WorldEdit installed (" + platform.getPlatformName() + ") " - + "that handles the world editing."); + private void registerAdaptedCommand(RegisterCommandEvent event, org.enginehub.piston.Command command) { + CommandAdapter adapter = new CommandAdapter(command) { + @Override + public CommandResult process(CommandCause cause, ArgumentReader.Mutable arguments) { + CommandEvent weEvent = new CommandEvent(SpongeWorldEdit.inst().wrapCommandCause(cause), rebuildArguments(command.getName(), arguments.remaining()).trim()); + WorldEdit.getInstance().getEventBus().post(weEvent); + return weEvent.isCancelled() ? CommandResult.success() : CommandResult.builder().build(); } - } + + @Override + public List complete(CommandCause cause, ArgumentReader.Mutable arguments) { + String args = rebuildArguments(command.getName(), arguments.remaining()); + CommandSuggestionEvent weEvent = new CommandSuggestionEvent(SpongeWorldEdit.inst().wrapCommandCause(cause), args); + WorldEdit.getInstance().getEventBus().post(weEvent); + return CommandUtil.fixSuggestions(args, weEvent.getSuggestions()) + .stream().map(CommandCompletion::of).collect(toList()); + } + }; + event.register( + container, adapter, command.getName(), command.getAliases().toArray(new String[0]) + ); } - public SpongeImplAdapter getAdapter() { - return this.spongeAdapter; + private boolean isHookingEvents() { + return platform != null && platform.isHookingEvents(); } @Listener - public void onPlayerItemInteract(InteractItemEvent.Secondary event, @Root Player spongePlayer) { - if (platform == null) { + public void onPlayerItemInteract(InteractItemEvent.Secondary event, @Root ServerPlayer spongePlayer) { + if (!isHookingEvents()) { return; } - if (!platform.isHookingEvents()) { - return; // We have to be told to catch these events - } - WorldEdit we = WorldEdit.getInstance(); - SpongePlayer player = wrapPlayer(spongePlayer); + SpongePlayer player = SpongeAdapter.adapt(spongePlayer); if (we.handleRightClick(player)) { event.setCancelled(true); } } @Listener - public void onPlayerInteract(InteractBlockEvent event, @Root Player spongePlayer) { + public void onPlayerInteract(InteractBlockEvent event, @Root ServerPlayer spongePlayer) { if (platform == null) { return; } @@ -250,62 +307,60 @@ public void onPlayerInteract(InteractBlockEvent event, @Root Player spongePlayer WorldEdit we = WorldEdit.getInstance(); - SpongePlayer player = wrapPlayer(spongePlayer); - com.sk89q.worldedit.world.World world = player.getWorld(); + SpongePlayer player = SpongeAdapter.adapt(spongePlayer); - BlockSnapshot targetBlock = event.getTargetBlock(); - Optional> optLoc = targetBlock.getLocation(); + BlockSnapshot targetBlock = event.block(); + Optional optLoc = targetBlock.location(); - BlockType interactedType = targetBlock.getState().getType(); - if (event instanceof InteractBlockEvent.Primary) { - if (interactedType != BlockTypes.AIR) { + BlockType interactedType = targetBlock.state().type(); + if (event instanceof InteractBlockEvent.Primary.Start) { + InteractBlockEvent.Primary.Start eventCast = ((InteractBlockEvent.Primary.Start) event); + if (interactedType != BlockTypes.AIR.get()) { if (!optLoc.isPresent()) { return; } - Location loc = optLoc.get(); - com.sk89q.worldedit.util.Location pos = new com.sk89q.worldedit.util.Location( - world, loc.getX(), loc.getY(), loc.getZ()); - - if (we.handleBlockLeftClick(player, pos)) { - event.setCancelled(true); - } + ServerLocation loc = optLoc.get(); + com.sk89q.worldedit.util.Location pos = SpongeAdapter.adapt( + loc, Vector3d.ZERO + ); - if (we.handleArmSwing(player)) { - event.setCancelled(true); - } - } else { - if (we.handleArmSwing(player)) { - event.setCancelled(true); + if (we.handleBlockLeftClick(player, pos, SpongeAdapter.adapt(eventCast.targetSide()))) { + eventCast.setCancelled(true); } } + if (we.handleArmSwing(player)) { + eventCast.setCancelled(true); + } } else if (event instanceof InteractBlockEvent.Secondary) { if (!optLoc.isPresent()) { return; } + InteractBlockEvent.Secondary eventCast = ((InteractBlockEvent.Secondary) event); - Location loc = optLoc.get(); - com.sk89q.worldedit.util.Location pos = new com.sk89q.worldedit.util.Location( - world, loc.getX(), loc.getY(), loc.getZ()); + ServerLocation loc = optLoc.get(); + com.sk89q.worldedit.util.Location pos = SpongeAdapter.adapt( + loc, Vector3d.ZERO + ); - if (we.handleBlockRightClick(player, pos)) { - event.setCancelled(true); + if (we.handleBlockRightClick(player, pos, SpongeAdapter.adapt(eventCast.targetSide()))) { + eventCast.setCancelled(true); } if (we.handleRightClick(player)) { - event.setCancelled(true); + eventCast.setCancelled(true); } } } @Listener - public void onPlayerQuit(ClientConnectionEvent.Disconnect event) { + public void onPlayerQuit(ServerSideConnectionEvent.Disconnect event) { WorldEdit.getInstance().getEventBus() - .post(new SessionIdleEvent(new SpongePlayer.SessionKeyImpl(event.getTargetEntity()))); + .post(new SessionIdleEvent(new SpongePlayer.SessionKeyImpl(event.player()))); } - public static ItemStack toSpongeItemStack(BaseItemStack item) { - return inst().getAdapter().makeSpongeStack(item); + public PluginContainer getPluginContainer() { + return container; } /** @@ -317,46 +372,18 @@ SpongeConfiguration getConfig() { return this.config; } - /** - * Get the WorldEdit proxy for the given player. - * - * @param player the player - * @return the WorldEdit player - */ - public SpongePlayer wrapPlayer(Player player) { - checkNotNull(player); - return new SpongePlayer(platform, player); - } - - public Actor wrapCommandSource(CommandSource sender) { - if (sender instanceof Player) { - return wrapPlayer((Player) sender); + public Actor wrapCommandCause(CommandCause cause) { + Object rootCause = cause.root(); + if (rootCause instanceof ServerPlayer) { + return SpongeAdapter.adapt((ServerPlayer) rootCause); + } + if (rootCause instanceof Audience) { + return new SpongeCommandSender((Audience) rootCause); } - return new SpongeCommandSender(this, sender); - } - - /** - * Get the session for a player. - * - * @param player the player - * @return the session - */ - public LocalSession getSession(Player player) { - checkNotNull(player); - return WorldEdit.getInstance().getSessionManager().get(wrapPlayer(player)); + throw new UnsupportedOperationException("Cannot wrap " + rootCause.getClass()); } - /** - * Get the WorldEdit proxy for the given world. - * - * @param world the world - * @return the WorldEdit world - */ - public SpongeWorld getWorld(World world) { - checkNotNull(world); - return getAdapter().getWorld(world); - } /** * Get the WorldEdit proxy for the platform. @@ -367,13 +394,17 @@ public Platform getPlatform() { return this.platform; } + SpongePlatform getInternalPlatform() { + return this.platform; + } + /** * Get the working directory where WorldEdit's files are stored. * * @return the working directory */ public Path getWorkingDir() { - return this.workingDir.toPath(); + return this.workingDir; } /** @@ -382,7 +413,7 @@ public Path getWorkingDir() { * @return a version string */ String getInternalVersion() { - return container.getVersion().orElse("Unknown"); + return container.metadata().version().toString(); } public void setPermissionsProvider(SpongePermissionsProvider provider) { diff --git a/worldedit-sponge/src/main/java/com/sk89q/worldedit/sponge/ThreadSafeCache.java b/worldedit-sponge/src/main/java/com/sk89q/worldedit/sponge/ThreadSafeCache.java index fea9026657..b6f131444f 100644 --- a/worldedit-sponge/src/main/java/com/sk89q/worldedit/sponge/ThreadSafeCache.java +++ b/worldedit-sponge/src/main/java/com/sk89q/worldedit/sponge/ThreadSafeCache.java @@ -20,7 +20,7 @@ package com.sk89q.worldedit.sponge; import org.spongepowered.api.Sponge; -import org.spongepowered.api.entity.living.player.Player; +import org.spongepowered.api.entity.living.player.server.ServerPlayer; import java.util.ArrayList; import java.util.List; @@ -49,8 +49,8 @@ public Set getOnlineIds() { public void run() { List onlineIds = new ArrayList<>(); - for (Player player : Sponge.getServer().getOnlinePlayers()) { - onlineIds.add(player.getUniqueId()); + for (ServerPlayer player : Sponge.server().onlinePlayers()) { + onlineIds.add(player.uniqueId()); } this.onlineIds = new CopyOnWriteArraySet<>(onlineIds); diff --git a/worldedit-sponge/src/main/java/com/sk89q/worldedit/sponge/adapter/SpongeImplAdapter.java b/worldedit-sponge/src/main/java/com/sk89q/worldedit/sponge/adapter/SpongeImplAdapter.java deleted file mode 100644 index fcb2dc333a..0000000000 --- a/worldedit-sponge/src/main/java/com/sk89q/worldedit/sponge/adapter/SpongeImplAdapter.java +++ /dev/null @@ -1,52 +0,0 @@ -/* - * WorldEdit, a Minecraft world manipulation toolkit - * Copyright (C) sk89q - * Copyright (C) WorldEdit team and contributors - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -package com.sk89q.worldedit.sponge.adapter; - -import com.flowpowered.math.vector.Vector3d; -import com.sk89q.worldedit.blocks.BaseItemStack; -import com.sk89q.worldedit.entity.BaseEntity; -import com.sk89q.worldedit.math.Vector3; -import com.sk89q.worldedit.sponge.SpongeWorld; -import com.sk89q.worldedit.util.Location; -import org.spongepowered.api.entity.Entity; -import org.spongepowered.api.item.inventory.ItemStack; -import org.spongepowered.api.world.World; - -/** - * An interface for various things that can't be done through the Sponge API. - */ -public interface SpongeImplAdapter { - - BaseEntity createBaseEntity(Entity entity); - - ItemStack makeSpongeStack(BaseItemStack itemStack); - - SpongeWorld getWorld(World world); - - default boolean isBest() { - return true; - } - - default Location adapt(org.spongepowered.api.world.Location loc, Vector3d rot) { - Vector3 position = Vector3.at(loc.getX(), loc.getY(), loc.getZ()); - - return new Location(getWorld(loc.getExtent()), position, (float) rot.getY(), (float) rot.getX()); - } -} diff --git a/worldedit-sponge/src/main/java/com/sk89q/worldedit/sponge/adapter/SpongeImplLoader.java b/worldedit-sponge/src/main/java/com/sk89q/worldedit/sponge/adapter/SpongeImplLoader.java deleted file mode 100644 index 47303b9d1f..0000000000 --- a/worldedit-sponge/src/main/java/com/sk89q/worldedit/sponge/adapter/SpongeImplLoader.java +++ /dev/null @@ -1,195 +0,0 @@ -/* - * WorldEdit, a Minecraft world manipulation toolkit - * Copyright (C) sk89q - * Copyright (C) WorldEdit team and contributors - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -package com.sk89q.worldedit.sponge.adapter; - -import com.google.common.collect.Lists; -import com.sk89q.worldedit.internal.util.LogManagerCompat; -import com.sk89q.worldedit.util.io.Closer; -import org.apache.logging.log4j.Logger; - -import java.io.File; -import java.io.IOException; -import java.net.URL; -import java.util.ArrayList; -import java.util.Enumeration; -import java.util.List; -import java.util.jar.JarEntry; -import java.util.jar.JarFile; - -/** - * Loads Sponge implementation adapters. - */ -public class SpongeImplLoader { - - private static final Logger LOGGER = LogManagerCompat.getLogger(); - private final List adapterCandidates = new ArrayList<>(); - private String customCandidate; - - private static final String SEARCH_PACKAGE = "com.sk89q.worldedit.sponge.adapter.impl"; - private static final String SEARCH_PACKAGE_DOT = SEARCH_PACKAGE + "."; - private static final String SEARCH_PATH = SEARCH_PACKAGE.replace(".", "/"); - private static final String CLASS_SUFFIX = ".class"; - - private static final String LOAD_ERROR_MESSAGE = - "\n**********************************************\n" - + "** This WorldEdit version does not support your version of Sponge.\n" - + "** WorldEdit will not function! \n" - + "** \n" - + "** Please ensure you are running the latest version\n" - + "**********************************************\n"; - - /** - * Create a new instance. - */ - public SpongeImplLoader() { - addDefaults(); - } - - /** - * Add default candidates, such as any defined with - * {@code -Dworldedit.sponge.adapter}. - */ - private void addDefaults() { - String className = System.getProperty("worldedit.sponge.adapter"); - if (className != null) { - customCandidate = className; - adapterCandidates.add(className); - LOGGER.info("-Dworldedit.sponge.adapter used to add " + className + " to the list of available Sponge adapters"); - } - } - - /** - * Search the given JAR for candidate implementations. - * - * @param file the file - * @throws IOException thrown on I/O error - */ - public void addFromJar(File file) throws IOException { - Closer closer = Closer.create(); - JarFile jar = closer.register(new JarFile(file)); - try { - Enumeration entries = jar.entries(); - while (entries.hasMoreElements()) { - JarEntry jarEntry = (JarEntry) entries.nextElement(); - - String className = jarEntry.getName().replaceAll("[/\\\\]+", "."); - - if (!className.startsWith(SEARCH_PACKAGE_DOT) || jarEntry.isDirectory() || className.contains("$")) { - continue; - } - - int beginIndex = 0; - int endIndex = className.length() - CLASS_SUFFIX.length(); - className = className.substring(beginIndex, endIndex); - adapterCandidates.add(className); - } - } finally { - closer.close(); - } - } - - /** - * Search for classes stored as separate files available via the given - * class loader. - * - * @param classLoader the class loader - * @throws IOException thrown on error - */ - public void addFromPath(ClassLoader classLoader) throws IOException { - Enumeration resources = classLoader.getResources(SEARCH_PATH); - while (resources.hasMoreElements()) { - File file = new File(resources.nextElement().getFile()); - addFromPath(file); - } - } - - /** - * Search for classes stored as separate files available via the given - * path. - * - * @param file the path - */ - private void addFromPath(File file) { - String resource = SEARCH_PACKAGE_DOT + file.getName(); - if (file.isDirectory()) { - File[] files = file.listFiles(); - if (files != null) { - for (File child : files) { - addFromPath(child); - } - } - } else if (resource.endsWith(CLASS_SUFFIX)) { - int beginIndex = 0; - int endIndex = resource.length() - CLASS_SUFFIX.length(); - String className = resource.substring(beginIndex, endIndex); - if (!className.contains("$")) { - adapterCandidates.add(className); - } - } - } - - /** - * Iterate through the list of candidates and load an adapter. - * - * @return an adapter - * @throws AdapterLoadException thrown if no adapter could be found - */ - public SpongeImplAdapter loadAdapter() throws AdapterLoadException { - List suitableAdapters = Lists.newArrayList(); - for (String className : adapterCandidates) { - try { - Class cls = Class.forName(className); - if (SpongeImplAdapter.class.isAssignableFrom(cls)) { - suitableAdapters.add((SpongeImplAdapter) cls.newInstance()); - } else { - LOGGER.warn("Failed to load the Sponge adapter class '" + className - + "' because it does not implement " + SpongeImplAdapter.class.getCanonicalName()); - } - } catch (ClassNotFoundException e) { - LOGGER.warn("Failed to load the Sponge adapter class '" + className - + "' that is not supposed to be missing", e); - } catch (IllegalAccessException e) { - LOGGER.warn("Failed to load the Sponge adapter class '" + className - + "' that is not supposed to be raising this error", e); - } catch (Throwable e) { - if (className.equals(customCandidate)) { - LOGGER.warn("Failed to load the Sponge adapter class '" + className + "'", e); - } - } - } - - if (suitableAdapters.isEmpty()) { - throw new AdapterLoadException(LOAD_ERROR_MESSAGE); - } else { - if (suitableAdapters.size() == 1) { - return suitableAdapters.get(0); - } else { - return suitableAdapters.stream().sorted((o1, o2) -> { - if (o1.isBest() && !o2.isBest()) { - return -1; - } else if (!o1.isBest() && o2.isBest()) { - return 1; - } - return 0; - }).findFirst().orElse(suitableAdapters.get(0)); - } - } - } -} diff --git a/worldedit-sponge/src/main/java/com/sk89q/worldedit/sponge/config/ConfigurateConfiguration.java b/worldedit-sponge/src/main/java/com/sk89q/worldedit/sponge/config/ConfigurateConfiguration.java index 7435d69887..6c88509858 100644 --- a/worldedit-sponge/src/main/java/com/sk89q/worldedit/sponge/config/ConfigurateConfiguration.java +++ b/worldedit-sponge/src/main/java/com/sk89q/worldedit/sponge/config/ConfigurateConfiguration.java @@ -19,17 +19,17 @@ package com.sk89q.worldedit.sponge.config; -import com.google.common.reflect.TypeToken; +import com.google.common.collect.ImmutableList; import com.sk89q.worldedit.LocalConfiguration; import com.sk89q.worldedit.LocalSession; import com.sk89q.worldedit.session.SessionManager; import com.sk89q.worldedit.util.report.Unreported; import com.sk89q.worldedit.world.registry.LegacyMapper; -import ninja.leaping.configurate.ConfigurationOptions; -import ninja.leaping.configurate.commented.CommentedConfigurationNode; -import ninja.leaping.configurate.loader.ConfigurationLoader; -import ninja.leaping.configurate.objectmapping.ObjectMappingException; import org.apache.logging.log4j.Logger; +import org.spongepowered.configurate.CommentedConfigurationNode; +import org.spongepowered.configurate.ConfigurationOptions; +import org.spongepowered.configurate.loader.ConfigurationLoader; +import org.spongepowered.configurate.serialize.SerializationException; import java.io.IOException; import java.util.HashSet; @@ -37,10 +37,13 @@ public class ConfigurateConfiguration extends LocalConfiguration { - @Unreported protected final ConfigurationLoader config; - @Unreported protected final Logger logger; + @Unreported + protected final ConfigurationLoader config; + @Unreported + protected final Logger logger; - @Unreported protected CommentedConfigurationNode node; + @Unreported + protected CommentedConfigurationNode node; public ConfigurateConfiguration(ConfigurationLoader config, Logger logger) { this.config = config; @@ -51,87 +54,94 @@ public ConfigurateConfiguration(ConfigurationLoader public void load() { try { ConfigurationOptions options = ConfigurationOptions.defaults(); - options = options.setShouldCopyDefaults(true); + options = options.shouldCopyDefaults(true); node = config.load(options); } catch (IOException e) { logger.warn("Error loading WorldEdit configuration", e); } - profile = node.getNode("debug").getBoolean(profile); - traceUnflushedSessions = node.getNode("debugging", "trace-unflushed-sessions").getBoolean(traceUnflushedSessions); - wandItem = node.getNode("wand-item").getString(wandItem).toLowerCase(Locale.ROOT); + profile = node.node("debug").getBoolean(profile); + traceUnflushedSessions = node.node("debugging", "trace-unflushed-sessions").getBoolean(traceUnflushedSessions); + wandItem = node.node("wand-item").getString(wandItem).toLowerCase(Locale.ROOT); try { wandItem = LegacyMapper.getInstance().getItemFromLegacy(Integer.parseInt(wandItem)).getId(); } catch (Throwable ignored) { } - defaultChangeLimit = Math.max(-1, node.getNode("limits", "max-blocks-changed", "default").getInt(defaultChangeLimit)); - maxChangeLimit = Math.max(-1, node.getNode("limits", "max-blocks-changed", "maximum").getInt(maxChangeLimit)); + defaultChangeLimit = Math.max(-1, node.node("limits", "max-blocks-changed", "default").getInt(defaultChangeLimit)); + maxChangeLimit = Math.max(-1, node.node("limits", "max-blocks-changed", "maximum").getInt(maxChangeLimit)); - defaultVerticalHeight = Math.max(1, node.getNode("limits", "vertical-height", "default").getInt(defaultVerticalHeight)); + defaultVerticalHeight = Math.max(1, node.node("limits", "vertical-height", "default").getInt(defaultVerticalHeight)); - defaultMaxPolygonalPoints = Math.max(-1, node.getNode("limits", "max-polygonal-points", "default").getInt(defaultMaxPolygonalPoints)); - maxPolygonalPoints = Math.max(-1, node.getNode("limits", "max-polygonal-points", "maximum").getInt(maxPolygonalPoints)); + defaultMaxPolygonalPoints = Math.max(-1, node.node("limits", "max-polygonal-points", "default").getInt(defaultMaxPolygonalPoints)); + maxPolygonalPoints = Math.max(-1, node.node("limits", "max-polygonal-points", "maximum").getInt(maxPolygonalPoints)); - maxRadius = Math.max(-1, node.getNode("limits", "max-radius").getInt(maxRadius)); - maxBrushRadius = node.getNode("limits", "max-brush-radius").getInt(maxBrushRadius); - maxSuperPickaxeSize = Math.max(1, node.getNode("limits", "max-super-pickaxe-size").getInt(maxSuperPickaxeSize)); + maxRadius = Math.max(-1, node.node("limits", "max-radius").getInt(maxRadius)); + maxBrushRadius = node.node("limits", "max-brush-radius").getInt(maxBrushRadius); + maxSuperPickaxeSize = Math.max(1, node.node("limits", "max-super-pickaxe-size").getInt(maxSuperPickaxeSize)); - butcherDefaultRadius = Math.max(-1, node.getNode("limits", "butcher-radius", "default").getInt(butcherDefaultRadius)); - butcherMaxRadius = Math.max(-1, node.getNode("limits", "butcher-radius", "maximum").getInt(butcherMaxRadius)); + butcherDefaultRadius = Math.max(-1, node.node("limits", "butcher-radius", "default").getInt(butcherDefaultRadius)); + butcherMaxRadius = Math.max(-1, node.node("limits", "butcher-radius", "maximum").getInt(butcherMaxRadius)); try { - disallowedBlocks = new HashSet<>(node.getNode("limits", "disallowed-blocks").getList(TypeToken.of(String.class))); - } catch (ObjectMappingException e) { + disallowedBlocks = new HashSet<>( + node.node("limits", "disallowed-blocks").getList( + String.class, + ImmutableList.copyOf(getDefaultDisallowedBlocks()) + ) + ); + } catch (SerializationException e) { logger.warn("Error loading WorldEdit configuration", e); } try { - allowedDataCycleBlocks = new HashSet<>(node.getNode("limits", "allowed-data-cycle-blocks").getList(TypeToken.of(String.class))); - } catch (ObjectMappingException e) { + allowedDataCycleBlocks = new HashSet<>( + node.node("limits", "allowed-data-cycle-blocks").getList(String.class, ImmutableList.of()) + ); + } catch (SerializationException e) { logger.warn("Error loading WorldEdit configuration", e); } - registerHelp = node.getNode("register-help").getBoolean(true); - logCommands = node.getNode("logging", "log-commands").getBoolean(logCommands); - logFile = node.getNode("logging", "file").getString(logFile); - logFormat = node.getNode("logging", "format").getString(logFormat); + registerHelp = node.node("register-help").getBoolean(true); + logCommands = node.node("logging", "log-commands").getBoolean(logCommands); + logFile = node.node("logging", "file").getString(logFile); + logFormat = node.node("logging", "format").getString(logFormat); - superPickaxeDrop = node.getNode("super-pickaxe", "drop-items").getBoolean(superPickaxeDrop); - superPickaxeManyDrop = node.getNode("super-pickaxe", "many-drop-items").getBoolean(superPickaxeManyDrop); + superPickaxeDrop = node.node("super-pickaxe", "drop-items").getBoolean(superPickaxeDrop); + superPickaxeManyDrop = node.node("super-pickaxe", "many-drop-items").getBoolean(superPickaxeManyDrop); - useInventory = node.getNode("use-inventory", "enable").getBoolean(useInventory); - useInventoryOverride = node.getNode("use-inventory", "allow-override").getBoolean(useInventoryOverride); - useInventoryCreativeOverride = node.getNode("use-inventory", "creative-mode-overrides").getBoolean(useInventoryCreativeOverride); + useInventory = node.node("use-inventory", "enable").getBoolean(useInventory); + useInventoryOverride = node.node("use-inventory", "allow-override").getBoolean(useInventoryOverride); + useInventoryCreativeOverride = node.node("use-inventory", "creative-mode-overrides").getBoolean(useInventoryCreativeOverride); - navigationWand = node.getNode("navigation-wand", "item").getString(navigationWand).toLowerCase(Locale.ROOT); + navigationWand = node.node("navigation-wand", "item").getString(navigationWand).toLowerCase(Locale.ROOT); try { navigationWand = LegacyMapper.getInstance().getItemFromLegacy(Integer.parseInt(navigationWand)).getId(); } catch (Throwable ignored) { } - navigationWandMaxDistance = node.getNode("navigation-wand", "max-distance").getInt(navigationWandMaxDistance); - navigationUseGlass = node.getNode("navigation", "use-glass").getBoolean(navigationUseGlass); + navigationWandMaxDistance = node.node("navigation-wand", "max-distance").getInt(navigationWandMaxDistance); + navigationUseGlass = node.node("navigation", "use-glass").getBoolean(navigationUseGlass); - scriptTimeout = node.getNode("scripting", "timeout").getInt(scriptTimeout); - scriptsDir = node.getNode("scripting", "dir").getString(scriptsDir); + scriptTimeout = node.node("scripting", "timeout").getInt(scriptTimeout); + scriptsDir = node.node("scripting", "dir").getString(scriptsDir); - saveDir = node.getNode("saving", "dir").getString(saveDir); + saveDir = node.node("saving", "dir").getString(saveDir); - allowSymlinks = node.getNode("files", "allow-symbolic-links").getBoolean(false); - LocalSession.MAX_HISTORY_SIZE = Math.max(0, node.getNode("history", "size").getInt(15)); - SessionManager.EXPIRATION_GRACE = node.getNode("history", "expiration").getInt(10) * 60 * 1000; + allowSymlinks = node.node("files", "allow-symbolic-links").getBoolean(false); + LocalSession.MAX_HISTORY_SIZE = Math.max(0, node.node("history", "size").getInt(15)); + SessionManager.EXPIRATION_GRACE = node.node("history", "expiration").getInt(10) * 60 * 1000; - showHelpInfo = node.getNode("show-help-on-first-use").getBoolean(true); - serverSideCUI = node.getNode("server-side-cui").getBoolean(true); + showHelpInfo = node.node("show-help-on-first-use").getBoolean(true); + serverSideCUI = node.node("server-side-cui").getBoolean(true); - String snapshotsDir = node.getNode("snapshots", "directory").getString(""); - boolean experimentalSnapshots = node.getNode("snapshots", "experimental").getBoolean(false); + String snapshotsDir = node.node("snapshots", "directory").getString(""); + boolean experimentalSnapshots = node.node("snapshots", "experimental").getBoolean(false); initializeSnapshotConfiguration(snapshotsDir, experimentalSnapshots); - String type = node.getNode("shell-save-type").getString("").trim(); + String type = node.node("shell-save-type").getString("").trim(); shellSaveType = type.equals("") ? null : type; - extendedYLimit = node.getNode("compat", "extended-y-limit").getBoolean(false); - setDefaultLocaleName(node.getNode("default-locale").getString(defaultLocaleName)); + extendedYLimit = node.node("compat", "extended-y-limit").getBoolean(false); + setDefaultLocaleName(node.node("default-locale").getString(defaultLocaleName)); } } diff --git a/worldedit-sponge/src/main/java/com/sk89q/worldedit/sponge/config/SpongeConfiguration.java b/worldedit-sponge/src/main/java/com/sk89q/worldedit/sponge/config/SpongeConfiguration.java index 05e9cd2e17..bb58a5d8c4 100644 --- a/worldedit-sponge/src/main/java/com/sk89q/worldedit/sponge/config/SpongeConfiguration.java +++ b/worldedit-sponge/src/main/java/com/sk89q/worldedit/sponge/config/SpongeConfiguration.java @@ -21,10 +21,10 @@ import com.google.inject.Inject; import com.sk89q.worldedit.sponge.SpongeWorldEdit; -import ninja.leaping.configurate.commented.CommentedConfigurationNode; -import ninja.leaping.configurate.loader.ConfigurationLoader; import org.apache.logging.log4j.Logger; import org.spongepowered.api.config.DefaultConfig; +import org.spongepowered.configurate.CommentedConfigurationNode; +import org.spongepowered.configurate.loader.ConfigurationLoader; import java.io.IOException; import java.nio.file.Path; @@ -35,7 +35,9 @@ public class SpongeConfiguration extends ConfigurateConfiguration { public boolean cheatMode = false; @Inject - public SpongeConfiguration(@DefaultConfig(sharedRoot = false) ConfigurationLoader config, Logger logger) { + public SpongeConfiguration(@DefaultConfig(sharedRoot = false) + ConfigurationLoader config, + Logger logger) { super(config, logger); } @@ -43,8 +45,8 @@ public SpongeConfiguration(@DefaultConfig(sharedRoot = false) ConfigurationLoade public void load() { super.load(); - creativeEnable = node.getNode("use-in-creative").getBoolean(false); - cheatMode = node.getNode("cheat-mode").getBoolean(false); + creativeEnable = node.node("use-in-creative").getBoolean(false); + cheatMode = node.node("cheat-mode").getBoolean(false); try { config.save(node); diff --git a/worldedit-sponge/src/main/java/com/sk89q/worldedit/sponge/internal/ExtendedChunk.java b/worldedit-sponge/src/main/java/com/sk89q/worldedit/sponge/internal/ExtendedChunk.java new file mode 100644 index 0000000000..47e0451e27 --- /dev/null +++ b/worldedit-sponge/src/main/java/com/sk89q/worldedit/sponge/internal/ExtendedChunk.java @@ -0,0 +1,43 @@ +/* + * WorldEdit, a Minecraft world manipulation toolkit + * Copyright (C) sk89q + * Copyright (C) WorldEdit team and contributors + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +package com.sk89q.worldedit.sponge.internal; + +import com.sk89q.worldedit.util.SideEffect; +import net.minecraft.core.BlockPos; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.level.chunk.LevelChunk; + +import javax.annotation.Nullable; + +public interface ExtendedChunk { + /** + * {@link LevelChunk#setBlockState(BlockPos, BlockState, boolean)} with the extra + * {@link SideEffect#UPDATE} flag. + * + * @param pos the position to set + * @param state the state to set + * @param moved I honestly have no idea and can't be bothered to investigate, we pass {@code + * false} + * @param update the update flag, see side-effect for details + * @return the old block state, or {@code null} if unchanged + */ + @Nullable + BlockState setBlockState(BlockPos pos, BlockState state, boolean moved, boolean update); +} diff --git a/worldedit-sponge/src/main/java/com/sk89q/worldedit/sponge/internal/LocaleResolver.java b/worldedit-sponge/src/main/java/com/sk89q/worldedit/sponge/internal/LocaleResolver.java new file mode 100644 index 0000000000..4f7f4c8a54 --- /dev/null +++ b/worldedit-sponge/src/main/java/com/sk89q/worldedit/sponge/internal/LocaleResolver.java @@ -0,0 +1,35 @@ +/* + * WorldEdit, a Minecraft world manipulation toolkit + * Copyright (C) sk89q + * Copyright (C) WorldEdit team and contributors + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +package com.sk89q.worldedit.sponge.internal; + +import com.sk89q.worldedit.WorldEdit; +import net.kyori.adventure.audience.Audience; +import org.spongepowered.api.util.locale.LocaleSource; + +import java.util.Locale; + +public class LocaleResolver { + public static Locale resolveLocale(Audience audience) { + if (audience instanceof LocaleSource) { + return ((LocaleSource) audience).locale(); + } + return WorldEdit.getInstance().getConfiguration().defaultLocale; + } +} diff --git a/worldedit-sponge/src/main/java/com/sk89q/worldedit/sponge/internal/NbtAdapter.java b/worldedit-sponge/src/main/java/com/sk89q/worldedit/sponge/internal/NbtAdapter.java new file mode 100644 index 0000000000..5cf4229111 --- /dev/null +++ b/worldedit-sponge/src/main/java/com/sk89q/worldedit/sponge/internal/NbtAdapter.java @@ -0,0 +1,279 @@ +/* + * WorldEdit, a Minecraft world manipulation toolkit + * Copyright (C) sk89q + * Copyright (C) WorldEdit team and contributors + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +package com.sk89q.worldedit.sponge.internal; + +import com.sk89q.jnbt.ByteArrayTag; +import com.sk89q.jnbt.ByteTag; +import com.sk89q.jnbt.CompoundTag; +import com.sk89q.jnbt.CompoundTagBuilder; +import com.sk89q.jnbt.DoubleTag; +import com.sk89q.jnbt.EndTag; +import com.sk89q.jnbt.FloatTag; +import com.sk89q.jnbt.IntArrayTag; +import com.sk89q.jnbt.IntTag; +import com.sk89q.jnbt.ListTag; +import com.sk89q.jnbt.ListTagBuilder; +import com.sk89q.jnbt.LongArrayTag; +import com.sk89q.jnbt.LongTag; +import com.sk89q.jnbt.ShortTag; +import com.sk89q.jnbt.StringTag; +import com.sk89q.jnbt.Tag; +import org.spongepowered.api.data.persistence.DataContainer; +import org.spongepowered.api.data.persistence.DataQuery; +import org.spongepowered.api.data.persistence.DataSerializable; +import org.spongepowered.api.data.persistence.DataView; + +import java.util.Arrays; +import java.util.Collections; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; + +public class NbtAdapter { + /** + * A separator to introduce errors if there is something to be separated. We should only see + * single-part keys. + */ + private static final String BREAKING_SEPARATOR = "if you see this, something is wrong"; + + public static CompoundTag adaptToWorldEdit(DataView view) { + CompoundTagBuilder builder = CompoundTagBuilder.create(); + for (Map.Entry entry : view.values(false).entrySet()) { + builder.put( + entry.getKey().asString(BREAKING_SEPARATOR), + adaptUnknownToWorldEdit(entry.getValue()) + ); + } + return builder.build(); + } + + private static Tag adaptUnknownToWorldEdit(Object object) { + if (object instanceof DataView) { + return adaptToWorldEdit((DataView) object); + } + if (object instanceof Boolean) { + return new ByteTag((byte) ((Boolean) object ? 1 : 0)); + } + if (object instanceof Byte) { + return new ByteTag((Byte) object); + } + if (object instanceof Short) { + return new ShortTag(((Short) object)); + } + if (object instanceof Integer) { + return new IntTag(((Integer) object)); + } + if (object instanceof Long) { + return new LongTag(((Long) object)); + } + if (object instanceof Float) { + return new FloatTag(((Float) object)); + } + if (object instanceof Double) { + return new DoubleTag(((Double) object)); + } + if (object instanceof String) { + return new StringTag((String) object); + } + if (object instanceof byte[]) { + return new ByteArrayTag(((byte[]) object)); + } + if (object instanceof Byte[]) { + Byte[] array = (Byte[]) object; + byte[] copy = new byte[array.length]; + for (int i = 0; i < copy.length; i++) { + copy[i] = array[i]; + } + return new ByteArrayTag(copy); + } + if (object instanceof int[]) { + return new IntArrayTag(((int[]) object)); + } + if (object instanceof Integer[]) { + Integer[] array = (Integer[]) object; + int[] copy = new int[array.length]; + for (int i = 0; i < copy.length; i++) { + copy[i] = array[i]; + } + return new IntArrayTag(copy); + } + if (object instanceof long[]) { + return new LongArrayTag(((long[]) object)); + } + if (object instanceof Long[]) { + Long[] array = (Long[]) object; + long[] copy = new long[array.length]; + for (int i = 0; i < copy.length; i++) { + copy[i] = array[i]; + } + return new LongArrayTag(copy); + } + if (object instanceof List) { + List objects = (List) object; + if (objects.isEmpty()) { + return new ListTag(EndTag.class, Collections.emptyList()); + } + Tag[] entries = new Tag[objects.size()]; + for (int i = 0; i < objects.size(); i++) { + Object value = objects.get(i); + entries[i] = adaptUnknownToWorldEdit(value); + } + return ListTagBuilder.createWith(entries).build(); + } + if (object instanceof Map) { + CompoundTagBuilder builder = CompoundTagBuilder.create(); + for (Map.Entry entry : ((Map) object).entrySet()) { + String key = entry.getKey() instanceof DataQuery + ? ((DataQuery) entry.getKey()).asString(BREAKING_SEPARATOR) + : entry.getKey().toString(); + builder.put(key, adaptUnknownToWorldEdit(entry.getValue())); + } + return builder.build(); + } + if (object instanceof DataSerializable) { + return adaptToWorldEdit(((DataSerializable) object).toContainer()); + } + throw new UnsupportedOperationException("Unable to translate into NBT: " + object.getClass()); + } + + public static DataContainer adaptFromWorldEdit(CompoundTag tag) { + // copy to container, no cloning used because it's unlikely to leak + // and it's cheaper this way + DataContainer container = DataContainer.createNew(DataView.SafetyMode.NO_DATA_CLONED); + for (Map.Entry entry : tag.getValue().entrySet()) { + container.set(DataQuery.of(entry.getKey()), adaptTagFromWorldEdit(entry.getValue())); + } + return container; + } + + private static Object adaptTagFromWorldEdit(Tag value) { + if (value instanceof ListTag) { + return ((ListTag) value).getValue().stream() + .map(NbtAdapter::adaptTagFromWorldEdit) + .collect(Collectors.toList()); + } + if (value instanceof CompoundTag) { + return adaptFromWorldEdit(((CompoundTag) value)); + } + // everything else is raw JDK types, so we can use it directly + return value.getValue(); + } + + public static net.minecraft.nbt.Tag adaptNMSToWorldEdit(Tag tag) { + if (tag instanceof IntArrayTag) { + return adaptNMSToWorldEdit((IntArrayTag) tag); + + } else if (tag instanceof ListTag) { + return adaptNMSToWorldEdit((ListTag) tag); + + } else if (tag instanceof LongTag) { + return adaptNMSToWorldEdit((LongTag) tag); + + } else if (tag instanceof LongArrayTag) { + return adaptNMSToWorldEdit((LongArrayTag) tag); + + } else if (tag instanceof StringTag) { + return adaptNMSToWorldEdit((StringTag) tag); + + } else if (tag instanceof IntTag) { + return adaptNMSToWorldEdit((IntTag) tag); + + } else if (tag instanceof ByteTag) { + return adaptNMSToWorldEdit((ByteTag) tag); + + } else if (tag instanceof ByteArrayTag) { + return adaptNMSToWorldEdit((ByteArrayTag) tag); + + } else if (tag instanceof CompoundTag) { + return adaptNMSToWorldEdit((CompoundTag) tag); + + } else if (tag instanceof FloatTag) { + return adaptNMSToWorldEdit((FloatTag) tag); + + } else if (tag instanceof ShortTag) { + return adaptNMSToWorldEdit((ShortTag) tag); + + } else if (tag instanceof DoubleTag) { + return adaptNMSToWorldEdit((DoubleTag) tag); + } else { + throw new IllegalArgumentException("Can't convert tag of type " + tag.getClass().getCanonicalName()); + } + } + + public static net.minecraft.nbt.IntArrayTag adaptNMSToWorldEdit(IntArrayTag tag) { + int[] value = tag.getValue(); + return new net.minecraft.nbt.IntArrayTag(Arrays.copyOf(value, value.length)); + } + + public static net.minecraft.nbt.ListTag adaptNMSToWorldEdit(ListTag tag) { + net.minecraft.nbt.ListTag list = new net.minecraft.nbt.ListTag(); + for (Tag child : tag.getValue()) { + if (child instanceof EndTag) { + continue; + } + list.add(adaptNMSToWorldEdit(child)); + } + return list; + } + + public static net.minecraft.nbt.LongTag adaptNMSToWorldEdit(LongTag tag) { + return net.minecraft.nbt.LongTag.valueOf(tag.getValue()); + } + + public static net.minecraft.nbt.LongArrayTag adaptNMSToWorldEdit(LongArrayTag tag) { + return new net.minecraft.nbt.LongArrayTag(tag.getValue().clone()); + } + + public static net.minecraft.nbt.StringTag adaptNMSToWorldEdit(StringTag tag) { + return net.minecraft.nbt.StringTag.valueOf(tag.getValue()); + } + + public static net.minecraft.nbt.IntTag adaptNMSToWorldEdit(IntTag tag) { + return net.minecraft.nbt.IntTag.valueOf(tag.getValue()); + } + + public static net.minecraft.nbt.ByteTag adaptNMSToWorldEdit(ByteTag tag) { + return net.minecraft.nbt.ByteTag.valueOf(tag.getValue()); + } + + public static net.minecraft.nbt.ByteArrayTag adaptNMSToWorldEdit(ByteArrayTag tag) { + return new net.minecraft.nbt.ByteArrayTag(tag.getValue().clone()); + } + + public static net.minecraft.nbt.CompoundTag adaptNMSToWorldEdit(CompoundTag tag) { + net.minecraft.nbt.CompoundTag compound = new net.minecraft.nbt.CompoundTag(); + for (Map.Entry child : tag.getValue().entrySet()) { + compound.put(child.getKey(), adaptNMSToWorldEdit(child.getValue())); + } + return compound; + } + + public static net.minecraft.nbt.FloatTag adaptNMSToWorldEdit(FloatTag tag) { + return net.minecraft.nbt.FloatTag.valueOf(tag.getValue()); + } + + public static net.minecraft.nbt.ShortTag adaptNMSToWorldEdit(ShortTag tag) { + return net.minecraft.nbt.ShortTag.valueOf(tag.getValue()); + } + + public static net.minecraft.nbt.DoubleTag adaptNMSToWorldEdit(DoubleTag tag) { + return net.minecraft.nbt.DoubleTag.valueOf(tag.getValue()); + } +} diff --git a/worldedit-sponge/src/main/java/com/sk89q/worldedit/sponge/internal/SpongeTransmogrifier.java b/worldedit-sponge/src/main/java/com/sk89q/worldedit/sponge/internal/SpongeTransmogrifier.java new file mode 100644 index 0000000000..a86d8988a8 --- /dev/null +++ b/worldedit-sponge/src/main/java/com/sk89q/worldedit/sponge/internal/SpongeTransmogrifier.java @@ -0,0 +1,179 @@ +/* + * WorldEdit, a Minecraft world manipulation toolkit + * Copyright (C) sk89q + * Copyright (C) WorldEdit team and contributors + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +package com.sk89q.worldedit.sponge.internal; + +import com.google.common.collect.ImmutableList; +import com.sk89q.worldedit.registry.state.BooleanProperty; +import com.sk89q.worldedit.registry.state.DirectionalProperty; +import com.sk89q.worldedit.registry.state.EnumProperty; +import com.sk89q.worldedit.registry.state.IntegerProperty; +import com.sk89q.worldedit.registry.state.Property; +import com.sk89q.worldedit.util.Direction; +import com.sk89q.worldedit.world.block.BlockState; +import com.sk89q.worldedit.world.block.BlockType; +import net.minecraft.util.StringRepresentable; +import org.spongepowered.api.ResourceKey; +import org.spongepowered.api.Sponge; +import org.spongepowered.api.registry.RegistryTypes; +import org.spongepowered.api.state.BooleanStateProperty; +import org.spongepowered.api.state.EnumStateProperty; +import org.spongepowered.api.state.IntegerStateProperty; +import org.spongepowered.api.state.StateProperty; + +import java.util.Comparator; +import java.util.Map; +import java.util.Optional; +import java.util.TreeMap; +import java.util.stream.Collectors; + +/** + * Raw, un-cached transformations. + */ +public class SpongeTransmogrifier { + + public static Property transmogToWorldEditProperty(StateProperty property) { + if (property instanceof BooleanStateProperty) { + return new BooleanProperty(property.name(), ImmutableList.copyOf(((BooleanStateProperty) property).possibleValues())); + } + if (property instanceof IntegerStateProperty) { + return new IntegerProperty(property.name(), ImmutableList.copyOf(((IntegerStateProperty) property).possibleValues())); + } + if (isDirectionProperty(property)) { + return new DirectionalProperty(property.name(), + ((EnumStateProperty) property).possibleValues().stream() + .map(x -> adaptDirection((net.minecraft.core.Direction) x)) + .collect(Collectors.toList()) + ); + } + if (property instanceof EnumStateProperty) { + return new EnumProperty(property.name(), ((EnumStateProperty) property).possibleValues().stream() + .map(x -> ((StringRepresentable) x).getSerializedName()) + .collect(Collectors.toList())); + } + throw new IllegalStateException("Unknown property type"); + } + + private static Map, Object> transmogToWorldEditProperties(BlockType block, Map, ?> mcProps) { + Map, Object> props = new TreeMap<>(Comparator.comparing(Property::getName)); + for (Map.Entry, ?> prop : mcProps.entrySet()) { + Object value = prop.getValue(); + if (isDirectionProperty(prop.getKey())) { + value = adaptDirection((net.minecraft.core.Direction) value); + } else if (prop.getKey() instanceof EnumStateProperty) { + value = ((StringRepresentable) value).getSerializedName(); + } + props.put(block.getProperty(prop.getKey().name()), value); + } + return props; + } + + private static boolean isDirectionProperty(StateProperty property) { + return property instanceof EnumStateProperty + && property.valueClass().isAssignableFrom(net.minecraft.core.Direction.class); + } + + private static Direction adaptDirection(net.minecraft.core.Direction direction) { + switch (direction) { + case UP: + return Direction.UP; + case DOWN: + return Direction.DOWN; + case EAST: + return Direction.EAST; + case WEST: + return Direction.WEST; + case NORTH: + return Direction.NORTH; + case SOUTH: + return Direction.SOUTH; + default: + throw new AssertionError("New direction added: " + direction); + } + } + + private static net.minecraft.core.Direction adaptDirection(Direction direction) { + switch (direction) { + case UP: + return net.minecraft.core.Direction.UP; + case DOWN: + return net.minecraft.core.Direction.DOWN; + case EAST: + return net.minecraft.core.Direction.EAST; + case WEST: + return net.minecraft.core.Direction.WEST; + case NORTH: + return net.minecraft.core.Direction.NORTH; + case SOUTH: + return net.minecraft.core.Direction.SOUTH; + default: + throw new AssertionError("New direction added: " + direction); + } + } + + @SuppressWarnings({ "unchecked", "rawtypes" }) + private static org.spongepowered.api.block.BlockState transmogToMinecraftProperties( + org.spongepowered.api.block.BlockState newState, + Map, Object> states + ) { + org.spongepowered.api.block.BlockType type = newState.type(); + for (Map.Entry, Object> state : states.entrySet()) { + StateProperty property = type.findStateProperty(state.getKey().getName()) + .orElseThrow(() -> new IllegalStateException( + "Missing property in " + type + ": " + state.getKey().getName()) + ); + Comparable value = (Comparable) state.getValue(); + // we may need to adapt this value, depending on the source prop + if (state.getKey() instanceof DirectionalProperty) { + Direction dir = (Direction) value; + value = adaptDirection(dir); + } else if (state.getKey() instanceof EnumProperty) { + String enumName = (String) value; + value = property.parseValue(enumName).orElseThrow(() -> new IllegalStateException( + "Failed to parse '" + enumName + "' into " + state.getKey().getName() + )); + } + + Optional optional = + newState.withStateProperty((StateProperty) property, value); + newState = optional.orElseThrow(() -> new IllegalStateException( + "Failed to change state property " + property.name() + )); + } + return newState; + } + + public static org.spongepowered.api.block.BlockState transmogToMinecraft(BlockState blockState) { + org.spongepowered.api.block.BlockType mcBlock = Sponge.game().registry(RegistryTypes.BLOCK_TYPE) + .value(ResourceKey.resolve(blockState.getBlockType().getId())); + org.spongepowered.api.block.BlockState newState = mcBlock.defaultState(); + Map, Object> states = blockState.getStates(); + return transmogToMinecraftProperties(newState, states); + } + + public static BlockState transmogToWorldEdit(org.spongepowered.api.block.BlockState blockState) { + BlockType blockType = BlockType.REGISTRY.get( + blockState.type().key(RegistryTypes.BLOCK_TYPE).asString() + ); + return blockType.getState(transmogToWorldEditProperties(blockType, blockState.statePropertyMap())); + } + + private SpongeTransmogrifier() { + } +} diff --git a/worldedit-sponge/src/main/java/com/sk89q/worldedit/sponge/internal/SpongeWorldNativeAccess.java b/worldedit-sponge/src/main/java/com/sk89q/worldedit/sponge/internal/SpongeWorldNativeAccess.java new file mode 100644 index 0000000000..fa7d1c04ff --- /dev/null +++ b/worldedit-sponge/src/main/java/com/sk89q/worldedit/sponge/internal/SpongeWorldNativeAccess.java @@ -0,0 +1,152 @@ +/* + * WorldEdit, a Minecraft world manipulation toolkit + * Copyright (C) sk89q + * Copyright (C) WorldEdit team and contributors + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +package com.sk89q.worldedit.sponge.internal; + +import com.sk89q.worldedit.internal.wna.WorldNativeAccess; +import com.sk89q.worldedit.sponge.SpongeAdapter; +import com.sk89q.worldedit.util.SideEffect; +import com.sk89q.worldedit.util.SideEffectSet; +import com.sk89q.worldedit.world.storage.ChunkStore; +import net.minecraft.core.BlockPos; +import net.minecraft.nbt.CompoundTag; +import net.minecraft.server.level.ChunkHolder; +import net.minecraft.server.level.ServerLevel; +import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.block.entity.BlockEntity; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.level.chunk.LevelChunk; + +import java.lang.ref.WeakReference; +import java.util.Objects; +import javax.annotation.Nullable; + +public class SpongeWorldNativeAccess implements WorldNativeAccess { + private static final int UPDATE = 1; + private static final int NOTIFY = 2; + + private final WeakReference world; + private SideEffectSet sideEffectSet; + + public SpongeWorldNativeAccess(WeakReference world) { + this.world = world; + } + + private ServerLevel getWorld() { + return Objects.requireNonNull(world.get(), "The reference to the world was lost"); + } + + @Override + public void setCurrentSideEffectSet(SideEffectSet sideEffectSet) { + this.sideEffectSet = sideEffectSet; + } + + @Override + public LevelChunk getChunk(int x, int z) { + return getWorld().getChunk(x, z); + } + + @Override + public BlockState toNative(com.sk89q.worldedit.world.block.BlockState state) { + return (BlockState) SpongeAdapter.adapt(state); + } + + @Override + public BlockState getBlockState(LevelChunk chunk, BlockPos position) { + return chunk.getBlockState(position); + } + + @Nullable + @Override + public BlockState setBlockState(LevelChunk chunk, BlockPos position, BlockState state) { + if (chunk instanceof ExtendedChunk) { + return ((ExtendedChunk) chunk).setBlockState( + position, state, false, sideEffectSet.shouldApply(SideEffect.UPDATE) + ); + } + return chunk.setBlockState(position, state, false); + } + + @Override + public BlockState getValidBlockForPosition(BlockState block, BlockPos position) { + return Block.updateFromNeighbourShapes(block, getWorld(), position); + } + + @Override + public BlockPos getPosition(int x, int y, int z) { + return new BlockPos(x, y, z); + } + + @Override + public void updateLightingForBlock(BlockPos position) { + getWorld().getChunkSource().getLightEngine().checkBlock(position); + } + + @Override + public boolean updateTileEntity(BlockPos position, com.sk89q.jnbt.CompoundTag tag) { + CompoundTag nativeTag = NbtAdapter.adaptNMSToWorldEdit(tag); + BlockEntity tileEntity = getWorld().getChunk(position).getBlockEntity(position); + if (tileEntity == null) { + return false; + } + tileEntity.setLevelAndPosition(getWorld(), position); + tileEntity.load(getWorld().getBlockState(position), nativeTag); + return true; + } + + @Override + public void notifyBlockUpdate(LevelChunk chunk, BlockPos position, BlockState oldState, BlockState newState) { + if (chunk.getSections()[position.getY() >> ChunkStore.CHUNK_SHIFTS] != null) { // TODO 1.17 - world.get().getSectionIndex(position.getY()) + getWorld().sendBlockUpdated(position, oldState, newState, UPDATE | NOTIFY); + } + } + + @Override + public boolean isChunkTicking(LevelChunk chunk) { + return chunk.getFullStatus().isOrAfter(ChunkHolder.FullChunkStatus.TICKING); + } + + @Override + public void markBlockChanged(LevelChunk chunk, BlockPos position) { + if (chunk.getSections()[position.getY() >> ChunkStore.CHUNK_SHIFTS] != null) { // TODO 1.17 - world.getSectionIndex(position.getY()) + getWorld().getChunkSource().blockChanged(position); + } + } + + @Override + public void notifyNeighbors(BlockPos pos, BlockState oldState, BlockState newState) { + getWorld().updateNeighborsAt(pos, oldState.getBlock()); + if (newState.hasAnalogOutputSignal()) { + getWorld().updateNeighbourForOutputSignal(pos, newState.getBlock()); + } + } + + @Override + public void updateNeighbors(BlockPos pos, BlockState oldState, BlockState newState, int recursionLimit) { + ServerLevel world = getWorld(); + oldState.updateNeighbourShapes(world, pos, NOTIFY, recursionLimit); + newState.updateIndirectNeighbourShapes(world, pos, NOTIFY, recursionLimit); + newState.updateNeighbourShapes(world, pos, NOTIFY, recursionLimit); + } + + @Override + public void onBlockStateChange(BlockPos pos, BlockState oldState, BlockState newState) { + getWorld().onBlockStateChange(pos, oldState, newState); + } +} diff --git a/worldedit-sponge/src/main/resources/com/sk89q/worldedit/sponge/adapter/impl/Sponge_1_10_Impl$1.class b/worldedit-sponge/src/main/resources/com/sk89q/worldedit/sponge/adapter/impl/Sponge_1_10_Impl$1.class deleted file mode 100644 index 0194fc40b5e9500c7c0dfe4d752da3ed0f455271..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1735 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 T(LfqZLke*#M~70`jI#d$c8(VM diff --git a/worldedit-sponge/src/main/resources/com/sk89q/worldedit/sponge/adapter/impl/Sponge_1_11_2_Impl$1.class b/worldedit-sponge/src/main/resources/com/sk89q/worldedit/sponge/adapter/impl/Sponge_1_11_2_Impl$1.class deleted file mode 100644 index 954d9f03a6485d9781395d909b291dec5f6015bc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1741 zcmbu9ZExFD6vzKJP3t6e+pI0LjHg0P*YYqgT|4$r#+-+yS>w3a=>imFT*qp?xp8ou zO}s;b4}b(80EtPw1%?npXhMQlyh4HxfCL`^30@=4&E4us+ly&PiU0ncbM86k9$)+C zf4{p8U=H|*?rs?&D5u@|ZSK{rsXfz2-1g@V0o z*T|$4Brt~jRp+{+22N*BHFmFhZY*JlVdmcWlRS{&{KHq2Fv6hTZ+$=Z1GO1>Ue)V( zkrRiJ!m0UQ*OQQ8Sa`5S5^@ZgyDOg@;J@7>;Kt-Qx^W7`6S56AU&|lkp^;;)R~3Jr-+K zo0pLBj0k_0!p%y#Wf)}{im*M$AUCyo-9B`j5ROHL;bP4!ZOC|DSYDtpT;6U}>y+^& zVLC~xEuAmF>o_GG1@71|%;urvv~a92jEY#hxNTALGs6BdEua=`os6bo=rYa;$9abF zqG_}mM_g;d^$N9UwKRQ8#;d||iCWZ3TB)YVC<;@FCQ;VRP212mWmJT5ovP`Ts+R0} zLpbPcg}S!K6k-Op>)JT-y{|3fmsTMBVRr zjsC%|7d4&TfGlHH?6}wHDBt0n74{?7TlcwhqSA4Lu;+L7bT8fy+thZgL$6XPaC$wj zm!G4Pl%|gc%g^$I#qW^81oEUUAXUc@-GQxsi$`yNpSy+GulVnYZ!niOK1X_Ufb)dI z2`&(hB)CKDTxHKa&20U+^pGZ}=U5kp79k@Hgo{ z3~UIKEY0$4igcRIv3XL3onoiSpTg_(utx?D_W*Cuy@Q38L>~Ppqx a!`LBBL!#?j^ylrQNRiLbz(yfo%KisYDS`0- diff --git a/worldedit-sponge/src/main/resources/com/sk89q/worldedit/sponge/adapter/impl/Sponge_1_11_2_Impl$SpongeNMSWorld.class b/worldedit-sponge/src/main/resources/com/sk89q/worldedit/sponge/adapter/impl/Sponge_1_11_2_Impl$SpongeNMSWorld.class deleted file mode 100644 index ab33bdfa78b8271aa4d68048d0c7ca8666bd3de9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7255 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 diff --git a/worldedit-sponge/src/main/resources/com/sk89q/worldedit/sponge/adapter/impl/Sponge_1_11_Impl$1.class b/worldedit-sponge/src/main/resources/com/sk89q/worldedit/sponge/adapter/impl/Sponge_1_11_Impl$1.class deleted file mode 100644 index 5b717772638132e4332f5766cbb66fa4d3aa45b4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1735 zcmbu9ZExFD6vzKJP3t6e+pO(a8Bc|puH|7~wsv$6j5!ZYv&M0;(*-CfxQ^9&bM4?b zn|Ox=9{>qH01`;N1%?npXhMQlyqdIqfJyKHkl;1q+}y3MU@xX2CI0(&&bjBDdwlI* z|Nh}7fF-=caMlU;)ZW#VGw-R_!^rQr9WPdU-7wg3Rl8$%V>eR0y{@lX16#Y$E)?1| zGAIQJj3Ix;zGkbw9qg#a_7&HOB@8hf{&)0o9>%cpsMRElFsKh&-H$zAZAPwJbptoD z<1kVL5;6?)54T7{jv;e@CCx>#u6wbwtJ__LGAM%)Df=T*c-cXr|CVJ)ZPh5* zdB^txFTTJqw6J)Y;b=0dMrie&-Br)^JC!I3BMFBXMy}a@-|aChEi7);AFl2Fy`GaX zh3Oo!I4olf<5{F|gdyEDD;0*qBcyvAN3)df2?i;QI$mJ=gN@W=JcXxup=W51#agw^ zOUQUugg-~&W~JORjIs!CoiD%dI3XMb?pQO-=Dy>Ua4a#5ir98>)1u_3h5Z#;KrOU&GMa{=%Qzz(XBoze zrqOB~aGe*fSE)s-rRf_oUK5s!)S_0>N;OSJQJ6|JiLz#{w+(GwMnxD`shVD?YRRtG zgoDmTZZM8}TVEIEI^{LBMw$235GI2j;6|-Mvv^$?OlnlbBw3rnwMnt1u;VgJ)V;uM z^!K*isA+HeWErz!+qp_d`5x!2upc?@s>huZmB8`Co)_%sZoC_IsO?%nuTsgkdp)<8 zpQV$Orq2b-&+voA?~uU+@}w;wRmTwBfh~WJ$8P?ZyMdW+`0vT@Fq<~MM0$OIbA-bQ z&J&I#xJW1^_!40zL6tCnAo?Wd1L4b@55%u<&L->6an2=tf%9m>8fQ7-GUu^`tDMIZ zzQlPVVV!e6;SJ7*61F%`CVZLm)PTRHw>FDu9Kj@JFo${4V>pRr($mmTCaqut7HJdj z!XfRTiymo=5AY%BNB9_@kba8K@Hy!h_zE{jzr|1Zne-Rj!fnz!xQpLNf5#vAlk_hJ zHiSu*W_dP6I?ZO;9I3)iuv6qu;SGA&BZG&#hd1fo#(Ya6kN$v5gWLZ1h0fAjR49dE ZY>}oR(e-Wm^LA3C$Y*F^qmVCV{{ej#fH(jE diff --git a/worldedit-sponge/src/main/resources/com/sk89q/worldedit/sponge/adapter/impl/Sponge_1_11_Impl$SpongeNMSWorld.class b/worldedit-sponge/src/main/resources/com/sk89q/worldedit/sponge/adapter/impl/Sponge_1_11_Impl$SpongeNMSWorld.class deleted file mode 100644 index 4da53c21fa4722206f1f5e4af4930bd3684762d4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7237 zcmbVRX<$^<75+{#$xB`ah>@g3ETRM%vN!~lEgCQh!I2P<#K536yv#hpz+_&Sc_9gE z7i+6_w>zy%wYIiaTT5#Oq_t>UYxjNMTWeQayStWt_r8}&B$Jf- z%$NT2z=HtJldA+9V$MJ~vv<|%ec@pzos8S@gd5HbI;nm;Y{jiX*G`8M1B1zMm+tFr z>}_o9jj*G}>*(CnwN1@4AcC`J5atc{#}*1IPZW609&5iPST%!;85J^6ESUX5tpwqG z;)dKrGTfcE?G1LyPFt>%u2FB@ql31A(rN6NI>|tppk#cepd;T}nUnElcOq%8Pq_(q zw8hHUElDS~*T8JSsd+vK*1YI-8V#HxD0X)zGBwL6=tXPXL@5^}QVF+Nuru`H#dJ97 zejjdw&aj=f<6&zs;XyI1!P2y}Cx}xqw-g0<2}2V)$tjhnHW9#Sf`Bqt5P8vBo&a^) zUZitHu;?U|5zOkhT^-Xd*K%#ami!LuQ(@19a|mc!I*oKaFgziV3f1I;#EAk8oJG~C zOe8KS3@wcWQG>-M7U68ZTgi-pkU;tf>QH292RoXAs70NLrKlGeoY`i%RuJcSv%(zA zjP(Y)dpNie%hlj>8K?Y#JyCT7=Tjx!%Q<-?bfOisHaIjGrzhK;beHXFOvHzp@=ort zW6W-Pk^_7%^*c^~(pJ1M;H1KR%(w8Cv>kI&WWI!xq7&2#vE6oTZ>QsS4keR%1;tL` zq?PIqZ|>VesgyaTD~JoxY~li}rDsM;aFL)Oe!xJh;Iw=J^0YIsUQjxYk?lcjQ0{HV z#e^>7K=@bU5)*CMsKgB!*d(Y9OM&Y@t&?O&gXs2T zU&fCIO0aFx#~ndLy^lMH2G{E6@}ApD2Az!djo|c|yiC5b1_zU)6Qrf!BDi9@ob}K^ zGPZ3^e&LCk`NKH{3rl+hCSBLrr=clW5L!A(#XYG$H{9wB3_3%pc(>J0i1s0-5YG%K zah*=fP3&hzo;5imr%cl531S!eO&HiMXq*Y$dCf7fM^HvZJDeETbW(y4HO((alS_Df zBy~<=pbUG#Ni`=k!@wY8$HlhmG;a$cjf{zXV6Lcc!eGDGG3<3P^rK$K0rGmNt*y;N z-PH<)*95T|YfRGbD-=s)ECa718H5xz)UZap+QhZEjx)U|3eKIzu$kgb+2lXL#%boh z&?y(pILg~NnwiIE&p0mUV!<4ZTyGEdP`i0L)cRQU#^%SVKSWWvKTH92aXt>1GSt8u zO}t3~G;cYTNUB;q9!LG>hfF8F(i%Bf&LPStO_;N+(7{{C-M!Hx8EJU3ib6 zV(NDTHxnYetxTsqLeO!qA;fOQZDqIx?<3|?x_j=p?8&qm#2t9Q8h0lZpI}&z;|zR| z#I=vrV;=rfVEhn1thn!PGG%7Kz&#wjD~OLOh~A5jsgiutnGiI-bCHY-Vvd2s zDl;Pye?NG@#1R~2q?pbc?NtAN@QIfcL3|nys$~9*O6EQL3_L_1G0Oa1FH2E@UoiumbUeXa4dOAivzqvga@+```CHl<+TpS6?@jy; ze^6icj~e)si6^|bk)(mYn0V5E;}Pp`92D{<{lmoH@lQR81;)SWuh0%(-qR+Y!ZYgA z@Q8uuxItR6n4Mw8zl=4%L6}&&So;r-b3bELaswKdEelG4*UckZd1yz3q2yqF(F;qF ziRXnUtx&=Vr)<|94Qrq0XsLTQ;}uuTn%ruo;?95}C0sQ&lui@xf_kohvQwLaVoI4Q zr4pnFMH&$$LRCePpv;yz>QlL==!Bl08>E76l~c7F978H6tX!_Fe2Hh}JXYtSiK(86 zrVm%AK?!+d zmMR$|bVZ#h^Po=zzu4e(=MVv9A^6!e1D6JviR=CL;Y2D2V z+m36B%&Z@Y*@G%S4QUSIr}!CpOV+8H#8sDJbvdAj@ERSfq#^C90PG;GHBH*IJQymK zn$$K_D;JxxK~YheVr*Yy!I}TlC|xZ3KNx5jXgX08to0SN<@e;c-FX+#HPPf#9~07< zM8_&sSmJeP`CNfZXy}r$iP<7@K$CQ+)O1jmFQ?UxoX+2gt zp>~RHbz#}q!5zJGXrRwd`#n`J9L6N|Kg{CkKem_KivM1{b%=+a0lO!WNl?~Bx!s6c zp_zledg*e8(lNVTZ;Qc5iU@2?TA7TU!9s520sfRH<>l%(55P z?`5@h_hVjdeHQaS&esCT@LI)>{Djl-Qr^|m0-V8bE}v(sX(XB=(vB%BxyVAC=?iV= zJTs^^R@}$l$+9bQvMaC>t2kfDE~bi*Cd%Ns!k2jyinO9@>kebx zwt97`t7tijwrKqrB3X2d;nKQ_F2AE^ykooHak<|yp};~wTN?9*M1W7sF6K}L}%R*Fj3b8Y8#HC zJz5@%WA=-BY3Y;zB+IOw+jwpo_hL#;27>&Q`AshG=`7db^I~ve=qgF?}hr;Q{u;QNL$jJ zv!t1pd_r5&j8Eczt{cR1&l0Vz=j_XzO6qB~Go9jGimgl`oB^8wx{188)#S1y|$M^}Qsrb|qHjpbBn_euGome6k8l(>^ zB!+boM+fg)Wf!_hfXV{|?Qt$|7$`8%Zs3T4YYjXqgzYn!_cT3HpteDRm&q-kqpr+D zX*`5q(-n`Ob2mlseTllToyv9vo6VMD8)kb2+l_2DvyHKRgY9Q*zi0ag+jE?%Fg2Tv zte|9h?I?a14P^1h`;OuX_3&ptJgFZ3%7?#4v-lV9PelWTSv5fCupu z2E@UB8RRb@`*1y-e-l&rPKNkFCgu+qy2oW0f0Ypy+oKYY12T($tyIa?vRJN>uw1Ky zTZvPiMZBb>#3-$(uAXI@MoG!+Qcm<3@#nmYTp$;E(d7ZSOrvdOZCzF_QdoWj_0<6% z>$FQ{Lc^G}u(h(aWo7-CTyhXb;4TCvLE0mnmE$&IrDr3TTPYi*LqP~D3Ey5ara=nX zB%MCJsAD4J2A&aa)E4mlIh=3EhIK+)!L$%^r^sf~j^1yilu4t=##L%=%9E>|^-NT1 z+r1{>J>iixMb$-*V98O;i7JXB4UrFc+6#x+p7g#&8jNHsANGBqpNT?CFrR z*!9!22#&YKF~Kj_30uft0xy+4vX{0raJN*cTclHW0et~^6W`v9YIzH5l$)5kZzE~F z9X;|+?T`78YtaYWB O!}oH&Gb@1dlK%qxUTYKp diff --git a/worldedit-sponge/src/main/resources/com/sk89q/worldedit/sponge/adapter/impl/Sponge_1_11_Impl$TileEntityBaseBlock.class b/worldedit-sponge/src/main/resources/com/sk89q/worldedit/sponge/adapter/impl/Sponge_1_11_Impl$TileEntityBaseBlock.class deleted file mode 100644 index 0f0a4f1e8dd2da9691a17362a0d35b08072472b8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1163 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 Z*da|rqV+BM@^(_B$Y*F^qmVCU{{vAkf$;zU diff --git a/worldedit-sponge/src/main/resources/com/sk89q/worldedit/sponge/adapter/impl/Sponge_1_12_1_Impl$SpongeNMSWorld.class b/worldedit-sponge/src/main/resources/com/sk89q/worldedit/sponge/adapter/impl/Sponge_1_12_1_Impl$SpongeNMSWorld.class deleted file mode 100644 index 61ce0a7dbbe7e92053deed8845cebbb18335b99e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9427 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 diff --git a/worldedit-sponge/src/main/resources/com/sk89q/worldedit/sponge/adapter/impl/Sponge_1_12_1_Impl$TileEntityBaseBlock.class b/worldedit-sponge/src/main/resources/com/sk89q/worldedit/sponge/adapter/impl/Sponge_1_12_1_Impl$TileEntityBaseBlock.class deleted file mode 100644 index 1c5b4c31ce8935dfb82ce81b8243d07a9edb28de..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1495 zcmb_cZBG+H5PqgF7LEcHR0Kf~ik22Ri=ZIH7*LW+YGXo!@l$iXZtM;T`i#L_l~sJYzk-0U;Y%+9lW-+z4h24DfpguLa}bbohg`Gx+{^{Qo2 zwx#aZU1wY9X4$Mu;puj*Uez}PUol(E&hucfD_O9s;*le5xxZ%mVy)_0yD<7*24=pDVGZ3FVP;>*lj6sl``H$zwmph5Rnk>LM2Sgw(v;|b z9C?;EBKPaOO)}Ul2ThGAWeC$PP3x=|VdAu`?d^%-1|gg}(s4#Z3TeXB>8Ot6G0YNr zD-FjgW|x*1vx~(NVdG4CoMvyYiB*|{uHh#5f`p~HO_*%iZ-*dm(Yjma-VEei%dBph zo^6(@qM!yse~!;~zELX)@7SYlx(&|~8$mzghT{lty=wZt@G-%fVlt`!(&p)*g zzrE;V?*dy6uSa!RzSVl7IHJ+660fnbmh|+8H&>IZXTSoH@IL^JrUn(Z?6{%;3$UM%>9w7U4_9Od3 xP#GtV)=x4fpx6mr{LJGvqg0+gg`#)-lX{On`oP}10YeN+JZp>(@x|aX{u3Akn=}9b diff --git a/worldedit-sponge/src/main/resources/com/sk89q/worldedit/sponge/adapter/impl/Sponge_1_12_1_Impl.class b/worldedit-sponge/src/main/resources/com/sk89q/worldedit/sponge/adapter/impl/Sponge_1_12_1_Impl.class deleted file mode 100644 index cdc162c16a9c31b67b30fb5ea1144b37abb22b4d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 15702 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 diff --git a/worldedit-sponge/src/main/resources/com/sk89q/worldedit/sponge/adapter/impl/Sponge_1_12_2_Impl$1.class b/worldedit-sponge/src/main/resources/com/sk89q/worldedit/sponge/adapter/impl/Sponge_1_12_2_Impl$1.class deleted file mode 100644 index cb18d7835a9087ac528225e28bd07da62f29fd05..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1741 zcmbu9ZExFD6vzKJP3t6e+pI0LjHg0P*YYqgT|4$r#+-+yS>w3a=>imFT*qp?xp8ou zO}s;b4}b(80EtPw1%?npXhMQlyh4HxfCL`^30@=4&E4us+ly&PiU0ncbM86k9$)+C zf4{p8U=H|*?rs?&D5u@|ZSK{rsXfz2-1g=Kr$ zu8~P8NMH>4tIl;t4V=!NYV2P1+*ra8!_2+$CwU;l`G>D4VT3`w-}-*+2Wm6&ysFpn zA}0<0g`1Uf%P`6^6k&UgL2hdGx_#(4AsmYg!^N6e+K}IvGvF&}Ezxj`IxT zMbl_Cj=0u@>lJFzYH9kGj8}!_61Aw6v{FrzQ52>UO`@!so3^2C%BTqAI#tsvRV~@| zhH%i?$PLDEXX~57T&KLI)+qD78p34I1Kg@LXcn&tgGr5wm?UdcxV9;_6t+EviMrqM z8vTP^FKRlw0a?bZ*m1AXQNF`DE9^(Ex9)T2M5W^fVbAaE>0Z1awyEt}hhC*p;PiT4 zFF!{oDNP>@mY?MZi{BxG3FJvzK&p-*x&vGN7LVTkK6eYVU-91)-(W6ne2(u1NpOi!O7KO(OoA$5{z&vP=Of{(oR7qx<(y5{U*Mce_#)@ggf-4`!e!2530FCf zCw!UnM8Z1fe8O9tk0oqzo=o@(=cxgINpEcy)0n{|W-*Ti(i2$5D(M+$D3eyO1&g$a zci@t?(M69m#{2ky^h11vk4Znlr}&KYCceNe(y#FYekA<~zu;HW-|##BApH}6;cwD^ z7}yXdS(@e96zMdZWAmg6JH<|uKZV!nVUG+R?g8GQdj|_Gi9Gs!E)8z`-xoSdZ&INY ahOtAMhD6u5=+E0pks_a=fsI1Gl>HB6F@f{| diff --git a/worldedit-sponge/src/main/resources/com/sk89q/worldedit/sponge/adapter/impl/Sponge_1_12_2_Impl$SpongeNMSWorld.class b/worldedit-sponge/src/main/resources/com/sk89q/worldedit/sponge/adapter/impl/Sponge_1_12_2_Impl$SpongeNMSWorld.class deleted file mode 100644 index a684ee39b6a5e823a4ec1273a33ec0c324650986..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9427 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 diff --git a/worldedit-sponge/src/main/resources/com/sk89q/worldedit/sponge/adapter/impl/Sponge_1_12_2_Impl.class b/worldedit-sponge/src/main/resources/com/sk89q/worldedit/sponge/adapter/impl/Sponge_1_12_2_Impl.class deleted file mode 100644 index 6ac56f5fb720d67fab00945e624ea9c2cb28688a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 15702 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 At^fc4 diff --git a/worldedit-sponge/src/main/resources/com/sk89q/worldedit/sponge/adapter/impl/Sponge_1_12_Impl$1.class b/worldedit-sponge/src/main/resources/com/sk89q/worldedit/sponge/adapter/impl/Sponge_1_12_Impl$1.class deleted file mode 100644 index d3e8da1147a2079f78ee669b732c2cc4f0a03adc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1735 zcmbu9ZExFD6vzKJP3t6e+pO(a8Bc|puH|7~x^{FAj5!ZYv&M0;(*-CfxQ^9&bM4?b zn|Ox=9{>qH01`;Ng>6Czp$Q3I@d^n(01|uvBzTQDH+QQm*o$dMiU0ncbM86k9$)*% zzrVQyU>R>QoO8l`wRdgx>^tg>F!DQY$BWfoHw<=N)$Z8c*o{9WSu`!A5E_p1_m5&{MR>Vy)Wd zC1gA;!k?jVvr=vuMp=d;Y|k>tO|4#UA2?13#{$D}v1XRmWjrS=&(jz#Z#AlQ%J`x% zout*4&X?bFoDz-#cdQ#`^T2UhIF=bkMQppcWl{1o!u}F1pcdLX8BN2`WtR#YB z`ujU>)Ud-NMXG{(Jl@%%+Xck=_{K9N}<+ z^MoS_E)q%!zCf5sP$kSCieBP;D13$Uq4-tK*<}5B&bfpyavn`s<18m!<~){gmGgMQ zmpM-)taHvMyvg}U!WQSrgs*U(8t|9&)@Ct{W0=GY<}gos0!vsSJp&D8(h4?Vkv8!* z9MTTD=#j>F5ATzHfDiEz>Bsm4pOSutFK~DwM)7 Zwn@{F==vu8c{?dmWv7mY-!QH2gvxcB^ z4H|1Qq@h%>emPeHpBuSZD;o2SCQb9888?%Ll}OgAuhF>~Q$u+kIaV*yP$4MGtP~8o z?UgD-m!r{`c_3~@t+`$!W%kAr;WHZ63vPB95bS;1`?P4dNlSabrZP=C zGx(NPy8GEG7p|w6I*l_tVaJ~e+WH(8Pb&}1D4#+xXv2soIADC2S&3o8ik{``{#>|P zwWt8M_F@uKIy6KDEo()rtFRi*2r4MXU?NP85^+Ht<#4BC}39QKrPY{{DW)>mOHP@Prp#*sC*h zy_30Ox&P;p_1#%)Y-{h_)1_iyX92*YHhmAiSI1NMKJwvsj9^b5HLc}a6r71ja465( zx#qmA!2}!ZC~=A*CqfSAi;#3&ICI@&B0WWcLwcGDik)tVwrZ+| z59s)y3I^A@HX3Jb95-SNp*XWt+#)XjF!Si};ZWb42GCNe)I+7X9ppa2p?hTYJ+ulOv8^c3ZvXZ)u)0@^!cS3!E`?<{5XE10?*<( zLDlMU4IgC!o-$Iy=6U8Yx-=d3C-GthUckrb!Ew8LV}^Ea_VD84_-QroXUOkW8g0110X(VZ0%V1rU>}6P-QD2

A@8J)Y9Ids>hS(i-!L`>aKmH^9vEuDd zSUWJ0Ns!@0xtLg1F3m`oBdl`2RP+K}xR~|A>e9kR>0F`oto(bqD%`a%*ceWltXFN1 z$R2D3VRt{ZcXU4kud=t}Lz8CQcZxgACQZkmvYV(_u_N=m&xpqpEZLc+eX1}uCSoQ> z_tuV_i(28SA!A0JRBG)DhgzGgioROKjC};plFS~+1w|)#Q27e}p&V8CN1|CG8Ho~i zz4&KUuj%-zpn185^7E?%X4w4;m0Ne*$<+U<6%9LB%J(@@>t%y3>!gw-RKDf8O1WQ<=WnT!o7K=pN7w>|C~%r%U)eEwx3Rh~jw#GqzLg_JuS)Z@+D^H%Txw;PIyS8_(ebEyU3N&r zvQ1i;SswIClS8KYtr*~(F+HP+PZz(6@PZXG!V7?S+^}O@T6Ni@Fs9(J?la29jmP3mE1}D^5?d=V zF>x~ssgl^``?{4FaMO=BYLwWgiUit>J)8E$B9-86#cBRJLl(2$vo2<_*nT^RYmcGJk zgPqG`CeIR0ctA+A6bQ8L@rQWizBNzwv=u=}dPv?;At&VF?8>&T4&IZ|{A)uL6U|96 zcxNh{n%R_BuPtiRhLw8A!*RFDR}nE4nNxy@yHyJLyQ6zmR(CIH9cbmv(FRp;-@exU zjqT@}@TRDQ$0=vwG_SHG&K}!d>fl$9W$1ha8EeqEFlXz1?aTG-G)-96_j7YseP za_}9nf7V7ARo%&~E|&0Y;pt06>~pWGMaGO|R29^t>cLzyNWdMQot`k0>7Gq?$&#H$ zkWCM)8&RhwR^RFGnxnJ4Q=B%(qNylp-IFcaDTAJcF7+{zm`#Sw0sA204aOPLeK8}I zGE>;jIM)x&d#{OeX>d{!$yNLerrg;PxFgTB+ja8%R zj$@gQ@pQ*S>5e4^wmamq4D7=@@UYq#`w+s(w3u7S3}he0+)puku~qu`Z%IGymH~=v zU?R=lC#lyGuI+003^tRaQ}Z}I+;|0qu)Us!=0yyQ*Ldb}Rz2p_aYrKl5 zn&unC9EMr}GAD*@u>#}uJ1TUIxW{YXio%nwIAUyIY*Lyk3>G=WnC{1os zwB!)HGK7tC7=Af|PPw0~{}A4vX8khtOd-*eX8jq(`X&766+Ew)ukl>LPYLg?HmkRn z1XuBMdrO*YO6Kv&mu`H8{C|r4Us}$86Dj^8K4VMLla-{0l6=;dqzCg@;J#k8I+EDj zI?8^4+>TMn$IvPd@;{+*D*L!RMh@4b=-b$&VOYZpZ_*b9mvP0BLQ1)p#yMk)SRALr z1=)_V(eSSfHO%8zui{nO_vA#9hE*d+#vr)&QOM z2DjHV6loaHu&CiF4cCNj`zAJjlNu>fWelB{!7ZnUFyMh zGuuOKCR?2C9NUv@PqRJ8HqZ7&wlA}NmF*3->s+dQYCRiKLD6#BBECNES-`(vT*T|@ zBUyv4d?IAbP#+MHD65vbMcriDe zm%A3^ZihSad*h-glyJ;#L!h)|3@RONj|K&BCqIHo0mvoeDx05}Dm6d7bRW&v1 zbX_YeTVF1ZlNp7Gf6rf${c?|ET|7@bR^Aq9Xk3s3%9me5Q;jF>>y%4HLi4-~upMN( zcR_;la`;(jo|oXsacKu|0vQ<*aAZ`Za(XPp%{UT3rm4^)Xv5m?Dd@7eLrzi?+EXC%KORNqzF;L0v_+F3mhA-?bsVR94 zyB4uwTtO6JNJ0#K38&u(r!rYnvLL5v!#jwxZsQA*Sh8x5!$VeLD;=gKNH{5u0e->` z*kb*;C{`XBl_Q*6%5aWd`?6B@Wu@%NO4*Q=a=Rm? zEn5|(g*->uo~LXdrED+I=@c{+vG1My-N6|})Ib@ZI$?a>{&H;KcO}0W6+mU#cL7G6 Bn;HNB diff --git a/worldedit-sponge/src/main/resources/com/sk89q/worldedit/sponge/adapter/impl/Sponge_1_12_Impl$TileEntityBaseBlock.class b/worldedit-sponge/src/main/resources/com/sk89q/worldedit/sponge/adapter/impl/Sponge_1_12_Impl$TileEntityBaseBlock.class deleted file mode 100644 index 2a5b4e62a67f42cf2c44b97f6a782fbecdac0690..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1483 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 diff --git a/worldedit-sponge/src/main/resources/com/sk89q/worldedit/sponge/adapter/impl/Sponge_Dev_Impl$1.class b/worldedit-sponge/src/main/resources/com/sk89q/worldedit/sponge/adapter/impl/Sponge_Dev_Impl$1.class deleted file mode 100644 index dcd0e9bb1ddc925972e37c0109b44d5974afcf6d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1764 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 From e4854338051e88938aea58f81cfff9bc53b01931 Mon Sep 17 00:00:00 2001 From: JOO200 Date: Sun, 30 Jan 2022 05:39:06 +0100 Subject: [PATCH 07/55] Fix legacy error message output for WorldGuard commands (#2023) --- .../internal/command/exception/ExceptionConverterHelper.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/worldedit-core/src/main/java/com/sk89q/worldedit/internal/command/exception/ExceptionConverterHelper.java b/worldedit-core/src/main/java/com/sk89q/worldedit/internal/command/exception/ExceptionConverterHelper.java index bab3a3936e..dd48e0f0fa 100644 --- a/worldedit-core/src/main/java/com/sk89q/worldedit/internal/command/exception/ExceptionConverterHelper.java +++ b/worldedit-core/src/main/java/com/sk89q/worldedit/internal/command/exception/ExceptionConverterHelper.java @@ -78,7 +78,7 @@ public void convert(Throwable t) throws CommandException { throw (CommandException) e.getCause(); } if (e.getCause() instanceof com.sk89q.minecraft.util.commands.CommandException) { - throw new CommandException(e.getCause(), ImmutableList.of()); + throw new CommandExecutionException(e.getCause(), ImmutableList.of()); } throw new CommandExecutionException(e, ImmutableList.of()); } catch (IllegalArgumentException | IllegalAccessException e) { From e118e3dfb2d8bb3e1b8d1db6eded376d3b9338d4 Mon Sep 17 00:00:00 2001 From: Maddy Miller Date: Mon, 31 Jan 2022 05:00:55 +1000 Subject: [PATCH 08/55] Fix regen on newer Forge due to removed method (#2021) * Fix regen on newer Forge due to removed method * Use saveWithFullMetadata --- worldedit-forge/build.gradle.kts | 2 +- .../src/main/java/com/sk89q/worldedit/forge/ForgeWorld.java | 5 +---- 2 files changed, 2 insertions(+), 5 deletions(-) diff --git a/worldedit-forge/build.gradle.kts b/worldedit-forge/build.gradle.kts index 16af6d410a..e312655b81 100644 --- a/worldedit-forge/build.gradle.kts +++ b/worldedit-forge/build.gradle.kts @@ -16,7 +16,7 @@ val minecraftVersion = "1.18.1" val nextMajorMinecraftVersion: String = minecraftVersion.split('.').let { (useless, major) -> "$useless.${major.toInt() + 1}" } -val forgeVersion = "39.0.0" +val forgeVersion = "39.0.63" val apiClasspath = configurations.create("apiClasspath") { isCanBeResolved = true diff --git a/worldedit-forge/src/main/java/com/sk89q/worldedit/forge/ForgeWorld.java b/worldedit-forge/src/main/java/com/sk89q/worldedit/forge/ForgeWorld.java index 4b14d67029..221b3daae1 100644 --- a/worldedit-forge/src/main/java/com/sk89q/worldedit/forge/ForgeWorld.java +++ b/worldedit-forge/src/main/java/com/sk89q/worldedit/forge/ForgeWorld.java @@ -41,7 +41,6 @@ import com.sk89q.worldedit.forge.internal.NBTConverter; import com.sk89q.worldedit.forge.internal.TileEntityUtils; import com.sk89q.worldedit.internal.Constants; -import com.sk89q.worldedit.internal.util.BiomeMath; import com.sk89q.worldedit.math.BlockVector2; import com.sk89q.worldedit.math.BlockVector3; import com.sk89q.worldedit.math.Vector3; @@ -427,9 +426,7 @@ private void regenForWorld(Region region, Extent extent, ServerLevel serverWorld BlockStateHolder state = ForgeAdapter.adapt(chunk.getBlockState(pos)); BlockEntity blockEntity = chunk.getBlockEntity(pos); if (blockEntity != null) { - net.minecraft.nbt.CompoundTag tag = new net.minecraft.nbt.CompoundTag(); - blockEntity.save(tag); - state = state.toBaseBlock(NBTConverter.fromNative(tag)); + state = state.toBaseBlock(NBTConverter.fromNative(blockEntity.saveWithFullMetadata())); } extent.setBlock(vec, state.toBaseBlock()); From ab31481e58ed370a94151705688bec90db865641 Mon Sep 17 00:00:00 2001 From: Octavia Togami Date: Sun, 30 Jan 2022 12:02:03 -0800 Subject: [PATCH 09/55] Use Chunk#getNoiseBiome instead of biome container (#2025) This is just way easier, and not buggy! Fixes #2012 --- .../bukkit/adapter/impl/v1_18_R1/PaperweightAdapter.java | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/worldedit-bukkit/adapters/adapter-1.18/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/v1_18_R1/PaperweightAdapter.java b/worldedit-bukkit/adapters/adapter-1.18/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/v1_18_R1/PaperweightAdapter.java index 2fe91b2192..9f9f928519 100644 --- a/worldedit-bukkit/adapters/adapter-1.18/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/v1_18_R1/PaperweightAdapter.java +++ b/worldedit-bukkit/adapters/adapter-1.18/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/v1_18_R1/PaperweightAdapter.java @@ -738,9 +738,7 @@ private void regenForWorld(Region region, Extent extent, ServerLevel serverWorld } extent.setBlock(vec, state.toBaseBlock()); if (options.shouldRegenBiomes()) { - PalettedContainer biomeIndex = chunk.getSection(chunk.getSectionIndex(vec.getBlockY())) - .getBiomes(); - Biome origBiome = biomeIndex.get(vec.getBlockX(), vec.getBlockY(), vec.getBlockZ()); + Biome origBiome = chunk.getNoiseBiome(vec.getX(), vec.getY(), vec.getZ()); BiomeType adaptedBiome = adapt(serverWorld, origBiome); if (adaptedBiome != null) { extent.setBiome(vec, adaptedBiome); From e20e013309fa86608f3b44c3f555ecb88fdedc07 Mon Sep 17 00:00:00 2001 From: Madeline Miller Date: Mon, 31 Jan 2022 21:58:11 +1000 Subject: [PATCH 10/55] Release 7.2.9 --- CHANGELOG.txt | 11 +++++++++++ gradle.properties | 2 +- 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.txt b/CHANGELOG.txt index 26249a5786..5333624394 100644 --- a/CHANGELOG.txt +++ b/CHANGELOG.txt @@ -1,3 +1,14 @@ +7.2.9 +* [Forge] Add support for the UPDATE side effect +* [Forge] Fixed regen on recent Forge builds +* [Fabric] Fixed regen outside of Overworld +* [Sponge] Update to Sponge API8 (MC 1.16.5) +* [Bukkit] Fixed regen when biomes are used +* Fixed snapshots in 1.18 +* Fixed smooth functions below y=0 +* Tweak command usage label correctness for Bukkit API usage +* Fixed legacy error message output for plugins utilising our legacy APIs (Eg, WorldGuard and CraftBook) + 7.2.8 - Update to 1.18.1 - Fixed issues with certain imports in craftscripts diff --git a/gradle.properties b/gradle.properties index 1005ed9d84..0f47240921 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,5 +1,5 @@ group=com.sk89q.worldedit -version=7.2.9-SNAPSHOT +version=7.2.9 org.gradle.jvmargs=-Xmx1512M org.gradle.parallel=true From 86277d1e6200eeaa5910d1d7cde5a5e0e32b5eb2 Mon Sep 17 00:00:00 2001 From: Madeline Miller Date: Mon, 31 Jan 2022 22:14:41 +1000 Subject: [PATCH 11/55] Back to SNAPSHOT for continued development --- gradle.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle.properties b/gradle.properties index 0f47240921..65780b6c1b 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,5 +1,5 @@ group=com.sk89q.worldedit -version=7.2.9 +version=7.2.10-SNAPSHOT org.gradle.jvmargs=-Xmx1512M org.gradle.parallel=true From 8929ad205b8071ba53d2766cedd8b62812553625 Mon Sep 17 00:00:00 2001 From: Octavia Togami Date: Wed, 2 Feb 2022 17:53:14 -0800 Subject: [PATCH 12/55] Fix Forge max height limit (#2028) * Fix Forge max height limit Because this method was silently renamed, we've been using the wrong one for a bit. * forge team plz update special source for my fix --- buildSrc/build.gradle.kts | 2 +- .../src/main/java/com/sk89q/worldedit/forge/ForgeWorld.java | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/buildSrc/build.gradle.kts b/buildSrc/build.gradle.kts index c9b966f315..22d4ec513c 100644 --- a/buildSrc/build.gradle.kts +++ b/buildSrc/build.gradle.kts @@ -52,7 +52,7 @@ dependencies { implementation("org.jfrog.buildinfo:build-info-extractor-gradle:4.24.23") implementation("org.spongepowered:spongegradle-plugin-development:2.0.1") implementation("org.spongepowered:vanillagradle:0.1") - implementation("net.minecraftforge.gradle:ForgeGradle:5.1.26") + implementation("net.minecraftforge.gradle:ForgeGradle:5.1.27") implementation("net.fabricmc:fabric-loom:$loomVersion") implementation("net.fabricmc:sponge-mixin:$mixinVersion") implementation("org.enginehub.gradle:gradle-codecov-plugin:0.1.0") diff --git a/worldedit-forge/src/main/java/com/sk89q/worldedit/forge/ForgeWorld.java b/worldedit-forge/src/main/java/com/sk89q/worldedit/forge/ForgeWorld.java index 221b3daae1..2733c9006e 100644 --- a/worldedit-forge/src/main/java/com/sk89q/worldedit/forge/ForgeWorld.java +++ b/worldedit-forge/src/main/java/com/sk89q/worldedit/forge/ForgeWorld.java @@ -568,7 +568,7 @@ public int getMinY() { @Override public int getMaxY() { - return getWorld().getHeight() - 1; + return getWorld().getMaxBuildHeight() - 1; } @Override From 17b9f00501f1563d75773a220c8c4ddb218b5697 Mon Sep 17 00:00:00 2001 From: Octavia Togami Date: Sat, 19 Feb 2022 20:02:02 -0800 Subject: [PATCH 13/55] Move tinyurls to ehub.to (#2033) --- .../java/com/sk89q/worldedit/command/GenerationCommands.java | 4 ++-- .../main/java/com/sk89q/worldedit/command/RegionCommands.java | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/worldedit-core/src/main/java/com/sk89q/worldedit/command/GenerationCommands.java b/worldedit-core/src/main/java/com/sk89q/worldedit/command/GenerationCommands.java index e0c858f487..c1f769d859 100644 --- a/worldedit-core/src/main/java/com/sk89q/worldedit/command/GenerationCommands.java +++ b/worldedit-core/src/main/java/com/sk89q/worldedit/command/GenerationCommands.java @@ -276,7 +276,7 @@ public int pyramid(Actor actor, LocalSession session, EditSession editSession, name = "/generate", aliases = { "/gen", "/g" }, desc = "Generates a shape according to a formula.", - descFooter = "See also https://tinyurl.com/weexpr." + descFooter = "For details, see https://ehub.to/we/expr" ) @CommandPermissions("worldedit.generation.shape") @Logging(ALL) @@ -345,7 +345,7 @@ public int generate(Actor actor, LocalSession session, EditSession editSession, name = "/generatebiome", aliases = { "/genbiome", "/gb" }, desc = "Sets biome according to a formula.", - descFooter = "See also https://tinyurl.com/weexpr." + descFooter = "For details, see https://ehub.to/we/expr" ) @CommandPermissions("worldedit.generation.shape.biome") @Logging(ALL) diff --git a/worldedit-core/src/main/java/com/sk89q/worldedit/command/RegionCommands.java b/worldedit-core/src/main/java/com/sk89q/worldedit/command/RegionCommands.java index 5563b33d59..410cc5d9e1 100644 --- a/worldedit-core/src/main/java/com/sk89q/worldedit/command/RegionCommands.java +++ b/worldedit-core/src/main/java/com/sk89q/worldedit/command/RegionCommands.java @@ -444,7 +444,7 @@ void regenerate(Actor actor, World world, LocalSession session, EditSession edit desc = "Deforms a selected region with an expression", descFooter = "The expression is executed for each block and is expected\n" + "to modify the variables x, y and z to point to a new block\n" - + "to fetch. See also https://tinyurl.com/weexpr" + + "to fetch. For details, see https://ehub.to/we/expr" ) @CommandPermissions("worldedit.region.deform") @Logging(ALL) From 76ec878eb20677ea5507f96ceacb73487b19026f Mon Sep 17 00:00:00 2001 From: Maddy Miller Date: Sun, 20 Feb 2022 15:12:05 +1000 Subject: [PATCH 14/55] Allow biome commands to be used from non-player actors (#2034) --- .../worldedit/command/BiomeCommands.java | 52 ++++++++++++------- .../src/main/resources/lang/strings.json | 3 ++ 2 files changed, 36 insertions(+), 19 deletions(-) diff --git a/worldedit-core/src/main/java/com/sk89q/worldedit/command/BiomeCommands.java b/worldedit-core/src/main/java/com/sk89q/worldedit/command/BiomeCommands.java index 0212884a0e..a42f88f24d 100644 --- a/worldedit-core/src/main/java/com/sk89q/worldedit/command/BiomeCommands.java +++ b/worldedit-core/src/main/java/com/sk89q/worldedit/command/BiomeCommands.java @@ -30,6 +30,7 @@ import com.sk89q.worldedit.entity.Player; import com.sk89q.worldedit.extension.platform.Actor; import com.sk89q.worldedit.extension.platform.Capability; +import com.sk89q.worldedit.extension.platform.Locatable; import com.sk89q.worldedit.function.RegionFunction; import com.sk89q.worldedit.function.RegionMaskingFilter; import com.sk89q.worldedit.function.biome.BiomeReplace; @@ -106,7 +107,7 @@ public void biomeList(Actor actor, descFooter = "By default, uses all blocks in your selection." ) @CommandPermissions("worldedit.biome.info") - public void biomeInfo(Player player, LocalSession session, + public void biomeInfo(Actor actor, World world, LocalSession session, @Switch(name = 't', desc = "Use the block you are looking at.") boolean useLineOfSight, @Switch(name = 'p', desc = "Use the block you are currently in.") @@ -117,23 +118,32 @@ public void biomeInfo(Player player, LocalSession session, String messageKey; if (useLineOfSight) { - Location blockPosition = player.getBlockTrace(300); - if (blockPosition == null) { - player.printError(TranslatableComponent.of("worldedit.raytrace.noblock")); + if (actor instanceof Player) { + Location blockPosition = ((Player) actor).getBlockTrace(300); + if (blockPosition == null) { + actor.printError(TranslatableComponent.of("worldedit.raytrace.noblock")); + return; + } + + BiomeType biome = world.getBiome(blockPosition.toVector().toBlockPoint()); + biomes.add(biome); + + messageKey = "worldedit.biomeinfo.lineofsight"; + } else { + actor.printError(TranslatableComponent.of("worldedit.raytrace.require-player")); return; } - - BiomeType biome = player.getWorld().getBiome(blockPosition.toVector().toBlockPoint()); - biomes.add(biome); - - messageKey = "worldedit.biomeinfo.lineofsight"; } else if (usePosition) { - BiomeType biome = player.getWorld().getBiome(player.getLocation().toVector().toBlockPoint()); - biomes.add(biome); + if (actor instanceof Locatable) { + BiomeType biome = world.getBiome(((Locatable) actor).getLocation().toVector().toBlockPoint()); + biomes.add(biome); - messageKey = "worldedit.biomeinfo.position"; + messageKey = "worldedit.biomeinfo.position"; + } else { + actor.printError(TranslatableComponent.of("worldedit.biomeinfo.not-locatable")); + return; + } } else { - World world = player.getWorld(); Region region = session.getSelection(world); for (BlockVector3 pt : region) { @@ -148,7 +158,7 @@ public void biomeInfo(Player player, LocalSession session, HoverEvent.showText(TextComponent.of(biome.getId())) ) ).collect(Collectors.toList()); - player.printInfo(TranslatableComponent.of(messageKey, TextUtils.join(components, TextComponent.of(", ")))); + actor.printInfo(TranslatableComponent.of(messageKey, TextUtils.join(components, TextComponent.of(", ")))); } @Command( @@ -158,17 +168,21 @@ public void biomeInfo(Player player, LocalSession session, ) @Logging(REGION) @CommandPermissions("worldedit.biome.set") - public void setBiome(Player player, LocalSession session, EditSession editSession, + public void setBiome(Actor actor, World world, LocalSession session, EditSession editSession, @Arg(desc = "Biome type.") BiomeType target, @Switch(name = 'p', desc = "Use your current position") boolean atPosition) throws WorldEditException { - World world = player.getWorld(); Region region; Mask mask = editSession.getMask(); if (atPosition) { - final BlockVector3 pos = player.getLocation().toVector().toBlockPoint(); - region = new CuboidRegion(pos, pos); + if (actor instanceof Locatable) { + final BlockVector3 pos = ((Locatable) actor).getLocation().toVector().toBlockPoint(); + region = new CuboidRegion(pos, pos); + } else { + actor.printError(TranslatableComponent.of("worldedit.setbiome.not-locatable")); + return; + } } else { region = session.getSelection(world); } @@ -180,7 +194,7 @@ public void setBiome(Player player, LocalSession session, EditSession editSessio RegionVisitor visitor = new RegionVisitor(region, replace); Operations.completeLegacy(visitor); - player.printInfo(TranslatableComponent.of( + actor.printInfo(TranslatableComponent.of( "worldedit.setbiome.changed", TextComponent.of(visitor.getAffected()) ) diff --git a/worldedit-core/src/main/resources/lang/strings.json b/worldedit-core/src/main/resources/lang/strings.json index 9a12cf1847..e1f7e210e7 100644 --- a/worldedit-core/src/main/resources/lang/strings.json +++ b/worldedit-core/src/main/resources/lang/strings.json @@ -6,6 +6,7 @@ "worldedit.biomeinfo.lineofsight": "Biomes at line of sight point: {0}", "worldedit.biomeinfo.position": "Biomes at your position: {0}", "worldedit.biomeinfo.selection": "Biomes in your selection: {0}", + "worldedit.biomeinfo.not-locatable": "Command sender must be present in the world to use the -p flag.", "worldedit.brush.radius-too-large": "Maximum allowed brush radius: {0}", "worldedit.brush.apply.description": "Apply brush, apply a function to every block", @@ -33,6 +34,7 @@ "worldedit.setbiome.changed": "Biomes were changed for approximately {0} blocks.", "worldedit.setbiome.warning": "You may have to re-join your game (or close and re-open your world) to see changes.", + "worldedit.setbiome.not-locatable": "Command sender must be present in the world to use the -p flag.", "worldedit.drawsel.disabled": "Server CUI disabled.", "worldedit.drawsel.enabled": "Server CUI enabled. This only supports cuboid regions, with a maximum size of {0}x{1}x{2}.", @@ -77,6 +79,7 @@ "worldedit.clearhistory.cleared": "History cleared.", "worldedit.raytrace.noblock": "No block in sight!", + "worldedit.raytrace.require-player": "Raytracing commands require a player!", "worldedit.restore.not-configured": "Snapshot/backup restore is not configured.", "worldedit.restore.not-available": "That snapshot does not exist or is not available.", From e2ab12c375a12c0c4787af8e7a1c462ee1f77c62 Mon Sep 17 00:00:00 2001 From: wizjany Date: Mon, 28 Feb 2022 09:21:01 -0500 Subject: [PATCH 15/55] Change the class source validator to use classloaders for detection. (#2039) Since each plugin now has a semi-isolated classloader, checking the codesource of our classes will always give our own plugin back. Instead, we iterate through every other plugin and ask *its* classloader to load the class. If the loaded class lives in a different classloader than our own, we know it (or someone else) has a different version. --- .../bukkit/util/ClassSourceValidator.java | 40 +++++++++++++------ 1 file changed, 27 insertions(+), 13 deletions(-) diff --git a/worldedit-bukkit/src/main/java/com/sk89q/bukkit/util/ClassSourceValidator.java b/worldedit-bukkit/src/main/java/com/sk89q/bukkit/util/ClassSourceValidator.java index e0789e3e7a..1e3bf72c43 100644 --- a/worldedit-bukkit/src/main/java/com/sk89q/bukkit/util/ClassSourceValidator.java +++ b/worldedit-bukkit/src/main/java/com/sk89q/bukkit/util/ClassSourceValidator.java @@ -23,7 +23,9 @@ import com.google.common.collect.ImmutableMap; import com.sk89q.worldedit.internal.util.LogManagerCompat; import org.apache.logging.log4j.Logger; +import org.bukkit.Bukkit; import org.bukkit.plugin.Plugin; +import org.bukkit.plugin.java.PluginClassLoader; import java.security.CodeSource; import java.util.HashMap; @@ -45,7 +47,7 @@ public class ClassSourceValidator { private final Plugin plugin; @Nullable - private final CodeSource expectedCodeSource; + private final ClassLoader expectedClassLoader; /** * Create a new instance. @@ -55,7 +57,7 @@ public class ClassSourceValidator { public ClassSourceValidator(Plugin plugin) { checkNotNull(plugin, "plugin"); this.plugin = plugin; - this.expectedCodeSource = plugin.getClass().getProtectionDomain().getCodeSource(); + this.expectedClassLoader = plugin.getClass().getClassLoader(); } /** @@ -64,19 +66,29 @@ public ClassSourceValidator(Plugin plugin) { * @param classes A list of classes to check * @return The results */ - public Map, CodeSource> findMismatches(List> classes) { + public Map, Plugin> findMismatches(List> classes) { checkNotNull(classes, "classes"); - if (expectedCodeSource == null) { + if (expectedClassLoader == null) { return ImmutableMap.of(); } - Map, CodeSource> mismatches = new HashMap<>(); + Map, Plugin> mismatches = new HashMap<>(); - for (Class testClass : classes) { - CodeSource testSource = testClass.getProtectionDomain().getCodeSource(); - if (!expectedCodeSource.equals(testSource)) { - mismatches.put(testClass, testSource); + for (Plugin target : Bukkit.getPluginManager().getPlugins()) { + if (target == plugin) { + continue; + } + ClassLoader targetLoader = target.getClass().getClassLoader(); + for (Class testClass : classes) { + ClassLoader testSource = null; + try { + testSource = targetLoader.loadClass(testClass.getName()).getClassLoader(); + } catch (ClassNotFoundException ignored) { + } + if (testSource != null && testSource != expectedClassLoader) { + mismatches.putIfAbsent(testClass, testSource == targetLoader ? target : null); + } } } @@ -94,7 +106,7 @@ public void reportMismatches(List> classes) { if (Boolean.getBoolean("enginehub.disable.class.source.validation")) { return; } - Map, CodeSource> mismatches = findMismatches(classes); + Map, Plugin> mismatches = findMismatches(classes); if (mismatches.isEmpty()) { return; @@ -117,9 +129,11 @@ public void reportMismatches(List> classes) { builder.append("**\n"); builder.append("** Here are some files that have been overridden:\n"); builder.append("** \n"); - for (Map.Entry, CodeSource> entry : mismatches.entrySet()) { - CodeSource codeSource = entry.getValue(); - String url = codeSource != null ? codeSource.getLocation().toExternalForm() : "(unknown)"; + for (Map.Entry, Plugin> entry : mismatches.entrySet()) { + Plugin badPlugin = entry.getValue(); + String url = badPlugin == null + ? "(unknown)" + : badPlugin.getName() + " (" + badPlugin.getClass().getProtectionDomain().getCodeSource().getLocation() + ")"; builder.append("** '").append(entry.getKey().getSimpleName()).append("' came from '").append(url).append("'\n"); } builder.append("**\n"); From eac5b51b0f127590938cc4fd33907a92021963bb Mon Sep 17 00:00:00 2001 From: wizjany Date: Wed, 2 Mar 2022 12:20:28 -0500 Subject: [PATCH 16/55] Play dirty because bukkit classloading is bad. (#2043) * Play dirty because bukkit classloading is bad. Fixes #2042. * Make logging more Bukkit-friendly. * Checkstyle --- .../bukkit/util/ClassSourceValidator.java | 40 ++++++++++++++----- 1 file changed, 29 insertions(+), 11 deletions(-) diff --git a/worldedit-bukkit/src/main/java/com/sk89q/bukkit/util/ClassSourceValidator.java b/worldedit-bukkit/src/main/java/com/sk89q/bukkit/util/ClassSourceValidator.java index 1e3bf72c43..c4d76d9fd4 100644 --- a/worldedit-bukkit/src/main/java/com/sk89q/bukkit/util/ClassSourceValidator.java +++ b/worldedit-bukkit/src/main/java/com/sk89q/bukkit/util/ClassSourceValidator.java @@ -21,13 +21,12 @@ import com.google.common.base.Strings; import com.google.common.collect.ImmutableMap; -import com.sk89q.worldedit.internal.util.LogManagerCompat; -import org.apache.logging.log4j.Logger; import org.bukkit.Bukkit; import org.bukkit.plugin.Plugin; import org.bukkit.plugin.java.PluginClassLoader; -import java.security.CodeSource; +import java.lang.reflect.InvocationTargetException; +import java.lang.reflect.Method; import java.util.HashMap; import java.util.List; import java.util.Locale; @@ -42,8 +41,20 @@ */ public class ClassSourceValidator { - private static final Logger LOGGER = LogManagerCompat.getLogger(); private static final String SEPARATOR_LINE = Strings.repeat("*", 46); + private static final Method loadClass; + + static { + Method tmp; + try { + tmp = PluginClassLoader.class.getDeclaredMethod("loadClass0", + String.class, boolean.class, boolean.class, boolean.class); + tmp.setAccessible(true); + } catch (NoSuchMethodException e) { + tmp = null; + } + loadClass = tmp; + } private final Plugin plugin; @Nullable @@ -58,6 +69,9 @@ public ClassSourceValidator(Plugin plugin) { checkNotNull(plugin, "plugin"); this.plugin = plugin; this.expectedClassLoader = plugin.getClass().getClassLoader(); + if (loadClass == null) { + plugin.getLogger().info("Bukkit PluginClassLoader seems to have changed. Class source validation will be skipped."); + } } /** @@ -69,7 +83,7 @@ public ClassSourceValidator(Plugin plugin) { public Map, Plugin> findMismatches(List> classes) { checkNotNull(classes, "classes"); - if (expectedClassLoader == null) { + if (expectedClassLoader == null || loadClass == null) { return ImmutableMap.of(); } @@ -80,14 +94,18 @@ public Map, Plugin> findMismatches(List> classes) { continue; } ClassLoader targetLoader = target.getClass().getClassLoader(); + if (!(targetLoader instanceof PluginClassLoader)) { + continue; + } for (Class testClass : classes) { - ClassLoader testSource = null; + Class targetClass; try { - testSource = targetLoader.loadClass(testClass.getName()).getClassLoader(); - } catch (ClassNotFoundException ignored) { + targetClass = (Class) loadClass.invoke(targetLoader, testClass.getName(), false, false, false); + } catch (IllegalAccessException | InvocationTargetException ignored) { + continue; } - if (testSource != null && testSource != expectedClassLoader) { - mismatches.putIfAbsent(testClass, testSource == targetLoader ? target : null); + if (targetClass.getClassLoader() != expectedClassLoader) { + mismatches.putIfAbsent(testClass, targetClass.getClassLoader() == targetLoader ? target : null); } } } @@ -140,6 +158,6 @@ public void reportMismatches(List> classes) { builder.append("** Please report this to the plugins' developers.\n"); builder.append(SEPARATOR_LINE).append("\n"); - LOGGER.error(builder.toString()); + plugin.getLogger().severe(builder.toString()); } } From 30e1601489b3ed4a416a21de0595f444dad2c945 Mon Sep 17 00:00:00 2001 From: Maddy Miller Date: Sat, 5 Mar 2022 13:32:03 +1000 Subject: [PATCH 17/55] Apply update flag on later change (#2037) * Apply update flag on later change * Checkstyle * Move entry point for UPDATE --- .../impl/v1_17_R1_2/PaperweightWorldNativeAccess.java | 6 ++++++ .../impl/v1_18_R1/PaperweightWorldNativeAccess.java | 6 ++++++ .../sk89q/worldedit/internal/wna/WorldNativeAccess.java | 7 +++++++ .../worldedit/fabric/internal/FabricWorldNativeAccess.java | 6 ++++++ .../worldedit/forge/internal/ForgeWorldNativeAccess.java | 6 ++++++ .../worldedit/sponge/internal/SpongeWorldNativeAccess.java | 6 ++++++ 6 files changed, 37 insertions(+) diff --git a/worldedit-bukkit/adapters/adapter-1.17.1/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/v1_17_R1_2/PaperweightWorldNativeAccess.java b/worldedit-bukkit/adapters/adapter-1.17.1/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/v1_17_R1_2/PaperweightWorldNativeAccess.java index d6e41920b1..08a0e95af2 100644 --- a/worldedit-bukkit/adapters/adapter-1.17.1/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/v1_17_R1_2/PaperweightWorldNativeAccess.java +++ b/worldedit-bukkit/adapters/adapter-1.17.1/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/v1_17_R1_2/PaperweightWorldNativeAccess.java @@ -153,6 +153,12 @@ public void notifyNeighbors(BlockPos pos, net.minecraft.world.level.block.state. } } + @Override + public void updateBlock(BlockPos pos, net.minecraft.world.level.block.state.BlockState oldState, net.minecraft.world.level.block.state.BlockState newState) { + ServerLevel world = getWorld(); + newState.onPlace(world, pos, oldState, false); + } + private void fireNeighborChanged(BlockPos pos, ServerLevel world, Block block, BlockPos neighborPos) { world.getBlockState(neighborPos).neighborChanged(world, neighborPos, block, pos, false); } diff --git a/worldedit-bukkit/adapters/adapter-1.18/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/v1_18_R1/PaperweightWorldNativeAccess.java b/worldedit-bukkit/adapters/adapter-1.18/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/v1_18_R1/PaperweightWorldNativeAccess.java index 276defab76..4401143606 100644 --- a/worldedit-bukkit/adapters/adapter-1.18/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/v1_18_R1/PaperweightWorldNativeAccess.java +++ b/worldedit-bukkit/adapters/adapter-1.18/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/v1_18_R1/PaperweightWorldNativeAccess.java @@ -153,6 +153,12 @@ public void notifyNeighbors(BlockPos pos, net.minecraft.world.level.block.state. } } + @Override + public void updateBlock(BlockPos pos, net.minecraft.world.level.block.state.BlockState oldState, net.minecraft.world.level.block.state.BlockState newState) { + ServerLevel world = getWorld(); + newState.onPlace(world, pos, oldState, false); + } + private void fireNeighborChanged(BlockPos pos, ServerLevel world, Block block, BlockPos neighborPos) { world.getBlockState(neighborPos).neighborChanged(world, neighborPos, block, pos, false); } diff --git a/worldedit-core/src/main/java/com/sk89q/worldedit/internal/wna/WorldNativeAccess.java b/worldedit-core/src/main/java/com/sk89q/worldedit/internal/wna/WorldNativeAccess.java index 0ed7f04cda..7895edb5a9 100644 --- a/worldedit-core/src/main/java/com/sk89q/worldedit/internal/wna/WorldNativeAccess.java +++ b/worldedit-core/src/main/java/com/sk89q/worldedit/internal/wna/WorldNativeAccess.java @@ -97,6 +97,10 @@ default void applySideEffects(BlockVector3 position, BlockState previousType, Si NBS oldData = toNative(previousType); NBS newData = getBlockState(chunk, pos); + if (sideEffectSet.shouldApply(SideEffect.UPDATE)) { + updateBlock(pos, oldData, newData); + } + if (sideEffectSet.getState(SideEffect.LIGHTING) == SideEffect.State.ON) { updateLightingForBlock(pos); } @@ -146,6 +150,9 @@ default void setCurrentSideEffectSet(SideEffectSet sideEffectSet) { void notifyNeighbors(NP pos, NBS oldState, NBS newState); + default void updateBlock(NP pos, NBS oldState, NBS newState) { + } + void updateNeighbors(NP pos, NBS oldState, NBS newState, int recursionLimit); void onBlockStateChange(NP pos, NBS oldState, NBS newState); diff --git a/worldedit-fabric/src/main/java/com/sk89q/worldedit/fabric/internal/FabricWorldNativeAccess.java b/worldedit-fabric/src/main/java/com/sk89q/worldedit/fabric/internal/FabricWorldNativeAccess.java index 2719a9a7e0..9783f9346b 100644 --- a/worldedit-fabric/src/main/java/com/sk89q/worldedit/fabric/internal/FabricWorldNativeAccess.java +++ b/worldedit-fabric/src/main/java/com/sk89q/worldedit/fabric/internal/FabricWorldNativeAccess.java @@ -141,6 +141,12 @@ public void notifyNeighbors(BlockPos pos, BlockState oldState, BlockState newSta } } + @Override + public void updateBlock(BlockPos pos, BlockState oldState, BlockState newState) { + Level world = getWorld(); + newState.onPlace(world, pos, oldState, false); + } + @Override public void updateNeighbors(BlockPos pos, BlockState oldState, BlockState newState, int recursionLimit) { Level world = getWorld(); diff --git a/worldedit-forge/src/main/java/com/sk89q/worldedit/forge/internal/ForgeWorldNativeAccess.java b/worldedit-forge/src/main/java/com/sk89q/worldedit/forge/internal/ForgeWorldNativeAccess.java index a59a823762..01d35efe0f 100644 --- a/worldedit-forge/src/main/java/com/sk89q/worldedit/forge/internal/ForgeWorldNativeAccess.java +++ b/worldedit-forge/src/main/java/com/sk89q/worldedit/forge/internal/ForgeWorldNativeAccess.java @@ -145,6 +145,12 @@ public void notifyNeighbors(BlockPos pos, BlockState oldState, BlockState newSta } } + @Override + public void updateBlock(BlockPos pos, BlockState oldState, BlockState newState) { + ServerLevel world = getWorld(); + newState.onPlace(world, pos, oldState, false); + } + @Override public void updateNeighbors(BlockPos pos, BlockState oldState, BlockState newState, int recursionLimit) { ServerLevel world = getWorld(); diff --git a/worldedit-sponge/src/main/java/com/sk89q/worldedit/sponge/internal/SpongeWorldNativeAccess.java b/worldedit-sponge/src/main/java/com/sk89q/worldedit/sponge/internal/SpongeWorldNativeAccess.java index fa7d1c04ff..556d789d7b 100644 --- a/worldedit-sponge/src/main/java/com/sk89q/worldedit/sponge/internal/SpongeWorldNativeAccess.java +++ b/worldedit-sponge/src/main/java/com/sk89q/worldedit/sponge/internal/SpongeWorldNativeAccess.java @@ -137,6 +137,12 @@ public void notifyNeighbors(BlockPos pos, BlockState oldState, BlockState newSta } } + @Override + public void updateBlock(BlockPos pos, BlockState oldState, BlockState newState) { + ServerLevel world = getWorld(); + newState.onPlace(world, pos, oldState, false); + } + @Override public void updateNeighbors(BlockPos pos, BlockState oldState, BlockState newState, int recursionLimit) { ServerLevel world = getWorld(); From ce13ed99799202245f7da4775adfbbfcc28631c7 Mon Sep 17 00:00:00 2001 From: Octavia Togami Date: Mon, 28 Feb 2022 22:55:50 -0800 Subject: [PATCH 18/55] [Fabric] 1.18.2 update --- .github/workflows/codeql-analysis.yml | 2 +- .github/workflows/gradle.yml | 4 +- buildSrc/build.gradle.kts | 12 ++-- buildSrc/src/main/kotlin/Versions.kt | 8 +-- gradle.properties | 4 +- worldedit-fabric/build.gradle.kts | 12 ++-- .../fabric/FabricBlockCategoryRegistry.java | 14 ++-- .../fabric/FabricItemCategoryRegistry.java | 14 ++-- .../sk89q/worldedit/fabric/FabricWorld.java | 69 ++++--------------- .../worldedit/fabric/FabricWorldEdit.java | 14 ++-- .../internal/ExtendedMinecraftServer.java | 3 - .../fabric/mixin/MixinMinecraftServer.java | 5 -- worldedit-forge/build.gradle.kts | 2 +- .../com/sk89q/worldedit/forge/ForgeWorld.java | 53 +------------- 14 files changed, 57 insertions(+), 159 deletions(-) diff --git a/.github/workflows/codeql-analysis.yml b/.github/workflows/codeql-analysis.yml index da9cf78a98..ffb7116ccc 100644 --- a/.github/workflows/codeql-analysis.yml +++ b/.github/workflows/codeql-analysis.yml @@ -27,7 +27,7 @@ jobs: - name: Checkout repository uses: actions/checkout@v2 - name: Set up JDK - uses: actions/setup-java@v2 + uses: actions/setup-java@v3 with: java-version: 17 cache: 'gradle' diff --git a/.github/workflows/gradle.yml b/.github/workflows/gradle.yml index a407c41379..af91d3efe6 100644 --- a/.github/workflows/gradle.yml +++ b/.github/workflows/gradle.yml @@ -13,14 +13,14 @@ jobs: steps: - uses: actions/checkout@v2 - name: Set up JDK - uses: actions/setup-java@v2 + uses: actions/setup-java@v3 with: java-version: 17 cache: 'gradle' distribution: 'temurin' - name: Build with Gradle run: ./gradlew build -s - - uses: actions/upload-artifact@v2.2.4 + - uses: actions/upload-artifact@v2 name: Archive Reports if: always() with: diff --git a/buildSrc/build.gradle.kts b/buildSrc/build.gradle.kts index 22d4ec513c..0a5f886b94 100644 --- a/buildSrc/build.gradle.kts +++ b/buildSrc/build.gradle.kts @@ -47,15 +47,15 @@ val mixinVersion: String = properties.getProperty("mixin.version") dependencies { implementation(gradleApi()) implementation("gradle.plugin.org.cadixdev.gradle:licenser:0.6.1") - implementation("org.ajoberstar.grgit:grgit-gradle:4.1.0") - implementation("gradle.plugin.com.github.johnrengelman:shadow:7.1.0") - implementation("org.jfrog.buildinfo:build-info-extractor-gradle:4.24.23") + implementation("org.ajoberstar.grgit:grgit-gradle:4.1.1") + implementation("gradle.plugin.com.github.johnrengelman:shadow:7.1.2") + implementation("org.jfrog.buildinfo:build-info-extractor-gradle:4.27.1") implementation("org.spongepowered:spongegradle-plugin-development:2.0.1") - implementation("org.spongepowered:vanillagradle:0.1") - implementation("net.minecraftforge.gradle:ForgeGradle:5.1.27") + implementation("org.spongepowered:vanillagradle:0.2") + implementation("net.minecraftforge.gradle:ForgeGradle:5.1.31") implementation("net.fabricmc:fabric-loom:$loomVersion") implementation("net.fabricmc:sponge-mixin:$mixinVersion") implementation("org.enginehub.gradle:gradle-codecov-plugin:0.1.0") - implementation("io.papermc.paperweight.userdev:io.papermc.paperweight.userdev.gradle.plugin:1.3.3") + implementation("io.papermc.paperweight.userdev:io.papermc.paperweight.userdev.gradle.plugin:1.3.4") implementation("org.spongepowered:mixingradle:0.7.32") } diff --git a/buildSrc/src/main/kotlin/Versions.kt b/buildSrc/src/main/kotlin/Versions.kt index b03007fcc4..ddf36aaea5 100644 --- a/buildSrc/src/main/kotlin/Versions.kt +++ b/buildSrc/src/main/kotlin/Versions.kt @@ -4,13 +4,13 @@ object Versions { const val TEXT = "3.0.4" const val TEXT_EXTRAS = "3.0.6" const val PISTON = "0.5.7" - const val AUTO_VALUE = "1.8.2" + const val AUTO_VALUE = "1.9" const val JUNIT = "5.8.1" - const val MOCKITO = "4.0.0" + const val MOCKITO = "4.3.1" const val FAST_UTIL = "8.5.6" const val GUAVA = "31.0.1-jre" - const val GSON = "2.8.8" - const val LOG4J = "2.15.0" + const val GSON = "2.8.9" + const val LOG4J = "2.17.0" } // Properties that need a project reference to resolve: diff --git a/gradle.properties b/gradle.properties index 65780b6c1b..d97f40a787 100644 --- a/gradle.properties +++ b/gradle.properties @@ -4,5 +4,5 @@ version=7.2.10-SNAPSHOT org.gradle.jvmargs=-Xmx1512M org.gradle.parallel=true -loom.version=0.10.55 -mixin.version=0.10.6+mixin.0.8.4 +loom.version=0.11.32 +mixin.version=0.11.2+mixin.0.8.5 diff --git a/worldedit-fabric/build.gradle.kts b/worldedit-fabric/build.gradle.kts index f7b1525882..2e55666a1f 100644 --- a/worldedit-fabric/build.gradle.kts +++ b/worldedit-fabric/build.gradle.kts @@ -21,8 +21,8 @@ applyShadowConfiguration() apply(plugin = "fabric-loom") apply(plugin = "java-library") -val minecraftVersion = "1.18.1" -val loaderVersion = "0.12.9" +val minecraftVersion = "1.18.2" +val loaderVersion = "0.13.3" val fabricApiConfiguration: Configuration = configurations.create("fabricApi") @@ -48,7 +48,7 @@ dependencies { "modImplementation"("net.fabricmc:fabric-loader:$loaderVersion") // [1] declare fabric-api dependency... - "fabricApi"("net.fabricmc.fabric-api:fabric-api:0.44.0+1.18") + "fabricApi"("net.fabricmc.fabric-api:fabric-api:0.47.8+1.18.2") // [2] Load the API dependencies from the fabric mod json... @Suppress("UNCHECKED_CAST") @@ -58,6 +58,7 @@ dependencies { val wantedDependencies = (fabricModJson["depends"] ?: error("no depends in fabric.mod.json")).keys .filter { it == "fabric-api-base" || it.contains(Regex("v\\d$")) } .map { "net.fabricmc.fabric-api:$it" } + .toSet() logger.lifecycle("Looking for these dependencies:") for (wantedDependency in wantedDependencies) { logger.lifecycle(wantedDependency) @@ -103,7 +104,7 @@ dependencies { "annotationProcessor"("net.fabricmc:fabric-loom:${project.versions.loom}") // Silence some warnings, since apparently this isn't on the compile classpath like it should be. - "compileOnly"("com.google.errorprone:error_prone_annotations:2.10.0") + "compileOnly"("com.google.errorprone:error_prone_annotations:2.11.0") } configure { @@ -139,10 +140,9 @@ tasks.named("shadowJar") { tasks.register("remapShadowJar") { val shadowJar = tasks.getByName("shadowJar") dependsOn(shadowJar) - input.set(shadowJar.archiveFile) + inputFile.set(shadowJar.archiveFile) archiveFileName.set(shadowJar.archiveFileName.get().replace(Regex("-dev\\.jar$"), ".jar")) addNestedDependencies.set(true) - remapAccessWidener.set(true) } tasks.named("assemble").configure { diff --git a/worldedit-fabric/src/main/java/com/sk89q/worldedit/fabric/FabricBlockCategoryRegistry.java b/worldedit-fabric/src/main/java/com/sk89q/worldedit/fabric/FabricBlockCategoryRegistry.java index b9d9c06413..5c80a7c66a 100644 --- a/worldedit-fabric/src/main/java/com/sk89q/worldedit/fabric/FabricBlockCategoryRegistry.java +++ b/worldedit-fabric/src/main/java/com/sk89q/worldedit/fabric/FabricBlockCategoryRegistry.java @@ -21,22 +21,22 @@ import com.sk89q.worldedit.world.block.BlockType; import com.sk89q.worldedit.world.registry.BlockCategoryRegistry; +import net.minecraft.core.Holder; +import net.minecraft.core.HolderSet; +import net.minecraft.core.Registry; import net.minecraft.resources.ResourceLocation; -import net.minecraft.tags.BlockTags; -import net.minecraft.tags.Tag; +import net.minecraft.tags.TagKey; -import java.util.Collections; -import java.util.Optional; import java.util.Set; import java.util.stream.Collectors; public class FabricBlockCategoryRegistry implements BlockCategoryRegistry { @Override public Set getCategorisedByName(String category) { - return Optional.ofNullable(BlockTags.getAllTags().getTag(new ResourceLocation(category))) - .map(Tag::getValues) - .orElse(Collections.emptyList()) + return Registry.BLOCK.getTag(TagKey.create(Registry.BLOCK_REGISTRY, new ResourceLocation(category))) .stream() + .flatMap(HolderSet.Named::stream) + .map(Holder::value) .map(FabricAdapter::adapt) .collect(Collectors.toSet()); } diff --git a/worldedit-fabric/src/main/java/com/sk89q/worldedit/fabric/FabricItemCategoryRegistry.java b/worldedit-fabric/src/main/java/com/sk89q/worldedit/fabric/FabricItemCategoryRegistry.java index b71ed33d81..e43544361c 100644 --- a/worldedit-fabric/src/main/java/com/sk89q/worldedit/fabric/FabricItemCategoryRegistry.java +++ b/worldedit-fabric/src/main/java/com/sk89q/worldedit/fabric/FabricItemCategoryRegistry.java @@ -21,22 +21,22 @@ import com.sk89q.worldedit.world.item.ItemType; import com.sk89q.worldedit.world.registry.ItemCategoryRegistry; +import net.minecraft.core.Holder; +import net.minecraft.core.HolderSet; +import net.minecraft.core.Registry; import net.minecraft.resources.ResourceLocation; -import net.minecraft.tags.ItemTags; -import net.minecraft.tags.Tag; +import net.minecraft.tags.TagKey; -import java.util.Collections; -import java.util.Optional; import java.util.Set; import java.util.stream.Collectors; public class FabricItemCategoryRegistry implements ItemCategoryRegistry { @Override public Set getCategorisedByName(String category) { - return Optional.ofNullable(ItemTags.getAllTags().getTag(new ResourceLocation(category))) - .map(Tag::getValues) - .orElse(Collections.emptyList()) + return Registry.ITEM.getTag(TagKey.create(Registry.ITEM_REGISTRY, new ResourceLocation(category))) .stream() + .flatMap(HolderSet.Named::stream) + .map(Holder::value) .map(FabricAdapter::adapt) .collect(Collectors.toSet()); } diff --git a/worldedit-fabric/src/main/java/com/sk89q/worldedit/fabric/FabricWorld.java b/worldedit-fabric/src/main/java/com/sk89q/worldedit/fabric/FabricWorld.java index 04164a8212..9d6b930d39 100644 --- a/worldedit-fabric/src/main/java/com/sk89q/worldedit/fabric/FabricWorld.java +++ b/worldedit-fabric/src/main/java/com/sk89q/worldedit/fabric/FabricWorld.java @@ -26,7 +26,6 @@ import com.google.common.collect.Sets; import com.google.common.collect.Streams; import com.google.common.util.concurrent.Futures; -import com.mojang.serialization.Dynamic; import com.sk89q.jnbt.CompoundTag; import com.sk89q.worldedit.EditSession; import com.sk89q.worldedit.WorldEditException; @@ -63,13 +62,10 @@ import com.sk89q.worldedit.world.weather.WeatherTypes; import net.minecraft.Util; import net.minecraft.core.BlockPos; +import net.minecraft.core.Holder; import net.minecraft.core.Registry; import net.minecraft.data.worldgen.features.EndFeatures; import net.minecraft.data.worldgen.features.TreeFeatures; -import net.minecraft.nbt.NbtOps; -import net.minecraft.nbt.Tag; -import net.minecraft.resources.RegistryReadOps; -import net.minecraft.resources.RegistryWriteOps; import net.minecraft.resources.ResourceKey; import net.minecraft.resources.ResourceLocation; import net.minecraft.server.MinecraftServer; @@ -106,11 +102,11 @@ import java.util.ArrayList; import java.util.Collections; import java.util.HashMap; -import java.util.HashSet; import java.util.List; import java.util.Map; import java.util.Objects; import java.util.Optional; +import java.util.OptionalLong; import java.util.Random; import java.util.Set; import java.util.concurrent.CompletableFuture; @@ -221,7 +217,9 @@ public BiomeType getBiome(BlockVector3 position) { } private BiomeType getBiomeInChunk(BlockVector3 position, ChunkAccess chunk) { - return FabricAdapter.adapt(chunk.getNoiseBiome(position.getX() >> 2, position.getY() >> 2, position.getZ() >> 2)); + return FabricAdapter.adapt( + chunk.getNoiseBiome(position.getX() >> 2, position.getY() >> 2, position.getZ() >> 2).value() + ); } @Override @@ -230,10 +228,10 @@ public boolean setBiome(BlockVector3 position, BiomeType biome) { checkNotNull(biome); ChunkAccess chunk = getWorld().getChunk(position.getBlockX() >> 4, position.getBlockZ() >> 4); - PalettedContainer biomeArray = chunk.getSection(chunk.getSectionIndex(position.getY())).getBiomes(); + PalettedContainer> biomeArray = chunk.getSection(chunk.getSectionIndex(position.getY())).getBiomes(); biomeArray.getAndSetUnchecked( position.getX() & 3, position.getY() & 3, position.getZ() & 3, - FabricAdapter.adapt(biome) + Holder.direct(FabricAdapter.adapt(biome)) ); chunk.setUnsaved(true); return true; @@ -327,7 +325,7 @@ private void doRegen(Region region, Extent extent, RegenOptions options) throws long seed = options.getSeed().orElse(originalWorld.getSeed()); WorldGenSettings newOpts = options.getSeed().isPresent() - ? replaceSeed(originalWorld, seed, originalOpts) + ? originalOpts.withSeed(levelProperties.isHardcore(), OptionalLong.of(seed)) : originalOpts; levelProperties.setWorldGenSettings(newOpts); @@ -338,7 +336,7 @@ private void doRegen(Region region, Extent extent, RegenOptions options) throws originalWorld.getServer(), Util.backgroundExecutor(), session, ((ServerLevelData) originalWorld.getLevelData()), worldRegKey, - originalWorld.dimensionType(), + originalWorld.dimensionTypeRegistration(), new WorldEditGenListener(), dimGenOpts.generator(), originalWorld.isDebug(), @@ -362,49 +360,6 @@ private void doRegen(Region region, Extent extent, RegenOptions options) throws } } - private WorldGenSettings replaceSeed(ServerLevel originalWorld, long seed, WorldGenSettings originalOpts) { - RegistryWriteOps nbtRegReadOps = RegistryWriteOps.create( - NbtOps.INSTANCE, - originalWorld.getServer().registryAccess() - ); - RegistryReadOps nbtRegOps = RegistryReadOps.create( - NbtOps.INSTANCE, - ((ExtendedMinecraftServer) originalWorld.getServer()) - .getResources().getResourceManager(), - originalWorld.getServer().registryAccess() - ); - return WorldGenSettings.CODEC - .encodeStart(nbtRegReadOps, originalOpts) - .flatMap(tag -> - WorldGenSettings.CODEC.parse( - recursivelySetSeed(new Dynamic<>(nbtRegOps, tag), seed, new HashSet<>()) - ) - ) - .get() - .map( - l -> l, - error -> { - throw new IllegalStateException("Unable to map GeneratorOptions: " + error.message()); - } - ); - } - - @SuppressWarnings("unchecked") - private Dynamic recursivelySetSeed(Dynamic dynamic, long seed, Set> seen) { - if (!seen.add(dynamic)) { - return dynamic; - } - return dynamic.updateMapValues(pair -> { - if (pair.getFirst().asString("").equals("seed")) { - return pair.mapSecond(v -> v.createLong(seed)); - } - if (pair.getSecond().getValue() instanceof net.minecraft.nbt.CompoundTag) { - return pair.mapSecond(v -> recursivelySetSeed((Dynamic) v, seed, seen)); - } - return pair; - }); - } - private void regenForWorld(Region region, Extent extent, ServerLevel serverWorld, RegenOptions options) throws WorldEditException { List> chunkLoadings = submitChunkLoadTasks(region, serverWorld); @@ -460,7 +415,7 @@ private List> submitChunkLoadTasks(Region region, } @Nullable - private static ConfiguredFeature createTreeFeatureGenerator(TreeType type) { + private static Holder> createTreeFeatureGenerator(TreeType type) { return switch (type) { // Based off of the SaplingGenerator class, as well as uses of DefaultBiomeFeatures fields case TREE -> TreeFeatures.OAK; @@ -489,7 +444,9 @@ private List> submitChunkLoadTasks(Region region, @Override public boolean generateTree(TreeType type, EditSession editSession, BlockVector3 position) { - ConfiguredFeature generator = createTreeFeatureGenerator(type); + ConfiguredFeature generator = Optional.ofNullable(createTreeFeatureGenerator(type)) + .map(Holder::value) + .orElse(null); ServerLevel world = (ServerLevel) getWorld(); ServerChunkCache chunkManager = world.getChunkSource(); if (type == TreeType.CHORUS_PLANT) { diff --git a/worldedit-fabric/src/main/java/com/sk89q/worldedit/fabric/FabricWorldEdit.java b/worldedit-fabric/src/main/java/com/sk89q/worldedit/fabric/FabricWorldEdit.java index 7950821ff4..f3be6ea106 100644 --- a/worldedit-fabric/src/main/java/com/sk89q/worldedit/fabric/FabricWorldEdit.java +++ b/worldedit-fabric/src/main/java/com/sk89q/worldedit/fabric/FabricWorldEdit.java @@ -60,8 +60,7 @@ import net.minecraft.server.MinecraftServer; import net.minecraft.server.level.ServerPlayer; import net.minecraft.server.network.ServerGamePacketListenerImpl; -import net.minecraft.tags.BlockTags; -import net.minecraft.tags.ItemTags; +import net.minecraft.tags.TagKey; import net.minecraft.world.InteractionHand; import net.minecraft.world.InteractionResult; import net.minecraft.world.InteractionResultHolder; @@ -83,7 +82,6 @@ import static com.google.common.base.Preconditions.checkNotNull; import static com.sk89q.worldedit.fabric.FabricAdapter.adaptPlayer; import static com.sk89q.worldedit.internal.anvil.ChunkDeleter.DELCHUNKS_FILE_NAME; -import static java.util.stream.Collectors.toList; /** * The Fabric implementation of WorldEdit. @@ -163,7 +161,7 @@ private void registerCommands(CommandDispatcher dispatcher, } List commands = manager.getPlatformCommandManager().getCommandManager() - .getAllCommands().collect(toList()); + .getAllCommands().toList(); for (Command command : commands) { CommandWrapper.register(dispatcher, command); Set perms = command.getCondition().as(PermissionCondition.class) @@ -212,16 +210,16 @@ private void setupRegistries(MinecraftServer server) { } } // Tags - for (ResourceLocation name : BlockTags.getAllTags().getAvailableTags()) { + Registry.BLOCK.getTagNames().map(TagKey::location).forEach(name -> { if (BlockCategory.REGISTRY.get(name.toString()) == null) { BlockCategory.REGISTRY.register(name.toString(), new BlockCategory(name.toString())); } - } - for (ResourceLocation name : ItemTags.getAllTags().getAvailableTags()) { + }); + Registry.ITEM.getTagNames().map(TagKey::location).forEach(name -> { if (ItemCategory.REGISTRY.get(name.toString()) == null) { ItemCategory.REGISTRY.register(name.toString(), new ItemCategory(name.toString())); } - } + }); } private void onStartingServer(MinecraftServer minecraftServer) { diff --git a/worldedit-fabric/src/main/java/com/sk89q/worldedit/fabric/internal/ExtendedMinecraftServer.java b/worldedit-fabric/src/main/java/com/sk89q/worldedit/fabric/internal/ExtendedMinecraftServer.java index 0a476fffdb..22376275a2 100644 --- a/worldedit-fabric/src/main/java/com/sk89q/worldedit/fabric/internal/ExtendedMinecraftServer.java +++ b/worldedit-fabric/src/main/java/com/sk89q/worldedit/fabric/internal/ExtendedMinecraftServer.java @@ -19,7 +19,6 @@ package com.sk89q.worldedit.fabric.internal; -import net.minecraft.server.ServerResources; import net.minecraft.world.level.Level; import java.nio.file.Path; @@ -28,6 +27,4 @@ public interface ExtendedMinecraftServer { Path getStoragePath(Level world); - ServerResources getResources(); - } diff --git a/worldedit-fabric/src/main/java/com/sk89q/worldedit/fabric/mixin/MixinMinecraftServer.java b/worldedit-fabric/src/main/java/com/sk89q/worldedit/fabric/mixin/MixinMinecraftServer.java index 17ae3eea91..c2fa3b572f 100644 --- a/worldedit-fabric/src/main/java/com/sk89q/worldedit/fabric/mixin/MixinMinecraftServer.java +++ b/worldedit-fabric/src/main/java/com/sk89q/worldedit/fabric/mixin/MixinMinecraftServer.java @@ -23,13 +23,11 @@ import com.sk89q.worldedit.fabric.internal.ExtendedMinecraftServer; import net.minecraft.Util; import net.minecraft.server.MinecraftServer; -import net.minecraft.server.ServerResources; import net.minecraft.world.level.Level; import net.minecraft.world.level.storage.LevelStorageSource; import org.spongepowered.asm.mixin.Final; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Shadow; -import org.spongepowered.asm.mixin.gen.Accessor; import java.nio.file.Path; @@ -52,7 +50,4 @@ public Path getStoragePath(Level world) { return storageSource.getDimensionPath(world.dimension()); } - @Accessor - @Override - public abstract ServerResources getResources(); } diff --git a/worldedit-forge/build.gradle.kts b/worldedit-forge/build.gradle.kts index e312655b81..74ee09ee3a 100644 --- a/worldedit-forge/build.gradle.kts +++ b/worldedit-forge/build.gradle.kts @@ -16,7 +16,7 @@ val minecraftVersion = "1.18.1" val nextMajorMinecraftVersion: String = minecraftVersion.split('.').let { (useless, major) -> "$useless.${major.toInt() + 1}" } -val forgeVersion = "39.0.63" +val forgeVersion = "39.1.0" val apiClasspath = configurations.create("apiClasspath") { isCanBeResolved = true diff --git a/worldedit-forge/src/main/java/com/sk89q/worldedit/forge/ForgeWorld.java b/worldedit-forge/src/main/java/com/sk89q/worldedit/forge/ForgeWorld.java index 2733c9006e..d2b271e844 100644 --- a/worldedit-forge/src/main/java/com/sk89q/worldedit/forge/ForgeWorld.java +++ b/worldedit-forge/src/main/java/com/sk89q/worldedit/forge/ForgeWorld.java @@ -27,8 +27,6 @@ import com.google.common.collect.Lists; import com.google.common.collect.Sets; import com.google.common.util.concurrent.Futures; -import com.mojang.serialization.Codec; -import com.mojang.serialization.Dynamic; import com.sk89q.jnbt.CompoundTag; import com.sk89q.worldedit.EditSession; import com.sk89q.worldedit.WorldEditException; @@ -65,10 +63,6 @@ import net.minecraft.core.Registry; import net.minecraft.data.worldgen.features.EndFeatures; import net.minecraft.data.worldgen.features.TreeFeatures; -import net.minecraft.nbt.NbtOps; -import net.minecraft.nbt.Tag; -import net.minecraft.resources.RegistryReadOps; -import net.minecraft.resources.RegistryWriteOps; import net.minecraft.resources.ResourceKey; import net.minecraft.resources.ResourceLocation; import net.minecraft.server.level.ServerChunkCache; @@ -104,11 +98,11 @@ import java.nio.file.Path; import java.util.ArrayList; import java.util.HashMap; -import java.util.HashSet; import java.util.List; import java.util.Map; import java.util.Objects; import java.util.Optional; +import java.util.OptionalLong; import java.util.Random; import java.util.Set; import java.util.concurrent.CompletableFuture; @@ -318,7 +312,7 @@ private void doRegen(Region region, Extent extent, RegenOptions options) throws long seed = options.getSeed().orElse(originalWorld.getSeed()); WorldGenSettings newOpts = options.getSeed().isPresent() - ? replaceSeed(originalWorld, seed, originalOpts) + ? originalOpts.withSeed(levelProperties.isHardcore(), OptionalLong.of(seed)) : originalOpts; levelProperties.worldGenSettings = newOpts; @@ -353,49 +347,6 @@ private void doRegen(Region region, Extent extent, RegenOptions options) throws } } - private WorldGenSettings replaceSeed(ServerLevel originalWorld, long seed, WorldGenSettings originalOpts) { - RegistryWriteOps nbtReadRegOps = RegistryWriteOps.create( - NbtOps.INSTANCE, - originalWorld.getServer().registryAccess() - ); - RegistryReadOps nbtRegOps = RegistryReadOps.createAndLoad( - NbtOps.INSTANCE, - originalWorld.getServer().getResourceManager(), - originalWorld.getServer().registryAccess() - ); - Codec dimCodec = WorldGenSettings.CODEC; - return dimCodec - .encodeStart(nbtReadRegOps, originalOpts) - .flatMap(tag -> - dimCodec.parse( - recursivelySetSeed(new Dynamic<>(nbtRegOps, tag), seed, new HashSet<>()) - ) - ) - .get() - .map( - l -> l, - error -> { - throw new IllegalStateException("Unable to map GeneratorOptions: " + error.message()); - } - ); - } - - @SuppressWarnings("unchecked") - private Dynamic recursivelySetSeed(Dynamic dynamic, long seed, Set> seen) { - if (!seen.add(dynamic)) { - return dynamic; - } - return dynamic.updateMapValues(pair -> { - if (pair.getFirst().asString("").equals("seed")) { - return pair.mapSecond(v -> v.createLong(seed)); - } - if (pair.getSecond().getValue() instanceof net.minecraft.nbt.CompoundTag) { - return pair.mapSecond(v -> recursivelySetSeed((Dynamic) v, seed, seen)); - } - return pair; - }); - } - private void regenForWorld(Region region, Extent extent, ServerLevel serverWorld, RegenOptions options) throws WorldEditException { List> chunkLoadings = submitChunkLoadTasks(region, serverWorld); From 8c83ef80fae1f4d39a54a2dd19863fae1c2162b8 Mon Sep 17 00:00:00 2001 From: Octavia Togami Date: Mon, 28 Feb 2022 23:06:48 -0800 Subject: [PATCH 19/55] [Bukkit] Remove nbt tricks from adapters --- .../impl/v1_17_R1_2/PaperweightAdapter.java | 52 +----------------- .../impl/v1_18_R1/PaperweightAdapter.java | 53 +------------------ 2 files changed, 4 insertions(+), 101 deletions(-) diff --git a/worldedit-bukkit/adapters/adapter-1.17.1/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/v1_17_R1_2/PaperweightAdapter.java b/worldedit-bukkit/adapters/adapter-1.17.1/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/v1_17_R1_2/PaperweightAdapter.java index c55050aa2e..567ae0a141 100644 --- a/worldedit-bukkit/adapters/adapter-1.17.1/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/v1_17_R1_2/PaperweightAdapter.java +++ b/worldedit-bukkit/adapters/adapter-1.17.1/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/v1_17_R1_2/PaperweightAdapter.java @@ -27,8 +27,6 @@ import com.google.common.collect.Sets; import com.google.common.util.concurrent.Futures; import com.mojang.datafixers.util.Either; -import com.mojang.serialization.Codec; -import com.mojang.serialization.Dynamic; import com.mojang.serialization.Lifecycle; import com.sk89q.jnbt.ByteArrayTag; import com.sk89q.jnbt.ByteTag; @@ -83,11 +81,8 @@ import net.minecraft.Util; import net.minecraft.core.BlockPos; import net.minecraft.core.Registry; -import net.minecraft.nbt.NbtOps; import net.minecraft.network.protocol.game.ClientboundBlockEntityDataPacket; import net.minecraft.network.protocol.game.ClientboundEntityEventPacket; -import net.minecraft.resources.RegistryReadOps; -import net.minecraft.resources.RegistryWriteOps; import net.minecraft.resources.ResourceKey; import net.minecraft.resources.ResourceLocation; import net.minecraft.server.MinecraftServer; @@ -149,12 +144,12 @@ import java.nio.file.Path; import java.util.ArrayList; import java.util.HashMap; -import java.util.HashSet; import java.util.List; import java.util.Locale; import java.util.Map; import java.util.Objects; import java.util.OptionalInt; +import java.util.OptionalLong; import java.util.Set; import java.util.concurrent.CompletableFuture; import java.util.concurrent.ExecutionException; @@ -608,7 +603,7 @@ private void doRegen(org.bukkit.World bukkitWorld, Region region, Extent extent, long seed = options.getSeed().orElse(originalWorld.getSeed()); WorldGenSettings newOpts = options.getSeed().isPresent() - ? replaceSeed(originalWorld, seed, originalOpts) + ? originalOpts.withSeed(levelProperties.isHardcore(), OptionalLong.of(seed)) : originalOpts; LevelSettings newWorldSettings = new LevelSettings( @@ -653,49 +648,6 @@ private void doRegen(org.bukkit.World bukkitWorld, Region region, Extent extent, } } - private WorldGenSettings replaceSeed(ServerLevel originalWorld, long seed, WorldGenSettings originalOpts) { - RegistryWriteOps nbtReadRegOps = RegistryWriteOps.create( - NbtOps.INSTANCE, - originalWorld.getServer().registryAccess() - ); - RegistryReadOps nbtRegOps = RegistryReadOps.createAndLoad( - NbtOps.INSTANCE, - originalWorld.getServer().getResourceManager(), - originalWorld.getServer().registryAccess() - ); - Codec dimCodec = WorldGenSettings.CODEC; - return dimCodec - .encodeStart(nbtReadRegOps, originalOpts) - .flatMap(tag -> - dimCodec.parse( - recursivelySetSeed(new Dynamic<>(nbtRegOps, tag), seed, new HashSet<>()) - ) - ) - .get() - .map( - l -> l, - error -> { - throw new IllegalStateException("Unable to map GeneratorOptions: " + error.message()); - } - ); - } - - @SuppressWarnings("unchecked") - private Dynamic recursivelySetSeed(Dynamic dynamic, long seed, Set> seen) { - if (!seen.add(dynamic)) { - return dynamic; - } - return dynamic.updateMapValues(pair -> { - if (pair.getFirst().asString("").equals("seed")) { - return pair.mapSecond(v -> v.createLong(seed)); - } - if (pair.getSecond().getValue() instanceof net.minecraft.nbt.CompoundTag) { - return pair.mapSecond(v -> recursivelySetSeed((Dynamic) v, seed, seen)); - } - return pair; - }); - } - private BiomeType adapt(ServerLevel serverWorld, Biome origBiome) { ResourceLocation key = serverWorld.registryAccess().registryOrThrow(Registry.BIOME_REGISTRY).getKey(origBiome); if (key == null) { diff --git a/worldedit-bukkit/adapters/adapter-1.18/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/v1_18_R1/PaperweightAdapter.java b/worldedit-bukkit/adapters/adapter-1.18/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/v1_18_R1/PaperweightAdapter.java index 9f9f928519..0b9cc00ee3 100644 --- a/worldedit-bukkit/adapters/adapter-1.18/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/v1_18_R1/PaperweightAdapter.java +++ b/worldedit-bukkit/adapters/adapter-1.18/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/v1_18_R1/PaperweightAdapter.java @@ -27,8 +27,6 @@ import com.google.common.collect.Sets; import com.google.common.util.concurrent.Futures; import com.mojang.datafixers.util.Either; -import com.mojang.serialization.Codec; -import com.mojang.serialization.Dynamic; import com.mojang.serialization.Lifecycle; import com.sk89q.jnbt.ByteArrayTag; import com.sk89q.jnbt.ByteTag; @@ -83,11 +81,8 @@ import net.minecraft.Util; import net.minecraft.core.BlockPos; import net.minecraft.core.Registry; -import net.minecraft.nbt.NbtOps; import net.minecraft.network.protocol.game.ClientboundBlockEntityDataPacket; import net.minecraft.network.protocol.game.ClientboundEntityEventPacket; -import net.minecraft.resources.RegistryReadOps; -import net.minecraft.resources.RegistryWriteOps; import net.minecraft.resources.ResourceKey; import net.minecraft.resources.ResourceLocation; import net.minecraft.server.MinecraftServer; @@ -118,7 +113,6 @@ import net.minecraft.world.level.chunk.ChunkAccess; import net.minecraft.world.level.chunk.ChunkStatus; import net.minecraft.world.level.chunk.LevelChunk; -import net.minecraft.world.level.chunk.PalettedContainer; import net.minecraft.world.level.dimension.LevelStem; import net.minecraft.world.level.levelgen.WorldGenSettings; import net.minecraft.world.level.storage.LevelStorageSource; @@ -150,12 +144,12 @@ import java.nio.file.Path; import java.util.ArrayList; import java.util.HashMap; -import java.util.HashSet; import java.util.List; import java.util.Locale; import java.util.Map; import java.util.Objects; import java.util.OptionalInt; +import java.util.OptionalLong; import java.util.Set; import java.util.concurrent.CompletableFuture; import java.util.concurrent.ExecutionException; @@ -602,7 +596,7 @@ private void doRegen(org.bukkit.World bukkitWorld, Region region, Extent extent, long seed = options.getSeed().orElse(originalWorld.getSeed()); WorldGenSettings newOpts = options.getSeed().isPresent() - ? replaceSeed(originalWorld, seed, originalOpts) + ? originalOpts.withSeed(levelProperties.isHardcore(), OptionalLong.of(seed)) : originalOpts; LevelSettings newWorldSettings = new LevelSettings( @@ -647,49 +641,6 @@ private void doRegen(org.bukkit.World bukkitWorld, Region region, Extent extent, } } - private WorldGenSettings replaceSeed(ServerLevel originalWorld, long seed, WorldGenSettings originalOpts) { - RegistryWriteOps nbtReadRegOps = RegistryWriteOps.create( - NbtOps.INSTANCE, - originalWorld.getServer().registryAccess() - ); - RegistryReadOps nbtRegOps = RegistryReadOps.createAndLoad( - NbtOps.INSTANCE, - originalWorld.getServer().getResourceManager(), - originalWorld.getServer().registryAccess() - ); - Codec dimCodec = WorldGenSettings.CODEC; - return dimCodec - .encodeStart(nbtReadRegOps, originalOpts) - .flatMap(tag -> - dimCodec.parse( - recursivelySetSeed(new Dynamic<>(nbtRegOps, tag), seed, new HashSet<>()) - ) - ) - .get() - .map( - l -> l, - error -> { - throw new IllegalStateException("Unable to map GeneratorOptions: " + error.message()); - } - ); - } - - @SuppressWarnings("unchecked") - private Dynamic recursivelySetSeed(Dynamic dynamic, long seed, Set> seen) { - if (!seen.add(dynamic)) { - return dynamic; - } - return dynamic.updateMapValues(pair -> { - if (pair.getFirst().asString("").equals("seed")) { - return pair.mapSecond(v -> v.createLong(seed)); - } - if (pair.getSecond().getValue() instanceof net.minecraft.nbt.CompoundTag) { - return pair.mapSecond(v -> recursivelySetSeed((Dynamic) v, seed, seen)); - } - return pair; - }); - } - private BiomeType adapt(ServerLevel serverWorld, Biome origBiome) { ResourceLocation key = serverWorld.registryAccess().registryOrThrow(Registry.BIOME_REGISTRY).getKey(origBiome); if (key == null) { From a6c05c22d83d505c045b569fd421e94601dbd9ae Mon Sep 17 00:00:00 2001 From: Octavia Togami Date: Tue, 1 Mar 2022 18:15:49 -0800 Subject: [PATCH 20/55] [Forge] 1.18.2 Plus bonus debug and Fabric improvements --- .../sk89q/worldedit/registry/Registry.java | 4 +- .../sk89q/worldedit/fabric/FabricWorld.java | 4 +- worldedit-forge/build.gradle.kts | 4 +- .../forge/ForgeBlockCategoryRegistry.java | 19 +++++---- .../forge/ForgeItemCategoryRegistry.java | 19 +++++---- .../com/sk89q/worldedit/forge/ForgeWorld.java | 39 ++++++++++--------- .../sk89q/worldedit/forge/ForgeWorldEdit.java | 13 ++++--- 7 files changed, 58 insertions(+), 44 deletions(-) diff --git a/worldedit-core/src/main/java/com/sk89q/worldedit/registry/Registry.java b/worldedit-core/src/main/java/com/sk89q/worldedit/registry/Registry.java index 8b03db653f..e8932303df 100644 --- a/worldedit-core/src/main/java/com/sk89q/worldedit/registry/Registry.java +++ b/worldedit-core/src/main/java/com/sk89q/worldedit/registry/Registry.java @@ -45,14 +45,14 @@ public String getName() { @Nullable public V get(final String key) { - checkState(key.equals(key.toLowerCase(Locale.ROOT)), "key must be lowercase"); + checkState(key.equals(key.toLowerCase(Locale.ROOT)), "key must be lowercase: %s", key); return this.map.get(key); } public V register(final String key, final V value) { requireNonNull(key, "key"); requireNonNull(value, "value"); - checkState(key.equals(key.toLowerCase(Locale.ROOT)), "key must be lowercase"); + checkState(key.equals(key.toLowerCase(Locale.ROOT)), "key must be lowercase: %s", key); checkState(!this.map.containsKey(key), "key '%s' already has an associated %s", key, this.name); this.map.put(key, value); return value; diff --git a/worldedit-fabric/src/main/java/com/sk89q/worldedit/fabric/FabricWorld.java b/worldedit-fabric/src/main/java/com/sk89q/worldedit/fabric/FabricWorld.java index 9d6b930d39..0348b16772 100644 --- a/worldedit-fabric/src/main/java/com/sk89q/worldedit/fabric/FabricWorld.java +++ b/worldedit-fabric/src/main/java/com/sk89q/worldedit/fabric/FabricWorld.java @@ -231,7 +231,9 @@ public boolean setBiome(BlockVector3 position, BiomeType biome) { PalettedContainer> biomeArray = chunk.getSection(chunk.getSectionIndex(position.getY())).getBiomes(); biomeArray.getAndSetUnchecked( position.getX() & 3, position.getY() & 3, position.getZ() & 3, - Holder.direct(FabricAdapter.adapt(biome)) + getWorld().registryAccess().registry(Registry.BIOME_REGISTRY) + .orElseThrow() + .getHolderOrThrow(ResourceKey.create(Registry.BIOME_REGISTRY, new ResourceLocation(biome.getId()))) ); chunk.setUnsaved(true); return true; diff --git a/worldedit-forge/build.gradle.kts b/worldedit-forge/build.gradle.kts index 74ee09ee3a..9fde1e6ba4 100644 --- a/worldedit-forge/build.gradle.kts +++ b/worldedit-forge/build.gradle.kts @@ -12,11 +12,11 @@ plugins { applyPlatformAndCoreConfiguration(javaRelease = 17) applyShadowConfiguration() -val minecraftVersion = "1.18.1" +val minecraftVersion = "1.18.2" val nextMajorMinecraftVersion: String = minecraftVersion.split('.').let { (useless, major) -> "$useless.${major.toInt() + 1}" } -val forgeVersion = "39.1.0" +val forgeVersion = "40.0.1" val apiClasspath = configurations.create("apiClasspath") { isCanBeResolved = true diff --git a/worldedit-forge/src/main/java/com/sk89q/worldedit/forge/ForgeBlockCategoryRegistry.java b/worldedit-forge/src/main/java/com/sk89q/worldedit/forge/ForgeBlockCategoryRegistry.java index ecf819b015..ddbdbb4f10 100644 --- a/worldedit-forge/src/main/java/com/sk89q/worldedit/forge/ForgeBlockCategoryRegistry.java +++ b/worldedit-forge/src/main/java/com/sk89q/worldedit/forge/ForgeBlockCategoryRegistry.java @@ -21,20 +21,25 @@ import com.sk89q.worldedit.world.block.BlockType; import com.sk89q.worldedit.world.registry.BlockCategoryRegistry; +import net.minecraft.core.Holder; +import net.minecraft.core.HolderSet; +import net.minecraft.core.Registry; import net.minecraft.resources.ResourceLocation; -import net.minecraft.tags.BlockTags; -import net.minecraft.tags.Tag; +import net.minecraft.tags.TagKey; -import java.util.Collections; -import java.util.Optional; import java.util.Set; import java.util.stream.Collectors; public class ForgeBlockCategoryRegistry implements BlockCategoryRegistry { + // TODO clean this up once Forge adds a proper API for this + @SuppressWarnings("deprecation") @Override public Set getCategorisedByName(String category) { - return Optional.ofNullable(BlockTags.getAllTags().getTag(new ResourceLocation(category))) - .map(Tag::getValues).orElse(Collections.emptyList()) - .stream().map(ForgeAdapter::adapt).collect(Collectors.toSet()); + return Registry.BLOCK.getTag(TagKey.create(Registry.BLOCK_REGISTRY, new ResourceLocation(category))) + .stream() + .flatMap(HolderSet.Named::stream) + .map(Holder::value) + .map(ForgeAdapter::adapt) + .collect(Collectors.toSet()); } } diff --git a/worldedit-forge/src/main/java/com/sk89q/worldedit/forge/ForgeItemCategoryRegistry.java b/worldedit-forge/src/main/java/com/sk89q/worldedit/forge/ForgeItemCategoryRegistry.java index a060994101..7e6acdda9e 100644 --- a/worldedit-forge/src/main/java/com/sk89q/worldedit/forge/ForgeItemCategoryRegistry.java +++ b/worldedit-forge/src/main/java/com/sk89q/worldedit/forge/ForgeItemCategoryRegistry.java @@ -21,20 +21,25 @@ import com.sk89q.worldedit.world.item.ItemType; import com.sk89q.worldedit.world.registry.ItemCategoryRegistry; +import net.minecraft.core.Holder; +import net.minecraft.core.HolderSet; +import net.minecraft.core.Registry; import net.minecraft.resources.ResourceLocation; -import net.minecraft.tags.ItemTags; -import net.minecraft.tags.Tag; +import net.minecraft.tags.TagKey; -import java.util.Collections; -import java.util.Optional; import java.util.Set; import java.util.stream.Collectors; public class ForgeItemCategoryRegistry implements ItemCategoryRegistry { + // TODO clean this up once Forge adds a proper API for this + @SuppressWarnings("deprecation") @Override public Set getCategorisedByName(String category) { - return Optional.ofNullable(ItemTags.getAllTags().getTag(new ResourceLocation(category))) - .map(Tag::getValues).orElse(Collections.emptyList()) - .stream().map(ForgeAdapter::adapt).collect(Collectors.toSet()); + return Registry.ITEM.getTag(TagKey.create(Registry.ITEM_REGISTRY, new ResourceLocation(category))) + .stream() + .flatMap(HolderSet.Named::stream) + .map(Holder::value) + .map(ForgeAdapter::adapt) + .collect(Collectors.toSet()); } } diff --git a/worldedit-forge/src/main/java/com/sk89q/worldedit/forge/ForgeWorld.java b/worldedit-forge/src/main/java/com/sk89q/worldedit/forge/ForgeWorld.java index d2b271e844..ddfd3b174b 100644 --- a/worldedit-forge/src/main/java/com/sk89q/worldedit/forge/ForgeWorld.java +++ b/worldedit-forge/src/main/java/com/sk89q/worldedit/forge/ForgeWorld.java @@ -23,9 +23,8 @@ import com.google.common.cache.CacheLoader; import com.google.common.cache.LoadingCache; import com.google.common.collect.ImmutableList; -import com.google.common.collect.Iterables; -import com.google.common.collect.Lists; import com.google.common.collect.Sets; +import com.google.common.collect.Streams; import com.google.common.util.concurrent.Futures; import com.sk89q.jnbt.CompoundTag; import com.sk89q.worldedit.EditSession; @@ -60,6 +59,7 @@ import com.sk89q.worldedit.world.weather.WeatherTypes; import net.minecraft.Util; import net.minecraft.core.BlockPos; +import net.minecraft.core.Holder; import net.minecraft.core.Registry; import net.minecraft.data.worldgen.features.EndFeatures; import net.minecraft.data.worldgen.features.TreeFeatures; @@ -211,7 +211,9 @@ public BiomeType getBiome(BlockVector3 position) { } private BiomeType getBiomeInChunk(BlockVector3 position, ChunkAccess chunk) { - return ForgeAdapter.adapt(chunk.getNoiseBiome(position.getX() >> 2, position.getY() >> 2, position.getZ() >> 2)); + return ForgeAdapter.adapt( + chunk.getNoiseBiome(position.getX() >> 2, position.getY() >> 2, position.getZ() >> 2).value() + ); } @Override @@ -220,10 +222,12 @@ public boolean setBiome(BlockVector3 position, BiomeType biome) { checkNotNull(biome); LevelChunk chunk = getWorld().getChunk(position.getBlockX() >> 4, position.getBlockZ() >> 4); - PalettedContainer biomes = chunk.getSection(chunk.getSectionIndex(position.getY())).getBiomes(); + PalettedContainer> biomes = chunk.getSection(chunk.getSectionIndex(position.getY())).getBiomes(); biomes.getAndSetUnchecked( position.getX() & 3, position.getY() & 3, position.getZ() & 3, - ForgeAdapter.adapt(biome) + getWorld().registryAccess().registry(Registry.BIOME_REGISTRY) + .orElseThrow() + .getHolderOrThrow(ResourceKey.create(Registry.BIOME_REGISTRY, new ResourceLocation(biome.getId()))) ); chunk.setUnsaved(true); return true; @@ -323,7 +327,7 @@ private void doRegen(Region region, Extent extent, RegenOptions options) throws originalWorld.getServer(), Util.backgroundExecutor(), session, ((ServerLevelData) originalWorld.getLevelData()), worldRegKey, - originalWorld.dimensionType(), + originalWorld.dimensionTypeRegistration(), new WorldEditGenListener(), dimGenOpts.generator(), originalWorld.isDebug(), @@ -401,7 +405,7 @@ private List> submitChunkLoadTasks(Region region, } @Nullable - private static ConfiguredFeature createTreeFeatureGenerator(TreeType type) { + private static Holder> createTreeFeatureGenerator(TreeType type) { return switch (type) { case TREE -> TreeFeatures.OAK; case BIG_TREE -> TreeFeatures.FANCY_OAK; @@ -429,7 +433,9 @@ private List> submitChunkLoadTasks(Region region, @Override public boolean generateTree(TreeType type, EditSession editSession, BlockVector3 position) { - ConfiguredFeature generator = createTreeFeatureGenerator(type); + ConfiguredFeature generator = Optional.ofNullable(createTreeFeatureGenerator(type)) + .map(Holder::value) + .orElse(null); ServerLevel world = getWorld(); ServerChunkCache chunkManager = world.getChunkSource(); if (type == TreeType.CHORUS_PLANT) { @@ -562,8 +568,7 @@ public int hashCode() { public boolean equals(Object o) { if (o == null) { return false; - } else if ((o instanceof ForgeWorld)) { - ForgeWorld other = ((ForgeWorld) o); + } else if ((o instanceof ForgeWorld other)) { Level otherWorld = other.worldRef.get(); Level thisWorld = worldRef.get(); return otherWorld != null && otherWorld.equals(thisWorld); @@ -586,19 +591,15 @@ public List getEntities(Region region) { box, e -> region.contains(ForgeAdapter.adapt(e.blockPosition())) ); - return ImmutableList.copyOf(Lists.transform( - nmsEntities, - ForgeEntity::new - )); + return nmsEntities.stream().map(ForgeEntity::new).collect(ImmutableList.toImmutableList()); } @Override public List getEntities() { final ServerLevel world = getWorld(); - return ImmutableList.copyOf(Iterables.transform( - world.getAllEntities(), - ForgeEntity::new - )); + return Streams.stream(world.getAllEntities()) + .map(ForgeEntity::new) + .collect(ImmutableList.toImmutableList()); } @Nullable @@ -606,7 +607,7 @@ public List getEntities() { public Entity createEntity(Location location, BaseEntity entity) { ServerLevel world = getWorld(); final Optional> entityType = EntityType.byString(entity.getType().getId()); - if (!entityType.isPresent()) { + if (entityType.isEmpty()) { return null; } net.minecraft.world.entity.Entity createdEntity = entityType.get().create(world); diff --git a/worldedit-forge/src/main/java/com/sk89q/worldedit/forge/ForgeWorldEdit.java b/worldedit-forge/src/main/java/com/sk89q/worldedit/forge/ForgeWorldEdit.java index 1287e7f2b4..3cba00de79 100644 --- a/worldedit-forge/src/main/java/com/sk89q/worldedit/forge/ForgeWorldEdit.java +++ b/worldedit-forge/src/main/java/com/sk89q/worldedit/forge/ForgeWorldEdit.java @@ -50,8 +50,7 @@ import net.minecraft.server.MinecraftServer; import net.minecraft.server.level.ServerLevel; import net.minecraft.server.level.ServerPlayer; -import net.minecraft.tags.BlockTags; -import net.minecraft.tags.ItemTags; +import net.minecraft.tags.TagKey; import net.minecraft.world.InteractionHand; import net.minecraftforge.common.MinecraftForge; import net.minecraftforge.event.CommandEvent; @@ -173,6 +172,8 @@ private void setupPlatform() { // } } + // TODO clean this up once Forge adds a proper API for this + @SuppressWarnings("deprecation") private void setupRegistries(MinecraftServer server) { // Blocks for (ResourceLocation name : ForgeRegistries.BLOCKS.getKeys()) { @@ -200,16 +201,16 @@ private void setupRegistries(MinecraftServer server) { } } // Tags - for (ResourceLocation name : BlockTags.getAllTags().getAvailableTags()) { + Registry.BLOCK.getTagNames().map(TagKey::location).forEach(name -> { if (BlockCategory.REGISTRY.get(name.toString()) == null) { BlockCategory.REGISTRY.register(name.toString(), new BlockCategory(name.toString())); } - } - for (ResourceLocation name : ItemTags.getAllTags().getAvailableTags()) { + }); + Registry.ITEM.getTagNames().map(TagKey::location).forEach(name -> { if (ItemCategory.REGISTRY.get(name.toString()) == null) { ItemCategory.REGISTRY.register(name.toString(), new ItemCategory(name.toString())); } - } + }); } @SubscribeEvent From 48d7ccc1b26bce10de39f7529126a5d0f1760bc0 Mon Sep 17 00:00:00 2001 From: wizjany Date: Fri, 4 Mar 2022 08:20:24 -0500 Subject: [PATCH 21/55] [Bukkit] 1.18.2 --- settings.gradle.kts | 1 + .../adapters/adapter-1.18.2/build.gradle.kts | 6 + .../impl/v1_18_R2/PaperweightAdapter.java | 968 ++++++ .../v1_18_R2/PaperweightDataConverters.java | 2795 +++++++++++++++++ .../impl/v1_18_R2/PaperweightFakePlayer.java | 98 + .../PaperweightWorldNativeAccess.java | 182 ++ 6 files changed, 4050 insertions(+) create mode 100644 worldedit-bukkit/adapters/adapter-1.18.2/build.gradle.kts create mode 100644 worldedit-bukkit/adapters/adapter-1.18.2/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/v1_18_R2/PaperweightAdapter.java create mode 100644 worldedit-bukkit/adapters/adapter-1.18.2/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/v1_18_R2/PaperweightDataConverters.java create mode 100644 worldedit-bukkit/adapters/adapter-1.18.2/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/v1_18_R2/PaperweightFakePlayer.java create mode 100644 worldedit-bukkit/adapters/adapter-1.18.2/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/v1_18_R2/PaperweightWorldNativeAccess.java diff --git a/settings.gradle.kts b/settings.gradle.kts index 5cdb7926d7..4c765cf979 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -5,6 +5,7 @@ include("worldedit-libs") include("worldedit-bukkit:adapters:adapter-legacy") include("worldedit-bukkit:adapters:adapter-1.17.1") include("worldedit-bukkit:adapters:adapter-1.18") +include("worldedit-bukkit:adapters:adapter-1.18.2") listOf("bukkit", "core", "sponge", "fabric", "forge", "cli").forEach { include("worldedit-libs:$it") diff --git a/worldedit-bukkit/adapters/adapter-1.18.2/build.gradle.kts b/worldedit-bukkit/adapters/adapter-1.18.2/build.gradle.kts new file mode 100644 index 0000000000..31a9e5c851 --- /dev/null +++ b/worldedit-bukkit/adapters/adapter-1.18.2/build.gradle.kts @@ -0,0 +1,6 @@ +applyPaperweightAdapterConfiguration() + +dependencies { + // https://papermc.io/repo/service/rest/repository/browse/maven-public/io/papermc/paper/dev-bundle/ + paperDevBundle("1.18.2-R0.1-20220304.102823-4") +} diff --git a/worldedit-bukkit/adapters/adapter-1.18.2/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/v1_18_R2/PaperweightAdapter.java b/worldedit-bukkit/adapters/adapter-1.18.2/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/v1_18_R2/PaperweightAdapter.java new file mode 100644 index 0000000000..967c7f756d --- /dev/null +++ b/worldedit-bukkit/adapters/adapter-1.18.2/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/v1_18_R2/PaperweightAdapter.java @@ -0,0 +1,968 @@ +/* + * WorldEdit, a Minecraft world manipulation toolkit + * Copyright (C) sk89q + * Copyright (C) WorldEdit team and contributors + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +package com.sk89q.worldedit.bukkit.adapter.impl.v1_18_R2; + +import com.google.common.cache.CacheBuilder; +import com.google.common.cache.CacheLoader; +import com.google.common.cache.LoadingCache; +import com.google.common.collect.ImmutableList; +import com.google.common.collect.Maps; +import com.google.common.collect.Sets; +import com.google.common.util.concurrent.Futures; +import com.mojang.datafixers.util.Either; +import com.mojang.serialization.Lifecycle; +import com.sk89q.jnbt.ByteArrayTag; +import com.sk89q.jnbt.ByteTag; +import com.sk89q.jnbt.CompoundTag; +import com.sk89q.jnbt.DoubleTag; +import com.sk89q.jnbt.EndTag; +import com.sk89q.jnbt.FloatTag; +import com.sk89q.jnbt.IntArrayTag; +import com.sk89q.jnbt.IntTag; +import com.sk89q.jnbt.ListTag; +import com.sk89q.jnbt.LongArrayTag; +import com.sk89q.jnbt.LongTag; +import com.sk89q.jnbt.NBTConstants; +import com.sk89q.jnbt.ShortTag; +import com.sk89q.jnbt.StringTag; +import com.sk89q.jnbt.Tag; +import com.sk89q.worldedit.WorldEditException; +import com.sk89q.worldedit.blocks.BaseItem; +import com.sk89q.worldedit.blocks.BaseItemStack; +import com.sk89q.worldedit.bukkit.BukkitAdapter; +import com.sk89q.worldedit.bukkit.adapter.BukkitImplAdapter; +import com.sk89q.worldedit.bukkit.adapter.Refraction; +import com.sk89q.worldedit.entity.BaseEntity; +import com.sk89q.worldedit.extension.platform.Watchdog; +import com.sk89q.worldedit.extent.Extent; +import com.sk89q.worldedit.internal.Constants; +import com.sk89q.worldedit.internal.block.BlockStateIdAccess; +import com.sk89q.worldedit.internal.wna.WorldNativeAccess; +import com.sk89q.worldedit.math.BlockVector2; +import com.sk89q.worldedit.math.BlockVector3; +import com.sk89q.worldedit.regions.Region; +import com.sk89q.worldedit.registry.state.BooleanProperty; +import com.sk89q.worldedit.registry.state.DirectionalProperty; +import com.sk89q.worldedit.registry.state.EnumProperty; +import com.sk89q.worldedit.registry.state.IntegerProperty; +import com.sk89q.worldedit.registry.state.Property; +import com.sk89q.worldedit.util.Direction; +import com.sk89q.worldedit.util.SideEffect; +import com.sk89q.worldedit.util.formatting.text.Component; +import com.sk89q.worldedit.util.formatting.text.TranslatableComponent; +import com.sk89q.worldedit.util.io.file.SafeFiles; +import com.sk89q.worldedit.world.DataFixer; +import com.sk89q.worldedit.world.RegenOptions; +import com.sk89q.worldedit.world.biome.BiomeType; +import com.sk89q.worldedit.world.biome.BiomeTypes; +import com.sk89q.worldedit.world.block.BaseBlock; +import com.sk89q.worldedit.world.block.BlockState; +import com.sk89q.worldedit.world.block.BlockStateHolder; +import com.sk89q.worldedit.world.block.BlockType; +import com.sk89q.worldedit.world.block.BlockTypes; +import com.sk89q.worldedit.world.item.ItemType; +import net.minecraft.Util; +import net.minecraft.core.BlockPos; +import net.minecraft.core.Registry; +import net.minecraft.network.protocol.game.ClientboundBlockEntityDataPacket; +import net.minecraft.network.protocol.game.ClientboundEntityEventPacket; +import net.minecraft.resources.ResourceKey; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.server.MinecraftServer; +import net.minecraft.server.dedicated.DedicatedServer; +import net.minecraft.server.level.ChunkHolder; +import net.minecraft.server.level.ServerChunkCache; +import net.minecraft.server.level.ServerLevel; +import net.minecraft.server.level.progress.ChunkProgressListener; +import net.minecraft.util.StringRepresentable; +import net.minecraft.util.thread.BlockableEventLoop; +import net.minecraft.world.Clearable; +import net.minecraft.world.InteractionHand; +import net.minecraft.world.InteractionResult; +import net.minecraft.world.entity.Entity; +import net.minecraft.world.entity.EntityType; +import net.minecraft.world.item.Item; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.context.UseOnContext; +import net.minecraft.world.level.ChunkPos; +import net.minecraft.world.level.LevelSettings; +import net.minecraft.world.level.biome.Biome; +import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.block.Blocks; +import net.minecraft.world.level.block.entity.BlockEntity; +import net.minecraft.world.level.block.entity.StructureBlockEntity; +import net.minecraft.world.level.block.state.StateDefinition; +import net.minecraft.world.level.block.state.properties.DirectionProperty; +import net.minecraft.world.level.chunk.ChunkAccess; +import net.minecraft.world.level.chunk.ChunkStatus; +import net.minecraft.world.level.chunk.LevelChunk; +import net.minecraft.world.level.dimension.LevelStem; +import net.minecraft.world.level.levelgen.WorldGenSettings; +import net.minecraft.world.level.storage.LevelStorageSource; +import net.minecraft.world.level.storage.PrimaryLevelData; +import net.minecraft.world.phys.BlockHitResult; +import net.minecraft.world.phys.Vec3; +import org.bukkit.Bukkit; +import org.bukkit.Location; +import org.bukkit.World.Environment; +import org.bukkit.block.data.BlockData; +import org.bukkit.craftbukkit.v1_18_R2.CraftServer; +import org.bukkit.craftbukkit.v1_18_R2.CraftWorld; +import org.bukkit.craftbukkit.v1_18_R2.block.data.CraftBlockData; +import org.bukkit.craftbukkit.v1_18_R2.entity.CraftEntity; +import org.bukkit.craftbukkit.v1_18_R2.entity.CraftPlayer; +import org.bukkit.craftbukkit.v1_18_R2.inventory.CraftItemStack; +import org.bukkit.craftbukkit.v1_18_R2.util.CraftMagicNumbers; +import org.bukkit.entity.Player; +import org.bukkit.event.entity.CreatureSpawnEvent.SpawnReason; +import org.bukkit.generator.ChunkGenerator; +import org.spigotmc.SpigotConfig; +import org.spigotmc.WatchdogThread; + +import java.lang.ref.WeakReference; +import java.lang.reflect.Field; +import java.lang.reflect.InvocationTargetException; +import java.lang.reflect.Method; +import java.nio.file.Files; +import java.nio.file.Path; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Locale; +import java.util.Map; +import java.util.Objects; +import java.util.OptionalInt; +import java.util.OptionalLong; +import java.util.Set; +import java.util.concurrent.CompletableFuture; +import java.util.concurrent.ExecutionException; +import java.util.concurrent.ForkJoinPool; +import java.util.logging.Level; +import java.util.logging.Logger; +import java.util.stream.Collectors; +import javax.annotation.Nullable; + +import static com.google.common.base.Preconditions.checkNotNull; +import static com.google.common.base.Preconditions.checkState; + +public final class PaperweightAdapter implements BukkitImplAdapter { + + private final Logger logger = Logger.getLogger(getClass().getCanonicalName()); + + private final Field serverWorldsField; + private final Method getChunkFutureMethod; + private final Field chunkProviderExecutorField; + private final Watchdog watchdog; + + // ------------------------------------------------------------------------ + // Code that may break between versions of Minecraft + // ------------------------------------------------------------------------ + + public PaperweightAdapter() throws NoSuchFieldException, NoSuchMethodException { + // A simple test + CraftServer.class.cast(Bukkit.getServer()); + + int dataVersion = CraftMagicNumbers.INSTANCE.getDataVersion(); + if (dataVersion != 2975) { + throw new UnsupportedClassVersionError("Not 1.18.2!"); + } + + serverWorldsField = CraftServer.class.getDeclaredField("worlds"); + serverWorldsField.setAccessible(true); + + getChunkFutureMethod = ServerChunkCache.class.getDeclaredMethod( + Refraction.pickName("getChunkFutureMainThread", "c"), + int.class, int.class, ChunkStatus.class, boolean.class + ); + getChunkFutureMethod.setAccessible(true); + + chunkProviderExecutorField = ServerChunkCache.class.getDeclaredField( + Refraction.pickName("mainThreadProcessor", "g") + ); + chunkProviderExecutorField.setAccessible(true); + + new PaperweightDataConverters(CraftMagicNumbers.INSTANCE.getDataVersion(), this).build(ForkJoinPool.commonPool()); + + Watchdog watchdog; + try { + Class.forName("org.spigotmc.WatchdogThread"); + watchdog = new SpigotWatchdog(); + } catch (ClassNotFoundException | NoSuchFieldException e) { + try { + watchdog = new MojangWatchdog(((CraftServer) Bukkit.getServer()).getServer()); + } catch (NoSuchFieldException ex) { + watchdog = null; + } + } + this.watchdog = watchdog; + + try { + Class.forName("org.spigotmc.SpigotConfig"); + SpigotConfig.config.set("world-settings.worldeditregentempworld.verbose", false); + } catch (ClassNotFoundException ignored) { + } + } + + @Override + public DataFixer getDataFixer() { + return PaperweightDataConverters.INSTANCE; + } + + /** + * Read the given NBT data into the given tile entity. + * + * @param tileEntity the tile entity + * @param tag the tag + */ + static void readTagIntoTileEntity(net.minecraft.nbt.CompoundTag tag, BlockEntity tileEntity) { + tileEntity.load(tag); + tileEntity.setChanged(); + } + + /** + * Get the ID string of the given entity. + * + * @param entity the entity + * @return the entity ID + */ + private static String getEntityId(Entity entity) { + return EntityType.getKey(entity.getType()).toString(); + } + + /** + * Create an entity using the given entity ID. + * + * @param id the entity ID + * @param world the world + * @return an entity or null + */ + @Nullable + private static Entity createEntityFromId(String id, net.minecraft.world.level.Level world) { + return EntityType.byString(id).map(t -> t.create(world)).orElse(null); + } + + /** + * Write the given NBT data into the given entity. + * + * @param entity the entity + * @param tag the tag + */ + private static void readTagIntoEntity(net.minecraft.nbt.CompoundTag tag, Entity entity) { + entity.load(tag); + } + + /** + * Write the entity's NBT data to the given tag. + * + * @param entity the entity + * @param tag the tag + */ + private static void readEntityIntoTag(Entity entity, net.minecraft.nbt.CompoundTag tag) { + entity.save(tag); + } + + private static Block getBlockFromType(BlockType blockType) { + return Registry.BLOCK.get(ResourceLocation.tryParse(blockType.getId())); + } + + private static Item getItemFromType(ItemType itemType) { + return Registry.ITEM.get(ResourceLocation.tryParse(itemType.getId())); + } + + @Override + public OptionalInt getInternalBlockStateId(BlockData data) { + net.minecraft.world.level.block.state.BlockState state = ((CraftBlockData) data).getState(); + int combinedId = Block.getId(state); + return combinedId == 0 && state.getBlock() != Blocks.AIR ? OptionalInt.empty() : OptionalInt.of(combinedId); + } + + @Override + public OptionalInt getInternalBlockStateId(BlockState state) { + Block mcBlock = getBlockFromType(state.getBlockType()); + net.minecraft.world.level.block.state.BlockState newState = mcBlock.defaultBlockState(); + Map, Object> states = state.getStates(); + newState = applyProperties(mcBlock.getStateDefinition(), newState, states); + final int combinedId = Block.getId(newState); + return combinedId == 0 && state.getBlockType() != BlockTypes.AIR ? OptionalInt.empty() : OptionalInt.of(combinedId); + } + + @Override + public BlockState getBlock(Location location) { + checkNotNull(location); + + CraftWorld craftWorld = ((CraftWorld) location.getWorld()); + int x = location.getBlockX(); + int y = location.getBlockY(); + int z = location.getBlockZ(); + + final ServerLevel handle = craftWorld.getHandle(); + LevelChunk chunk = handle.getChunk(x >> 4, z >> 4); + final BlockPos blockPos = new BlockPos(x, y, z); + final net.minecraft.world.level.block.state.BlockState blockData = chunk.getBlockState(blockPos); + int internalId = Block.getId(blockData); + BlockState state = BlockStateIdAccess.getBlockStateById(internalId); + if (state == null) { + org.bukkit.block.Block bukkitBlock = location.getBlock(); + state = BukkitAdapter.adapt(bukkitBlock.getBlockData()); + } + + return state; + } + + @Override + public BaseBlock getFullBlock(Location location) { + BlockState state = getBlock(location); + + CraftWorld craftWorld = ((CraftWorld) location.getWorld()); + int x = location.getBlockX(); + int y = location.getBlockY(); + int z = location.getBlockZ(); + + final ServerLevel handle = craftWorld.getHandle(); + LevelChunk chunk = handle.getChunk(x >> 4, z >> 4); + final BlockPos blockPos = new BlockPos(x, y, z); + + // Read the NBT data + BlockEntity te = chunk.getBlockEntity(blockPos); + if (te != null) { + net.minecraft.nbt.CompoundTag tag = te.saveWithId(); + return state.toBaseBlock((CompoundTag) toNative(tag)); + } + + return state.toBaseBlock(); + } + + @Override + public WorldNativeAccess createWorldNativeAccess(org.bukkit.World world) { + return new PaperweightWorldNativeAccess(this, + new WeakReference<>(((CraftWorld) world).getHandle())); + } + + private static net.minecraft.core.Direction adapt(Direction face) { + switch (face) { + case NORTH: + return net.minecraft.core.Direction.NORTH; + case SOUTH: + return net.minecraft.core.Direction.SOUTH; + case WEST: + return net.minecraft.core.Direction.WEST; + case EAST: + return net.minecraft.core.Direction.EAST; + case DOWN: + return net.minecraft.core.Direction.DOWN; + case UP: + default: + return net.minecraft.core.Direction.UP; + } + } + + @SuppressWarnings({"rawtypes", "unchecked"}) + private net.minecraft.world.level.block.state.BlockState applyProperties( + StateDefinition stateContainer, + net.minecraft.world.level.block.state.BlockState newState, + Map, Object> states + ) { + for (Map.Entry, Object> state : states.entrySet()) { + net.minecraft.world.level.block.state.properties.Property property = + stateContainer.getProperty(state.getKey().getName()); + Comparable value = (Comparable) state.getValue(); + // we may need to adapt this value, depending on the source prop + if (property instanceof DirectionProperty) { + Direction dir = (Direction) value; + value = adapt(dir); + } else if (property instanceof net.minecraft.world.level.block.state.properties.EnumProperty) { + String enumName = (String) value; + value = ((net.minecraft.world.level.block.state.properties.EnumProperty) property) + .getValue(enumName).orElseThrow(() -> + new IllegalStateException( + "Enum property " + property.getName() + " does not contain " + enumName + ) + ); + } + + newState = newState.setValue( + (net.minecraft.world.level.block.state.properties.Property) property, + (Comparable) value + ); + } + return newState; + } + + @Override + public BaseEntity getEntity(org.bukkit.entity.Entity entity) { + checkNotNull(entity); + + CraftEntity craftEntity = ((CraftEntity) entity); + Entity mcEntity = craftEntity.getHandle(); + + String id = getEntityId(mcEntity); + + net.minecraft.nbt.CompoundTag tag = new net.minecraft.nbt.CompoundTag(); + readEntityIntoTag(mcEntity, tag); + return new BaseEntity(com.sk89q.worldedit.world.entity.EntityTypes.get(id), (CompoundTag) toNative(tag)); + } + + @Nullable + @Override + public org.bukkit.entity.Entity createEntity(Location location, BaseEntity state) { + checkNotNull(location); + checkNotNull(state); + + CraftWorld craftWorld = ((CraftWorld) location.getWorld()); + ServerLevel worldServer = craftWorld.getHandle(); + + Entity createdEntity = createEntityFromId(state.getType().getId(), craftWorld.getHandle()); + + if (createdEntity != null) { + CompoundTag nativeTag = state.getNbtData(); + if (nativeTag != null) { + net.minecraft.nbt.CompoundTag tag = (net.minecraft.nbt.CompoundTag) fromNative(nativeTag); + for (String name : Constants.NO_COPY_ENTITY_NBT_FIELDS) { + tag.remove(name); + } + readTagIntoEntity(tag, createdEntity); + } + + createdEntity.absMoveTo(location.getX(), location.getY(), location.getZ(), location.getYaw(), location.getPitch()); + + worldServer.addFreshEntity(createdEntity, SpawnReason.CUSTOM); + return createdEntity.getBukkitEntity(); + } else { + return null; + } + } + + @Override + public Component getRichBlockName(BlockType blockType) { + return TranslatableComponent.of(getBlockFromType(blockType).getDescriptionId()); + } + + @Override + public Component getRichItemName(ItemType itemType) { + return TranslatableComponent.of(getItemFromType(itemType).getDescriptionId()); + } + + @Override + public Component getRichItemName(BaseItemStack itemStack) { + return TranslatableComponent.of(CraftItemStack.asNMSCopy(BukkitAdapter.adapt(itemStack)).getDescriptionId()); + } + + @SuppressWarnings({ "unchecked", "rawtypes" }) + @Override + public Map> getProperties(BlockType blockType) { + Map> properties = Maps.newTreeMap(String::compareTo); + Block block = getBlockFromType(blockType); + StateDefinition blockStateList = + block.getStateDefinition(); + for (net.minecraft.world.level.block.state.properties.Property state : blockStateList.getProperties()) { + Property property; + if (state instanceof net.minecraft.world.level.block.state.properties.BooleanProperty) { + property = new BooleanProperty(state.getName(), ImmutableList.copyOf(state.getPossibleValues())); + } else if (state instanceof DirectionProperty) { + property = new DirectionalProperty(state.getName(), + (List) state.getPossibleValues().stream().map(e -> Direction.valueOf(((StringRepresentable) e).getSerializedName().toUpperCase(Locale.ROOT))).collect(Collectors.toList())); + } else if (state instanceof net.minecraft.world.level.block.state.properties.EnumProperty) { + property = new EnumProperty(state.getName(), + (List) state.getPossibleValues().stream().map(e -> ((StringRepresentable) e).getSerializedName()).collect(Collectors.toList())); + } else if (state instanceof net.minecraft.world.level.block.state.properties.IntegerProperty) { + property = new IntegerProperty(state.getName(), ImmutableList.copyOf(state.getPossibleValues())); + } else { + throw new IllegalArgumentException("WorldEdit needs an update to support " + state.getClass().getSimpleName()); + } + + properties.put(property.getName(), property); + } + return properties; + } + + @Override + public void sendFakeNBT(Player player, BlockVector3 pos, CompoundTag nbtData) { + ((CraftPlayer) player).getHandle().networkManager.send(ClientboundBlockEntityDataPacket.create( + new StructureBlockEntity( + new BlockPos(pos.getBlockX(), pos.getBlockY(), pos.getBlockZ()), + Blocks.STRUCTURE_BLOCK.defaultBlockState() + ), + __ -> (net.minecraft.nbt.CompoundTag) fromNative(nbtData) + )); + } + + @Override + public void sendFakeOP(Player player) { + ((CraftPlayer) player).getHandle().networkManager.send(new ClientboundEntityEventPacket( + ((CraftPlayer) player).getHandle(), (byte) 28 + )); + } + + @Override + public org.bukkit.inventory.ItemStack adapt(BaseItemStack item) { + ItemStack stack = new ItemStack(Registry.ITEM.get(ResourceLocation.tryParse(item.getType().getId())), item.getAmount()); + stack.setTag(((net.minecraft.nbt.CompoundTag) fromNative(item.getNbtData()))); + return CraftItemStack.asCraftMirror(stack); + } + + @Override + public BaseItemStack adapt(org.bukkit.inventory.ItemStack itemStack) { + final ItemStack nmsStack = CraftItemStack.asNMSCopy(itemStack); + final BaseItemStack weStack = new BaseItemStack(BukkitAdapter.asItemType(itemStack.getType()), itemStack.getAmount()); + weStack.setNbtData(((CompoundTag) toNative(nmsStack.getTag()))); + return weStack; + } + + private final LoadingCache fakePlayers + = CacheBuilder.newBuilder().weakKeys().softValues().build(CacheLoader.from(PaperweightFakePlayer::new)); + + @Override + public boolean simulateItemUse(org.bukkit.World world, BlockVector3 position, BaseItem item, Direction face) { + CraftWorld craftWorld = (CraftWorld) world; + ServerLevel worldServer = craftWorld.getHandle(); + ItemStack stack = CraftItemStack.asNMSCopy(BukkitAdapter.adapt(item instanceof BaseItemStack + ? ((BaseItemStack) item) : new BaseItemStack(item.getType(), item.getNbtData(), 1))); + stack.setTag((net.minecraft.nbt.CompoundTag) fromNative(item.getNbtData())); + + PaperweightFakePlayer fakePlayer; + try { + fakePlayer = fakePlayers.get(worldServer); + } catch (ExecutionException ignored) { + return false; + } + fakePlayer.setItemInHand(InteractionHand.MAIN_HAND, stack); + fakePlayer.absMoveTo(position.getBlockX(), position.getBlockY(), position.getBlockZ(), + (float) face.toVector().toYaw(), (float) face.toVector().toPitch()); + + final BlockPos blockPos = new BlockPos(position.getBlockX(), position.getBlockY(), position.getBlockZ()); + final Vec3 blockVec = Vec3.atLowerCornerOf(blockPos); + final net.minecraft.core.Direction enumFacing = adapt(face); + BlockHitResult rayTrace = new BlockHitResult(blockVec, enumFacing, blockPos, false); + UseOnContext context = new UseOnContext(fakePlayer, InteractionHand.MAIN_HAND, rayTrace); + InteractionResult result = stack.useOn(context, InteractionHand.MAIN_HAND); + if (result != InteractionResult.SUCCESS) { + if (worldServer.getBlockState(blockPos).use(worldServer, fakePlayer, InteractionHand.MAIN_HAND, rayTrace).consumesAction()) { + result = InteractionResult.SUCCESS; + } else { + result = stack.getItem().use(worldServer, fakePlayer, InteractionHand.MAIN_HAND).getResult(); + } + } + + return result == InteractionResult.SUCCESS; + } + + @Override + public boolean canPlaceAt(org.bukkit.World world, BlockVector3 position, BlockState blockState) { + int internalId = BlockStateIdAccess.getBlockStateId(blockState); + net.minecraft.world.level.block.state.BlockState blockData = Block.stateById(internalId); + return blockData.canSurvive(((CraftWorld) world).getHandle(), new BlockPos(position.getX(), position.getY(), position.getZ())); + } + + @Override + public boolean regenerate(org.bukkit.World bukkitWorld, Region region, Extent extent, RegenOptions options) { + try { + doRegen(bukkitWorld, region, extent, options); + } catch (Exception e) { + throw new IllegalStateException("Regen failed.", e); + } + + return true; + } + + private void doRegen(org.bukkit.World bukkitWorld, Region region, Extent extent, RegenOptions options) throws Exception { + Environment env = bukkitWorld.getEnvironment(); + ChunkGenerator gen = bukkitWorld.getGenerator(); + + Path tempDir = Files.createTempDirectory("WorldEditWorldGen"); + LevelStorageSource levelStorage = LevelStorageSource.createDefault(tempDir); + ResourceKey worldDimKey = getWorldDimKey(env); + try (LevelStorageSource.LevelStorageAccess session = levelStorage.createAccess("worldeditregentempworld", worldDimKey)) { + ServerLevel originalWorld = ((CraftWorld) bukkitWorld).getHandle(); + PrimaryLevelData levelProperties = (PrimaryLevelData) originalWorld.getServer() + .getWorldData().overworldData(); + WorldGenSettings originalOpts = levelProperties.worldGenSettings(); + + long seed = options.getSeed().orElse(originalWorld.getSeed()); + WorldGenSettings newOpts = options.getSeed().isPresent() + ? originalOpts.withSeed(levelProperties.isHardcore(), OptionalLong.of(seed)) + : originalOpts; + + LevelSettings newWorldSettings = new LevelSettings( + "worldeditregentempworld", + levelProperties.settings.gameType(), + levelProperties.settings.hardcore(), + levelProperties.settings.difficulty(), + levelProperties.settings.allowCommands(), + levelProperties.settings.gameRules(), + levelProperties.settings.getDataPackConfig() + ); + PrimaryLevelData newWorldData = new PrimaryLevelData(newWorldSettings, newOpts, Lifecycle.stable()); + + ServerLevel freshWorld = new ServerLevel( + originalWorld.getServer(), + originalWorld.getServer().executor, + session, newWorldData, + originalWorld.dimension(), + originalWorld.dimensionTypeRegistration(), + new NoOpWorldLoadListener(), + newOpts.dimensions().get(worldDimKey).generator(), + originalWorld.isDebug(), + seed, + ImmutableList.of(), + false, + env, gen, + bukkitWorld.getBiomeProvider() + ); + try { + regenForWorld(region, extent, freshWorld, options); + } finally { + freshWorld.getChunkSource().close(false); + } + } finally { + try { + @SuppressWarnings("unchecked") + Map map = (Map) serverWorldsField.get(Bukkit.getServer()); + map.remove("worldeditregentempworld"); + } catch (IllegalAccessException ignored) { + } + SafeFiles.tryHardToDeleteDir(tempDir); + } + } + + private BiomeType adapt(ServerLevel serverWorld, Biome origBiome) { + ResourceLocation key = serverWorld.registryAccess().registryOrThrow(Registry.BIOME_REGISTRY).getKey(origBiome); + if (key == null) { + return null; + } + return BiomeTypes.get(key.toString()); + } + + @SuppressWarnings("unchecked") + private void regenForWorld(Region region, Extent extent, ServerLevel serverWorld, RegenOptions options) throws WorldEditException { + List> chunkLoadings = submitChunkLoadTasks(region, serverWorld); + BlockableEventLoop executor; + try { + executor = (BlockableEventLoop) chunkProviderExecutorField.get(serverWorld.getChunkSource()); + } catch (IllegalAccessException e) { + throw new IllegalStateException("Couldn't get executor for chunk loading.", e); + } + executor.managedBlock(() -> { + // bail out early if a future fails + if (chunkLoadings.stream().anyMatch(ftr -> + ftr.isDone() && Futures.getUnchecked(ftr) == null + )) { + return false; + } + return chunkLoadings.stream().allMatch(CompletableFuture::isDone); + }); + Map chunks = new HashMap<>(); + for (CompletableFuture future : chunkLoadings) { + @Nullable + ChunkAccess chunk = future.getNow(null); + checkState(chunk != null, "Failed to generate a chunk, regen failed."); + chunks.put(chunk.getPos(), chunk); + } + + for (BlockVector3 vec : region) { + BlockPos pos = new BlockPos(vec.getBlockX(), vec.getBlockY(), vec.getBlockZ()); + ChunkAccess chunk = chunks.get(new ChunkPos(pos)); + final net.minecraft.world.level.block.state.BlockState blockData = chunk.getBlockState(pos); + int internalId = Block.getId(blockData); + BlockStateHolder state = BlockStateIdAccess.getBlockStateById(internalId); + Objects.requireNonNull(state); + BlockEntity blockEntity = chunk.getBlockEntity(pos); + if (blockEntity != null) { + net.minecraft.nbt.CompoundTag tag = blockEntity.saveWithId(); + state = state.toBaseBlock(((CompoundTag) toNative(tag))); + } + extent.setBlock(vec, state.toBaseBlock()); + if (options.shouldRegenBiomes()) { + Biome origBiome = chunk.getNoiseBiome(vec.getX(), vec.getY(), vec.getZ()).value(); + BiomeType adaptedBiome = adapt(serverWorld, origBiome); + if (adaptedBiome != null) { + extent.setBiome(vec, adaptedBiome); + } + } + } + } + + @SuppressWarnings("unchecked") + private List> submitChunkLoadTasks(Region region, ServerLevel serverWorld) { + ServerChunkCache chunkManager = serverWorld.getChunkSource(); + List> chunkLoadings = new ArrayList<>(); + // Pre-gen all the chunks + for (BlockVector2 chunk : region.getChunks()) { + try { + //noinspection unchecked + chunkLoadings.add( + ((CompletableFuture>) + getChunkFutureMethod.invoke(chunkManager, chunk.getX(), chunk.getZ(), ChunkStatus.FEATURES, true)) + .thenApply(either -> either.left().orElse(null)) + ); + } catch (IllegalAccessException | InvocationTargetException e) { + throw new IllegalStateException("Couldn't load chunk for regen.", e); + } + } + return chunkLoadings; + } + + private ResourceKey getWorldDimKey(Environment env) { + switch (env) { + case NETHER: + return LevelStem.NETHER; + case THE_END: + return LevelStem.END; + case NORMAL: + default: + return LevelStem.OVERWORLD; + } + } + + private static final Set SUPPORTED_SIDE_EFFECTS = Sets.immutableEnumSet( + SideEffect.NEIGHBORS, + SideEffect.LIGHTING, + SideEffect.VALIDATION, + SideEffect.ENTITY_AI, + SideEffect.EVENTS, + SideEffect.UPDATE + ); + + @Override + public Set getSupportedSideEffects() { + return SUPPORTED_SIDE_EFFECTS; + } + + @Override + public boolean clearContainerBlockContents(org.bukkit.World world, BlockVector3 pt) { + ServerLevel originalWorld = ((CraftWorld) world).getHandle(); + + BlockEntity entity = originalWorld.getBlockEntity(new BlockPos(pt.getBlockX(), pt.getBlockY(), pt.getBlockZ())); + if (entity instanceof Clearable) { + ((Clearable) entity).clearContent(); + return true; + } + return false; + } + + // ------------------------------------------------------------------------ + // Code that is less likely to break + // ------------------------------------------------------------------------ + + /** + * Converts from a non-native NMS NBT structure to a native WorldEdit NBT + * structure. + * + * @param foreign non-native NMS NBT structure + * @return native WorldEdit NBT structure + */ + Tag toNative(net.minecraft.nbt.Tag foreign) { + if (foreign == null) { + return null; + } + if (foreign instanceof net.minecraft.nbt.CompoundTag) { + Map values = new HashMap<>(); + Set foreignKeys = ((net.minecraft.nbt.CompoundTag) foreign).getAllKeys(); + + for (String str : foreignKeys) { + net.minecraft.nbt.Tag base = ((net.minecraft.nbt.CompoundTag) foreign).get(str); + values.put(str, toNative(base)); + } + return new CompoundTag(values); + } else if (foreign instanceof net.minecraft.nbt.ByteTag) { + return new ByteTag(((net.minecraft.nbt.ByteTag) foreign).getAsByte()); + } else if (foreign instanceof net.minecraft.nbt.ByteArrayTag) { + return new ByteArrayTag(((net.minecraft.nbt.ByteArrayTag) foreign).getAsByteArray()); + } else if (foreign instanceof net.minecraft.nbt.DoubleTag) { + return new DoubleTag(((net.minecraft.nbt.DoubleTag) foreign).getAsDouble()); + } else if (foreign instanceof net.minecraft.nbt.FloatTag) { + return new FloatTag(((net.minecraft.nbt.FloatTag) foreign).getAsFloat()); + } else if (foreign instanceof net.minecraft.nbt.IntTag) { + return new IntTag(((net.minecraft.nbt.IntTag) foreign).getAsInt()); + } else if (foreign instanceof net.minecraft.nbt.IntArrayTag) { + return new IntArrayTag(((net.minecraft.nbt.IntArrayTag) foreign).getAsIntArray()); + } else if (foreign instanceof net.minecraft.nbt.LongArrayTag) { + return new LongArrayTag(((net.minecraft.nbt.LongArrayTag) foreign).getAsLongArray()); + } else if (foreign instanceof net.minecraft.nbt.ListTag) { + try { + return toNativeList((net.minecraft.nbt.ListTag) foreign); + } catch (Throwable e) { + logger.log(Level.WARNING, "Failed to convert net.minecraft.nbt.ListTag", e); + return new ListTag(ByteTag.class, new ArrayList()); + } + } else if (foreign instanceof net.minecraft.nbt.LongTag) { + return new LongTag(((net.minecraft.nbt.LongTag) foreign).getAsLong()); + } else if (foreign instanceof net.minecraft.nbt.ShortTag) { + return new ShortTag(((net.minecraft.nbt.ShortTag) foreign).getAsShort()); + } else if (foreign instanceof net.minecraft.nbt.StringTag) { + return new StringTag(foreign.getAsString()); + } else if (foreign instanceof net.minecraft.nbt.EndTag) { + return new EndTag(); + } else { + throw new IllegalArgumentException("Don't know how to make native " + foreign.getClass().getCanonicalName()); + } + } + + /** + * Convert a foreign NBT list tag into a native WorldEdit one. + * + * @param foreign the foreign tag + * @return the converted tag + * @throws SecurityException on error + * @throws IllegalArgumentException on error + */ + private ListTag toNativeList(net.minecraft.nbt.ListTag foreign) throws SecurityException, IllegalArgumentException { + List values = new ArrayList<>(); + int type = foreign.getElementType(); + + for (net.minecraft.nbt.Tag tag : foreign) { + values.add(toNative(tag)); + } + + Class cls = NBTConstants.getClassFromType(type); + return new ListTag(cls, values); + } + + /** + * Converts a WorldEdit-native NBT structure to a NMS structure. + * + * @param foreign structure to convert + * @return non-native structure + */ + net.minecraft.nbt.Tag fromNative(Tag foreign) { + if (foreign == null) { + return null; + } + if (foreign instanceof CompoundTag) { + net.minecraft.nbt.CompoundTag tag = new net.minecraft.nbt.CompoundTag(); + for (Map.Entry entry : ((CompoundTag) foreign) + .getValue().entrySet()) { + tag.put(entry.getKey(), fromNative(entry.getValue())); + } + return tag; + } else if (foreign instanceof ByteTag) { + return net.minecraft.nbt.ByteTag.valueOf(((ByteTag) foreign).getValue()); + } else if (foreign instanceof ByteArrayTag) { + return new net.minecraft.nbt.ByteArrayTag(((ByteArrayTag) foreign).getValue()); + } else if (foreign instanceof DoubleTag) { + return net.minecraft.nbt.DoubleTag.valueOf(((DoubleTag) foreign).getValue()); + } else if (foreign instanceof FloatTag) { + return net.minecraft.nbt.FloatTag.valueOf(((FloatTag) foreign).getValue()); + } else if (foreign instanceof IntTag) { + return net.minecraft.nbt.IntTag.valueOf(((IntTag) foreign).getValue()); + } else if (foreign instanceof IntArrayTag) { + return new net.minecraft.nbt.IntArrayTag(((IntArrayTag) foreign).getValue()); + } else if (foreign instanceof LongArrayTag) { + return new net.minecraft.nbt.LongArrayTag(((LongArrayTag) foreign).getValue()); + } else if (foreign instanceof ListTag) { + net.minecraft.nbt.ListTag tag = new net.minecraft.nbt.ListTag(); + ListTag foreignList = (ListTag) foreign; + for (Tag t : foreignList.getValue()) { + tag.add(fromNative(t)); + } + return tag; + } else if (foreign instanceof LongTag) { + return net.minecraft.nbt.LongTag.valueOf(((LongTag) foreign).getValue()); + } else if (foreign instanceof ShortTag) { + return net.minecraft.nbt.ShortTag.valueOf(((ShortTag) foreign).getValue()); + } else if (foreign instanceof StringTag) { + return net.minecraft.nbt.StringTag.valueOf(((StringTag) foreign).getValue()); + } else if (foreign instanceof EndTag) { + return net.minecraft.nbt.EndTag.INSTANCE; + } else { + throw new IllegalArgumentException("Don't know how to make NMS " + foreign.getClass().getCanonicalName()); + } + } + + @Override + public boolean supportsWatchdog() { + return watchdog != null; + } + + @Override + public void tickWatchdog() { + watchdog.tick(); + } + + private class SpigotWatchdog implements Watchdog { + private final Field instanceField; + private final Field lastTickField; + + SpigotWatchdog() throws NoSuchFieldException { + Field instanceField = WatchdogThread.class.getDeclaredField("instance"); + instanceField.setAccessible(true); + this.instanceField = instanceField; + + Field lastTickField = WatchdogThread.class.getDeclaredField("lastTick"); + lastTickField.setAccessible(true); + this.lastTickField = lastTickField; + } + + @Override + public void tick() { + try { + WatchdogThread instance = (WatchdogThread) this.instanceField.get(null); + if ((long) lastTickField.get(instance) != 0) { + WatchdogThread.tick(); + } + } catch (IllegalAccessException e) { + logger.log(Level.WARNING, "Failed to tick watchdog", e); + } + } + } + + private static class MojangWatchdog implements Watchdog { + private final DedicatedServer server; + private final Field tickField; + + MojangWatchdog(DedicatedServer server) throws NoSuchFieldException { + this.server = server; + Field tickField = MinecraftServer.class.getDeclaredField( + Refraction.pickName("nextTickTime", "ao") + ); + tickField.setAccessible(true); + this.tickField = tickField; + } + + @Override + public void tick() { + try { + tickField.set(server, Util.getMillis()); + } catch (IllegalAccessException ignored) { + } + } + } + + private static class NoOpWorldLoadListener implements ChunkProgressListener { + @Override + public void updateSpawnPos(ChunkPos spawnPos) { + } + + @Override + public void onStatusChange(ChunkPos pos, @org.jetbrains.annotations.Nullable ChunkStatus status) { + } + + @Override + public void start() { + } + + @Override + public void stop() { + } + + @Override + public void setChunkRadius(int radius) { + } + } +} diff --git a/worldedit-bukkit/adapters/adapter-1.18.2/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/v1_18_R2/PaperweightDataConverters.java b/worldedit-bukkit/adapters/adapter-1.18.2/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/v1_18_R2/PaperweightDataConverters.java new file mode 100644 index 0000000000..8678a34f5b --- /dev/null +++ b/worldedit-bukkit/adapters/adapter-1.18.2/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/v1_18_R2/PaperweightDataConverters.java @@ -0,0 +1,2795 @@ +/* + * WorldEdit, a Minecraft world manipulation toolkit + * Copyright (C) sk89q + * Copyright (C) WorldEdit team and contributors + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +package com.sk89q.worldedit.bukkit.adapter.impl.v1_18_R2; + +import com.google.common.collect.Lists; +import com.google.common.collect.Maps; +import com.google.common.collect.Sets; +import com.google.gson.Gson; +import com.google.gson.GsonBuilder; +import com.google.gson.JsonArray; +import com.google.gson.JsonDeserializationContext; +import com.google.gson.JsonDeserializer; +import com.google.gson.JsonElement; +import com.google.gson.JsonParseException; +import com.mojang.datafixers.DSL.TypeReference; +import com.mojang.datafixers.DataFixer; +import com.mojang.datafixers.DataFixerBuilder; +import com.mojang.datafixers.schemas.Schema; +import com.mojang.serialization.Dynamic; +import com.sk89q.jnbt.CompoundTag; +import net.minecraft.core.Direction; +import net.minecraft.nbt.NbtOps; +import net.minecraft.network.chat.Component; +import net.minecraft.network.chat.MutableComponent; +import net.minecraft.network.chat.TextComponent; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.util.GsonHelper; +import net.minecraft.util.StringUtil; +import net.minecraft.util.datafix.DataFixers; +import net.minecraft.util.datafix.fixes.References; +import net.minecraft.world.item.DyeColor; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; + +import java.lang.reflect.Type; +import java.util.ArrayList; +import java.util.EnumMap; +import java.util.HashMap; +import java.util.Iterator; +import java.util.List; +import java.util.Locale; +import java.util.Map; +import java.util.Random; +import java.util.Set; +import java.util.UUID; +import java.util.concurrent.Executor; +import java.util.stream.Collectors; +import javax.annotation.Nullable; + +/** + * Handles converting all Pre 1.13.2 data using the Legacy DataFix System (ported to 1.13.2) + * + * We register a DFU Fixer per Legacy Data Version and apply the fixes using legacy strategy + * which is safer, faster and cleaner code. + * + * The pre DFU code did not fail when the Source version was unknown. + * + * This class also provides util methods for converting compounds to wrap the update call to + * receive the source version in the compound + */ +@SuppressWarnings({ "rawtypes", "unchecked" }) +class PaperweightDataConverters extends DataFixerBuilder implements com.sk89q.worldedit.world.DataFixer { + + @SuppressWarnings("unchecked") + @Override + public T fixUp(FixType type, T original, int srcVer) { + if (type == FixTypes.CHUNK) { + return (T) fixChunk((CompoundTag) original, srcVer); + } else if (type == FixTypes.BLOCK_ENTITY) { + return (T) fixBlockEntity((CompoundTag) original, srcVer); + } else if (type == FixTypes.ENTITY) { + return (T) fixEntity((CompoundTag) original, srcVer); + } else if (type == FixTypes.BLOCK_STATE) { + return (T) fixBlockState((String) original, srcVer); + } else if (type == FixTypes.ITEM_TYPE) { + return (T) fixItemType((String) original, srcVer); + } else if (type == FixTypes.BIOME) { + return (T) fixBiome((String) original, srcVer); + } + return original; + } + + private CompoundTag fixChunk(CompoundTag originalChunk, int srcVer) { + net.minecraft.nbt.CompoundTag tag = (net.minecraft.nbt.CompoundTag) adapter.fromNative(originalChunk); + net.minecraft.nbt.CompoundTag fixed = convert(LegacyType.CHUNK, tag, srcVer); + return (CompoundTag) adapter.toNative(fixed); + } + + private CompoundTag fixBlockEntity(CompoundTag origTileEnt, int srcVer) { + net.minecraft.nbt.CompoundTag tag = (net.minecraft.nbt.CompoundTag) adapter.fromNative(origTileEnt); + net.minecraft.nbt.CompoundTag fixed = convert(LegacyType.BLOCK_ENTITY, tag, srcVer); + return (CompoundTag) adapter.toNative(fixed); + } + + private CompoundTag fixEntity(CompoundTag origEnt, int srcVer) { + net.minecraft.nbt.CompoundTag tag = (net.minecraft.nbt.CompoundTag) adapter.fromNative(origEnt); + net.minecraft.nbt.CompoundTag fixed = convert(LegacyType.ENTITY, tag, srcVer); + return (CompoundTag) adapter.toNative(fixed); + } + + private String fixBlockState(String blockState, int srcVer) { + net.minecraft.nbt.CompoundTag stateNBT = stateToNBT(blockState); + Dynamic dynamic = new Dynamic<>(OPS_NBT, stateNBT); + net.minecraft.nbt.CompoundTag fixed = (net.minecraft.nbt.CompoundTag) INSTANCE.fixer.update(References.BLOCK_STATE, dynamic, srcVer, DATA_VERSION).getValue(); + return nbtToState(fixed); + } + + private String nbtToState(net.minecraft.nbt.CompoundTag tagCompound) { + StringBuilder sb = new StringBuilder(); + sb.append(tagCompound.getString("Name")); + if (tagCompound.contains("Properties", 10)) { + sb.append('['); + net.minecraft.nbt.CompoundTag props = tagCompound.getCompound("Properties"); + sb.append(props.getAllKeys().stream().map(k -> k + "=" + props.getString(k).replace("\"", "")).collect(Collectors.joining(","))); + sb.append(']'); + } + return sb.toString(); + } + + private static net.minecraft.nbt.CompoundTag stateToNBT(String blockState) { + int propIdx = blockState.indexOf('['); + net.minecraft.nbt.CompoundTag tag = new net.minecraft.nbt.CompoundTag(); + if (propIdx < 0) { + tag.putString("Name", blockState); + } else { + tag.putString("Name", blockState.substring(0, propIdx)); + net.minecraft.nbt.CompoundTag propTag = new net.minecraft.nbt.CompoundTag(); + String props = blockState.substring(propIdx + 1, blockState.length() - 1); + String[] propArr = props.split(","); + for (String pair : propArr) { + final String[] split = pair.split("="); + propTag.putString(split[0], split[1]); + } + tag.put("Properties", propTag); + } + return tag; + } + + private String fixBiome(String key, int srcVer) { + return fixName(key, srcVer, References.BIOME); + } + + private String fixItemType(String key, int srcVer) { + return fixName(key, srcVer, References.ITEM_NAME); + } + + private static String fixName(String key, int srcVer, TypeReference type) { + return INSTANCE.fixer.update(type, new Dynamic<>(OPS_NBT, net.minecraft.nbt.StringTag.valueOf(key)), srcVer, DATA_VERSION) + .getValue().getAsString(); + } + + private final PaperweightAdapter adapter; + + private static final NbtOps OPS_NBT = NbtOps.INSTANCE; + private static final int LEGACY_VERSION = 1343; + private static int DATA_VERSION; + static PaperweightDataConverters INSTANCE; + + private final Map> converters = new EnumMap<>(LegacyType.class); + private final Map> inspectors = new EnumMap<>(LegacyType.class); + + // Set on build + private DataFixer fixer; + private static final Map DFU_TO_LEGACY = new HashMap<>(); + + public enum LegacyType { + LEVEL(References.LEVEL), + PLAYER(References.PLAYER), + CHUNK(References.CHUNK), + BLOCK_ENTITY(References.BLOCK_ENTITY), + ENTITY(References.ENTITY), + ITEM_INSTANCE(References.ITEM_STACK), + OPTIONS(References.OPTIONS), + STRUCTURE(References.STRUCTURE); + + private final TypeReference type; + + LegacyType(TypeReference type) { + this.type = type; + DFU_TO_LEGACY.put(type.typeName(), this); + } + + public TypeReference getDFUType() { + return type; + } + } + + PaperweightDataConverters(int dataVersion, PaperweightAdapter adapter) { + super(dataVersion); + DATA_VERSION = dataVersion; + INSTANCE = this; + this.adapter = adapter; + registerConverters(); + registerInspectors(); + } + + + // Called after fixers are built and ready for FIXING + @Override + public DataFixer build(final Executor executor) { + return this.fixer = new WrappedDataFixer(DataFixers.getDataFixer()); + } + + @SuppressWarnings("unchecked") + private class WrappedDataFixer implements DataFixer { + private final DataFixer realFixer; + + WrappedDataFixer(DataFixer realFixer) { + this.realFixer = realFixer; + } + + @Override + public Dynamic update(TypeReference type, Dynamic dynamic, int sourceVer, int targetVer) { + LegacyType legacyType = DFU_TO_LEGACY.get(type.typeName()); + if (sourceVer < LEGACY_VERSION && legacyType != null) { + net.minecraft.nbt.CompoundTag cmp = (net.minecraft.nbt.CompoundTag) dynamic.getValue(); + int desiredVersion = Math.min(targetVer, LEGACY_VERSION); + + cmp = convert(legacyType, cmp, sourceVer, desiredVersion); + sourceVer = desiredVersion; + dynamic = new Dynamic(OPS_NBT, cmp); + } + return realFixer.update(type, dynamic, sourceVer, targetVer); + } + + private net.minecraft.nbt.CompoundTag convert(LegacyType type, net.minecraft.nbt.CompoundTag cmp, int sourceVer, int desiredVersion) { + List converters = PaperweightDataConverters.this.converters.get(type); + if (converters != null && !converters.isEmpty()) { + for (DataConverter converter : converters) { + int dataVersion = converter.getDataVersion(); + if (dataVersion > sourceVer && dataVersion <= desiredVersion) { + cmp = converter.convert(cmp); + } + } + } + + List inspectors = PaperweightDataConverters.this.inspectors.get(type); + if (inspectors != null && !inspectors.isEmpty()) { + for (DataInspector inspector : inspectors) { + cmp = inspector.inspect(cmp, sourceVer, desiredVersion); + } + } + + return cmp; + } + + @Override + public Schema getSchema(int i) { + return realFixer.getSchema(i); + } + } + + public static net.minecraft.nbt.CompoundTag convert(LegacyType type, net.minecraft.nbt.CompoundTag cmp) { + return convert(type.getDFUType(), cmp); + } + + public static net.minecraft.nbt.CompoundTag convert(LegacyType type, net.minecraft.nbt.CompoundTag cmp, int sourceVer) { + return convert(type.getDFUType(), cmp, sourceVer); + } + + public static net.minecraft.nbt.CompoundTag convert(LegacyType type, net.minecraft.nbt.CompoundTag cmp, int sourceVer, int targetVer) { + return convert(type.getDFUType(), cmp, sourceVer, targetVer); + } + + public static net.minecraft.nbt.CompoundTag convert(TypeReference type, net.minecraft.nbt.CompoundTag cmp) { + int i = cmp.contains("DataVersion", 99) ? cmp.getInt("DataVersion") : -1; + return convert(type, cmp, i); + } + + public static net.minecraft.nbt.CompoundTag convert(TypeReference type, net.minecraft.nbt.CompoundTag cmp, int sourceVer) { + return convert(type, cmp, sourceVer, DATA_VERSION); + } + + public static net.minecraft.nbt.CompoundTag convert(TypeReference type, net.minecraft.nbt.CompoundTag cmp, int sourceVer, int targetVer) { + if (sourceVer >= targetVer) { + return cmp; + } + return (net.minecraft.nbt.CompoundTag) INSTANCE.fixer.update(type, new Dynamic<>(OPS_NBT, cmp), sourceVer, targetVer).getValue(); + } + + + public interface DataInspector { + net.minecraft.nbt.CompoundTag inspect(net.minecraft.nbt.CompoundTag cmp, int sourceVer, int targetVer); + } + + public interface DataConverter { + + int getDataVersion(); + + net.minecraft.nbt.CompoundTag convert(net.minecraft.nbt.CompoundTag cmp); + } + + + private void registerInspector(LegacyType type, DataInspector inspector) { + this.inspectors.computeIfAbsent(type, k -> new ArrayList<>()).add(inspector); + } + + private void registerConverter(LegacyType type, DataConverter converter) { + int version = converter.getDataVersion(); + + List list = this.converters.computeIfAbsent(type, k -> new ArrayList<>()); + if (!list.isEmpty() && list.get(list.size() - 1).getDataVersion() > version) { + for (int j = 0; j < list.size(); ++j) { + if (list.get(j).getDataVersion() > version) { + list.add(j, converter); + break; + } + } + } else { + list.add(converter); + } + } + + private void registerInspectors() { + registerEntityItemList("EntityHorseDonkey", "SaddleItem", "Items"); + registerEntityItemList("EntityHorseMule", "Items"); + registerEntityItemList("EntityMinecartChest", "Items"); + registerEntityItemList("EntityMinecartHopper", "Items"); + registerEntityItemList("EntityVillager", "Inventory"); + registerEntityItemListEquipment("EntityArmorStand"); + registerEntityItemListEquipment("EntityBat"); + registerEntityItemListEquipment("EntityBlaze"); + registerEntityItemListEquipment("EntityCaveSpider"); + registerEntityItemListEquipment("EntityChicken"); + registerEntityItemListEquipment("EntityCow"); + registerEntityItemListEquipment("EntityCreeper"); + registerEntityItemListEquipment("EntityEnderDragon"); + registerEntityItemListEquipment("EntityEnderman"); + registerEntityItemListEquipment("EntityEndermite"); + registerEntityItemListEquipment("EntityEvoker"); + registerEntityItemListEquipment("EntityGhast"); + registerEntityItemListEquipment("EntityGiantZombie"); + registerEntityItemListEquipment("EntityGuardian"); + registerEntityItemListEquipment("EntityGuardianElder"); + registerEntityItemListEquipment("EntityHorse"); + registerEntityItemListEquipment("EntityHorseDonkey"); + registerEntityItemListEquipment("EntityHorseMule"); + registerEntityItemListEquipment("EntityHorseSkeleton"); + registerEntityItemListEquipment("EntityHorseZombie"); + registerEntityItemListEquipment("EntityIronGolem"); + registerEntityItemListEquipment("EntityMagmaCube"); + registerEntityItemListEquipment("EntityMushroomCow"); + registerEntityItemListEquipment("EntityOcelot"); + registerEntityItemListEquipment("EntityPig"); + registerEntityItemListEquipment("EntityPigZombie"); + registerEntityItemListEquipment("EntityRabbit"); + registerEntityItemListEquipment("EntitySheep"); + registerEntityItemListEquipment("EntityShulker"); + registerEntityItemListEquipment("EntitySilverfish"); + registerEntityItemListEquipment("EntitySkeleton"); + registerEntityItemListEquipment("EntitySkeletonStray"); + registerEntityItemListEquipment("EntitySkeletonWither"); + registerEntityItemListEquipment("EntitySlime"); + registerEntityItemListEquipment("EntitySnowman"); + registerEntityItemListEquipment("EntitySpider"); + registerEntityItemListEquipment("EntitySquid"); + registerEntityItemListEquipment("EntityVex"); + registerEntityItemListEquipment("EntityVillager"); + registerEntityItemListEquipment("EntityVindicator"); + registerEntityItemListEquipment("EntityWitch"); + registerEntityItemListEquipment("EntityWither"); + registerEntityItemListEquipment("EntityWolf"); + registerEntityItemListEquipment("EntityZombie"); + registerEntityItemListEquipment("EntityZombieHusk"); + registerEntityItemListEquipment("EntityZombieVillager"); + registerEntityItemSingle("EntityFireworks", "FireworksItem"); + registerEntityItemSingle("EntityHorse", "ArmorItem"); + registerEntityItemSingle("EntityHorse", "SaddleItem"); + registerEntityItemSingle("EntityHorseMule", "SaddleItem"); + registerEntityItemSingle("EntityHorseSkeleton", "SaddleItem"); + registerEntityItemSingle("EntityHorseZombie", "SaddleItem"); + registerEntityItemSingle("EntityItem", "Item"); + registerEntityItemSingle("EntityItemFrame", "Item"); + registerEntityItemSingle("EntityPotion", "Potion"); + + registerInspector(LegacyType.BLOCK_ENTITY, new DataInspectorItem("TileEntityRecordPlayer", "RecordItem")); + registerInspector(LegacyType.BLOCK_ENTITY, new DataInspectorItemList("TileEntityBrewingStand", "Items")); + registerInspector(LegacyType.BLOCK_ENTITY, new DataInspectorItemList("TileEntityChest", "Items")); + registerInspector(LegacyType.BLOCK_ENTITY, new DataInspectorItemList("TileEntityDispenser", "Items")); + registerInspector(LegacyType.BLOCK_ENTITY, new DataInspectorItemList("TileEntityDropper", "Items")); + registerInspector(LegacyType.BLOCK_ENTITY, new DataInspectorItemList("TileEntityFurnace", "Items")); + registerInspector(LegacyType.BLOCK_ENTITY, new DataInspectorItemList("TileEntityHopper", "Items")); + registerInspector(LegacyType.BLOCK_ENTITY, new DataInspectorItemList("TileEntityShulkerBox", "Items")); + registerInspector(LegacyType.BLOCK_ENTITY, new DataInspectorMobSpawnerMobs()); + registerInspector(LegacyType.CHUNK, new DataInspectorChunks()); + registerInspector(LegacyType.ENTITY, new DataInspectorCommandBlock()); + registerInspector(LegacyType.ENTITY, new DataInspectorEntityPassengers()); + registerInspector(LegacyType.ENTITY, new DataInspectorMobSpawnerMinecart()); + registerInspector(LegacyType.ENTITY, new DataInspectorVillagers()); + registerInspector(LegacyType.ITEM_INSTANCE, new DataInspectorBlockEntity()); + registerInspector(LegacyType.ITEM_INSTANCE, new DataInspectorEntity()); + registerInspector(LegacyType.LEVEL, new DataInspectorLevelPlayer()); + registerInspector(LegacyType.PLAYER, new DataInspectorPlayer()); + registerInspector(LegacyType.PLAYER, new DataInspectorPlayerVehicle()); + registerInspector(LegacyType.STRUCTURE, new DataInspectorStructure()); + } + + private void registerConverters() { + registerConverter(LegacyType.ENTITY, new DataConverterEquipment()); + registerConverter(LegacyType.BLOCK_ENTITY, new DataConverterSignText()); + registerConverter(LegacyType.ITEM_INSTANCE, new DataConverterMaterialId()); + registerConverter(LegacyType.ITEM_INSTANCE, new DataConverterPotionId()); + registerConverter(LegacyType.ITEM_INSTANCE, new DataConverterSpawnEgg()); + registerConverter(LegacyType.ENTITY, new DataConverterMinecart()); + registerConverter(LegacyType.BLOCK_ENTITY, new DataConverterMobSpawner()); + registerConverter(LegacyType.ENTITY, new DataConverterUUID()); + registerConverter(LegacyType.ENTITY, new DataConverterHealth()); + registerConverter(LegacyType.ENTITY, new DataConverterSaddle()); + registerConverter(LegacyType.ENTITY, new DataConverterHanging()); + registerConverter(LegacyType.ENTITY, new DataConverterDropChances()); + registerConverter(LegacyType.ENTITY, new DataConverterRiding()); + registerConverter(LegacyType.ENTITY, new DataConverterArmorStand()); + registerConverter(LegacyType.ITEM_INSTANCE, new DataConverterBook()); + registerConverter(LegacyType.ITEM_INSTANCE, new DataConverterCookedFish()); + registerConverter(LegacyType.ENTITY, new DataConverterZombie()); + registerConverter(LegacyType.OPTIONS, new DataConverterVBO()); + registerConverter(LegacyType.ENTITY, new DataConverterGuardian()); + registerConverter(LegacyType.ENTITY, new DataConverterSkeleton()); + registerConverter(LegacyType.ENTITY, new DataConverterZombieType()); + registerConverter(LegacyType.ENTITY, new DataConverterHorse()); + registerConverter(LegacyType.BLOCK_ENTITY, new DataConverterTileEntity()); + registerConverter(LegacyType.ENTITY, new DataConverterEntity()); + registerConverter(LegacyType.ITEM_INSTANCE, new DataConverterBanner()); + registerConverter(LegacyType.ITEM_INSTANCE, new DataConverterPotionWater()); + registerConverter(LegacyType.ENTITY, new DataConverterShulker()); + registerConverter(LegacyType.ITEM_INSTANCE, new DataConverterShulkerBoxItem()); + registerConverter(LegacyType.BLOCK_ENTITY, new DataConverterShulkerBoxBlock()); + registerConverter(LegacyType.OPTIONS, new DataConverterLang()); + registerConverter(LegacyType.ITEM_INSTANCE, new DataConverterTotem()); + registerConverter(LegacyType.CHUNK, new DataConverterBedBlock()); + registerConverter(LegacyType.ITEM_INSTANCE, new DataConverterBedItem()); + } + + private void registerEntityItemList(String type, String... keys) { + registerInspector(LegacyType.ENTITY, new DataInspectorItemList(type, keys)); + } + + private void registerEntityItemSingle(String type, String key) { + registerInspector(LegacyType.ENTITY, new DataInspectorItem(type, key)); + } + + private void registerEntityItemListEquipment(String type) { + registerEntityItemList(type, "ArmorItems", "HandItems"); + } + + private static final Map OLD_ID_TO_KEY_MAP = new HashMap<>(); + + static { + final Map map = OLD_ID_TO_KEY_MAP; + map.put("EntityItem", new ResourceLocation("item")); + map.put("EntityExperienceOrb", new ResourceLocation("xp_orb")); + map.put("EntityAreaEffectCloud", new ResourceLocation("area_effect_cloud")); + map.put("EntityGuardianElder", new ResourceLocation("elder_guardian")); + map.put("EntitySkeletonWither", new ResourceLocation("wither_skeleton")); + map.put("EntitySkeletonStray", new ResourceLocation("stray")); + map.put("EntityEgg", new ResourceLocation("egg")); + map.put("EntityLeash", new ResourceLocation("leash_knot")); + map.put("EntityPainting", new ResourceLocation("painting")); + map.put("EntityTippedArrow", new ResourceLocation("arrow")); + map.put("EntitySnowball", new ResourceLocation("snowball")); + map.put("EntityLargeFireball", new ResourceLocation("fireball")); + map.put("EntitySmallFireball", new ResourceLocation("small_fireball")); + map.put("EntityEnderPearl", new ResourceLocation("ender_pearl")); + map.put("EntityEnderSignal", new ResourceLocation("eye_of_ender_signal")); + map.put("EntityPotion", new ResourceLocation("potion")); + map.put("EntityThrownExpBottle", new ResourceLocation("xp_bottle")); + map.put("EntityItemFrame", new ResourceLocation("item_frame")); + map.put("EntityWitherSkull", new ResourceLocation("wither_skull")); + map.put("EntityTNTPrimed", new ResourceLocation("tnt")); + map.put("EntityFallingBlock", new ResourceLocation("falling_block")); + map.put("EntityFireworks", new ResourceLocation("fireworks_rocket")); + map.put("EntityZombieHusk", new ResourceLocation("husk")); + map.put("EntitySpectralArrow", new ResourceLocation("spectral_arrow")); + map.put("EntityShulkerBullet", new ResourceLocation("shulker_bullet")); + map.put("EntityDragonFireball", new ResourceLocation("dragon_fireball")); + map.put("EntityZombieVillager", new ResourceLocation("zombie_villager")); + map.put("EntityHorseSkeleton", new ResourceLocation("skeleton_horse")); + map.put("EntityHorseZombie", new ResourceLocation("zombie_horse")); + map.put("EntityArmorStand", new ResourceLocation("armor_stand")); + map.put("EntityHorseDonkey", new ResourceLocation("donkey")); + map.put("EntityHorseMule", new ResourceLocation("mule")); + map.put("EntityEvokerFangs", new ResourceLocation("evocation_fangs")); + map.put("EntityEvoker", new ResourceLocation("evocation_illager")); + map.put("EntityVex", new ResourceLocation("vex")); + map.put("EntityVindicator", new ResourceLocation("vindication_illager")); + map.put("EntityIllagerIllusioner", new ResourceLocation("illusion_illager")); + map.put("EntityMinecartCommandBlock", new ResourceLocation("commandblock_minecart")); + map.put("EntityBoat", new ResourceLocation("boat")); + map.put("EntityMinecartRideable", new ResourceLocation("minecart")); + map.put("EntityMinecartChest", new ResourceLocation("chest_minecart")); + map.put("EntityMinecartFurnace", new ResourceLocation("furnace_minecart")); + map.put("EntityMinecartTNT", new ResourceLocation("tnt_minecart")); + map.put("EntityMinecartHopper", new ResourceLocation("hopper_minecart")); + map.put("EntityMinecartMobSpawner", new ResourceLocation("spawner_minecart")); + map.put("EntityCreeper", new ResourceLocation("creeper")); + map.put("EntitySkeleton", new ResourceLocation("skeleton")); + map.put("EntitySpider", new ResourceLocation("spider")); + map.put("EntityGiantZombie", new ResourceLocation("giant")); + map.put("EntityZombie", new ResourceLocation("zombie")); + map.put("EntitySlime", new ResourceLocation("slime")); + map.put("EntityGhast", new ResourceLocation("ghast")); + map.put("EntityPigZombie", new ResourceLocation("zombie_pigman")); + map.put("EntityEnderman", new ResourceLocation("enderman")); + map.put("EntityCaveSpider", new ResourceLocation("cave_spider")); + map.put("EntitySilverfish", new ResourceLocation("silverfish")); + map.put("EntityBlaze", new ResourceLocation("blaze")); + map.put("EntityMagmaCube", new ResourceLocation("magma_cube")); + map.put("EntityEnderDragon", new ResourceLocation("ender_dragon")); + map.put("EntityWither", new ResourceLocation("wither")); + map.put("EntityBat", new ResourceLocation("bat")); + map.put("EntityWitch", new ResourceLocation("witch")); + map.put("EntityEndermite", new ResourceLocation("endermite")); + map.put("EntityGuardian", new ResourceLocation("guardian")); + map.put("EntityShulker", new ResourceLocation("shulker")); + map.put("EntityPig", new ResourceLocation("pig")); + map.put("EntitySheep", new ResourceLocation("sheep")); + map.put("EntityCow", new ResourceLocation("cow")); + map.put("EntityChicken", new ResourceLocation("chicken")); + map.put("EntitySquid", new ResourceLocation("squid")); + map.put("EntityWolf", new ResourceLocation("wolf")); + map.put("EntityMushroomCow", new ResourceLocation("mooshroom")); + map.put("EntitySnowman", new ResourceLocation("snowman")); + map.put("EntityOcelot", new ResourceLocation("ocelot")); + map.put("EntityIronGolem", new ResourceLocation("villager_golem")); + map.put("EntityHorse", new ResourceLocation("horse")); + map.put("EntityRabbit", new ResourceLocation("rabbit")); + map.put("EntityPolarBear", new ResourceLocation("polar_bear")); + map.put("EntityLlama", new ResourceLocation("llama")); + map.put("EntityLlamaSpit", new ResourceLocation("llama_spit")); + map.put("EntityParrot", new ResourceLocation("parrot")); + map.put("EntityVillager", new ResourceLocation("villager")); + map.put("EntityEnderCrystal", new ResourceLocation("ender_crystal")); + map.put("TileEntityFurnace", new ResourceLocation("furnace")); + map.put("TileEntityChest", new ResourceLocation("chest")); + map.put("TileEntityEnderChest", new ResourceLocation("ender_chest")); + map.put("TileEntityRecordPlayer", new ResourceLocation("jukebox")); + map.put("TileEntityDispenser", new ResourceLocation("dispenser")); + map.put("TileEntityDropper", new ResourceLocation("dropper")); + map.put("TileEntitySign", new ResourceLocation("sign")); + map.put("TileEntityMobSpawner", new ResourceLocation("mob_spawner")); + map.put("TileEntityNote", new ResourceLocation("noteblock")); + map.put("TileEntityPiston", new ResourceLocation("piston")); + map.put("TileEntityBrewingStand", new ResourceLocation("brewing_stand")); + map.put("TileEntityEnchantTable", new ResourceLocation("enchanting_table")); + map.put("TileEntityEnderPortal", new ResourceLocation("end_portal")); + map.put("TileEntityBeacon", new ResourceLocation("beacon")); + map.put("TileEntitySkull", new ResourceLocation("skull")); + map.put("TileEntityLightDetector", new ResourceLocation("daylight_detector")); + map.put("TileEntityHopper", new ResourceLocation("hopper")); + map.put("TileEntityComparator", new ResourceLocation("comparator")); + map.put("TileEntityFlowerPot", new ResourceLocation("flower_pot")); + map.put("TileEntityBanner", new ResourceLocation("banner")); + map.put("TileEntityStructure", new ResourceLocation("structure_block")); + map.put("TileEntityEndGateway", new ResourceLocation("end_gateway")); + map.put("TileEntityCommand", new ResourceLocation("command_block")); + map.put("TileEntityShulkerBox", new ResourceLocation("shulker_box")); + map.put("TileEntityBed", new ResourceLocation("bed")); + } + + private static ResourceLocation getKey(String type) { + final ResourceLocation key = OLD_ID_TO_KEY_MAP.get(type); + if (key == null) { + throw new IllegalArgumentException("Unknown mapping for " + type); + } + return key; + } + + private static void convertCompound(LegacyType type, net.minecraft.nbt.CompoundTag cmp, String key, int sourceVer, int targetVer) { + cmp.put(key, convert(type, cmp.getCompound(key), sourceVer, targetVer)); + } + + private static void convertItem(net.minecraft.nbt.CompoundTag nbttagcompound, String key, int sourceVer, int targetVer) { + if (nbttagcompound.contains(key, 10)) { + convertCompound(LegacyType.ITEM_INSTANCE, nbttagcompound, key, sourceVer, targetVer); + } + } + + private static void convertItems(net.minecraft.nbt.CompoundTag nbttagcompound, String key, int sourceVer, int targetVer) { + if (nbttagcompound.contains(key, 9)) { + net.minecraft.nbt.ListTag nbttaglist = nbttagcompound.getList(key, 10); + + for (int j = 0; j < nbttaglist.size(); ++j) { + nbttaglist.set(j, convert(LegacyType.ITEM_INSTANCE, nbttaglist.getCompound(j), sourceVer, targetVer)); + } + } + + } + + private static class DataConverterEquipment implements DataConverter { + + DataConverterEquipment() { + } + + public int getDataVersion() { + return 100; + } + + public net.minecraft.nbt.CompoundTag convert(net.minecraft.nbt.CompoundTag cmp) { + net.minecraft.nbt.ListTag nbttaglist = cmp.getList("Equipment", 10); + net.minecraft.nbt.ListTag nbttaglist1; + + if (!nbttaglist.isEmpty() && !cmp.contains("HandItems", 10)) { + nbttaglist1 = new net.minecraft.nbt.ListTag(); + nbttaglist1.add(nbttaglist.get(0)); + nbttaglist1.add(new net.minecraft.nbt.CompoundTag()); + cmp.put("HandItems", nbttaglist1); + } + + if (nbttaglist.size() > 1 && !cmp.contains("ArmorItem", 10)) { + nbttaglist1 = new net.minecraft.nbt.ListTag(); + nbttaglist1.add(nbttaglist.get(1)); + nbttaglist1.add(nbttaglist.get(2)); + nbttaglist1.add(nbttaglist.get(3)); + nbttaglist1.add(nbttaglist.get(4)); + cmp.put("ArmorItems", nbttaglist1); + } + + cmp.remove("Equipment"); + if (cmp.contains("DropChances", 9)) { + nbttaglist1 = cmp.getList("DropChances", 5); + net.minecraft.nbt.ListTag nbttaglist2; + + if (!cmp.contains("HandDropChances", 10)) { + nbttaglist2 = new net.minecraft.nbt.ListTag(); + nbttaglist2.add(net.minecraft.nbt.FloatTag.valueOf(nbttaglist1.getFloat(0))); + nbttaglist2.add(net.minecraft.nbt.FloatTag.valueOf(0.0F)); + cmp.put("HandDropChances", nbttaglist2); + } + + if (!cmp.contains("ArmorDropChances", 10)) { + nbttaglist2 = new net.minecraft.nbt.ListTag(); + nbttaglist2.add(net.minecraft.nbt.FloatTag.valueOf(nbttaglist1.getFloat(1))); + nbttaglist2.add(net.minecraft.nbt.FloatTag.valueOf(nbttaglist1.getFloat(2))); + nbttaglist2.add(net.minecraft.nbt.FloatTag.valueOf(nbttaglist1.getFloat(3))); + nbttaglist2.add(net.minecraft.nbt.FloatTag.valueOf(nbttaglist1.getFloat(4))); + cmp.put("ArmorDropChances", nbttaglist2); + } + + cmp.remove("DropChances"); + } + + return cmp; + } + } + + private static class DataInspectorBlockEntity implements DataInspector { + + private static final Map b = Maps.newHashMap(); + private static final Map c = Maps.newHashMap(); + + DataInspectorBlockEntity() { + } + + @Nullable + private static String convertEntityId(int i, String s) { + String key = new ResourceLocation(s).toString(); + if (i < 515 && DataInspectorBlockEntity.b.containsKey(key)) { + return DataInspectorBlockEntity.b.get(key); + } else { + return DataInspectorBlockEntity.c.get(key); + } + } + + public net.minecraft.nbt.CompoundTag inspect(net.minecraft.nbt.CompoundTag cmp, int sourceVer, int targetVer) { + if (!cmp.contains("tag", 10)) { + return cmp; + } else { + net.minecraft.nbt.CompoundTag nbttagcompound1 = cmp.getCompound("tag"); + + if (nbttagcompound1.contains("BlockEntityTag", 10)) { + net.minecraft.nbt.CompoundTag nbttagcompound2 = nbttagcompound1.getCompound("BlockEntityTag"); + String s = cmp.getString("id"); + String s1 = convertEntityId(sourceVer, s); + boolean flag; + + if (s1 == null) { + // CraftBukkit - Remove unnecessary warning (occurs when deserializing a Shulker Box item) + // DataInspectorBlockEntity.a.warn("Unable to resolve BlockEntity for ItemInstance: {}", s); + flag = false; + } else { + flag = !nbttagcompound2.contains("id"); + nbttagcompound2.putString("id", s1); + } + + convert(LegacyType.BLOCK_ENTITY, nbttagcompound2, sourceVer, targetVer); + if (flag) { + nbttagcompound2.remove("id"); + } + } + + return cmp; + } + } + + static { + Map map = DataInspectorBlockEntity.b; + + map.put("minecraft:furnace", "Furnace"); + map.put("minecraft:lit_furnace", "Furnace"); + map.put("minecraft:chest", "Chest"); + map.put("minecraft:trapped_chest", "Chest"); + map.put("minecraft:ender_chest", "EnderChest"); + map.put("minecraft:jukebox", "RecordPlayer"); + map.put("minecraft:dispenser", "Trap"); + map.put("minecraft:dropper", "Dropper"); + map.put("minecraft:sign", "Sign"); + map.put("minecraft:mob_spawner", "MobSpawner"); + map.put("minecraft:noteblock", "Music"); + map.put("minecraft:brewing_stand", "Cauldron"); + map.put("minecraft:enhanting_table", "EnchantTable"); + map.put("minecraft:command_block", "CommandBlock"); + map.put("minecraft:beacon", "Beacon"); + map.put("minecraft:skull", "Skull"); + map.put("minecraft:daylight_detector", "DLDetector"); + map.put("minecraft:hopper", "Hopper"); + map.put("minecraft:banner", "Banner"); + map.put("minecraft:flower_pot", "FlowerPot"); + map.put("minecraft:repeating_command_block", "CommandBlock"); + map.put("minecraft:chain_command_block", "CommandBlock"); + map.put("minecraft:standing_sign", "Sign"); + map.put("minecraft:wall_sign", "Sign"); + map.put("minecraft:piston_head", "Piston"); + map.put("minecraft:daylight_detector_inverted", "DLDetector"); + map.put("minecraft:unpowered_comparator", "Comparator"); + map.put("minecraft:powered_comparator", "Comparator"); + map.put("minecraft:wall_banner", "Banner"); + map.put("minecraft:standing_banner", "Banner"); + map.put("minecraft:structure_block", "Structure"); + map.put("minecraft:end_portal", "Airportal"); + map.put("minecraft:end_gateway", "EndGateway"); + map.put("minecraft:shield", "Shield"); + map = DataInspectorBlockEntity.c; + map.put("minecraft:furnace", "minecraft:furnace"); + map.put("minecraft:lit_furnace", "minecraft:furnace"); + map.put("minecraft:chest", "minecraft:chest"); + map.put("minecraft:trapped_chest", "minecraft:chest"); + map.put("minecraft:ender_chest", "minecraft:enderchest"); + map.put("minecraft:jukebox", "minecraft:jukebox"); + map.put("minecraft:dispenser", "minecraft:dispenser"); + map.put("minecraft:dropper", "minecraft:dropper"); + map.put("minecraft:sign", "minecraft:sign"); + map.put("minecraft:mob_spawner", "minecraft:mob_spawner"); + map.put("minecraft:noteblock", "minecraft:noteblock"); + map.put("minecraft:brewing_stand", "minecraft:brewing_stand"); + map.put("minecraft:enhanting_table", "minecraft:enchanting_table"); + map.put("minecraft:command_block", "minecraft:command_block"); + map.put("minecraft:beacon", "minecraft:beacon"); + map.put("minecraft:skull", "minecraft:skull"); + map.put("minecraft:daylight_detector", "minecraft:daylight_detector"); + map.put("minecraft:hopper", "minecraft:hopper"); + map.put("minecraft:banner", "minecraft:banner"); + map.put("minecraft:flower_pot", "minecraft:flower_pot"); + map.put("minecraft:repeating_command_block", "minecraft:command_block"); + map.put("minecraft:chain_command_block", "minecraft:command_block"); + map.put("minecraft:shulker_box", "minecraft:shulker_box"); + map.put("minecraft:white_shulker_box", "minecraft:shulker_box"); + map.put("minecraft:orange_shulker_box", "minecraft:shulker_box"); + map.put("minecraft:magenta_shulker_box", "minecraft:shulker_box"); + map.put("minecraft:light_blue_shulker_box", "minecraft:shulker_box"); + map.put("minecraft:yellow_shulker_box", "minecraft:shulker_box"); + map.put("minecraft:lime_shulker_box", "minecraft:shulker_box"); + map.put("minecraft:pink_shulker_box", "minecraft:shulker_box"); + map.put("minecraft:gray_shulker_box", "minecraft:shulker_box"); + map.put("minecraft:silver_shulker_box", "minecraft:shulker_box"); + map.put("minecraft:cyan_shulker_box", "minecraft:shulker_box"); + map.put("minecraft:purple_shulker_box", "minecraft:shulker_box"); + map.put("minecraft:blue_shulker_box", "minecraft:shulker_box"); + map.put("minecraft:brown_shulker_box", "minecraft:shulker_box"); + map.put("minecraft:green_shulker_box", "minecraft:shulker_box"); + map.put("minecraft:red_shulker_box", "minecraft:shulker_box"); + map.put("minecraft:black_shulker_box", "minecraft:shulker_box"); + map.put("minecraft:bed", "minecraft:bed"); + map.put("minecraft:standing_sign", "minecraft:sign"); + map.put("minecraft:wall_sign", "minecraft:sign"); + map.put("minecraft:piston_head", "minecraft:piston"); + map.put("minecraft:daylight_detector_inverted", "minecraft:daylight_detector"); + map.put("minecraft:unpowered_comparator", "minecraft:comparator"); + map.put("minecraft:powered_comparator", "minecraft:comparator"); + map.put("minecraft:wall_banner", "minecraft:banner"); + map.put("minecraft:standing_banner", "minecraft:banner"); + map.put("minecraft:structure_block", "minecraft:structure_block"); + map.put("minecraft:end_portal", "minecraft:end_portal"); + map.put("minecraft:end_gateway", "minecraft:end_gateway"); + map.put("minecraft:shield", "minecraft:shield"); + } + } + + private static class DataInspectorEntity implements DataInspector { + + private static final Logger a = LogManager.getLogger(PaperweightDataConverters.class); + + DataInspectorEntity() { + } + + public net.minecraft.nbt.CompoundTag inspect(net.minecraft.nbt.CompoundTag cmp, int sourceVer, int targetVer) { + net.minecraft.nbt.CompoundTag nbttagcompound1 = cmp.getCompound("tag"); + + if (nbttagcompound1.contains("EntityTag", 10)) { + net.minecraft.nbt.CompoundTag nbttagcompound2 = nbttagcompound1.getCompound("EntityTag"); + String s = cmp.getString("id"); + String s1; + + if ("minecraft:armor_stand".equals(s)) { + s1 = sourceVer < 515 ? "ArmorStand" : "minecraft:armor_stand"; + } else { + if (!"minecraft:spawn_egg".equals(s)) { + return cmp; + } + + s1 = nbttagcompound2.getString("id"); + } + + boolean flag; + + flag = !nbttagcompound2.contains("id", 8); + nbttagcompound2.putString("id", s1); + + convert(LegacyType.ENTITY, nbttagcompound2, sourceVer, targetVer); + if (flag) { + nbttagcompound2.remove("id"); + } + } + + return cmp; + } + } + + + private abstract static class DataInspectorTagged implements DataInspector { + + private final ResourceLocation key; + + DataInspectorTagged(String type) { + this.key = getKey(type); + } + + public net.minecraft.nbt.CompoundTag inspect(net.minecraft.nbt.CompoundTag cmp, int sourceVer, int targetVer) { + if (this.key.equals(new ResourceLocation(cmp.getString("id")))) { + cmp = this.inspectChecked(cmp, sourceVer, targetVer); + } + + return cmp; + } + + abstract net.minecraft.nbt.CompoundTag inspectChecked(net.minecraft.nbt.CompoundTag nbttagcompound, int sourceVer, int targetVer); + } + + private static class DataInspectorItemList extends DataInspectorTagged { + + private final String[] keys; + + DataInspectorItemList(String oclass, String... astring) { + super(oclass); + this.keys = astring; + } + + net.minecraft.nbt.CompoundTag inspectChecked(net.minecraft.nbt.CompoundTag nbttagcompound, int sourceVer, int targetVer) { + for (String s : this.keys) { + PaperweightDataConverters.convertItems(nbttagcompound, s, sourceVer, targetVer); + } + + return nbttagcompound; + } + } + + private static class DataInspectorItem extends DataInspectorTagged { + + private final String[] keys; + + DataInspectorItem(String oclass, String... astring) { + super(oclass); + this.keys = astring; + } + + net.minecraft.nbt.CompoundTag inspectChecked(net.minecraft.nbt.CompoundTag nbttagcompound, int sourceVer, int targetVer) { + for (String key : this.keys) { + PaperweightDataConverters.convertItem(nbttagcompound, key, sourceVer, targetVer); + } + + return nbttagcompound; + } + } + + private static class DataConverterMaterialId implements DataConverter { + + private static final String[] materials = new String[2268]; + + DataConverterMaterialId() { + } + + public int getDataVersion() { + return 102; + } + + public net.minecraft.nbt.CompoundTag convert(net.minecraft.nbt.CompoundTag cmp) { + if (cmp.contains("id", 99)) { + short short0 = cmp.getShort("id"); + + if (short0 > 0 && short0 < materials.length && materials[short0] != null) { + cmp.putString("id", materials[short0]); + } + } + + return cmp; + } + + static { + materials[1] = "minecraft:stone"; + materials[2] = "minecraft:grass"; + materials[3] = "minecraft:dirt"; + materials[4] = "minecraft:cobblestone"; + materials[5] = "minecraft:planks"; + materials[6] = "minecraft:sapling"; + materials[7] = "minecraft:bedrock"; + materials[8] = "minecraft:flowing_water"; + materials[9] = "minecraft:water"; + materials[10] = "minecraft:flowing_lava"; + materials[11] = "minecraft:lava"; + materials[12] = "minecraft:sand"; + materials[13] = "minecraft:gravel"; + materials[14] = "minecraft:gold_ore"; + materials[15] = "minecraft:iron_ore"; + materials[16] = "minecraft:coal_ore"; + materials[17] = "minecraft:log"; + materials[18] = "minecraft:leaves"; + materials[19] = "minecraft:sponge"; + materials[20] = "minecraft:glass"; + materials[21] = "minecraft:lapis_ore"; + materials[22] = "minecraft:lapis_block"; + materials[23] = "minecraft:dispenser"; + materials[24] = "minecraft:sandstone"; + materials[25] = "minecraft:noteblock"; + materials[27] = "minecraft:golden_rail"; + materials[28] = "minecraft:detector_rail"; + materials[29] = "minecraft:sticky_piston"; + materials[30] = "minecraft:web"; + materials[31] = "minecraft:tallgrass"; + materials[32] = "minecraft:deadbush"; + materials[33] = "minecraft:piston"; + materials[35] = "minecraft:wool"; + materials[37] = "minecraft:yellow_flower"; + materials[38] = "minecraft:red_flower"; + materials[39] = "minecraft:brown_mushroom"; + materials[40] = "minecraft:red_mushroom"; + materials[41] = "minecraft:gold_block"; + materials[42] = "minecraft:iron_block"; + materials[43] = "minecraft:double_stone_slab"; + materials[44] = "minecraft:stone_slab"; + materials[45] = "minecraft:brick_block"; + materials[46] = "minecraft:tnt"; + materials[47] = "minecraft:bookshelf"; + materials[48] = "minecraft:mossy_cobblestone"; + materials[49] = "minecraft:obsidian"; + materials[50] = "minecraft:torch"; + materials[51] = "minecraft:fire"; + materials[52] = "minecraft:mob_spawner"; + materials[53] = "minecraft:oak_stairs"; + materials[54] = "minecraft:chest"; + materials[56] = "minecraft:diamond_ore"; + materials[57] = "minecraft:diamond_block"; + materials[58] = "minecraft:crafting_table"; + materials[60] = "minecraft:farmland"; + materials[61] = "minecraft:furnace"; + materials[62] = "minecraft:lit_furnace"; + materials[65] = "minecraft:ladder"; + materials[66] = "minecraft:rail"; + materials[67] = "minecraft:stone_stairs"; + materials[69] = "minecraft:lever"; + materials[70] = "minecraft:stone_pressure_plate"; + materials[72] = "minecraft:wooden_pressure_plate"; + materials[73] = "minecraft:redstone_ore"; + materials[76] = "minecraft:redstone_torch"; + materials[77] = "minecraft:stone_button"; + materials[78] = "minecraft:snow_layer"; + materials[79] = "minecraft:ice"; + materials[80] = "minecraft:snow"; + materials[81] = "minecraft:cactus"; + materials[82] = "minecraft:clay"; + materials[84] = "minecraft:jukebox"; + materials[85] = "minecraft:fence"; + materials[86] = "minecraft:pumpkin"; + materials[87] = "minecraft:netherrack"; + materials[88] = "minecraft:soul_sand"; + materials[89] = "minecraft:glowstone"; + materials[90] = "minecraft:portal"; + materials[91] = "minecraft:lit_pumpkin"; + materials[95] = "minecraft:stained_glass"; + materials[96] = "minecraft:trapdoor"; + materials[97] = "minecraft:monster_egg"; + materials[98] = "minecraft:stonebrick"; + materials[99] = "minecraft:brown_mushroom_block"; + materials[100] = "minecraft:red_mushroom_block"; + materials[101] = "minecraft:iron_bars"; + materials[102] = "minecraft:glass_pane"; + materials[103] = "minecraft:melon_block"; + materials[106] = "minecraft:vine"; + materials[107] = "minecraft:fence_gate"; + materials[108] = "minecraft:brick_stairs"; + materials[109] = "minecraft:stone_brick_stairs"; + materials[110] = "minecraft:mycelium"; + materials[111] = "minecraft:waterlily"; + materials[112] = "minecraft:nether_brick"; + materials[113] = "minecraft:nether_brick_fence"; + materials[114] = "minecraft:nether_brick_stairs"; + materials[116] = "minecraft:enchanting_table"; + materials[119] = "minecraft:end_portal"; + materials[120] = "minecraft:end_portal_frame"; + materials[121] = "minecraft:end_stone"; + materials[122] = "minecraft:dragon_egg"; + materials[123] = "minecraft:redstone_lamp"; + materials[125] = "minecraft:double_wooden_slab"; + materials[126] = "minecraft:wooden_slab"; + materials[127] = "minecraft:cocoa"; + materials[128] = "minecraft:sandstone_stairs"; + materials[129] = "minecraft:emerald_ore"; + materials[130] = "minecraft:ender_chest"; + materials[131] = "minecraft:tripwire_hook"; + materials[133] = "minecraft:emerald_block"; + materials[134] = "minecraft:spruce_stairs"; + materials[135] = "minecraft:birch_stairs"; + materials[136] = "minecraft:jungle_stairs"; + materials[137] = "minecraft:command_block"; + materials[138] = "minecraft:beacon"; + materials[139] = "minecraft:cobblestone_wall"; + materials[141] = "minecraft:carrots"; + materials[142] = "minecraft:potatoes"; + materials[143] = "minecraft:wooden_button"; + materials[145] = "minecraft:anvil"; + materials[146] = "minecraft:trapped_chest"; + materials[147] = "minecraft:light_weighted_pressure_plate"; + materials[148] = "minecraft:heavy_weighted_pressure_plate"; + materials[151] = "minecraft:daylight_detector"; + materials[152] = "minecraft:redstone_block"; + materials[153] = "minecraft:quartz_ore"; + materials[154] = "minecraft:hopper"; + materials[155] = "minecraft:quartz_block"; + materials[156] = "minecraft:quartz_stairs"; + materials[157] = "minecraft:activator_rail"; + materials[158] = "minecraft:dropper"; + materials[159] = "minecraft:stained_hardened_clay"; + materials[160] = "minecraft:stained_glass_pane"; + materials[161] = "minecraft:leaves2"; + materials[162] = "minecraft:log2"; + materials[163] = "minecraft:acacia_stairs"; + materials[164] = "minecraft:dark_oak_stairs"; + materials[170] = "minecraft:hay_block"; + materials[171] = "minecraft:carpet"; + materials[172] = "minecraft:hardened_clay"; + materials[173] = "minecraft:coal_block"; + materials[174] = "minecraft:packed_ice"; + materials[175] = "minecraft:double_plant"; + materials[256] = "minecraft:iron_shovel"; + materials[257] = "minecraft:iron_pickaxe"; + materials[258] = "minecraft:iron_axe"; + materials[259] = "minecraft:flint_and_steel"; + materials[260] = "minecraft:apple"; + materials[261] = "minecraft:bow"; + materials[262] = "minecraft:arrow"; + materials[263] = "minecraft:coal"; + materials[264] = "minecraft:diamond"; + materials[265] = "minecraft:iron_ingot"; + materials[266] = "minecraft:gold_ingot"; + materials[267] = "minecraft:iron_sword"; + materials[268] = "minecraft:wooden_sword"; + materials[269] = "minecraft:wooden_shovel"; + materials[270] = "minecraft:wooden_pickaxe"; + materials[271] = "minecraft:wooden_axe"; + materials[272] = "minecraft:stone_sword"; + materials[273] = "minecraft:stone_shovel"; + materials[274] = "minecraft:stone_pickaxe"; + materials[275] = "minecraft:stone_axe"; + materials[276] = "minecraft:diamond_sword"; + materials[277] = "minecraft:diamond_shovel"; + materials[278] = "minecraft:diamond_pickaxe"; + materials[279] = "minecraft:diamond_axe"; + materials[280] = "minecraft:stick"; + materials[281] = "minecraft:bowl"; + materials[282] = "minecraft:mushroom_stew"; + materials[283] = "minecraft:golden_sword"; + materials[284] = "minecraft:golden_shovel"; + materials[285] = "minecraft:golden_pickaxe"; + materials[286] = "minecraft:golden_axe"; + materials[287] = "minecraft:string"; + materials[288] = "minecraft:feather"; + materials[289] = "minecraft:gunpowder"; + materials[290] = "minecraft:wooden_hoe"; + materials[291] = "minecraft:stone_hoe"; + materials[292] = "minecraft:iron_hoe"; + materials[293] = "minecraft:diamond_hoe"; + materials[294] = "minecraft:golden_hoe"; + materials[295] = "minecraft:wheat_seeds"; + materials[296] = "minecraft:wheat"; + materials[297] = "minecraft:bread"; + materials[298] = "minecraft:leather_helmet"; + materials[299] = "minecraft:leather_chestplate"; + materials[300] = "minecraft:leather_leggings"; + materials[301] = "minecraft:leather_boots"; + materials[302] = "minecraft:chainmail_helmet"; + materials[303] = "minecraft:chainmail_chestplate"; + materials[304] = "minecraft:chainmail_leggings"; + materials[305] = "minecraft:chainmail_boots"; + materials[306] = "minecraft:iron_helmet"; + materials[307] = "minecraft:iron_chestplate"; + materials[308] = "minecraft:iron_leggings"; + materials[309] = "minecraft:iron_boots"; + materials[310] = "minecraft:diamond_helmet"; + materials[311] = "minecraft:diamond_chestplate"; + materials[312] = "minecraft:diamond_leggings"; + materials[313] = "minecraft:diamond_boots"; + materials[314] = "minecraft:golden_helmet"; + materials[315] = "minecraft:golden_chestplate"; + materials[316] = "minecraft:golden_leggings"; + materials[317] = "minecraft:golden_boots"; + materials[318] = "minecraft:flint"; + materials[319] = "minecraft:porkchop"; + materials[320] = "minecraft:cooked_porkchop"; + materials[321] = "minecraft:painting"; + materials[322] = "minecraft:golden_apple"; + materials[323] = "minecraft:sign"; + materials[324] = "minecraft:wooden_door"; + materials[325] = "minecraft:bucket"; + materials[326] = "minecraft:water_bucket"; + materials[327] = "minecraft:lava_bucket"; + materials[328] = "minecraft:minecart"; + materials[329] = "minecraft:saddle"; + materials[330] = "minecraft:iron_door"; + materials[331] = "minecraft:redstone"; + materials[332] = "minecraft:snowball"; + materials[333] = "minecraft:boat"; + materials[334] = "minecraft:leather"; + materials[335] = "minecraft:milk_bucket"; + materials[336] = "minecraft:brick"; + materials[337] = "minecraft:clay_ball"; + materials[338] = "minecraft:reeds"; + materials[339] = "minecraft:paper"; + materials[340] = "minecraft:book"; + materials[341] = "minecraft:slime_ball"; + materials[342] = "minecraft:chest_minecart"; + materials[343] = "minecraft:furnace_minecart"; + materials[344] = "minecraft:egg"; + materials[345] = "minecraft:compass"; + materials[346] = "minecraft:fishing_rod"; + materials[347] = "minecraft:clock"; + materials[348] = "minecraft:glowstone_dust"; + materials[349] = "minecraft:fish"; + materials[350] = "minecraft:cooked_fish"; // Paper - cooked_fished -> cooked_fish + materials[351] = "minecraft:dye"; + materials[352] = "minecraft:bone"; + materials[353] = "minecraft:sugar"; + materials[354] = "minecraft:cake"; + materials[355] = "minecraft:bed"; + materials[356] = "minecraft:repeater"; + materials[357] = "minecraft:cookie"; + materials[358] = "minecraft:filled_map"; + materials[359] = "minecraft:shears"; + materials[360] = "minecraft:melon"; + materials[361] = "minecraft:pumpkin_seeds"; + materials[362] = "minecraft:melon_seeds"; + materials[363] = "minecraft:beef"; + materials[364] = "minecraft:cooked_beef"; + materials[365] = "minecraft:chicken"; + materials[366] = "minecraft:cooked_chicken"; + materials[367] = "minecraft:rotten_flesh"; + materials[368] = "minecraft:ender_pearl"; + materials[369] = "minecraft:blaze_rod"; + materials[370] = "minecraft:ghast_tear"; + materials[371] = "minecraft:gold_nugget"; + materials[372] = "minecraft:nether_wart"; + materials[373] = "minecraft:potion"; + materials[374] = "minecraft:glass_bottle"; + materials[375] = "minecraft:spider_eye"; + materials[376] = "minecraft:fermented_spider_eye"; + materials[377] = "minecraft:blaze_powder"; + materials[378] = "minecraft:magma_cream"; + materials[379] = "minecraft:brewing_stand"; + materials[380] = "minecraft:cauldron"; + materials[381] = "minecraft:ender_eye"; + materials[382] = "minecraft:speckled_melon"; + materials[383] = "minecraft:spawn_egg"; + materials[384] = "minecraft:experience_bottle"; + materials[385] = "minecraft:fire_charge"; + materials[386] = "minecraft:writable_book"; + materials[387] = "minecraft:written_book"; + materials[388] = "minecraft:emerald"; + materials[389] = "minecraft:item_frame"; + materials[390] = "minecraft:flower_pot"; + materials[391] = "minecraft:carrot"; + materials[392] = "minecraft:potato"; + materials[393] = "minecraft:baked_potato"; + materials[394] = "minecraft:poisonous_potato"; + materials[395] = "minecraft:map"; + materials[396] = "minecraft:golden_carrot"; + materials[397] = "minecraft:skull"; + materials[398] = "minecraft:carrot_on_a_stick"; + materials[399] = "minecraft:nether_star"; + materials[400] = "minecraft:pumpkin_pie"; + materials[401] = "minecraft:fireworks"; + materials[402] = "minecraft:firework_charge"; + materials[403] = "minecraft:enchanted_book"; + materials[404] = "minecraft:comparator"; + materials[405] = "minecraft:netherbrick"; + materials[406] = "minecraft:quartz"; + materials[407] = "minecraft:tnt_minecart"; + materials[408] = "minecraft:hopper_minecart"; + materials[417] = "minecraft:iron_horse_armor"; + materials[418] = "minecraft:golden_horse_armor"; + materials[419] = "minecraft:diamond_horse_armor"; + materials[420] = "minecraft:lead"; + materials[421] = "minecraft:name_tag"; + materials[422] = "minecraft:command_block_minecart"; + materials[2256] = "minecraft:record_13"; + materials[2257] = "minecraft:record_cat"; + materials[2258] = "minecraft:record_blocks"; + materials[2259] = "minecraft:record_chirp"; + materials[2260] = "minecraft:record_far"; + materials[2261] = "minecraft:record_mall"; + materials[2262] = "minecraft:record_mellohi"; + materials[2263] = "minecraft:record_stal"; + materials[2264] = "minecraft:record_strad"; + materials[2265] = "minecraft:record_ward"; + materials[2266] = "minecraft:record_11"; + materials[2267] = "minecraft:record_wait"; + // Paper start + materials[409] = "minecraft:prismarine_shard"; + materials[410] = "minecraft:prismarine_crystals"; + materials[411] = "minecraft:rabbit"; + materials[412] = "minecraft:cooked_rabbit"; + materials[413] = "minecraft:rabbit_stew"; + materials[414] = "minecraft:rabbit_foot"; + materials[415] = "minecraft:rabbit_hide"; + materials[416] = "minecraft:armor_stand"; + materials[423] = "minecraft:mutton"; + materials[424] = "minecraft:cooked_mutton"; + materials[425] = "minecraft:banner"; + materials[426] = "minecraft:end_crystal"; + materials[427] = "minecraft:spruce_door"; + materials[428] = "minecraft:birch_door"; + materials[429] = "minecraft:jungle_door"; + materials[430] = "minecraft:acacia_door"; + materials[431] = "minecraft:dark_oak_door"; + materials[432] = "minecraft:chorus_fruit"; + materials[433] = "minecraft:chorus_fruit_popped"; + materials[434] = "minecraft:beetroot"; + materials[435] = "minecraft:beetroot_seeds"; + materials[436] = "minecraft:beetroot_soup"; + materials[437] = "minecraft:dragon_breath"; + materials[438] = "minecraft:splash_potion"; + materials[439] = "minecraft:spectral_arrow"; + materials[440] = "minecraft:tipped_arrow"; + materials[441] = "minecraft:lingering_potion"; + materials[442] = "minecraft:shield"; + materials[443] = "minecraft:elytra"; + materials[444] = "minecraft:spruce_boat"; + materials[445] = "minecraft:birch_boat"; + materials[446] = "minecraft:jungle_boat"; + materials[447] = "minecraft:acacia_boat"; + materials[448] = "minecraft:dark_oak_boat"; + materials[449] = "minecraft:totem_of_undying"; + materials[450] = "minecraft:shulker_shell"; + materials[452] = "minecraft:iron_nugget"; + materials[453] = "minecraft:knowledge_book"; + // Paper end + } + } + + private static class DataConverterArmorStand implements DataConverter { + + DataConverterArmorStand() { + } + + public int getDataVersion() { + return 147; + } + + public net.minecraft.nbt.CompoundTag convert(net.minecraft.nbt.CompoundTag cmp) { + if ("ArmorStand".equals(cmp.getString("id")) && cmp.getBoolean("Silent") && !cmp.getBoolean("Marker")) { + cmp.remove("Silent"); + } + + return cmp; + } + } + + private static class DataConverterBanner implements DataConverter { + + DataConverterBanner() { + } + + public int getDataVersion() { + return 804; + } + + public net.minecraft.nbt.CompoundTag convert(net.minecraft.nbt.CompoundTag cmp) { + if ("minecraft:banner".equals(cmp.getString("id")) && cmp.contains("tag", 10)) { + net.minecraft.nbt.CompoundTag nbttagcompound1 = cmp.getCompound("tag"); + + if (nbttagcompound1.contains("BlockEntityTag", 10)) { + net.minecraft.nbt.CompoundTag nbttagcompound2 = nbttagcompound1.getCompound("BlockEntityTag"); + + if (nbttagcompound2.contains("Base", 99)) { + cmp.putShort("Damage", (short) (nbttagcompound2.getShort("Base") & 15)); + if (nbttagcompound1.contains("display", 10)) { + net.minecraft.nbt.CompoundTag nbttagcompound3 = nbttagcompound1.getCompound("display"); + + if (nbttagcompound3.contains("Lore", 9)) { + net.minecraft.nbt.ListTag nbttaglist = nbttagcompound3.getList("Lore", 8); + + if (nbttaglist.size() == 1 && "(+NBT)".equals(nbttaglist.getString(0))) { + return cmp; + } + } + } + + nbttagcompound2.remove("Base"); + if (nbttagcompound2.isEmpty()) { + nbttagcompound1.remove("BlockEntityTag"); + } + + if (nbttagcompound1.isEmpty()) { + cmp.remove("tag"); + } + } + } + } + + return cmp; + } + } + + private static class DataConverterPotionId implements DataConverter { + + private static final String[] potions = new String[128]; + + DataConverterPotionId() { + } + + public int getDataVersion() { + return 102; + } + + public net.minecraft.nbt.CompoundTag convert(net.minecraft.nbt.CompoundTag cmp) { + if ("minecraft:potion".equals(cmp.getString("id"))) { + net.minecraft.nbt.CompoundTag nbttagcompound1 = cmp.getCompound("tag"); + short short0 = cmp.getShort("Damage"); + + if (!nbttagcompound1.contains("Potion", 8)) { + String s = DataConverterPotionId.potions[short0 & 127]; + + nbttagcompound1.putString("Potion", s == null ? "minecraft:water" : s); + cmp.put("tag", nbttagcompound1); + if ((short0 & 16384) == 16384) { + cmp.putString("id", "minecraft:splash_potion"); + } + } + + if (short0 != 0) { + cmp.putShort("Damage", (short) 0); + } + } + + return cmp; + } + + static { + DataConverterPotionId.potions[0] = "minecraft:water"; + DataConverterPotionId.potions[1] = "minecraft:regeneration"; + DataConverterPotionId.potions[2] = "minecraft:swiftness"; + DataConverterPotionId.potions[3] = "minecraft:fire_resistance"; + DataConverterPotionId.potions[4] = "minecraft:poison"; + DataConverterPotionId.potions[5] = "minecraft:healing"; + DataConverterPotionId.potions[6] = "minecraft:night_vision"; + DataConverterPotionId.potions[7] = null; + DataConverterPotionId.potions[8] = "minecraft:weakness"; + DataConverterPotionId.potions[9] = "minecraft:strength"; + DataConverterPotionId.potions[10] = "minecraft:slowness"; + DataConverterPotionId.potions[11] = "minecraft:leaping"; + DataConverterPotionId.potions[12] = "minecraft:harming"; + DataConverterPotionId.potions[13] = "minecraft:water_breathing"; + DataConverterPotionId.potions[14] = "minecraft:invisibility"; + DataConverterPotionId.potions[15] = null; + DataConverterPotionId.potions[16] = "minecraft:awkward"; + DataConverterPotionId.potions[17] = "minecraft:regeneration"; + DataConverterPotionId.potions[18] = "minecraft:swiftness"; + DataConverterPotionId.potions[19] = "minecraft:fire_resistance"; + DataConverterPotionId.potions[20] = "minecraft:poison"; + DataConverterPotionId.potions[21] = "minecraft:healing"; + DataConverterPotionId.potions[22] = "minecraft:night_vision"; + DataConverterPotionId.potions[23] = null; + DataConverterPotionId.potions[24] = "minecraft:weakness"; + DataConverterPotionId.potions[25] = "minecraft:strength"; + DataConverterPotionId.potions[26] = "minecraft:slowness"; + DataConverterPotionId.potions[27] = "minecraft:leaping"; + DataConverterPotionId.potions[28] = "minecraft:harming"; + DataConverterPotionId.potions[29] = "minecraft:water_breathing"; + DataConverterPotionId.potions[30] = "minecraft:invisibility"; + DataConverterPotionId.potions[31] = null; + DataConverterPotionId.potions[32] = "minecraft:thick"; + DataConverterPotionId.potions[33] = "minecraft:strong_regeneration"; + DataConverterPotionId.potions[34] = "minecraft:strong_swiftness"; + DataConverterPotionId.potions[35] = "minecraft:fire_resistance"; + DataConverterPotionId.potions[36] = "minecraft:strong_poison"; + DataConverterPotionId.potions[37] = "minecraft:strong_healing"; + DataConverterPotionId.potions[38] = "minecraft:night_vision"; + DataConverterPotionId.potions[39] = null; + DataConverterPotionId.potions[40] = "minecraft:weakness"; + DataConverterPotionId.potions[41] = "minecraft:strong_strength"; + DataConverterPotionId.potions[42] = "minecraft:slowness"; + DataConverterPotionId.potions[43] = "minecraft:strong_leaping"; + DataConverterPotionId.potions[44] = "minecraft:strong_harming"; + DataConverterPotionId.potions[45] = "minecraft:water_breathing"; + DataConverterPotionId.potions[46] = "minecraft:invisibility"; + DataConverterPotionId.potions[47] = null; + DataConverterPotionId.potions[48] = null; + DataConverterPotionId.potions[49] = "minecraft:strong_regeneration"; + DataConverterPotionId.potions[50] = "minecraft:strong_swiftness"; + DataConverterPotionId.potions[51] = "minecraft:fire_resistance"; + DataConverterPotionId.potions[52] = "minecraft:strong_poison"; + DataConverterPotionId.potions[53] = "minecraft:strong_healing"; + DataConverterPotionId.potions[54] = "minecraft:night_vision"; + DataConverterPotionId.potions[55] = null; + DataConverterPotionId.potions[56] = "minecraft:weakness"; + DataConverterPotionId.potions[57] = "minecraft:strong_strength"; + DataConverterPotionId.potions[58] = "minecraft:slowness"; + DataConverterPotionId.potions[59] = "minecraft:strong_leaping"; + DataConverterPotionId.potions[60] = "minecraft:strong_harming"; + DataConverterPotionId.potions[61] = "minecraft:water_breathing"; + DataConverterPotionId.potions[62] = "minecraft:invisibility"; + DataConverterPotionId.potions[63] = null; + DataConverterPotionId.potions[64] = "minecraft:mundane"; + DataConverterPotionId.potions[65] = "minecraft:long_regeneration"; + DataConverterPotionId.potions[66] = "minecraft:long_swiftness"; + DataConverterPotionId.potions[67] = "minecraft:long_fire_resistance"; + DataConverterPotionId.potions[68] = "minecraft:long_poison"; + DataConverterPotionId.potions[69] = "minecraft:healing"; + DataConverterPotionId.potions[70] = "minecraft:long_night_vision"; + DataConverterPotionId.potions[71] = null; + DataConverterPotionId.potions[72] = "minecraft:long_weakness"; + DataConverterPotionId.potions[73] = "minecraft:long_strength"; + DataConverterPotionId.potions[74] = "minecraft:long_slowness"; + DataConverterPotionId.potions[75] = "minecraft:long_leaping"; + DataConverterPotionId.potions[76] = "minecraft:harming"; + DataConverterPotionId.potions[77] = "minecraft:long_water_breathing"; + DataConverterPotionId.potions[78] = "minecraft:long_invisibility"; + DataConverterPotionId.potions[79] = null; + DataConverterPotionId.potions[80] = "minecraft:awkward"; + DataConverterPotionId.potions[81] = "minecraft:long_regeneration"; + DataConverterPotionId.potions[82] = "minecraft:long_swiftness"; + DataConverterPotionId.potions[83] = "minecraft:long_fire_resistance"; + DataConverterPotionId.potions[84] = "minecraft:long_poison"; + DataConverterPotionId.potions[85] = "minecraft:healing"; + DataConverterPotionId.potions[86] = "minecraft:long_night_vision"; + DataConverterPotionId.potions[87] = null; + DataConverterPotionId.potions[88] = "minecraft:long_weakness"; + DataConverterPotionId.potions[89] = "minecraft:long_strength"; + DataConverterPotionId.potions[90] = "minecraft:long_slowness"; + DataConverterPotionId.potions[91] = "minecraft:long_leaping"; + DataConverterPotionId.potions[92] = "minecraft:harming"; + DataConverterPotionId.potions[93] = "minecraft:long_water_breathing"; + DataConverterPotionId.potions[94] = "minecraft:long_invisibility"; + DataConverterPotionId.potions[95] = null; + DataConverterPotionId.potions[96] = "minecraft:thick"; + DataConverterPotionId.potions[97] = "minecraft:regeneration"; + DataConverterPotionId.potions[98] = "minecraft:swiftness"; + DataConverterPotionId.potions[99] = "minecraft:long_fire_resistance"; + DataConverterPotionId.potions[100] = "minecraft:poison"; + DataConverterPotionId.potions[101] = "minecraft:strong_healing"; + DataConverterPotionId.potions[102] = "minecraft:long_night_vision"; + DataConverterPotionId.potions[103] = null; + DataConverterPotionId.potions[104] = "minecraft:long_weakness"; + DataConverterPotionId.potions[105] = "minecraft:strength"; + DataConverterPotionId.potions[106] = "minecraft:long_slowness"; + DataConverterPotionId.potions[107] = "minecraft:leaping"; + DataConverterPotionId.potions[108] = "minecraft:strong_harming"; + DataConverterPotionId.potions[109] = "minecraft:long_water_breathing"; + DataConverterPotionId.potions[110] = "minecraft:long_invisibility"; + DataConverterPotionId.potions[111] = null; + DataConverterPotionId.potions[112] = null; + DataConverterPotionId.potions[113] = "minecraft:regeneration"; + DataConverterPotionId.potions[114] = "minecraft:swiftness"; + DataConverterPotionId.potions[115] = "minecraft:long_fire_resistance"; + DataConverterPotionId.potions[116] = "minecraft:poison"; + DataConverterPotionId.potions[117] = "minecraft:strong_healing"; + DataConverterPotionId.potions[118] = "minecraft:long_night_vision"; + DataConverterPotionId.potions[119] = null; + DataConverterPotionId.potions[120] = "minecraft:long_weakness"; + DataConverterPotionId.potions[121] = "minecraft:strength"; + DataConverterPotionId.potions[122] = "minecraft:long_slowness"; + DataConverterPotionId.potions[123] = "minecraft:leaping"; + DataConverterPotionId.potions[124] = "minecraft:strong_harming"; + DataConverterPotionId.potions[125] = "minecraft:long_water_breathing"; + DataConverterPotionId.potions[126] = "minecraft:long_invisibility"; + DataConverterPotionId.potions[127] = null; + } + } + + private static class DataConverterSpawnEgg implements DataConverter { + + private static final String[] eggs = new String[256]; + + DataConverterSpawnEgg() { + } + + public int getDataVersion() { + return 105; + } + + public net.minecraft.nbt.CompoundTag convert(net.minecraft.nbt.CompoundTag cmp) { + if ("minecraft:spawn_egg".equals(cmp.getString("id"))) { + net.minecraft.nbt.CompoundTag nbttagcompound1 = cmp.getCompound("tag"); + net.minecraft.nbt.CompoundTag nbttagcompound2 = nbttagcompound1.getCompound("EntityTag"); + short short0 = cmp.getShort("Damage"); + + if (!nbttagcompound2.contains("id", 8)) { + String s = DataConverterSpawnEgg.eggs[short0 & 255]; + + if (s != null) { + nbttagcompound2.putString("id", s); + nbttagcompound1.put("EntityTag", nbttagcompound2); + cmp.put("tag", nbttagcompound1); + } + } + + if (short0 != 0) { + cmp.putShort("Damage", (short) 0); + } + } + + return cmp; + } + + static { + + DataConverterSpawnEgg.eggs[1] = "Item"; + DataConverterSpawnEgg.eggs[2] = "XPOrb"; + DataConverterSpawnEgg.eggs[7] = "ThrownEgg"; + DataConverterSpawnEgg.eggs[8] = "LeashKnot"; + DataConverterSpawnEgg.eggs[9] = "Painting"; + DataConverterSpawnEgg.eggs[10] = "Arrow"; + DataConverterSpawnEgg.eggs[11] = "Snowball"; + DataConverterSpawnEgg.eggs[12] = "Fireball"; + DataConverterSpawnEgg.eggs[13] = "SmallFireball"; + DataConverterSpawnEgg.eggs[14] = "ThrownEnderpearl"; + DataConverterSpawnEgg.eggs[15] = "EyeOfEnderSignal"; + DataConverterSpawnEgg.eggs[16] = "ThrownPotion"; + DataConverterSpawnEgg.eggs[17] = "ThrownExpBottle"; + DataConverterSpawnEgg.eggs[18] = "ItemFrame"; + DataConverterSpawnEgg.eggs[19] = "WitherSkull"; + DataConverterSpawnEgg.eggs[20] = "PrimedTnt"; + DataConverterSpawnEgg.eggs[21] = "FallingSand"; + DataConverterSpawnEgg.eggs[22] = "FireworksRocketEntity"; + DataConverterSpawnEgg.eggs[23] = "TippedArrow"; + DataConverterSpawnEgg.eggs[24] = "SpectralArrow"; + DataConverterSpawnEgg.eggs[25] = "ShulkerBullet"; + DataConverterSpawnEgg.eggs[26] = "DragonFireball"; + DataConverterSpawnEgg.eggs[30] = "ArmorStand"; + DataConverterSpawnEgg.eggs[41] = "Boat"; + DataConverterSpawnEgg.eggs[42] = "MinecartRideable"; + DataConverterSpawnEgg.eggs[43] = "MinecartChest"; + DataConverterSpawnEgg.eggs[44] = "MinecartFurnace"; + DataConverterSpawnEgg.eggs[45] = "MinecartTNT"; + DataConverterSpawnEgg.eggs[46] = "MinecartHopper"; + DataConverterSpawnEgg.eggs[47] = "MinecartSpawner"; + DataConverterSpawnEgg.eggs[40] = "MinecartCommandBlock"; + DataConverterSpawnEgg.eggs[48] = "Mob"; + DataConverterSpawnEgg.eggs[49] = "Monster"; + DataConverterSpawnEgg.eggs[50] = "Creeper"; + DataConverterSpawnEgg.eggs[51] = "Skeleton"; + DataConverterSpawnEgg.eggs[52] = "Spider"; + DataConverterSpawnEgg.eggs[53] = "Giant"; + DataConverterSpawnEgg.eggs[54] = "Zombie"; + DataConverterSpawnEgg.eggs[55] = "Slime"; + DataConverterSpawnEgg.eggs[56] = "Ghast"; + DataConverterSpawnEgg.eggs[57] = "PigZombie"; + DataConverterSpawnEgg.eggs[58] = "Enderman"; + DataConverterSpawnEgg.eggs[59] = "CaveSpider"; + DataConverterSpawnEgg.eggs[60] = "Silverfish"; + DataConverterSpawnEgg.eggs[61] = "Blaze"; + DataConverterSpawnEgg.eggs[62] = "LavaSlime"; + DataConverterSpawnEgg.eggs[63] = "EnderDragon"; + DataConverterSpawnEgg.eggs[64] = "WitherBoss"; + DataConverterSpawnEgg.eggs[65] = "Bat"; + DataConverterSpawnEgg.eggs[66] = "Witch"; + DataConverterSpawnEgg.eggs[67] = "Endermite"; + DataConverterSpawnEgg.eggs[68] = "Guardian"; + DataConverterSpawnEgg.eggs[69] = "Shulker"; + DataConverterSpawnEgg.eggs[90] = "Pig"; + DataConverterSpawnEgg.eggs[91] = "Sheep"; + DataConverterSpawnEgg.eggs[92] = "Cow"; + DataConverterSpawnEgg.eggs[93] = "Chicken"; + DataConverterSpawnEgg.eggs[94] = "Squid"; + DataConverterSpawnEgg.eggs[95] = "Wolf"; + DataConverterSpawnEgg.eggs[96] = "MushroomCow"; + DataConverterSpawnEgg.eggs[97] = "SnowMan"; + DataConverterSpawnEgg.eggs[98] = "Ozelot"; + DataConverterSpawnEgg.eggs[99] = "VillagerGolem"; + DataConverterSpawnEgg.eggs[100] = "EntityHorse"; + DataConverterSpawnEgg.eggs[101] = "Rabbit"; + DataConverterSpawnEgg.eggs[120] = "Villager"; + DataConverterSpawnEgg.eggs[200] = "EnderCrystal"; + } + } + + private static class DataConverterMinecart implements DataConverter { + + private static final List a = Lists.newArrayList("MinecartRideable", "MinecartChest", "MinecartFurnace", "MinecartTNT", "MinecartSpawner", "MinecartHopper", "MinecartCommandBlock"); + + DataConverterMinecart() { + } + + public int getDataVersion() { + return 106; + } + + public net.minecraft.nbt.CompoundTag convert(net.minecraft.nbt.CompoundTag cmp) { + if ("Minecart".equals(cmp.getString("id"))) { + String s = "MinecartRideable"; + int i = cmp.getInt("Type"); + + if (i > 0 && i < DataConverterMinecart.a.size()) { + s = DataConverterMinecart.a.get(i); + } + + cmp.putString("id", s); + cmp.remove("Type"); + } + + return cmp; + } + } + + private static class DataConverterMobSpawner implements DataConverter { + + DataConverterMobSpawner() { + } + + public int getDataVersion() { + return 107; + } + + public net.minecraft.nbt.CompoundTag convert(net.minecraft.nbt.CompoundTag cmp) { + if (!"MobSpawner".equals(cmp.getString("id"))) { + return cmp; + } else { + if (cmp.contains("EntityId", 8)) { + String s = cmp.getString("EntityId"); + net.minecraft.nbt.CompoundTag nbttagcompound1 = cmp.getCompound("SpawnData"); + + nbttagcompound1.putString("id", s.isEmpty() ? "Pig" : s); + cmp.put("SpawnData", nbttagcompound1); + cmp.remove("EntityId"); + } + + if (cmp.contains("SpawnPotentials", 9)) { + net.minecraft.nbt.ListTag nbttaglist = cmp.getList("SpawnPotentials", 10); + + for (int i = 0; i < nbttaglist.size(); ++i) { + net.minecraft.nbt.CompoundTag nbttagcompound2 = nbttaglist.getCompound(i); + + if (nbttagcompound2.contains("Type", 8)) { + net.minecraft.nbt.CompoundTag nbttagcompound3 = nbttagcompound2.getCompound("Properties"); + + nbttagcompound3.putString("id", nbttagcompound2.getString("Type")); + nbttagcompound2.put("Entity", nbttagcompound3); + nbttagcompound2.remove("Type"); + nbttagcompound2.remove("Properties"); + } + } + } + + return cmp; + } + } + } + + private static class DataConverterUUID implements DataConverter { + + DataConverterUUID() { + } + + public int getDataVersion() { + return 108; + } + + public net.minecraft.nbt.CompoundTag convert(net.minecraft.nbt.CompoundTag cmp) { + if (cmp.contains("UUID", 8)) { + cmp.putUUID("UUID", UUID.fromString(cmp.getString("UUID"))); + } + + return cmp; + } + } + + private static class DataConverterHealth implements DataConverter { + + private static final Set a = Sets.newHashSet("ArmorStand", "Bat", "Blaze", "CaveSpider", "Chicken", "Cow", "Creeper", "EnderDragon", "Enderman", "Endermite", "EntityHorse", "Ghast", "Giant", "Guardian", "LavaSlime", "MushroomCow", "Ozelot", "Pig", "PigZombie", "Rabbit", "Sheep", "Shulker", "Silverfish", "Skeleton", "Slime", "SnowMan", "Spider", "Squid", "Villager", "VillagerGolem", "Witch", "WitherBoss", "Wolf", "Zombie"); + + DataConverterHealth() { + } + + public int getDataVersion() { + return 109; + } + + public net.minecraft.nbt.CompoundTag convert(net.minecraft.nbt.CompoundTag cmp) { + if (DataConverterHealth.a.contains(cmp.getString("id"))) { + float f; + + if (cmp.contains("HealF", 99)) { + f = cmp.getFloat("HealF"); + cmp.remove("HealF"); + } else { + if (!cmp.contains("Health", 99)) { + return cmp; + } + + f = cmp.getFloat("Health"); + } + + cmp.putFloat("Health", f); + } + + return cmp; + } + } + + private static class DataConverterSaddle implements DataConverter { + + DataConverterSaddle() { + } + + public int getDataVersion() { + return 110; + } + + public net.minecraft.nbt.CompoundTag convert(net.minecraft.nbt.CompoundTag cmp) { + if ("EntityHorse".equals(cmp.getString("id")) && !cmp.contains("SaddleItem", 10) && cmp.getBoolean("Saddle")) { + net.minecraft.nbt.CompoundTag nbttagcompound1 = new net.minecraft.nbt.CompoundTag(); + + nbttagcompound1.putString("id", "minecraft:saddle"); + nbttagcompound1.putByte("Count", (byte) 1); + nbttagcompound1.putShort("Damage", (short) 0); + cmp.put("SaddleItem", nbttagcompound1); + cmp.remove("Saddle"); + } + + return cmp; + } + } + + private static class DataConverterHanging implements DataConverter { + + DataConverterHanging() { + } + + public int getDataVersion() { + return 111; + } + + public net.minecraft.nbt.CompoundTag convert(net.minecraft.nbt.CompoundTag cmp) { + String s = cmp.getString("id"); + boolean flag = "Painting".equals(s); + boolean flag1 = "ItemFrame".equals(s); + + if ((flag || flag1) && !cmp.contains("Facing", 99)) { + Direction enumdirection; + + if (cmp.contains("Direction", 99)) { + enumdirection = Direction.from2DDataValue(cmp.getByte("Direction")); + cmp.putInt("TileX", cmp.getInt("TileX") + enumdirection.getStepX()); + cmp.putInt("TileY", cmp.getInt("TileY") + enumdirection.getStepY()); + cmp.putInt("TileZ", cmp.getInt("TileZ") + enumdirection.getStepZ()); + cmp.remove("Direction"); + if (flag1 && cmp.contains("ItemRotation", 99)) { + cmp.putByte("ItemRotation", (byte) (cmp.getByte("ItemRotation") * 2)); + } + } else { + enumdirection = Direction.from2DDataValue(cmp.getByte("Dir")); + cmp.remove("Dir"); + } + + cmp.putByte("Facing", (byte) enumdirection.get2DDataValue()); + } + + return cmp; + } + } + + private static class DataConverterDropChances implements DataConverter { + + DataConverterDropChances() { + } + + public int getDataVersion() { + return 113; + } + + public net.minecraft.nbt.CompoundTag convert(net.minecraft.nbt.CompoundTag cmp) { + net.minecraft.nbt.ListTag nbttaglist; + + if (cmp.contains("HandDropChances", 9)) { + nbttaglist = cmp.getList("HandDropChances", 5); + if (nbttaglist.size() == 2 && nbttaglist.getFloat(0) == 0.0F && nbttaglist.getFloat(1) == 0.0F) { + cmp.remove("HandDropChances"); + } + } + + if (cmp.contains("ArmorDropChances", 9)) { + nbttaglist = cmp.getList("ArmorDropChances", 5); + if (nbttaglist.size() == 4 && nbttaglist.getFloat(0) == 0.0F && nbttaglist.getFloat(1) == 0.0F && nbttaglist.getFloat(2) == 0.0F && nbttaglist.getFloat(3) == 0.0F) { + cmp.remove("ArmorDropChances"); + } + } + + return cmp; + } + } + + private static class DataConverterRiding implements DataConverter { + + DataConverterRiding() { + } + + public int getDataVersion() { + return 135; + } + + public net.minecraft.nbt.CompoundTag convert(net.minecraft.nbt.CompoundTag cmp) { + while (cmp.contains("Riding", 10)) { + net.minecraft.nbt.CompoundTag nbttagcompound1 = this.b(cmp); + + this.convert(cmp, nbttagcompound1); + cmp = nbttagcompound1; + } + + return cmp; + } + + protected void convert(net.minecraft.nbt.CompoundTag nbttagcompound, net.minecraft.nbt.CompoundTag nbttagcompound1) { + net.minecraft.nbt.ListTag nbttaglist = new net.minecraft.nbt.ListTag(); + + nbttaglist.add(nbttagcompound); + nbttagcompound1.put("Passengers", nbttaglist); + } + + protected net.minecraft.nbt.CompoundTag b(net.minecraft.nbt.CompoundTag nbttagcompound) { + net.minecraft.nbt.CompoundTag nbttagcompound1 = nbttagcompound.getCompound("Riding"); + + nbttagcompound.remove("Riding"); + return nbttagcompound1; + } + } + + private static class DataConverterBook implements DataConverter { + + DataConverterBook() { + } + + public int getDataVersion() { + return 165; + } + + public net.minecraft.nbt.CompoundTag convert(net.minecraft.nbt.CompoundTag cmp) { + if ("minecraft:written_book".equals(cmp.getString("id"))) { + net.minecraft.nbt.CompoundTag nbttagcompound1 = cmp.getCompound("tag"); + + if (nbttagcompound1.contains("pages", 9)) { + net.minecraft.nbt.ListTag nbttaglist = nbttagcompound1.getList("pages", 8); + + for (int i = 0; i < nbttaglist.size(); ++i) { + String s = nbttaglist.getString(i); + Component object = null; + + if (!"null".equals(s) && !StringUtil.isNullOrEmpty(s)) { + if ((s.charAt(0) != 34 || s.charAt(s.length() - 1) != 34) && (s.charAt(0) != 123 || s.charAt(s.length() - 1) != 125)) { + object = new TextComponent(s); + } else { + try { + object = GsonHelper.fromJson(DataConverterSignText.a, s, Component.class, true); + if (object == null) { + object = new TextComponent(""); + } + } catch (JsonParseException jsonparseexception) { + ; + } + + if (object == null) { + try { + object = Component.Serializer.fromJson(s); + } catch (JsonParseException jsonparseexception1) { + ; + } + } + + if (object == null) { + try { + object = Component.Serializer.fromJsonLenient(s); + } catch (JsonParseException jsonparseexception2) { + ; + } + } + + if (object == null) { + object = new TextComponent(s); + } + } + } else { + object = new TextComponent(""); + } + + nbttaglist.set(i, net.minecraft.nbt.StringTag.valueOf(Component.Serializer.toJson(object))); + } + + nbttagcompound1.put("pages", nbttaglist); + } + } + + return cmp; + } + } + + private static class DataConverterCookedFish implements DataConverter { + + private static final ResourceLocation a = new ResourceLocation("cooked_fished"); + + DataConverterCookedFish() { + } + + public int getDataVersion() { + return 502; + } + + public net.minecraft.nbt.CompoundTag convert(net.minecraft.nbt.CompoundTag cmp) { + if (cmp.contains("id", 8) && DataConverterCookedFish.a.equals(new ResourceLocation(cmp.getString("id")))) { + cmp.putString("id", "minecraft:cooked_fish"); + } + + return cmp; + } + } + + private static class DataConverterZombie implements DataConverter { + + private static final Random a = new Random(); + + DataConverterZombie() { + } + + public int getDataVersion() { + return 502; + } + + public net.minecraft.nbt.CompoundTag convert(net.minecraft.nbt.CompoundTag cmp) { + if ("Zombie".equals(cmp.getString("id")) && cmp.getBoolean("IsVillager")) { + if (!cmp.contains("ZombieType", 99)) { + int i = -1; + + if (cmp.contains("VillagerProfession", 99)) { + try { + i = this.convert(cmp.getInt("VillagerProfession")); + } catch (RuntimeException runtimeexception) { + ; + } + } + + if (i == -1) { + i = this.convert(DataConverterZombie.a.nextInt(6)); + } + + cmp.putInt("ZombieType", i); + } + + cmp.remove("IsVillager"); + } + + return cmp; + } + + private int convert(int i) { + return i >= 0 && i < 6 ? i : -1; + } + } + + private static class DataConverterVBO implements DataConverter { + + DataConverterVBO() { + } + + public int getDataVersion() { + return 505; + } + + public net.minecraft.nbt.CompoundTag convert(net.minecraft.nbt.CompoundTag cmp) { + cmp.putString("useVbo", "true"); + return cmp; + } + } + + private static class DataConverterGuardian implements DataConverter { + + DataConverterGuardian() { + } + + public int getDataVersion() { + return 700; + } + + public net.minecraft.nbt.CompoundTag convert(net.minecraft.nbt.CompoundTag cmp) { + if ("Guardian".equals(cmp.getString("id"))) { + if (cmp.getBoolean("Elder")) { + cmp.putString("id", "ElderGuardian"); + } + + cmp.remove("Elder"); + } + + return cmp; + } + } + + private static class DataConverterSkeleton implements DataConverter { + + DataConverterSkeleton() { + } + + public int getDataVersion() { + return 701; + } + + public net.minecraft.nbt.CompoundTag convert(net.minecraft.nbt.CompoundTag cmp) { + String s = cmp.getString("id"); + + if ("Skeleton".equals(s)) { + int i = cmp.getInt("SkeletonType"); + + if (i == 1) { + cmp.putString("id", "WitherSkeleton"); + } else if (i == 2) { + cmp.putString("id", "Stray"); + } + + cmp.remove("SkeletonType"); + } + + return cmp; + } + } + + private static class DataConverterZombieType implements DataConverter { + + DataConverterZombieType() { + } + + public int getDataVersion() { + return 702; + } + + public net.minecraft.nbt.CompoundTag convert(net.minecraft.nbt.CompoundTag cmp) { + if ("Zombie".equals(cmp.getString("id"))) { + int i = cmp.getInt("ZombieType"); + + switch (i) { + case 0: + default: + break; + + case 1: + case 2: + case 3: + case 4: + case 5: + cmp.putString("id", "ZombieVillager"); + cmp.putInt("Profession", i - 1); + break; + + case 6: + cmp.putString("id", "Husk"); + } + + cmp.remove("ZombieType"); + } + + return cmp; + } + } + + private static class DataConverterHorse implements DataConverter { + + DataConverterHorse() { + } + + public int getDataVersion() { + return 703; + } + + public net.minecraft.nbt.CompoundTag convert(net.minecraft.nbt.CompoundTag cmp) { + if ("EntityHorse".equals(cmp.getString("id"))) { + int i = cmp.getInt("Type"); + + switch (i) { + case 0: + default: + cmp.putString("id", "Horse"); + break; + + case 1: + cmp.putString("id", "Donkey"); + break; + + case 2: + cmp.putString("id", "Mule"); + break; + + case 3: + cmp.putString("id", "ZombieHorse"); + break; + + case 4: + cmp.putString("id", "SkeletonHorse"); + } + + cmp.remove("Type"); + } + + return cmp; + } + } + + private static class DataConverterTileEntity implements DataConverter { + + private static final Map a = Maps.newHashMap(); + + DataConverterTileEntity() { + } + + public int getDataVersion() { + return 704; + } + + public net.minecraft.nbt.CompoundTag convert(net.minecraft.nbt.CompoundTag cmp) { + String s = DataConverterTileEntity.a.get(cmp.getString("id")); + + if (s != null) { + cmp.putString("id", s); + } + + return cmp; + } + + static { + DataConverterTileEntity.a.put("Airportal", "minecraft:end_portal"); + DataConverterTileEntity.a.put("Banner", "minecraft:banner"); + DataConverterTileEntity.a.put("Beacon", "minecraft:beacon"); + DataConverterTileEntity.a.put("Cauldron", "minecraft:brewing_stand"); + DataConverterTileEntity.a.put("Chest", "minecraft:chest"); + DataConverterTileEntity.a.put("Comparator", "minecraft:comparator"); + DataConverterTileEntity.a.put("Control", "minecraft:command_block"); + DataConverterTileEntity.a.put("DLDetector", "minecraft:daylight_detector"); + DataConverterTileEntity.a.put("Dropper", "minecraft:dropper"); + DataConverterTileEntity.a.put("EnchantTable", "minecraft:enchanting_table"); + DataConverterTileEntity.a.put("EndGateway", "minecraft:end_gateway"); + DataConverterTileEntity.a.put("EnderChest", "minecraft:ender_chest"); + DataConverterTileEntity.a.put("FlowerPot", "minecraft:flower_pot"); + DataConverterTileEntity.a.put("Furnace", "minecraft:furnace"); + DataConverterTileEntity.a.put("Hopper", "minecraft:hopper"); + DataConverterTileEntity.a.put("MobSpawner", "minecraft:mob_spawner"); + DataConverterTileEntity.a.put("Music", "minecraft:noteblock"); + DataConverterTileEntity.a.put("Piston", "minecraft:piston"); + DataConverterTileEntity.a.put("RecordPlayer", "minecraft:jukebox"); + DataConverterTileEntity.a.put("Sign", "minecraft:sign"); + DataConverterTileEntity.a.put("Skull", "minecraft:skull"); + DataConverterTileEntity.a.put("Structure", "minecraft:structure_block"); + DataConverterTileEntity.a.put("Trap", "minecraft:dispenser"); + } + } + + private static class DataConverterEntity implements DataConverter { + + private static final Map a = Maps.newHashMap(); + + DataConverterEntity() { + } + + public int getDataVersion() { + return 704; + } + + public net.minecraft.nbt.CompoundTag convert(net.minecraft.nbt.CompoundTag cmp) { + String s = DataConverterEntity.a.get(cmp.getString("id")); + + if (s != null) { + cmp.putString("id", s); + } + + return cmp; + } + + static { + DataConverterEntity.a.put("AreaEffectCloud", "minecraft:area_effect_cloud"); + DataConverterEntity.a.put("ArmorStand", "minecraft:armor_stand"); + DataConverterEntity.a.put("Arrow", "minecraft:arrow"); + DataConverterEntity.a.put("Bat", "minecraft:bat"); + DataConverterEntity.a.put("Blaze", "minecraft:blaze"); + DataConverterEntity.a.put("Boat", "minecraft:boat"); + DataConverterEntity.a.put("CaveSpider", "minecraft:cave_spider"); + DataConverterEntity.a.put("Chicken", "minecraft:chicken"); + DataConverterEntity.a.put("Cow", "minecraft:cow"); + DataConverterEntity.a.put("Creeper", "minecraft:creeper"); + DataConverterEntity.a.put("Donkey", "minecraft:donkey"); + DataConverterEntity.a.put("DragonFireball", "minecraft:dragon_fireball"); + DataConverterEntity.a.put("ElderGuardian", "minecraft:elder_guardian"); + DataConverterEntity.a.put("EnderCrystal", "minecraft:ender_crystal"); + DataConverterEntity.a.put("EnderDragon", "minecraft:ender_dragon"); + DataConverterEntity.a.put("Enderman", "minecraft:enderman"); + DataConverterEntity.a.put("Endermite", "minecraft:endermite"); + DataConverterEntity.a.put("EyeOfEnderSignal", "minecraft:eye_of_ender_signal"); + DataConverterEntity.a.put("FallingSand", "minecraft:falling_block"); + DataConverterEntity.a.put("Fireball", "minecraft:fireball"); + DataConverterEntity.a.put("FireworksRocketEntity", "minecraft:fireworks_rocket"); + DataConverterEntity.a.put("Ghast", "minecraft:ghast"); + DataConverterEntity.a.put("Giant", "minecraft:giant"); + DataConverterEntity.a.put("Guardian", "minecraft:guardian"); + DataConverterEntity.a.put("Horse", "minecraft:horse"); + DataConverterEntity.a.put("Husk", "minecraft:husk"); + DataConverterEntity.a.put("Item", "minecraft:item"); + DataConverterEntity.a.put("ItemFrame", "minecraft:item_frame"); + DataConverterEntity.a.put("LavaSlime", "minecraft:magma_cube"); + DataConverterEntity.a.put("LeashKnot", "minecraft:leash_knot"); + DataConverterEntity.a.put("MinecartChest", "minecraft:chest_minecart"); + DataConverterEntity.a.put("MinecartCommandBlock", "minecraft:commandblock_minecart"); + DataConverterEntity.a.put("MinecartFurnace", "minecraft:furnace_minecart"); + DataConverterEntity.a.put("MinecartHopper", "minecraft:hopper_minecart"); + DataConverterEntity.a.put("MinecartRideable", "minecraft:minecart"); + DataConverterEntity.a.put("MinecartSpawner", "minecraft:spawner_minecart"); + DataConverterEntity.a.put("MinecartTNT", "minecraft:tnt_minecart"); + DataConverterEntity.a.put("Mule", "minecraft:mule"); + DataConverterEntity.a.put("MushroomCow", "minecraft:mooshroom"); + DataConverterEntity.a.put("Ozelot", "minecraft:ocelot"); + DataConverterEntity.a.put("Painting", "minecraft:painting"); + DataConverterEntity.a.put("Pig", "minecraft:pig"); + DataConverterEntity.a.put("PigZombie", "minecraft:zombie_pigman"); + DataConverterEntity.a.put("PolarBear", "minecraft:polar_bear"); + DataConverterEntity.a.put("PrimedTnt", "minecraft:tnt"); + DataConverterEntity.a.put("Rabbit", "minecraft:rabbit"); + DataConverterEntity.a.put("Sheep", "minecraft:sheep"); + DataConverterEntity.a.put("Shulker", "minecraft:shulker"); + DataConverterEntity.a.put("ShulkerBullet", "minecraft:shulker_bullet"); + DataConverterEntity.a.put("Silverfish", "minecraft:silverfish"); + DataConverterEntity.a.put("Skeleton", "minecraft:skeleton"); + DataConverterEntity.a.put("SkeletonHorse", "minecraft:skeleton_horse"); + DataConverterEntity.a.put("Slime", "minecraft:slime"); + DataConverterEntity.a.put("SmallFireball", "minecraft:small_fireball"); + DataConverterEntity.a.put("SnowMan", "minecraft:snowman"); + DataConverterEntity.a.put("Snowball", "minecraft:snowball"); + DataConverterEntity.a.put("SpectralArrow", "minecraft:spectral_arrow"); + DataConverterEntity.a.put("Spider", "minecraft:spider"); + DataConverterEntity.a.put("Squid", "minecraft:squid"); + DataConverterEntity.a.put("Stray", "minecraft:stray"); + DataConverterEntity.a.put("ThrownEgg", "minecraft:egg"); + DataConverterEntity.a.put("ThrownEnderpearl", "minecraft:ender_pearl"); + DataConverterEntity.a.put("ThrownExpBottle", "minecraft:xp_bottle"); + DataConverterEntity.a.put("ThrownPotion", "minecraft:potion"); + DataConverterEntity.a.put("Villager", "minecraft:villager"); + DataConverterEntity.a.put("VillagerGolem", "minecraft:villager_golem"); + DataConverterEntity.a.put("Witch", "minecraft:witch"); + DataConverterEntity.a.put("WitherBoss", "minecraft:wither"); + DataConverterEntity.a.put("WitherSkeleton", "minecraft:wither_skeleton"); + DataConverterEntity.a.put("WitherSkull", "minecraft:wither_skull"); + DataConverterEntity.a.put("Wolf", "minecraft:wolf"); + DataConverterEntity.a.put("XPOrb", "minecraft:xp_orb"); + DataConverterEntity.a.put("Zombie", "minecraft:zombie"); + DataConverterEntity.a.put("ZombieHorse", "minecraft:zombie_horse"); + DataConverterEntity.a.put("ZombieVillager", "minecraft:zombie_villager"); + } + } + + private static class DataConverterPotionWater implements DataConverter { + + DataConverterPotionWater() { + } + + public int getDataVersion() { + return 806; + } + + public net.minecraft.nbt.CompoundTag convert(net.minecraft.nbt.CompoundTag cmp) { + String s = cmp.getString("id"); + + if ("minecraft:potion".equals(s) || "minecraft:splash_potion".equals(s) || "minecraft:lingering_potion".equals(s) || "minecraft:tipped_arrow".equals(s)) { + net.minecraft.nbt.CompoundTag nbttagcompound1 = cmp.getCompound("tag"); + + if (!nbttagcompound1.contains("Potion", 8)) { + nbttagcompound1.putString("Potion", "minecraft:water"); + } + + if (!cmp.contains("tag", 10)) { + cmp.put("tag", nbttagcompound1); + } + } + + return cmp; + } + } + + private static class DataConverterShulker implements DataConverter { + + DataConverterShulker() { + } + + public int getDataVersion() { + return 808; + } + + public net.minecraft.nbt.CompoundTag convert(net.minecraft.nbt.CompoundTag cmp) { + if ("minecraft:shulker".equals(cmp.getString("id")) && !cmp.contains("Color", 99)) { + cmp.putByte("Color", (byte) 10); + } + + return cmp; + } + } + + private static class DataConverterShulkerBoxItem implements DataConverter { + + public static final String[] a = new String[] { "minecraft:white_shulker_box", "minecraft:orange_shulker_box", "minecraft:magenta_shulker_box", "minecraft:light_blue_shulker_box", "minecraft:yellow_shulker_box", "minecraft:lime_shulker_box", "minecraft:pink_shulker_box", "minecraft:gray_shulker_box", "minecraft:silver_shulker_box", "minecraft:cyan_shulker_box", "minecraft:purple_shulker_box", "minecraft:blue_shulker_box", "minecraft:brown_shulker_box", "minecraft:green_shulker_box", "minecraft:red_shulker_box", "minecraft:black_shulker_box" }; + + DataConverterShulkerBoxItem() { + } + + public int getDataVersion() { + return 813; + } + + public net.minecraft.nbt.CompoundTag convert(net.minecraft.nbt.CompoundTag cmp) { + if ("minecraft:shulker_box".equals(cmp.getString("id")) && cmp.contains("tag", 10)) { + net.minecraft.nbt.CompoundTag nbttagcompound1 = cmp.getCompound("tag"); + + if (nbttagcompound1.contains("BlockEntityTag", 10)) { + net.minecraft.nbt.CompoundTag nbttagcompound2 = nbttagcompound1.getCompound("BlockEntityTag"); + + if (nbttagcompound2.getList("Items", 10).isEmpty()) { + nbttagcompound2.remove("Items"); + } + + int i = nbttagcompound2.getInt("Color"); + + nbttagcompound2.remove("Color"); + if (nbttagcompound2.isEmpty()) { + nbttagcompound1.remove("BlockEntityTag"); + } + + if (nbttagcompound1.isEmpty()) { + cmp.remove("tag"); + } + + cmp.putString("id", DataConverterShulkerBoxItem.a[i % 16]); + } + } + + return cmp; + } + } + + private static class DataConverterShulkerBoxBlock implements DataConverter { + + DataConverterShulkerBoxBlock() { + } + + public int getDataVersion() { + return 813; + } + + public net.minecraft.nbt.CompoundTag convert(net.minecraft.nbt.CompoundTag cmp) { + if ("minecraft:shulker".equals(cmp.getString("id"))) { + cmp.remove("Color"); + } + + return cmp; + } + } + + private static class DataConverterLang implements DataConverter { + + DataConverterLang() { + } + + public int getDataVersion() { + return 816; + } + + public net.minecraft.nbt.CompoundTag convert(net.minecraft.nbt.CompoundTag cmp) { + if (cmp.contains("lang", 8)) { + cmp.putString("lang", cmp.getString("lang").toLowerCase(Locale.ROOT)); + } + + return cmp; + } + } + + private static class DataConverterTotem implements DataConverter { + + DataConverterTotem() { + } + + public int getDataVersion() { + return 820; + } + + public net.minecraft.nbt.CompoundTag convert(net.minecraft.nbt.CompoundTag cmp) { + if ("minecraft:totem".equals(cmp.getString("id"))) { + cmp.putString("id", "minecraft:totem_of_undying"); + } + + return cmp; + } + } + + private static class DataConverterBedBlock implements DataConverter { + + private static final Logger a = LogManager.getLogger(PaperweightDataConverters.class); + + DataConverterBedBlock() { + } + + public int getDataVersion() { + return 1125; + } + + public net.minecraft.nbt.CompoundTag convert(net.minecraft.nbt.CompoundTag cmp) { + try { + net.minecraft.nbt.CompoundTag nbttagcompound1 = cmp.getCompound("Level"); + int i = nbttagcompound1.getInt("xPos"); + int j = nbttagcompound1.getInt("zPos"); + net.minecraft.nbt.ListTag nbttaglist = nbttagcompound1.getList("TileEntities", 10); + net.minecraft.nbt.ListTag nbttaglist1 = nbttagcompound1.getList("Sections", 10); + + for (int k = 0; k < nbttaglist1.size(); ++k) { + net.minecraft.nbt.CompoundTag nbttagcompound2 = nbttaglist1.getCompound(k); + byte b0 = nbttagcompound2.getByte("Y"); + byte[] abyte = nbttagcompound2.getByteArray("Blocks"); + + for (int l = 0; l < abyte.length; ++l) { + if (416 == (abyte[l] & 255) << 4) { + int i1 = l & 15; + int j1 = l >> 8 & 15; + int k1 = l >> 4 & 15; + net.minecraft.nbt.CompoundTag nbttagcompound3 = new net.minecraft.nbt.CompoundTag(); + + nbttagcompound3.putString("id", "bed"); + nbttagcompound3.putInt("x", i1 + (i << 4)); + nbttagcompound3.putInt("y", j1 + (b0 << 4)); + nbttagcompound3.putInt("z", k1 + (j << 4)); + nbttaglist.add(nbttagcompound3); + } + } + } + } catch (Exception exception) { + DataConverterBedBlock.a.warn("Unable to datafix Bed blocks, level format may be missing tags."); + } + + return cmp; + } + } + + private static class DataConverterBedItem implements DataConverter { + + DataConverterBedItem() { + } + + public int getDataVersion() { + return 1125; + } + + public net.minecraft.nbt.CompoundTag convert(net.minecraft.nbt.CompoundTag cmp) { + if ("minecraft:bed".equals(cmp.getString("id")) && cmp.getShort("Damage") == 0) { + cmp.putShort("Damage", (short) DyeColor.RED.getId()); + } + + return cmp; + } + } + + private static class DataConverterSignText implements DataConverter { + + public static final Gson a = new GsonBuilder().registerTypeAdapter(Component.class, new JsonDeserializer() { + MutableComponent a(JsonElement jsonelement, Type type, JsonDeserializationContext jsondeserializationcontext) throws JsonParseException { + if (jsonelement.isJsonPrimitive()) { + return new TextComponent(jsonelement.getAsString()); + } else if (jsonelement.isJsonArray()) { + JsonArray jsonarray = jsonelement.getAsJsonArray(); + MutableComponent ichatbasecomponent = null; + Iterator iterator = jsonarray.iterator(); + + while (iterator.hasNext()) { + JsonElement jsonelement1 = (JsonElement) iterator.next(); + MutableComponent ichatbasecomponent1 = this.a(jsonelement1, jsonelement1.getClass(), jsondeserializationcontext); + + if (ichatbasecomponent == null) { + ichatbasecomponent = ichatbasecomponent1; + } else { + ichatbasecomponent.append(ichatbasecomponent1); + } + } + + return ichatbasecomponent; + } else { + throw new JsonParseException("Don't know how to turn " + jsonelement + " into a Component"); + } + } + + public Object deserialize(JsonElement jsonelement, Type type, JsonDeserializationContext jsondeserializationcontext) throws JsonParseException { + return this.a(jsonelement, type, jsondeserializationcontext); + } + }).create(); + + DataConverterSignText() { + } + + public int getDataVersion() { + return 101; + } + + public net.minecraft.nbt.CompoundTag convert(net.minecraft.nbt.CompoundTag cmp) { + if ("Sign".equals(cmp.getString("id"))) { + this.convert(cmp, "Text1"); + this.convert(cmp, "Text2"); + this.convert(cmp, "Text3"); + this.convert(cmp, "Text4"); + } + + return cmp; + } + + private void convert(net.minecraft.nbt.CompoundTag nbttagcompound, String s) { + String s1 = nbttagcompound.getString(s); + Component object = null; + + if (!"null".equals(s1) && !StringUtil.isNullOrEmpty(s1)) { + if ((s1.charAt(0) != 34 || s1.charAt(s1.length() - 1) != 34) && (s1.charAt(0) != 123 || s1.charAt(s1.length() - 1) != 125)) { + object = new TextComponent(s1); + } else { + try { + object = GsonHelper.fromJson(DataConverterSignText.a, s1, Component.class, true); + if (object == null) { + object = new TextComponent(""); + } + } catch (JsonParseException jsonparseexception) { + ; + } + + if (object == null) { + try { + object = Component.Serializer.fromJson(s1); + } catch (JsonParseException jsonparseexception1) { + ; + } + } + + if (object == null) { + try { + object = Component.Serializer.fromJsonLenient(s1); + } catch (JsonParseException jsonparseexception2) { + ; + } + } + + if (object == null) { + object = new TextComponent(s1); + } + } + } else { + object = new TextComponent(""); + } + + nbttagcompound.putString(s, Component.Serializer.toJson(object)); + } + } + + private static class DataInspectorPlayerVehicle implements DataInspector { + @Override + public net.minecraft.nbt.CompoundTag inspect(net.minecraft.nbt.CompoundTag cmp, int sourceVer, int targetVer) { + if (cmp.contains("RootVehicle", 10)) { + net.minecraft.nbt.CompoundTag nbttagcompound1 = cmp.getCompound("RootVehicle"); + + if (nbttagcompound1.contains("Entity", 10)) { + convertCompound(LegacyType.ENTITY, nbttagcompound1, "Entity", sourceVer, targetVer); + } + } + + return cmp; + } + } + + private static class DataInspectorLevelPlayer implements DataInspector { + @Override + public net.minecraft.nbt.CompoundTag inspect(net.minecraft.nbt.CompoundTag cmp, int sourceVer, int targetVer) { + if (cmp.contains("Player", 10)) { + convertCompound(LegacyType.PLAYER, cmp, "Player", sourceVer, targetVer); + } + + return cmp; + } + } + + private static class DataInspectorStructure implements DataInspector { + @Override + public net.minecraft.nbt.CompoundTag inspect(net.minecraft.nbt.CompoundTag cmp, int sourceVer, int targetVer) { + net.minecraft.nbt.ListTag nbttaglist; + int j; + net.minecraft.nbt.CompoundTag nbttagcompound1; + + if (cmp.contains("entities", 9)) { + nbttaglist = cmp.getList("entities", 10); + + for (j = 0; j < nbttaglist.size(); ++j) { + nbttagcompound1 = (net.minecraft.nbt.CompoundTag) nbttaglist.get(j); + if (nbttagcompound1.contains("nbt", 10)) { + convertCompound(LegacyType.ENTITY, nbttagcompound1, "nbt", sourceVer, targetVer); + } + } + } + + if (cmp.contains("blocks", 9)) { + nbttaglist = cmp.getList("blocks", 10); + + for (j = 0; j < nbttaglist.size(); ++j) { + nbttagcompound1 = (net.minecraft.nbt.CompoundTag) nbttaglist.get(j); + if (nbttagcompound1.contains("nbt", 10)) { + convertCompound(LegacyType.BLOCK_ENTITY, nbttagcompound1, "nbt", sourceVer, targetVer); + } + } + } + + return cmp; + } + } + + private static class DataInspectorChunks implements DataInspector { + @Override + public net.minecraft.nbt.CompoundTag inspect(net.minecraft.nbt.CompoundTag cmp, int sourceVer, int targetVer) { + if (cmp.contains("Level", 10)) { + net.minecraft.nbt.CompoundTag nbttagcompound1 = cmp.getCompound("Level"); + net.minecraft.nbt.ListTag nbttaglist; + int j; + + if (nbttagcompound1.contains("Entities", 9)) { + nbttaglist = nbttagcompound1.getList("Entities", 10); + + for (j = 0; j < nbttaglist.size(); ++j) { + nbttaglist.set(j, convert(LegacyType.ENTITY, (net.minecraft.nbt.CompoundTag) nbttaglist.get(j), sourceVer, targetVer)); + } + } + + if (nbttagcompound1.contains("TileEntities", 9)) { + nbttaglist = nbttagcompound1.getList("TileEntities", 10); + + for (j = 0; j < nbttaglist.size(); ++j) { + nbttaglist.set(j, convert(LegacyType.BLOCK_ENTITY, (net.minecraft.nbt.CompoundTag) nbttaglist.get(j), sourceVer, targetVer)); + } + } + } + + return cmp; + } + } + + private static class DataInspectorEntityPassengers implements DataInspector { + @Override + public net.minecraft.nbt.CompoundTag inspect(net.minecraft.nbt.CompoundTag cmp, int sourceVer, int targetVer) { + if (cmp.contains("Passengers", 9)) { + net.minecraft.nbt.ListTag nbttaglist = cmp.getList("Passengers", 10); + + for (int j = 0; j < nbttaglist.size(); ++j) { + nbttaglist.set(j, convert(LegacyType.ENTITY, nbttaglist.getCompound(j), sourceVer, targetVer)); + } + } + + return cmp; + } + } + + private static class DataInspectorPlayer implements DataInspector { + @Override + public net.minecraft.nbt.CompoundTag inspect(net.minecraft.nbt.CompoundTag cmp, int sourceVer, int targetVer) { + convertItems(cmp, "Inventory", sourceVer, targetVer); + convertItems(cmp, "EnderItems", sourceVer, targetVer); + if (cmp.contains("ShoulderEntityLeft", 10)) { + convertCompound(LegacyType.ENTITY, cmp, "ShoulderEntityLeft", sourceVer, targetVer); + } + + if (cmp.contains("ShoulderEntityRight", 10)) { + convertCompound(LegacyType.ENTITY, cmp, "ShoulderEntityRight", sourceVer, targetVer); + } + + return cmp; + } + } + + private static class DataInspectorVillagers implements DataInspector { + ResourceLocation entityVillager = getKey("EntityVillager"); + + @Override + public net.minecraft.nbt.CompoundTag inspect(net.minecraft.nbt.CompoundTag cmp, int sourceVer, int targetVer) { + if (entityVillager.equals(new ResourceLocation(cmp.getString("id"))) && cmp.contains("Offers", 10)) { + net.minecraft.nbt.CompoundTag nbttagcompound1 = cmp.getCompound("Offers"); + + if (nbttagcompound1.contains("Recipes", 9)) { + net.minecraft.nbt.ListTag nbttaglist = nbttagcompound1.getList("Recipes", 10); + + for (int j = 0; j < nbttaglist.size(); ++j) { + net.minecraft.nbt.CompoundTag nbttagcompound2 = nbttaglist.getCompound(j); + + convertItem(nbttagcompound2, "buy", sourceVer, targetVer); + convertItem(nbttagcompound2, "buyB", sourceVer, targetVer); + convertItem(nbttagcompound2, "sell", sourceVer, targetVer); + nbttaglist.set(j, nbttagcompound2); + } + } + } + + return cmp; + } + } + + private static class DataInspectorMobSpawnerMinecart implements DataInspector { + ResourceLocation entityMinecartMobSpawner = getKey("EntityMinecartMobSpawner"); + ResourceLocation tileEntityMobSpawner = getKey("TileEntityMobSpawner"); + + @Override + public net.minecraft.nbt.CompoundTag inspect(net.minecraft.nbt.CompoundTag cmp, int sourceVer, int targetVer) { + String s = cmp.getString("id"); + if (entityMinecartMobSpawner.equals(new ResourceLocation(s))) { + cmp.putString("id", tileEntityMobSpawner.toString()); + convert(LegacyType.BLOCK_ENTITY, cmp, sourceVer, targetVer); + cmp.putString("id", s); + } + + return cmp; + } + } + + private static class DataInspectorMobSpawnerMobs implements DataInspector { + ResourceLocation tileEntityMobSpawner = getKey("TileEntityMobSpawner"); + + @Override + public net.minecraft.nbt.CompoundTag inspect(net.minecraft.nbt.CompoundTag cmp, int sourceVer, int targetVer) { + if (tileEntityMobSpawner.equals(new ResourceLocation(cmp.getString("id")))) { + if (cmp.contains("SpawnPotentials", 9)) { + net.minecraft.nbt.ListTag nbttaglist = cmp.getList("SpawnPotentials", 10); + + for (int j = 0; j < nbttaglist.size(); ++j) { + net.minecraft.nbt.CompoundTag nbttagcompound1 = nbttaglist.getCompound(j); + + convertCompound(LegacyType.ENTITY, nbttagcompound1, "Entity", sourceVer, targetVer); + } + } + + convertCompound(LegacyType.ENTITY, cmp, "SpawnData", sourceVer, targetVer); + } + + return cmp; + } + } + + private static class DataInspectorCommandBlock implements DataInspector { + ResourceLocation tileEntityCommand = getKey("TileEntityCommand"); + + @Override + public net.minecraft.nbt.CompoundTag inspect(net.minecraft.nbt.CompoundTag cmp, int sourceVer, int targetVer) { + if (tileEntityCommand.equals(new ResourceLocation(cmp.getString("id")))) { + cmp.putString("id", "Control"); + convert(LegacyType.BLOCK_ENTITY, cmp, sourceVer, targetVer); + cmp.putString("id", "MinecartCommandBlock"); + } + + return cmp; + } + } +} diff --git a/worldedit-bukkit/adapters/adapter-1.18.2/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/v1_18_R2/PaperweightFakePlayer.java b/worldedit-bukkit/adapters/adapter-1.18.2/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/v1_18_R2/PaperweightFakePlayer.java new file mode 100644 index 0000000000..f3097a98bb --- /dev/null +++ b/worldedit-bukkit/adapters/adapter-1.18.2/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/v1_18_R2/PaperweightFakePlayer.java @@ -0,0 +1,98 @@ +/* + * WorldEdit, a Minecraft world manipulation toolkit + * Copyright (C) sk89q + * Copyright (C) WorldEdit team and contributors + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +package com.sk89q.worldedit.bukkit.adapter.impl.v1_18_R2; + +import com.mojang.authlib.GameProfile; +import net.minecraft.network.chat.ChatType; +import net.minecraft.network.chat.Component; +import net.minecraft.network.protocol.game.ServerboundClientInformationPacket; +import net.minecraft.server.level.ServerLevel; +import net.minecraft.server.level.ServerPlayer; +import net.minecraft.stats.Stat; +import net.minecraft.world.MenuProvider; +import net.minecraft.world.damagesource.DamageSource; +import net.minecraft.world.entity.Entity; +import net.minecraft.world.level.block.entity.SignBlockEntity; +import net.minecraft.world.phys.Vec3; +import org.bukkit.event.player.PlayerTeleportEvent.TeleportCause; + +import java.util.OptionalInt; +import java.util.UUID; + +class PaperweightFakePlayer extends ServerPlayer { + private static final GameProfile FAKE_WORLDEDIT_PROFILE = new GameProfile(UUID.nameUUIDFromBytes("worldedit".getBytes()), "[WorldEdit]"); + private static final Vec3 ORIGIN = new Vec3(0.0D, 0.0D, 0.0D); + + PaperweightFakePlayer(ServerLevel world) { + super(world.getServer(), world, FAKE_WORLDEDIT_PROFILE); + } + + @Override + public Vec3 position() { + return ORIGIN; + } + + @Override + public void tick() { + } + + @Override + public void die(DamageSource damagesource) { + } + + @Override + public Entity changeDimension(ServerLevel worldserver, TeleportCause cause) { + return this; + } + + @Override + public OptionalInt openMenu(MenuProvider factory) { + return OptionalInt.empty(); + } + + @Override + public void updateOptions(ServerboundClientInformationPacket packet) { + } + + @Override + public void displayClientMessage(Component message, boolean actionBar) { + } + + @Override + public void sendMessage(Component message, ChatType type, UUID sender) { + } + + @Override + public void awardStat(Stat stat, int amount) { + } + + @Override + public void awardStat(Stat stat) { + } + + @Override + public boolean isInvulnerableTo(DamageSource damageSource) { + return true; + } + + @Override + public void openTextEdit(SignBlockEntity sign) { + } +} diff --git a/worldedit-bukkit/adapters/adapter-1.18.2/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/v1_18_R2/PaperweightWorldNativeAccess.java b/worldedit-bukkit/adapters/adapter-1.18.2/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/v1_18_R2/PaperweightWorldNativeAccess.java new file mode 100644 index 0000000000..aa80f500e7 --- /dev/null +++ b/worldedit-bukkit/adapters/adapter-1.18.2/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/v1_18_R2/PaperweightWorldNativeAccess.java @@ -0,0 +1,182 @@ +/* + * WorldEdit, a Minecraft world manipulation toolkit + * Copyright (C) sk89q + * Copyright (C) WorldEdit team and contributors + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +package com.sk89q.worldedit.bukkit.adapter.impl.v1_18_R2; + +import com.sk89q.jnbt.CompoundTag; +import com.sk89q.worldedit.bukkit.BukkitAdapter; +import com.sk89q.worldedit.internal.block.BlockStateIdAccess; +import com.sk89q.worldedit.internal.wna.WorldNativeAccess; +import com.sk89q.worldedit.util.SideEffect; +import com.sk89q.worldedit.util.SideEffectSet; +import com.sk89q.worldedit.world.block.BlockState; +import net.minecraft.core.BlockPos; +import net.minecraft.nbt.Tag; +import net.minecraft.server.level.ChunkHolder; +import net.minecraft.server.level.ServerLevel; +import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.block.entity.BlockEntity; +import net.minecraft.world.level.chunk.LevelChunk; +import org.bukkit.craftbukkit.v1_18_R2.CraftWorld; +import org.bukkit.craftbukkit.v1_18_R2.block.data.CraftBlockData; +import org.bukkit.event.block.BlockPhysicsEvent; + +import java.lang.ref.WeakReference; +import java.util.Objects; +import javax.annotation.Nullable; + +public class PaperweightWorldNativeAccess implements WorldNativeAccess { + private static final int UPDATE = 1; + private static final int NOTIFY = 2; + + private final PaperweightAdapter adapter; + private final WeakReference world; + private SideEffectSet sideEffectSet; + + public PaperweightWorldNativeAccess(PaperweightAdapter adapter, WeakReference world) { + this.adapter = adapter; + this.world = world; + } + + private ServerLevel getWorld() { + return Objects.requireNonNull(world.get(), "The reference to the world was lost"); + } + + @Override + public void setCurrentSideEffectSet(SideEffectSet sideEffectSet) { + this.sideEffectSet = sideEffectSet; + } + + @Override + public LevelChunk getChunk(int x, int z) { + return getWorld().getChunk(x, z); + } + + @Override + public net.minecraft.world.level.block.state.BlockState toNative(BlockState state) { + int stateId = BlockStateIdAccess.getBlockStateId(state); + return BlockStateIdAccess.isValidInternalId(stateId) + ? Block.stateById(stateId) + : ((CraftBlockData) BukkitAdapter.adapt(state)).getState(); + } + + @Override + public net.minecraft.world.level.block.state.BlockState getBlockState(LevelChunk chunk, BlockPos position) { + return chunk.getBlockState(position); + } + + @Nullable + @Override + public net.minecraft.world.level.block.state.BlockState setBlockState(LevelChunk chunk, BlockPos position, net.minecraft.world.level.block.state.BlockState state) { + return chunk.setBlockState(position, state, false, this.sideEffectSet.shouldApply(SideEffect.UPDATE)); + } + + @Override + public net.minecraft.world.level.block.state.BlockState getValidBlockForPosition(net.minecraft.world.level.block.state.BlockState block, BlockPos position) { + return Block.updateFromNeighbourShapes(block, getWorld(), position); + } + + @Override + public BlockPos getPosition(int x, int y, int z) { + return new BlockPos(x, y, z); + } + + @Override + public void updateLightingForBlock(BlockPos position) { + getWorld().getChunkSource().getLightEngine().checkBlock(position); + } + + @Override + public boolean updateTileEntity(BlockPos position, CompoundTag tag) { + // We will assume that the tile entity was created for us + BlockEntity tileEntity = getWorld().getBlockEntity(position); + if (tileEntity == null) { + return false; + } + Tag nativeTag = adapter.fromNative(tag); + PaperweightAdapter.readTagIntoTileEntity((net.minecraft.nbt.CompoundTag) nativeTag, tileEntity); + return true; + } + + @Override + public void notifyBlockUpdate(LevelChunk chunk, BlockPos position, net.minecraft.world.level.block.state.BlockState oldState, net.minecraft.world.level.block.state.BlockState newState) { + if (chunk.getSections()[getWorld().getSectionIndex(position.getY())] != null) { + getWorld().sendBlockUpdated(position, oldState, newState, UPDATE | NOTIFY); + } + } + + @Override + public boolean isChunkTicking(LevelChunk chunk) { + return chunk.getFullStatus().isOrAfter(ChunkHolder.FullChunkStatus.TICKING); + } + + @Override + public void markBlockChanged(LevelChunk chunk, BlockPos position) { + if (chunk.getSections()[getWorld().getSectionIndex(position.getY())] != null) { + getWorld().getChunkSource().blockChanged(position); + } + } + + @Override + public void notifyNeighbors(BlockPos pos, net.minecraft.world.level.block.state.BlockState oldState, net.minecraft.world.level.block.state.BlockState newState) { + ServerLevel world = getWorld(); + if (sideEffectSet.shouldApply(SideEffect.EVENTS)) { + world.updateNeighborsAt(pos, oldState.getBlock()); + } else { + // When we don't want events, manually run the physics without them. + Block block = oldState.getBlock(); + fireNeighborChanged(pos, world, block, pos.west()); + fireNeighborChanged(pos, world, block, pos.east()); + fireNeighborChanged(pos, world, block, pos.below()); + fireNeighborChanged(pos, world, block, pos.above()); + fireNeighborChanged(pos, world, block, pos.north()); + fireNeighborChanged(pos, world, block, pos.south()); + } + if (newState.hasAnalogOutputSignal()) { + world.updateNeighbourForOutputSignal(pos, newState.getBlock()); + } + } + + private void fireNeighborChanged(BlockPos pos, ServerLevel world, Block block, BlockPos neighborPos) { + world.getBlockState(neighborPos).neighborChanged(world, neighborPos, block, pos, false); + } + + @Override + public void updateNeighbors(BlockPos pos, net.minecraft.world.level.block.state.BlockState oldState, net.minecraft.world.level.block.state.BlockState newState, int recursionLimit) { + ServerLevel world = getWorld(); + // a == updateNeighbors + // b == updateDiagonalNeighbors + oldState.updateIndirectNeighbourShapes(world, pos, NOTIFY, recursionLimit); + if (sideEffectSet.shouldApply(SideEffect.EVENTS)) { + CraftWorld craftWorld = world.getWorld(); + BlockPhysicsEvent event = new BlockPhysicsEvent(craftWorld.getBlockAt(pos.getX(), pos.getY(), pos.getZ()), CraftBlockData.fromData(newState)); + world.getCraftServer().getPluginManager().callEvent(event); + if (event.isCancelled()) { + return; + } + } + newState.updateNeighbourShapes(world, pos, NOTIFY, recursionLimit); + newState.updateIndirectNeighbourShapes(world, pos, NOTIFY, recursionLimit); + } + + @Override + public void onBlockStateChange(BlockPos pos, net.minecraft.world.level.block.state.BlockState oldState, net.minecraft.world.level.block.state.BlockState newState) { + getWorld().onBlockStateChange(pos, oldState, newState); + } +} From 2fda9a12a236cbce2a12cfa49f220e90dbfaa10e Mon Sep 17 00:00:00 2001 From: Octavia Togami Date: Fri, 4 Mar 2022 19:15:18 -0800 Subject: [PATCH 22/55] Some final version updates --- worldedit-fabric/build.gradle.kts | 2 +- worldedit-forge/build.gradle.kts | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/worldedit-fabric/build.gradle.kts b/worldedit-fabric/build.gradle.kts index 2e55666a1f..bff20558f7 100644 --- a/worldedit-fabric/build.gradle.kts +++ b/worldedit-fabric/build.gradle.kts @@ -48,7 +48,7 @@ dependencies { "modImplementation"("net.fabricmc:fabric-loader:$loaderVersion") // [1] declare fabric-api dependency... - "fabricApi"("net.fabricmc.fabric-api:fabric-api:0.47.8+1.18.2") + "fabricApi"("net.fabricmc.fabric-api:fabric-api:0.47.9+1.18.2") // [2] Load the API dependencies from the fabric mod json... @Suppress("UNCHECKED_CAST") diff --git a/worldedit-forge/build.gradle.kts b/worldedit-forge/build.gradle.kts index 9fde1e6ba4..498d484f7c 100644 --- a/worldedit-forge/build.gradle.kts +++ b/worldedit-forge/build.gradle.kts @@ -16,7 +16,7 @@ val minecraftVersion = "1.18.2" val nextMajorMinecraftVersion: String = minecraftVersion.split('.').let { (useless, major) -> "$useless.${major.toInt() + 1}" } -val forgeVersion = "40.0.1" +val forgeVersion = "40.0.3" val apiClasspath = configurations.create("apiClasspath") { isCanBeResolved = true From afdfa9e325de633f2b0bce352767e10444230811 Mon Sep 17 00:00:00 2001 From: Octavia Togami Date: Fri, 4 Mar 2022 21:18:06 -0800 Subject: [PATCH 23/55] gradle 7.4 --- gradle/wrapper/gradle-wrapper.jar | Bin 59536 -> 59821 bytes gradle/wrapper/gradle-wrapper.properties | 2 +- 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar index 7454180f2ae8848c63b8b4dea2cb829da983f2fa..41d9927a4d4fb3f96a785543079b8df6723c946b 100644 GIT binary patch delta 8958 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 diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index e750102e09..41dfb87909 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,5 +1,5 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-7.3-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-7.4-bin.zip zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists From e21ab6a7f68b7585eee60550d4059eac7ad20239 Mon Sep 17 00:00:00 2001 From: Octavia Togami Date: Fri, 4 Mar 2022 21:42:40 -0800 Subject: [PATCH 24/55] Revert to v2 setup-java https://github.com/actions/setup-java/issues/295 --- .github/workflows/codeql-analysis.yml | 2 +- .github/workflows/gradle.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/codeql-analysis.yml b/.github/workflows/codeql-analysis.yml index ffb7116ccc..da9cf78a98 100644 --- a/.github/workflows/codeql-analysis.yml +++ b/.github/workflows/codeql-analysis.yml @@ -27,7 +27,7 @@ jobs: - name: Checkout repository uses: actions/checkout@v2 - name: Set up JDK - uses: actions/setup-java@v3 + uses: actions/setup-java@v2 with: java-version: 17 cache: 'gradle' diff --git a/.github/workflows/gradle.yml b/.github/workflows/gradle.yml index af91d3efe6..8f282381a4 100644 --- a/.github/workflows/gradle.yml +++ b/.github/workflows/gradle.yml @@ -13,7 +13,7 @@ jobs: steps: - uses: actions/checkout@v2 - name: Set up JDK - uses: actions/setup-java@v3 + uses: actions/setup-java@v2 with: java-version: 17 cache: 'gradle' From 44863cf5d8bdaae0df241e66d861f8d1cc45c077 Mon Sep 17 00:00:00 2001 From: Pierre Maurice Schwang Date: Sat, 5 Mar 2022 14:50:42 +0100 Subject: [PATCH 25/55] Don't access PluginClassLoader directly (#2045) --- .../com/sk89q/bukkit/util/ClassSourceValidator.java | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/worldedit-bukkit/src/main/java/com/sk89q/bukkit/util/ClassSourceValidator.java b/worldedit-bukkit/src/main/java/com/sk89q/bukkit/util/ClassSourceValidator.java index c4d76d9fd4..bc06d4845c 100644 --- a/worldedit-bukkit/src/main/java/com/sk89q/bukkit/util/ClassSourceValidator.java +++ b/worldedit-bukkit/src/main/java/com/sk89q/bukkit/util/ClassSourceValidator.java @@ -23,7 +23,6 @@ import com.google.common.collect.ImmutableMap; import org.bukkit.Bukkit; import org.bukkit.plugin.Plugin; -import org.bukkit.plugin.java.PluginClassLoader; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; @@ -43,14 +42,17 @@ public class ClassSourceValidator { private static final String SEPARATOR_LINE = Strings.repeat("*", 46); private static final Method loadClass; + private static Class pluginClassLoaderClass; static { Method tmp; try { - tmp = PluginClassLoader.class.getDeclaredMethod("loadClass0", + pluginClassLoaderClass = Class.forName("org.bukkit.plugin.java.PluginClassLoader", false, + Bukkit.class.getClassLoader()); + tmp = pluginClassLoaderClass.getDeclaredMethod("loadClass0", String.class, boolean.class, boolean.class, boolean.class); tmp.setAccessible(true); - } catch (NoSuchMethodException e) { + } catch (NoSuchMethodException | ClassNotFoundException e) { tmp = null; } loadClass = tmp; @@ -94,7 +96,7 @@ public Map, Plugin> findMismatches(List> classes) { continue; } ClassLoader targetLoader = target.getClass().getClassLoader(); - if (!(targetLoader instanceof PluginClassLoader)) { + if (!(pluginClassLoaderClass.isAssignableFrom(targetLoader.getClass()))) { continue; } for (Class testClass : classes) { From f50a81fcc4e91eff8a417e8bf29faeff462dea12 Mon Sep 17 00:00:00 2001 From: wizjany Date: Sun, 6 Mar 2022 18:11:05 -0500 Subject: [PATCH 26/55] Fluid masks for forge/fabric. (#556) Closes #877. --- .../sk89q/worldedit/fabric/FabricWorld.java | 21 +++++++++++++++++++ .../com/sk89q/worldedit/forge/ForgeWorld.java | 20 ++++++++++++++++++ 2 files changed, 41 insertions(+) diff --git a/worldedit-fabric/src/main/java/com/sk89q/worldedit/fabric/FabricWorld.java b/worldedit-fabric/src/main/java/com/sk89q/worldedit/fabric/FabricWorld.java index 0348b16772..440adc1fb8 100644 --- a/worldedit-fabric/src/main/java/com/sk89q/worldedit/fabric/FabricWorld.java +++ b/worldedit-fabric/src/main/java/com/sk89q/worldedit/fabric/FabricWorld.java @@ -40,6 +40,9 @@ import com.sk89q.worldedit.fabric.mixin.AccessorDerivedLevelData; import com.sk89q.worldedit.fabric.mixin.AccessorPrimaryLevelData; import com.sk89q.worldedit.fabric.mixin.AccessorServerChunkCache; +import com.sk89q.worldedit.function.mask.AbstractExtentMask; +import com.sk89q.worldedit.function.mask.Mask; +import com.sk89q.worldedit.function.mask.Mask2D; import com.sk89q.worldedit.internal.Constants; import com.sk89q.worldedit.math.BlockVector2; import com.sk89q.worldedit.math.BlockVector3; @@ -81,6 +84,7 @@ import net.minecraft.world.level.ChunkPos; import net.minecraft.world.level.Level; import net.minecraft.world.level.biome.Biome; +import net.minecraft.world.level.block.LiquidBlock; import net.minecraft.world.level.block.entity.BlockEntity; import net.minecraft.world.level.chunk.ChunkAccess; import net.minecraft.world.level.chunk.ChunkSource; @@ -650,4 +654,21 @@ public Entity createEntity(Location location, BaseEntity entity) { } } + @Override + public Mask createLiquidMask() { + return new AbstractExtentMask(this) { + @Override + public boolean test(BlockVector3 vector) { + return FabricAdapter.adapt(getExtent().getBlock(vector)).getBlock() instanceof LiquidBlock; + } + + @Nullable + @Override + public Mask2D toMask2D() { + return null; + } + }; + } + + } diff --git a/worldedit-forge/src/main/java/com/sk89q/worldedit/forge/ForgeWorld.java b/worldedit-forge/src/main/java/com/sk89q/worldedit/forge/ForgeWorld.java index ddfd3b174b..d69f1506fa 100644 --- a/worldedit-forge/src/main/java/com/sk89q/worldedit/forge/ForgeWorld.java +++ b/worldedit-forge/src/main/java/com/sk89q/worldedit/forge/ForgeWorld.java @@ -37,6 +37,9 @@ import com.sk89q.worldedit.forge.internal.ForgeWorldNativeAccess; import com.sk89q.worldedit.forge.internal.NBTConverter; import com.sk89q.worldedit.forge.internal.TileEntityUtils; +import com.sk89q.worldedit.function.mask.AbstractExtentMask; +import com.sk89q.worldedit.function.mask.Mask; +import com.sk89q.worldedit.function.mask.Mask2D; import com.sk89q.worldedit.internal.Constants; import com.sk89q.worldedit.math.BlockVector2; import com.sk89q.worldedit.math.BlockVector3; @@ -78,6 +81,7 @@ import net.minecraft.world.level.ChunkPos; import net.minecraft.world.level.Level; import net.minecraft.world.level.biome.Biome; +import net.minecraft.world.level.block.LiquidBlock; import net.minecraft.world.level.block.entity.BlockEntity; import net.minecraft.world.level.chunk.ChunkAccess; import net.minecraft.world.level.chunk.ChunkStatus; @@ -92,6 +96,7 @@ import net.minecraft.world.level.storage.ServerLevelData; import net.minecraft.world.phys.AABB; import net.minecraft.world.phys.BlockHitResult; +import net.minecraftforge.fluids.IFluidBlock; import java.lang.ref.WeakReference; import java.nio.file.Files; @@ -630,4 +635,19 @@ public Entity createEntity(Location location, BaseEntity entity) { } } + @Override + public Mask createLiquidMask() { + return new AbstractExtentMask(this) { + @Override + public boolean test(BlockVector3 vector) { + return ForgeAdapter.adapt(getExtent().getBlock(vector)).getBlock() instanceof LiquidBlock; + } + + @Nullable + @Override + public Mask2D toMask2D() { + return null; + } + }; + } } From 5843aa50e67f6774c4dd0b40c62f4ea155c55409 Mon Sep 17 00:00:00 2001 From: wizjany Date: Sat, 12 Mar 2022 21:38:50 -0500 Subject: [PATCH 27/55] Change vector command converter wording. (#2059) Hopefully will cut down on questions of how to use `//pos x,y,z`. --- .../command/argument/Chunk3dVectorConverter.java | 2 +- .../sk89q/worldedit/command/argument/VectorConverter.java | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/worldedit-core/src/main/java/com/sk89q/worldedit/command/argument/Chunk3dVectorConverter.java b/worldedit-core/src/main/java/com/sk89q/worldedit/command/argument/Chunk3dVectorConverter.java index 4cfccd4786..68fd64f817 100644 --- a/worldedit-core/src/main/java/com/sk89q/worldedit/command/argument/Chunk3dVectorConverter.java +++ b/worldedit-core/src/main/java/com/sk89q/worldedit/command/argument/Chunk3dVectorConverter.java @@ -56,7 +56,7 @@ public static void register(CommandManager commandManager) { } throw new AssertionError("Expected 2 or 3 components"); }, - "block vector with x,z or x,y,z" + "block vector in the form x,z or x,y,z" )); } diff --git a/worldedit-core/src/main/java/com/sk89q/worldedit/command/argument/VectorConverter.java b/worldedit-core/src/main/java/com/sk89q/worldedit/command/argument/VectorConverter.java index 91ddfa2e4e..31436b6238 100644 --- a/worldedit-core/src/main/java/com/sk89q/worldedit/command/argument/VectorConverter.java +++ b/worldedit-core/src/main/java/com/sk89q/worldedit/command/argument/VectorConverter.java @@ -48,7 +48,7 @@ public class VectorConverter implements ArgumentConverter { INT_CONVERTER, 3, cmps -> BlockVector3.at(cmps.get(0), cmps.get(1), cmps.get(2)), - "block vector with x, y, and z" + "block vector in the form x,y,z" ); public static void register(CommandManager commandManager) { @@ -58,14 +58,14 @@ public static void register(CommandManager commandManager) { INT_CONVERTER, 2, cmps -> BlockVector2.at(cmps.get(0), cmps.get(1)), - "block vector with x and z" + "block vector in the form x,z" )); commandManager.registerConverter(Key.of(Vector2.class), new VectorConverter<>( doubleConverter, 2, cmps -> Vector2.at(cmps.get(0), cmps.get(1)), - "vector with x and z" + "vector in the form x,z" )); commandManager.registerConverter(Key.of(BlockVector3.class), BLOCK_VECTOR_3_CONVERTER); commandManager.registerConverter(Key.of(Vector3.class), @@ -73,7 +73,7 @@ public static void register(CommandManager commandManager) { doubleConverter, 3, cmps -> Vector3.at(cmps.get(0), cmps.get(1), cmps.get(2)), - "vector with x, y, and z" + "vector in the form x,y,z" )); } From 59742162cbc9849eccb93104b2cf11ab08eab362 Mon Sep 17 00:00:00 2001 From: Octavia Togami Date: Wed, 16 Mar 2022 20:05:15 -0700 Subject: [PATCH 28/55] Use Forge's official tag API --- worldedit-forge/build.gradle.kts | 2 +- .../forge/ForgeBlockCategoryRegistry.java | 23 +++++++++++-------- .../forge/ForgeItemCategoryRegistry.java | 23 +++++++++++-------- 3 files changed, 29 insertions(+), 19 deletions(-) diff --git a/worldedit-forge/build.gradle.kts b/worldedit-forge/build.gradle.kts index 498d484f7c..f2d3abfcfa 100644 --- a/worldedit-forge/build.gradle.kts +++ b/worldedit-forge/build.gradle.kts @@ -16,7 +16,7 @@ val minecraftVersion = "1.18.2" val nextMajorMinecraftVersion: String = minecraftVersion.split('.').let { (useless, major) -> "$useless.${major.toInt() + 1}" } -val forgeVersion = "40.0.3" +val forgeVersion = "40.0.18" val apiClasspath = configurations.create("apiClasspath") { isCanBeResolved = true diff --git a/worldedit-forge/src/main/java/com/sk89q/worldedit/forge/ForgeBlockCategoryRegistry.java b/worldedit-forge/src/main/java/com/sk89q/worldedit/forge/ForgeBlockCategoryRegistry.java index ddbdbb4f10..b613cd882c 100644 --- a/worldedit-forge/src/main/java/com/sk89q/worldedit/forge/ForgeBlockCategoryRegistry.java +++ b/worldedit-forge/src/main/java/com/sk89q/worldedit/forge/ForgeBlockCategoryRegistry.java @@ -19,27 +19,32 @@ package com.sk89q.worldedit.forge; +import com.google.common.collect.ImmutableSet; import com.sk89q.worldedit.world.block.BlockType; import com.sk89q.worldedit.world.registry.BlockCategoryRegistry; -import net.minecraft.core.Holder; -import net.minecraft.core.HolderSet; import net.minecraft.core.Registry; import net.minecraft.resources.ResourceLocation; import net.minecraft.tags.TagKey; +import net.minecraft.world.level.block.Block; +import net.minecraftforge.registries.ForgeRegistries; +import net.minecraftforge.registries.tags.ITagManager; +import java.util.Objects; import java.util.Set; -import java.util.stream.Collectors; public class ForgeBlockCategoryRegistry implements BlockCategoryRegistry { - // TODO clean this up once Forge adds a proper API for this - @SuppressWarnings("deprecation") @Override public Set getCategorisedByName(String category) { - return Registry.BLOCK.getTag(TagKey.create(Registry.BLOCK_REGISTRY, new ResourceLocation(category))) + ITagManager tags = Objects.requireNonNull( + ForgeRegistries.BLOCKS.tags(), "no block tags registry" + ); + return tags + .getTag(TagKey.create( + Registry.BLOCK_REGISTRY, + new ResourceLocation(category) + )) .stream() - .flatMap(HolderSet.Named::stream) - .map(Holder::value) .map(ForgeAdapter::adapt) - .collect(Collectors.toSet()); + .collect(ImmutableSet.toImmutableSet()); } } diff --git a/worldedit-forge/src/main/java/com/sk89q/worldedit/forge/ForgeItemCategoryRegistry.java b/worldedit-forge/src/main/java/com/sk89q/worldedit/forge/ForgeItemCategoryRegistry.java index 7e6acdda9e..79191caff2 100644 --- a/worldedit-forge/src/main/java/com/sk89q/worldedit/forge/ForgeItemCategoryRegistry.java +++ b/worldedit-forge/src/main/java/com/sk89q/worldedit/forge/ForgeItemCategoryRegistry.java @@ -19,27 +19,32 @@ package com.sk89q.worldedit.forge; +import com.google.common.collect.ImmutableSet; import com.sk89q.worldedit.world.item.ItemType; import com.sk89q.worldedit.world.registry.ItemCategoryRegistry; -import net.minecraft.core.Holder; -import net.minecraft.core.HolderSet; import net.minecraft.core.Registry; import net.minecraft.resources.ResourceLocation; import net.minecraft.tags.TagKey; +import net.minecraft.world.item.Item; +import net.minecraftforge.registries.ForgeRegistries; +import net.minecraftforge.registries.tags.ITagManager; +import java.util.Objects; import java.util.Set; -import java.util.stream.Collectors; public class ForgeItemCategoryRegistry implements ItemCategoryRegistry { - // TODO clean this up once Forge adds a proper API for this - @SuppressWarnings("deprecation") @Override public Set getCategorisedByName(String category) { - return Registry.ITEM.getTag(TagKey.create(Registry.ITEM_REGISTRY, new ResourceLocation(category))) + ITagManager tags = Objects.requireNonNull( + ForgeRegistries.ITEMS.tags(), "no item tags registry" + ); + return tags + .getTag(TagKey.create( + Registry.ITEM_REGISTRY, + new ResourceLocation(category) + )) .stream() - .flatMap(HolderSet.Named::stream) - .map(Holder::value) .map(ForgeAdapter::adapt) - .collect(Collectors.toSet()); + .collect(ImmutableSet.toImmutableSet()); } } From b8d096ba9930e07bf3cd7b61ee1a51bb35572158 Mon Sep 17 00:00:00 2001 From: wizjany Date: Wed, 16 Mar 2022 17:07:29 -0400 Subject: [PATCH 29/55] Un-mixup the mixins. This properly separates the forge and fabric mixins in the merged -mod jar. By some miracle Forge was 'working' with the Fabric mixins, but this is probably safer overall. --- worldedit-fabric/src/main/resources/fabric.mod.json | 2 +- .../{worldedit.mixins.json => worldedit-fabric.mixins.json} | 0 .../{worldedit.mixins.json => worldedit-forge.mixins.json} | 2 +- worldedit-mod/build.gradle.kts | 2 +- 4 files changed, 3 insertions(+), 3 deletions(-) rename worldedit-fabric/src/main/resources/{worldedit.mixins.json => worldedit-fabric.mixins.json} (100%) rename worldedit-forge/src/main/resources/{worldedit.mixins.json => worldedit-forge.mixins.json} (85%) diff --git a/worldedit-fabric/src/main/resources/fabric.mod.json b/worldedit-fabric/src/main/resources/fabric.mod.json index d380affc9f..81174ad6b9 100644 --- a/worldedit-fabric/src/main/resources/fabric.mod.json +++ b/worldedit-fabric/src/main/resources/fabric.mod.json @@ -39,7 +39,7 @@ "fabric-permissions-api-v0": "*" }, "mixins": [ - "worldedit.mixins.json" + "worldedit-fabric.mixins.json" ], "accessWidener" : "worldedit.accesswidener" } diff --git a/worldedit-fabric/src/main/resources/worldedit.mixins.json b/worldedit-fabric/src/main/resources/worldedit-fabric.mixins.json similarity index 100% rename from worldedit-fabric/src/main/resources/worldedit.mixins.json rename to worldedit-fabric/src/main/resources/worldedit-fabric.mixins.json diff --git a/worldedit-forge/src/main/resources/worldedit.mixins.json b/worldedit-forge/src/main/resources/worldedit-forge.mixins.json similarity index 85% rename from worldedit-forge/src/main/resources/worldedit.mixins.json rename to worldedit-forge/src/main/resources/worldedit-forge.mixins.json index e16bdc7d55..df82b79cab 100644 --- a/worldedit-forge/src/main/resources/worldedit.mixins.json +++ b/worldedit-forge/src/main/resources/worldedit-forge.mixins.json @@ -1,7 +1,7 @@ { "required": true, "package": "com.sk89q.worldedit.forge.mixin", - "compatibilityLevel": "JAVA_17", + "compatibilityLevel": "JAVA_8", "mixins": [ "MixinLevelChunkSetBlockHook" ], diff --git a/worldedit-mod/build.gradle.kts b/worldedit-mod/build.gradle.kts index 66fa8cd67b..76fdd8dbdf 100644 --- a/worldedit-mod/build.gradle.kts +++ b/worldedit-mod/build.gradle.kts @@ -15,7 +15,7 @@ tasks.register("jar") { from(zipTree({remapFabric.get().archiveFile})) from(zipTree({project(":worldedit-forge").tasks.getByName("shadowJar").outputs.files.singleFile})) - duplicatesStrategy = DuplicatesStrategy.EXCLUDE + duplicatesStrategy = DuplicatesStrategy.WARN archiveClassifier.set("dist") } From dd696172725276a969d985f5207235cf8ec9b89b Mon Sep 17 00:00:00 2001 From: Madeline Miller Date: Thu, 17 Mar 2022 16:14:34 +1000 Subject: [PATCH 30/55] Make some improvements to the Forge side - still not fixed --- worldedit-forge/build.gradle.kts | 9 ++++++--- worldedit-mod/build.gradle.kts | 2 +- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/worldedit-forge/build.gradle.kts b/worldedit-forge/build.gradle.kts index f2d3abfcfa..8934081146 100644 --- a/worldedit-forge/build.gradle.kts +++ b/worldedit-forge/build.gradle.kts @@ -57,8 +57,8 @@ configure { } configure { - add(sourceSets["main"], "worldedit.mixins.refmap.json") - config("worldedit.mixins.json") + add(sourceSets["main"], "worldedit-forge.mixins.refmap.json") + config("worldedit-forge.mixins.json") } configure { @@ -167,5 +167,8 @@ tasks.named("shadowJar") { afterEvaluate { val reobf = extensions.getByName>("reobf") - reobf.create("shadowJar") + reobf.create("shadowJar") { + dependsOn(tasks["createMcpToSrg"]) + mappings.set(tasks["createMcpToSrg"].outputs.files.singleFile) + } } diff --git a/worldedit-mod/build.gradle.kts b/worldedit-mod/build.gradle.kts index 76fdd8dbdf..66fa8cd67b 100644 --- a/worldedit-mod/build.gradle.kts +++ b/worldedit-mod/build.gradle.kts @@ -15,7 +15,7 @@ tasks.register("jar") { from(zipTree({remapFabric.get().archiveFile})) from(zipTree({project(":worldedit-forge").tasks.getByName("shadowJar").outputs.files.singleFile})) - duplicatesStrategy = DuplicatesStrategy.WARN + duplicatesStrategy = DuplicatesStrategy.EXCLUDE archiveClassifier.set("dist") } From b4b018d6d5afedfc26641ff0512c66ae6790a334 Mon Sep 17 00:00:00 2001 From: Octavia Togami Date: Wed, 16 Mar 2022 23:29:10 -0700 Subject: [PATCH 31/55] Remove afterEvaluate to restore refmap MixinGradle uses an afterEvaluate block to determine JAR registrations. This runs before our reobf registration does, and I honestly don't recall why this was in afterEvaluate and it doesn't appear to break anything so I'm calling it good. --- worldedit-forge/build.gradle.kts | 9 ++------- 1 file changed, 2 insertions(+), 7 deletions(-) diff --git a/worldedit-forge/build.gradle.kts b/worldedit-forge/build.gradle.kts index 8934081146..1109aa3a10 100644 --- a/worldedit-forge/build.gradle.kts +++ b/worldedit-forge/build.gradle.kts @@ -165,10 +165,5 @@ tasks.named("shadowJar") { } } -afterEvaluate { - val reobf = extensions.getByName>("reobf") - reobf.create("shadowJar") { - dependsOn(tasks["createMcpToSrg"]) - mappings.set(tasks["createMcpToSrg"].outputs.files.singleFile) - } -} +val reobf = extensions.getByName>("reobf") +reobf.create("shadowJar") From ccf9397cfd1f16f40e8bbe41137380c59310ab38 Mon Sep 17 00:00:00 2001 From: Madeline Miller Date: Thu, 17 Mar 2022 16:42:26 +1000 Subject: [PATCH 32/55] Now works in dev --- worldedit-forge/src/main/resources/worldedit-forge.mixins.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/worldedit-forge/src/main/resources/worldedit-forge.mixins.json b/worldedit-forge/src/main/resources/worldedit-forge.mixins.json index df82b79cab..e16bdc7d55 100644 --- a/worldedit-forge/src/main/resources/worldedit-forge.mixins.json +++ b/worldedit-forge/src/main/resources/worldedit-forge.mixins.json @@ -1,7 +1,7 @@ { "required": true, "package": "com.sk89q.worldedit.forge.mixin", - "compatibilityLevel": "JAVA_8", + "compatibilityLevel": "JAVA_17", "mixins": [ "MixinLevelChunkSetBlockHook" ], From 5e49f69f76f5379518aa10c78596084cddb218b4 Mon Sep 17 00:00:00 2001 From: Madeline Miller Date: Thu, 17 Mar 2022 16:58:31 +1000 Subject: [PATCH 33/55] Forge requires explicitly defining the refmap in the mixing config --- worldedit-forge/src/main/resources/worldedit-forge.mixins.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/worldedit-forge/src/main/resources/worldedit-forge.mixins.json b/worldedit-forge/src/main/resources/worldedit-forge.mixins.json index e16bdc7d55..930b41b6db 100644 --- a/worldedit-forge/src/main/resources/worldedit-forge.mixins.json +++ b/worldedit-forge/src/main/resources/worldedit-forge.mixins.json @@ -9,5 +9,6 @@ ], "injectors": { "defaultRequire": 1 - } + }, + "refmap": "worldedit-forge.mixins.refmap.json" } From b8d42ac5897b49d258dca29fc5b8d03b721f36fe Mon Sep 17 00:00:00 2001 From: wizjany Date: Thu, 17 Mar 2022 13:18:46 -0400 Subject: [PATCH 34/55] Defeat the duplication dilemma. --- worldedit-mod/build.gradle.kts | 24 ++++++++++++++++++++++-- 1 file changed, 22 insertions(+), 2 deletions(-) diff --git a/worldedit-mod/build.gradle.kts b/worldedit-mod/build.gradle.kts index 66fa8cd67b..ebed03bf56 100644 --- a/worldedit-mod/build.gradle.kts +++ b/worldedit-mod/build.gradle.kts @@ -13,9 +13,29 @@ tasks.register("jar") { project(":worldedit-forge").tasks.named("reobfShadowJar") ) from(zipTree({remapFabric.get().archiveFile})) - from(zipTree({project(":worldedit-forge").tasks.getByName("shadowJar").outputs.files.singleFile})) + from(zipTree({project(":worldedit-forge").tasks.getByName("shadowJar").outputs.files.singleFile})) { + // Duplicated first-party files + exclude("META-INF/services/org.enginehub.piston.CommandManagerService") + exclude("lang/") + // No-brainer library excludes + exclude("com/sk89q/jchronic/") + exclude("com/sk89q/jnbt/") + exclude("com/sk89q/minecraft/") + exclude("com/sk89q/util/") + exclude("com/thoughtworks/") + exclude("net/royawesome/") + exclude("org/enginehub/piston/") + // Exclude worldedit-core + exclude { + val pathString = it.relativePath.pathString + pathString.startsWith("com/sk89q/worldedit/") && !pathString.startsWith("com/sk89q/worldedit/forge/") + } + // Questionable excludes. So far the two files from each jar are the same. + exclude("defaults/worldedit.properties") + exclude("pack.mcmeta") + } - duplicatesStrategy = DuplicatesStrategy.EXCLUDE + duplicatesStrategy = DuplicatesStrategy.FAIL archiveClassifier.set("dist") } From e715ccc3b451180351184804c4b17d1759219aed Mon Sep 17 00:00:00 2001 From: wizjany Date: Fri, 18 Mar 2022 00:33:35 -0400 Subject: [PATCH 35/55] Fix passenger entity saving and loading (#2058) * Fix incorrect saving and subsequent loading of passenger entities in vehicles. Originally from https://github.com/EngineHub/WorldEdit/issues/1763#issuecomment-1062429891. Co-authored-by: wizjany * Port to Fabric/Forge. Rewrite in Sponge to use EntityArchetype. Sponge is untested because WE doesn't properly build/run on it right now apparently? * NBT Constants. Co-authored-by: Red_Epicness --- .../impl/v1_17_R1_2/PaperweightAdapter.java | 50 ++++++++++++++----- .../impl/v1_18_R2/PaperweightAdapter.java | 50 ++++++++++++++----- .../impl/v1_18_R1/PaperweightAdapter.java | 50 ++++++++++++++----- .../sk89q/worldedit/entity/BaseEntity.java | 2 +- .../sk89q/worldedit/fabric/FabricEntity.java | 11 ++-- .../sk89q/worldedit/fabric/FabricWorld.java | 50 +++++++++++++------ .../sk89q/worldedit/forge/ForgeEntity.java | 18 +++---- .../com/sk89q/worldedit/forge/ForgeWorld.java | 48 ++++++++++++------ worldedit-sponge/build.gradle.kts | 4 +- .../sk89q/worldedit/sponge/SpongeEntity.java | 20 ++++---- .../sk89q/worldedit/sponge/SpongeWorld.java | 42 +++++++--------- 11 files changed, 226 insertions(+), 119 deletions(-) diff --git a/worldedit-bukkit/adapters/adapter-1.17.1/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/v1_17_R1_2/PaperweightAdapter.java b/worldedit-bukkit/adapters/adapter-1.17.1/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/v1_17_R1_2/PaperweightAdapter.java index 567ae0a141..550f888b9d 100644 --- a/worldedit-bukkit/adapters/adapter-1.17.1/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/v1_17_R1_2/PaperweightAdapter.java +++ b/worldedit-bukkit/adapters/adapter-1.17.1/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/v1_17_R1_2/PaperweightAdapter.java @@ -421,6 +421,11 @@ public BaseEntity getEntity(org.bukkit.entity.Entity entity) { CraftEntity craftEntity = ((CraftEntity) entity); Entity mcEntity = craftEntity.getHandle(); + // Do not allow creating of passenger entity snapshots, passengers are included in the vehicle entity + if (mcEntity.isPassenger()) { + return null; + } + String id = getEntityId(mcEntity); net.minecraft.nbt.CompoundTag tag = new net.minecraft.nbt.CompoundTag(); @@ -437,27 +442,48 @@ public org.bukkit.entity.Entity createEntity(Location location, BaseEntity state CraftWorld craftWorld = ((CraftWorld) location.getWorld()); ServerLevel worldServer = craftWorld.getHandle(); - Entity createdEntity = createEntityFromId(state.getType().getId(), craftWorld.getHandle()); + String entityId = state.getType().getId(); - if (createdEntity != null) { - CompoundTag nativeTag = state.getNbtData(); - if (nativeTag != null) { - net.minecraft.nbt.CompoundTag tag = (net.minecraft.nbt.CompoundTag) fromNative(nativeTag); - for (String name : Constants.NO_COPY_ENTITY_NBT_FIELDS) { - tag.remove(name); - } - readTagIntoEntity(tag, createdEntity); - } + CompoundTag nativeTag = state.getNbtData(); + net.minecraft.nbt.CompoundTag tag; + if (nativeTag != null) { + tag = (net.minecraft.nbt.CompoundTag) fromNative(nativeTag); + removeUnwantedEntityTagsRecursively(tag); + } else { + tag = new net.minecraft.nbt.CompoundTag(); + } + + tag.putString("id", entityId); - createdEntity.absMoveTo(location.getX(), location.getY(), location.getZ(), location.getYaw(), location.getPitch()); + Entity createdEntity = EntityType.loadEntityRecursive(tag, craftWorld.getHandle(), (loadedEntity) -> { + loadedEntity.absMoveTo(location.getX(), location.getY(), location.getZ(), location.getYaw(), location.getPitch()); + return loadedEntity; + }); - worldServer.addEntity(createdEntity, SpawnReason.CUSTOM); + if (createdEntity != null) { + worldServer.addAllEntities(createdEntity, SpawnReason.CUSTOM); return createdEntity.getBukkitEntity(); } else { return null; } } + // This removes all unwanted tags from the main entity and all its passengers + private void removeUnwantedEntityTagsRecursively(net.minecraft.nbt.CompoundTag tag) { + for (String name : Constants.NO_COPY_ENTITY_NBT_FIELDS) { + tag.remove(name); + } + + // Adapted from net.minecraft.world.entity.EntityType#loadEntityRecursive + if (tag.contains("Passengers", NBTConstants.TYPE_LIST)) { + net.minecraft.nbt.ListTag nbttaglist = tag.getList("Passengers", NBTConstants.TYPE_COMPOUND); + + for (int i = 0; i < nbttaglist.size(); ++i) { + removeUnwantedEntityTagsRecursively(nbttaglist.getCompound(i)); + } + } + } + @Override public Component getRichBlockName(BlockType blockType) { return TranslatableComponent.of(getBlockFromType(blockType).getDescriptionId()); diff --git a/worldedit-bukkit/adapters/adapter-1.18.2/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/v1_18_R2/PaperweightAdapter.java b/worldedit-bukkit/adapters/adapter-1.18.2/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/v1_18_R2/PaperweightAdapter.java index 967c7f756d..6342201b0c 100644 --- a/worldedit-bukkit/adapters/adapter-1.18.2/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/v1_18_R2/PaperweightAdapter.java +++ b/worldedit-bukkit/adapters/adapter-1.18.2/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/v1_18_R2/PaperweightAdapter.java @@ -412,6 +412,11 @@ public BaseEntity getEntity(org.bukkit.entity.Entity entity) { CraftEntity craftEntity = ((CraftEntity) entity); Entity mcEntity = craftEntity.getHandle(); + // Do not allow creating of passenger entity snapshots, passengers are included in the vehicle entity + if (mcEntity.isPassenger()) { + return null; + } + String id = getEntityId(mcEntity); net.minecraft.nbt.CompoundTag tag = new net.minecraft.nbt.CompoundTag(); @@ -428,27 +433,48 @@ public org.bukkit.entity.Entity createEntity(Location location, BaseEntity state CraftWorld craftWorld = ((CraftWorld) location.getWorld()); ServerLevel worldServer = craftWorld.getHandle(); - Entity createdEntity = createEntityFromId(state.getType().getId(), craftWorld.getHandle()); + String entityId = state.getType().getId(); - if (createdEntity != null) { - CompoundTag nativeTag = state.getNbtData(); - if (nativeTag != null) { - net.minecraft.nbt.CompoundTag tag = (net.minecraft.nbt.CompoundTag) fromNative(nativeTag); - for (String name : Constants.NO_COPY_ENTITY_NBT_FIELDS) { - tag.remove(name); - } - readTagIntoEntity(tag, createdEntity); - } + CompoundTag nativeTag = state.getNbtData(); + net.minecraft.nbt.CompoundTag tag; + if (nativeTag != null) { + tag = (net.minecraft.nbt.CompoundTag) fromNative(nativeTag); + removeUnwantedEntityTagsRecursively(tag); + } else { + tag = new net.minecraft.nbt.CompoundTag(); + } + + tag.putString("id", entityId); - createdEntity.absMoveTo(location.getX(), location.getY(), location.getZ(), location.getYaw(), location.getPitch()); + Entity createdEntity = EntityType.loadEntityRecursive(tag, craftWorld.getHandle(), (loadedEntity) -> { + loadedEntity.absMoveTo(location.getX(), location.getY(), location.getZ(), location.getYaw(), location.getPitch()); + return loadedEntity; + }); - worldServer.addFreshEntity(createdEntity, SpawnReason.CUSTOM); + if (createdEntity != null) { + worldServer.addFreshEntityWithPassengers(createdEntity, SpawnReason.CUSTOM); return createdEntity.getBukkitEntity(); } else { return null; } } + // This removes all unwanted tags from the main entity and all its passengers + private void removeUnwantedEntityTagsRecursively(net.minecraft.nbt.CompoundTag tag) { + for (String name : Constants.NO_COPY_ENTITY_NBT_FIELDS) { + tag.remove(name); + } + + // Adapted from net.minecraft.world.entity.EntityType#loadEntityRecursive + if (tag.contains("Passengers", NBTConstants.TYPE_LIST)) { + net.minecraft.nbt.ListTag nbttaglist = tag.getList("Passengers", NBTConstants.TYPE_COMPOUND); + + for (int i = 0; i < nbttaglist.size(); ++i) { + removeUnwantedEntityTagsRecursively(nbttaglist.getCompound(i)); + } + } + } + @Override public Component getRichBlockName(BlockType blockType) { return TranslatableComponent.of(getBlockFromType(blockType).getDescriptionId()); diff --git a/worldedit-bukkit/adapters/adapter-1.18/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/v1_18_R1/PaperweightAdapter.java b/worldedit-bukkit/adapters/adapter-1.18/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/v1_18_R1/PaperweightAdapter.java index 0b9cc00ee3..8beb5d207f 100644 --- a/worldedit-bukkit/adapters/adapter-1.18/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/v1_18_R1/PaperweightAdapter.java +++ b/worldedit-bukkit/adapters/adapter-1.18/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/v1_18_R1/PaperweightAdapter.java @@ -412,6 +412,11 @@ public BaseEntity getEntity(org.bukkit.entity.Entity entity) { CraftEntity craftEntity = ((CraftEntity) entity); Entity mcEntity = craftEntity.getHandle(); + // Do not allow creating of passenger entity snapshots, passengers are included in the vehicle entity + if (mcEntity.isPassenger()) { + return null; + } + String id = getEntityId(mcEntity); net.minecraft.nbt.CompoundTag tag = new net.minecraft.nbt.CompoundTag(); @@ -428,27 +433,48 @@ public org.bukkit.entity.Entity createEntity(Location location, BaseEntity state CraftWorld craftWorld = ((CraftWorld) location.getWorld()); ServerLevel worldServer = craftWorld.getHandle(); - Entity createdEntity = createEntityFromId(state.getType().getId(), craftWorld.getHandle()); + String entityId = state.getType().getId(); - if (createdEntity != null) { - CompoundTag nativeTag = state.getNbtData(); - if (nativeTag != null) { - net.minecraft.nbt.CompoundTag tag = (net.minecraft.nbt.CompoundTag) fromNative(nativeTag); - for (String name : Constants.NO_COPY_ENTITY_NBT_FIELDS) { - tag.remove(name); - } - readTagIntoEntity(tag, createdEntity); - } + CompoundTag nativeTag = state.getNbtData(); + net.minecraft.nbt.CompoundTag tag; + if (nativeTag != null) { + tag = (net.minecraft.nbt.CompoundTag) fromNative(nativeTag); + removeUnwantedEntityTagsRecursively(tag); + } else { + tag = new net.minecraft.nbt.CompoundTag(); + } + + tag.putString("id", entityId); - createdEntity.absMoveTo(location.getX(), location.getY(), location.getZ(), location.getYaw(), location.getPitch()); + Entity createdEntity = EntityType.loadEntityRecursive(tag, craftWorld.getHandle(), (loadedEntity) -> { + loadedEntity.absMoveTo(location.getX(), location.getY(), location.getZ(), location.getYaw(), location.getPitch()); + return loadedEntity; + }); - worldServer.addFreshEntity(createdEntity, SpawnReason.CUSTOM); + if (createdEntity != null) { + worldServer.addFreshEntityWithPassengers(createdEntity, SpawnReason.CUSTOM); return createdEntity.getBukkitEntity(); } else { return null; } } + // This removes all unwanted tags from the main entity and all its passengers + private void removeUnwantedEntityTagsRecursively(net.minecraft.nbt.CompoundTag tag) { + for (String name : Constants.NO_COPY_ENTITY_NBT_FIELDS) { + tag.remove(name); + } + + // Adapted from net.minecraft.world.entity.EntityType#loadEntityRecursive + if (tag.contains("Passengers", NBTConstants.TYPE_LIST)) { + net.minecraft.nbt.ListTag nbttaglist = tag.getList("Passengers", NBTConstants.TYPE_COMPOUND); + + for (int i = 0; i < nbttaglist.size(); ++i) { + removeUnwantedEntityTagsRecursively(nbttaglist.getCompound(i)); + } + } + } + @Override public Component getRichBlockName(BlockType blockType) { return TranslatableComponent.of(getBlockFromType(blockType).getDescriptionId()); diff --git a/worldedit-core/src/main/java/com/sk89q/worldedit/entity/BaseEntity.java b/worldedit-core/src/main/java/com/sk89q/worldedit/entity/BaseEntity.java index 393023df81..410569b717 100644 --- a/worldedit-core/src/main/java/com/sk89q/worldedit/entity/BaseEntity.java +++ b/worldedit-core/src/main/java/com/sk89q/worldedit/entity/BaseEntity.java @@ -78,7 +78,7 @@ public BaseEntity(BaseEntity other) { @Override public boolean hasNbtData() { - return true; + return nbtData != null; } @Nullable diff --git a/worldedit-fabric/src/main/java/com/sk89q/worldedit/fabric/FabricEntity.java b/worldedit-fabric/src/main/java/com/sk89q/worldedit/fabric/FabricEntity.java index 4e915f9c9e..826de6a29a 100644 --- a/worldedit-fabric/src/main/java/com/sk89q/worldedit/fabric/FabricEntity.java +++ b/worldedit-fabric/src/main/java/com/sk89q/worldedit/fabric/FabricEntity.java @@ -49,14 +49,13 @@ class FabricEntity implements Entity { @Override public BaseEntity getState() { net.minecraft.world.entity.Entity entity = entityRef.get(); - if (entity != null) { - ResourceLocation id = Registry.ENTITY_TYPE.getKey(entity.getType()); - CompoundTag tag = new CompoundTag(); - entity.saveWithoutId(tag); - return new BaseEntity(EntityTypes.get(id.toString()), NBTConverter.fromNative(tag)); - } else { + if (entity == null || entity.isPassenger()) { return null; } + ResourceLocation id = Registry.ENTITY_TYPE.getKey(entity.getType()); + CompoundTag tag = new CompoundTag(); + entity.saveWithoutId(tag); + return new BaseEntity(EntityTypes.get(id.toString()), NBTConverter.fromNative(tag)); } @Override diff --git a/worldedit-fabric/src/main/java/com/sk89q/worldedit/fabric/FabricWorld.java b/worldedit-fabric/src/main/java/com/sk89q/worldedit/fabric/FabricWorld.java index 440adc1fb8..5e9ce89e2f 100644 --- a/worldedit-fabric/src/main/java/com/sk89q/worldedit/fabric/FabricWorld.java +++ b/worldedit-fabric/src/main/java/com/sk89q/worldedit/fabric/FabricWorld.java @@ -27,6 +27,7 @@ import com.google.common.collect.Streams; import com.google.common.util.concurrent.Futures; import com.sk89q.jnbt.CompoundTag; +import com.sk89q.jnbt.NBTConstants; import com.sk89q.worldedit.EditSession; import com.sk89q.worldedit.WorldEditException; import com.sk89q.worldedit.blocks.BaseItem; @@ -629,28 +630,45 @@ public List getEntities() { @Nullable @Override public Entity createEntity(Location location, BaseEntity entity) { - Level world = getWorld(); - final Optional> entityType = EntityType.byString(entity.getType().getId()); + ServerLevel world = (ServerLevel) getWorld(); + String entityId = entity.getType().getId(); + final Optional> entityType = EntityType.byString(entityId); if (entityType.isEmpty()) { return null; } - net.minecraft.world.entity.Entity createdEntity = entityType.get().create(world); + CompoundTag nativeTag = entity.getNbtData(); + net.minecraft.nbt.CompoundTag tag; + if (nativeTag != null) { + tag = NBTConverter.toNative(entity.getNbtData()); + removeUnwantedEntityTagsRecursively(tag); + } else { + tag = new net.minecraft.nbt.CompoundTag(); + } + tag.putString("id", entityId); + + net.minecraft.world.entity.Entity createdEntity = EntityType.loadEntityRecursive(tag, world, (loadedEntity) -> { + loadedEntity.absMoveTo(location.getX(), location.getY(), location.getZ(), location.getYaw(), location.getPitch()); + return loadedEntity; + }); if (createdEntity != null) { - CompoundTag nativeTag = entity.getNbtData(); - if (nativeTag != null) { - net.minecraft.nbt.CompoundTag tag = NBTConverter.toNative(entity.getNbtData()); - for (String name : Constants.NO_COPY_ENTITY_NBT_FIELDS) { - tag.remove(name); - } - createdEntity.load(tag); - } + world.addFreshEntityWithPassengers(createdEntity); + return new FabricEntity(createdEntity); + } + return null; + } - createdEntity.absMoveTo(location.getX(), location.getY(), location.getZ(), location.getYaw(), location.getPitch()); + private void removeUnwantedEntityTagsRecursively(net.minecraft.nbt.CompoundTag tag) { + for (String name : Constants.NO_COPY_ENTITY_NBT_FIELDS) { + tag.remove(name); + } - world.addFreshEntity(createdEntity); - return new FabricEntity(createdEntity); - } else { - return null; + // Adapted from net.minecraft.world.entity.EntityType#loadEntityRecursive + if (tag.contains("Passengers", NBTConstants.TYPE_LIST)) { + net.minecraft.nbt.ListTag nbttaglist = tag.getList("Passengers", NBTConstants.TYPE_COMPOUND); + + for (int i = 0; i < nbttaglist.size(); ++i) { + removeUnwantedEntityTagsRecursively(nbttaglist.getCompound(i)); + } } } diff --git a/worldedit-forge/src/main/java/com/sk89q/worldedit/forge/ForgeEntity.java b/worldedit-forge/src/main/java/com/sk89q/worldedit/forge/ForgeEntity.java index cdc094f885..5106512a16 100644 --- a/worldedit-forge/src/main/java/com/sk89q/worldedit/forge/ForgeEntity.java +++ b/worldedit-forge/src/main/java/com/sk89q/worldedit/forge/ForgeEntity.java @@ -49,18 +49,16 @@ class ForgeEntity implements Entity { @Override public BaseEntity getState() { net.minecraft.world.entity.Entity entity = entityRef.get(); - if (entity != null) { - ResourceLocation id = entity.getType().getRegistryName(); - if (id != null) { - CompoundTag tag = new CompoundTag(); - entity.saveWithoutId(tag); - return new BaseEntity(EntityTypes.get(id.toString()), NBTConverter.fromNative(tag)); - } else { - return null; - } - } else { + if (entity == null || entity.isPassenger()) { + return null; + } + ResourceLocation id = entity.getType().getRegistryName(); + if (id == null) { return null; } + CompoundTag tag = new CompoundTag(); + entity.saveWithoutId(tag); + return new BaseEntity(EntityTypes.get(id.toString()), NBTConverter.fromNative(tag)); } @Override diff --git a/worldedit-forge/src/main/java/com/sk89q/worldedit/forge/ForgeWorld.java b/worldedit-forge/src/main/java/com/sk89q/worldedit/forge/ForgeWorld.java index d69f1506fa..6eaaefbc01 100644 --- a/worldedit-forge/src/main/java/com/sk89q/worldedit/forge/ForgeWorld.java +++ b/worldedit-forge/src/main/java/com/sk89q/worldedit/forge/ForgeWorld.java @@ -27,6 +27,7 @@ import com.google.common.collect.Streams; import com.google.common.util.concurrent.Futures; import com.sk89q.jnbt.CompoundTag; +import com.sk89q.jnbt.NBTConstants; import com.sk89q.worldedit.EditSession; import com.sk89q.worldedit.WorldEditException; import com.sk89q.worldedit.blocks.BaseItem; @@ -611,27 +612,44 @@ public List getEntities() { @Override public Entity createEntity(Location location, BaseEntity entity) { ServerLevel world = getWorld(); - final Optional> entityType = EntityType.byString(entity.getType().getId()); + String entityId = entity.getType().getId(); + final Optional> entityType = EntityType.byString(entityId); if (entityType.isEmpty()) { return null; } - net.minecraft.world.entity.Entity createdEntity = entityType.get().create(world); + CompoundTag nativeTag = entity.getNbtData(); + net.minecraft.nbt.CompoundTag tag; + if (nativeTag != null) { + tag = NBTConverter.toNative(entity.getNbtData()); + removeUnwantedEntityTagsRecursively(tag); + } else { + tag = new net.minecraft.nbt.CompoundTag(); + } + tag.putString("id", entityId); + + net.minecraft.world.entity.Entity createdEntity = EntityType.loadEntityRecursive(tag, world, (loadedEntity) -> { + loadedEntity.absMoveTo(location.getX(), location.getY(), location.getZ(), location.getYaw(), location.getPitch()); + return loadedEntity; + }); if (createdEntity != null) { - CompoundTag nativeTag = entity.getNbtData(); - if (nativeTag != null) { - net.minecraft.nbt.CompoundTag tag = NBTConverter.toNative(entity.getNbtData()); - for (String name : Constants.NO_COPY_ENTITY_NBT_FIELDS) { - tag.remove(name); - } - createdEntity.load(tag); - } + world.addFreshEntityWithPassengers(createdEntity); + return new ForgeEntity(createdEntity); + } + return null; + } - createdEntity.absMoveTo(location.getX(), location.getY(), location.getZ(), location.getYaw(), location.getPitch()); + private void removeUnwantedEntityTagsRecursively(net.minecraft.nbt.CompoundTag tag) { + for (String name : Constants.NO_COPY_ENTITY_NBT_FIELDS) { + tag.remove(name); + } - world.addFreshEntity(createdEntity); - return new ForgeEntity(createdEntity); - } else { - return null; + // Adapted from net.minecraft.world.entity.EntityType#loadEntityRecursive + if (tag.contains("Passengers", NBTConstants.TYPE_LIST)) { + net.minecraft.nbt.ListTag nbttaglist = tag.getList("Passengers", NBTConstants.TYPE_COMPOUND); + + for (int i = 0; i < nbttaglist.size(); ++i) { + removeUnwantedEntityTagsRecursively(nbttaglist.getCompound(i)); + } } } diff --git a/worldedit-sponge/build.gradle.kts b/worldedit-sponge/build.gradle.kts index f2f0c90181..01abcca434 100644 --- a/worldedit-sponge/build.gradle.kts +++ b/worldedit-sponge/build.gradle.kts @@ -54,7 +54,7 @@ dependencies { because("Sponge 8 (will?) provides Log4J") }) api("org.apache.logging.log4j:log4j-api") - api("org.bstats:bstats-sponge:3.0.0") + implementation("org.bstats:bstats-sponge:3.0.0") testImplementation("org.mockito:mockito-core:${Versions.MOCKITO}") } @@ -71,7 +71,7 @@ tasks.named("shadowJar") { } include(dependency(":worldedit-core")) - relocate("org.antlr.v4", "com.sk89q.worldedit.sponge.antlr4") + relocate("org.antlr.v4", "com.sk89q.worldedit.antlr4") include(dependency("org.antlr:antlr4-runtime")) relocate("it.unimi.dsi.fastutil", "com.sk89q.worldedit.sponge.fastutil") { include(dependency("it.unimi.dsi:fastutil")) diff --git a/worldedit-sponge/src/main/java/com/sk89q/worldedit/sponge/SpongeEntity.java b/worldedit-sponge/src/main/java/com/sk89q/worldedit/sponge/SpongeEntity.java index 9902ebbfcc..48ecd794fb 100644 --- a/worldedit-sponge/src/main/java/com/sk89q/worldedit/sponge/SpongeEntity.java +++ b/worldedit-sponge/src/main/java/com/sk89q/worldedit/sponge/SpongeEntity.java @@ -48,18 +48,18 @@ class SpongeEntity implements Entity { @Override public BaseEntity getState() { org.spongepowered.api.entity.Entity entity = entityRef.get(); - if (entity != null) { - return new BaseEntity( - EntityType.REGISTRY.get( - entity.type().key(RegistryTypes.ENTITY_TYPE).asString() - ), - entity.toContainer().getView(Constants.Sponge.UNSAFE_NBT) - .map(NbtAdapter::adaptToWorldEdit) - .orElse(null) - ); - } else { + if (entity == null || entity.vehicle().isPresent()) { + return null; + } + EntityType entityType = EntityType.REGISTRY.get(entity.type().key(RegistryTypes.ENTITY_TYPE).asString()); + if (entityType == null) { return null; } + return new BaseEntity(entityType, + entity.toContainer().getView(Constants.Sponge.UNSAFE_NBT) + .map(NbtAdapter::adaptToWorldEdit) + .orElse(null) + ); } @Override diff --git a/worldedit-sponge/src/main/java/com/sk89q/worldedit/sponge/SpongeWorld.java b/worldedit-sponge/src/main/java/com/sk89q/worldedit/sponge/SpongeWorld.java index 9b24f2338f..d0d523814f 100644 --- a/worldedit-sponge/src/main/java/com/sk89q/worldedit/sponge/SpongeWorld.java +++ b/worldedit-sponge/src/main/java/com/sk89q/worldedit/sponge/SpongeWorld.java @@ -19,14 +19,19 @@ package com.sk89q.worldedit.sponge; +import com.google.common.collect.ImmutableMap; import com.google.common.collect.Sets; import com.sk89q.jnbt.CompoundTag; +import com.sk89q.jnbt.ListTag; +import com.sk89q.jnbt.StringTag; +import com.sk89q.jnbt.Tag; import com.sk89q.worldedit.EditSession; import com.sk89q.worldedit.WorldEditException; import com.sk89q.worldedit.blocks.BaseItemStack; import com.sk89q.worldedit.entity.BaseEntity; import com.sk89q.worldedit.entity.Entity; import com.sk89q.worldedit.extent.Extent; +import com.sk89q.worldedit.internal.Constants; import com.sk89q.worldedit.internal.util.LogManagerCompat; import com.sk89q.worldedit.math.BlockVector3; import com.sk89q.worldedit.math.Vector3; @@ -61,6 +66,7 @@ import org.spongepowered.api.block.entity.BlockEntityType; import org.spongepowered.api.data.persistence.DataContainer; import org.spongepowered.api.data.persistence.DataView; +import org.spongepowered.api.entity.EntityArchetype; import org.spongepowered.api.entity.EntityType; import org.spongepowered.api.entity.EntityTypes; import org.spongepowered.api.entity.Item; @@ -79,7 +85,11 @@ import java.lang.ref.WeakReference; import java.nio.file.Path; +import java.util.ArrayList; +import java.util.HashMap; import java.util.List; +import java.util.Map; +import java.util.Optional; import java.util.Random; import java.util.Set; import java.util.concurrent.ExecutionException; @@ -458,31 +468,17 @@ public List getEntities() { @Nullable @Override public Entity createEntity(Location location, BaseEntity entity) { - ServerWorld world = getWorld(); - - EntityType entityType = Sponge.game().registry(RegistryTypes.ENTITY_TYPE) - .value(ResourceKey.resolve(entity.getType().getId())); - Vector3d pos = new Vector3d(location.getX(), location.getY(), location.getZ()); - - org.spongepowered.api.entity.Entity newEnt = world.createEntity(entityType, pos); - if (entity.hasNbtData()) { - newEnt.setRawData(DataContainer.createNew(DataView.SafetyMode.NO_DATA_CLONED) - .set(Constants.Sponge.UNSAFE_NBT, entity.getNbtData())); + Optional> entityType = Sponge.game().registry(RegistryTypes.ENTITY_TYPE) + .findValue(ResourceKey.resolve(entity.getType().getId())); + if (!entityType.isPresent()) { + return null; } - - // Overwrite any data set by the NBT application - Vector3 dir = location.getDirection(); - - newEnt.setLocationAndRotation( - ServerLocation.of(getWorld(), pos), - new Vector3d(dir.getX(), dir.getY(), dir.getZ()) - ); - - if (world.spawnEntity(newEnt)) { - return new SpongeEntity(newEnt); + EntityArchetype.Builder builder = EntityArchetype.builder().type(entityType.get()); + CompoundTag nativeTag = entity.getNbtData(); + if (nativeTag != null) { + builder.entityData(NbtAdapter.adaptFromWorldEdit(nativeTag)); } - - return null; + return builder.build().apply(SpongeAdapter.adapt(location)).map(SpongeEntity::new).orElse(null); } @Override From 1742f984260def92bfa75fef50fe91127497d7fe Mon Sep 17 00:00:00 2001 From: Madeline Miller Date: Fri, 18 Mar 2022 16:09:43 +1000 Subject: [PATCH 36/55] Release 7.2.10 --- CHANGELOG.txt | 29 ++++++++++++++++++++--------- gradle.properties | 2 +- 2 files changed, 21 insertions(+), 10 deletions(-) diff --git a/CHANGELOG.txt b/CHANGELOG.txt index 5333624394..02328b4bc6 100644 --- a/CHANGELOG.txt +++ b/CHANGELOG.txt @@ -1,13 +1,24 @@ +7.2.10 +- [Forge] Fixed a bug where the max world height would not always be read correctly +- [Bukkit] Fixed detection of other plugins bundling WorldEdit for newer Spigot versions +- [Forge] [Fabric] Improve fluid masks to properly detect mod fluids +- [Forge] Fixed the UPDATE side effect +- Update to 1.18.2 +- Moved external links away from tinyurl to EngineHub URL shortener +- Allowed biome commands to be used by non-player actors (console, command block, etc) +- Fixed the UPDATE side effect not applying when called later on by API or FAST reorder mode +- Fixed entity passenger and riding status not being copied correctly + 7.2.9 -* [Forge] Add support for the UPDATE side effect -* [Forge] Fixed regen on recent Forge builds -* [Fabric] Fixed regen outside of Overworld -* [Sponge] Update to Sponge API8 (MC 1.16.5) -* [Bukkit] Fixed regen when biomes are used -* Fixed snapshots in 1.18 -* Fixed smooth functions below y=0 -* Tweak command usage label correctness for Bukkit API usage -* Fixed legacy error message output for plugins utilising our legacy APIs (Eg, WorldGuard and CraftBook) +- [Forge] Add support for the UPDATE side effect +- [Forge] Fixed regen on recent Forge builds +- [Fabric] Fixed regen outside of Overworld +- [Sponge] Update to Sponge API8 (MC 1.16.5) +- [Bukkit] Fixed regen when biomes are used +- Fixed snapshots in 1.18 +- Fixed smooth functions below y=0 +- Tweak command usage label correctness for Bukkit API usage +- Fixed legacy error message output for plugins utilising our legacy APIs (Eg, WorldGuard and CraftBook) 7.2.8 - Update to 1.18.1 diff --git a/gradle.properties b/gradle.properties index d97f40a787..452fa1e797 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,5 +1,5 @@ group=com.sk89q.worldedit -version=7.2.10-SNAPSHOT +version=7.2.10 org.gradle.jvmargs=-Xmx1512M org.gradle.parallel=true From 5b599298eb324b882bc80d401a37fb3c83845c64 Mon Sep 17 00:00:00 2001 From: Madeline Miller Date: Fri, 18 Mar 2022 16:23:11 +1000 Subject: [PATCH 37/55] Back to SNAPSHOT for continued development --- gradle.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle.properties b/gradle.properties index 452fa1e797..b0ac31094b 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,5 +1,5 @@ group=com.sk89q.worldedit -version=7.2.10 +version=7.2.11-SNAPSHOT org.gradle.jvmargs=-Xmx1512M org.gradle.parallel=true From 677ce55a92b7bd629d86bd161d6f35836a4e57d0 Mon Sep 17 00:00:00 2001 From: wizjany Date: Fri, 18 Mar 2022 08:33:48 -0400 Subject: [PATCH 38/55] Fix sponge. --- worldedit-sponge/build.gradle.kts | 3 --- 1 file changed, 3 deletions(-) diff --git a/worldedit-sponge/build.gradle.kts b/worldedit-sponge/build.gradle.kts index 01abcca434..281e25b42d 100644 --- a/worldedit-sponge/build.gradle.kts +++ b/worldedit-sponge/build.gradle.kts @@ -73,9 +73,6 @@ tasks.named("shadowJar") { relocate("org.antlr.v4", "com.sk89q.worldedit.antlr4") include(dependency("org.antlr:antlr4-runtime")) - relocate("it.unimi.dsi.fastutil", "com.sk89q.worldedit.sponge.fastutil") { - include(dependency("it.unimi.dsi:fastutil")) - } } } tasks.named("assemble").configure { From 027a6078f98d5693a12df399e5f4e6ed39b728a0 Mon Sep 17 00:00:00 2001 From: wizjany Date: Fri, 18 Mar 2022 09:00:57 -0400 Subject: [PATCH 39/55] Revert "Fix sponge." This reverts commit 677ce55a92b7bd629d86bd161d6f35836a4e57d0. --- worldedit-sponge/build.gradle.kts | 3 +++ 1 file changed, 3 insertions(+) diff --git a/worldedit-sponge/build.gradle.kts b/worldedit-sponge/build.gradle.kts index 281e25b42d..01abcca434 100644 --- a/worldedit-sponge/build.gradle.kts +++ b/worldedit-sponge/build.gradle.kts @@ -73,6 +73,9 @@ tasks.named("shadowJar") { relocate("org.antlr.v4", "com.sk89q.worldedit.antlr4") include(dependency("org.antlr:antlr4-runtime")) + relocate("it.unimi.dsi.fastutil", "com.sk89q.worldedit.sponge.fastutil") { + include(dependency("it.unimi.dsi:fastutil")) + } } } tasks.named("assemble").configure { From 27b2945362b70ecd430d5bc2811b28fd9e0f1109 Mon Sep 17 00:00:00 2001 From: wizjany Date: Sun, 20 Mar 2022 12:42:46 -0400 Subject: [PATCH 40/55] Bump adapter jar. https://github.com/EngineHub/worldedit-adapters/pull/31 --- .../src/main/resources/worldedit-adapters.jar | Bin 562844 -> 562839 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/worldedit-bukkit/adapters/adapter-legacy/src/main/resources/worldedit-adapters.jar b/worldedit-bukkit/adapters/adapter-legacy/src/main/resources/worldedit-adapters.jar index e84dc527fd0b1b01c1356ceb7735a8fe2c1cc472..b5a31a462caba82634936ad65f48893e87963562 100644 GIT binary patch delta 18469 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

mEl@(DA`7+gbQJ+}h3~|zr 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 DR2;?t delta 18306 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 Date: Thu, 21 Apr 2022 18:40:49 -0700 Subject: [PATCH 41/55] Bump paperweight + bundle to fix build --- buildSrc/build.gradle.kts | 2 +- worldedit-bukkit/adapters/adapter-1.17.1/build.gradle.kts | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/buildSrc/build.gradle.kts b/buildSrc/build.gradle.kts index 0a5f886b94..29d8be4d54 100644 --- a/buildSrc/build.gradle.kts +++ b/buildSrc/build.gradle.kts @@ -56,6 +56,6 @@ dependencies { implementation("net.fabricmc:fabric-loom:$loomVersion") implementation("net.fabricmc:sponge-mixin:$mixinVersion") implementation("org.enginehub.gradle:gradle-codecov-plugin:0.1.0") - implementation("io.papermc.paperweight.userdev:io.papermc.paperweight.userdev.gradle.plugin:1.3.4") + implementation("io.papermc.paperweight.userdev:io.papermc.paperweight.userdev.gradle.plugin:1.3.5") implementation("org.spongepowered:mixingradle:0.7.32") } diff --git a/worldedit-bukkit/adapters/adapter-1.17.1/build.gradle.kts b/worldedit-bukkit/adapters/adapter-1.17.1/build.gradle.kts index 1b4444d6e6..eca9fb93a4 100644 --- a/worldedit-bukkit/adapters/adapter-1.17.1/build.gradle.kts +++ b/worldedit-bukkit/adapters/adapter-1.17.1/build.gradle.kts @@ -1,5 +1,5 @@ applyPaperweightAdapterConfiguration() dependencies { - paperDevBundle("1.17.1-R0.1-20211219.175449-201") + paperDevBundle("1.17.1-R0.1-20220414.034903-210") } From 3eefaa29ddc1bcf9ff40a68bac80462e8b7560f3 Mon Sep 17 00:00:00 2001 From: Maddy Miller Date: Sun, 1 May 2022 12:00:28 +1000 Subject: [PATCH 42/55] Fix block state mask with string properties (#2091) --- .../sk89q/worldedit/function/mask/BlockStateMask.java | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/worldedit-core/src/main/java/com/sk89q/worldedit/function/mask/BlockStateMask.java b/worldedit-core/src/main/java/com/sk89q/worldedit/function/mask/BlockStateMask.java index 44a311ff3e..6e73026a5e 100644 --- a/worldedit-core/src/main/java/com/sk89q/worldedit/function/mask/BlockStateMask.java +++ b/worldedit-core/src/main/java/com/sk89q/worldedit/function/mask/BlockStateMask.java @@ -28,6 +28,7 @@ import com.sk89q.worldedit.world.block.BlockType; import java.util.Map; +import java.util.Objects; import javax.annotation.Nullable; public class BlockStateMask extends AbstractExtentMask { @@ -58,8 +59,12 @@ public boolean test(BlockVector3 vector) { if (strict && checkProps.isEmpty()) { return false; } - return checkProps.entrySet().stream() - .allMatch(entry -> block.getState(entry.getKey()) == entry.getValue()); + for (Map.Entry, Object> entry : checkProps.entrySet()) { + if (!Objects.equals(block.getState(entry.getKey()), entry.getValue())) { + return false; + } + } + return true; } @Nullable From 8ddd31797cb04d4981160868c06655474e65eeeb Mon Sep 17 00:00:00 2001 From: Octavia Togami Date: Sun, 22 May 2022 00:02:35 -0700 Subject: [PATCH 43/55] Fix fastutil on sponge (#2099) VG excludes the wrong version, PR has been made --- worldedit-bukkit/build.gradle.kts | 17 +++++++---------- worldedit-sponge/build.gradle.kts | 19 +++++++++++-------- 2 files changed, 18 insertions(+), 18 deletions(-) diff --git a/worldedit-bukkit/build.gradle.kts b/worldedit-bukkit/build.gradle.kts index cf4cebc6ac..9f8205a970 100644 --- a/worldedit-bukkit/build.gradle.kts +++ b/worldedit-bukkit/build.gradle.kts @@ -84,20 +84,17 @@ tasks.named("shadowJar") { // In tandem with not bundling log4j, we shouldn't relocate base package here. // relocate("org.apache.logging", "com.sk89q.worldedit.log4j") relocate("org.antlr.v4", "com.sk89q.worldedit.antlr4") - include(dependency(":worldedit-core")) // Purposefully not included, we assume (even though no API exposes it) that Log4J will be present at runtime // If it turns out not to be true for Spigot/Paper, our only two official platforms, this can be uncommented. // include(dependency("org.apache.logging.log4j:log4j-api")) include(dependency("org.antlr:antlr4-runtime")) - relocate("org.bstats", "com.sk89q.worldedit.bstats") { - include(dependency("org.bstats:")) - } - relocate("io.papermc.lib", "com.sk89q.worldedit.bukkit.paperlib") { - include(dependency("io.papermc:paperlib")) - } - relocate("it.unimi.dsi.fastutil", "com.sk89q.worldedit.bukkit.fastutil") { - include(dependency("it.unimi.dsi:fastutil")) - } + include(dependency("org.bstats:")) + include(dependency("io.papermc:paperlib")) + include(dependency("it.unimi.dsi:fastutil")) + + relocate("org.bstats", "com.sk89q.worldedit.bstats") + relocate("io.papermc.lib", "com.sk89q.worldedit.bukkit.paperlib") + relocate("it.unimi.dsi.fastutil", "com.sk89q.worldedit.bukkit.fastutil") } } diff --git a/worldedit-sponge/build.gradle.kts b/worldedit-sponge/build.gradle.kts index 01abcca434..b0699c9af2 100644 --- a/worldedit-sponge/build.gradle.kts +++ b/worldedit-sponge/build.gradle.kts @@ -50,11 +50,17 @@ sponge { dependencies { api(project(":worldedit-core")) api(project(":worldedit-libs:sponge")) + // TODO remove after VG merges and releases my patch + // https://github.com/SpongePowered/VanillaGradle/pull/66 + minecraft(minecraft.platform().get().moduleName() + ":" + minecraft.version().get()) { + exclude("it.unimi.dsi", "fastutil") + } implementation(platform("org.apache.logging.log4j:log4j-bom:${Versions.LOG4J}") { because("Sponge 8 (will?) provides Log4J") }) api("org.apache.logging.log4j:log4j-api") implementation("org.bstats:bstats-sponge:3.0.0") + implementation("it.unimi.dsi:fastutil") testImplementation("org.mockito:mockito-core:${Versions.MOCKITO}") } @@ -66,16 +72,13 @@ addJarManifest(WorldEditKind.Mod, includeClasspath = true) tasks.named("shadowJar") { dependencies { - relocate("org.bstats", "com.sk89q.worldedit.sponge.bstats") { - include(dependency("org.bstats:")) - } - include(dependency(":worldedit-core")) + include(dependency("org.bstats:")) + include(dependency("org.antlr:antlr4-runtime")) + include(dependency("it.unimi.dsi:fastutil")) relocate("org.antlr.v4", "com.sk89q.worldedit.antlr4") - include(dependency("org.antlr:antlr4-runtime")) - relocate("it.unimi.dsi.fastutil", "com.sk89q.worldedit.sponge.fastutil") { - include(dependency("it.unimi.dsi:fastutil")) - } + relocate("org.bstats", "com.sk89q.worldedit.sponge.bstats") + relocate("it.unimi.dsi.fastutil", "com.sk89q.worldedit.sponge.fastutil") } } tasks.named("assemble").configure { From 15bd7ff44120ae22448f168f14d1f66ecfbf377d Mon Sep 17 00:00:00 2001 From: Maddy Miller Date: Sun, 22 May 2022 17:28:42 +1000 Subject: [PATCH 44/55] Increase default BlockState count (#2102) --- .../com/sk89q/worldedit/internal/block/BlockStateIdAccess.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/worldedit-core/src/main/java/com/sk89q/worldedit/internal/block/BlockStateIdAccess.java b/worldedit-core/src/main/java/com/sk89q/worldedit/internal/block/BlockStateIdAccess.java index 387a25f9a7..5a4ca155c4 100644 --- a/worldedit-core/src/main/java/com/sk89q/worldedit/internal/block/BlockStateIdAccess.java +++ b/worldedit-core/src/main/java/com/sk89q/worldedit/internal/block/BlockStateIdAccess.java @@ -32,7 +32,7 @@ public final class BlockStateIdAccess { private static final int INVALID_ID = -1; - private static final int EXPECTED_BLOCK_COUNT = 2 << 13; + private static final int EXPECTED_BLOCK_COUNT = 2 << 14; private static final Int2ObjectOpenHashMap TO_STATE = new Int2ObjectOpenHashMap<>(EXPECTED_BLOCK_COUNT); From 92dfdcb88bdce0b4049862e1b99b2795fe843fa6 Mon Sep 17 00:00:00 2001 From: Octavia Togami Date: Thu, 26 May 2022 18:26:16 -0700 Subject: [PATCH 45/55] Update CodeQL action to v2 --- .github/workflows/codeql-analysis.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/codeql-analysis.yml b/.github/workflows/codeql-analysis.yml index da9cf78a98..030aa0813e 100644 --- a/.github/workflows/codeql-analysis.yml +++ b/.github/workflows/codeql-analysis.yml @@ -35,7 +35,7 @@ jobs: # Initializes the CodeQL tools for scanning. - name: Initialize CodeQL - uses: github/codeql-action/init@v1 + uses: github/codeql-action/init@v2 with: languages: ${{ matrix.language }} # If you wish to specify custom queries, you can do so here or in a config file. @@ -46,7 +46,7 @@ jobs: # Autobuild attempts to build any compiled languages (C/C++, C#, or Java). # If this step fails, then you should remove it and run the build manually (see below) - name: Autobuild - uses: github/codeql-action/autobuild@v1 + uses: github/codeql-action/autobuild@v2 # ℹ️ Command-line programs to run using the OS shell. # 📚 https://git.io/JvXDl @@ -60,4 +60,4 @@ jobs: # make release - name: Perform CodeQL Analysis - uses: github/codeql-action/analyze@v1 + uses: github/codeql-action/analyze@v2 From c83f6ecd884d3466344ccfeb85235585f83eaf2f Mon Sep 17 00:00:00 2001 From: Maddy Miller Date: Sat, 4 Jun 2022 16:10:50 +1000 Subject: [PATCH 46/55] Play around with SpongeForge (#2107) --- worldedit-sponge/build.gradle.kts | 2 +- .../sponge/SpongeBlockCategoryRegistry.java | 15 +++++++------ .../sponge/SpongeItemCategoryRegistry.java | 15 +++++++------ .../sk89q/worldedit/sponge/SpongePlayer.java | 19 +++++------------ .../sk89q/worldedit/sponge/SpongeWorld.java | 10 --------- .../worldedit/sponge/SpongeWorldEdit.java | 21 +++++++++---------- 6 files changed, 30 insertions(+), 52 deletions(-) diff --git a/worldedit-sponge/build.gradle.kts b/worldedit-sponge/build.gradle.kts index b0699c9af2..c8493eac9f 100644 --- a/worldedit-sponge/build.gradle.kts +++ b/worldedit-sponge/build.gradle.kts @@ -18,7 +18,7 @@ minecraft { version("1.16.5") } -val spongeApiVersion = "8.0.0"; +val spongeApiVersion = "8.1.0"; sponge { apiVersion(spongeApiVersion) diff --git a/worldedit-sponge/src/main/java/com/sk89q/worldedit/sponge/SpongeBlockCategoryRegistry.java b/worldedit-sponge/src/main/java/com/sk89q/worldedit/sponge/SpongeBlockCategoryRegistry.java index 8990fd9487..7d28858ca0 100644 --- a/worldedit-sponge/src/main/java/com/sk89q/worldedit/sponge/SpongeBlockCategoryRegistry.java +++ b/worldedit-sponge/src/main/java/com/sk89q/worldedit/sponge/SpongeBlockCategoryRegistry.java @@ -21,24 +21,23 @@ import com.sk89q.worldedit.world.block.BlockType; import com.sk89q.worldedit.world.registry.BlockCategoryRegistry; -import net.minecraft.core.Registry; -import net.minecraft.resources.ResourceLocation; -import net.minecraft.tags.BlockTags; -import net.minecraft.tags.Tag; +import org.spongepowered.api.ResourceKey; +import org.spongepowered.api.Sponge; +import org.spongepowered.api.registry.RegistryTypes; import java.util.Collections; -import java.util.Optional; import java.util.Set; import java.util.stream.Collectors; public class SpongeBlockCategoryRegistry implements BlockCategoryRegistry { @Override public Set getCategorisedByName(String category) { - return Optional.ofNullable(BlockTags.getAllTags().getTag(new ResourceLocation(category))) - .map(Tag::getValues) + return Sponge.game().registry(RegistryTypes.BLOCK_TYPE_TAGS) + .findValue(ResourceKey.resolve(category)) + .map(org.spongepowered.api.tag.Tag::values) .orElse(Collections.emptyList()) .stream() - .map(b -> BlockType.REGISTRY.get(Registry.BLOCK.getKey(b).toString())) + .map(b -> BlockType.REGISTRY.get(Sponge.game().registry(RegistryTypes.BLOCK_TYPE).valueKey(b).formatted())) .collect(Collectors.toSet()); } } diff --git a/worldedit-sponge/src/main/java/com/sk89q/worldedit/sponge/SpongeItemCategoryRegistry.java b/worldedit-sponge/src/main/java/com/sk89q/worldedit/sponge/SpongeItemCategoryRegistry.java index b417c34da2..22029ea8d7 100644 --- a/worldedit-sponge/src/main/java/com/sk89q/worldedit/sponge/SpongeItemCategoryRegistry.java +++ b/worldedit-sponge/src/main/java/com/sk89q/worldedit/sponge/SpongeItemCategoryRegistry.java @@ -21,24 +21,23 @@ import com.sk89q.worldedit.world.item.ItemType; import com.sk89q.worldedit.world.registry.ItemCategoryRegistry; -import net.minecraft.core.Registry; -import net.minecraft.resources.ResourceLocation; -import net.minecraft.tags.ItemTags; -import net.minecraft.tags.Tag; +import org.spongepowered.api.ResourceKey; +import org.spongepowered.api.Sponge; +import org.spongepowered.api.registry.RegistryTypes; import java.util.Collections; -import java.util.Optional; import java.util.Set; import java.util.stream.Collectors; public class SpongeItemCategoryRegistry implements ItemCategoryRegistry { @Override public Set getCategorisedByName(String category) { - return Optional.ofNullable(ItemTags.getAllTags().getTag(new ResourceLocation(category))) - .map(Tag::getValues) + return Sponge.game().registry(RegistryTypes.ITEM_TYPE_TAGS) + .findValue(ResourceKey.resolve(category)) + .map(org.spongepowered.api.tag.Tag::values) .orElse(Collections.emptyList()) .stream() - .map(b -> ItemType.REGISTRY.get(Registry.ITEM.getKey(b).toString())) + .map(b -> ItemType.REGISTRY.get(Sponge.game().registry(RegistryTypes.ITEM_TYPE).valueKey(b).formatted())) .collect(Collectors.toSet()); } } diff --git a/worldedit-sponge/src/main/java/com/sk89q/worldedit/sponge/SpongePlayer.java b/worldedit-sponge/src/main/java/com/sk89q/worldedit/sponge/SpongePlayer.java index 821448872f..9d32d6ba4b 100644 --- a/worldedit-sponge/src/main/java/com/sk89q/worldedit/sponge/SpongePlayer.java +++ b/worldedit-sponge/src/main/java/com/sk89q/worldedit/sponge/SpongePlayer.java @@ -40,9 +40,6 @@ import net.kyori.adventure.text.format.NamedTextColor; import net.kyori.adventure.text.format.TextColor; import net.kyori.adventure.text.serializer.legacy.LegacyComponentSerializer; -import net.minecraft.core.BlockPos; -import net.minecraft.network.protocol.game.ClientboundBlockEntityDataPacket; -import net.minecraft.network.protocol.game.ClientboundBlockUpdatePacket; import org.spongepowered.api.ResourceKey; import org.spongepowered.api.Sponge; import org.spongepowered.api.data.Keys; @@ -87,7 +84,6 @@ public String getName() { return this.player.name(); } - @SuppressWarnings("deprecation") @Override public String getDisplayName() { return LegacyComponentSerializer.legacySection().serialize(player.displayName().get()); @@ -234,20 +230,15 @@ public > void sendFakeBlock(BlockVector3 pos, B bl if (block == null) { player.resetBlockChange(pos.getX(), pos.getY(), pos.getZ()); } else { - net.minecraft.server.level.ServerPlayer mcPlayer = - ((net.minecraft.server.level.ServerPlayer) player); - final ClientboundBlockUpdatePacket packetOut = new ClientboundBlockUpdatePacket( - new BlockPos(pos.getX(), pos.getY(), pos.getZ()), - (net.minecraft.world.level.block.state.BlockState) - SpongeAdapter.adapt(block.toImmutableState()) - ); - mcPlayer.connection.send(packetOut); + player.sendBlockChange(pos.getX(), pos.getY(), pos.getZ(), SpongeAdapter.adapt(block.toImmutableState())); if (block instanceof BaseBlock && block.getBlockType().equals(com.sk89q.worldedit.world.block.BlockTypes.STRUCTURE_BLOCK)) { final BaseBlock baseBlock = (BaseBlock) block; final CompoundTag nbtData = baseBlock.getNbtData(); if (nbtData != null) { - mcPlayer.connection.send(new ClientboundBlockEntityDataPacket( - new BlockPos(pos.getBlockX(), pos.getBlockY(), pos.getBlockZ()), + net.minecraft.server.level.ServerPlayer mcPlayer = + ((net.minecraft.server.level.ServerPlayer) player); + mcPlayer.connection.send(new net.minecraft.network.protocol.game.ClientboundBlockEntityDataPacket( + new net.minecraft.core.BlockPos(pos.getBlockX(), pos.getBlockY(), pos.getBlockZ()), STRUCTURE_BLOCK_PACKET_ID, NbtAdapter.adaptNMSToWorldEdit(nbtData)) ); diff --git a/worldedit-sponge/src/main/java/com/sk89q/worldedit/sponge/SpongeWorld.java b/worldedit-sponge/src/main/java/com/sk89q/worldedit/sponge/SpongeWorld.java index d0d523814f..cf93f4afdc 100644 --- a/worldedit-sponge/src/main/java/com/sk89q/worldedit/sponge/SpongeWorld.java +++ b/worldedit-sponge/src/main/java/com/sk89q/worldedit/sponge/SpongeWorld.java @@ -19,19 +19,14 @@ package com.sk89q.worldedit.sponge; -import com.google.common.collect.ImmutableMap; import com.google.common.collect.Sets; import com.sk89q.jnbt.CompoundTag; -import com.sk89q.jnbt.ListTag; -import com.sk89q.jnbt.StringTag; -import com.sk89q.jnbt.Tag; import com.sk89q.worldedit.EditSession; import com.sk89q.worldedit.WorldEditException; import com.sk89q.worldedit.blocks.BaseItemStack; import com.sk89q.worldedit.entity.BaseEntity; import com.sk89q.worldedit.entity.Entity; import com.sk89q.worldedit.extent.Extent; -import com.sk89q.worldedit.internal.Constants; import com.sk89q.worldedit.internal.util.LogManagerCompat; import com.sk89q.worldedit.math.BlockVector3; import com.sk89q.worldedit.math.Vector3; @@ -64,8 +59,6 @@ import org.spongepowered.api.Sponge; import org.spongepowered.api.block.entity.BlockEntityArchetype; import org.spongepowered.api.block.entity.BlockEntityType; -import org.spongepowered.api.data.persistence.DataContainer; -import org.spongepowered.api.data.persistence.DataView; import org.spongepowered.api.entity.EntityArchetype; import org.spongepowered.api.entity.EntityType; import org.spongepowered.api.entity.EntityTypes; @@ -85,10 +78,7 @@ import java.lang.ref.WeakReference; import java.nio.file.Path; -import java.util.ArrayList; -import java.util.HashMap; import java.util.List; -import java.util.Map; import java.util.Optional; import java.util.Random; import java.util.Set; diff --git a/worldedit-sponge/src/main/java/com/sk89q/worldedit/sponge/SpongeWorldEdit.java b/worldedit-sponge/src/main/java/com/sk89q/worldedit/sponge/SpongeWorldEdit.java index 836be233ca..519b2b4244 100644 --- a/worldedit-sponge/src/main/java/com/sk89q/worldedit/sponge/SpongeWorldEdit.java +++ b/worldedit-sponge/src/main/java/com/sk89q/worldedit/sponge/SpongeWorldEdit.java @@ -40,9 +40,6 @@ import com.sk89q.worldedit.world.block.BlockCategory; import com.sk89q.worldedit.world.item.ItemCategory; import net.kyori.adventure.audience.Audience; -import net.minecraft.resources.ResourceLocation; -import net.minecraft.tags.BlockTags; -import net.minecraft.tags.ItemTags; import org.apache.logging.log4j.Logger; import org.bstats.sponge.Metrics; import org.spongepowered.api.ResourceKey; @@ -193,16 +190,18 @@ public void serverStarted(StartedEngineEvent event) { }); } - for (ResourceLocation name : BlockTags.getAllTags().getAvailableTags()) { - if (BlockCategory.REGISTRY.get(name.toString()) == null) { - BlockCategory.REGISTRY.register(name.toString(), new BlockCategory(name.toString())); + event.game().registry(RegistryTypes.BLOCK_TYPE_TAGS).streamEntries().forEach(blockTypeTag -> { + String id = blockTypeTag.key().asString(); + if (!BlockCategory.REGISTRY.keySet().contains(id)) { + BlockCategory.REGISTRY.register(id, new BlockCategory(id)); } - } - for (ResourceLocation name : ItemTags.getAllTags().getAvailableTags()) { - if (ItemCategory.REGISTRY.get(name.toString()) == null) { - ItemCategory.REGISTRY.register(name.toString(), new ItemCategory(name.toString())); + }); + event.game().registry(RegistryTypes.ITEM_TYPE_TAGS).streamEntries().forEach(itemTypeTag -> { + String id = itemTypeTag.key().asString(); + if (!ItemCategory.REGISTRY.keySet().contains(id)) { + ItemCategory.REGISTRY.register(id, new ItemCategory(id)); } - } + }); config.load(); WorldEdit.getInstance().getEventBus().post(new PlatformReadyEvent(platform)); From c515eb5f266429bafe131dfed491965300aebbb5 Mon Sep 17 00:00:00 2001 From: Maddy Miller Date: Sat, 4 Jun 2022 16:30:23 +1000 Subject: [PATCH 47/55] Cache properties to reduce startup memory (#2103) * Cache properties to reduce startup memory * Apply PR review notes * Remove import --- .../impl/v1_17_R1_2/PaperweightAdapter.java | 32 +++++++----- .../impl/v1_18_R2/PaperweightAdapter.java | 32 +++++++----- .../impl/v1_18_R1/PaperweightAdapter.java | 32 +++++++----- .../fabric/internal/FabricTransmogrifier.java | 49 +++++++++++------- .../forge/internal/ForgeTransmogrifier.java | 50 +++++++++++-------- .../sponge/internal/SpongeTransmogrifier.java | 48 +++++++++++------- 6 files changed, 146 insertions(+), 97 deletions(-) diff --git a/worldedit-bukkit/adapters/adapter-1.17.1/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/v1_17_R1_2/PaperweightAdapter.java b/worldedit-bukkit/adapters/adapter-1.17.1/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/v1_17_R1_2/PaperweightAdapter.java index 550f888b9d..d79aa20d40 100644 --- a/worldedit-bukkit/adapters/adapter-1.17.1/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/v1_17_R1_2/PaperweightAdapter.java +++ b/worldedit-bukkit/adapters/adapter-1.17.1/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/v1_17_R1_2/PaperweightAdapter.java @@ -23,7 +23,6 @@ import com.google.common.cache.CacheLoader; import com.google.common.cache.LoadingCache; import com.google.common.collect.ImmutableList; -import com.google.common.collect.Maps; import com.google.common.collect.Sets; import com.google.common.util.concurrent.Futures; import com.mojang.datafixers.util.Either; @@ -151,6 +150,7 @@ import java.util.OptionalInt; import java.util.OptionalLong; import java.util.Set; +import java.util.TreeMap; import java.util.concurrent.CompletableFuture; import java.util.concurrent.ExecutionException; import java.util.concurrent.ForkJoinPool; @@ -500,28 +500,34 @@ public Component getRichItemName(BaseItemStack itemStack) { } @SuppressWarnings({ "unchecked", "rawtypes" }) - @Override - public Map> getProperties(BlockType blockType) { - Map> properties = Maps.newTreeMap(String::compareTo); - Block block = getBlockFromType(blockType); - StateDefinition blockStateList = - block.getStateDefinition(); - for (net.minecraft.world.level.block.state.properties.Property state : blockStateList.getProperties()) { - Property property; + private static final LoadingCache> PROPERTY_CACHE = CacheBuilder.newBuilder().build(new CacheLoader>() { + @Override + public Property load(net.minecraft.world.level.block.state.properties.Property state) throws Exception { if (state instanceof net.minecraft.world.level.block.state.properties.BooleanProperty) { - property = new BooleanProperty(state.getName(), ImmutableList.copyOf(state.getPossibleValues())); + return new BooleanProperty(state.getName(), ImmutableList.copyOf(state.getPossibleValues())); } else if (state instanceof DirectionProperty) { - property = new DirectionalProperty(state.getName(), + return new DirectionalProperty(state.getName(), (List) state.getPossibleValues().stream().map(e -> Direction.valueOf(((StringRepresentable) e).getSerializedName().toUpperCase(Locale.ROOT))).collect(Collectors.toList())); } else if (state instanceof net.minecraft.world.level.block.state.properties.EnumProperty) { - property = new EnumProperty(state.getName(), + return new EnumProperty(state.getName(), (List) state.getPossibleValues().stream().map(e -> ((StringRepresentable) e).getSerializedName()).collect(Collectors.toList())); } else if (state instanceof net.minecraft.world.level.block.state.properties.IntegerProperty) { - property = new IntegerProperty(state.getName(), ImmutableList.copyOf(state.getPossibleValues())); + return new IntegerProperty(state.getName(), ImmutableList.copyOf(state.getPossibleValues())); } else { throw new IllegalArgumentException("WorldEdit needs an update to support " + state.getClass().getSimpleName()); } + } + }); + @SuppressWarnings({ "rawtypes" }) + @Override + public Map> getProperties(BlockType blockType) { + Map> properties = new TreeMap<>(); + Block block = getBlockFromType(blockType); + StateDefinition blockStateList = + block.getStateDefinition(); + for (net.minecraft.world.level.block.state.properties.Property state : blockStateList.getProperties()) { + Property property = PROPERTY_CACHE.getUnchecked(state); properties.put(property.getName(), property); } return properties; diff --git a/worldedit-bukkit/adapters/adapter-1.18.2/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/v1_18_R2/PaperweightAdapter.java b/worldedit-bukkit/adapters/adapter-1.18.2/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/v1_18_R2/PaperweightAdapter.java index 6342201b0c..48f872c9ef 100644 --- a/worldedit-bukkit/adapters/adapter-1.18.2/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/v1_18_R2/PaperweightAdapter.java +++ b/worldedit-bukkit/adapters/adapter-1.18.2/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/v1_18_R2/PaperweightAdapter.java @@ -23,7 +23,6 @@ import com.google.common.cache.CacheLoader; import com.google.common.cache.LoadingCache; import com.google.common.collect.ImmutableList; -import com.google.common.collect.Maps; import com.google.common.collect.Sets; import com.google.common.util.concurrent.Futures; import com.mojang.datafixers.util.Either; @@ -151,6 +150,7 @@ import java.util.OptionalInt; import java.util.OptionalLong; import java.util.Set; +import java.util.TreeMap; import java.util.concurrent.CompletableFuture; import java.util.concurrent.ExecutionException; import java.util.concurrent.ForkJoinPool; @@ -491,28 +491,34 @@ public Component getRichItemName(BaseItemStack itemStack) { } @SuppressWarnings({ "unchecked", "rawtypes" }) - @Override - public Map> getProperties(BlockType blockType) { - Map> properties = Maps.newTreeMap(String::compareTo); - Block block = getBlockFromType(blockType); - StateDefinition blockStateList = - block.getStateDefinition(); - for (net.minecraft.world.level.block.state.properties.Property state : blockStateList.getProperties()) { - Property property; + private static final LoadingCache> PROPERTY_CACHE = CacheBuilder.newBuilder().build(new CacheLoader>() { + @Override + public Property load(net.minecraft.world.level.block.state.properties.Property state) throws Exception { if (state instanceof net.minecraft.world.level.block.state.properties.BooleanProperty) { - property = new BooleanProperty(state.getName(), ImmutableList.copyOf(state.getPossibleValues())); + return new BooleanProperty(state.getName(), ImmutableList.copyOf(state.getPossibleValues())); } else if (state instanceof DirectionProperty) { - property = new DirectionalProperty(state.getName(), + return new DirectionalProperty(state.getName(), (List) state.getPossibleValues().stream().map(e -> Direction.valueOf(((StringRepresentable) e).getSerializedName().toUpperCase(Locale.ROOT))).collect(Collectors.toList())); } else if (state instanceof net.minecraft.world.level.block.state.properties.EnumProperty) { - property = new EnumProperty(state.getName(), + return new EnumProperty(state.getName(), (List) state.getPossibleValues().stream().map(e -> ((StringRepresentable) e).getSerializedName()).collect(Collectors.toList())); } else if (state instanceof net.minecraft.world.level.block.state.properties.IntegerProperty) { - property = new IntegerProperty(state.getName(), ImmutableList.copyOf(state.getPossibleValues())); + return new IntegerProperty(state.getName(), ImmutableList.copyOf(state.getPossibleValues())); } else { throw new IllegalArgumentException("WorldEdit needs an update to support " + state.getClass().getSimpleName()); } + } + }); + @SuppressWarnings({ "rawtypes" }) + @Override + public Map> getProperties(BlockType blockType) { + Map> properties = new TreeMap<>(); + Block block = getBlockFromType(blockType); + StateDefinition blockStateList = + block.getStateDefinition(); + for (net.minecraft.world.level.block.state.properties.Property state : blockStateList.getProperties()) { + Property property = PROPERTY_CACHE.getUnchecked(state); properties.put(property.getName(), property); } return properties; diff --git a/worldedit-bukkit/adapters/adapter-1.18/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/v1_18_R1/PaperweightAdapter.java b/worldedit-bukkit/adapters/adapter-1.18/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/v1_18_R1/PaperweightAdapter.java index 8beb5d207f..b9399ca98b 100644 --- a/worldedit-bukkit/adapters/adapter-1.18/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/v1_18_R1/PaperweightAdapter.java +++ b/worldedit-bukkit/adapters/adapter-1.18/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/v1_18_R1/PaperweightAdapter.java @@ -23,7 +23,6 @@ import com.google.common.cache.CacheLoader; import com.google.common.cache.LoadingCache; import com.google.common.collect.ImmutableList; -import com.google.common.collect.Maps; import com.google.common.collect.Sets; import com.google.common.util.concurrent.Futures; import com.mojang.datafixers.util.Either; @@ -151,6 +150,7 @@ import java.util.OptionalInt; import java.util.OptionalLong; import java.util.Set; +import java.util.TreeMap; import java.util.concurrent.CompletableFuture; import java.util.concurrent.ExecutionException; import java.util.concurrent.ForkJoinPool; @@ -491,28 +491,34 @@ public Component getRichItemName(BaseItemStack itemStack) { } @SuppressWarnings({ "unchecked", "rawtypes" }) - @Override - public Map> getProperties(BlockType blockType) { - Map> properties = Maps.newTreeMap(String::compareTo); - Block block = getBlockFromType(blockType); - StateDefinition blockStateList = - block.getStateDefinition(); - for (net.minecraft.world.level.block.state.properties.Property state : blockStateList.getProperties()) { - Property property; + private static final LoadingCache> PROPERTY_CACHE = CacheBuilder.newBuilder().build(new CacheLoader>() { + @Override + public Property load(net.minecraft.world.level.block.state.properties.Property state) throws Exception { if (state instanceof net.minecraft.world.level.block.state.properties.BooleanProperty) { - property = new BooleanProperty(state.getName(), ImmutableList.copyOf(state.getPossibleValues())); + return new BooleanProperty(state.getName(), ImmutableList.copyOf(state.getPossibleValues())); } else if (state instanceof DirectionProperty) { - property = new DirectionalProperty(state.getName(), + return new DirectionalProperty(state.getName(), (List) state.getPossibleValues().stream().map(e -> Direction.valueOf(((StringRepresentable) e).getSerializedName().toUpperCase(Locale.ROOT))).collect(Collectors.toList())); } else if (state instanceof net.minecraft.world.level.block.state.properties.EnumProperty) { - property = new EnumProperty(state.getName(), + return new EnumProperty(state.getName(), (List) state.getPossibleValues().stream().map(e -> ((StringRepresentable) e).getSerializedName()).collect(Collectors.toList())); } else if (state instanceof net.minecraft.world.level.block.state.properties.IntegerProperty) { - property = new IntegerProperty(state.getName(), ImmutableList.copyOf(state.getPossibleValues())); + return new IntegerProperty(state.getName(), ImmutableList.copyOf(state.getPossibleValues())); } else { throw new IllegalArgumentException("WorldEdit needs an update to support " + state.getClass().getSimpleName()); } + } + }); + @SuppressWarnings({ "rawtypes" }) + @Override + public Map> getProperties(BlockType blockType) { + Map> properties = new TreeMap<>(); + Block block = getBlockFromType(blockType); + StateDefinition blockStateList = + block.getStateDefinition(); + for (net.minecraft.world.level.block.state.properties.Property state : blockStateList.getProperties()) { + Property property = PROPERTY_CACHE.getUnchecked(state); properties.put(property.getName(), property); } return properties; diff --git a/worldedit-fabric/src/main/java/com/sk89q/worldedit/fabric/internal/FabricTransmogrifier.java b/worldedit-fabric/src/main/java/com/sk89q/worldedit/fabric/internal/FabricTransmogrifier.java index fec99ee384..e29956ba48 100644 --- a/worldedit-fabric/src/main/java/com/sk89q/worldedit/fabric/internal/FabricTransmogrifier.java +++ b/worldedit-fabric/src/main/java/com/sk89q/worldedit/fabric/internal/FabricTransmogrifier.java @@ -19,6 +19,9 @@ package com.sk89q.worldedit.fabric.internal; +import com.google.common.cache.CacheBuilder; +import com.google.common.cache.CacheLoader; +import com.google.common.cache.LoadingCache; import com.google.common.collect.ImmutableList; import com.sk89q.worldedit.fabric.FabricAdapter; import com.sk89q.worldedit.registry.state.BooleanProperty; @@ -44,26 +47,34 @@ */ public class FabricTransmogrifier { - public static Property transmogToWorldEditProperty(net.minecraft.world.level.block.state.properties.Property property) { - if (property instanceof net.minecraft.world.level.block.state.properties.BooleanProperty) { - return new BooleanProperty(property.getName(), ImmutableList.copyOf(((net.minecraft.world.level.block.state.properties.BooleanProperty) property).getPossibleValues())); - } - if (property instanceof net.minecraft.world.level.block.state.properties.IntegerProperty) { - return new IntegerProperty(property.getName(), ImmutableList.copyOf(((net.minecraft.world.level.block.state.properties.IntegerProperty) property).getPossibleValues())); - } - if (property instanceof DirectionProperty) { - return new DirectionalProperty(property.getName(), ((DirectionProperty) property).getPossibleValues().stream() - .map(FabricAdapter::adaptEnumFacing) - .collect(Collectors.toList())); - } - if (property instanceof net.minecraft.world.level.block.state.properties.EnumProperty) { - // Note: do not make x.asString a method reference. - // It will cause runtime bootstrap exceptions. - return new EnumProperty(property.getName(), ((net.minecraft.world.level.block.state.properties.EnumProperty) property).getPossibleValues().stream() - .map(x -> x.getSerializedName()) - .collect(Collectors.toList())); + private static final LoadingCache, Property> PROPERTY_CACHE = CacheBuilder.newBuilder().build(new CacheLoader<>() { + @Override + public Property load(net.minecraft.world.level.block.state.properties.Property property) throws Exception { + if (property instanceof net.minecraft.world.level.block.state.properties.BooleanProperty) { + return new BooleanProperty(property.getName(), ImmutableList.copyOf(((net.minecraft.world.level.block.state.properties.BooleanProperty) property).getPossibleValues())); + } + if (property instanceof net.minecraft.world.level.block.state.properties.IntegerProperty) { + return new IntegerProperty(property.getName(), ImmutableList.copyOf(((net.minecraft.world.level.block.state.properties.IntegerProperty) property).getPossibleValues())); + } + if (property instanceof DirectionProperty) { + return new DirectionalProperty(property.getName(), ((DirectionProperty) property).getPossibleValues().stream() + .map(FabricAdapter::adaptEnumFacing) + .collect(Collectors.toList())); + } + if (property instanceof net.minecraft.world.level.block.state.properties.EnumProperty) { + // Note: do not make x.asString a method reference. + // It will cause runtime bootstrap exceptions. + //noinspection Convert2MethodRef + return new EnumProperty(property.getName(), ((net.minecraft.world.level.block.state.properties.EnumProperty) property).getPossibleValues().stream() + .map(x -> x.getSerializedName()) + .collect(Collectors.toList())); + } + return new PropertyAdapter<>(property); } - return new PropertyAdapter<>(property); + }); + + public static Property transmogToWorldEditProperty(net.minecraft.world.level.block.state.properties.Property property) { + return PROPERTY_CACHE.getUnchecked(property); } private static Map, Object> transmogToWorldEditProperties(BlockType block, Map, Comparable> mcProps) { diff --git a/worldedit-forge/src/main/java/com/sk89q/worldedit/forge/internal/ForgeTransmogrifier.java b/worldedit-forge/src/main/java/com/sk89q/worldedit/forge/internal/ForgeTransmogrifier.java index b647237cb5..38224711fd 100644 --- a/worldedit-forge/src/main/java/com/sk89q/worldedit/forge/internal/ForgeTransmogrifier.java +++ b/worldedit-forge/src/main/java/com/sk89q/worldedit/forge/internal/ForgeTransmogrifier.java @@ -19,6 +19,9 @@ package com.sk89q.worldedit.forge.internal; +import com.google.common.cache.CacheBuilder; +import com.google.common.cache.CacheLoader; +import com.google.common.cache.LoadingCache; import com.google.common.collect.ImmutableList; import com.sk89q.worldedit.forge.ForgeAdapter; import com.sk89q.worldedit.registry.state.BooleanProperty; @@ -44,27 +47,34 @@ */ public class ForgeTransmogrifier { - public static Property transmogToWorldEditProperty(net.minecraft.world.level.block.state.properties.Property property) { - if (property instanceof net.minecraft.world.level.block.state.properties.BooleanProperty) { - return new BooleanProperty(property.getName(), ImmutableList.copyOf(((net.minecraft.world.level.block.state.properties.BooleanProperty) property).getPossibleValues())); - } - if (property instanceof net.minecraft.world.level.block.state.properties.IntegerProperty) { - return new IntegerProperty(property.getName(), ImmutableList.copyOf(((net.minecraft.world.level.block.state.properties.IntegerProperty) property).getPossibleValues())); - } - if (property instanceof DirectionProperty) { - return new DirectionalProperty(property.getName(), ((DirectionProperty) property).getPossibleValues().stream() - .map(ForgeAdapter::adaptEnumFacing) - .collect(Collectors.toList())); - } - if (property instanceof net.minecraft.world.level.block.state.properties.EnumProperty) { - // Note: do not make x.getSerializedName a method reference. - // It will cause runtime bootstrap exceptions. - //noinspection Convert2MethodRef - return new EnumProperty(property.getName(), ((net.minecraft.world.level.block.state.properties.EnumProperty) property).getPossibleValues().stream() - .map(x -> x.getSerializedName()) - .collect(Collectors.toList())); + private static final LoadingCache, Property> PROPERTY_CACHE = CacheBuilder.newBuilder().build(new CacheLoader<>() { + @Override + public Property load(net.minecraft.world.level.block.state.properties.Property property) throws Exception { + if (property instanceof net.minecraft.world.level.block.state.properties.BooleanProperty) { + return new BooleanProperty(property.getName(), ImmutableList.copyOf(((net.minecraft.world.level.block.state.properties.BooleanProperty) property).getPossibleValues())); + } + if (property instanceof net.minecraft.world.level.block.state.properties.IntegerProperty) { + return new IntegerProperty(property.getName(), ImmutableList.copyOf(((net.minecraft.world.level.block.state.properties.IntegerProperty) property).getPossibleValues())); + } + if (property instanceof DirectionProperty) { + return new DirectionalProperty(property.getName(), ((DirectionProperty) property).getPossibleValues().stream() + .map(ForgeAdapter::adaptEnumFacing) + .collect(Collectors.toList())); + } + if (property instanceof net.minecraft.world.level.block.state.properties.EnumProperty) { + // Note: do not make x.getSerializedName a method reference. + // It will cause runtime bootstrap exceptions. + //noinspection Convert2MethodRef + return new EnumProperty(property.getName(), ((net.minecraft.world.level.block.state.properties.EnumProperty) property).getPossibleValues().stream() + .map(x -> x.getSerializedName()) + .collect(Collectors.toList())); + } + return new IPropertyAdapter<>(property); } - return new IPropertyAdapter<>(property); + }); + + public static Property transmogToWorldEditProperty(net.minecraft.world.level.block.state.properties.Property property) { + return PROPERTY_CACHE.getUnchecked(property); } public static Map, Object> transmogToWorldEditProperties(BlockType block, Map, Comparable> mcProps) { diff --git a/worldedit-sponge/src/main/java/com/sk89q/worldedit/sponge/internal/SpongeTransmogrifier.java b/worldedit-sponge/src/main/java/com/sk89q/worldedit/sponge/internal/SpongeTransmogrifier.java index a86d8988a8..a557d40e96 100644 --- a/worldedit-sponge/src/main/java/com/sk89q/worldedit/sponge/internal/SpongeTransmogrifier.java +++ b/worldedit-sponge/src/main/java/com/sk89q/worldedit/sponge/internal/SpongeTransmogrifier.java @@ -19,6 +19,9 @@ package com.sk89q.worldedit.sponge.internal; +import com.google.common.cache.CacheBuilder; +import com.google.common.cache.CacheLoader; +import com.google.common.cache.LoadingCache; import com.google.common.collect.ImmutableList; import com.sk89q.worldedit.registry.state.BooleanProperty; import com.sk89q.worldedit.registry.state.DirectionalProperty; @@ -48,26 +51,33 @@ */ public class SpongeTransmogrifier { - public static Property transmogToWorldEditProperty(StateProperty property) { - if (property instanceof BooleanStateProperty) { - return new BooleanProperty(property.name(), ImmutableList.copyOf(((BooleanStateProperty) property).possibleValues())); - } - if (property instanceof IntegerStateProperty) { - return new IntegerProperty(property.name(), ImmutableList.copyOf(((IntegerStateProperty) property).possibleValues())); - } - if (isDirectionProperty(property)) { - return new DirectionalProperty(property.name(), - ((EnumStateProperty) property).possibleValues().stream() - .map(x -> adaptDirection((net.minecraft.core.Direction) x)) - .collect(Collectors.toList()) - ); - } - if (property instanceof EnumStateProperty) { - return new EnumProperty(property.name(), ((EnumStateProperty) property).possibleValues().stream() - .map(x -> ((StringRepresentable) x).getSerializedName()) - .collect(Collectors.toList())); + private static final LoadingCache, Property> PROPERTY_CACHE = CacheBuilder.newBuilder().build(new CacheLoader, Property>() { + @Override + public Property load(StateProperty property) throws Exception { + if (property instanceof BooleanStateProperty) { + return new BooleanProperty(property.name(), ImmutableList.copyOf(((BooleanStateProperty) property).possibleValues())); + } + if (property instanceof IntegerStateProperty) { + return new IntegerProperty(property.name(), ImmutableList.copyOf(((IntegerStateProperty) property).possibleValues())); + } + if (isDirectionProperty(property)) { + return new DirectionalProperty(property.name(), + ((EnumStateProperty) property).possibleValues().stream() + .map(x -> adaptDirection((net.minecraft.core.Direction) x)) + .collect(Collectors.toList()) + ); + } + if (property instanceof EnumStateProperty) { + return new EnumProperty(property.name(), ((EnumStateProperty) property).possibleValues().stream() + .map(x -> ((StringRepresentable) x).getSerializedName()) + .collect(Collectors.toList())); + } + throw new IllegalStateException("Unknown property type"); } - throw new IllegalStateException("Unknown property type"); + }); + + public static Property transmogToWorldEditProperty(StateProperty property) { + return PROPERTY_CACHE.getUnchecked(property); } private static Map, Object> transmogToWorldEditProperties(BlockType block, Map, ?> mcProps) { From 31e5298f39d5b70419078b77735798ec93951b32 Mon Sep 17 00:00:00 2001 From: Maddy Miller Date: Sat, 4 Jun 2022 16:47:19 +1000 Subject: [PATCH 48/55] Fixed //stack erroring when given a count of 0 (#2108) --- .../main/java/com/sk89q/worldedit/command/RegionCommands.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/worldedit-core/src/main/java/com/sk89q/worldedit/command/RegionCommands.java b/worldedit-core/src/main/java/com/sk89q/worldedit/command/RegionCommands.java index 410cc5d9e1..ca43de5857 100644 --- a/worldedit-core/src/main/java/com/sk89q/worldedit/command/RegionCommands.java +++ b/worldedit-core/src/main/java/com/sk89q/worldedit/command/RegionCommands.java @@ -371,6 +371,8 @@ public int stack(Actor actor, World world, EditSession editSession, LocalSession boolean blockUnits, @ArgFlag(name = 'm', desc = "Set the include mask, non-matching blocks become air") Mask mask) throws WorldEditException { + checkCommandArgument(count >= 1, "Count must be >= 1"); + Mask combinedMask; if (ignoreAirBlocks) { if (mask == null) { From 66e3c3cd62d5195fdf6b3492a532c374197f3760 Mon Sep 17 00:00:00 2001 From: Octavia Togami Date: Thu, 19 May 2022 18:42:47 -0700 Subject: [PATCH 49/55] [Fabric] 1.19-pre1 - new TextComponent -> Component.literal - Use sendSystemMessage instead of displayClientMessage(..., false) - build -> buildUnoptimized/buildOptimized; I just returned the same from both - Create a LevelStem for regen world constructor - Use RandomSource instead of Random - Command text doesn't include the slash anymore --- gradle.properties | 4 +-- worldedit-fabric/build.gradle.kts | 6 ++--- .../worldedit/fabric/CommandWrapper.java | 2 +- .../worldedit/fabric/FabricDataFixer.java | 26 +++++++++++-------- .../sk89q/worldedit/fabric/FabricPlayer.java | 15 +++++------ .../sk89q/worldedit/fabric/FabricWorld.java | 9 ++++--- .../worldedit/fabric/WorldEditFakePlayer.java | 2 +- .../fabric/mixin/MixinServerPlayer.java | 2 +- 8 files changed, 36 insertions(+), 30 deletions(-) diff --git a/gradle.properties b/gradle.properties index b0ac31094b..54cd181beb 100644 --- a/gradle.properties +++ b/gradle.properties @@ -4,5 +4,5 @@ version=7.2.11-SNAPSHOT org.gradle.jvmargs=-Xmx1512M org.gradle.parallel=true -loom.version=0.11.32 -mixin.version=0.11.2+mixin.0.8.5 +loom.version=0.11.34 +mixin.version=0.11.4+mixin.0.8.5 diff --git a/worldedit-fabric/build.gradle.kts b/worldedit-fabric/build.gradle.kts index bff20558f7..9438aadc7f 100644 --- a/worldedit-fabric/build.gradle.kts +++ b/worldedit-fabric/build.gradle.kts @@ -21,8 +21,8 @@ applyShadowConfiguration() apply(plugin = "fabric-loom") apply(plugin = "java-library") -val minecraftVersion = "1.18.2" -val loaderVersion = "0.13.3" +val minecraftVersion = "1.19-pre1" +val loaderVersion = "0.14.6" val fabricApiConfiguration: Configuration = configurations.create("fabricApi") @@ -48,7 +48,7 @@ dependencies { "modImplementation"("net.fabricmc:fabric-loader:$loaderVersion") // [1] declare fabric-api dependency... - "fabricApi"("net.fabricmc.fabric-api:fabric-api:0.47.9+1.18.2") + "fabricApi"("net.fabricmc.fabric-api:fabric-api:0.52.4+1.19") // [2] Load the API dependencies from the fabric mod json... @Suppress("UNCHECKED_CAST") diff --git a/worldedit-fabric/src/main/java/com/sk89q/worldedit/fabric/CommandWrapper.java b/worldedit-fabric/src/main/java/com/sk89q/worldedit/fabric/CommandWrapper.java index bfd46c6c1f..6d5937bf56 100644 --- a/worldedit-fabric/src/main/java/com/sk89q/worldedit/fabric/CommandWrapper.java +++ b/worldedit-fabric/src/main/java/com/sk89q/worldedit/fabric/CommandWrapper.java @@ -63,7 +63,7 @@ public static void register(CommandDispatcher dispatcher, or Command commandRunner = ctx -> { WorldEdit.getInstance().getEventBus().post(new com.sk89q.worldedit.event.platform.CommandEvent( adaptPlayer(ctx.getSource().getPlayerOrException()), - ctx.getInput() + "/" + ctx.getInput() )); return 0; }; diff --git a/worldedit-fabric/src/main/java/com/sk89q/worldedit/fabric/FabricDataFixer.java b/worldedit-fabric/src/main/java/com/sk89q/worldedit/fabric/FabricDataFixer.java index f58c02a95c..2bae014d31 100644 --- a/worldedit-fabric/src/main/java/com/sk89q/worldedit/fabric/FabricDataFixer.java +++ b/worldedit-fabric/src/main/java/com/sk89q/worldedit/fabric/FabricDataFixer.java @@ -45,7 +45,6 @@ import net.minecraft.nbt.Tag; import net.minecraft.network.chat.Component; import net.minecraft.network.chat.MutableComponent; -import net.minecraft.network.chat.TextComponent; import net.minecraft.resources.ResourceLocation; import net.minecraft.util.GsonHelper; import net.minecraft.util.datafix.DataFixers; @@ -220,7 +219,12 @@ public TypeReference getDFUType() { } @Override - public DataFixer build(final Executor executor) { + public DataFixer buildUnoptimized() { + return fixer; + } + + @Override + public DataFixer buildOptimized(Executor executor) { return fixer; } @@ -1863,12 +1867,12 @@ public net.minecraft.nbt.CompoundTag convert(net.minecraft.nbt.CompoundTag cmp) if (!"null".equals(s) && !Strings.isNullOrEmpty(s)) { if ((s.charAt(0) != 34 || s.charAt(s.length() - 1) != 34) && (s.charAt(0) != 123 || s.charAt(s.length() - 1) != 125)) { - object = new TextComponent(s); + object = Component.literal(s); } else { try { object = GsonHelper.fromJson(DataConverterSignText.a, s, Component.class, true); if (object == null) { - object = new TextComponent(""); + object = Component.literal(""); } } catch (JsonParseException jsonparseexception) { ; @@ -1891,11 +1895,11 @@ public net.minecraft.nbt.CompoundTag convert(net.minecraft.nbt.CompoundTag cmp) } if (object == null) { - object = new TextComponent(s); + object = Component.literal(s); } } } else { - object = new TextComponent(""); + object = Component.literal(""); } nbttaglist.set(i, StringTag.valueOf(Component.Serializer.toJson((Component) object))); @@ -2476,7 +2480,7 @@ private static class DataConverterSignText implements DataConverter { public static final Gson a = new GsonBuilder().registerTypeAdapter(Component.class, new JsonDeserializer() { MutableComponent a(JsonElement jsonelement, Type type, JsonDeserializationContext jsondeserializationcontext) throws JsonParseException { if (jsonelement.isJsonPrimitive()) { - return new TextComponent(jsonelement.getAsString()); + return Component.literal(jsonelement.getAsString()); } else if (jsonelement.isJsonArray()) { JsonArray jsonarray = jsonelement.getAsJsonArray(); MutableComponent iTextComponent = null; @@ -2528,12 +2532,12 @@ private void convert(net.minecraft.nbt.CompoundTag nbttagcompound, String s) { if (!"null".equals(s1) && !Strings.isNullOrEmpty(s1)) { if ((s1.charAt(0) != 34 || s1.charAt(s1.length() - 1) != 34) && (s1.charAt(0) != 123 || s1.charAt(s1.length() - 1) != 125)) { - object = new TextComponent(s1); + object = Component.literal(s1); } else { try { object = GsonHelper.fromJson(DataConverterSignText.a, s1, Component.class, true); if (object == null) { - object = new TextComponent(""); + object = Component.literal(""); } } catch (JsonParseException jsonparseexception) { ; @@ -2556,11 +2560,11 @@ private void convert(net.minecraft.nbt.CompoundTag nbttagcompound, String s) { } if (object == null) { - object = new TextComponent(s1); + object = Component.literal(s1); } } } else { - object = new TextComponent(""); + object = Component.literal(""); } nbttagcompound.putString(s, Component.Serializer.toJson((Component) object)); diff --git a/worldedit-fabric/src/main/java/com/sk89q/worldedit/fabric/FabricPlayer.java b/worldedit-fabric/src/main/java/com/sk89q/worldedit/fabric/FabricPlayer.java index 04c19c373d..64c8b87f38 100644 --- a/worldedit-fabric/src/main/java/com/sk89q/worldedit/fabric/FabricPlayer.java +++ b/worldedit-fabric/src/main/java/com/sk89q/worldedit/fabric/FabricPlayer.java @@ -46,12 +46,9 @@ import io.netty.buffer.Unpooled; import net.fabricmc.fabric.api.networking.v1.ServerPlayNetworking; import net.minecraft.ChatFormatting; -import net.minecraft.Util; import net.minecraft.core.BlockPos; import net.minecraft.network.FriendlyByteBuf; -import net.minecraft.network.chat.ChatType; import net.minecraft.network.chat.MutableComponent; -import net.minecraft.network.chat.TextComponent; import net.minecraft.network.protocol.game.ClientboundBlockUpdatePacket; import net.minecraft.server.level.ServerLevel; import net.minecraft.server.level.ServerPlayer; @@ -86,7 +83,7 @@ public BaseItemStack getItemInHand(HandSide handSide) { @Override public String getName() { - return this.player.getName().getContents(); + return this.player.getName().getString(); } @Override @@ -151,7 +148,9 @@ public Locale getLocale() { @Deprecated public void printRaw(String msg) { for (String part : msg.split("\n")) { - this.player.sendMessage(new TextComponent(part), ChatType.SYSTEM, Util.NIL_UUID); + this.player.sendSystemMessage( + net.minecraft.network.chat.Component.literal(part) + ); } } @@ -175,14 +174,14 @@ public void printError(String msg) { @Override public void print(Component component) { - this.player.displayClientMessage(net.minecraft.network.chat.Component.Serializer.fromJson(GsonComponentSerializer.INSTANCE.serialize(WorldEditText.format(component, getLocale()))), false); + this.player.sendSystemMessage(net.minecraft.network.chat.Component.Serializer.fromJson(GsonComponentSerializer.INSTANCE.serialize(WorldEditText.format(component, getLocale())))); } private void sendColorized(String msg, ChatFormatting formatting) { for (String part : msg.split("\n")) { - MutableComponent component = new TextComponent(part) + MutableComponent component = net.minecraft.network.chat.Component.literal(part) .withStyle(style -> style.withColor(formatting)); - this.player.displayClientMessage(component, false); + this.player.sendSystemMessage(component); } } diff --git a/worldedit-fabric/src/main/java/com/sk89q/worldedit/fabric/FabricWorld.java b/worldedit-fabric/src/main/java/com/sk89q/worldedit/fabric/FabricWorld.java index 5e9ce89e2f..60d000ab88 100644 --- a/worldedit-fabric/src/main/java/com/sk89q/worldedit/fabric/FabricWorld.java +++ b/worldedit-fabric/src/main/java/com/sk89q/worldedit/fabric/FabricWorld.java @@ -75,6 +75,7 @@ import net.minecraft.server.MinecraftServer; import net.minecraft.server.level.ServerChunkCache; import net.minecraft.server.level.ServerLevel; +import net.minecraft.util.RandomSource; import net.minecraft.world.Clearable; import net.minecraft.world.InteractionHand; import net.minecraft.world.InteractionResult; @@ -127,7 +128,7 @@ */ public class FabricWorld extends AbstractWorld { - private static final Random random = new Random(); + private static final RandomSource random = RandomSource.create(); private static ResourceLocation getDimensionRegistryKey(Level world) { return Objects.requireNonNull(world.getServer(), "server cannot be null") @@ -343,9 +344,11 @@ private void doRegen(Region region, Extent extent, RegenOptions options) throws originalWorld.getServer(), Util.backgroundExecutor(), session, ((ServerLevelData) originalWorld.getLevelData()), worldRegKey, - originalWorld.dimensionTypeRegistration(), + new LevelStem( + originalWorld.dimensionTypeRegistration(), + dimGenOpts.generator() + ), new WorldEditGenListener(), - dimGenOpts.generator(), originalWorld.isDebug(), seed, // No spawners are needed for this world. diff --git a/worldedit-fabric/src/main/java/com/sk89q/worldedit/fabric/WorldEditFakePlayer.java b/worldedit-fabric/src/main/java/com/sk89q/worldedit/fabric/WorldEditFakePlayer.java index aa62955b2f..6c0768d680 100644 --- a/worldedit-fabric/src/main/java/com/sk89q/worldedit/fabric/WorldEditFakePlayer.java +++ b/worldedit-fabric/src/main/java/com/sk89q/worldedit/fabric/WorldEditFakePlayer.java @@ -32,7 +32,7 @@ public class WorldEditFakePlayer extends ServerPlayer { private static final GameProfile FAKE_WORLDEDIT_PROFILE = new GameProfile(UUID.nameUUIDFromBytes("worldedit".getBytes()), "[WorldEdit]"); public WorldEditFakePlayer(ServerLevel world) { - super(world.getServer(), world, FAKE_WORLDEDIT_PROFILE); + super(world.getServer(), world, FAKE_WORLDEDIT_PROFILE, null); } @Override diff --git a/worldedit-fabric/src/main/java/com/sk89q/worldedit/fabric/mixin/MixinServerPlayer.java b/worldedit-fabric/src/main/java/com/sk89q/worldedit/fabric/mixin/MixinServerPlayer.java index 9c5c2adaf9..87aaa63e9e 100644 --- a/worldedit-fabric/src/main/java/com/sk89q/worldedit/fabric/mixin/MixinServerPlayer.java +++ b/worldedit-fabric/src/main/java/com/sk89q/worldedit/fabric/mixin/MixinServerPlayer.java @@ -34,7 +34,7 @@ public abstract class MixinServerPlayer implements ExtendedPlayerEntity { @Inject(method = "updateOptions", at = @At(value = "HEAD")) public void updateOptions(ServerboundClientInformationPacket clientSettingsC2SPacket, - CallbackInfo callbackInfo) { + CallbackInfo callbackInfo) { this.language = clientSettingsC2SPacket.language(); } From a8a3633b08c49f524233935e60dae28826242ccc Mon Sep 17 00:00:00 2001 From: Octavia Togami Date: Thu, 26 May 2022 17:31:00 -0700 Subject: [PATCH 50/55] Increase memory for daemon Thanks loom --- gradle.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle.properties b/gradle.properties index 54cd181beb..e5f7deda34 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,7 +1,7 @@ group=com.sk89q.worldedit version=7.2.11-SNAPSHOT -org.gradle.jvmargs=-Xmx1512M +org.gradle.jvmargs=-Xmx2G org.gradle.parallel=true loom.version=0.11.34 From 7497341a1cc0a45973149a5439e815ed4553aebb Mon Sep 17 00:00:00 2001 From: Octavia Togami Date: Tue, 7 Jun 2022 17:26:08 -0700 Subject: [PATCH 51/55] [Fabric] 1.19 --- gradle.properties | 2 +- worldedit-fabric/build.gradle.kts | 4 ++-- .../main/java/com/sk89q/worldedit/fabric/FabricWorld.java | 4 ++-- .../java/com/sk89q/worldedit/fabric/FabricWorldEdit.java | 6 ++++-- worldedit-fabric/src/main/resources/fabric.mod.json | 2 +- 5 files changed, 10 insertions(+), 8 deletions(-) diff --git a/gradle.properties b/gradle.properties index e5f7deda34..152d06e707 100644 --- a/gradle.properties +++ b/gradle.properties @@ -4,5 +4,5 @@ version=7.2.11-SNAPSHOT org.gradle.jvmargs=-Xmx2G org.gradle.parallel=true -loom.version=0.11.34 +loom.version=0.12.47 mixin.version=0.11.4+mixin.0.8.5 diff --git a/worldedit-fabric/build.gradle.kts b/worldedit-fabric/build.gradle.kts index 9438aadc7f..ebd60c5a63 100644 --- a/worldedit-fabric/build.gradle.kts +++ b/worldedit-fabric/build.gradle.kts @@ -21,7 +21,7 @@ applyShadowConfiguration() apply(plugin = "fabric-loom") apply(plugin = "java-library") -val minecraftVersion = "1.19-pre1" +val minecraftVersion = "1.19" val loaderVersion = "0.14.6" val fabricApiConfiguration: Configuration = configurations.create("fabricApi") @@ -48,7 +48,7 @@ dependencies { "modImplementation"("net.fabricmc:fabric-loader:$loaderVersion") // [1] declare fabric-api dependency... - "fabricApi"("net.fabricmc.fabric-api:fabric-api:0.52.4+1.19") + "fabricApi"("net.fabricmc.fabric-api:fabric-api:0.55.1+1.19") // [2] Load the API dependencies from the fabric mod json... @Suppress("UNCHECKED_CAST") diff --git a/worldedit-fabric/src/main/java/com/sk89q/worldedit/fabric/FabricWorld.java b/worldedit-fabric/src/main/java/com/sk89q/worldedit/fabric/FabricWorld.java index 60d000ab88..4ac103fc7d 100644 --- a/worldedit-fabric/src/main/java/com/sk89q/worldedit/fabric/FabricWorld.java +++ b/worldedit-fabric/src/main/java/com/sk89q/worldedit/fabric/FabricWorld.java @@ -113,7 +113,6 @@ import java.util.Objects; import java.util.Optional; import java.util.OptionalLong; -import java.util.Random; import java.util.Set; import java.util.concurrent.CompletableFuture; import java.util.concurrent.ExecutionException; @@ -234,7 +233,8 @@ public boolean setBiome(BlockVector3 position, BiomeType biome) { checkNotNull(biome); ChunkAccess chunk = getWorld().getChunk(position.getBlockX() >> 4, position.getBlockZ() >> 4); - PalettedContainer> biomeArray = chunk.getSection(chunk.getSectionIndex(position.getY())).getBiomes(); + // Screw it, we know it's really mutable... + var biomeArray = (PalettedContainer>) chunk.getSection(chunk.getSectionIndex(position.getY())).getBiomes(); biomeArray.getAndSetUnchecked( position.getX() & 3, position.getY() & 3, position.getZ() & 3, getWorld().registryAccess().registry(Registry.BIOME_REGISTRY) diff --git a/worldedit-fabric/src/main/java/com/sk89q/worldedit/fabric/FabricWorldEdit.java b/worldedit-fabric/src/main/java/com/sk89q/worldedit/fabric/FabricWorldEdit.java index f3be6ea106..8fc531ccb8 100644 --- a/worldedit-fabric/src/main/java/com/sk89q/worldedit/fabric/FabricWorldEdit.java +++ b/worldedit-fabric/src/main/java/com/sk89q/worldedit/fabric/FabricWorldEdit.java @@ -43,7 +43,7 @@ import com.sk89q.worldedit.world.item.ItemCategory; import com.sk89q.worldedit.world.item.ItemType; import net.fabricmc.api.ModInitializer; -import net.fabricmc.fabric.api.command.v1.CommandRegistrationCallback; +import net.fabricmc.fabric.api.command.v2.CommandRegistrationCallback; import net.fabricmc.fabric.api.event.lifecycle.v1.ServerLifecycleEvents; import net.fabricmc.fabric.api.event.lifecycle.v1.ServerTickEvents; import net.fabricmc.fabric.api.event.player.AttackBlockCallback; @@ -52,7 +52,9 @@ import net.fabricmc.fabric.api.networking.v1.ServerPlayConnectionEvents; import net.fabricmc.loader.api.FabricLoader; import net.fabricmc.loader.api.ModContainer; +import net.minecraft.commands.CommandBuildContext; import net.minecraft.commands.CommandSourceStack; +import net.minecraft.commands.Commands; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.core.Registry; @@ -151,7 +153,7 @@ public void onInitialize() { LOGGER.info("WorldEdit for Fabric (version " + getInternalVersion() + ") is loaded"); } - private void registerCommands(CommandDispatcher dispatcher, boolean dedicated) { + private void registerCommands(CommandDispatcher dispatcher, CommandBuildContext registryAccess, Commands.CommandSelection environment) { WorldEdit.getInstance().getEventBus().post(new PlatformsRegisteredEvent()); PlatformManager manager = WorldEdit.getInstance().getPlatformManager(); Platform commandsPlatform = manager.queryCapability(Capability.USER_COMMANDS); diff --git a/worldedit-fabric/src/main/resources/fabric.mod.json b/worldedit-fabric/src/main/resources/fabric.mod.json index 81174ad6b9..39222110cb 100644 --- a/worldedit-fabric/src/main/resources/fabric.mod.json +++ b/worldedit-fabric/src/main/resources/fabric.mod.json @@ -30,7 +30,7 @@ "depends": { "fabricloader": ">=0.4.0", "fabric-api-base": "*", - "fabric-command-api-v1": "*", + "fabric-command-api-v2": "*", "fabric-lifecycle-events-v1": "*", "fabric-events-interaction-v0": "*", "fabric-networking-api-v1": "*" From 69b5d661f0d93ec22de7467c3d685ab50589ddc5 Mon Sep 17 00:00:00 2001 From: Octavia Togami Date: Tue, 7 Jun 2022 15:42:21 -0700 Subject: [PATCH 52/55] [Forge] 1.19 --- buildSrc/build.gradle.kts | 30 +++++++++---------- worldedit-forge/build.gradle.kts | 16 ++++++++-- .../sk89q/worldedit/forge/ForgeDataFixer.java | 26 +++++++++------- .../sk89q/worldedit/forge/ForgeEntity.java | 3 +- .../sk89q/worldedit/forge/ForgePlayer.java | 16 +++------- .../com/sk89q/worldedit/forge/ForgeWorld.java | 13 ++++---- .../sk89q/worldedit/forge/ForgeWorldEdit.java | 2 +- 7 files changed, 58 insertions(+), 48 deletions(-) diff --git a/buildSrc/build.gradle.kts b/buildSrc/build.gradle.kts index 29d8be4d54..cf64eda9c7 100644 --- a/buildSrc/build.gradle.kts +++ b/buildSrc/build.gradle.kts @@ -6,6 +6,20 @@ plugins { } repositories { + maven { + name = "PaperMC" + url = uri("https://papermc.io/repo/repository/maven-public/") + content { + includeGroupByRegex("io\\.papermc\\..*") + } + } + maven { + name = "Forge Maven" + url = uri("https://maven.minecraftforge.net/") + content { + includeGroupByRegex("net\\.minecraftforge(|\\..*)$") + } + } mavenCentral() gradlePluginPortal() maven { @@ -20,20 +34,6 @@ repositories { name = "EngineHub Repository" url = uri("https://maven.enginehub.org/repo/") } - maven { - name = "PaperMC" - url = uri("https://papermc.io/repo/repository/maven-public/") - content { - includeGroupByRegex("io\\.papermc\\..*") - } - } - maven { - name = "Forge Maven" - url = uri("https://maven.minecraftforge.net/") - content { - includeGroupByRegex("net\\.minecraftforge\\..*") - } - } } val properties = Properties().also { props -> @@ -52,7 +52,7 @@ dependencies { implementation("org.jfrog.buildinfo:build-info-extractor-gradle:4.27.1") implementation("org.spongepowered:spongegradle-plugin-development:2.0.1") implementation("org.spongepowered:vanillagradle:0.2") - implementation("net.minecraftforge.gradle:ForgeGradle:5.1.31") + implementation("net.minecraftforge.gradle:ForgeGradle:5.1.41") implementation("net.fabricmc:fabric-loom:$loomVersion") implementation("net.fabricmc:sponge-mixin:$mixinVersion") implementation("org.enginehub.gradle:gradle-codecov-plugin:0.1.0") diff --git a/worldedit-forge/build.gradle.kts b/worldedit-forge/build.gradle.kts index 1109aa3a10..fff19ca49f 100644 --- a/worldedit-forge/build.gradle.kts +++ b/worldedit-forge/build.gradle.kts @@ -12,17 +12,29 @@ plugins { applyPlatformAndCoreConfiguration(javaRelease = 17) applyShadowConfiguration() -val minecraftVersion = "1.18.2" +val minecraftVersion = "1.19" val nextMajorMinecraftVersion: String = minecraftVersion.split('.').let { (useless, major) -> "$useless.${major.toInt() + 1}" } -val forgeVersion = "40.0.18" +val forgeVersion = "41.0.1" val apiClasspath = configurations.create("apiClasspath") { isCanBeResolved = true extendsFrom(configurations.api.get()) } +repositories { + val forgeMaven = maven { + name = "Forge Maven" + url = uri("https://maven.minecraftforge.net/") + content { + includeGroupByRegex("net\\.minecraftforge(|\\..*)$") + } + } + remove(forgeMaven) + addFirst(forgeMaven) +} + dependencies { "api"(project(":worldedit-core")) "implementation"(platform("org.apache.logging.log4j:log4j-bom:${Versions.LOG4J}") { diff --git a/worldedit-forge/src/main/java/com/sk89q/worldedit/forge/ForgeDataFixer.java b/worldedit-forge/src/main/java/com/sk89q/worldedit/forge/ForgeDataFixer.java index 6ee717f9e0..43c2da74cd 100644 --- a/worldedit-forge/src/main/java/com/sk89q/worldedit/forge/ForgeDataFixer.java +++ b/worldedit-forge/src/main/java/com/sk89q/worldedit/forge/ForgeDataFixer.java @@ -44,7 +44,6 @@ import net.minecraft.nbt.Tag; import net.minecraft.network.chat.Component; import net.minecraft.network.chat.MutableComponent; -import net.minecraft.network.chat.TextComponent; import net.minecraft.resources.ResourceLocation; import net.minecraft.util.GsonHelper; import net.minecraft.util.StringUtil; @@ -221,7 +220,12 @@ public TypeReference getDFUType() { } @Override - public DataFixer build(final Executor executor) { + public DataFixer buildUnoptimized() { + return fixer; + } + + @Override + public DataFixer buildOptimized(Executor executor) { return fixer; } @@ -1864,12 +1868,12 @@ public net.minecraft.nbt.CompoundTag convert(net.minecraft.nbt.CompoundTag cmp) if (!"null".equals(s) && !StringUtil.isNullOrEmpty(s)) { if ((s.charAt(0) != 34 || s.charAt(s.length() - 1) != 34) && (s.charAt(0) != 123 || s.charAt(s.length() - 1) != 125)) { - object = new TextComponent(s); + object = Component.literal(s); } else { try { object = GsonHelper.fromJson(DataConverterSignText.a, s, Component.class, true); if (object == null) { - object = new TextComponent(""); + object = Component.literal(""); } } catch (JsonParseException jsonparseexception) { ; @@ -1892,11 +1896,11 @@ public net.minecraft.nbt.CompoundTag convert(net.minecraft.nbt.CompoundTag cmp) } if (object == null) { - object = new TextComponent(s); + object = Component.literal(s); } } } else { - object = new TextComponent(""); + object = Component.literal(""); } nbttaglist.set(i, StringTag.valueOf(Component.Serializer.toJson((Component) object))); @@ -2477,7 +2481,7 @@ private static class DataConverterSignText implements DataConverter { public static final Gson a = new GsonBuilder().registerTypeAdapter(Component.class, new JsonDeserializer() { MutableComponent a(JsonElement jsonelement, Type type, JsonDeserializationContext jsondeserializationcontext) throws JsonParseException { if (jsonelement.isJsonPrimitive()) { - return new TextComponent(jsonelement.getAsString()); + return Component.literal(jsonelement.getAsString()); } else if (jsonelement.isJsonArray()) { JsonArray jsonarray = jsonelement.getAsJsonArray(); MutableComponent iTextComponent = null; @@ -2529,12 +2533,12 @@ private void convert(net.minecraft.nbt.CompoundTag nbttagcompound, String s) { if (!"null".equals(s1) && !StringUtil.isNullOrEmpty(s1)) { if ((s1.charAt(0) != 34 || s1.charAt(s1.length() - 1) != 34) && (s1.charAt(0) != 123 || s1.charAt(s1.length() - 1) != 125)) { - object = new TextComponent(s1); + object = Component.literal(s1); } else { try { object = GsonHelper.fromJson(DataConverterSignText.a, s1, Component.class, true); if (object == null) { - object = new TextComponent(""); + object = Component.literal(""); } } catch (JsonParseException jsonparseexception) { ; @@ -2557,11 +2561,11 @@ private void convert(net.minecraft.nbt.CompoundTag nbttagcompound, String s) { } if (object == null) { - object = new TextComponent(s1); + object = Component.literal(s1); } } } else { - object = new TextComponent(""); + object = Component.literal(""); } nbttagcompound.putString(s, Component.Serializer.toJson((Component) object)); diff --git a/worldedit-forge/src/main/java/com/sk89q/worldedit/forge/ForgeEntity.java b/worldedit-forge/src/main/java/com/sk89q/worldedit/forge/ForgeEntity.java index 5106512a16..fce4329030 100644 --- a/worldedit-forge/src/main/java/com/sk89q/worldedit/forge/ForgeEntity.java +++ b/worldedit-forge/src/main/java/com/sk89q/worldedit/forge/ForgeEntity.java @@ -31,6 +31,7 @@ import net.minecraft.nbt.CompoundTag; import net.minecraft.resources.ResourceLocation; import net.minecraft.server.level.ServerLevel; +import net.minecraftforge.registries.ForgeRegistries; import java.lang.ref.WeakReference; import javax.annotation.Nullable; @@ -52,7 +53,7 @@ public BaseEntity getState() { if (entity == null || entity.isPassenger()) { return null; } - ResourceLocation id = entity.getType().getRegistryName(); + ResourceLocation id = ForgeRegistries.ENTITIES.getKey(entity.getType()); if (id == null) { return null; } diff --git a/worldedit-forge/src/main/java/com/sk89q/worldedit/forge/ForgePlayer.java b/worldedit-forge/src/main/java/com/sk89q/worldedit/forge/ForgePlayer.java index dbfce57204..aac2b8969c 100644 --- a/worldedit-forge/src/main/java/com/sk89q/worldedit/forge/ForgePlayer.java +++ b/worldedit-forge/src/main/java/com/sk89q/worldedit/forge/ForgePlayer.java @@ -42,11 +42,8 @@ import com.sk89q.worldedit.world.block.BlockTypes; import io.netty.buffer.Unpooled; import net.minecraft.ChatFormatting; -import net.minecraft.Util; import net.minecraft.core.BlockPos; import net.minecraft.network.FriendlyByteBuf; -import net.minecraft.network.chat.ChatType; -import net.minecraft.network.chat.TextComponent; import net.minecraft.network.protocol.game.ClientboundBlockEntityDataPacket; import net.minecraft.network.protocol.game.ClientboundBlockUpdatePacket; import net.minecraft.network.protocol.game.ClientboundCustomPayloadPacket; @@ -57,8 +54,6 @@ import net.minecraft.world.item.ItemStack; import net.minecraft.world.level.block.Blocks; import net.minecraft.world.level.block.entity.StructureBlockEntity; -import net.minecraftforge.common.MinecraftForge; -import net.minecraftforge.event.entity.EntityTravelToDimensionEvent; import java.nio.charset.StandardCharsets; import java.util.Locale; @@ -67,8 +62,6 @@ public class ForgePlayer extends AbstractPlayerActor { - // see ClientPlayNetHandler: search for "invalid update packet", lots of hardcoded consts - private static final int STRUCTURE_BLOCK_PACKET_ID = 7; private final ServerPlayer player; protected ForgePlayer(ServerPlayer player) { @@ -149,14 +142,14 @@ public void dispatchCUIEvent(CUIEvent event) { } private void sendMessage(net.minecraft.network.chat.Component textComponent) { - this.player.sendMessage(textComponent, ChatType.SYSTEM, Util.NIL_UUID); + this.player.sendSystemMessage(textComponent); } @Override @Deprecated public void printRaw(String msg) { for (String part : msg.split("\n")) { - sendMessage(new TextComponent(part)); + sendMessage(net.minecraft.network.chat.Component.literal(part)); } } @@ -187,7 +180,7 @@ public void print(Component component) { private void sendColorized(String msg, ChatFormatting formatting) { for (String part : msg.split("\n")) { - TextComponent component = new TextComponent(part); + var component = net.minecraft.network.chat.Component.literal(part); component.withStyle(formatting); sendMessage(component); } @@ -255,8 +248,7 @@ public > void sendFakeBlock(BlockVector3 pos, B bl player.connection.send(new ClientboundBlockUpdatePacket( loc, ForgeAdapter.adapt(block.toImmutableState()) )); - if (block instanceof BaseBlock && block.getBlockType().equals(BlockTypes.STRUCTURE_BLOCK)) { - final BaseBlock baseBlock = (BaseBlock) block; + if (block instanceof BaseBlock baseBlock && block.getBlockType().equals(BlockTypes.STRUCTURE_BLOCK)) { final CompoundTag nbtData = baseBlock.getNbtData(); if (nbtData != null) { player.connection.send(ClientboundBlockEntityDataPacket.create( diff --git a/worldedit-forge/src/main/java/com/sk89q/worldedit/forge/ForgeWorld.java b/worldedit-forge/src/main/java/com/sk89q/worldedit/forge/ForgeWorld.java index 6eaaefbc01..0a74b4b0f4 100644 --- a/worldedit-forge/src/main/java/com/sk89q/worldedit/forge/ForgeWorld.java +++ b/worldedit-forge/src/main/java/com/sk89q/worldedit/forge/ForgeWorld.java @@ -71,6 +71,7 @@ import net.minecraft.resources.ResourceLocation; import net.minecraft.server.level.ServerChunkCache; import net.minecraft.server.level.ServerLevel; +import net.minecraft.util.RandomSource; import net.minecraft.util.thread.BlockableEventLoop; import net.minecraft.world.Clearable; import net.minecraft.world.InteractionHand; @@ -97,7 +98,6 @@ import net.minecraft.world.level.storage.ServerLevelData; import net.minecraft.world.phys.AABB; import net.minecraft.world.phys.BlockHitResult; -import net.minecraftforge.fluids.IFluidBlock; import java.lang.ref.WeakReference; import java.nio.file.Files; @@ -109,7 +109,6 @@ import java.util.Objects; import java.util.Optional; import java.util.OptionalLong; -import java.util.Random; import java.util.Set; import java.util.concurrent.CompletableFuture; import java.util.concurrent.ExecutionException; @@ -124,7 +123,7 @@ */ public class ForgeWorld extends AbstractWorld { - private static final Random random = new Random(); + private static final RandomSource random = RandomSource.create(); private static ResourceLocation getDimensionRegistryKey(ServerLevel world) { return Objects.requireNonNull(world.getServer(), "server cannot be null") @@ -228,7 +227,7 @@ public boolean setBiome(BlockVector3 position, BiomeType biome) { checkNotNull(biome); LevelChunk chunk = getWorld().getChunk(position.getBlockX() >> 4, position.getBlockZ() >> 4); - PalettedContainer> biomes = chunk.getSection(chunk.getSectionIndex(position.getY())).getBiomes(); + var biomes = (PalettedContainer>) chunk.getSection(chunk.getSectionIndex(position.getY())).getBiomes(); biomes.getAndSetUnchecked( position.getX() & 3, position.getY() & 3, position.getZ() & 3, getWorld().registryAccess().registry(Registry.BIOME_REGISTRY) @@ -333,9 +332,11 @@ private void doRegen(Region region, Extent extent, RegenOptions options) throws originalWorld.getServer(), Util.backgroundExecutor(), session, ((ServerLevelData) originalWorld.getLevelData()), worldRegKey, - originalWorld.dimensionTypeRegistration(), + new LevelStem( + originalWorld.dimensionTypeRegistration(), + dimGenOpts.generator() + ), new WorldEditGenListener(), - dimGenOpts.generator(), originalWorld.isDebug(), seed, // No spawners are needed for this world. diff --git a/worldedit-forge/src/main/java/com/sk89q/worldedit/forge/ForgeWorldEdit.java b/worldedit-forge/src/main/java/com/sk89q/worldedit/forge/ForgeWorldEdit.java index 3cba00de79..6cb2c2b3ae 100644 --- a/worldedit-forge/src/main/java/com/sk89q/worldedit/forge/ForgeWorldEdit.java +++ b/worldedit-forge/src/main/java/com/sk89q/worldedit/forge/ForgeWorldEdit.java @@ -337,7 +337,7 @@ public void onCommandEvent(CommandEvent event) throws CommandSyntaxException { event.setCanceled(true); WorldEdit.getInstance().getEventBus().post(new com.sk89q.worldedit.event.platform.CommandEvent( adaptPlayer(parseResults.getContext().getSource().getPlayerOrException()), - parseResults.getReader().getString() + "/" + parseResults.getReader().getString() )); } From d3ab1e5783a066e0439d66d9d1dc6549add92293 Mon Sep 17 00:00:00 2001 From: Octavia Togami Date: Tue, 7 Jun 2022 21:29:03 -0700 Subject: [PATCH 53/55] 1.19 data updates --- .../com/sk89q/worldedit/cli/data/3105.json | 1 + .../extent/reorder/MultiStageReorder.java | 8 +- .../sk89q/worldedit/internal/Constants.java | 5 + .../worldedit/world/biome/BiomeTypes.java | 93 +++++++++++-------- .../world/block/BlockCategories.java | 40 +++++++- .../worldedit/world/block/BlockTypes.java | 35 +++++++ .../worldedit/world/entity/EntityTypes.java | 5 + .../worldedit/world/item/ItemCategories.java | 14 ++- .../sk89q/worldedit/world/item/ItemTypes.java | 52 +++++++++++ .../world/registry/BundledBlockData.java | 25 +---- .../world/registry/BundledItemData.java | 25 +---- .../world/registry/BundledRegistries.java | 42 +++++++++ .../worldedit/world/registry/blocks.119.json | 1 + .../worldedit/world/registry/blocks.json | 2 +- .../worldedit/world/registry/items.119.json | 1 + 15 files changed, 258 insertions(+), 91 deletions(-) create mode 100644 worldedit-cli/src/main/resources/com/sk89q/worldedit/cli/data/3105.json create mode 100644 worldedit-core/src/main/resources/com/sk89q/worldedit/world/registry/blocks.119.json create mode 100644 worldedit-core/src/main/resources/com/sk89q/worldedit/world/registry/items.119.json diff --git a/worldedit-cli/src/main/resources/com/sk89q/worldedit/cli/data/3105.json b/worldedit-cli/src/main/resources/com/sk89q/worldedit/cli/data/3105.json new file mode 100644 index 0000000000..4d1436e84a --- /dev/null +++ b/worldedit-cli/src/main/resources/com/sk89q/worldedit/cli/data/3105.json @@ -0,0 +1 @@ +{"biomes":["minecraft:badlands","minecraft:bamboo_jungle","minecraft:basalt_deltas","minecraft:beach","minecraft:birch_forest","minecraft:cold_ocean","minecraft:crimson_forest","minecraft:dark_forest","minecraft:deep_cold_ocean","minecraft:deep_dark","minecraft:deep_frozen_ocean","minecraft:deep_lukewarm_ocean","minecraft:deep_ocean","minecraft:desert","minecraft:dripstone_caves","minecraft:end_barrens","minecraft:end_highlands","minecraft:end_midlands","minecraft:eroded_badlands","minecraft:flower_forest","minecraft:forest","minecraft:frozen_ocean","minecraft:frozen_peaks","minecraft:frozen_river","minecraft:grove","minecraft:ice_spikes","minecraft:jagged_peaks","minecraft:jungle","minecraft:lukewarm_ocean","minecraft:lush_caves","minecraft:mangrove_swamp","minecraft:meadow","minecraft:mushroom_fields","minecraft:nether_wastes","minecraft:ocean","minecraft:old_growth_birch_forest","minecraft:old_growth_pine_taiga","minecraft:old_growth_spruce_taiga","minecraft:plains","minecraft:river","minecraft:savanna","minecraft:savanna_plateau","minecraft:small_end_islands","minecraft:snowy_beach","minecraft:snowy_plains","minecraft:snowy_slopes","minecraft:snowy_taiga","minecraft:soul_sand_valley","minecraft:sparse_jungle","minecraft:stony_peaks","minecraft:stony_shore","minecraft:sunflower_plains","minecraft:swamp","minecraft:taiga","minecraft:the_end","minecraft:the_void","minecraft:warm_ocean","minecraft:warped_forest","minecraft:windswept_forest","minecraft:windswept_gravelly_hills","minecraft:windswept_hills","minecraft:windswept_savanna","minecraft:wooded_badlands"],"blocks":{"minecraft:acacia_button":{"defaultstate":"minecraft:acacia_button[face=wall,facing=north,powered=false]","properties":{"face":{"type":"enum","values":["floor","wall","ceiling"]},"facing":{"type":"direction","values":["north","south","west","east"]},"powered":{"type":"bool","values":["true","false"]}}},"minecraft:acacia_door":{"defaultstate":"minecraft:acacia_door[facing=north,half=lower,hinge=left,open=false,powered=false]","properties":{"facing":{"type":"direction","values":["north","south","west","east"]},"half":{"type":"enum","values":["upper","lower"]},"hinge":{"type":"enum","values":["left","right"]},"open":{"type":"bool","values":["true","false"]},"powered":{"type":"bool","values":["true","false"]}}},"minecraft:acacia_fence":{"defaultstate":"minecraft:acacia_fence[east=false,north=false,south=false,waterlogged=false,west=false]","properties":{"east":{"type":"bool","values":["true","false"]},"north":{"type":"bool","values":["true","false"]},"south":{"type":"bool","values":["true","false"]},"waterlogged":{"type":"bool","values":["true","false"]},"west":{"type":"bool","values":["true","false"]}}},"minecraft:acacia_fence_gate":{"defaultstate":"minecraft:acacia_fence_gate[facing=north,in_wall=false,open=false,powered=false]","properties":{"facing":{"type":"direction","values":["north","south","west","east"]},"in_wall":{"type":"bool","values":["true","false"]},"open":{"type":"bool","values":["true","false"]},"powered":{"type":"bool","values":["true","false"]}}},"minecraft:acacia_leaves":{"defaultstate":"minecraft:acacia_leaves[distance=7,persistent=false,waterlogged=false]","properties":{"distance":{"type":"int","values":["1","2","3","4","5","6","7"]},"persistent":{"type":"bool","values":["true","false"]},"waterlogged":{"type":"bool","values":["true","false"]}}},"minecraft:acacia_log":{"defaultstate":"minecraft:acacia_log[axis=y]","properties":{"axis":{"type":"enum","values":["x","y","z"]}}},"minecraft:acacia_planks":{"defaultstate":"minecraft:acacia_planks","properties":{}},"minecraft:acacia_pressure_plate":{"defaultstate":"minecraft:acacia_pressure_plate[powered=false]","properties":{"powered":{"type":"bool","values":["true","false"]}}},"minecraft:acacia_sapling":{"defaultstate":"minecraft:acacia_sapling[stage=0]","properties":{"stage":{"type":"int","values":["0","1"]}}},"minecraft:acacia_sign":{"defaultstate":"minecraft:acacia_sign[rotation=0,waterlogged=false]","properties":{"rotation":{"type":"int","values":["0","1","2","3","4","5","6","7","8","9","10","11","12","13","14","15"]},"waterlogged":{"type":"bool","values":["true","false"]}}},"minecraft:acacia_slab":{"defaultstate":"minecraft:acacia_slab[type=bottom,waterlogged=false]","properties":{"type":{"type":"enum","values":["top","bottom","double"]},"waterlogged":{"type":"bool","values":["true","false"]}}},"minecraft:acacia_stairs":{"defaultstate":"minecraft:acacia_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]","properties":{"facing":{"type":"direction","values":["north","south","west","east"]},"half":{"type":"enum","values":["top","bottom"]},"shape":{"type":"enum","values":["straight","inner_left","inner_right","outer_left","outer_right"]},"waterlogged":{"type":"bool","values":["true","false"]}}},"minecraft:acacia_trapdoor":{"defaultstate":"minecraft:acacia_trapdoor[facing=north,half=bottom,open=false,powered=false,waterlogged=false]","properties":{"facing":{"type":"direction","values":["north","south","west","east"]},"half":{"type":"enum","values":["top","bottom"]},"open":{"type":"bool","values":["true","false"]},"powered":{"type":"bool","values":["true","false"]},"waterlogged":{"type":"bool","values":["true","false"]}}},"minecraft:acacia_wall_sign":{"defaultstate":"minecraft:acacia_wall_sign[facing=north,waterlogged=false]","properties":{"facing":{"type":"direction","values":["north","south","west","east"]},"waterlogged":{"type":"bool","values":["true","false"]}}},"minecraft:acacia_wood":{"defaultstate":"minecraft:acacia_wood[axis=y]","properties":{"axis":{"type":"enum","values":["x","y","z"]}}},"minecraft:activator_rail":{"defaultstate":"minecraft:activator_rail[powered=false,shape=north_south,waterlogged=false]","properties":{"powered":{"type":"bool","values":["true","false"]},"shape":{"type":"enum","values":["north_south","east_west","ascending_east","ascending_west","ascending_north","ascending_south"]},"waterlogged":{"type":"bool","values":["true","false"]}}},"minecraft:air":{"defaultstate":"minecraft:air","properties":{}},"minecraft:allium":{"defaultstate":"minecraft:allium","properties":{}},"minecraft:amethyst_block":{"defaultstate":"minecraft:amethyst_block","properties":{}},"minecraft:amethyst_cluster":{"defaultstate":"minecraft:amethyst_cluster[facing=up,waterlogged=false]","properties":{"facing":{"type":"direction","values":["north","east","south","west","up","down"]},"waterlogged":{"type":"bool","values":["true","false"]}}},"minecraft:ancient_debris":{"defaultstate":"minecraft:ancient_debris","properties":{}},"minecraft:andesite":{"defaultstate":"minecraft:andesite","properties":{}},"minecraft:andesite_slab":{"defaultstate":"minecraft:andesite_slab[type=bottom,waterlogged=false]","properties":{"type":{"type":"enum","values":["top","bottom","double"]},"waterlogged":{"type":"bool","values":["true","false"]}}},"minecraft:andesite_stairs":{"defaultstate":"minecraft:andesite_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]","properties":{"facing":{"type":"direction","values":["north","south","west","east"]},"half":{"type":"enum","values":["top","bottom"]},"shape":{"type":"enum","values":["straight","inner_left","inner_right","outer_left","outer_right"]},"waterlogged":{"type":"bool","values":["true","false"]}}},"minecraft:andesite_wall":{"defaultstate":"minecraft:andesite_wall[east=none,north=none,south=none,up=true,waterlogged=false,west=none]","properties":{"east":{"type":"enum","values":["none","low","tall"]},"north":{"type":"enum","values":["none","low","tall"]},"south":{"type":"enum","values":["none","low","tall"]},"up":{"type":"bool","values":["true","false"]},"waterlogged":{"type":"bool","values":["true","false"]},"west":{"type":"enum","values":["none","low","tall"]}}},"minecraft:anvil":{"defaultstate":"minecraft:anvil[facing=north]","properties":{"facing":{"type":"direction","values":["north","south","west","east"]}}},"minecraft:attached_melon_stem":{"defaultstate":"minecraft:attached_melon_stem[facing=north]","properties":{"facing":{"type":"direction","values":["north","south","west","east"]}}},"minecraft:attached_pumpkin_stem":{"defaultstate":"minecraft:attached_pumpkin_stem[facing=north]","properties":{"facing":{"type":"direction","values":["north","south","west","east"]}}},"minecraft:azalea":{"defaultstate":"minecraft:azalea","properties":{}},"minecraft:azalea_leaves":{"defaultstate":"minecraft:azalea_leaves[distance=7,persistent=false,waterlogged=false]","properties":{"distance":{"type":"int","values":["1","2","3","4","5","6","7"]},"persistent":{"type":"bool","values":["true","false"]},"waterlogged":{"type":"bool","values":["true","false"]}}},"minecraft:azure_bluet":{"defaultstate":"minecraft:azure_bluet","properties":{}},"minecraft:bamboo":{"defaultstate":"minecraft:bamboo[age=0,leaves=none,stage=0]","properties":{"age":{"type":"int","values":["0","1"]},"leaves":{"type":"enum","values":["none","small","large"]},"stage":{"type":"int","values":["0","1"]}}},"minecraft:bamboo_sapling":{"defaultstate":"minecraft:bamboo_sapling","properties":{}},"minecraft:barrel":{"defaultstate":"minecraft:barrel[facing=north,open=false]","properties":{"facing":{"type":"direction","values":["north","east","south","west","up","down"]},"open":{"type":"bool","values":["true","false"]}}},"minecraft:barrier":{"defaultstate":"minecraft:barrier","properties":{}},"minecraft:basalt":{"defaultstate":"minecraft:basalt[axis=y]","properties":{"axis":{"type":"enum","values":["x","y","z"]}}},"minecraft:beacon":{"defaultstate":"minecraft:beacon","properties":{}},"minecraft:bedrock":{"defaultstate":"minecraft:bedrock","properties":{}},"minecraft:bee_nest":{"defaultstate":"minecraft:bee_nest[facing=north,honey_level=0]","properties":{"facing":{"type":"direction","values":["north","south","west","east"]},"honey_level":{"type":"int","values":["0","1","2","3","4","5"]}}},"minecraft:beehive":{"defaultstate":"minecraft:beehive[facing=north,honey_level=0]","properties":{"facing":{"type":"direction","values":["north","south","west","east"]},"honey_level":{"type":"int","values":["0","1","2","3","4","5"]}}},"minecraft:beetroots":{"defaultstate":"minecraft:beetroots[age=0]","properties":{"age":{"type":"int","values":["0","1","2","3"]}}},"minecraft:bell":{"defaultstate":"minecraft:bell[attachment=floor,facing=north,powered=false]","properties":{"attachment":{"type":"enum","values":["floor","ceiling","single_wall","double_wall"]},"facing":{"type":"direction","values":["north","south","west","east"]},"powered":{"type":"bool","values":["true","false"]}}},"minecraft:big_dripleaf":{"defaultstate":"minecraft:big_dripleaf[facing=north,tilt=none,waterlogged=false]","properties":{"facing":{"type":"direction","values":["north","south","west","east"]},"tilt":{"type":"enum","values":["none","unstable","partial","full"]},"waterlogged":{"type":"bool","values":["true","false"]}}},"minecraft:big_dripleaf_stem":{"defaultstate":"minecraft:big_dripleaf_stem[facing=north,waterlogged=false]","properties":{"facing":{"type":"direction","values":["north","south","west","east"]},"waterlogged":{"type":"bool","values":["true","false"]}}},"minecraft:birch_button":{"defaultstate":"minecraft:birch_button[face=wall,facing=north,powered=false]","properties":{"face":{"type":"enum","values":["floor","wall","ceiling"]},"facing":{"type":"direction","values":["north","south","west","east"]},"powered":{"type":"bool","values":["true","false"]}}},"minecraft:birch_door":{"defaultstate":"minecraft:birch_door[facing=north,half=lower,hinge=left,open=false,powered=false]","properties":{"facing":{"type":"direction","values":["north","south","west","east"]},"half":{"type":"enum","values":["upper","lower"]},"hinge":{"type":"enum","values":["left","right"]},"open":{"type":"bool","values":["true","false"]},"powered":{"type":"bool","values":["true","false"]}}},"minecraft:birch_fence":{"defaultstate":"minecraft:birch_fence[east=false,north=false,south=false,waterlogged=false,west=false]","properties":{"east":{"type":"bool","values":["true","false"]},"north":{"type":"bool","values":["true","false"]},"south":{"type":"bool","values":["true","false"]},"waterlogged":{"type":"bool","values":["true","false"]},"west":{"type":"bool","values":["true","false"]}}},"minecraft:birch_fence_gate":{"defaultstate":"minecraft:birch_fence_gate[facing=north,in_wall=false,open=false,powered=false]","properties":{"facing":{"type":"direction","values":["north","south","west","east"]},"in_wall":{"type":"bool","values":["true","false"]},"open":{"type":"bool","values":["true","false"]},"powered":{"type":"bool","values":["true","false"]}}},"minecraft:birch_leaves":{"defaultstate":"minecraft:birch_leaves[distance=7,persistent=false,waterlogged=false]","properties":{"distance":{"type":"int","values":["1","2","3","4","5","6","7"]},"persistent":{"type":"bool","values":["true","false"]},"waterlogged":{"type":"bool","values":["true","false"]}}},"minecraft:birch_log":{"defaultstate":"minecraft:birch_log[axis=y]","properties":{"axis":{"type":"enum","values":["x","y","z"]}}},"minecraft:birch_planks":{"defaultstate":"minecraft:birch_planks","properties":{}},"minecraft:birch_pressure_plate":{"defaultstate":"minecraft:birch_pressure_plate[powered=false]","properties":{"powered":{"type":"bool","values":["true","false"]}}},"minecraft:birch_sapling":{"defaultstate":"minecraft:birch_sapling[stage=0]","properties":{"stage":{"type":"int","values":["0","1"]}}},"minecraft:birch_sign":{"defaultstate":"minecraft:birch_sign[rotation=0,waterlogged=false]","properties":{"rotation":{"type":"int","values":["0","1","2","3","4","5","6","7","8","9","10","11","12","13","14","15"]},"waterlogged":{"type":"bool","values":["true","false"]}}},"minecraft:birch_slab":{"defaultstate":"minecraft:birch_slab[type=bottom,waterlogged=false]","properties":{"type":{"type":"enum","values":["top","bottom","double"]},"waterlogged":{"type":"bool","values":["true","false"]}}},"minecraft:birch_stairs":{"defaultstate":"minecraft:birch_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]","properties":{"facing":{"type":"direction","values":["north","south","west","east"]},"half":{"type":"enum","values":["top","bottom"]},"shape":{"type":"enum","values":["straight","inner_left","inner_right","outer_left","outer_right"]},"waterlogged":{"type":"bool","values":["true","false"]}}},"minecraft:birch_trapdoor":{"defaultstate":"minecraft:birch_trapdoor[facing=north,half=bottom,open=false,powered=false,waterlogged=false]","properties":{"facing":{"type":"direction","values":["north","south","west","east"]},"half":{"type":"enum","values":["top","bottom"]},"open":{"type":"bool","values":["true","false"]},"powered":{"type":"bool","values":["true","false"]},"waterlogged":{"type":"bool","values":["true","false"]}}},"minecraft:birch_wall_sign":{"defaultstate":"minecraft:birch_wall_sign[facing=north,waterlogged=false]","properties":{"facing":{"type":"direction","values":["north","south","west","east"]},"waterlogged":{"type":"bool","values":["true","false"]}}},"minecraft:birch_wood":{"defaultstate":"minecraft:birch_wood[axis=y]","properties":{"axis":{"type":"enum","values":["x","y","z"]}}},"minecraft:black_banner":{"defaultstate":"minecraft:black_banner[rotation=0]","properties":{"rotation":{"type":"int","values":["0","1","2","3","4","5","6","7","8","9","10","11","12","13","14","15"]}}},"minecraft:black_bed":{"defaultstate":"minecraft:black_bed[facing=north,occupied=false,part=foot]","properties":{"facing":{"type":"direction","values":["north","south","west","east"]},"occupied":{"type":"bool","values":["true","false"]},"part":{"type":"enum","values":["head","foot"]}}},"minecraft:black_candle":{"defaultstate":"minecraft:black_candle[candles=1,lit=false,waterlogged=false]","properties":{"candles":{"type":"int","values":["1","2","3","4"]},"lit":{"type":"bool","values":["true","false"]},"waterlogged":{"type":"bool","values":["true","false"]}}},"minecraft:black_candle_cake":{"defaultstate":"minecraft:black_candle_cake[lit=false]","properties":{"lit":{"type":"bool","values":["true","false"]}}},"minecraft:black_carpet":{"defaultstate":"minecraft:black_carpet","properties":{}},"minecraft:black_concrete":{"defaultstate":"minecraft:black_concrete","properties":{}},"minecraft:black_concrete_powder":{"defaultstate":"minecraft:black_concrete_powder","properties":{}},"minecraft:black_glazed_terracotta":{"defaultstate":"minecraft:black_glazed_terracotta[facing=north]","properties":{"facing":{"type":"direction","values":["north","south","west","east"]}}},"minecraft:black_shulker_box":{"defaultstate":"minecraft:black_shulker_box[facing=up]","properties":{"facing":{"type":"direction","values":["north","east","south","west","up","down"]}}},"minecraft:black_stained_glass":{"defaultstate":"minecraft:black_stained_glass","properties":{}},"minecraft:black_stained_glass_pane":{"defaultstate":"minecraft:black_stained_glass_pane[east=false,north=false,south=false,waterlogged=false,west=false]","properties":{"east":{"type":"bool","values":["true","false"]},"north":{"type":"bool","values":["true","false"]},"south":{"type":"bool","values":["true","false"]},"waterlogged":{"type":"bool","values":["true","false"]},"west":{"type":"bool","values":["true","false"]}}},"minecraft:black_terracotta":{"defaultstate":"minecraft:black_terracotta","properties":{}},"minecraft:black_wall_banner":{"defaultstate":"minecraft:black_wall_banner[facing=north]","properties":{"facing":{"type":"direction","values":["north","south","west","east"]}}},"minecraft:black_wool":{"defaultstate":"minecraft:black_wool","properties":{}},"minecraft:blackstone":{"defaultstate":"minecraft:blackstone","properties":{}},"minecraft:blackstone_slab":{"defaultstate":"minecraft:blackstone_slab[type=bottom,waterlogged=false]","properties":{"type":{"type":"enum","values":["top","bottom","double"]},"waterlogged":{"type":"bool","values":["true","false"]}}},"minecraft:blackstone_stairs":{"defaultstate":"minecraft:blackstone_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]","properties":{"facing":{"type":"direction","values":["north","south","west","east"]},"half":{"type":"enum","values":["top","bottom"]},"shape":{"type":"enum","values":["straight","inner_left","inner_right","outer_left","outer_right"]},"waterlogged":{"type":"bool","values":["true","false"]}}},"minecraft:blackstone_wall":{"defaultstate":"minecraft:blackstone_wall[east=none,north=none,south=none,up=true,waterlogged=false,west=none]","properties":{"east":{"type":"enum","values":["none","low","tall"]},"north":{"type":"enum","values":["none","low","tall"]},"south":{"type":"enum","values":["none","low","tall"]},"up":{"type":"bool","values":["true","false"]},"waterlogged":{"type":"bool","values":["true","false"]},"west":{"type":"enum","values":["none","low","tall"]}}},"minecraft:blast_furnace":{"defaultstate":"minecraft:blast_furnace[facing=north,lit=false]","properties":{"facing":{"type":"direction","values":["north","south","west","east"]},"lit":{"type":"bool","values":["true","false"]}}},"minecraft:blue_banner":{"defaultstate":"minecraft:blue_banner[rotation=0]","properties":{"rotation":{"type":"int","values":["0","1","2","3","4","5","6","7","8","9","10","11","12","13","14","15"]}}},"minecraft:blue_bed":{"defaultstate":"minecraft:blue_bed[facing=north,occupied=false,part=foot]","properties":{"facing":{"type":"direction","values":["north","south","west","east"]},"occupied":{"type":"bool","values":["true","false"]},"part":{"type":"enum","values":["head","foot"]}}},"minecraft:blue_candle":{"defaultstate":"minecraft:blue_candle[candles=1,lit=false,waterlogged=false]","properties":{"candles":{"type":"int","values":["1","2","3","4"]},"lit":{"type":"bool","values":["true","false"]},"waterlogged":{"type":"bool","values":["true","false"]}}},"minecraft:blue_candle_cake":{"defaultstate":"minecraft:blue_candle_cake[lit=false]","properties":{"lit":{"type":"bool","values":["true","false"]}}},"minecraft:blue_carpet":{"defaultstate":"minecraft:blue_carpet","properties":{}},"minecraft:blue_concrete":{"defaultstate":"minecraft:blue_concrete","properties":{}},"minecraft:blue_concrete_powder":{"defaultstate":"minecraft:blue_concrete_powder","properties":{}},"minecraft:blue_glazed_terracotta":{"defaultstate":"minecraft:blue_glazed_terracotta[facing=north]","properties":{"facing":{"type":"direction","values":["north","south","west","east"]}}},"minecraft:blue_ice":{"defaultstate":"minecraft:blue_ice","properties":{}},"minecraft:blue_orchid":{"defaultstate":"minecraft:blue_orchid","properties":{}},"minecraft:blue_shulker_box":{"defaultstate":"minecraft:blue_shulker_box[facing=up]","properties":{"facing":{"type":"direction","values":["north","east","south","west","up","down"]}}},"minecraft:blue_stained_glass":{"defaultstate":"minecraft:blue_stained_glass","properties":{}},"minecraft:blue_stained_glass_pane":{"defaultstate":"minecraft:blue_stained_glass_pane[east=false,north=false,south=false,waterlogged=false,west=false]","properties":{"east":{"type":"bool","values":["true","false"]},"north":{"type":"bool","values":["true","false"]},"south":{"type":"bool","values":["true","false"]},"waterlogged":{"type":"bool","values":["true","false"]},"west":{"type":"bool","values":["true","false"]}}},"minecraft:blue_terracotta":{"defaultstate":"minecraft:blue_terracotta","properties":{}},"minecraft:blue_wall_banner":{"defaultstate":"minecraft:blue_wall_banner[facing=north]","properties":{"facing":{"type":"direction","values":["north","south","west","east"]}}},"minecraft:blue_wool":{"defaultstate":"minecraft:blue_wool","properties":{}},"minecraft:bone_block":{"defaultstate":"minecraft:bone_block[axis=y]","properties":{"axis":{"type":"enum","values":["x","y","z"]}}},"minecraft:bookshelf":{"defaultstate":"minecraft:bookshelf","properties":{}},"minecraft:brain_coral":{"defaultstate":"minecraft:brain_coral[waterlogged=true]","properties":{"waterlogged":{"type":"bool","values":["true","false"]}}},"minecraft:brain_coral_block":{"defaultstate":"minecraft:brain_coral_block","properties":{}},"minecraft:brain_coral_fan":{"defaultstate":"minecraft:brain_coral_fan[waterlogged=true]","properties":{"waterlogged":{"type":"bool","values":["true","false"]}}},"minecraft:brain_coral_wall_fan":{"defaultstate":"minecraft:brain_coral_wall_fan[facing=north,waterlogged=true]","properties":{"facing":{"type":"direction","values":["north","south","west","east"]},"waterlogged":{"type":"bool","values":["true","false"]}}},"minecraft:brewing_stand":{"defaultstate":"minecraft:brewing_stand[has_bottle_0=false,has_bottle_1=false,has_bottle_2=false]","properties":{"has_bottle_0":{"type":"bool","values":["true","false"]},"has_bottle_1":{"type":"bool","values":["true","false"]},"has_bottle_2":{"type":"bool","values":["true","false"]}}},"minecraft:brick_slab":{"defaultstate":"minecraft:brick_slab[type=bottom,waterlogged=false]","properties":{"type":{"type":"enum","values":["top","bottom","double"]},"waterlogged":{"type":"bool","values":["true","false"]}}},"minecraft:brick_stairs":{"defaultstate":"minecraft:brick_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]","properties":{"facing":{"type":"direction","values":["north","south","west","east"]},"half":{"type":"enum","values":["top","bottom"]},"shape":{"type":"enum","values":["straight","inner_left","inner_right","outer_left","outer_right"]},"waterlogged":{"type":"bool","values":["true","false"]}}},"minecraft:brick_wall":{"defaultstate":"minecraft:brick_wall[east=none,north=none,south=none,up=true,waterlogged=false,west=none]","properties":{"east":{"type":"enum","values":["none","low","tall"]},"north":{"type":"enum","values":["none","low","tall"]},"south":{"type":"enum","values":["none","low","tall"]},"up":{"type":"bool","values":["true","false"]},"waterlogged":{"type":"bool","values":["true","false"]},"west":{"type":"enum","values":["none","low","tall"]}}},"minecraft:bricks":{"defaultstate":"minecraft:bricks","properties":{}},"minecraft:brown_banner":{"defaultstate":"minecraft:brown_banner[rotation=0]","properties":{"rotation":{"type":"int","values":["0","1","2","3","4","5","6","7","8","9","10","11","12","13","14","15"]}}},"minecraft:brown_bed":{"defaultstate":"minecraft:brown_bed[facing=north,occupied=false,part=foot]","properties":{"facing":{"type":"direction","values":["north","south","west","east"]},"occupied":{"type":"bool","values":["true","false"]},"part":{"type":"enum","values":["head","foot"]}}},"minecraft:brown_candle":{"defaultstate":"minecraft:brown_candle[candles=1,lit=false,waterlogged=false]","properties":{"candles":{"type":"int","values":["1","2","3","4"]},"lit":{"type":"bool","values":["true","false"]},"waterlogged":{"type":"bool","values":["true","false"]}}},"minecraft:brown_candle_cake":{"defaultstate":"minecraft:brown_candle_cake[lit=false]","properties":{"lit":{"type":"bool","values":["true","false"]}}},"minecraft:brown_carpet":{"defaultstate":"minecraft:brown_carpet","properties":{}},"minecraft:brown_concrete":{"defaultstate":"minecraft:brown_concrete","properties":{}},"minecraft:brown_concrete_powder":{"defaultstate":"minecraft:brown_concrete_powder","properties":{}},"minecraft:brown_glazed_terracotta":{"defaultstate":"minecraft:brown_glazed_terracotta[facing=north]","properties":{"facing":{"type":"direction","values":["north","south","west","east"]}}},"minecraft:brown_mushroom":{"defaultstate":"minecraft:brown_mushroom","properties":{}},"minecraft:brown_mushroom_block":{"defaultstate":"minecraft:brown_mushroom_block[down=true,east=true,north=true,south=true,up=true,west=true]","properties":{"down":{"type":"bool","values":["true","false"]},"east":{"type":"bool","values":["true","false"]},"north":{"type":"bool","values":["true","false"]},"south":{"type":"bool","values":["true","false"]},"up":{"type":"bool","values":["true","false"]},"west":{"type":"bool","values":["true","false"]}}},"minecraft:brown_shulker_box":{"defaultstate":"minecraft:brown_shulker_box[facing=up]","properties":{"facing":{"type":"direction","values":["north","east","south","west","up","down"]}}},"minecraft:brown_stained_glass":{"defaultstate":"minecraft:brown_stained_glass","properties":{}},"minecraft:brown_stained_glass_pane":{"defaultstate":"minecraft:brown_stained_glass_pane[east=false,north=false,south=false,waterlogged=false,west=false]","properties":{"east":{"type":"bool","values":["true","false"]},"north":{"type":"bool","values":["true","false"]},"south":{"type":"bool","values":["true","false"]},"waterlogged":{"type":"bool","values":["true","false"]},"west":{"type":"bool","values":["true","false"]}}},"minecraft:brown_terracotta":{"defaultstate":"minecraft:brown_terracotta","properties":{}},"minecraft:brown_wall_banner":{"defaultstate":"minecraft:brown_wall_banner[facing=north]","properties":{"facing":{"type":"direction","values":["north","south","west","east"]}}},"minecraft:brown_wool":{"defaultstate":"minecraft:brown_wool","properties":{}},"minecraft:bubble_column":{"defaultstate":"minecraft:bubble_column[drag=true]","properties":{"drag":{"type":"bool","values":["true","false"]}}},"minecraft:bubble_coral":{"defaultstate":"minecraft:bubble_coral[waterlogged=true]","properties":{"waterlogged":{"type":"bool","values":["true","false"]}}},"minecraft:bubble_coral_block":{"defaultstate":"minecraft:bubble_coral_block","properties":{}},"minecraft:bubble_coral_fan":{"defaultstate":"minecraft:bubble_coral_fan[waterlogged=true]","properties":{"waterlogged":{"type":"bool","values":["true","false"]}}},"minecraft:bubble_coral_wall_fan":{"defaultstate":"minecraft:bubble_coral_wall_fan[facing=north,waterlogged=true]","properties":{"facing":{"type":"direction","values":["north","south","west","east"]},"waterlogged":{"type":"bool","values":["true","false"]}}},"minecraft:budding_amethyst":{"defaultstate":"minecraft:budding_amethyst","properties":{}},"minecraft:cactus":{"defaultstate":"minecraft:cactus[age=0]","properties":{"age":{"type":"int","values":["0","1","2","3","4","5","6","7","8","9","10","11","12","13","14","15"]}}},"minecraft:cake":{"defaultstate":"minecraft:cake[bites=0]","properties":{"bites":{"type":"int","values":["0","1","2","3","4","5","6"]}}},"minecraft:calcite":{"defaultstate":"minecraft:calcite","properties":{}},"minecraft:campfire":{"defaultstate":"minecraft:campfire[facing=north,lit=true,signal_fire=false,waterlogged=false]","properties":{"facing":{"type":"direction","values":["north","south","west","east"]},"lit":{"type":"bool","values":["true","false"]},"signal_fire":{"type":"bool","values":["true","false"]},"waterlogged":{"type":"bool","values":["true","false"]}}},"minecraft:candle":{"defaultstate":"minecraft:candle[candles=1,lit=false,waterlogged=false]","properties":{"candles":{"type":"int","values":["1","2","3","4"]},"lit":{"type":"bool","values":["true","false"]},"waterlogged":{"type":"bool","values":["true","false"]}}},"minecraft:candle_cake":{"defaultstate":"minecraft:candle_cake[lit=false]","properties":{"lit":{"type":"bool","values":["true","false"]}}},"minecraft:carrots":{"defaultstate":"minecraft:carrots[age=0]","properties":{"age":{"type":"int","values":["0","1","2","3","4","5","6","7"]}}},"minecraft:cartography_table":{"defaultstate":"minecraft:cartography_table","properties":{}},"minecraft:carved_pumpkin":{"defaultstate":"minecraft:carved_pumpkin[facing=north]","properties":{"facing":{"type":"direction","values":["north","south","west","east"]}}},"minecraft:cauldron":{"defaultstate":"minecraft:cauldron","properties":{}},"minecraft:cave_air":{"defaultstate":"minecraft:cave_air","properties":{}},"minecraft:cave_vines":{"defaultstate":"minecraft:cave_vines[age=0,berries=false]","properties":{"age":{"type":"int","values":["0","1","2","3","4","5","6","7","8","9","10","11","12","13","14","15","16","17","18","19","20","21","22","23","24","25"]},"berries":{"type":"bool","values":["true","false"]}}},"minecraft:cave_vines_plant":{"defaultstate":"minecraft:cave_vines_plant[berries=false]","properties":{"berries":{"type":"bool","values":["true","false"]}}},"minecraft:chain":{"defaultstate":"minecraft:chain[axis=y,waterlogged=false]","properties":{"axis":{"type":"enum","values":["x","y","z"]},"waterlogged":{"type":"bool","values":["true","false"]}}},"minecraft:chain_command_block":{"defaultstate":"minecraft:chain_command_block[conditional=false,facing=north]","properties":{"conditional":{"type":"bool","values":["true","false"]},"facing":{"type":"direction","values":["north","east","south","west","up","down"]}}},"minecraft:chest":{"defaultstate":"minecraft:chest[facing=north,type=single,waterlogged=false]","properties":{"facing":{"type":"direction","values":["north","south","west","east"]},"type":{"type":"enum","values":["single","left","right"]},"waterlogged":{"type":"bool","values":["true","false"]}}},"minecraft:chipped_anvil":{"defaultstate":"minecraft:chipped_anvil[facing=north]","properties":{"facing":{"type":"direction","values":["north","south","west","east"]}}},"minecraft:chiseled_deepslate":{"defaultstate":"minecraft:chiseled_deepslate","properties":{}},"minecraft:chiseled_nether_bricks":{"defaultstate":"minecraft:chiseled_nether_bricks","properties":{}},"minecraft:chiseled_polished_blackstone":{"defaultstate":"minecraft:chiseled_polished_blackstone","properties":{}},"minecraft:chiseled_quartz_block":{"defaultstate":"minecraft:chiseled_quartz_block","properties":{}},"minecraft:chiseled_red_sandstone":{"defaultstate":"minecraft:chiseled_red_sandstone","properties":{}},"minecraft:chiseled_sandstone":{"defaultstate":"minecraft:chiseled_sandstone","properties":{}},"minecraft:chiseled_stone_bricks":{"defaultstate":"minecraft:chiseled_stone_bricks","properties":{}},"minecraft:chorus_flower":{"defaultstate":"minecraft:chorus_flower[age=0]","properties":{"age":{"type":"int","values":["0","1","2","3","4","5"]}}},"minecraft:chorus_plant":{"defaultstate":"minecraft:chorus_plant[down=false,east=false,north=false,south=false,up=false,west=false]","properties":{"down":{"type":"bool","values":["true","false"]},"east":{"type":"bool","values":["true","false"]},"north":{"type":"bool","values":["true","false"]},"south":{"type":"bool","values":["true","false"]},"up":{"type":"bool","values":["true","false"]},"west":{"type":"bool","values":["true","false"]}}},"minecraft:clay":{"defaultstate":"minecraft:clay","properties":{}},"minecraft:coal_block":{"defaultstate":"minecraft:coal_block","properties":{}},"minecraft:coal_ore":{"defaultstate":"minecraft:coal_ore","properties":{}},"minecraft:coarse_dirt":{"defaultstate":"minecraft:coarse_dirt","properties":{}},"minecraft:cobbled_deepslate":{"defaultstate":"minecraft:cobbled_deepslate","properties":{}},"minecraft:cobbled_deepslate_slab":{"defaultstate":"minecraft:cobbled_deepslate_slab[type=bottom,waterlogged=false]","properties":{"type":{"type":"enum","values":["top","bottom","double"]},"waterlogged":{"type":"bool","values":["true","false"]}}},"minecraft:cobbled_deepslate_stairs":{"defaultstate":"minecraft:cobbled_deepslate_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]","properties":{"facing":{"type":"direction","values":["north","south","west","east"]},"half":{"type":"enum","values":["top","bottom"]},"shape":{"type":"enum","values":["straight","inner_left","inner_right","outer_left","outer_right"]},"waterlogged":{"type":"bool","values":["true","false"]}}},"minecraft:cobbled_deepslate_wall":{"defaultstate":"minecraft:cobbled_deepslate_wall[east=none,north=none,south=none,up=true,waterlogged=false,west=none]","properties":{"east":{"type":"enum","values":["none","low","tall"]},"north":{"type":"enum","values":["none","low","tall"]},"south":{"type":"enum","values":["none","low","tall"]},"up":{"type":"bool","values":["true","false"]},"waterlogged":{"type":"bool","values":["true","false"]},"west":{"type":"enum","values":["none","low","tall"]}}},"minecraft:cobblestone":{"defaultstate":"minecraft:cobblestone","properties":{}},"minecraft:cobblestone_slab":{"defaultstate":"minecraft:cobblestone_slab[type=bottom,waterlogged=false]","properties":{"type":{"type":"enum","values":["top","bottom","double"]},"waterlogged":{"type":"bool","values":["true","false"]}}},"minecraft:cobblestone_stairs":{"defaultstate":"minecraft:cobblestone_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]","properties":{"facing":{"type":"direction","values":["north","south","west","east"]},"half":{"type":"enum","values":["top","bottom"]},"shape":{"type":"enum","values":["straight","inner_left","inner_right","outer_left","outer_right"]},"waterlogged":{"type":"bool","values":["true","false"]}}},"minecraft:cobblestone_wall":{"defaultstate":"minecraft:cobblestone_wall[east=none,north=none,south=none,up=true,waterlogged=false,west=none]","properties":{"east":{"type":"enum","values":["none","low","tall"]},"north":{"type":"enum","values":["none","low","tall"]},"south":{"type":"enum","values":["none","low","tall"]},"up":{"type":"bool","values":["true","false"]},"waterlogged":{"type":"bool","values":["true","false"]},"west":{"type":"enum","values":["none","low","tall"]}}},"minecraft:cobweb":{"defaultstate":"minecraft:cobweb","properties":{}},"minecraft:cocoa":{"defaultstate":"minecraft:cocoa[age=0,facing=north]","properties":{"age":{"type":"int","values":["0","1","2"]},"facing":{"type":"direction","values":["north","south","west","east"]}}},"minecraft:command_block":{"defaultstate":"minecraft:command_block[conditional=false,facing=north]","properties":{"conditional":{"type":"bool","values":["true","false"]},"facing":{"type":"direction","values":["north","east","south","west","up","down"]}}},"minecraft:comparator":{"defaultstate":"minecraft:comparator[facing=north,mode=compare,powered=false]","properties":{"facing":{"type":"direction","values":["north","south","west","east"]},"mode":{"type":"enum","values":["compare","subtract"]},"powered":{"type":"bool","values":["true","false"]}}},"minecraft:composter":{"defaultstate":"minecraft:composter[level=0]","properties":{"level":{"type":"int","values":["0","1","2","3","4","5","6","7","8"]}}},"minecraft:conduit":{"defaultstate":"minecraft:conduit[waterlogged=true]","properties":{"waterlogged":{"type":"bool","values":["true","false"]}}},"minecraft:copper_block":{"defaultstate":"minecraft:copper_block","properties":{}},"minecraft:copper_ore":{"defaultstate":"minecraft:copper_ore","properties":{}},"minecraft:cornflower":{"defaultstate":"minecraft:cornflower","properties":{}},"minecraft:cracked_deepslate_bricks":{"defaultstate":"minecraft:cracked_deepslate_bricks","properties":{}},"minecraft:cracked_deepslate_tiles":{"defaultstate":"minecraft:cracked_deepslate_tiles","properties":{}},"minecraft:cracked_nether_bricks":{"defaultstate":"minecraft:cracked_nether_bricks","properties":{}},"minecraft:cracked_polished_blackstone_bricks":{"defaultstate":"minecraft:cracked_polished_blackstone_bricks","properties":{}},"minecraft:cracked_stone_bricks":{"defaultstate":"minecraft:cracked_stone_bricks","properties":{}},"minecraft:crafting_table":{"defaultstate":"minecraft:crafting_table","properties":{}},"minecraft:creeper_head":{"defaultstate":"minecraft:creeper_head[rotation=0]","properties":{"rotation":{"type":"int","values":["0","1","2","3","4","5","6","7","8","9","10","11","12","13","14","15"]}}},"minecraft:creeper_wall_head":{"defaultstate":"minecraft:creeper_wall_head[facing=north]","properties":{"facing":{"type":"direction","values":["north","south","west","east"]}}},"minecraft:crimson_button":{"defaultstate":"minecraft:crimson_button[face=wall,facing=north,powered=false]","properties":{"face":{"type":"enum","values":["floor","wall","ceiling"]},"facing":{"type":"direction","values":["north","south","west","east"]},"powered":{"type":"bool","values":["true","false"]}}},"minecraft:crimson_door":{"defaultstate":"minecraft:crimson_door[facing=north,half=lower,hinge=left,open=false,powered=false]","properties":{"facing":{"type":"direction","values":["north","south","west","east"]},"half":{"type":"enum","values":["upper","lower"]},"hinge":{"type":"enum","values":["left","right"]},"open":{"type":"bool","values":["true","false"]},"powered":{"type":"bool","values":["true","false"]}}},"minecraft:crimson_fence":{"defaultstate":"minecraft:crimson_fence[east=false,north=false,south=false,waterlogged=false,west=false]","properties":{"east":{"type":"bool","values":["true","false"]},"north":{"type":"bool","values":["true","false"]},"south":{"type":"bool","values":["true","false"]},"waterlogged":{"type":"bool","values":["true","false"]},"west":{"type":"bool","values":["true","false"]}}},"minecraft:crimson_fence_gate":{"defaultstate":"minecraft:crimson_fence_gate[facing=north,in_wall=false,open=false,powered=false]","properties":{"facing":{"type":"direction","values":["north","south","west","east"]},"in_wall":{"type":"bool","values":["true","false"]},"open":{"type":"bool","values":["true","false"]},"powered":{"type":"bool","values":["true","false"]}}},"minecraft:crimson_fungus":{"defaultstate":"minecraft:crimson_fungus","properties":{}},"minecraft:crimson_hyphae":{"defaultstate":"minecraft:crimson_hyphae[axis=y]","properties":{"axis":{"type":"enum","values":["x","y","z"]}}},"minecraft:crimson_nylium":{"defaultstate":"minecraft:crimson_nylium","properties":{}},"minecraft:crimson_planks":{"defaultstate":"minecraft:crimson_planks","properties":{}},"minecraft:crimson_pressure_plate":{"defaultstate":"minecraft:crimson_pressure_plate[powered=false]","properties":{"powered":{"type":"bool","values":["true","false"]}}},"minecraft:crimson_roots":{"defaultstate":"minecraft:crimson_roots","properties":{}},"minecraft:crimson_sign":{"defaultstate":"minecraft:crimson_sign[rotation=0,waterlogged=false]","properties":{"rotation":{"type":"int","values":["0","1","2","3","4","5","6","7","8","9","10","11","12","13","14","15"]},"waterlogged":{"type":"bool","values":["true","false"]}}},"minecraft:crimson_slab":{"defaultstate":"minecraft:crimson_slab[type=bottom,waterlogged=false]","properties":{"type":{"type":"enum","values":["top","bottom","double"]},"waterlogged":{"type":"bool","values":["true","false"]}}},"minecraft:crimson_stairs":{"defaultstate":"minecraft:crimson_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]","properties":{"facing":{"type":"direction","values":["north","south","west","east"]},"half":{"type":"enum","values":["top","bottom"]},"shape":{"type":"enum","values":["straight","inner_left","inner_right","outer_left","outer_right"]},"waterlogged":{"type":"bool","values":["true","false"]}}},"minecraft:crimson_stem":{"defaultstate":"minecraft:crimson_stem[axis=y]","properties":{"axis":{"type":"enum","values":["x","y","z"]}}},"minecraft:crimson_trapdoor":{"defaultstate":"minecraft:crimson_trapdoor[facing=north,half=bottom,open=false,powered=false,waterlogged=false]","properties":{"facing":{"type":"direction","values":["north","south","west","east"]},"half":{"type":"enum","values":["top","bottom"]},"open":{"type":"bool","values":["true","false"]},"powered":{"type":"bool","values":["true","false"]},"waterlogged":{"type":"bool","values":["true","false"]}}},"minecraft:crimson_wall_sign":{"defaultstate":"minecraft:crimson_wall_sign[facing=north,waterlogged=false]","properties":{"facing":{"type":"direction","values":["north","south","west","east"]},"waterlogged":{"type":"bool","values":["true","false"]}}},"minecraft:crying_obsidian":{"defaultstate":"minecraft:crying_obsidian","properties":{}},"minecraft:cut_copper":{"defaultstate":"minecraft:cut_copper","properties":{}},"minecraft:cut_copper_slab":{"defaultstate":"minecraft:cut_copper_slab[type=bottom,waterlogged=false]","properties":{"type":{"type":"enum","values":["top","bottom","double"]},"waterlogged":{"type":"bool","values":["true","false"]}}},"minecraft:cut_copper_stairs":{"defaultstate":"minecraft:cut_copper_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]","properties":{"facing":{"type":"direction","values":["north","south","west","east"]},"half":{"type":"enum","values":["top","bottom"]},"shape":{"type":"enum","values":["straight","inner_left","inner_right","outer_left","outer_right"]},"waterlogged":{"type":"bool","values":["true","false"]}}},"minecraft:cut_red_sandstone":{"defaultstate":"minecraft:cut_red_sandstone","properties":{}},"minecraft:cut_red_sandstone_slab":{"defaultstate":"minecraft:cut_red_sandstone_slab[type=bottom,waterlogged=false]","properties":{"type":{"type":"enum","values":["top","bottom","double"]},"waterlogged":{"type":"bool","values":["true","false"]}}},"minecraft:cut_sandstone":{"defaultstate":"minecraft:cut_sandstone","properties":{}},"minecraft:cut_sandstone_slab":{"defaultstate":"minecraft:cut_sandstone_slab[type=bottom,waterlogged=false]","properties":{"type":{"type":"enum","values":["top","bottom","double"]},"waterlogged":{"type":"bool","values":["true","false"]}}},"minecraft:cyan_banner":{"defaultstate":"minecraft:cyan_banner[rotation=0]","properties":{"rotation":{"type":"int","values":["0","1","2","3","4","5","6","7","8","9","10","11","12","13","14","15"]}}},"minecraft:cyan_bed":{"defaultstate":"minecraft:cyan_bed[facing=north,occupied=false,part=foot]","properties":{"facing":{"type":"direction","values":["north","south","west","east"]},"occupied":{"type":"bool","values":["true","false"]},"part":{"type":"enum","values":["head","foot"]}}},"minecraft:cyan_candle":{"defaultstate":"minecraft:cyan_candle[candles=1,lit=false,waterlogged=false]","properties":{"candles":{"type":"int","values":["1","2","3","4"]},"lit":{"type":"bool","values":["true","false"]},"waterlogged":{"type":"bool","values":["true","false"]}}},"minecraft:cyan_candle_cake":{"defaultstate":"minecraft:cyan_candle_cake[lit=false]","properties":{"lit":{"type":"bool","values":["true","false"]}}},"minecraft:cyan_carpet":{"defaultstate":"minecraft:cyan_carpet","properties":{}},"minecraft:cyan_concrete":{"defaultstate":"minecraft:cyan_concrete","properties":{}},"minecraft:cyan_concrete_powder":{"defaultstate":"minecraft:cyan_concrete_powder","properties":{}},"minecraft:cyan_glazed_terracotta":{"defaultstate":"minecraft:cyan_glazed_terracotta[facing=north]","properties":{"facing":{"type":"direction","values":["north","south","west","east"]}}},"minecraft:cyan_shulker_box":{"defaultstate":"minecraft:cyan_shulker_box[facing=up]","properties":{"facing":{"type":"direction","values":["north","east","south","west","up","down"]}}},"minecraft:cyan_stained_glass":{"defaultstate":"minecraft:cyan_stained_glass","properties":{}},"minecraft:cyan_stained_glass_pane":{"defaultstate":"minecraft:cyan_stained_glass_pane[east=false,north=false,south=false,waterlogged=false,west=false]","properties":{"east":{"type":"bool","values":["true","false"]},"north":{"type":"bool","values":["true","false"]},"south":{"type":"bool","values":["true","false"]},"waterlogged":{"type":"bool","values":["true","false"]},"west":{"type":"bool","values":["true","false"]}}},"minecraft:cyan_terracotta":{"defaultstate":"minecraft:cyan_terracotta","properties":{}},"minecraft:cyan_wall_banner":{"defaultstate":"minecraft:cyan_wall_banner[facing=north]","properties":{"facing":{"type":"direction","values":["north","south","west","east"]}}},"minecraft:cyan_wool":{"defaultstate":"minecraft:cyan_wool","properties":{}},"minecraft:damaged_anvil":{"defaultstate":"minecraft:damaged_anvil[facing=north]","properties":{"facing":{"type":"direction","values":["north","south","west","east"]}}},"minecraft:dandelion":{"defaultstate":"minecraft:dandelion","properties":{}},"minecraft:dark_oak_button":{"defaultstate":"minecraft:dark_oak_button[face=wall,facing=north,powered=false]","properties":{"face":{"type":"enum","values":["floor","wall","ceiling"]},"facing":{"type":"direction","values":["north","south","west","east"]},"powered":{"type":"bool","values":["true","false"]}}},"minecraft:dark_oak_door":{"defaultstate":"minecraft:dark_oak_door[facing=north,half=lower,hinge=left,open=false,powered=false]","properties":{"facing":{"type":"direction","values":["north","south","west","east"]},"half":{"type":"enum","values":["upper","lower"]},"hinge":{"type":"enum","values":["left","right"]},"open":{"type":"bool","values":["true","false"]},"powered":{"type":"bool","values":["true","false"]}}},"minecraft:dark_oak_fence":{"defaultstate":"minecraft:dark_oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]","properties":{"east":{"type":"bool","values":["true","false"]},"north":{"type":"bool","values":["true","false"]},"south":{"type":"bool","values":["true","false"]},"waterlogged":{"type":"bool","values":["true","false"]},"west":{"type":"bool","values":["true","false"]}}},"minecraft:dark_oak_fence_gate":{"defaultstate":"minecraft:dark_oak_fence_gate[facing=north,in_wall=false,open=false,powered=false]","properties":{"facing":{"type":"direction","values":["north","south","west","east"]},"in_wall":{"type":"bool","values":["true","false"]},"open":{"type":"bool","values":["true","false"]},"powered":{"type":"bool","values":["true","false"]}}},"minecraft:dark_oak_leaves":{"defaultstate":"minecraft:dark_oak_leaves[distance=7,persistent=false,waterlogged=false]","properties":{"distance":{"type":"int","values":["1","2","3","4","5","6","7"]},"persistent":{"type":"bool","values":["true","false"]},"waterlogged":{"type":"bool","values":["true","false"]}}},"minecraft:dark_oak_log":{"defaultstate":"minecraft:dark_oak_log[axis=y]","properties":{"axis":{"type":"enum","values":["x","y","z"]}}},"minecraft:dark_oak_planks":{"defaultstate":"minecraft:dark_oak_planks","properties":{}},"minecraft:dark_oak_pressure_plate":{"defaultstate":"minecraft:dark_oak_pressure_plate[powered=false]","properties":{"powered":{"type":"bool","values":["true","false"]}}},"minecraft:dark_oak_sapling":{"defaultstate":"minecraft:dark_oak_sapling[stage=0]","properties":{"stage":{"type":"int","values":["0","1"]}}},"minecraft:dark_oak_sign":{"defaultstate":"minecraft:dark_oak_sign[rotation=0,waterlogged=false]","properties":{"rotation":{"type":"int","values":["0","1","2","3","4","5","6","7","8","9","10","11","12","13","14","15"]},"waterlogged":{"type":"bool","values":["true","false"]}}},"minecraft:dark_oak_slab":{"defaultstate":"minecraft:dark_oak_slab[type=bottom,waterlogged=false]","properties":{"type":{"type":"enum","values":["top","bottom","double"]},"waterlogged":{"type":"bool","values":["true","false"]}}},"minecraft:dark_oak_stairs":{"defaultstate":"minecraft:dark_oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]","properties":{"facing":{"type":"direction","values":["north","south","west","east"]},"half":{"type":"enum","values":["top","bottom"]},"shape":{"type":"enum","values":["straight","inner_left","inner_right","outer_left","outer_right"]},"waterlogged":{"type":"bool","values":["true","false"]}}},"minecraft:dark_oak_trapdoor":{"defaultstate":"minecraft:dark_oak_trapdoor[facing=north,half=bottom,open=false,powered=false,waterlogged=false]","properties":{"facing":{"type":"direction","values":["north","south","west","east"]},"half":{"type":"enum","values":["top","bottom"]},"open":{"type":"bool","values":["true","false"]},"powered":{"type":"bool","values":["true","false"]},"waterlogged":{"type":"bool","values":["true","false"]}}},"minecraft:dark_oak_wall_sign":{"defaultstate":"minecraft:dark_oak_wall_sign[facing=north,waterlogged=false]","properties":{"facing":{"type":"direction","values":["north","south","west","east"]},"waterlogged":{"type":"bool","values":["true","false"]}}},"minecraft:dark_oak_wood":{"defaultstate":"minecraft:dark_oak_wood[axis=y]","properties":{"axis":{"type":"enum","values":["x","y","z"]}}},"minecraft:dark_prismarine":{"defaultstate":"minecraft:dark_prismarine","properties":{}},"minecraft:dark_prismarine_slab":{"defaultstate":"minecraft:dark_prismarine_slab[type=bottom,waterlogged=false]","properties":{"type":{"type":"enum","values":["top","bottom","double"]},"waterlogged":{"type":"bool","values":["true","false"]}}},"minecraft:dark_prismarine_stairs":{"defaultstate":"minecraft:dark_prismarine_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]","properties":{"facing":{"type":"direction","values":["north","south","west","east"]},"half":{"type":"enum","values":["top","bottom"]},"shape":{"type":"enum","values":["straight","inner_left","inner_right","outer_left","outer_right"]},"waterlogged":{"type":"bool","values":["true","false"]}}},"minecraft:daylight_detector":{"defaultstate":"minecraft:daylight_detector[inverted=false,power=0]","properties":{"inverted":{"type":"bool","values":["true","false"]},"power":{"type":"int","values":["0","1","2","3","4","5","6","7","8","9","10","11","12","13","14","15"]}}},"minecraft:dead_brain_coral":{"defaultstate":"minecraft:dead_brain_coral[waterlogged=true]","properties":{"waterlogged":{"type":"bool","values":["true","false"]}}},"minecraft:dead_brain_coral_block":{"defaultstate":"minecraft:dead_brain_coral_block","properties":{}},"minecraft:dead_brain_coral_fan":{"defaultstate":"minecraft:dead_brain_coral_fan[waterlogged=true]","properties":{"waterlogged":{"type":"bool","values":["true","false"]}}},"minecraft:dead_brain_coral_wall_fan":{"defaultstate":"minecraft:dead_brain_coral_wall_fan[facing=north,waterlogged=true]","properties":{"facing":{"type":"direction","values":["north","south","west","east"]},"waterlogged":{"type":"bool","values":["true","false"]}}},"minecraft:dead_bubble_coral":{"defaultstate":"minecraft:dead_bubble_coral[waterlogged=true]","properties":{"waterlogged":{"type":"bool","values":["true","false"]}}},"minecraft:dead_bubble_coral_block":{"defaultstate":"minecraft:dead_bubble_coral_block","properties":{}},"minecraft:dead_bubble_coral_fan":{"defaultstate":"minecraft:dead_bubble_coral_fan[waterlogged=true]","properties":{"waterlogged":{"type":"bool","values":["true","false"]}}},"minecraft:dead_bubble_coral_wall_fan":{"defaultstate":"minecraft:dead_bubble_coral_wall_fan[facing=north,waterlogged=true]","properties":{"facing":{"type":"direction","values":["north","south","west","east"]},"waterlogged":{"type":"bool","values":["true","false"]}}},"minecraft:dead_bush":{"defaultstate":"minecraft:dead_bush","properties":{}},"minecraft:dead_fire_coral":{"defaultstate":"minecraft:dead_fire_coral[waterlogged=true]","properties":{"waterlogged":{"type":"bool","values":["true","false"]}}},"minecraft:dead_fire_coral_block":{"defaultstate":"minecraft:dead_fire_coral_block","properties":{}},"minecraft:dead_fire_coral_fan":{"defaultstate":"minecraft:dead_fire_coral_fan[waterlogged=true]","properties":{"waterlogged":{"type":"bool","values":["true","false"]}}},"minecraft:dead_fire_coral_wall_fan":{"defaultstate":"minecraft:dead_fire_coral_wall_fan[facing=north,waterlogged=true]","properties":{"facing":{"type":"direction","values":["north","south","west","east"]},"waterlogged":{"type":"bool","values":["true","false"]}}},"minecraft:dead_horn_coral":{"defaultstate":"minecraft:dead_horn_coral[waterlogged=true]","properties":{"waterlogged":{"type":"bool","values":["true","false"]}}},"minecraft:dead_horn_coral_block":{"defaultstate":"minecraft:dead_horn_coral_block","properties":{}},"minecraft:dead_horn_coral_fan":{"defaultstate":"minecraft:dead_horn_coral_fan[waterlogged=true]","properties":{"waterlogged":{"type":"bool","values":["true","false"]}}},"minecraft:dead_horn_coral_wall_fan":{"defaultstate":"minecraft:dead_horn_coral_wall_fan[facing=north,waterlogged=true]","properties":{"facing":{"type":"direction","values":["north","south","west","east"]},"waterlogged":{"type":"bool","values":["true","false"]}}},"minecraft:dead_tube_coral":{"defaultstate":"minecraft:dead_tube_coral[waterlogged=true]","properties":{"waterlogged":{"type":"bool","values":["true","false"]}}},"minecraft:dead_tube_coral_block":{"defaultstate":"minecraft:dead_tube_coral_block","properties":{}},"minecraft:dead_tube_coral_fan":{"defaultstate":"minecraft:dead_tube_coral_fan[waterlogged=true]","properties":{"waterlogged":{"type":"bool","values":["true","false"]}}},"minecraft:dead_tube_coral_wall_fan":{"defaultstate":"minecraft:dead_tube_coral_wall_fan[facing=north,waterlogged=true]","properties":{"facing":{"type":"direction","values":["north","south","west","east"]},"waterlogged":{"type":"bool","values":["true","false"]}}},"minecraft:deepslate":{"defaultstate":"minecraft:deepslate[axis=y]","properties":{"axis":{"type":"enum","values":["x","y","z"]}}},"minecraft:deepslate_brick_slab":{"defaultstate":"minecraft:deepslate_brick_slab[type=bottom,waterlogged=false]","properties":{"type":{"type":"enum","values":["top","bottom","double"]},"waterlogged":{"type":"bool","values":["true","false"]}}},"minecraft:deepslate_brick_stairs":{"defaultstate":"minecraft:deepslate_brick_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]","properties":{"facing":{"type":"direction","values":["north","south","west","east"]},"half":{"type":"enum","values":["top","bottom"]},"shape":{"type":"enum","values":["straight","inner_left","inner_right","outer_left","outer_right"]},"waterlogged":{"type":"bool","values":["true","false"]}}},"minecraft:deepslate_brick_wall":{"defaultstate":"minecraft:deepslate_brick_wall[east=none,north=none,south=none,up=true,waterlogged=false,west=none]","properties":{"east":{"type":"enum","values":["none","low","tall"]},"north":{"type":"enum","values":["none","low","tall"]},"south":{"type":"enum","values":["none","low","tall"]},"up":{"type":"bool","values":["true","false"]},"waterlogged":{"type":"bool","values":["true","false"]},"west":{"type":"enum","values":["none","low","tall"]}}},"minecraft:deepslate_bricks":{"defaultstate":"minecraft:deepslate_bricks","properties":{}},"minecraft:deepslate_coal_ore":{"defaultstate":"minecraft:deepslate_coal_ore","properties":{}},"minecraft:deepslate_copper_ore":{"defaultstate":"minecraft:deepslate_copper_ore","properties":{}},"minecraft:deepslate_diamond_ore":{"defaultstate":"minecraft:deepslate_diamond_ore","properties":{}},"minecraft:deepslate_emerald_ore":{"defaultstate":"minecraft:deepslate_emerald_ore","properties":{}},"minecraft:deepslate_gold_ore":{"defaultstate":"minecraft:deepslate_gold_ore","properties":{}},"minecraft:deepslate_iron_ore":{"defaultstate":"minecraft:deepslate_iron_ore","properties":{}},"minecraft:deepslate_lapis_ore":{"defaultstate":"minecraft:deepslate_lapis_ore","properties":{}},"minecraft:deepslate_redstone_ore":{"defaultstate":"minecraft:deepslate_redstone_ore[lit=false]","properties":{"lit":{"type":"bool","values":["true","false"]}}},"minecraft:deepslate_tile_slab":{"defaultstate":"minecraft:deepslate_tile_slab[type=bottom,waterlogged=false]","properties":{"type":{"type":"enum","values":["top","bottom","double"]},"waterlogged":{"type":"bool","values":["true","false"]}}},"minecraft:deepslate_tile_stairs":{"defaultstate":"minecraft:deepslate_tile_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]","properties":{"facing":{"type":"direction","values":["north","south","west","east"]},"half":{"type":"enum","values":["top","bottom"]},"shape":{"type":"enum","values":["straight","inner_left","inner_right","outer_left","outer_right"]},"waterlogged":{"type":"bool","values":["true","false"]}}},"minecraft:deepslate_tile_wall":{"defaultstate":"minecraft:deepslate_tile_wall[east=none,north=none,south=none,up=true,waterlogged=false,west=none]","properties":{"east":{"type":"enum","values":["none","low","tall"]},"north":{"type":"enum","values":["none","low","tall"]},"south":{"type":"enum","values":["none","low","tall"]},"up":{"type":"bool","values":["true","false"]},"waterlogged":{"type":"bool","values":["true","false"]},"west":{"type":"enum","values":["none","low","tall"]}}},"minecraft:deepslate_tiles":{"defaultstate":"minecraft:deepslate_tiles","properties":{}},"minecraft:detector_rail":{"defaultstate":"minecraft:detector_rail[powered=false,shape=north_south,waterlogged=false]","properties":{"powered":{"type":"bool","values":["true","false"]},"shape":{"type":"enum","values":["north_south","east_west","ascending_east","ascending_west","ascending_north","ascending_south"]},"waterlogged":{"type":"bool","values":["true","false"]}}},"minecraft:diamond_block":{"defaultstate":"minecraft:diamond_block","properties":{}},"minecraft:diamond_ore":{"defaultstate":"minecraft:diamond_ore","properties":{}},"minecraft:diorite":{"defaultstate":"minecraft:diorite","properties":{}},"minecraft:diorite_slab":{"defaultstate":"minecraft:diorite_slab[type=bottom,waterlogged=false]","properties":{"type":{"type":"enum","values":["top","bottom","double"]},"waterlogged":{"type":"bool","values":["true","false"]}}},"minecraft:diorite_stairs":{"defaultstate":"minecraft:diorite_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]","properties":{"facing":{"type":"direction","values":["north","south","west","east"]},"half":{"type":"enum","values":["top","bottom"]},"shape":{"type":"enum","values":["straight","inner_left","inner_right","outer_left","outer_right"]},"waterlogged":{"type":"bool","values":["true","false"]}}},"minecraft:diorite_wall":{"defaultstate":"minecraft:diorite_wall[east=none,north=none,south=none,up=true,waterlogged=false,west=none]","properties":{"east":{"type":"enum","values":["none","low","tall"]},"north":{"type":"enum","values":["none","low","tall"]},"south":{"type":"enum","values":["none","low","tall"]},"up":{"type":"bool","values":["true","false"]},"waterlogged":{"type":"bool","values":["true","false"]},"west":{"type":"enum","values":["none","low","tall"]}}},"minecraft:dirt":{"defaultstate":"minecraft:dirt","properties":{}},"minecraft:dirt_path":{"defaultstate":"minecraft:dirt_path","properties":{}},"minecraft:dispenser":{"defaultstate":"minecraft:dispenser[facing=north,triggered=false]","properties":{"facing":{"type":"direction","values":["north","east","south","west","up","down"]},"triggered":{"type":"bool","values":["true","false"]}}},"minecraft:dragon_egg":{"defaultstate":"minecraft:dragon_egg","properties":{}},"minecraft:dragon_head":{"defaultstate":"minecraft:dragon_head[rotation=0]","properties":{"rotation":{"type":"int","values":["0","1","2","3","4","5","6","7","8","9","10","11","12","13","14","15"]}}},"minecraft:dragon_wall_head":{"defaultstate":"minecraft:dragon_wall_head[facing=north]","properties":{"facing":{"type":"direction","values":["north","south","west","east"]}}},"minecraft:dried_kelp_block":{"defaultstate":"minecraft:dried_kelp_block","properties":{}},"minecraft:dripstone_block":{"defaultstate":"minecraft:dripstone_block","properties":{}},"minecraft:dropper":{"defaultstate":"minecraft:dropper[facing=north,triggered=false]","properties":{"facing":{"type":"direction","values":["north","east","south","west","up","down"]},"triggered":{"type":"bool","values":["true","false"]}}},"minecraft:emerald_block":{"defaultstate":"minecraft:emerald_block","properties":{}},"minecraft:emerald_ore":{"defaultstate":"minecraft:emerald_ore","properties":{}},"minecraft:enchanting_table":{"defaultstate":"minecraft:enchanting_table","properties":{}},"minecraft:end_gateway":{"defaultstate":"minecraft:end_gateway","properties":{}},"minecraft:end_portal":{"defaultstate":"minecraft:end_portal","properties":{}},"minecraft:end_portal_frame":{"defaultstate":"minecraft:end_portal_frame[eye=false,facing=north]","properties":{"eye":{"type":"bool","values":["true","false"]},"facing":{"type":"direction","values":["north","south","west","east"]}}},"minecraft:end_rod":{"defaultstate":"minecraft:end_rod[facing=up]","properties":{"facing":{"type":"direction","values":["north","east","south","west","up","down"]}}},"minecraft:end_stone":{"defaultstate":"minecraft:end_stone","properties":{}},"minecraft:end_stone_brick_slab":{"defaultstate":"minecraft:end_stone_brick_slab[type=bottom,waterlogged=false]","properties":{"type":{"type":"enum","values":["top","bottom","double"]},"waterlogged":{"type":"bool","values":["true","false"]}}},"minecraft:end_stone_brick_stairs":{"defaultstate":"minecraft:end_stone_brick_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]","properties":{"facing":{"type":"direction","values":["north","south","west","east"]},"half":{"type":"enum","values":["top","bottom"]},"shape":{"type":"enum","values":["straight","inner_left","inner_right","outer_left","outer_right"]},"waterlogged":{"type":"bool","values":["true","false"]}}},"minecraft:end_stone_brick_wall":{"defaultstate":"minecraft:end_stone_brick_wall[east=none,north=none,south=none,up=true,waterlogged=false,west=none]","properties":{"east":{"type":"enum","values":["none","low","tall"]},"north":{"type":"enum","values":["none","low","tall"]},"south":{"type":"enum","values":["none","low","tall"]},"up":{"type":"bool","values":["true","false"]},"waterlogged":{"type":"bool","values":["true","false"]},"west":{"type":"enum","values":["none","low","tall"]}}},"minecraft:end_stone_bricks":{"defaultstate":"minecraft:end_stone_bricks","properties":{}},"minecraft:ender_chest":{"defaultstate":"minecraft:ender_chest[facing=north,waterlogged=false]","properties":{"facing":{"type":"direction","values":["north","south","west","east"]},"waterlogged":{"type":"bool","values":["true","false"]}}},"minecraft:exposed_copper":{"defaultstate":"minecraft:exposed_copper","properties":{}},"minecraft:exposed_cut_copper":{"defaultstate":"minecraft:exposed_cut_copper","properties":{}},"minecraft:exposed_cut_copper_slab":{"defaultstate":"minecraft:exposed_cut_copper_slab[type=bottom,waterlogged=false]","properties":{"type":{"type":"enum","values":["top","bottom","double"]},"waterlogged":{"type":"bool","values":["true","false"]}}},"minecraft:exposed_cut_copper_stairs":{"defaultstate":"minecraft:exposed_cut_copper_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]","properties":{"facing":{"type":"direction","values":["north","south","west","east"]},"half":{"type":"enum","values":["top","bottom"]},"shape":{"type":"enum","values":["straight","inner_left","inner_right","outer_left","outer_right"]},"waterlogged":{"type":"bool","values":["true","false"]}}},"minecraft:farmland":{"defaultstate":"minecraft:farmland[moisture=0]","properties":{"moisture":{"type":"int","values":["0","1","2","3","4","5","6","7"]}}},"minecraft:fern":{"defaultstate":"minecraft:fern","properties":{}},"minecraft:fire":{"defaultstate":"minecraft:fire[age=0,east=false,north=false,south=false,up=false,west=false]","properties":{"age":{"type":"int","values":["0","1","2","3","4","5","6","7","8","9","10","11","12","13","14","15"]},"east":{"type":"bool","values":["true","false"]},"north":{"type":"bool","values":["true","false"]},"south":{"type":"bool","values":["true","false"]},"up":{"type":"bool","values":["true","false"]},"west":{"type":"bool","values":["true","false"]}}},"minecraft:fire_coral":{"defaultstate":"minecraft:fire_coral[waterlogged=true]","properties":{"waterlogged":{"type":"bool","values":["true","false"]}}},"minecraft:fire_coral_block":{"defaultstate":"minecraft:fire_coral_block","properties":{}},"minecraft:fire_coral_fan":{"defaultstate":"minecraft:fire_coral_fan[waterlogged=true]","properties":{"waterlogged":{"type":"bool","values":["true","false"]}}},"minecraft:fire_coral_wall_fan":{"defaultstate":"minecraft:fire_coral_wall_fan[facing=north,waterlogged=true]","properties":{"facing":{"type":"direction","values":["north","south","west","east"]},"waterlogged":{"type":"bool","values":["true","false"]}}},"minecraft:fletching_table":{"defaultstate":"minecraft:fletching_table","properties":{}},"minecraft:flower_pot":{"defaultstate":"minecraft:flower_pot","properties":{}},"minecraft:flowering_azalea":{"defaultstate":"minecraft:flowering_azalea","properties":{}},"minecraft:flowering_azalea_leaves":{"defaultstate":"minecraft:flowering_azalea_leaves[distance=7,persistent=false,waterlogged=false]","properties":{"distance":{"type":"int","values":["1","2","3","4","5","6","7"]},"persistent":{"type":"bool","values":["true","false"]},"waterlogged":{"type":"bool","values":["true","false"]}}},"minecraft:frogspawn":{"defaultstate":"minecraft:frogspawn","properties":{}},"minecraft:frosted_ice":{"defaultstate":"minecraft:frosted_ice[age=0]","properties":{"age":{"type":"int","values":["0","1","2","3"]}}},"minecraft:furnace":{"defaultstate":"minecraft:furnace[facing=north,lit=false]","properties":{"facing":{"type":"direction","values":["north","south","west","east"]},"lit":{"type":"bool","values":["true","false"]}}},"minecraft:gilded_blackstone":{"defaultstate":"minecraft:gilded_blackstone","properties":{}},"minecraft:glass":{"defaultstate":"minecraft:glass","properties":{}},"minecraft:glass_pane":{"defaultstate":"minecraft:glass_pane[east=false,north=false,south=false,waterlogged=false,west=false]","properties":{"east":{"type":"bool","values":["true","false"]},"north":{"type":"bool","values":["true","false"]},"south":{"type":"bool","values":["true","false"]},"waterlogged":{"type":"bool","values":["true","false"]},"west":{"type":"bool","values":["true","false"]}}},"minecraft:glow_lichen":{"defaultstate":"minecraft:glow_lichen[down=false,east=false,north=false,south=false,up=false,waterlogged=false,west=false]","properties":{"down":{"type":"bool","values":["true","false"]},"east":{"type":"bool","values":["true","false"]},"north":{"type":"bool","values":["true","false"]},"south":{"type":"bool","values":["true","false"]},"up":{"type":"bool","values":["true","false"]},"waterlogged":{"type":"bool","values":["true","false"]},"west":{"type":"bool","values":["true","false"]}}},"minecraft:glowstone":{"defaultstate":"minecraft:glowstone","properties":{}},"minecraft:gold_block":{"defaultstate":"minecraft:gold_block","properties":{}},"minecraft:gold_ore":{"defaultstate":"minecraft:gold_ore","properties":{}},"minecraft:granite":{"defaultstate":"minecraft:granite","properties":{}},"minecraft:granite_slab":{"defaultstate":"minecraft:granite_slab[type=bottom,waterlogged=false]","properties":{"type":{"type":"enum","values":["top","bottom","double"]},"waterlogged":{"type":"bool","values":["true","false"]}}},"minecraft:granite_stairs":{"defaultstate":"minecraft:granite_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]","properties":{"facing":{"type":"direction","values":["north","south","west","east"]},"half":{"type":"enum","values":["top","bottom"]},"shape":{"type":"enum","values":["straight","inner_left","inner_right","outer_left","outer_right"]},"waterlogged":{"type":"bool","values":["true","false"]}}},"minecraft:granite_wall":{"defaultstate":"minecraft:granite_wall[east=none,north=none,south=none,up=true,waterlogged=false,west=none]","properties":{"east":{"type":"enum","values":["none","low","tall"]},"north":{"type":"enum","values":["none","low","tall"]},"south":{"type":"enum","values":["none","low","tall"]},"up":{"type":"bool","values":["true","false"]},"waterlogged":{"type":"bool","values":["true","false"]},"west":{"type":"enum","values":["none","low","tall"]}}},"minecraft:grass":{"defaultstate":"minecraft:grass","properties":{}},"minecraft:grass_block":{"defaultstate":"minecraft:grass_block[snowy=false]","properties":{"snowy":{"type":"bool","values":["true","false"]}}},"minecraft:gravel":{"defaultstate":"minecraft:gravel","properties":{}},"minecraft:gray_banner":{"defaultstate":"minecraft:gray_banner[rotation=0]","properties":{"rotation":{"type":"int","values":["0","1","2","3","4","5","6","7","8","9","10","11","12","13","14","15"]}}},"minecraft:gray_bed":{"defaultstate":"minecraft:gray_bed[facing=north,occupied=false,part=foot]","properties":{"facing":{"type":"direction","values":["north","south","west","east"]},"occupied":{"type":"bool","values":["true","false"]},"part":{"type":"enum","values":["head","foot"]}}},"minecraft:gray_candle":{"defaultstate":"minecraft:gray_candle[candles=1,lit=false,waterlogged=false]","properties":{"candles":{"type":"int","values":["1","2","3","4"]},"lit":{"type":"bool","values":["true","false"]},"waterlogged":{"type":"bool","values":["true","false"]}}},"minecraft:gray_candle_cake":{"defaultstate":"minecraft:gray_candle_cake[lit=false]","properties":{"lit":{"type":"bool","values":["true","false"]}}},"minecraft:gray_carpet":{"defaultstate":"minecraft:gray_carpet","properties":{}},"minecraft:gray_concrete":{"defaultstate":"minecraft:gray_concrete","properties":{}},"minecraft:gray_concrete_powder":{"defaultstate":"minecraft:gray_concrete_powder","properties":{}},"minecraft:gray_glazed_terracotta":{"defaultstate":"minecraft:gray_glazed_terracotta[facing=north]","properties":{"facing":{"type":"direction","values":["north","south","west","east"]}}},"minecraft:gray_shulker_box":{"defaultstate":"minecraft:gray_shulker_box[facing=up]","properties":{"facing":{"type":"direction","values":["north","east","south","west","up","down"]}}},"minecraft:gray_stained_glass":{"defaultstate":"minecraft:gray_stained_glass","properties":{}},"minecraft:gray_stained_glass_pane":{"defaultstate":"minecraft:gray_stained_glass_pane[east=false,north=false,south=false,waterlogged=false,west=false]","properties":{"east":{"type":"bool","values":["true","false"]},"north":{"type":"bool","values":["true","false"]},"south":{"type":"bool","values":["true","false"]},"waterlogged":{"type":"bool","values":["true","false"]},"west":{"type":"bool","values":["true","false"]}}},"minecraft:gray_terracotta":{"defaultstate":"minecraft:gray_terracotta","properties":{}},"minecraft:gray_wall_banner":{"defaultstate":"minecraft:gray_wall_banner[facing=north]","properties":{"facing":{"type":"direction","values":["north","south","west","east"]}}},"minecraft:gray_wool":{"defaultstate":"minecraft:gray_wool","properties":{}},"minecraft:green_banner":{"defaultstate":"minecraft:green_banner[rotation=0]","properties":{"rotation":{"type":"int","values":["0","1","2","3","4","5","6","7","8","9","10","11","12","13","14","15"]}}},"minecraft:green_bed":{"defaultstate":"minecraft:green_bed[facing=north,occupied=false,part=foot]","properties":{"facing":{"type":"direction","values":["north","south","west","east"]},"occupied":{"type":"bool","values":["true","false"]},"part":{"type":"enum","values":["head","foot"]}}},"minecraft:green_candle":{"defaultstate":"minecraft:green_candle[candles=1,lit=false,waterlogged=false]","properties":{"candles":{"type":"int","values":["1","2","3","4"]},"lit":{"type":"bool","values":["true","false"]},"waterlogged":{"type":"bool","values":["true","false"]}}},"minecraft:green_candle_cake":{"defaultstate":"minecraft:green_candle_cake[lit=false]","properties":{"lit":{"type":"bool","values":["true","false"]}}},"minecraft:green_carpet":{"defaultstate":"minecraft:green_carpet","properties":{}},"minecraft:green_concrete":{"defaultstate":"minecraft:green_concrete","properties":{}},"minecraft:green_concrete_powder":{"defaultstate":"minecraft:green_concrete_powder","properties":{}},"minecraft:green_glazed_terracotta":{"defaultstate":"minecraft:green_glazed_terracotta[facing=north]","properties":{"facing":{"type":"direction","values":["north","south","west","east"]}}},"minecraft:green_shulker_box":{"defaultstate":"minecraft:green_shulker_box[facing=up]","properties":{"facing":{"type":"direction","values":["north","east","south","west","up","down"]}}},"minecraft:green_stained_glass":{"defaultstate":"minecraft:green_stained_glass","properties":{}},"minecraft:green_stained_glass_pane":{"defaultstate":"minecraft:green_stained_glass_pane[east=false,north=false,south=false,waterlogged=false,west=false]","properties":{"east":{"type":"bool","values":["true","false"]},"north":{"type":"bool","values":["true","false"]},"south":{"type":"bool","values":["true","false"]},"waterlogged":{"type":"bool","values":["true","false"]},"west":{"type":"bool","values":["true","false"]}}},"minecraft:green_terracotta":{"defaultstate":"minecraft:green_terracotta","properties":{}},"minecraft:green_wall_banner":{"defaultstate":"minecraft:green_wall_banner[facing=north]","properties":{"facing":{"type":"direction","values":["north","south","west","east"]}}},"minecraft:green_wool":{"defaultstate":"minecraft:green_wool","properties":{}},"minecraft:grindstone":{"defaultstate":"minecraft:grindstone[face=wall,facing=north]","properties":{"face":{"type":"enum","values":["floor","wall","ceiling"]},"facing":{"type":"direction","values":["north","south","west","east"]}}},"minecraft:hanging_roots":{"defaultstate":"minecraft:hanging_roots[waterlogged=false]","properties":{"waterlogged":{"type":"bool","values":["true","false"]}}},"minecraft:hay_block":{"defaultstate":"minecraft:hay_block[axis=y]","properties":{"axis":{"type":"enum","values":["x","y","z"]}}},"minecraft:heavy_weighted_pressure_plate":{"defaultstate":"minecraft:heavy_weighted_pressure_plate[power=0]","properties":{"power":{"type":"int","values":["0","1","2","3","4","5","6","7","8","9","10","11","12","13","14","15"]}}},"minecraft:honey_block":{"defaultstate":"minecraft:honey_block","properties":{}},"minecraft:honeycomb_block":{"defaultstate":"minecraft:honeycomb_block","properties":{}},"minecraft:hopper":{"defaultstate":"minecraft:hopper[enabled=true,facing=down]","properties":{"enabled":{"type":"bool","values":["true","false"]},"facing":{"type":"direction","values":["down","north","south","west","east"]}}},"minecraft:horn_coral":{"defaultstate":"minecraft:horn_coral[waterlogged=true]","properties":{"waterlogged":{"type":"bool","values":["true","false"]}}},"minecraft:horn_coral_block":{"defaultstate":"minecraft:horn_coral_block","properties":{}},"minecraft:horn_coral_fan":{"defaultstate":"minecraft:horn_coral_fan[waterlogged=true]","properties":{"waterlogged":{"type":"bool","values":["true","false"]}}},"minecraft:horn_coral_wall_fan":{"defaultstate":"minecraft:horn_coral_wall_fan[facing=north,waterlogged=true]","properties":{"facing":{"type":"direction","values":["north","south","west","east"]},"waterlogged":{"type":"bool","values":["true","false"]}}},"minecraft:ice":{"defaultstate":"minecraft:ice","properties":{}},"minecraft:infested_chiseled_stone_bricks":{"defaultstate":"minecraft:infested_chiseled_stone_bricks","properties":{}},"minecraft:infested_cobblestone":{"defaultstate":"minecraft:infested_cobblestone","properties":{}},"minecraft:infested_cracked_stone_bricks":{"defaultstate":"minecraft:infested_cracked_stone_bricks","properties":{}},"minecraft:infested_deepslate":{"defaultstate":"minecraft:infested_deepslate[axis=y]","properties":{"axis":{"type":"enum","values":["x","y","z"]}}},"minecraft:infested_mossy_stone_bricks":{"defaultstate":"minecraft:infested_mossy_stone_bricks","properties":{}},"minecraft:infested_stone":{"defaultstate":"minecraft:infested_stone","properties":{}},"minecraft:infested_stone_bricks":{"defaultstate":"minecraft:infested_stone_bricks","properties":{}},"minecraft:iron_bars":{"defaultstate":"minecraft:iron_bars[east=false,north=false,south=false,waterlogged=false,west=false]","properties":{"east":{"type":"bool","values":["true","false"]},"north":{"type":"bool","values":["true","false"]},"south":{"type":"bool","values":["true","false"]},"waterlogged":{"type":"bool","values":["true","false"]},"west":{"type":"bool","values":["true","false"]}}},"minecraft:iron_block":{"defaultstate":"minecraft:iron_block","properties":{}},"minecraft:iron_door":{"defaultstate":"minecraft:iron_door[facing=north,half=lower,hinge=left,open=false,powered=false]","properties":{"facing":{"type":"direction","values":["north","south","west","east"]},"half":{"type":"enum","values":["upper","lower"]},"hinge":{"type":"enum","values":["left","right"]},"open":{"type":"bool","values":["true","false"]},"powered":{"type":"bool","values":["true","false"]}}},"minecraft:iron_ore":{"defaultstate":"minecraft:iron_ore","properties":{}},"minecraft:iron_trapdoor":{"defaultstate":"minecraft:iron_trapdoor[facing=north,half=bottom,open=false,powered=false,waterlogged=false]","properties":{"facing":{"type":"direction","values":["north","south","west","east"]},"half":{"type":"enum","values":["top","bottom"]},"open":{"type":"bool","values":["true","false"]},"powered":{"type":"bool","values":["true","false"]},"waterlogged":{"type":"bool","values":["true","false"]}}},"minecraft:jack_o_lantern":{"defaultstate":"minecraft:jack_o_lantern[facing=north]","properties":{"facing":{"type":"direction","values":["north","south","west","east"]}}},"minecraft:jigsaw":{"defaultstate":"minecraft:jigsaw[orientation=north_up]","properties":{"orientation":{"type":"enum","values":["down_east","down_north","down_south","down_west","up_east","up_north","up_south","up_west","west_up","east_up","north_up","south_up"]}}},"minecraft:jukebox":{"defaultstate":"minecraft:jukebox[has_record=false]","properties":{"has_record":{"type":"bool","values":["true","false"]}}},"minecraft:jungle_button":{"defaultstate":"minecraft:jungle_button[face=wall,facing=north,powered=false]","properties":{"face":{"type":"enum","values":["floor","wall","ceiling"]},"facing":{"type":"direction","values":["north","south","west","east"]},"powered":{"type":"bool","values":["true","false"]}}},"minecraft:jungle_door":{"defaultstate":"minecraft:jungle_door[facing=north,half=lower,hinge=left,open=false,powered=false]","properties":{"facing":{"type":"direction","values":["north","south","west","east"]},"half":{"type":"enum","values":["upper","lower"]},"hinge":{"type":"enum","values":["left","right"]},"open":{"type":"bool","values":["true","false"]},"powered":{"type":"bool","values":["true","false"]}}},"minecraft:jungle_fence":{"defaultstate":"minecraft:jungle_fence[east=false,north=false,south=false,waterlogged=false,west=false]","properties":{"east":{"type":"bool","values":["true","false"]},"north":{"type":"bool","values":["true","false"]},"south":{"type":"bool","values":["true","false"]},"waterlogged":{"type":"bool","values":["true","false"]},"west":{"type":"bool","values":["true","false"]}}},"minecraft:jungle_fence_gate":{"defaultstate":"minecraft:jungle_fence_gate[facing=north,in_wall=false,open=false,powered=false]","properties":{"facing":{"type":"direction","values":["north","south","west","east"]},"in_wall":{"type":"bool","values":["true","false"]},"open":{"type":"bool","values":["true","false"]},"powered":{"type":"bool","values":["true","false"]}}},"minecraft:jungle_leaves":{"defaultstate":"minecraft:jungle_leaves[distance=7,persistent=false,waterlogged=false]","properties":{"distance":{"type":"int","values":["1","2","3","4","5","6","7"]},"persistent":{"type":"bool","values":["true","false"]},"waterlogged":{"type":"bool","values":["true","false"]}}},"minecraft:jungle_log":{"defaultstate":"minecraft:jungle_log[axis=y]","properties":{"axis":{"type":"enum","values":["x","y","z"]}}},"minecraft:jungle_planks":{"defaultstate":"minecraft:jungle_planks","properties":{}},"minecraft:jungle_pressure_plate":{"defaultstate":"minecraft:jungle_pressure_plate[powered=false]","properties":{"powered":{"type":"bool","values":["true","false"]}}},"minecraft:jungle_sapling":{"defaultstate":"minecraft:jungle_sapling[stage=0]","properties":{"stage":{"type":"int","values":["0","1"]}}},"minecraft:jungle_sign":{"defaultstate":"minecraft:jungle_sign[rotation=0,waterlogged=false]","properties":{"rotation":{"type":"int","values":["0","1","2","3","4","5","6","7","8","9","10","11","12","13","14","15"]},"waterlogged":{"type":"bool","values":["true","false"]}}},"minecraft:jungle_slab":{"defaultstate":"minecraft:jungle_slab[type=bottom,waterlogged=false]","properties":{"type":{"type":"enum","values":["top","bottom","double"]},"waterlogged":{"type":"bool","values":["true","false"]}}},"minecraft:jungle_stairs":{"defaultstate":"minecraft:jungle_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]","properties":{"facing":{"type":"direction","values":["north","south","west","east"]},"half":{"type":"enum","values":["top","bottom"]},"shape":{"type":"enum","values":["straight","inner_left","inner_right","outer_left","outer_right"]},"waterlogged":{"type":"bool","values":["true","false"]}}},"minecraft:jungle_trapdoor":{"defaultstate":"minecraft:jungle_trapdoor[facing=north,half=bottom,open=false,powered=false,waterlogged=false]","properties":{"facing":{"type":"direction","values":["north","south","west","east"]},"half":{"type":"enum","values":["top","bottom"]},"open":{"type":"bool","values":["true","false"]},"powered":{"type":"bool","values":["true","false"]},"waterlogged":{"type":"bool","values":["true","false"]}}},"minecraft:jungle_wall_sign":{"defaultstate":"minecraft:jungle_wall_sign[facing=north,waterlogged=false]","properties":{"facing":{"type":"direction","values":["north","south","west","east"]},"waterlogged":{"type":"bool","values":["true","false"]}}},"minecraft:jungle_wood":{"defaultstate":"minecraft:jungle_wood[axis=y]","properties":{"axis":{"type":"enum","values":["x","y","z"]}}},"minecraft:kelp":{"defaultstate":"minecraft:kelp[age=0]","properties":{"age":{"type":"int","values":["0","1","2","3","4","5","6","7","8","9","10","11","12","13","14","15","16","17","18","19","20","21","22","23","24","25"]}}},"minecraft:kelp_plant":{"defaultstate":"minecraft:kelp_plant","properties":{}},"minecraft:ladder":{"defaultstate":"minecraft:ladder[facing=north,waterlogged=false]","properties":{"facing":{"type":"direction","values":["north","south","west","east"]},"waterlogged":{"type":"bool","values":["true","false"]}}},"minecraft:lantern":{"defaultstate":"minecraft:lantern[hanging=false,waterlogged=false]","properties":{"hanging":{"type":"bool","values":["true","false"]},"waterlogged":{"type":"bool","values":["true","false"]}}},"minecraft:lapis_block":{"defaultstate":"minecraft:lapis_block","properties":{}},"minecraft:lapis_ore":{"defaultstate":"minecraft:lapis_ore","properties":{}},"minecraft:large_amethyst_bud":{"defaultstate":"minecraft:large_amethyst_bud[facing=up,waterlogged=false]","properties":{"facing":{"type":"direction","values":["north","east","south","west","up","down"]},"waterlogged":{"type":"bool","values":["true","false"]}}},"minecraft:large_fern":{"defaultstate":"minecraft:large_fern[half=lower]","properties":{"half":{"type":"enum","values":["upper","lower"]}}},"minecraft:lava":{"defaultstate":"minecraft:lava[level=0]","properties":{"level":{"type":"int","values":["0","1","2","3","4","5","6","7","8","9","10","11","12","13","14","15"]}}},"minecraft:lava_cauldron":{"defaultstate":"minecraft:lava_cauldron","properties":{}},"minecraft:lectern":{"defaultstate":"minecraft:lectern[facing=north,has_book=false,powered=false]","properties":{"facing":{"type":"direction","values":["north","south","west","east"]},"has_book":{"type":"bool","values":["true","false"]},"powered":{"type":"bool","values":["true","false"]}}},"minecraft:lever":{"defaultstate":"minecraft:lever[face=wall,facing=north,powered=false]","properties":{"face":{"type":"enum","values":["floor","wall","ceiling"]},"facing":{"type":"direction","values":["north","south","west","east"]},"powered":{"type":"bool","values":["true","false"]}}},"minecraft:light":{"defaultstate":"minecraft:light[level=15,waterlogged=false]","properties":{"level":{"type":"int","values":["0","1","2","3","4","5","6","7","8","9","10","11","12","13","14","15"]},"waterlogged":{"type":"bool","values":["true","false"]}}},"minecraft:light_blue_banner":{"defaultstate":"minecraft:light_blue_banner[rotation=0]","properties":{"rotation":{"type":"int","values":["0","1","2","3","4","5","6","7","8","9","10","11","12","13","14","15"]}}},"minecraft:light_blue_bed":{"defaultstate":"minecraft:light_blue_bed[facing=north,occupied=false,part=foot]","properties":{"facing":{"type":"direction","values":["north","south","west","east"]},"occupied":{"type":"bool","values":["true","false"]},"part":{"type":"enum","values":["head","foot"]}}},"minecraft:light_blue_candle":{"defaultstate":"minecraft:light_blue_candle[candles=1,lit=false,waterlogged=false]","properties":{"candles":{"type":"int","values":["1","2","3","4"]},"lit":{"type":"bool","values":["true","false"]},"waterlogged":{"type":"bool","values":["true","false"]}}},"minecraft:light_blue_candle_cake":{"defaultstate":"minecraft:light_blue_candle_cake[lit=false]","properties":{"lit":{"type":"bool","values":["true","false"]}}},"minecraft:light_blue_carpet":{"defaultstate":"minecraft:light_blue_carpet","properties":{}},"minecraft:light_blue_concrete":{"defaultstate":"minecraft:light_blue_concrete","properties":{}},"minecraft:light_blue_concrete_powder":{"defaultstate":"minecraft:light_blue_concrete_powder","properties":{}},"minecraft:light_blue_glazed_terracotta":{"defaultstate":"minecraft:light_blue_glazed_terracotta[facing=north]","properties":{"facing":{"type":"direction","values":["north","south","west","east"]}}},"minecraft:light_blue_shulker_box":{"defaultstate":"minecraft:light_blue_shulker_box[facing=up]","properties":{"facing":{"type":"direction","values":["north","east","south","west","up","down"]}}},"minecraft:light_blue_stained_glass":{"defaultstate":"minecraft:light_blue_stained_glass","properties":{}},"minecraft:light_blue_stained_glass_pane":{"defaultstate":"minecraft:light_blue_stained_glass_pane[east=false,north=false,south=false,waterlogged=false,west=false]","properties":{"east":{"type":"bool","values":["true","false"]},"north":{"type":"bool","values":["true","false"]},"south":{"type":"bool","values":["true","false"]},"waterlogged":{"type":"bool","values":["true","false"]},"west":{"type":"bool","values":["true","false"]}}},"minecraft:light_blue_terracotta":{"defaultstate":"minecraft:light_blue_terracotta","properties":{}},"minecraft:light_blue_wall_banner":{"defaultstate":"minecraft:light_blue_wall_banner[facing=north]","properties":{"facing":{"type":"direction","values":["north","south","west","east"]}}},"minecraft:light_blue_wool":{"defaultstate":"minecraft:light_blue_wool","properties":{}},"minecraft:light_gray_banner":{"defaultstate":"minecraft:light_gray_banner[rotation=0]","properties":{"rotation":{"type":"int","values":["0","1","2","3","4","5","6","7","8","9","10","11","12","13","14","15"]}}},"minecraft:light_gray_bed":{"defaultstate":"minecraft:light_gray_bed[facing=north,occupied=false,part=foot]","properties":{"facing":{"type":"direction","values":["north","south","west","east"]},"occupied":{"type":"bool","values":["true","false"]},"part":{"type":"enum","values":["head","foot"]}}},"minecraft:light_gray_candle":{"defaultstate":"minecraft:light_gray_candle[candles=1,lit=false,waterlogged=false]","properties":{"candles":{"type":"int","values":["1","2","3","4"]},"lit":{"type":"bool","values":["true","false"]},"waterlogged":{"type":"bool","values":["true","false"]}}},"minecraft:light_gray_candle_cake":{"defaultstate":"minecraft:light_gray_candle_cake[lit=false]","properties":{"lit":{"type":"bool","values":["true","false"]}}},"minecraft:light_gray_carpet":{"defaultstate":"minecraft:light_gray_carpet","properties":{}},"minecraft:light_gray_concrete":{"defaultstate":"minecraft:light_gray_concrete","properties":{}},"minecraft:light_gray_concrete_powder":{"defaultstate":"minecraft:light_gray_concrete_powder","properties":{}},"minecraft:light_gray_glazed_terracotta":{"defaultstate":"minecraft:light_gray_glazed_terracotta[facing=north]","properties":{"facing":{"type":"direction","values":["north","south","west","east"]}}},"minecraft:light_gray_shulker_box":{"defaultstate":"minecraft:light_gray_shulker_box[facing=up]","properties":{"facing":{"type":"direction","values":["north","east","south","west","up","down"]}}},"minecraft:light_gray_stained_glass":{"defaultstate":"minecraft:light_gray_stained_glass","properties":{}},"minecraft:light_gray_stained_glass_pane":{"defaultstate":"minecraft:light_gray_stained_glass_pane[east=false,north=false,south=false,waterlogged=false,west=false]","properties":{"east":{"type":"bool","values":["true","false"]},"north":{"type":"bool","values":["true","false"]},"south":{"type":"bool","values":["true","false"]},"waterlogged":{"type":"bool","values":["true","false"]},"west":{"type":"bool","values":["true","false"]}}},"minecraft:light_gray_terracotta":{"defaultstate":"minecraft:light_gray_terracotta","properties":{}},"minecraft:light_gray_wall_banner":{"defaultstate":"minecraft:light_gray_wall_banner[facing=north]","properties":{"facing":{"type":"direction","values":["north","south","west","east"]}}},"minecraft:light_gray_wool":{"defaultstate":"minecraft:light_gray_wool","properties":{}},"minecraft:light_weighted_pressure_plate":{"defaultstate":"minecraft:light_weighted_pressure_plate[power=0]","properties":{"power":{"type":"int","values":["0","1","2","3","4","5","6","7","8","9","10","11","12","13","14","15"]}}},"minecraft:lightning_rod":{"defaultstate":"minecraft:lightning_rod[facing=up,powered=false,waterlogged=false]","properties":{"facing":{"type":"direction","values":["north","east","south","west","up","down"]},"powered":{"type":"bool","values":["true","false"]},"waterlogged":{"type":"bool","values":["true","false"]}}},"minecraft:lilac":{"defaultstate":"minecraft:lilac[half=lower]","properties":{"half":{"type":"enum","values":["upper","lower"]}}},"minecraft:lily_of_the_valley":{"defaultstate":"minecraft:lily_of_the_valley","properties":{}},"minecraft:lily_pad":{"defaultstate":"minecraft:lily_pad","properties":{}},"minecraft:lime_banner":{"defaultstate":"minecraft:lime_banner[rotation=0]","properties":{"rotation":{"type":"int","values":["0","1","2","3","4","5","6","7","8","9","10","11","12","13","14","15"]}}},"minecraft:lime_bed":{"defaultstate":"minecraft:lime_bed[facing=north,occupied=false,part=foot]","properties":{"facing":{"type":"direction","values":["north","south","west","east"]},"occupied":{"type":"bool","values":["true","false"]},"part":{"type":"enum","values":["head","foot"]}}},"minecraft:lime_candle":{"defaultstate":"minecraft:lime_candle[candles=1,lit=false,waterlogged=false]","properties":{"candles":{"type":"int","values":["1","2","3","4"]},"lit":{"type":"bool","values":["true","false"]},"waterlogged":{"type":"bool","values":["true","false"]}}},"minecraft:lime_candle_cake":{"defaultstate":"minecraft:lime_candle_cake[lit=false]","properties":{"lit":{"type":"bool","values":["true","false"]}}},"minecraft:lime_carpet":{"defaultstate":"minecraft:lime_carpet","properties":{}},"minecraft:lime_concrete":{"defaultstate":"minecraft:lime_concrete","properties":{}},"minecraft:lime_concrete_powder":{"defaultstate":"minecraft:lime_concrete_powder","properties":{}},"minecraft:lime_glazed_terracotta":{"defaultstate":"minecraft:lime_glazed_terracotta[facing=north]","properties":{"facing":{"type":"direction","values":["north","south","west","east"]}}},"minecraft:lime_shulker_box":{"defaultstate":"minecraft:lime_shulker_box[facing=up]","properties":{"facing":{"type":"direction","values":["north","east","south","west","up","down"]}}},"minecraft:lime_stained_glass":{"defaultstate":"minecraft:lime_stained_glass","properties":{}},"minecraft:lime_stained_glass_pane":{"defaultstate":"minecraft:lime_stained_glass_pane[east=false,north=false,south=false,waterlogged=false,west=false]","properties":{"east":{"type":"bool","values":["true","false"]},"north":{"type":"bool","values":["true","false"]},"south":{"type":"bool","values":["true","false"]},"waterlogged":{"type":"bool","values":["true","false"]},"west":{"type":"bool","values":["true","false"]}}},"minecraft:lime_terracotta":{"defaultstate":"minecraft:lime_terracotta","properties":{}},"minecraft:lime_wall_banner":{"defaultstate":"minecraft:lime_wall_banner[facing=north]","properties":{"facing":{"type":"direction","values":["north","south","west","east"]}}},"minecraft:lime_wool":{"defaultstate":"minecraft:lime_wool","properties":{}},"minecraft:lodestone":{"defaultstate":"minecraft:lodestone","properties":{}},"minecraft:loom":{"defaultstate":"minecraft:loom[facing=north]","properties":{"facing":{"type":"direction","values":["north","south","west","east"]}}},"minecraft:magenta_banner":{"defaultstate":"minecraft:magenta_banner[rotation=0]","properties":{"rotation":{"type":"int","values":["0","1","2","3","4","5","6","7","8","9","10","11","12","13","14","15"]}}},"minecraft:magenta_bed":{"defaultstate":"minecraft:magenta_bed[facing=north,occupied=false,part=foot]","properties":{"facing":{"type":"direction","values":["north","south","west","east"]},"occupied":{"type":"bool","values":["true","false"]},"part":{"type":"enum","values":["head","foot"]}}},"minecraft:magenta_candle":{"defaultstate":"minecraft:magenta_candle[candles=1,lit=false,waterlogged=false]","properties":{"candles":{"type":"int","values":["1","2","3","4"]},"lit":{"type":"bool","values":["true","false"]},"waterlogged":{"type":"bool","values":["true","false"]}}},"minecraft:magenta_candle_cake":{"defaultstate":"minecraft:magenta_candle_cake[lit=false]","properties":{"lit":{"type":"bool","values":["true","false"]}}},"minecraft:magenta_carpet":{"defaultstate":"minecraft:magenta_carpet","properties":{}},"minecraft:magenta_concrete":{"defaultstate":"minecraft:magenta_concrete","properties":{}},"minecraft:magenta_concrete_powder":{"defaultstate":"minecraft:magenta_concrete_powder","properties":{}},"minecraft:magenta_glazed_terracotta":{"defaultstate":"minecraft:magenta_glazed_terracotta[facing=north]","properties":{"facing":{"type":"direction","values":["north","south","west","east"]}}},"minecraft:magenta_shulker_box":{"defaultstate":"minecraft:magenta_shulker_box[facing=up]","properties":{"facing":{"type":"direction","values":["north","east","south","west","up","down"]}}},"minecraft:magenta_stained_glass":{"defaultstate":"minecraft:magenta_stained_glass","properties":{}},"minecraft:magenta_stained_glass_pane":{"defaultstate":"minecraft:magenta_stained_glass_pane[east=false,north=false,south=false,waterlogged=false,west=false]","properties":{"east":{"type":"bool","values":["true","false"]},"north":{"type":"bool","values":["true","false"]},"south":{"type":"bool","values":["true","false"]},"waterlogged":{"type":"bool","values":["true","false"]},"west":{"type":"bool","values":["true","false"]}}},"minecraft:magenta_terracotta":{"defaultstate":"minecraft:magenta_terracotta","properties":{}},"minecraft:magenta_wall_banner":{"defaultstate":"minecraft:magenta_wall_banner[facing=north]","properties":{"facing":{"type":"direction","values":["north","south","west","east"]}}},"minecraft:magenta_wool":{"defaultstate":"minecraft:magenta_wool","properties":{}},"minecraft:magma_block":{"defaultstate":"minecraft:magma_block","properties":{}},"minecraft:mangrove_button":{"defaultstate":"minecraft:mangrove_button[face=wall,facing=north,powered=false]","properties":{"face":{"type":"enum","values":["floor","wall","ceiling"]},"facing":{"type":"direction","values":["north","south","west","east"]},"powered":{"type":"bool","values":["true","false"]}}},"minecraft:mangrove_door":{"defaultstate":"minecraft:mangrove_door[facing=north,half=lower,hinge=left,open=false,powered=false]","properties":{"facing":{"type":"direction","values":["north","south","west","east"]},"half":{"type":"enum","values":["upper","lower"]},"hinge":{"type":"enum","values":["left","right"]},"open":{"type":"bool","values":["true","false"]},"powered":{"type":"bool","values":["true","false"]}}},"minecraft:mangrove_fence":{"defaultstate":"minecraft:mangrove_fence[east=false,north=false,south=false,waterlogged=false,west=false]","properties":{"east":{"type":"bool","values":["true","false"]},"north":{"type":"bool","values":["true","false"]},"south":{"type":"bool","values":["true","false"]},"waterlogged":{"type":"bool","values":["true","false"]},"west":{"type":"bool","values":["true","false"]}}},"minecraft:mangrove_fence_gate":{"defaultstate":"minecraft:mangrove_fence_gate[facing=north,in_wall=false,open=false,powered=false]","properties":{"facing":{"type":"direction","values":["north","south","west","east"]},"in_wall":{"type":"bool","values":["true","false"]},"open":{"type":"bool","values":["true","false"]},"powered":{"type":"bool","values":["true","false"]}}},"minecraft:mangrove_leaves":{"defaultstate":"minecraft:mangrove_leaves[distance=7,persistent=false,waterlogged=false]","properties":{"distance":{"type":"int","values":["1","2","3","4","5","6","7"]},"persistent":{"type":"bool","values":["true","false"]},"waterlogged":{"type":"bool","values":["true","false"]}}},"minecraft:mangrove_log":{"defaultstate":"minecraft:mangrove_log[axis=y]","properties":{"axis":{"type":"enum","values":["x","y","z"]}}},"minecraft:mangrove_planks":{"defaultstate":"minecraft:mangrove_planks","properties":{}},"minecraft:mangrove_pressure_plate":{"defaultstate":"minecraft:mangrove_pressure_plate[powered=false]","properties":{"powered":{"type":"bool","values":["true","false"]}}},"minecraft:mangrove_propagule":{"defaultstate":"minecraft:mangrove_propagule[age=0,hanging=false,stage=0,waterlogged=false]","properties":{"age":{"type":"int","values":["0","1","2","3","4"]},"hanging":{"type":"bool","values":["true","false"]},"stage":{"type":"int","values":["0","1"]},"waterlogged":{"type":"bool","values":["true","false"]}}},"minecraft:mangrove_roots":{"defaultstate":"minecraft:mangrove_roots[waterlogged=false]","properties":{"waterlogged":{"type":"bool","values":["true","false"]}}},"minecraft:mangrove_sign":{"defaultstate":"minecraft:mangrove_sign[rotation=0,waterlogged=false]","properties":{"rotation":{"type":"int","values":["0","1","2","3","4","5","6","7","8","9","10","11","12","13","14","15"]},"waterlogged":{"type":"bool","values":["true","false"]}}},"minecraft:mangrove_slab":{"defaultstate":"minecraft:mangrove_slab[type=bottom,waterlogged=false]","properties":{"type":{"type":"enum","values":["top","bottom","double"]},"waterlogged":{"type":"bool","values":["true","false"]}}},"minecraft:mangrove_stairs":{"defaultstate":"minecraft:mangrove_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]","properties":{"facing":{"type":"direction","values":["north","south","west","east"]},"half":{"type":"enum","values":["top","bottom"]},"shape":{"type":"enum","values":["straight","inner_left","inner_right","outer_left","outer_right"]},"waterlogged":{"type":"bool","values":["true","false"]}}},"minecraft:mangrove_trapdoor":{"defaultstate":"minecraft:mangrove_trapdoor[facing=north,half=bottom,open=false,powered=false,waterlogged=false]","properties":{"facing":{"type":"direction","values":["north","south","west","east"]},"half":{"type":"enum","values":["top","bottom"]},"open":{"type":"bool","values":["true","false"]},"powered":{"type":"bool","values":["true","false"]},"waterlogged":{"type":"bool","values":["true","false"]}}},"minecraft:mangrove_wall_sign":{"defaultstate":"minecraft:mangrove_wall_sign[facing=north,waterlogged=false]","properties":{"facing":{"type":"direction","values":["north","south","west","east"]},"waterlogged":{"type":"bool","values":["true","false"]}}},"minecraft:mangrove_wood":{"defaultstate":"minecraft:mangrove_wood[axis=y]","properties":{"axis":{"type":"enum","values":["x","y","z"]}}},"minecraft:medium_amethyst_bud":{"defaultstate":"minecraft:medium_amethyst_bud[facing=up,waterlogged=false]","properties":{"facing":{"type":"direction","values":["north","east","south","west","up","down"]},"waterlogged":{"type":"bool","values":["true","false"]}}},"minecraft:melon":{"defaultstate":"minecraft:melon","properties":{}},"minecraft:melon_stem":{"defaultstate":"minecraft:melon_stem[age=0]","properties":{"age":{"type":"int","values":["0","1","2","3","4","5","6","7"]}}},"minecraft:moss_block":{"defaultstate":"minecraft:moss_block","properties":{}},"minecraft:moss_carpet":{"defaultstate":"minecraft:moss_carpet","properties":{}},"minecraft:mossy_cobblestone":{"defaultstate":"minecraft:mossy_cobblestone","properties":{}},"minecraft:mossy_cobblestone_slab":{"defaultstate":"minecraft:mossy_cobblestone_slab[type=bottom,waterlogged=false]","properties":{"type":{"type":"enum","values":["top","bottom","double"]},"waterlogged":{"type":"bool","values":["true","false"]}}},"minecraft:mossy_cobblestone_stairs":{"defaultstate":"minecraft:mossy_cobblestone_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]","properties":{"facing":{"type":"direction","values":["north","south","west","east"]},"half":{"type":"enum","values":["top","bottom"]},"shape":{"type":"enum","values":["straight","inner_left","inner_right","outer_left","outer_right"]},"waterlogged":{"type":"bool","values":["true","false"]}}},"minecraft:mossy_cobblestone_wall":{"defaultstate":"minecraft:mossy_cobblestone_wall[east=none,north=none,south=none,up=true,waterlogged=false,west=none]","properties":{"east":{"type":"enum","values":["none","low","tall"]},"north":{"type":"enum","values":["none","low","tall"]},"south":{"type":"enum","values":["none","low","tall"]},"up":{"type":"bool","values":["true","false"]},"waterlogged":{"type":"bool","values":["true","false"]},"west":{"type":"enum","values":["none","low","tall"]}}},"minecraft:mossy_stone_brick_slab":{"defaultstate":"minecraft:mossy_stone_brick_slab[type=bottom,waterlogged=false]","properties":{"type":{"type":"enum","values":["top","bottom","double"]},"waterlogged":{"type":"bool","values":["true","false"]}}},"minecraft:mossy_stone_brick_stairs":{"defaultstate":"minecraft:mossy_stone_brick_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]","properties":{"facing":{"type":"direction","values":["north","south","west","east"]},"half":{"type":"enum","values":["top","bottom"]},"shape":{"type":"enum","values":["straight","inner_left","inner_right","outer_left","outer_right"]},"waterlogged":{"type":"bool","values":["true","false"]}}},"minecraft:mossy_stone_brick_wall":{"defaultstate":"minecraft:mossy_stone_brick_wall[east=none,north=none,south=none,up=true,waterlogged=false,west=none]","properties":{"east":{"type":"enum","values":["none","low","tall"]},"north":{"type":"enum","values":["none","low","tall"]},"south":{"type":"enum","values":["none","low","tall"]},"up":{"type":"bool","values":["true","false"]},"waterlogged":{"type":"bool","values":["true","false"]},"west":{"type":"enum","values":["none","low","tall"]}}},"minecraft:mossy_stone_bricks":{"defaultstate":"minecraft:mossy_stone_bricks","properties":{}},"minecraft:moving_piston":{"defaultstate":"minecraft:moving_piston[facing=north,type=normal]","properties":{"facing":{"type":"direction","values":["north","east","south","west","up","down"]},"type":{"type":"enum","values":["normal","sticky"]}}},"minecraft:mud":{"defaultstate":"minecraft:mud","properties":{}},"minecraft:mud_brick_slab":{"defaultstate":"minecraft:mud_brick_slab[type=bottom,waterlogged=false]","properties":{"type":{"type":"enum","values":["top","bottom","double"]},"waterlogged":{"type":"bool","values":["true","false"]}}},"minecraft:mud_brick_stairs":{"defaultstate":"minecraft:mud_brick_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]","properties":{"facing":{"type":"direction","values":["north","south","west","east"]},"half":{"type":"enum","values":["top","bottom"]},"shape":{"type":"enum","values":["straight","inner_left","inner_right","outer_left","outer_right"]},"waterlogged":{"type":"bool","values":["true","false"]}}},"minecraft:mud_brick_wall":{"defaultstate":"minecraft:mud_brick_wall[east=none,north=none,south=none,up=true,waterlogged=false,west=none]","properties":{"east":{"type":"enum","values":["none","low","tall"]},"north":{"type":"enum","values":["none","low","tall"]},"south":{"type":"enum","values":["none","low","tall"]},"up":{"type":"bool","values":["true","false"]},"waterlogged":{"type":"bool","values":["true","false"]},"west":{"type":"enum","values":["none","low","tall"]}}},"minecraft:mud_bricks":{"defaultstate":"minecraft:mud_bricks","properties":{}},"minecraft:muddy_mangrove_roots":{"defaultstate":"minecraft:muddy_mangrove_roots[axis=y]","properties":{"axis":{"type":"enum","values":["x","y","z"]}}},"minecraft:mushroom_stem":{"defaultstate":"minecraft:mushroom_stem[down=true,east=true,north=true,south=true,up=true,west=true]","properties":{"down":{"type":"bool","values":["true","false"]},"east":{"type":"bool","values":["true","false"]},"north":{"type":"bool","values":["true","false"]},"south":{"type":"bool","values":["true","false"]},"up":{"type":"bool","values":["true","false"]},"west":{"type":"bool","values":["true","false"]}}},"minecraft:mycelium":{"defaultstate":"minecraft:mycelium[snowy=false]","properties":{"snowy":{"type":"bool","values":["true","false"]}}},"minecraft:nether_brick_fence":{"defaultstate":"minecraft:nether_brick_fence[east=false,north=false,south=false,waterlogged=false,west=false]","properties":{"east":{"type":"bool","values":["true","false"]},"north":{"type":"bool","values":["true","false"]},"south":{"type":"bool","values":["true","false"]},"waterlogged":{"type":"bool","values":["true","false"]},"west":{"type":"bool","values":["true","false"]}}},"minecraft:nether_brick_slab":{"defaultstate":"minecraft:nether_brick_slab[type=bottom,waterlogged=false]","properties":{"type":{"type":"enum","values":["top","bottom","double"]},"waterlogged":{"type":"bool","values":["true","false"]}}},"minecraft:nether_brick_stairs":{"defaultstate":"minecraft:nether_brick_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]","properties":{"facing":{"type":"direction","values":["north","south","west","east"]},"half":{"type":"enum","values":["top","bottom"]},"shape":{"type":"enum","values":["straight","inner_left","inner_right","outer_left","outer_right"]},"waterlogged":{"type":"bool","values":["true","false"]}}},"minecraft:nether_brick_wall":{"defaultstate":"minecraft:nether_brick_wall[east=none,north=none,south=none,up=true,waterlogged=false,west=none]","properties":{"east":{"type":"enum","values":["none","low","tall"]},"north":{"type":"enum","values":["none","low","tall"]},"south":{"type":"enum","values":["none","low","tall"]},"up":{"type":"bool","values":["true","false"]},"waterlogged":{"type":"bool","values":["true","false"]},"west":{"type":"enum","values":["none","low","tall"]}}},"minecraft:nether_bricks":{"defaultstate":"minecraft:nether_bricks","properties":{}},"minecraft:nether_gold_ore":{"defaultstate":"minecraft:nether_gold_ore","properties":{}},"minecraft:nether_portal":{"defaultstate":"minecraft:nether_portal[axis=x]","properties":{"axis":{"type":"enum","values":["x","z"]}}},"minecraft:nether_quartz_ore":{"defaultstate":"minecraft:nether_quartz_ore","properties":{}},"minecraft:nether_sprouts":{"defaultstate":"minecraft:nether_sprouts","properties":{}},"minecraft:nether_wart":{"defaultstate":"minecraft:nether_wart[age=0]","properties":{"age":{"type":"int","values":["0","1","2","3"]}}},"minecraft:nether_wart_block":{"defaultstate":"minecraft:nether_wart_block","properties":{}},"minecraft:netherite_block":{"defaultstate":"minecraft:netherite_block","properties":{}},"minecraft:netherrack":{"defaultstate":"minecraft:netherrack","properties":{}},"minecraft:note_block":{"defaultstate":"minecraft:note_block[instrument=harp,note=0,powered=false]","properties":{"instrument":{"type":"enum","values":["harp","basedrum","snare","hat","bass","flute","bell","guitar","chime","xylophone","iron_xylophone","cow_bell","didgeridoo","bit","banjo","pling"]},"note":{"type":"int","values":["0","1","2","3","4","5","6","7","8","9","10","11","12","13","14","15","16","17","18","19","20","21","22","23","24"]},"powered":{"type":"bool","values":["true","false"]}}},"minecraft:oak_button":{"defaultstate":"minecraft:oak_button[face=wall,facing=north,powered=false]","properties":{"face":{"type":"enum","values":["floor","wall","ceiling"]},"facing":{"type":"direction","values":["north","south","west","east"]},"powered":{"type":"bool","values":["true","false"]}}},"minecraft:oak_door":{"defaultstate":"minecraft:oak_door[facing=north,half=lower,hinge=left,open=false,powered=false]","properties":{"facing":{"type":"direction","values":["north","south","west","east"]},"half":{"type":"enum","values":["upper","lower"]},"hinge":{"type":"enum","values":["left","right"]},"open":{"type":"bool","values":["true","false"]},"powered":{"type":"bool","values":["true","false"]}}},"minecraft:oak_fence":{"defaultstate":"minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]","properties":{"east":{"type":"bool","values":["true","false"]},"north":{"type":"bool","values":["true","false"]},"south":{"type":"bool","values":["true","false"]},"waterlogged":{"type":"bool","values":["true","false"]},"west":{"type":"bool","values":["true","false"]}}},"minecraft:oak_fence_gate":{"defaultstate":"minecraft:oak_fence_gate[facing=north,in_wall=false,open=false,powered=false]","properties":{"facing":{"type":"direction","values":["north","south","west","east"]},"in_wall":{"type":"bool","values":["true","false"]},"open":{"type":"bool","values":["true","false"]},"powered":{"type":"bool","values":["true","false"]}}},"minecraft:oak_leaves":{"defaultstate":"minecraft:oak_leaves[distance=7,persistent=false,waterlogged=false]","properties":{"distance":{"type":"int","values":["1","2","3","4","5","6","7"]},"persistent":{"type":"bool","values":["true","false"]},"waterlogged":{"type":"bool","values":["true","false"]}}},"minecraft:oak_log":{"defaultstate":"minecraft:oak_log[axis=y]","properties":{"axis":{"type":"enum","values":["x","y","z"]}}},"minecraft:oak_planks":{"defaultstate":"minecraft:oak_planks","properties":{}},"minecraft:oak_pressure_plate":{"defaultstate":"minecraft:oak_pressure_plate[powered=false]","properties":{"powered":{"type":"bool","values":["true","false"]}}},"minecraft:oak_sapling":{"defaultstate":"minecraft:oak_sapling[stage=0]","properties":{"stage":{"type":"int","values":["0","1"]}}},"minecraft:oak_sign":{"defaultstate":"minecraft:oak_sign[rotation=0,waterlogged=false]","properties":{"rotation":{"type":"int","values":["0","1","2","3","4","5","6","7","8","9","10","11","12","13","14","15"]},"waterlogged":{"type":"bool","values":["true","false"]}}},"minecraft:oak_slab":{"defaultstate":"minecraft:oak_slab[type=bottom,waterlogged=false]","properties":{"type":{"type":"enum","values":["top","bottom","double"]},"waterlogged":{"type":"bool","values":["true","false"]}}},"minecraft:oak_stairs":{"defaultstate":"minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]","properties":{"facing":{"type":"direction","values":["north","south","west","east"]},"half":{"type":"enum","values":["top","bottom"]},"shape":{"type":"enum","values":["straight","inner_left","inner_right","outer_left","outer_right"]},"waterlogged":{"type":"bool","values":["true","false"]}}},"minecraft:oak_trapdoor":{"defaultstate":"minecraft:oak_trapdoor[facing=north,half=bottom,open=false,powered=false,waterlogged=false]","properties":{"facing":{"type":"direction","values":["north","south","west","east"]},"half":{"type":"enum","values":["top","bottom"]},"open":{"type":"bool","values":["true","false"]},"powered":{"type":"bool","values":["true","false"]},"waterlogged":{"type":"bool","values":["true","false"]}}},"minecraft:oak_wall_sign":{"defaultstate":"minecraft:oak_wall_sign[facing=north,waterlogged=false]","properties":{"facing":{"type":"direction","values":["north","south","west","east"]},"waterlogged":{"type":"bool","values":["true","false"]}}},"minecraft:oak_wood":{"defaultstate":"minecraft:oak_wood[axis=y]","properties":{"axis":{"type":"enum","values":["x","y","z"]}}},"minecraft:observer":{"defaultstate":"minecraft:observer[facing=south,powered=false]","properties":{"facing":{"type":"direction","values":["north","east","south","west","up","down"]},"powered":{"type":"bool","values":["true","false"]}}},"minecraft:obsidian":{"defaultstate":"minecraft:obsidian","properties":{}},"minecraft:ochre_froglight":{"defaultstate":"minecraft:ochre_froglight[axis=y]","properties":{"axis":{"type":"enum","values":["x","y","z"]}}},"minecraft:orange_banner":{"defaultstate":"minecraft:orange_banner[rotation=0]","properties":{"rotation":{"type":"int","values":["0","1","2","3","4","5","6","7","8","9","10","11","12","13","14","15"]}}},"minecraft:orange_bed":{"defaultstate":"minecraft:orange_bed[facing=north,occupied=false,part=foot]","properties":{"facing":{"type":"direction","values":["north","south","west","east"]},"occupied":{"type":"bool","values":["true","false"]},"part":{"type":"enum","values":["head","foot"]}}},"minecraft:orange_candle":{"defaultstate":"minecraft:orange_candle[candles=1,lit=false,waterlogged=false]","properties":{"candles":{"type":"int","values":["1","2","3","4"]},"lit":{"type":"bool","values":["true","false"]},"waterlogged":{"type":"bool","values":["true","false"]}}},"minecraft:orange_candle_cake":{"defaultstate":"minecraft:orange_candle_cake[lit=false]","properties":{"lit":{"type":"bool","values":["true","false"]}}},"minecraft:orange_carpet":{"defaultstate":"minecraft:orange_carpet","properties":{}},"minecraft:orange_concrete":{"defaultstate":"minecraft:orange_concrete","properties":{}},"minecraft:orange_concrete_powder":{"defaultstate":"minecraft:orange_concrete_powder","properties":{}},"minecraft:orange_glazed_terracotta":{"defaultstate":"minecraft:orange_glazed_terracotta[facing=north]","properties":{"facing":{"type":"direction","values":["north","south","west","east"]}}},"minecraft:orange_shulker_box":{"defaultstate":"minecraft:orange_shulker_box[facing=up]","properties":{"facing":{"type":"direction","values":["north","east","south","west","up","down"]}}},"minecraft:orange_stained_glass":{"defaultstate":"minecraft:orange_stained_glass","properties":{}},"minecraft:orange_stained_glass_pane":{"defaultstate":"minecraft:orange_stained_glass_pane[east=false,north=false,south=false,waterlogged=false,west=false]","properties":{"east":{"type":"bool","values":["true","false"]},"north":{"type":"bool","values":["true","false"]},"south":{"type":"bool","values":["true","false"]},"waterlogged":{"type":"bool","values":["true","false"]},"west":{"type":"bool","values":["true","false"]}}},"minecraft:orange_terracotta":{"defaultstate":"minecraft:orange_terracotta","properties":{}},"minecraft:orange_tulip":{"defaultstate":"minecraft:orange_tulip","properties":{}},"minecraft:orange_wall_banner":{"defaultstate":"minecraft:orange_wall_banner[facing=north]","properties":{"facing":{"type":"direction","values":["north","south","west","east"]}}},"minecraft:orange_wool":{"defaultstate":"minecraft:orange_wool","properties":{}},"minecraft:oxeye_daisy":{"defaultstate":"minecraft:oxeye_daisy","properties":{}},"minecraft:oxidized_copper":{"defaultstate":"minecraft:oxidized_copper","properties":{}},"minecraft:oxidized_cut_copper":{"defaultstate":"minecraft:oxidized_cut_copper","properties":{}},"minecraft:oxidized_cut_copper_slab":{"defaultstate":"minecraft:oxidized_cut_copper_slab[type=bottom,waterlogged=false]","properties":{"type":{"type":"enum","values":["top","bottom","double"]},"waterlogged":{"type":"bool","values":["true","false"]}}},"minecraft:oxidized_cut_copper_stairs":{"defaultstate":"minecraft:oxidized_cut_copper_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]","properties":{"facing":{"type":"direction","values":["north","south","west","east"]},"half":{"type":"enum","values":["top","bottom"]},"shape":{"type":"enum","values":["straight","inner_left","inner_right","outer_left","outer_right"]},"waterlogged":{"type":"bool","values":["true","false"]}}},"minecraft:packed_ice":{"defaultstate":"minecraft:packed_ice","properties":{}},"minecraft:packed_mud":{"defaultstate":"minecraft:packed_mud","properties":{}},"minecraft:pearlescent_froglight":{"defaultstate":"minecraft:pearlescent_froglight[axis=y]","properties":{"axis":{"type":"enum","values":["x","y","z"]}}},"minecraft:peony":{"defaultstate":"minecraft:peony[half=lower]","properties":{"half":{"type":"enum","values":["upper","lower"]}}},"minecraft:petrified_oak_slab":{"defaultstate":"minecraft:petrified_oak_slab[type=bottom,waterlogged=false]","properties":{"type":{"type":"enum","values":["top","bottom","double"]},"waterlogged":{"type":"bool","values":["true","false"]}}},"minecraft:pink_banner":{"defaultstate":"minecraft:pink_banner[rotation=0]","properties":{"rotation":{"type":"int","values":["0","1","2","3","4","5","6","7","8","9","10","11","12","13","14","15"]}}},"minecraft:pink_bed":{"defaultstate":"minecraft:pink_bed[facing=north,occupied=false,part=foot]","properties":{"facing":{"type":"direction","values":["north","south","west","east"]},"occupied":{"type":"bool","values":["true","false"]},"part":{"type":"enum","values":["head","foot"]}}},"minecraft:pink_candle":{"defaultstate":"minecraft:pink_candle[candles=1,lit=false,waterlogged=false]","properties":{"candles":{"type":"int","values":["1","2","3","4"]},"lit":{"type":"bool","values":["true","false"]},"waterlogged":{"type":"bool","values":["true","false"]}}},"minecraft:pink_candle_cake":{"defaultstate":"minecraft:pink_candle_cake[lit=false]","properties":{"lit":{"type":"bool","values":["true","false"]}}},"minecraft:pink_carpet":{"defaultstate":"minecraft:pink_carpet","properties":{}},"minecraft:pink_concrete":{"defaultstate":"minecraft:pink_concrete","properties":{}},"minecraft:pink_concrete_powder":{"defaultstate":"minecraft:pink_concrete_powder","properties":{}},"minecraft:pink_glazed_terracotta":{"defaultstate":"minecraft:pink_glazed_terracotta[facing=north]","properties":{"facing":{"type":"direction","values":["north","south","west","east"]}}},"minecraft:pink_shulker_box":{"defaultstate":"minecraft:pink_shulker_box[facing=up]","properties":{"facing":{"type":"direction","values":["north","east","south","west","up","down"]}}},"minecraft:pink_stained_glass":{"defaultstate":"minecraft:pink_stained_glass","properties":{}},"minecraft:pink_stained_glass_pane":{"defaultstate":"minecraft:pink_stained_glass_pane[east=false,north=false,south=false,waterlogged=false,west=false]","properties":{"east":{"type":"bool","values":["true","false"]},"north":{"type":"bool","values":["true","false"]},"south":{"type":"bool","values":["true","false"]},"waterlogged":{"type":"bool","values":["true","false"]},"west":{"type":"bool","values":["true","false"]}}},"minecraft:pink_terracotta":{"defaultstate":"minecraft:pink_terracotta","properties":{}},"minecraft:pink_tulip":{"defaultstate":"minecraft:pink_tulip","properties":{}},"minecraft:pink_wall_banner":{"defaultstate":"minecraft:pink_wall_banner[facing=north]","properties":{"facing":{"type":"direction","values":["north","south","west","east"]}}},"minecraft:pink_wool":{"defaultstate":"minecraft:pink_wool","properties":{}},"minecraft:piston":{"defaultstate":"minecraft:piston[extended=false,facing=north]","properties":{"extended":{"type":"bool","values":["true","false"]},"facing":{"type":"direction","values":["north","east","south","west","up","down"]}}},"minecraft:piston_head":{"defaultstate":"minecraft:piston_head[facing=north,short=false,type=normal]","properties":{"facing":{"type":"direction","values":["north","east","south","west","up","down"]},"short":{"type":"bool","values":["true","false"]},"type":{"type":"enum","values":["normal","sticky"]}}},"minecraft:player_head":{"defaultstate":"minecraft:player_head[rotation=0]","properties":{"rotation":{"type":"int","values":["0","1","2","3","4","5","6","7","8","9","10","11","12","13","14","15"]}}},"minecraft:player_wall_head":{"defaultstate":"minecraft:player_wall_head[facing=north]","properties":{"facing":{"type":"direction","values":["north","south","west","east"]}}},"minecraft:podzol":{"defaultstate":"minecraft:podzol[snowy=false]","properties":{"snowy":{"type":"bool","values":["true","false"]}}},"minecraft:pointed_dripstone":{"defaultstate":"minecraft:pointed_dripstone[thickness=tip,vertical_direction=up,waterlogged=false]","properties":{"thickness":{"type":"enum","values":["tip_merge","tip","frustum","middle","base"]},"vertical_direction":{"type":"direction","values":["up","down"]},"waterlogged":{"type":"bool","values":["true","false"]}}},"minecraft:polished_andesite":{"defaultstate":"minecraft:polished_andesite","properties":{}},"minecraft:polished_andesite_slab":{"defaultstate":"minecraft:polished_andesite_slab[type=bottom,waterlogged=false]","properties":{"type":{"type":"enum","values":["top","bottom","double"]},"waterlogged":{"type":"bool","values":["true","false"]}}},"minecraft:polished_andesite_stairs":{"defaultstate":"minecraft:polished_andesite_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]","properties":{"facing":{"type":"direction","values":["north","south","west","east"]},"half":{"type":"enum","values":["top","bottom"]},"shape":{"type":"enum","values":["straight","inner_left","inner_right","outer_left","outer_right"]},"waterlogged":{"type":"bool","values":["true","false"]}}},"minecraft:polished_basalt":{"defaultstate":"minecraft:polished_basalt[axis=y]","properties":{"axis":{"type":"enum","values":["x","y","z"]}}},"minecraft:polished_blackstone":{"defaultstate":"minecraft:polished_blackstone","properties":{}},"minecraft:polished_blackstone_brick_slab":{"defaultstate":"minecraft:polished_blackstone_brick_slab[type=bottom,waterlogged=false]","properties":{"type":{"type":"enum","values":["top","bottom","double"]},"waterlogged":{"type":"bool","values":["true","false"]}}},"minecraft:polished_blackstone_brick_stairs":{"defaultstate":"minecraft:polished_blackstone_brick_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]","properties":{"facing":{"type":"direction","values":["north","south","west","east"]},"half":{"type":"enum","values":["top","bottom"]},"shape":{"type":"enum","values":["straight","inner_left","inner_right","outer_left","outer_right"]},"waterlogged":{"type":"bool","values":["true","false"]}}},"minecraft:polished_blackstone_brick_wall":{"defaultstate":"minecraft:polished_blackstone_brick_wall[east=none,north=none,south=none,up=true,waterlogged=false,west=none]","properties":{"east":{"type":"enum","values":["none","low","tall"]},"north":{"type":"enum","values":["none","low","tall"]},"south":{"type":"enum","values":["none","low","tall"]},"up":{"type":"bool","values":["true","false"]},"waterlogged":{"type":"bool","values":["true","false"]},"west":{"type":"enum","values":["none","low","tall"]}}},"minecraft:polished_blackstone_bricks":{"defaultstate":"minecraft:polished_blackstone_bricks","properties":{}},"minecraft:polished_blackstone_button":{"defaultstate":"minecraft:polished_blackstone_button[face=wall,facing=north,powered=false]","properties":{"face":{"type":"enum","values":["floor","wall","ceiling"]},"facing":{"type":"direction","values":["north","south","west","east"]},"powered":{"type":"bool","values":["true","false"]}}},"minecraft:polished_blackstone_pressure_plate":{"defaultstate":"minecraft:polished_blackstone_pressure_plate[powered=false]","properties":{"powered":{"type":"bool","values":["true","false"]}}},"minecraft:polished_blackstone_slab":{"defaultstate":"minecraft:polished_blackstone_slab[type=bottom,waterlogged=false]","properties":{"type":{"type":"enum","values":["top","bottom","double"]},"waterlogged":{"type":"bool","values":["true","false"]}}},"minecraft:polished_blackstone_stairs":{"defaultstate":"minecraft:polished_blackstone_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]","properties":{"facing":{"type":"direction","values":["north","south","west","east"]},"half":{"type":"enum","values":["top","bottom"]},"shape":{"type":"enum","values":["straight","inner_left","inner_right","outer_left","outer_right"]},"waterlogged":{"type":"bool","values":["true","false"]}}},"minecraft:polished_blackstone_wall":{"defaultstate":"minecraft:polished_blackstone_wall[east=none,north=none,south=none,up=true,waterlogged=false,west=none]","properties":{"east":{"type":"enum","values":["none","low","tall"]},"north":{"type":"enum","values":["none","low","tall"]},"south":{"type":"enum","values":["none","low","tall"]},"up":{"type":"bool","values":["true","false"]},"waterlogged":{"type":"bool","values":["true","false"]},"west":{"type":"enum","values":["none","low","tall"]}}},"minecraft:polished_deepslate":{"defaultstate":"minecraft:polished_deepslate","properties":{}},"minecraft:polished_deepslate_slab":{"defaultstate":"minecraft:polished_deepslate_slab[type=bottom,waterlogged=false]","properties":{"type":{"type":"enum","values":["top","bottom","double"]},"waterlogged":{"type":"bool","values":["true","false"]}}},"minecraft:polished_deepslate_stairs":{"defaultstate":"minecraft:polished_deepslate_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]","properties":{"facing":{"type":"direction","values":["north","south","west","east"]},"half":{"type":"enum","values":["top","bottom"]},"shape":{"type":"enum","values":["straight","inner_left","inner_right","outer_left","outer_right"]},"waterlogged":{"type":"bool","values":["true","false"]}}},"minecraft:polished_deepslate_wall":{"defaultstate":"minecraft:polished_deepslate_wall[east=none,north=none,south=none,up=true,waterlogged=false,west=none]","properties":{"east":{"type":"enum","values":["none","low","tall"]},"north":{"type":"enum","values":["none","low","tall"]},"south":{"type":"enum","values":["none","low","tall"]},"up":{"type":"bool","values":["true","false"]},"waterlogged":{"type":"bool","values":["true","false"]},"west":{"type":"enum","values":["none","low","tall"]}}},"minecraft:polished_diorite":{"defaultstate":"minecraft:polished_diorite","properties":{}},"minecraft:polished_diorite_slab":{"defaultstate":"minecraft:polished_diorite_slab[type=bottom,waterlogged=false]","properties":{"type":{"type":"enum","values":["top","bottom","double"]},"waterlogged":{"type":"bool","values":["true","false"]}}},"minecraft:polished_diorite_stairs":{"defaultstate":"minecraft:polished_diorite_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]","properties":{"facing":{"type":"direction","values":["north","south","west","east"]},"half":{"type":"enum","values":["top","bottom"]},"shape":{"type":"enum","values":["straight","inner_left","inner_right","outer_left","outer_right"]},"waterlogged":{"type":"bool","values":["true","false"]}}},"minecraft:polished_granite":{"defaultstate":"minecraft:polished_granite","properties":{}},"minecraft:polished_granite_slab":{"defaultstate":"minecraft:polished_granite_slab[type=bottom,waterlogged=false]","properties":{"type":{"type":"enum","values":["top","bottom","double"]},"waterlogged":{"type":"bool","values":["true","false"]}}},"minecraft:polished_granite_stairs":{"defaultstate":"minecraft:polished_granite_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]","properties":{"facing":{"type":"direction","values":["north","south","west","east"]},"half":{"type":"enum","values":["top","bottom"]},"shape":{"type":"enum","values":["straight","inner_left","inner_right","outer_left","outer_right"]},"waterlogged":{"type":"bool","values":["true","false"]}}},"minecraft:poppy":{"defaultstate":"minecraft:poppy","properties":{}},"minecraft:potatoes":{"defaultstate":"minecraft:potatoes[age=0]","properties":{"age":{"type":"int","values":["0","1","2","3","4","5","6","7"]}}},"minecraft:potted_acacia_sapling":{"defaultstate":"minecraft:potted_acacia_sapling","properties":{}},"minecraft:potted_allium":{"defaultstate":"minecraft:potted_allium","properties":{}},"minecraft:potted_azalea_bush":{"defaultstate":"minecraft:potted_azalea_bush","properties":{}},"minecraft:potted_azure_bluet":{"defaultstate":"minecraft:potted_azure_bluet","properties":{}},"minecraft:potted_bamboo":{"defaultstate":"minecraft:potted_bamboo","properties":{}},"minecraft:potted_birch_sapling":{"defaultstate":"minecraft:potted_birch_sapling","properties":{}},"minecraft:potted_blue_orchid":{"defaultstate":"minecraft:potted_blue_orchid","properties":{}},"minecraft:potted_brown_mushroom":{"defaultstate":"minecraft:potted_brown_mushroom","properties":{}},"minecraft:potted_cactus":{"defaultstate":"minecraft:potted_cactus","properties":{}},"minecraft:potted_cornflower":{"defaultstate":"minecraft:potted_cornflower","properties":{}},"minecraft:potted_crimson_fungus":{"defaultstate":"minecraft:potted_crimson_fungus","properties":{}},"minecraft:potted_crimson_roots":{"defaultstate":"minecraft:potted_crimson_roots","properties":{}},"minecraft:potted_dandelion":{"defaultstate":"minecraft:potted_dandelion","properties":{}},"minecraft:potted_dark_oak_sapling":{"defaultstate":"minecraft:potted_dark_oak_sapling","properties":{}},"minecraft:potted_dead_bush":{"defaultstate":"minecraft:potted_dead_bush","properties":{}},"minecraft:potted_fern":{"defaultstate":"minecraft:potted_fern","properties":{}},"minecraft:potted_flowering_azalea_bush":{"defaultstate":"minecraft:potted_flowering_azalea_bush","properties":{}},"minecraft:potted_jungle_sapling":{"defaultstate":"minecraft:potted_jungle_sapling","properties":{}},"minecraft:potted_lily_of_the_valley":{"defaultstate":"minecraft:potted_lily_of_the_valley","properties":{}},"minecraft:potted_mangrove_propagule":{"defaultstate":"minecraft:potted_mangrove_propagule","properties":{}},"minecraft:potted_oak_sapling":{"defaultstate":"minecraft:potted_oak_sapling","properties":{}},"minecraft:potted_orange_tulip":{"defaultstate":"minecraft:potted_orange_tulip","properties":{}},"minecraft:potted_oxeye_daisy":{"defaultstate":"minecraft:potted_oxeye_daisy","properties":{}},"minecraft:potted_pink_tulip":{"defaultstate":"minecraft:potted_pink_tulip","properties":{}},"minecraft:potted_poppy":{"defaultstate":"minecraft:potted_poppy","properties":{}},"minecraft:potted_red_mushroom":{"defaultstate":"minecraft:potted_red_mushroom","properties":{}},"minecraft:potted_red_tulip":{"defaultstate":"minecraft:potted_red_tulip","properties":{}},"minecraft:potted_spruce_sapling":{"defaultstate":"minecraft:potted_spruce_sapling","properties":{}},"minecraft:potted_warped_fungus":{"defaultstate":"minecraft:potted_warped_fungus","properties":{}},"minecraft:potted_warped_roots":{"defaultstate":"minecraft:potted_warped_roots","properties":{}},"minecraft:potted_white_tulip":{"defaultstate":"minecraft:potted_white_tulip","properties":{}},"minecraft:potted_wither_rose":{"defaultstate":"minecraft:potted_wither_rose","properties":{}},"minecraft:powder_snow":{"defaultstate":"minecraft:powder_snow","properties":{}},"minecraft:powder_snow_cauldron":{"defaultstate":"minecraft:powder_snow_cauldron[level=1]","properties":{"level":{"type":"int","values":["1","2","3"]}}},"minecraft:powered_rail":{"defaultstate":"minecraft:powered_rail[powered=false,shape=north_south,waterlogged=false]","properties":{"powered":{"type":"bool","values":["true","false"]},"shape":{"type":"enum","values":["north_south","east_west","ascending_east","ascending_west","ascending_north","ascending_south"]},"waterlogged":{"type":"bool","values":["true","false"]}}},"minecraft:prismarine":{"defaultstate":"minecraft:prismarine","properties":{}},"minecraft:prismarine_brick_slab":{"defaultstate":"minecraft:prismarine_brick_slab[type=bottom,waterlogged=false]","properties":{"type":{"type":"enum","values":["top","bottom","double"]},"waterlogged":{"type":"bool","values":["true","false"]}}},"minecraft:prismarine_brick_stairs":{"defaultstate":"minecraft:prismarine_brick_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]","properties":{"facing":{"type":"direction","values":["north","south","west","east"]},"half":{"type":"enum","values":["top","bottom"]},"shape":{"type":"enum","values":["straight","inner_left","inner_right","outer_left","outer_right"]},"waterlogged":{"type":"bool","values":["true","false"]}}},"minecraft:prismarine_bricks":{"defaultstate":"minecraft:prismarine_bricks","properties":{}},"minecraft:prismarine_slab":{"defaultstate":"minecraft:prismarine_slab[type=bottom,waterlogged=false]","properties":{"type":{"type":"enum","values":["top","bottom","double"]},"waterlogged":{"type":"bool","values":["true","false"]}}},"minecraft:prismarine_stairs":{"defaultstate":"minecraft:prismarine_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]","properties":{"facing":{"type":"direction","values":["north","south","west","east"]},"half":{"type":"enum","values":["top","bottom"]},"shape":{"type":"enum","values":["straight","inner_left","inner_right","outer_left","outer_right"]},"waterlogged":{"type":"bool","values":["true","false"]}}},"minecraft:prismarine_wall":{"defaultstate":"minecraft:prismarine_wall[east=none,north=none,south=none,up=true,waterlogged=false,west=none]","properties":{"east":{"type":"enum","values":["none","low","tall"]},"north":{"type":"enum","values":["none","low","tall"]},"south":{"type":"enum","values":["none","low","tall"]},"up":{"type":"bool","values":["true","false"]},"waterlogged":{"type":"bool","values":["true","false"]},"west":{"type":"enum","values":["none","low","tall"]}}},"minecraft:pumpkin":{"defaultstate":"minecraft:pumpkin","properties":{}},"minecraft:pumpkin_stem":{"defaultstate":"minecraft:pumpkin_stem[age=0]","properties":{"age":{"type":"int","values":["0","1","2","3","4","5","6","7"]}}},"minecraft:purple_banner":{"defaultstate":"minecraft:purple_banner[rotation=0]","properties":{"rotation":{"type":"int","values":["0","1","2","3","4","5","6","7","8","9","10","11","12","13","14","15"]}}},"minecraft:purple_bed":{"defaultstate":"minecraft:purple_bed[facing=north,occupied=false,part=foot]","properties":{"facing":{"type":"direction","values":["north","south","west","east"]},"occupied":{"type":"bool","values":["true","false"]},"part":{"type":"enum","values":["head","foot"]}}},"minecraft:purple_candle":{"defaultstate":"minecraft:purple_candle[candles=1,lit=false,waterlogged=false]","properties":{"candles":{"type":"int","values":["1","2","3","4"]},"lit":{"type":"bool","values":["true","false"]},"waterlogged":{"type":"bool","values":["true","false"]}}},"minecraft:purple_candle_cake":{"defaultstate":"minecraft:purple_candle_cake[lit=false]","properties":{"lit":{"type":"bool","values":["true","false"]}}},"minecraft:purple_carpet":{"defaultstate":"minecraft:purple_carpet","properties":{}},"minecraft:purple_concrete":{"defaultstate":"minecraft:purple_concrete","properties":{}},"minecraft:purple_concrete_powder":{"defaultstate":"minecraft:purple_concrete_powder","properties":{}},"minecraft:purple_glazed_terracotta":{"defaultstate":"minecraft:purple_glazed_terracotta[facing=north]","properties":{"facing":{"type":"direction","values":["north","south","west","east"]}}},"minecraft:purple_shulker_box":{"defaultstate":"minecraft:purple_shulker_box[facing=up]","properties":{"facing":{"type":"direction","values":["north","east","south","west","up","down"]}}},"minecraft:purple_stained_glass":{"defaultstate":"minecraft:purple_stained_glass","properties":{}},"minecraft:purple_stained_glass_pane":{"defaultstate":"minecraft:purple_stained_glass_pane[east=false,north=false,south=false,waterlogged=false,west=false]","properties":{"east":{"type":"bool","values":["true","false"]},"north":{"type":"bool","values":["true","false"]},"south":{"type":"bool","values":["true","false"]},"waterlogged":{"type":"bool","values":["true","false"]},"west":{"type":"bool","values":["true","false"]}}},"minecraft:purple_terracotta":{"defaultstate":"minecraft:purple_terracotta","properties":{}},"minecraft:purple_wall_banner":{"defaultstate":"minecraft:purple_wall_banner[facing=north]","properties":{"facing":{"type":"direction","values":["north","south","west","east"]}}},"minecraft:purple_wool":{"defaultstate":"minecraft:purple_wool","properties":{}},"minecraft:purpur_block":{"defaultstate":"minecraft:purpur_block","properties":{}},"minecraft:purpur_pillar":{"defaultstate":"minecraft:purpur_pillar[axis=y]","properties":{"axis":{"type":"enum","values":["x","y","z"]}}},"minecraft:purpur_slab":{"defaultstate":"minecraft:purpur_slab[type=bottom,waterlogged=false]","properties":{"type":{"type":"enum","values":["top","bottom","double"]},"waterlogged":{"type":"bool","values":["true","false"]}}},"minecraft:purpur_stairs":{"defaultstate":"minecraft:purpur_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]","properties":{"facing":{"type":"direction","values":["north","south","west","east"]},"half":{"type":"enum","values":["top","bottom"]},"shape":{"type":"enum","values":["straight","inner_left","inner_right","outer_left","outer_right"]},"waterlogged":{"type":"bool","values":["true","false"]}}},"minecraft:quartz_block":{"defaultstate":"minecraft:quartz_block","properties":{}},"minecraft:quartz_bricks":{"defaultstate":"minecraft:quartz_bricks","properties":{}},"minecraft:quartz_pillar":{"defaultstate":"minecraft:quartz_pillar[axis=y]","properties":{"axis":{"type":"enum","values":["x","y","z"]}}},"minecraft:quartz_slab":{"defaultstate":"minecraft:quartz_slab[type=bottom,waterlogged=false]","properties":{"type":{"type":"enum","values":["top","bottom","double"]},"waterlogged":{"type":"bool","values":["true","false"]}}},"minecraft:quartz_stairs":{"defaultstate":"minecraft:quartz_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]","properties":{"facing":{"type":"direction","values":["north","south","west","east"]},"half":{"type":"enum","values":["top","bottom"]},"shape":{"type":"enum","values":["straight","inner_left","inner_right","outer_left","outer_right"]},"waterlogged":{"type":"bool","values":["true","false"]}}},"minecraft:rail":{"defaultstate":"minecraft:rail[shape=north_south,waterlogged=false]","properties":{"shape":{"type":"enum","values":["north_south","east_west","ascending_east","ascending_west","ascending_north","ascending_south","south_east","south_west","north_west","north_east"]},"waterlogged":{"type":"bool","values":["true","false"]}}},"minecraft:raw_copper_block":{"defaultstate":"minecraft:raw_copper_block","properties":{}},"minecraft:raw_gold_block":{"defaultstate":"minecraft:raw_gold_block","properties":{}},"minecraft:raw_iron_block":{"defaultstate":"minecraft:raw_iron_block","properties":{}},"minecraft:red_banner":{"defaultstate":"minecraft:red_banner[rotation=0]","properties":{"rotation":{"type":"int","values":["0","1","2","3","4","5","6","7","8","9","10","11","12","13","14","15"]}}},"minecraft:red_bed":{"defaultstate":"minecraft:red_bed[facing=north,occupied=false,part=foot]","properties":{"facing":{"type":"direction","values":["north","south","west","east"]},"occupied":{"type":"bool","values":["true","false"]},"part":{"type":"enum","values":["head","foot"]}}},"minecraft:red_candle":{"defaultstate":"minecraft:red_candle[candles=1,lit=false,waterlogged=false]","properties":{"candles":{"type":"int","values":["1","2","3","4"]},"lit":{"type":"bool","values":["true","false"]},"waterlogged":{"type":"bool","values":["true","false"]}}},"minecraft:red_candle_cake":{"defaultstate":"minecraft:red_candle_cake[lit=false]","properties":{"lit":{"type":"bool","values":["true","false"]}}},"minecraft:red_carpet":{"defaultstate":"minecraft:red_carpet","properties":{}},"minecraft:red_concrete":{"defaultstate":"minecraft:red_concrete","properties":{}},"minecraft:red_concrete_powder":{"defaultstate":"minecraft:red_concrete_powder","properties":{}},"minecraft:red_glazed_terracotta":{"defaultstate":"minecraft:red_glazed_terracotta[facing=north]","properties":{"facing":{"type":"direction","values":["north","south","west","east"]}}},"minecraft:red_mushroom":{"defaultstate":"minecraft:red_mushroom","properties":{}},"minecraft:red_mushroom_block":{"defaultstate":"minecraft:red_mushroom_block[down=true,east=true,north=true,south=true,up=true,west=true]","properties":{"down":{"type":"bool","values":["true","false"]},"east":{"type":"bool","values":["true","false"]},"north":{"type":"bool","values":["true","false"]},"south":{"type":"bool","values":["true","false"]},"up":{"type":"bool","values":["true","false"]},"west":{"type":"bool","values":["true","false"]}}},"minecraft:red_nether_brick_slab":{"defaultstate":"minecraft:red_nether_brick_slab[type=bottom,waterlogged=false]","properties":{"type":{"type":"enum","values":["top","bottom","double"]},"waterlogged":{"type":"bool","values":["true","false"]}}},"minecraft:red_nether_brick_stairs":{"defaultstate":"minecraft:red_nether_brick_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]","properties":{"facing":{"type":"direction","values":["north","south","west","east"]},"half":{"type":"enum","values":["top","bottom"]},"shape":{"type":"enum","values":["straight","inner_left","inner_right","outer_left","outer_right"]},"waterlogged":{"type":"bool","values":["true","false"]}}},"minecraft:red_nether_brick_wall":{"defaultstate":"minecraft:red_nether_brick_wall[east=none,north=none,south=none,up=true,waterlogged=false,west=none]","properties":{"east":{"type":"enum","values":["none","low","tall"]},"north":{"type":"enum","values":["none","low","tall"]},"south":{"type":"enum","values":["none","low","tall"]},"up":{"type":"bool","values":["true","false"]},"waterlogged":{"type":"bool","values":["true","false"]},"west":{"type":"enum","values":["none","low","tall"]}}},"minecraft:red_nether_bricks":{"defaultstate":"minecraft:red_nether_bricks","properties":{}},"minecraft:red_sand":{"defaultstate":"minecraft:red_sand","properties":{}},"minecraft:red_sandstone":{"defaultstate":"minecraft:red_sandstone","properties":{}},"minecraft:red_sandstone_slab":{"defaultstate":"minecraft:red_sandstone_slab[type=bottom,waterlogged=false]","properties":{"type":{"type":"enum","values":["top","bottom","double"]},"waterlogged":{"type":"bool","values":["true","false"]}}},"minecraft:red_sandstone_stairs":{"defaultstate":"minecraft:red_sandstone_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]","properties":{"facing":{"type":"direction","values":["north","south","west","east"]},"half":{"type":"enum","values":["top","bottom"]},"shape":{"type":"enum","values":["straight","inner_left","inner_right","outer_left","outer_right"]},"waterlogged":{"type":"bool","values":["true","false"]}}},"minecraft:red_sandstone_wall":{"defaultstate":"minecraft:red_sandstone_wall[east=none,north=none,south=none,up=true,waterlogged=false,west=none]","properties":{"east":{"type":"enum","values":["none","low","tall"]},"north":{"type":"enum","values":["none","low","tall"]},"south":{"type":"enum","values":["none","low","tall"]},"up":{"type":"bool","values":["true","false"]},"waterlogged":{"type":"bool","values":["true","false"]},"west":{"type":"enum","values":["none","low","tall"]}}},"minecraft:red_shulker_box":{"defaultstate":"minecraft:red_shulker_box[facing=up]","properties":{"facing":{"type":"direction","values":["north","east","south","west","up","down"]}}},"minecraft:red_stained_glass":{"defaultstate":"minecraft:red_stained_glass","properties":{}},"minecraft:red_stained_glass_pane":{"defaultstate":"minecraft:red_stained_glass_pane[east=false,north=false,south=false,waterlogged=false,west=false]","properties":{"east":{"type":"bool","values":["true","false"]},"north":{"type":"bool","values":["true","false"]},"south":{"type":"bool","values":["true","false"]},"waterlogged":{"type":"bool","values":["true","false"]},"west":{"type":"bool","values":["true","false"]}}},"minecraft:red_terracotta":{"defaultstate":"minecraft:red_terracotta","properties":{}},"minecraft:red_tulip":{"defaultstate":"minecraft:red_tulip","properties":{}},"minecraft:red_wall_banner":{"defaultstate":"minecraft:red_wall_banner[facing=north]","properties":{"facing":{"type":"direction","values":["north","south","west","east"]}}},"minecraft:red_wool":{"defaultstate":"minecraft:red_wool","properties":{}},"minecraft:redstone_block":{"defaultstate":"minecraft:redstone_block","properties":{}},"minecraft:redstone_lamp":{"defaultstate":"minecraft:redstone_lamp[lit=false]","properties":{"lit":{"type":"bool","values":["true","false"]}}},"minecraft:redstone_ore":{"defaultstate":"minecraft:redstone_ore[lit=false]","properties":{"lit":{"type":"bool","values":["true","false"]}}},"minecraft:redstone_torch":{"defaultstate":"minecraft:redstone_torch[lit=true]","properties":{"lit":{"type":"bool","values":["true","false"]}}},"minecraft:redstone_wall_torch":{"defaultstate":"minecraft:redstone_wall_torch[facing=north,lit=true]","properties":{"facing":{"type":"direction","values":["north","south","west","east"]},"lit":{"type":"bool","values":["true","false"]}}},"minecraft:redstone_wire":{"defaultstate":"minecraft:redstone_wire[east=none,north=none,power=0,south=none,west=none]","properties":{"east":{"type":"enum","values":["up","side","none"]},"north":{"type":"enum","values":["up","side","none"]},"power":{"type":"int","values":["0","1","2","3","4","5","6","7","8","9","10","11","12","13","14","15"]},"south":{"type":"enum","values":["up","side","none"]},"west":{"type":"enum","values":["up","side","none"]}}},"minecraft:reinforced_deepslate":{"defaultstate":"minecraft:reinforced_deepslate","properties":{}},"minecraft:repeater":{"defaultstate":"minecraft:repeater[delay=1,facing=north,locked=false,powered=false]","properties":{"delay":{"type":"int","values":["1","2","3","4"]},"facing":{"type":"direction","values":["north","south","west","east"]},"locked":{"type":"bool","values":["true","false"]},"powered":{"type":"bool","values":["true","false"]}}},"minecraft:repeating_command_block":{"defaultstate":"minecraft:repeating_command_block[conditional=false,facing=north]","properties":{"conditional":{"type":"bool","values":["true","false"]},"facing":{"type":"direction","values":["north","east","south","west","up","down"]}}},"minecraft:respawn_anchor":{"defaultstate":"minecraft:respawn_anchor[charges=0]","properties":{"charges":{"type":"int","values":["0","1","2","3","4"]}}},"minecraft:rooted_dirt":{"defaultstate":"minecraft:rooted_dirt","properties":{}},"minecraft:rose_bush":{"defaultstate":"minecraft:rose_bush[half=lower]","properties":{"half":{"type":"enum","values":["upper","lower"]}}},"minecraft:sand":{"defaultstate":"minecraft:sand","properties":{}},"minecraft:sandstone":{"defaultstate":"minecraft:sandstone","properties":{}},"minecraft:sandstone_slab":{"defaultstate":"minecraft:sandstone_slab[type=bottom,waterlogged=false]","properties":{"type":{"type":"enum","values":["top","bottom","double"]},"waterlogged":{"type":"bool","values":["true","false"]}}},"minecraft:sandstone_stairs":{"defaultstate":"minecraft:sandstone_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]","properties":{"facing":{"type":"direction","values":["north","south","west","east"]},"half":{"type":"enum","values":["top","bottom"]},"shape":{"type":"enum","values":["straight","inner_left","inner_right","outer_left","outer_right"]},"waterlogged":{"type":"bool","values":["true","false"]}}},"minecraft:sandstone_wall":{"defaultstate":"minecraft:sandstone_wall[east=none,north=none,south=none,up=true,waterlogged=false,west=none]","properties":{"east":{"type":"enum","values":["none","low","tall"]},"north":{"type":"enum","values":["none","low","tall"]},"south":{"type":"enum","values":["none","low","tall"]},"up":{"type":"bool","values":["true","false"]},"waterlogged":{"type":"bool","values":["true","false"]},"west":{"type":"enum","values":["none","low","tall"]}}},"minecraft:scaffolding":{"defaultstate":"minecraft:scaffolding[bottom=false,distance=7,waterlogged=false]","properties":{"bottom":{"type":"bool","values":["true","false"]},"distance":{"type":"int","values":["0","1","2","3","4","5","6","7"]},"waterlogged":{"type":"bool","values":["true","false"]}}},"minecraft:sculk":{"defaultstate":"minecraft:sculk","properties":{}},"minecraft:sculk_catalyst":{"defaultstate":"minecraft:sculk_catalyst[bloom=false]","properties":{"bloom":{"type":"bool","values":["true","false"]}}},"minecraft:sculk_sensor":{"defaultstate":"minecraft:sculk_sensor[power=0,sculk_sensor_phase=inactive,waterlogged=false]","properties":{"power":{"type":"int","values":["0","1","2","3","4","5","6","7","8","9","10","11","12","13","14","15"]},"sculk_sensor_phase":{"type":"enum","values":["inactive","active","cooldown"]},"waterlogged":{"type":"bool","values":["true","false"]}}},"minecraft:sculk_shrieker":{"defaultstate":"minecraft:sculk_shrieker[can_summon=false,shrieking=false,waterlogged=false]","properties":{"can_summon":{"type":"bool","values":["true","false"]},"shrieking":{"type":"bool","values":["true","false"]},"waterlogged":{"type":"bool","values":["true","false"]}}},"minecraft:sculk_vein":{"defaultstate":"minecraft:sculk_vein[down=false,east=false,north=false,south=false,up=false,waterlogged=false,west=false]","properties":{"down":{"type":"bool","values":["true","false"]},"east":{"type":"bool","values":["true","false"]},"north":{"type":"bool","values":["true","false"]},"south":{"type":"bool","values":["true","false"]},"up":{"type":"bool","values":["true","false"]},"waterlogged":{"type":"bool","values":["true","false"]},"west":{"type":"bool","values":["true","false"]}}},"minecraft:sea_lantern":{"defaultstate":"minecraft:sea_lantern","properties":{}},"minecraft:sea_pickle":{"defaultstate":"minecraft:sea_pickle[pickles=1,waterlogged=true]","properties":{"pickles":{"type":"int","values":["1","2","3","4"]},"waterlogged":{"type":"bool","values":["true","false"]}}},"minecraft:seagrass":{"defaultstate":"minecraft:seagrass","properties":{}},"minecraft:shroomlight":{"defaultstate":"minecraft:shroomlight","properties":{}},"minecraft:shulker_box":{"defaultstate":"minecraft:shulker_box[facing=up]","properties":{"facing":{"type":"direction","values":["north","east","south","west","up","down"]}}},"minecraft:skeleton_skull":{"defaultstate":"minecraft:skeleton_skull[rotation=0]","properties":{"rotation":{"type":"int","values":["0","1","2","3","4","5","6","7","8","9","10","11","12","13","14","15"]}}},"minecraft:skeleton_wall_skull":{"defaultstate":"minecraft:skeleton_wall_skull[facing=north]","properties":{"facing":{"type":"direction","values":["north","south","west","east"]}}},"minecraft:slime_block":{"defaultstate":"minecraft:slime_block","properties":{}},"minecraft:small_amethyst_bud":{"defaultstate":"minecraft:small_amethyst_bud[facing=up,waterlogged=false]","properties":{"facing":{"type":"direction","values":["north","east","south","west","up","down"]},"waterlogged":{"type":"bool","values":["true","false"]}}},"minecraft:small_dripleaf":{"defaultstate":"minecraft:small_dripleaf[facing=north,half=lower,waterlogged=false]","properties":{"facing":{"type":"direction","values":["north","south","west","east"]},"half":{"type":"enum","values":["upper","lower"]},"waterlogged":{"type":"bool","values":["true","false"]}}},"minecraft:smithing_table":{"defaultstate":"minecraft:smithing_table","properties":{}},"minecraft:smoker":{"defaultstate":"minecraft:smoker[facing=north,lit=false]","properties":{"facing":{"type":"direction","values":["north","south","west","east"]},"lit":{"type":"bool","values":["true","false"]}}},"minecraft:smooth_basalt":{"defaultstate":"minecraft:smooth_basalt","properties":{}},"minecraft:smooth_quartz":{"defaultstate":"minecraft:smooth_quartz","properties":{}},"minecraft:smooth_quartz_slab":{"defaultstate":"minecraft:smooth_quartz_slab[type=bottom,waterlogged=false]","properties":{"type":{"type":"enum","values":["top","bottom","double"]},"waterlogged":{"type":"bool","values":["true","false"]}}},"minecraft:smooth_quartz_stairs":{"defaultstate":"minecraft:smooth_quartz_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]","properties":{"facing":{"type":"direction","values":["north","south","west","east"]},"half":{"type":"enum","values":["top","bottom"]},"shape":{"type":"enum","values":["straight","inner_left","inner_right","outer_left","outer_right"]},"waterlogged":{"type":"bool","values":["true","false"]}}},"minecraft:smooth_red_sandstone":{"defaultstate":"minecraft:smooth_red_sandstone","properties":{}},"minecraft:smooth_red_sandstone_slab":{"defaultstate":"minecraft:smooth_red_sandstone_slab[type=bottom,waterlogged=false]","properties":{"type":{"type":"enum","values":["top","bottom","double"]},"waterlogged":{"type":"bool","values":["true","false"]}}},"minecraft:smooth_red_sandstone_stairs":{"defaultstate":"minecraft:smooth_red_sandstone_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]","properties":{"facing":{"type":"direction","values":["north","south","west","east"]},"half":{"type":"enum","values":["top","bottom"]},"shape":{"type":"enum","values":["straight","inner_left","inner_right","outer_left","outer_right"]},"waterlogged":{"type":"bool","values":["true","false"]}}},"minecraft:smooth_sandstone":{"defaultstate":"minecraft:smooth_sandstone","properties":{}},"minecraft:smooth_sandstone_slab":{"defaultstate":"minecraft:smooth_sandstone_slab[type=bottom,waterlogged=false]","properties":{"type":{"type":"enum","values":["top","bottom","double"]},"waterlogged":{"type":"bool","values":["true","false"]}}},"minecraft:smooth_sandstone_stairs":{"defaultstate":"minecraft:smooth_sandstone_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]","properties":{"facing":{"type":"direction","values":["north","south","west","east"]},"half":{"type":"enum","values":["top","bottom"]},"shape":{"type":"enum","values":["straight","inner_left","inner_right","outer_left","outer_right"]},"waterlogged":{"type":"bool","values":["true","false"]}}},"minecraft:smooth_stone":{"defaultstate":"minecraft:smooth_stone","properties":{}},"minecraft:smooth_stone_slab":{"defaultstate":"minecraft:smooth_stone_slab[type=bottom,waterlogged=false]","properties":{"type":{"type":"enum","values":["top","bottom","double"]},"waterlogged":{"type":"bool","values":["true","false"]}}},"minecraft:snow":{"defaultstate":"minecraft:snow[layers=1]","properties":{"layers":{"type":"int","values":["1","2","3","4","5","6","7","8"]}}},"minecraft:snow_block":{"defaultstate":"minecraft:snow_block","properties":{}},"minecraft:soul_campfire":{"defaultstate":"minecraft:soul_campfire[facing=north,lit=true,signal_fire=false,waterlogged=false]","properties":{"facing":{"type":"direction","values":["north","south","west","east"]},"lit":{"type":"bool","values":["true","false"]},"signal_fire":{"type":"bool","values":["true","false"]},"waterlogged":{"type":"bool","values":["true","false"]}}},"minecraft:soul_fire":{"defaultstate":"minecraft:soul_fire","properties":{}},"minecraft:soul_lantern":{"defaultstate":"minecraft:soul_lantern[hanging=false,waterlogged=false]","properties":{"hanging":{"type":"bool","values":["true","false"]},"waterlogged":{"type":"bool","values":["true","false"]}}},"minecraft:soul_sand":{"defaultstate":"minecraft:soul_sand","properties":{}},"minecraft:soul_soil":{"defaultstate":"minecraft:soul_soil","properties":{}},"minecraft:soul_torch":{"defaultstate":"minecraft:soul_torch","properties":{}},"minecraft:soul_wall_torch":{"defaultstate":"minecraft:soul_wall_torch[facing=north]","properties":{"facing":{"type":"direction","values":["north","south","west","east"]}}},"minecraft:spawner":{"defaultstate":"minecraft:spawner","properties":{}},"minecraft:sponge":{"defaultstate":"minecraft:sponge","properties":{}},"minecraft:spore_blossom":{"defaultstate":"minecraft:spore_blossom","properties":{}},"minecraft:spruce_button":{"defaultstate":"minecraft:spruce_button[face=wall,facing=north,powered=false]","properties":{"face":{"type":"enum","values":["floor","wall","ceiling"]},"facing":{"type":"direction","values":["north","south","west","east"]},"powered":{"type":"bool","values":["true","false"]}}},"minecraft:spruce_door":{"defaultstate":"minecraft:spruce_door[facing=north,half=lower,hinge=left,open=false,powered=false]","properties":{"facing":{"type":"direction","values":["north","south","west","east"]},"half":{"type":"enum","values":["upper","lower"]},"hinge":{"type":"enum","values":["left","right"]},"open":{"type":"bool","values":["true","false"]},"powered":{"type":"bool","values":["true","false"]}}},"minecraft:spruce_fence":{"defaultstate":"minecraft:spruce_fence[east=false,north=false,south=false,waterlogged=false,west=false]","properties":{"east":{"type":"bool","values":["true","false"]},"north":{"type":"bool","values":["true","false"]},"south":{"type":"bool","values":["true","false"]},"waterlogged":{"type":"bool","values":["true","false"]},"west":{"type":"bool","values":["true","false"]}}},"minecraft:spruce_fence_gate":{"defaultstate":"minecraft:spruce_fence_gate[facing=north,in_wall=false,open=false,powered=false]","properties":{"facing":{"type":"direction","values":["north","south","west","east"]},"in_wall":{"type":"bool","values":["true","false"]},"open":{"type":"bool","values":["true","false"]},"powered":{"type":"bool","values":["true","false"]}}},"minecraft:spruce_leaves":{"defaultstate":"minecraft:spruce_leaves[distance=7,persistent=false,waterlogged=false]","properties":{"distance":{"type":"int","values":["1","2","3","4","5","6","7"]},"persistent":{"type":"bool","values":["true","false"]},"waterlogged":{"type":"bool","values":["true","false"]}}},"minecraft:spruce_log":{"defaultstate":"minecraft:spruce_log[axis=y]","properties":{"axis":{"type":"enum","values":["x","y","z"]}}},"minecraft:spruce_planks":{"defaultstate":"minecraft:spruce_planks","properties":{}},"minecraft:spruce_pressure_plate":{"defaultstate":"minecraft:spruce_pressure_plate[powered=false]","properties":{"powered":{"type":"bool","values":["true","false"]}}},"minecraft:spruce_sapling":{"defaultstate":"minecraft:spruce_sapling[stage=0]","properties":{"stage":{"type":"int","values":["0","1"]}}},"minecraft:spruce_sign":{"defaultstate":"minecraft:spruce_sign[rotation=0,waterlogged=false]","properties":{"rotation":{"type":"int","values":["0","1","2","3","4","5","6","7","8","9","10","11","12","13","14","15"]},"waterlogged":{"type":"bool","values":["true","false"]}}},"minecraft:spruce_slab":{"defaultstate":"minecraft:spruce_slab[type=bottom,waterlogged=false]","properties":{"type":{"type":"enum","values":["top","bottom","double"]},"waterlogged":{"type":"bool","values":["true","false"]}}},"minecraft:spruce_stairs":{"defaultstate":"minecraft:spruce_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]","properties":{"facing":{"type":"direction","values":["north","south","west","east"]},"half":{"type":"enum","values":["top","bottom"]},"shape":{"type":"enum","values":["straight","inner_left","inner_right","outer_left","outer_right"]},"waterlogged":{"type":"bool","values":["true","false"]}}},"minecraft:spruce_trapdoor":{"defaultstate":"minecraft:spruce_trapdoor[facing=north,half=bottom,open=false,powered=false,waterlogged=false]","properties":{"facing":{"type":"direction","values":["north","south","west","east"]},"half":{"type":"enum","values":["top","bottom"]},"open":{"type":"bool","values":["true","false"]},"powered":{"type":"bool","values":["true","false"]},"waterlogged":{"type":"bool","values":["true","false"]}}},"minecraft:spruce_wall_sign":{"defaultstate":"minecraft:spruce_wall_sign[facing=north,waterlogged=false]","properties":{"facing":{"type":"direction","values":["north","south","west","east"]},"waterlogged":{"type":"bool","values":["true","false"]}}},"minecraft:spruce_wood":{"defaultstate":"minecraft:spruce_wood[axis=y]","properties":{"axis":{"type":"enum","values":["x","y","z"]}}},"minecraft:sticky_piston":{"defaultstate":"minecraft:sticky_piston[extended=false,facing=north]","properties":{"extended":{"type":"bool","values":["true","false"]},"facing":{"type":"direction","values":["north","east","south","west","up","down"]}}},"minecraft:stone":{"defaultstate":"minecraft:stone","properties":{}},"minecraft:stone_brick_slab":{"defaultstate":"minecraft:stone_brick_slab[type=bottom,waterlogged=false]","properties":{"type":{"type":"enum","values":["top","bottom","double"]},"waterlogged":{"type":"bool","values":["true","false"]}}},"minecraft:stone_brick_stairs":{"defaultstate":"minecraft:stone_brick_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]","properties":{"facing":{"type":"direction","values":["north","south","west","east"]},"half":{"type":"enum","values":["top","bottom"]},"shape":{"type":"enum","values":["straight","inner_left","inner_right","outer_left","outer_right"]},"waterlogged":{"type":"bool","values":["true","false"]}}},"minecraft:stone_brick_wall":{"defaultstate":"minecraft:stone_brick_wall[east=none,north=none,south=none,up=true,waterlogged=false,west=none]","properties":{"east":{"type":"enum","values":["none","low","tall"]},"north":{"type":"enum","values":["none","low","tall"]},"south":{"type":"enum","values":["none","low","tall"]},"up":{"type":"bool","values":["true","false"]},"waterlogged":{"type":"bool","values":["true","false"]},"west":{"type":"enum","values":["none","low","tall"]}}},"minecraft:stone_bricks":{"defaultstate":"minecraft:stone_bricks","properties":{}},"minecraft:stone_button":{"defaultstate":"minecraft:stone_button[face=wall,facing=north,powered=false]","properties":{"face":{"type":"enum","values":["floor","wall","ceiling"]},"facing":{"type":"direction","values":["north","south","west","east"]},"powered":{"type":"bool","values":["true","false"]}}},"minecraft:stone_pressure_plate":{"defaultstate":"minecraft:stone_pressure_plate[powered=false]","properties":{"powered":{"type":"bool","values":["true","false"]}}},"minecraft:stone_slab":{"defaultstate":"minecraft:stone_slab[type=bottom,waterlogged=false]","properties":{"type":{"type":"enum","values":["top","bottom","double"]},"waterlogged":{"type":"bool","values":["true","false"]}}},"minecraft:stone_stairs":{"defaultstate":"minecraft:stone_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]","properties":{"facing":{"type":"direction","values":["north","south","west","east"]},"half":{"type":"enum","values":["top","bottom"]},"shape":{"type":"enum","values":["straight","inner_left","inner_right","outer_left","outer_right"]},"waterlogged":{"type":"bool","values":["true","false"]}}},"minecraft:stonecutter":{"defaultstate":"minecraft:stonecutter[facing=north]","properties":{"facing":{"type":"direction","values":["north","south","west","east"]}}},"minecraft:stripped_acacia_log":{"defaultstate":"minecraft:stripped_acacia_log[axis=y]","properties":{"axis":{"type":"enum","values":["x","y","z"]}}},"minecraft:stripped_acacia_wood":{"defaultstate":"minecraft:stripped_acacia_wood[axis=y]","properties":{"axis":{"type":"enum","values":["x","y","z"]}}},"minecraft:stripped_birch_log":{"defaultstate":"minecraft:stripped_birch_log[axis=y]","properties":{"axis":{"type":"enum","values":["x","y","z"]}}},"minecraft:stripped_birch_wood":{"defaultstate":"minecraft:stripped_birch_wood[axis=y]","properties":{"axis":{"type":"enum","values":["x","y","z"]}}},"minecraft:stripped_crimson_hyphae":{"defaultstate":"minecraft:stripped_crimson_hyphae[axis=y]","properties":{"axis":{"type":"enum","values":["x","y","z"]}}},"minecraft:stripped_crimson_stem":{"defaultstate":"minecraft:stripped_crimson_stem[axis=y]","properties":{"axis":{"type":"enum","values":["x","y","z"]}}},"minecraft:stripped_dark_oak_log":{"defaultstate":"minecraft:stripped_dark_oak_log[axis=y]","properties":{"axis":{"type":"enum","values":["x","y","z"]}}},"minecraft:stripped_dark_oak_wood":{"defaultstate":"minecraft:stripped_dark_oak_wood[axis=y]","properties":{"axis":{"type":"enum","values":["x","y","z"]}}},"minecraft:stripped_jungle_log":{"defaultstate":"minecraft:stripped_jungle_log[axis=y]","properties":{"axis":{"type":"enum","values":["x","y","z"]}}},"minecraft:stripped_jungle_wood":{"defaultstate":"minecraft:stripped_jungle_wood[axis=y]","properties":{"axis":{"type":"enum","values":["x","y","z"]}}},"minecraft:stripped_mangrove_log":{"defaultstate":"minecraft:stripped_mangrove_log[axis=y]","properties":{"axis":{"type":"enum","values":["x","y","z"]}}},"minecraft:stripped_mangrove_wood":{"defaultstate":"minecraft:stripped_mangrove_wood[axis=y]","properties":{"axis":{"type":"enum","values":["x","y","z"]}}},"minecraft:stripped_oak_log":{"defaultstate":"minecraft:stripped_oak_log[axis=y]","properties":{"axis":{"type":"enum","values":["x","y","z"]}}},"minecraft:stripped_oak_wood":{"defaultstate":"minecraft:stripped_oak_wood[axis=y]","properties":{"axis":{"type":"enum","values":["x","y","z"]}}},"minecraft:stripped_spruce_log":{"defaultstate":"minecraft:stripped_spruce_log[axis=y]","properties":{"axis":{"type":"enum","values":["x","y","z"]}}},"minecraft:stripped_spruce_wood":{"defaultstate":"minecraft:stripped_spruce_wood[axis=y]","properties":{"axis":{"type":"enum","values":["x","y","z"]}}},"minecraft:stripped_warped_hyphae":{"defaultstate":"minecraft:stripped_warped_hyphae[axis=y]","properties":{"axis":{"type":"enum","values":["x","y","z"]}}},"minecraft:stripped_warped_stem":{"defaultstate":"minecraft:stripped_warped_stem[axis=y]","properties":{"axis":{"type":"enum","values":["x","y","z"]}}},"minecraft:structure_block":{"defaultstate":"minecraft:structure_block[mode=load]","properties":{"mode":{"type":"enum","values":["save","load","corner","data"]}}},"minecraft:structure_void":{"defaultstate":"minecraft:structure_void","properties":{}},"minecraft:sugar_cane":{"defaultstate":"minecraft:sugar_cane[age=0]","properties":{"age":{"type":"int","values":["0","1","2","3","4","5","6","7","8","9","10","11","12","13","14","15"]}}},"minecraft:sunflower":{"defaultstate":"minecraft:sunflower[half=lower]","properties":{"half":{"type":"enum","values":["upper","lower"]}}},"minecraft:sweet_berry_bush":{"defaultstate":"minecraft:sweet_berry_bush[age=0]","properties":{"age":{"type":"int","values":["0","1","2","3"]}}},"minecraft:tall_grass":{"defaultstate":"minecraft:tall_grass[half=lower]","properties":{"half":{"type":"enum","values":["upper","lower"]}}},"minecraft:tall_seagrass":{"defaultstate":"minecraft:tall_seagrass[half=lower]","properties":{"half":{"type":"enum","values":["upper","lower"]}}},"minecraft:target":{"defaultstate":"minecraft:target[power=0]","properties":{"power":{"type":"int","values":["0","1","2","3","4","5","6","7","8","9","10","11","12","13","14","15"]}}},"minecraft:terracotta":{"defaultstate":"minecraft:terracotta","properties":{}},"minecraft:tinted_glass":{"defaultstate":"minecraft:tinted_glass","properties":{}},"minecraft:tnt":{"defaultstate":"minecraft:tnt[unstable=false]","properties":{"unstable":{"type":"bool","values":["true","false"]}}},"minecraft:torch":{"defaultstate":"minecraft:torch","properties":{}},"minecraft:trapped_chest":{"defaultstate":"minecraft:trapped_chest[facing=north,type=single,waterlogged=false]","properties":{"facing":{"type":"direction","values":["north","south","west","east"]},"type":{"type":"enum","values":["single","left","right"]},"waterlogged":{"type":"bool","values":["true","false"]}}},"minecraft:tripwire":{"defaultstate":"minecraft:tripwire[attached=false,disarmed=false,east=false,north=false,powered=false,south=false,west=false]","properties":{"attached":{"type":"bool","values":["true","false"]},"disarmed":{"type":"bool","values":["true","false"]},"east":{"type":"bool","values":["true","false"]},"north":{"type":"bool","values":["true","false"]},"powered":{"type":"bool","values":["true","false"]},"south":{"type":"bool","values":["true","false"]},"west":{"type":"bool","values":["true","false"]}}},"minecraft:tripwire_hook":{"defaultstate":"minecraft:tripwire_hook[attached=false,facing=north,powered=false]","properties":{"attached":{"type":"bool","values":["true","false"]},"facing":{"type":"direction","values":["north","south","west","east"]},"powered":{"type":"bool","values":["true","false"]}}},"minecraft:tube_coral":{"defaultstate":"minecraft:tube_coral[waterlogged=true]","properties":{"waterlogged":{"type":"bool","values":["true","false"]}}},"minecraft:tube_coral_block":{"defaultstate":"minecraft:tube_coral_block","properties":{}},"minecraft:tube_coral_fan":{"defaultstate":"minecraft:tube_coral_fan[waterlogged=true]","properties":{"waterlogged":{"type":"bool","values":["true","false"]}}},"minecraft:tube_coral_wall_fan":{"defaultstate":"minecraft:tube_coral_wall_fan[facing=north,waterlogged=true]","properties":{"facing":{"type":"direction","values":["north","south","west","east"]},"waterlogged":{"type":"bool","values":["true","false"]}}},"minecraft:tuff":{"defaultstate":"minecraft:tuff","properties":{}},"minecraft:turtle_egg":{"defaultstate":"minecraft:turtle_egg[eggs=1,hatch=0]","properties":{"eggs":{"type":"int","values":["1","2","3","4"]},"hatch":{"type":"int","values":["0","1","2"]}}},"minecraft:twisting_vines":{"defaultstate":"minecraft:twisting_vines[age=0]","properties":{"age":{"type":"int","values":["0","1","2","3","4","5","6","7","8","9","10","11","12","13","14","15","16","17","18","19","20","21","22","23","24","25"]}}},"minecraft:twisting_vines_plant":{"defaultstate":"minecraft:twisting_vines_plant","properties":{}},"minecraft:verdant_froglight":{"defaultstate":"minecraft:verdant_froglight[axis=y]","properties":{"axis":{"type":"enum","values":["x","y","z"]}}},"minecraft:vine":{"defaultstate":"minecraft:vine[east=false,north=false,south=false,up=false,west=false]","properties":{"east":{"type":"bool","values":["true","false"]},"north":{"type":"bool","values":["true","false"]},"south":{"type":"bool","values":["true","false"]},"up":{"type":"bool","values":["true","false"]},"west":{"type":"bool","values":["true","false"]}}},"minecraft:void_air":{"defaultstate":"minecraft:void_air","properties":{}},"minecraft:wall_torch":{"defaultstate":"minecraft:wall_torch[facing=north]","properties":{"facing":{"type":"direction","values":["north","south","west","east"]}}},"minecraft:warped_button":{"defaultstate":"minecraft:warped_button[face=wall,facing=north,powered=false]","properties":{"face":{"type":"enum","values":["floor","wall","ceiling"]},"facing":{"type":"direction","values":["north","south","west","east"]},"powered":{"type":"bool","values":["true","false"]}}},"minecraft:warped_door":{"defaultstate":"minecraft:warped_door[facing=north,half=lower,hinge=left,open=false,powered=false]","properties":{"facing":{"type":"direction","values":["north","south","west","east"]},"half":{"type":"enum","values":["upper","lower"]},"hinge":{"type":"enum","values":["left","right"]},"open":{"type":"bool","values":["true","false"]},"powered":{"type":"bool","values":["true","false"]}}},"minecraft:warped_fence":{"defaultstate":"minecraft:warped_fence[east=false,north=false,south=false,waterlogged=false,west=false]","properties":{"east":{"type":"bool","values":["true","false"]},"north":{"type":"bool","values":["true","false"]},"south":{"type":"bool","values":["true","false"]},"waterlogged":{"type":"bool","values":["true","false"]},"west":{"type":"bool","values":["true","false"]}}},"minecraft:warped_fence_gate":{"defaultstate":"minecraft:warped_fence_gate[facing=north,in_wall=false,open=false,powered=false]","properties":{"facing":{"type":"direction","values":["north","south","west","east"]},"in_wall":{"type":"bool","values":["true","false"]},"open":{"type":"bool","values":["true","false"]},"powered":{"type":"bool","values":["true","false"]}}},"minecraft:warped_fungus":{"defaultstate":"minecraft:warped_fungus","properties":{}},"minecraft:warped_hyphae":{"defaultstate":"minecraft:warped_hyphae[axis=y]","properties":{"axis":{"type":"enum","values":["x","y","z"]}}},"minecraft:warped_nylium":{"defaultstate":"minecraft:warped_nylium","properties":{}},"minecraft:warped_planks":{"defaultstate":"minecraft:warped_planks","properties":{}},"minecraft:warped_pressure_plate":{"defaultstate":"minecraft:warped_pressure_plate[powered=false]","properties":{"powered":{"type":"bool","values":["true","false"]}}},"minecraft:warped_roots":{"defaultstate":"minecraft:warped_roots","properties":{}},"minecraft:warped_sign":{"defaultstate":"minecraft:warped_sign[rotation=0,waterlogged=false]","properties":{"rotation":{"type":"int","values":["0","1","2","3","4","5","6","7","8","9","10","11","12","13","14","15"]},"waterlogged":{"type":"bool","values":["true","false"]}}},"minecraft:warped_slab":{"defaultstate":"minecraft:warped_slab[type=bottom,waterlogged=false]","properties":{"type":{"type":"enum","values":["top","bottom","double"]},"waterlogged":{"type":"bool","values":["true","false"]}}},"minecraft:warped_stairs":{"defaultstate":"minecraft:warped_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]","properties":{"facing":{"type":"direction","values":["north","south","west","east"]},"half":{"type":"enum","values":["top","bottom"]},"shape":{"type":"enum","values":["straight","inner_left","inner_right","outer_left","outer_right"]},"waterlogged":{"type":"bool","values":["true","false"]}}},"minecraft:warped_stem":{"defaultstate":"minecraft:warped_stem[axis=y]","properties":{"axis":{"type":"enum","values":["x","y","z"]}}},"minecraft:warped_trapdoor":{"defaultstate":"minecraft:warped_trapdoor[facing=north,half=bottom,open=false,powered=false,waterlogged=false]","properties":{"facing":{"type":"direction","values":["north","south","west","east"]},"half":{"type":"enum","values":["top","bottom"]},"open":{"type":"bool","values":["true","false"]},"powered":{"type":"bool","values":["true","false"]},"waterlogged":{"type":"bool","values":["true","false"]}}},"minecraft:warped_wall_sign":{"defaultstate":"minecraft:warped_wall_sign[facing=north,waterlogged=false]","properties":{"facing":{"type":"direction","values":["north","south","west","east"]},"waterlogged":{"type":"bool","values":["true","false"]}}},"minecraft:warped_wart_block":{"defaultstate":"minecraft:warped_wart_block","properties":{}},"minecraft:water":{"defaultstate":"minecraft:water[level=0]","properties":{"level":{"type":"int","values":["0","1","2","3","4","5","6","7","8","9","10","11","12","13","14","15"]}}},"minecraft:water_cauldron":{"defaultstate":"minecraft:water_cauldron[level=1]","properties":{"level":{"type":"int","values":["1","2","3"]}}},"minecraft:waxed_copper_block":{"defaultstate":"minecraft:waxed_copper_block","properties":{}},"minecraft:waxed_cut_copper":{"defaultstate":"minecraft:waxed_cut_copper","properties":{}},"minecraft:waxed_cut_copper_slab":{"defaultstate":"minecraft:waxed_cut_copper_slab[type=bottom,waterlogged=false]","properties":{"type":{"type":"enum","values":["top","bottom","double"]},"waterlogged":{"type":"bool","values":["true","false"]}}},"minecraft:waxed_cut_copper_stairs":{"defaultstate":"minecraft:waxed_cut_copper_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]","properties":{"facing":{"type":"direction","values":["north","south","west","east"]},"half":{"type":"enum","values":["top","bottom"]},"shape":{"type":"enum","values":["straight","inner_left","inner_right","outer_left","outer_right"]},"waterlogged":{"type":"bool","values":["true","false"]}}},"minecraft:waxed_exposed_copper":{"defaultstate":"minecraft:waxed_exposed_copper","properties":{}},"minecraft:waxed_exposed_cut_copper":{"defaultstate":"minecraft:waxed_exposed_cut_copper","properties":{}},"minecraft:waxed_exposed_cut_copper_slab":{"defaultstate":"minecraft:waxed_exposed_cut_copper_slab[type=bottom,waterlogged=false]","properties":{"type":{"type":"enum","values":["top","bottom","double"]},"waterlogged":{"type":"bool","values":["true","false"]}}},"minecraft:waxed_exposed_cut_copper_stairs":{"defaultstate":"minecraft:waxed_exposed_cut_copper_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]","properties":{"facing":{"type":"direction","values":["north","south","west","east"]},"half":{"type":"enum","values":["top","bottom"]},"shape":{"type":"enum","values":["straight","inner_left","inner_right","outer_left","outer_right"]},"waterlogged":{"type":"bool","values":["true","false"]}}},"minecraft:waxed_oxidized_copper":{"defaultstate":"minecraft:waxed_oxidized_copper","properties":{}},"minecraft:waxed_oxidized_cut_copper":{"defaultstate":"minecraft:waxed_oxidized_cut_copper","properties":{}},"minecraft:waxed_oxidized_cut_copper_slab":{"defaultstate":"minecraft:waxed_oxidized_cut_copper_slab[type=bottom,waterlogged=false]","properties":{"type":{"type":"enum","values":["top","bottom","double"]},"waterlogged":{"type":"bool","values":["true","false"]}}},"minecraft:waxed_oxidized_cut_copper_stairs":{"defaultstate":"minecraft:waxed_oxidized_cut_copper_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]","properties":{"facing":{"type":"direction","values":["north","south","west","east"]},"half":{"type":"enum","values":["top","bottom"]},"shape":{"type":"enum","values":["straight","inner_left","inner_right","outer_left","outer_right"]},"waterlogged":{"type":"bool","values":["true","false"]}}},"minecraft:waxed_weathered_copper":{"defaultstate":"minecraft:waxed_weathered_copper","properties":{}},"minecraft:waxed_weathered_cut_copper":{"defaultstate":"minecraft:waxed_weathered_cut_copper","properties":{}},"minecraft:waxed_weathered_cut_copper_slab":{"defaultstate":"minecraft:waxed_weathered_cut_copper_slab[type=bottom,waterlogged=false]","properties":{"type":{"type":"enum","values":["top","bottom","double"]},"waterlogged":{"type":"bool","values":["true","false"]}}},"minecraft:waxed_weathered_cut_copper_stairs":{"defaultstate":"minecraft:waxed_weathered_cut_copper_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]","properties":{"facing":{"type":"direction","values":["north","south","west","east"]},"half":{"type":"enum","values":["top","bottom"]},"shape":{"type":"enum","values":["straight","inner_left","inner_right","outer_left","outer_right"]},"waterlogged":{"type":"bool","values":["true","false"]}}},"minecraft:weathered_copper":{"defaultstate":"minecraft:weathered_copper","properties":{}},"minecraft:weathered_cut_copper":{"defaultstate":"minecraft:weathered_cut_copper","properties":{}},"minecraft:weathered_cut_copper_slab":{"defaultstate":"minecraft:weathered_cut_copper_slab[type=bottom,waterlogged=false]","properties":{"type":{"type":"enum","values":["top","bottom","double"]},"waterlogged":{"type":"bool","values":["true","false"]}}},"minecraft:weathered_cut_copper_stairs":{"defaultstate":"minecraft:weathered_cut_copper_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]","properties":{"facing":{"type":"direction","values":["north","south","west","east"]},"half":{"type":"enum","values":["top","bottom"]},"shape":{"type":"enum","values":["straight","inner_left","inner_right","outer_left","outer_right"]},"waterlogged":{"type":"bool","values":["true","false"]}}},"minecraft:weeping_vines":{"defaultstate":"minecraft:weeping_vines[age=0]","properties":{"age":{"type":"int","values":["0","1","2","3","4","5","6","7","8","9","10","11","12","13","14","15","16","17","18","19","20","21","22","23","24","25"]}}},"minecraft:weeping_vines_plant":{"defaultstate":"minecraft:weeping_vines_plant","properties":{}},"minecraft:wet_sponge":{"defaultstate":"minecraft:wet_sponge","properties":{}},"minecraft:wheat":{"defaultstate":"minecraft:wheat[age=0]","properties":{"age":{"type":"int","values":["0","1","2","3","4","5","6","7"]}}},"minecraft:white_banner":{"defaultstate":"minecraft:white_banner[rotation=0]","properties":{"rotation":{"type":"int","values":["0","1","2","3","4","5","6","7","8","9","10","11","12","13","14","15"]}}},"minecraft:white_bed":{"defaultstate":"minecraft:white_bed[facing=north,occupied=false,part=foot]","properties":{"facing":{"type":"direction","values":["north","south","west","east"]},"occupied":{"type":"bool","values":["true","false"]},"part":{"type":"enum","values":["head","foot"]}}},"minecraft:white_candle":{"defaultstate":"minecraft:white_candle[candles=1,lit=false,waterlogged=false]","properties":{"candles":{"type":"int","values":["1","2","3","4"]},"lit":{"type":"bool","values":["true","false"]},"waterlogged":{"type":"bool","values":["true","false"]}}},"minecraft:white_candle_cake":{"defaultstate":"minecraft:white_candle_cake[lit=false]","properties":{"lit":{"type":"bool","values":["true","false"]}}},"minecraft:white_carpet":{"defaultstate":"minecraft:white_carpet","properties":{}},"minecraft:white_concrete":{"defaultstate":"minecraft:white_concrete","properties":{}},"minecraft:white_concrete_powder":{"defaultstate":"minecraft:white_concrete_powder","properties":{}},"minecraft:white_glazed_terracotta":{"defaultstate":"minecraft:white_glazed_terracotta[facing=north]","properties":{"facing":{"type":"direction","values":["north","south","west","east"]}}},"minecraft:white_shulker_box":{"defaultstate":"minecraft:white_shulker_box[facing=up]","properties":{"facing":{"type":"direction","values":["north","east","south","west","up","down"]}}},"minecraft:white_stained_glass":{"defaultstate":"minecraft:white_stained_glass","properties":{}},"minecraft:white_stained_glass_pane":{"defaultstate":"minecraft:white_stained_glass_pane[east=false,north=false,south=false,waterlogged=false,west=false]","properties":{"east":{"type":"bool","values":["true","false"]},"north":{"type":"bool","values":["true","false"]},"south":{"type":"bool","values":["true","false"]},"waterlogged":{"type":"bool","values":["true","false"]},"west":{"type":"bool","values":["true","false"]}}},"minecraft:white_terracotta":{"defaultstate":"minecraft:white_terracotta","properties":{}},"minecraft:white_tulip":{"defaultstate":"minecraft:white_tulip","properties":{}},"minecraft:white_wall_banner":{"defaultstate":"minecraft:white_wall_banner[facing=north]","properties":{"facing":{"type":"direction","values":["north","south","west","east"]}}},"minecraft:white_wool":{"defaultstate":"minecraft:white_wool","properties":{}},"minecraft:wither_rose":{"defaultstate":"minecraft:wither_rose","properties":{}},"minecraft:wither_skeleton_skull":{"defaultstate":"minecraft:wither_skeleton_skull[rotation=0]","properties":{"rotation":{"type":"int","values":["0","1","2","3","4","5","6","7","8","9","10","11","12","13","14","15"]}}},"minecraft:wither_skeleton_wall_skull":{"defaultstate":"minecraft:wither_skeleton_wall_skull[facing=north]","properties":{"facing":{"type":"direction","values":["north","south","west","east"]}}},"minecraft:yellow_banner":{"defaultstate":"minecraft:yellow_banner[rotation=0]","properties":{"rotation":{"type":"int","values":["0","1","2","3","4","5","6","7","8","9","10","11","12","13","14","15"]}}},"minecraft:yellow_bed":{"defaultstate":"minecraft:yellow_bed[facing=north,occupied=false,part=foot]","properties":{"facing":{"type":"direction","values":["north","south","west","east"]},"occupied":{"type":"bool","values":["true","false"]},"part":{"type":"enum","values":["head","foot"]}}},"minecraft:yellow_candle":{"defaultstate":"minecraft:yellow_candle[candles=1,lit=false,waterlogged=false]","properties":{"candles":{"type":"int","values":["1","2","3","4"]},"lit":{"type":"bool","values":["true","false"]},"waterlogged":{"type":"bool","values":["true","false"]}}},"minecraft:yellow_candle_cake":{"defaultstate":"minecraft:yellow_candle_cake[lit=false]","properties":{"lit":{"type":"bool","values":["true","false"]}}},"minecraft:yellow_carpet":{"defaultstate":"minecraft:yellow_carpet","properties":{}},"minecraft:yellow_concrete":{"defaultstate":"minecraft:yellow_concrete","properties":{}},"minecraft:yellow_concrete_powder":{"defaultstate":"minecraft:yellow_concrete_powder","properties":{}},"minecraft:yellow_glazed_terracotta":{"defaultstate":"minecraft:yellow_glazed_terracotta[facing=north]","properties":{"facing":{"type":"direction","values":["north","south","west","east"]}}},"minecraft:yellow_shulker_box":{"defaultstate":"minecraft:yellow_shulker_box[facing=up]","properties":{"facing":{"type":"direction","values":["north","east","south","west","up","down"]}}},"minecraft:yellow_stained_glass":{"defaultstate":"minecraft:yellow_stained_glass","properties":{}},"minecraft:yellow_stained_glass_pane":{"defaultstate":"minecraft:yellow_stained_glass_pane[east=false,north=false,south=false,waterlogged=false,west=false]","properties":{"east":{"type":"bool","values":["true","false"]},"north":{"type":"bool","values":["true","false"]},"south":{"type":"bool","values":["true","false"]},"waterlogged":{"type":"bool","values":["true","false"]},"west":{"type":"bool","values":["true","false"]}}},"minecraft:yellow_terracotta":{"defaultstate":"minecraft:yellow_terracotta","properties":{}},"minecraft:yellow_wall_banner":{"defaultstate":"minecraft:yellow_wall_banner[facing=north]","properties":{"facing":{"type":"direction","values":["north","south","west","east"]}}},"minecraft:yellow_wool":{"defaultstate":"minecraft:yellow_wool","properties":{}},"minecraft:zombie_head":{"defaultstate":"minecraft:zombie_head[rotation=0]","properties":{"rotation":{"type":"int","values":["0","1","2","3","4","5","6","7","8","9","10","11","12","13","14","15"]}}},"minecraft:zombie_wall_head":{"defaultstate":"minecraft:zombie_wall_head[facing=north]","properties":{"facing":{"type":"direction","values":["north","south","west","east"]}}}},"blocktags":{"minecraft:acacia_logs":["minecraft:acacia_log","minecraft:acacia_wood","minecraft:stripped_acacia_log","minecraft:stripped_acacia_wood"],"minecraft:ancient_city_replaceable":["minecraft:cobbled_deepslate","minecraft:cracked_deepslate_bricks","minecraft:cracked_deepslate_tiles","minecraft:deepslate","minecraft:deepslate_brick_slab","minecraft:deepslate_brick_stairs","minecraft:deepslate_brick_wall","minecraft:deepslate_bricks","minecraft:deepslate_tile_slab","minecraft:deepslate_tile_wall","minecraft:deepslate_tiles","minecraft:gray_wool"],"minecraft:animals_spawnable_on":["minecraft:grass_block"],"minecraft:anvil":["minecraft:anvil","minecraft:chipped_anvil","minecraft:damaged_anvil"],"minecraft:axolotls_spawnable_on":["minecraft:clay"],"minecraft:azalea_grows_on":["minecraft:black_terracotta","minecraft:blue_terracotta","minecraft:brown_terracotta","minecraft:coarse_dirt","minecraft:cyan_terracotta","minecraft:dirt","minecraft:grass_block","minecraft:gray_terracotta","minecraft:green_terracotta","minecraft:light_blue_terracotta","minecraft:light_gray_terracotta","minecraft:lime_terracotta","minecraft:magenta_terracotta","minecraft:moss_block","minecraft:mud","minecraft:muddy_mangrove_roots","minecraft:mycelium","minecraft:orange_terracotta","minecraft:pink_terracotta","minecraft:podzol","minecraft:powder_snow","minecraft:purple_terracotta","minecraft:red_sand","minecraft:red_terracotta","minecraft:rooted_dirt","minecraft:sand","minecraft:snow_block","minecraft:terracotta","minecraft:white_terracotta","minecraft:yellow_terracotta"],"minecraft:azalea_root_replaceable":["minecraft:andesite","minecraft:black_terracotta","minecraft:blue_terracotta","minecraft:brown_terracotta","minecraft:clay","minecraft:coarse_dirt","minecraft:cyan_terracotta","minecraft:deepslate","minecraft:diorite","minecraft:dirt","minecraft:granite","minecraft:grass_block","minecraft:gravel","minecraft:gray_terracotta","minecraft:green_terracotta","minecraft:light_blue_terracotta","minecraft:light_gray_terracotta","minecraft:lime_terracotta","minecraft:magenta_terracotta","minecraft:moss_block","minecraft:mud","minecraft:muddy_mangrove_roots","minecraft:mycelium","minecraft:orange_terracotta","minecraft:pink_terracotta","minecraft:podzol","minecraft:powder_snow","minecraft:purple_terracotta","minecraft:red_sand","minecraft:red_terracotta","minecraft:rooted_dirt","minecraft:sand","minecraft:snow_block","minecraft:stone","minecraft:terracotta","minecraft:tuff","minecraft:white_terracotta","minecraft:yellow_terracotta"],"minecraft:bamboo_plantable_on":["minecraft:bamboo","minecraft:bamboo_sapling","minecraft:coarse_dirt","minecraft:dirt","minecraft:grass_block","minecraft:gravel","minecraft:moss_block","minecraft:mud","minecraft:muddy_mangrove_roots","minecraft:mycelium","minecraft:podzol","minecraft:red_sand","minecraft:rooted_dirt","minecraft:sand"],"minecraft:banners":["minecraft:black_banner","minecraft:black_wall_banner","minecraft:blue_banner","minecraft:blue_wall_banner","minecraft:brown_banner","minecraft:brown_wall_banner","minecraft:cyan_banner","minecraft:cyan_wall_banner","minecraft:gray_banner","minecraft:gray_wall_banner","minecraft:green_banner","minecraft:green_wall_banner","minecraft:light_blue_banner","minecraft:light_blue_wall_banner","minecraft:light_gray_banner","minecraft:light_gray_wall_banner","minecraft:lime_banner","minecraft:lime_wall_banner","minecraft:magenta_banner","minecraft:magenta_wall_banner","minecraft:orange_banner","minecraft:orange_wall_banner","minecraft:pink_banner","minecraft:pink_wall_banner","minecraft:purple_banner","minecraft:purple_wall_banner","minecraft:red_banner","minecraft:red_wall_banner","minecraft:white_banner","minecraft:white_wall_banner","minecraft:yellow_banner","minecraft:yellow_wall_banner"],"minecraft:base_stone_nether":["minecraft:basalt","minecraft:blackstone","minecraft:netherrack"],"minecraft:base_stone_overworld":["minecraft:andesite","minecraft:deepslate","minecraft:diorite","minecraft:granite","minecraft:stone","minecraft:tuff"],"minecraft:beacon_base_blocks":["minecraft:diamond_block","minecraft:emerald_block","minecraft:gold_block","minecraft:iron_block","minecraft:netherite_block"],"minecraft:beds":["minecraft:black_bed","minecraft:blue_bed","minecraft:brown_bed","minecraft:cyan_bed","minecraft:gray_bed","minecraft:green_bed","minecraft:light_blue_bed","minecraft:light_gray_bed","minecraft:lime_bed","minecraft:magenta_bed","minecraft:orange_bed","minecraft:pink_bed","minecraft:purple_bed","minecraft:red_bed","minecraft:white_bed","minecraft:yellow_bed"],"minecraft:bee_growables":["minecraft:beetroots","minecraft:carrots","minecraft:cave_vines","minecraft:cave_vines_plant","minecraft:melon_stem","minecraft:potatoes","minecraft:pumpkin_stem","minecraft:sweet_berry_bush","minecraft:wheat"],"minecraft:beehives":["minecraft:bee_nest","minecraft:beehive"],"minecraft:big_dripleaf_placeable":["minecraft:clay","minecraft:coarse_dirt","minecraft:dirt","minecraft:farmland","minecraft:grass_block","minecraft:moss_block","minecraft:mud","minecraft:muddy_mangrove_roots","minecraft:mycelium","minecraft:podzol","minecraft:rooted_dirt"],"minecraft:birch_logs":["minecraft:birch_log","minecraft:birch_wood","minecraft:stripped_birch_log","minecraft:stripped_birch_wood"],"minecraft:buttons":["minecraft:acacia_button","minecraft:birch_button","minecraft:crimson_button","minecraft:dark_oak_button","minecraft:jungle_button","minecraft:mangrove_button","minecraft:oak_button","minecraft:polished_blackstone_button","minecraft:spruce_button","minecraft:stone_button","minecraft:warped_button"],"minecraft:campfires":["minecraft:campfire","minecraft:soul_campfire"],"minecraft:candle_cakes":["minecraft:black_candle_cake","minecraft:blue_candle_cake","minecraft:brown_candle_cake","minecraft:candle_cake","minecraft:cyan_candle_cake","minecraft:gray_candle_cake","minecraft:green_candle_cake","minecraft:light_blue_candle_cake","minecraft:light_gray_candle_cake","minecraft:lime_candle_cake","minecraft:magenta_candle_cake","minecraft:orange_candle_cake","minecraft:pink_candle_cake","minecraft:purple_candle_cake","minecraft:red_candle_cake","minecraft:white_candle_cake","minecraft:yellow_candle_cake"],"minecraft:candles":["minecraft:black_candle","minecraft:blue_candle","minecraft:brown_candle","minecraft:candle","minecraft:cyan_candle","minecraft:gray_candle","minecraft:green_candle","minecraft:light_blue_candle","minecraft:light_gray_candle","minecraft:lime_candle","minecraft:magenta_candle","minecraft:orange_candle","minecraft:pink_candle","minecraft:purple_candle","minecraft:red_candle","minecraft:white_candle","minecraft:yellow_candle"],"minecraft:cauldrons":["minecraft:cauldron","minecraft:lava_cauldron","minecraft:powder_snow_cauldron","minecraft:water_cauldron"],"minecraft:cave_vines":["minecraft:cave_vines","minecraft:cave_vines_plant"],"minecraft:climbable":["minecraft:cave_vines","minecraft:cave_vines_plant","minecraft:ladder","minecraft:scaffolding","minecraft:twisting_vines","minecraft:twisting_vines_plant","minecraft:vine","minecraft:weeping_vines","minecraft:weeping_vines_plant"],"minecraft:coal_ores":["minecraft:coal_ore","minecraft:deepslate_coal_ore"],"minecraft:completes_find_tree_tutorial":["minecraft:acacia_leaves","minecraft:acacia_log","minecraft:acacia_wood","minecraft:azalea_leaves","minecraft:birch_leaves","minecraft:birch_log","minecraft:birch_wood","minecraft:crimson_hyphae","minecraft:crimson_stem","minecraft:dark_oak_leaves","minecraft:dark_oak_log","minecraft:dark_oak_wood","minecraft:flowering_azalea_leaves","minecraft:jungle_leaves","minecraft:jungle_log","minecraft:jungle_wood","minecraft:mangrove_leaves","minecraft:mangrove_log","minecraft:mangrove_wood","minecraft:nether_wart_block","minecraft:oak_leaves","minecraft:oak_log","minecraft:oak_wood","minecraft:spruce_leaves","minecraft:spruce_log","minecraft:spruce_wood","minecraft:stripped_acacia_log","minecraft:stripped_acacia_wood","minecraft:stripped_birch_log","minecraft:stripped_birch_wood","minecraft:stripped_crimson_hyphae","minecraft:stripped_crimson_stem","minecraft:stripped_dark_oak_log","minecraft:stripped_dark_oak_wood","minecraft:stripped_jungle_log","minecraft:stripped_jungle_wood","minecraft:stripped_mangrove_log","minecraft:stripped_mangrove_wood","minecraft:stripped_oak_log","minecraft:stripped_oak_wood","minecraft:stripped_spruce_log","minecraft:stripped_spruce_wood","minecraft:stripped_warped_hyphae","minecraft:stripped_warped_stem","minecraft:warped_hyphae","minecraft:warped_stem","minecraft:warped_wart_block"],"minecraft:convertable_to_mud":["minecraft:coarse_dirt","minecraft:dirt","minecraft:rooted_dirt"],"minecraft:copper_ores":["minecraft:copper_ore","minecraft:deepslate_copper_ore"],"minecraft:coral_blocks":["minecraft:brain_coral_block","minecraft:bubble_coral_block","minecraft:fire_coral_block","minecraft:horn_coral_block","minecraft:tube_coral_block"],"minecraft:coral_plants":["minecraft:brain_coral","minecraft:bubble_coral","minecraft:fire_coral","minecraft:horn_coral","minecraft:tube_coral"],"minecraft:corals":["minecraft:brain_coral","minecraft:brain_coral_fan","minecraft:bubble_coral","minecraft:bubble_coral_fan","minecraft:fire_coral","minecraft:fire_coral_fan","minecraft:horn_coral","minecraft:horn_coral_fan","minecraft:tube_coral","minecraft:tube_coral_fan"],"minecraft:crimson_stems":["minecraft:crimson_hyphae","minecraft:crimson_stem","minecraft:stripped_crimson_hyphae","minecraft:stripped_crimson_stem"],"minecraft:crops":["minecraft:beetroots","minecraft:carrots","minecraft:melon_stem","minecraft:potatoes","minecraft:pumpkin_stem","minecraft:wheat"],"minecraft:crystal_sound_blocks":["minecraft:amethyst_block","minecraft:budding_amethyst"],"minecraft:dampens_vibrations":["minecraft:black_carpet","minecraft:black_wool","minecraft:blue_carpet","minecraft:blue_wool","minecraft:brown_carpet","minecraft:brown_wool","minecraft:cyan_carpet","minecraft:cyan_wool","minecraft:gray_carpet","minecraft:gray_wool","minecraft:green_carpet","minecraft:green_wool","minecraft:light_blue_carpet","minecraft:light_blue_wool","minecraft:light_gray_carpet","minecraft:light_gray_wool","minecraft:lime_carpet","minecraft:lime_wool","minecraft:magenta_carpet","minecraft:magenta_wool","minecraft:orange_carpet","minecraft:orange_wool","minecraft:pink_carpet","minecraft:pink_wool","minecraft:purple_carpet","minecraft:purple_wool","minecraft:red_carpet","minecraft:red_wool","minecraft:white_carpet","minecraft:white_wool","minecraft:yellow_carpet","minecraft:yellow_wool"],"minecraft:dark_oak_logs":["minecraft:dark_oak_log","minecraft:dark_oak_wood","minecraft:stripped_dark_oak_log","minecraft:stripped_dark_oak_wood"],"minecraft:dead_bush_may_place_on":["minecraft:black_terracotta","minecraft:blue_terracotta","minecraft:brown_terracotta","minecraft:coarse_dirt","minecraft:cyan_terracotta","minecraft:dirt","minecraft:grass_block","minecraft:gray_terracotta","minecraft:green_terracotta","minecraft:light_blue_terracotta","minecraft:light_gray_terracotta","minecraft:lime_terracotta","minecraft:magenta_terracotta","minecraft:moss_block","minecraft:mud","minecraft:muddy_mangrove_roots","minecraft:mycelium","minecraft:orange_terracotta","minecraft:pink_terracotta","minecraft:podzol","minecraft:purple_terracotta","minecraft:red_sand","minecraft:red_terracotta","minecraft:rooted_dirt","minecraft:sand","minecraft:terracotta","minecraft:white_terracotta","minecraft:yellow_terracotta"],"minecraft:deepslate_ore_replaceables":["minecraft:deepslate","minecraft:tuff"],"minecraft:diamond_ores":["minecraft:deepslate_diamond_ore","minecraft:diamond_ore"],"minecraft:dirt":["minecraft:coarse_dirt","minecraft:dirt","minecraft:grass_block","minecraft:moss_block","minecraft:mud","minecraft:muddy_mangrove_roots","minecraft:mycelium","minecraft:podzol","minecraft:rooted_dirt"],"minecraft:doors":["minecraft:acacia_door","minecraft:birch_door","minecraft:crimson_door","minecraft:dark_oak_door","minecraft:iron_door","minecraft:jungle_door","minecraft:mangrove_door","minecraft:oak_door","minecraft:spruce_door","minecraft:warped_door"],"minecraft:dragon_immune":["minecraft:barrier","minecraft:bedrock","minecraft:chain_command_block","minecraft:command_block","minecraft:crying_obsidian","minecraft:end_gateway","minecraft:end_portal","minecraft:end_portal_frame","minecraft:end_stone","minecraft:iron_bars","minecraft:jigsaw","minecraft:moving_piston","minecraft:obsidian","minecraft:reinforced_deepslate","minecraft:repeating_command_block","minecraft:respawn_anchor","minecraft:structure_block"],"minecraft:dragon_transparent":["minecraft:fire","minecraft:light","minecraft:soul_fire"],"minecraft:dripstone_replaceable_blocks":["minecraft:andesite","minecraft:deepslate","minecraft:diorite","minecraft:granite","minecraft:stone","minecraft:tuff"],"minecraft:emerald_ores":["minecraft:deepslate_emerald_ore","minecraft:emerald_ore"],"minecraft:enderman_holdable":["minecraft:allium","minecraft:azure_bluet","minecraft:blue_orchid","minecraft:brown_mushroom","minecraft:cactus","minecraft:carved_pumpkin","minecraft:clay","minecraft:coarse_dirt","minecraft:cornflower","minecraft:crimson_fungus","minecraft:crimson_nylium","minecraft:crimson_roots","minecraft:dandelion","minecraft:dirt","minecraft:grass_block","minecraft:gravel","minecraft:lily_of_the_valley","minecraft:melon","minecraft:moss_block","minecraft:mud","minecraft:muddy_mangrove_roots","minecraft:mycelium","minecraft:orange_tulip","minecraft:oxeye_daisy","minecraft:pink_tulip","minecraft:podzol","minecraft:poppy","minecraft:pumpkin","minecraft:red_mushroom","minecraft:red_sand","minecraft:red_tulip","minecraft:rooted_dirt","minecraft:sand","minecraft:tnt","minecraft:warped_fungus","minecraft:warped_nylium","minecraft:warped_roots","minecraft:white_tulip","minecraft:wither_rose"],"minecraft:fall_damage_resetting":["minecraft:cave_vines","minecraft:cave_vines_plant","minecraft:cobweb","minecraft:ladder","minecraft:scaffolding","minecraft:sweet_berry_bush","minecraft:twisting_vines","minecraft:twisting_vines_plant","minecraft:vine","minecraft:weeping_vines","minecraft:weeping_vines_plant"],"minecraft:features_cannot_replace":["minecraft:bedrock","minecraft:chest","minecraft:end_portal_frame","minecraft:reinforced_deepslate","minecraft:spawner"],"minecraft:fence_gates":["minecraft:acacia_fence_gate","minecraft:birch_fence_gate","minecraft:crimson_fence_gate","minecraft:dark_oak_fence_gate","minecraft:jungle_fence_gate","minecraft:mangrove_fence_gate","minecraft:oak_fence_gate","minecraft:spruce_fence_gate","minecraft:warped_fence_gate"],"minecraft:fences":["minecraft:acacia_fence","minecraft:birch_fence","minecraft:crimson_fence","minecraft:dark_oak_fence","minecraft:jungle_fence","minecraft:mangrove_fence","minecraft:nether_brick_fence","minecraft:oak_fence","minecraft:spruce_fence","minecraft:warped_fence"],"minecraft:fire":["minecraft:fire","minecraft:soul_fire"],"minecraft:flower_pots":["minecraft:flower_pot","minecraft:potted_acacia_sapling","minecraft:potted_allium","minecraft:potted_azalea_bush","minecraft:potted_azure_bluet","minecraft:potted_bamboo","minecraft:potted_birch_sapling","minecraft:potted_blue_orchid","minecraft:potted_brown_mushroom","minecraft:potted_cactus","minecraft:potted_cornflower","minecraft:potted_crimson_fungus","minecraft:potted_crimson_roots","minecraft:potted_dandelion","minecraft:potted_dark_oak_sapling","minecraft:potted_dead_bush","minecraft:potted_fern","minecraft:potted_flowering_azalea_bush","minecraft:potted_jungle_sapling","minecraft:potted_lily_of_the_valley","minecraft:potted_mangrove_propagule","minecraft:potted_oak_sapling","minecraft:potted_orange_tulip","minecraft:potted_oxeye_daisy","minecraft:potted_pink_tulip","minecraft:potted_poppy","minecraft:potted_red_mushroom","minecraft:potted_red_tulip","minecraft:potted_spruce_sapling","minecraft:potted_warped_fungus","minecraft:potted_warped_roots","minecraft:potted_white_tulip","minecraft:potted_wither_rose"],"minecraft:flowers":["minecraft:allium","minecraft:azure_bluet","minecraft:blue_orchid","minecraft:cornflower","minecraft:dandelion","minecraft:flowering_azalea","minecraft:flowering_azalea_leaves","minecraft:lilac","minecraft:lily_of_the_valley","minecraft:mangrove_propagule","minecraft:orange_tulip","minecraft:oxeye_daisy","minecraft:peony","minecraft:pink_tulip","minecraft:poppy","minecraft:red_tulip","minecraft:rose_bush","minecraft:sunflower","minecraft:white_tulip","minecraft:wither_rose"],"minecraft:foxes_spawnable_on":["minecraft:coarse_dirt","minecraft:grass_block","minecraft:podzol","minecraft:snow","minecraft:snow_block"],"minecraft:frog_prefer_jump_to":["minecraft:big_dripleaf","minecraft:lily_pad"],"minecraft:frogs_spawnable_on":["minecraft:grass_block","minecraft:mangrove_roots","minecraft:mud","minecraft:muddy_mangrove_roots"],"minecraft:geode_invalid_blocks":["minecraft:bedrock","minecraft:blue_ice","minecraft:ice","minecraft:lava","minecraft:packed_ice","minecraft:water"],"minecraft:goats_spawnable_on":["minecraft:gravel","minecraft:packed_ice","minecraft:snow","minecraft:snow_block","minecraft:stone"],"minecraft:gold_ores":["minecraft:deepslate_gold_ore","minecraft:gold_ore","minecraft:nether_gold_ore"],"minecraft:guarded_by_piglins":["minecraft:barrel","minecraft:black_shulker_box","minecraft:blue_shulker_box","minecraft:brown_shulker_box","minecraft:chest","minecraft:cyan_shulker_box","minecraft:deepslate_gold_ore","minecraft:ender_chest","minecraft:gilded_blackstone","minecraft:gold_block","minecraft:gold_ore","minecraft:gray_shulker_box","minecraft:green_shulker_box","minecraft:light_blue_shulker_box","minecraft:light_gray_shulker_box","minecraft:lime_shulker_box","minecraft:magenta_shulker_box","minecraft:nether_gold_ore","minecraft:orange_shulker_box","minecraft:pink_shulker_box","minecraft:purple_shulker_box","minecraft:raw_gold_block","minecraft:red_shulker_box","minecraft:shulker_box","minecraft:trapped_chest","minecraft:white_shulker_box","minecraft:yellow_shulker_box"],"minecraft:hoglin_repellents":["minecraft:nether_portal","minecraft:potted_warped_fungus","minecraft:respawn_anchor","minecraft:warped_fungus"],"minecraft:ice":["minecraft:blue_ice","minecraft:frosted_ice","minecraft:ice","minecraft:packed_ice"],"minecraft:impermeable":["minecraft:black_stained_glass","minecraft:blue_stained_glass","minecraft:brown_stained_glass","minecraft:cyan_stained_glass","minecraft:glass","minecraft:gray_stained_glass","minecraft:green_stained_glass","minecraft:light_blue_stained_glass","minecraft:light_gray_stained_glass","minecraft:lime_stained_glass","minecraft:magenta_stained_glass","minecraft:orange_stained_glass","minecraft:pink_stained_glass","minecraft:purple_stained_glass","minecraft:red_stained_glass","minecraft:tinted_glass","minecraft:white_stained_glass","minecraft:yellow_stained_glass"],"minecraft:infiniburn_end":["minecraft:bedrock","minecraft:magma_block","minecraft:netherrack"],"minecraft:infiniburn_nether":["minecraft:magma_block","minecraft:netherrack"],"minecraft:infiniburn_overworld":["minecraft:magma_block","minecraft:netherrack"],"minecraft:inside_step_sound_blocks":["minecraft:powder_snow","minecraft:sculk_vein","minecraft:snow"],"minecraft:iron_ores":["minecraft:deepslate_iron_ore","minecraft:iron_ore"],"minecraft:jungle_logs":["minecraft:jungle_log","minecraft:jungle_wood","minecraft:stripped_jungle_log","minecraft:stripped_jungle_wood"],"minecraft:lapis_ores":["minecraft:deepslate_lapis_ore","minecraft:lapis_ore"],"minecraft:lava_pool_stone_cannot_replace":["minecraft:acacia_leaves","minecraft:acacia_log","minecraft:acacia_wood","minecraft:azalea_leaves","minecraft:bedrock","minecraft:birch_leaves","minecraft:birch_log","minecraft:birch_wood","minecraft:chest","minecraft:crimson_hyphae","minecraft:crimson_stem","minecraft:dark_oak_leaves","minecraft:dark_oak_log","minecraft:dark_oak_wood","minecraft:end_portal_frame","minecraft:flowering_azalea_leaves","minecraft:jungle_leaves","minecraft:jungle_log","minecraft:jungle_wood","minecraft:mangrove_leaves","minecraft:mangrove_log","minecraft:mangrove_wood","minecraft:oak_leaves","minecraft:oak_log","minecraft:oak_wood","minecraft:reinforced_deepslate","minecraft:spawner","minecraft:spruce_leaves","minecraft:spruce_log","minecraft:spruce_wood","minecraft:stripped_acacia_log","minecraft:stripped_acacia_wood","minecraft:stripped_birch_log","minecraft:stripped_birch_wood","minecraft:stripped_crimson_hyphae","minecraft:stripped_crimson_stem","minecraft:stripped_dark_oak_log","minecraft:stripped_dark_oak_wood","minecraft:stripped_jungle_log","minecraft:stripped_jungle_wood","minecraft:stripped_mangrove_log","minecraft:stripped_mangrove_wood","minecraft:stripped_oak_log","minecraft:stripped_oak_wood","minecraft:stripped_spruce_log","minecraft:stripped_spruce_wood","minecraft:stripped_warped_hyphae","minecraft:stripped_warped_stem","minecraft:warped_hyphae","minecraft:warped_stem"],"minecraft:leaves":["minecraft:acacia_leaves","minecraft:azalea_leaves","minecraft:birch_leaves","minecraft:dark_oak_leaves","minecraft:flowering_azalea_leaves","minecraft:jungle_leaves","minecraft:mangrove_leaves","minecraft:oak_leaves","minecraft:spruce_leaves"],"minecraft:logs":["minecraft:acacia_log","minecraft:acacia_wood","minecraft:birch_log","minecraft:birch_wood","minecraft:crimson_hyphae","minecraft:crimson_stem","minecraft:dark_oak_log","minecraft:dark_oak_wood","minecraft:jungle_log","minecraft:jungle_wood","minecraft:mangrove_log","minecraft:mangrove_wood","minecraft:oak_log","minecraft:oak_wood","minecraft:spruce_log","minecraft:spruce_wood","minecraft:stripped_acacia_log","minecraft:stripped_acacia_wood","minecraft:stripped_birch_log","minecraft:stripped_birch_wood","minecraft:stripped_crimson_hyphae","minecraft:stripped_crimson_stem","minecraft:stripped_dark_oak_log","minecraft:stripped_dark_oak_wood","minecraft:stripped_jungle_log","minecraft:stripped_jungle_wood","minecraft:stripped_mangrove_log","minecraft:stripped_mangrove_wood","minecraft:stripped_oak_log","minecraft:stripped_oak_wood","minecraft:stripped_spruce_log","minecraft:stripped_spruce_wood","minecraft:stripped_warped_hyphae","minecraft:stripped_warped_stem","minecraft:warped_hyphae","minecraft:warped_stem"],"minecraft:logs_that_burn":["minecraft:acacia_log","minecraft:acacia_wood","minecraft:birch_log","minecraft:birch_wood","minecraft:dark_oak_log","minecraft:dark_oak_wood","minecraft:jungle_log","minecraft:jungle_wood","minecraft:mangrove_log","minecraft:mangrove_wood","minecraft:oak_log","minecraft:oak_wood","minecraft:spruce_log","minecraft:spruce_wood","minecraft:stripped_acacia_log","minecraft:stripped_acacia_wood","minecraft:stripped_birch_log","minecraft:stripped_birch_wood","minecraft:stripped_dark_oak_log","minecraft:stripped_dark_oak_wood","minecraft:stripped_jungle_log","minecraft:stripped_jungle_wood","minecraft:stripped_mangrove_log","minecraft:stripped_mangrove_wood","minecraft:stripped_oak_log","minecraft:stripped_oak_wood","minecraft:stripped_spruce_log","minecraft:stripped_spruce_wood"],"minecraft:lush_ground_replaceable":["minecraft:andesite","minecraft:cave_vines","minecraft:cave_vines_plant","minecraft:clay","minecraft:coarse_dirt","minecraft:deepslate","minecraft:diorite","minecraft:dirt","minecraft:granite","minecraft:grass_block","minecraft:gravel","minecraft:moss_block","minecraft:mud","minecraft:muddy_mangrove_roots","minecraft:mycelium","minecraft:podzol","minecraft:rooted_dirt","minecraft:sand","minecraft:stone","minecraft:tuff"],"minecraft:mangrove_logs":["minecraft:mangrove_log","minecraft:mangrove_wood","minecraft:stripped_mangrove_log","minecraft:stripped_mangrove_wood"],"minecraft:mangrove_logs_can_grow_through":["minecraft:mangrove_leaves","minecraft:mangrove_log","minecraft:mangrove_propagule","minecraft:mangrove_roots","minecraft:moss_carpet","minecraft:mud","minecraft:muddy_mangrove_roots","minecraft:vine"],"minecraft:mangrove_roots_can_grow_through":["minecraft:mangrove_propagule","minecraft:mangrove_roots","minecraft:moss_carpet","minecraft:mud","minecraft:muddy_mangrove_roots","minecraft:snow","minecraft:vine"],"minecraft:mineable/axe":["minecraft:acacia_button","minecraft:acacia_door","minecraft:acacia_fence","minecraft:acacia_fence_gate","minecraft:acacia_log","minecraft:acacia_planks","minecraft:acacia_pressure_plate","minecraft:acacia_sapling","minecraft:acacia_sign","minecraft:acacia_slab","minecraft:acacia_stairs","minecraft:acacia_trapdoor","minecraft:acacia_wall_sign","minecraft:acacia_wood","minecraft:attached_melon_stem","minecraft:attached_pumpkin_stem","minecraft:azalea","minecraft:bamboo","minecraft:barrel","minecraft:bee_nest","minecraft:beehive","minecraft:beetroots","minecraft:big_dripleaf","minecraft:big_dripleaf_stem","minecraft:birch_button","minecraft:birch_door","minecraft:birch_fence","minecraft:birch_fence_gate","minecraft:birch_log","minecraft:birch_planks","minecraft:birch_pressure_plate","minecraft:birch_sapling","minecraft:birch_sign","minecraft:birch_slab","minecraft:birch_stairs","minecraft:birch_trapdoor","minecraft:birch_wall_sign","minecraft:birch_wood","minecraft:black_banner","minecraft:black_wall_banner","minecraft:blue_banner","minecraft:blue_wall_banner","minecraft:bookshelf","minecraft:brown_banner","minecraft:brown_mushroom","minecraft:brown_mushroom_block","minecraft:brown_wall_banner","minecraft:campfire","minecraft:carrots","minecraft:cartography_table","minecraft:carved_pumpkin","minecraft:cave_vines","minecraft:cave_vines_plant","minecraft:chest","minecraft:chorus_flower","minecraft:chorus_plant","minecraft:cocoa","minecraft:composter","minecraft:crafting_table","minecraft:crimson_button","minecraft:crimson_door","minecraft:crimson_fence","minecraft:crimson_fence_gate","minecraft:crimson_fungus","minecraft:crimson_hyphae","minecraft:crimson_planks","minecraft:crimson_pressure_plate","minecraft:crimson_sign","minecraft:crimson_slab","minecraft:crimson_stairs","minecraft:crimson_stem","minecraft:crimson_trapdoor","minecraft:crimson_wall_sign","minecraft:cyan_banner","minecraft:cyan_wall_banner","minecraft:dark_oak_button","minecraft:dark_oak_door","minecraft:dark_oak_fence","minecraft:dark_oak_fence_gate","minecraft:dark_oak_log","minecraft:dark_oak_planks","minecraft:dark_oak_pressure_plate","minecraft:dark_oak_sapling","minecraft:dark_oak_sign","minecraft:dark_oak_slab","minecraft:dark_oak_stairs","minecraft:dark_oak_trapdoor","minecraft:dark_oak_wall_sign","minecraft:dark_oak_wood","minecraft:daylight_detector","minecraft:dead_bush","minecraft:fern","minecraft:fletching_table","minecraft:flowering_azalea","minecraft:glow_lichen","minecraft:grass","minecraft:gray_banner","minecraft:gray_wall_banner","minecraft:green_banner","minecraft:green_wall_banner","minecraft:hanging_roots","minecraft:jack_o_lantern","minecraft:jukebox","minecraft:jungle_button","minecraft:jungle_door","minecraft:jungle_fence","minecraft:jungle_fence_gate","minecraft:jungle_log","minecraft:jungle_planks","minecraft:jungle_pressure_plate","minecraft:jungle_sapling","minecraft:jungle_sign","minecraft:jungle_slab","minecraft:jungle_stairs","minecraft:jungle_trapdoor","minecraft:jungle_wall_sign","minecraft:jungle_wood","minecraft:ladder","minecraft:large_fern","minecraft:lectern","minecraft:light_blue_banner","minecraft:light_blue_wall_banner","minecraft:light_gray_banner","minecraft:light_gray_wall_banner","minecraft:lily_pad","minecraft:lime_banner","minecraft:lime_wall_banner","minecraft:loom","minecraft:magenta_banner","minecraft:magenta_wall_banner","minecraft:mangrove_button","minecraft:mangrove_door","minecraft:mangrove_fence","minecraft:mangrove_fence_gate","minecraft:mangrove_log","minecraft:mangrove_planks","minecraft:mangrove_pressure_plate","minecraft:mangrove_propagule","minecraft:mangrove_roots","minecraft:mangrove_sign","minecraft:mangrove_slab","minecraft:mangrove_stairs","minecraft:mangrove_trapdoor","minecraft:mangrove_wall_sign","minecraft:mangrove_wood","minecraft:melon","minecraft:melon_stem","minecraft:mushroom_stem","minecraft:nether_wart","minecraft:note_block","minecraft:oak_button","minecraft:oak_door","minecraft:oak_fence","minecraft:oak_fence_gate","minecraft:oak_log","minecraft:oak_planks","minecraft:oak_pressure_plate","minecraft:oak_sapling","minecraft:oak_sign","minecraft:oak_slab","minecraft:oak_stairs","minecraft:oak_trapdoor","minecraft:oak_wall_sign","minecraft:oak_wood","minecraft:orange_banner","minecraft:orange_wall_banner","minecraft:pink_banner","minecraft:pink_wall_banner","minecraft:potatoes","minecraft:pumpkin","minecraft:pumpkin_stem","minecraft:purple_banner","minecraft:purple_wall_banner","minecraft:red_banner","minecraft:red_mushroom","minecraft:red_mushroom_block","minecraft:red_wall_banner","minecraft:scaffolding","minecraft:small_dripleaf","minecraft:smithing_table","minecraft:soul_campfire","minecraft:spore_blossom","minecraft:spruce_button","minecraft:spruce_door","minecraft:spruce_fence","minecraft:spruce_fence_gate","minecraft:spruce_log","minecraft:spruce_planks","minecraft:spruce_pressure_plate","minecraft:spruce_sapling","minecraft:spruce_sign","minecraft:spruce_slab","minecraft:spruce_stairs","minecraft:spruce_trapdoor","minecraft:spruce_wall_sign","minecraft:spruce_wood","minecraft:stripped_acacia_log","minecraft:stripped_acacia_wood","minecraft:stripped_birch_log","minecraft:stripped_birch_wood","minecraft:stripped_crimson_hyphae","minecraft:stripped_crimson_stem","minecraft:stripped_dark_oak_log","minecraft:stripped_dark_oak_wood","minecraft:stripped_jungle_log","minecraft:stripped_jungle_wood","minecraft:stripped_mangrove_log","minecraft:stripped_mangrove_wood","minecraft:stripped_oak_log","minecraft:stripped_oak_wood","minecraft:stripped_spruce_log","minecraft:stripped_spruce_wood","minecraft:stripped_warped_hyphae","minecraft:stripped_warped_stem","minecraft:sugar_cane","minecraft:sweet_berry_bush","minecraft:tall_grass","minecraft:trapped_chest","minecraft:twisting_vines","minecraft:twisting_vines_plant","minecraft:vine","minecraft:warped_button","minecraft:warped_door","minecraft:warped_fence","minecraft:warped_fence_gate","minecraft:warped_fungus","minecraft:warped_hyphae","minecraft:warped_planks","minecraft:warped_pressure_plate","minecraft:warped_sign","minecraft:warped_slab","minecraft:warped_stairs","minecraft:warped_stem","minecraft:warped_trapdoor","minecraft:warped_wall_sign","minecraft:weeping_vines","minecraft:weeping_vines_plant","minecraft:wheat","minecraft:white_banner","minecraft:white_wall_banner","minecraft:yellow_banner","minecraft:yellow_wall_banner"],"minecraft:mineable/hoe":["minecraft:acacia_leaves","minecraft:azalea_leaves","minecraft:birch_leaves","minecraft:dark_oak_leaves","minecraft:dried_kelp_block","minecraft:flowering_azalea_leaves","minecraft:hay_block","minecraft:jungle_leaves","minecraft:mangrove_leaves","minecraft:moss_block","minecraft:moss_carpet","minecraft:nether_wart_block","minecraft:oak_leaves","minecraft:sculk","minecraft:sculk_catalyst","minecraft:sculk_sensor","minecraft:sculk_shrieker","minecraft:sculk_vein","minecraft:shroomlight","minecraft:sponge","minecraft:spruce_leaves","minecraft:target","minecraft:warped_wart_block","minecraft:wet_sponge"],"minecraft:mineable/pickaxe":["minecraft:activator_rail","minecraft:amethyst_block","minecraft:amethyst_cluster","minecraft:ancient_debris","minecraft:andesite","minecraft:andesite_slab","minecraft:andesite_stairs","minecraft:andesite_wall","minecraft:anvil","minecraft:basalt","minecraft:bell","minecraft:black_concrete","minecraft:black_glazed_terracotta","minecraft:black_shulker_box","minecraft:black_terracotta","minecraft:blackstone","minecraft:blackstone_slab","minecraft:blackstone_stairs","minecraft:blackstone_wall","minecraft:blast_furnace","minecraft:blue_concrete","minecraft:blue_glazed_terracotta","minecraft:blue_ice","minecraft:blue_shulker_box","minecraft:blue_terracotta","minecraft:bone_block","minecraft:brain_coral_block","minecraft:brewing_stand","minecraft:brick_slab","minecraft:brick_stairs","minecraft:brick_wall","minecraft:bricks","minecraft:brown_concrete","minecraft:brown_glazed_terracotta","minecraft:brown_shulker_box","minecraft:brown_terracotta","minecraft:bubble_coral_block","minecraft:budding_amethyst","minecraft:calcite","minecraft:cauldron","minecraft:chain","minecraft:chipped_anvil","minecraft:chiseled_deepslate","minecraft:chiseled_nether_bricks","minecraft:chiseled_polished_blackstone","minecraft:chiseled_quartz_block","minecraft:chiseled_red_sandstone","minecraft:chiseled_sandstone","minecraft:chiseled_stone_bricks","minecraft:coal_block","minecraft:coal_ore","minecraft:cobbled_deepslate","minecraft:cobbled_deepslate_slab","minecraft:cobbled_deepslate_stairs","minecraft:cobbled_deepslate_wall","minecraft:cobblestone","minecraft:cobblestone_slab","minecraft:cobblestone_stairs","minecraft:cobblestone_wall","minecraft:conduit","minecraft:copper_block","minecraft:copper_ore","minecraft:cracked_deepslate_bricks","minecraft:cracked_deepslate_tiles","minecraft:cracked_nether_bricks","minecraft:cracked_polished_blackstone_bricks","minecraft:cracked_stone_bricks","minecraft:crimson_nylium","minecraft:crying_obsidian","minecraft:cut_copper","minecraft:cut_copper_slab","minecraft:cut_copper_stairs","minecraft:cut_red_sandstone","minecraft:cut_red_sandstone_slab","minecraft:cut_sandstone","minecraft:cut_sandstone_slab","minecraft:cyan_concrete","minecraft:cyan_glazed_terracotta","minecraft:cyan_shulker_box","minecraft:cyan_terracotta","minecraft:damaged_anvil","minecraft:dark_prismarine","minecraft:dark_prismarine_slab","minecraft:dark_prismarine_stairs","minecraft:dead_brain_coral","minecraft:dead_brain_coral_block","minecraft:dead_brain_coral_fan","minecraft:dead_brain_coral_wall_fan","minecraft:dead_bubble_coral","minecraft:dead_bubble_coral_block","minecraft:dead_bubble_coral_fan","minecraft:dead_bubble_coral_wall_fan","minecraft:dead_fire_coral","minecraft:dead_fire_coral_block","minecraft:dead_fire_coral_fan","minecraft:dead_fire_coral_wall_fan","minecraft:dead_horn_coral","minecraft:dead_horn_coral_block","minecraft:dead_horn_coral_fan","minecraft:dead_horn_coral_wall_fan","minecraft:dead_tube_coral","minecraft:dead_tube_coral_block","minecraft:dead_tube_coral_fan","minecraft:dead_tube_coral_wall_fan","minecraft:deepslate","minecraft:deepslate_brick_slab","minecraft:deepslate_brick_stairs","minecraft:deepslate_brick_wall","minecraft:deepslate_bricks","minecraft:deepslate_coal_ore","minecraft:deepslate_copper_ore","minecraft:deepslate_diamond_ore","minecraft:deepslate_emerald_ore","minecraft:deepslate_gold_ore","minecraft:deepslate_iron_ore","minecraft:deepslate_lapis_ore","minecraft:deepslate_redstone_ore","minecraft:deepslate_tile_slab","minecraft:deepslate_tile_stairs","minecraft:deepslate_tile_wall","minecraft:deepslate_tiles","minecraft:detector_rail","minecraft:diamond_block","minecraft:diamond_ore","minecraft:diorite","minecraft:diorite_slab","minecraft:diorite_stairs","minecraft:diorite_wall","minecraft:dispenser","minecraft:dripstone_block","minecraft:dropper","minecraft:emerald_block","minecraft:emerald_ore","minecraft:enchanting_table","minecraft:end_stone","minecraft:end_stone_brick_slab","minecraft:end_stone_brick_stairs","minecraft:end_stone_brick_wall","minecraft:end_stone_bricks","minecraft:ender_chest","minecraft:exposed_copper","minecraft:exposed_cut_copper","minecraft:exposed_cut_copper_slab","minecraft:exposed_cut_copper_stairs","minecraft:fire_coral_block","minecraft:furnace","minecraft:gilded_blackstone","minecraft:gold_block","minecraft:gold_ore","minecraft:granite","minecraft:granite_slab","minecraft:granite_stairs","minecraft:granite_wall","minecraft:gray_concrete","minecraft:gray_glazed_terracotta","minecraft:gray_shulker_box","minecraft:gray_terracotta","minecraft:green_concrete","minecraft:green_glazed_terracotta","minecraft:green_shulker_box","minecraft:green_terracotta","minecraft:grindstone","minecraft:heavy_weighted_pressure_plate","minecraft:hopper","minecraft:horn_coral_block","minecraft:ice","minecraft:infested_chiseled_stone_bricks","minecraft:infested_cobblestone","minecraft:infested_cracked_stone_bricks","minecraft:infested_deepslate","minecraft:infested_mossy_stone_bricks","minecraft:infested_stone","minecraft:infested_stone_bricks","minecraft:iron_bars","minecraft:iron_block","minecraft:iron_door","minecraft:iron_ore","minecraft:iron_trapdoor","minecraft:lantern","minecraft:lapis_block","minecraft:lapis_ore","minecraft:large_amethyst_bud","minecraft:lava_cauldron","minecraft:light_blue_concrete","minecraft:light_blue_glazed_terracotta","minecraft:light_blue_shulker_box","minecraft:light_blue_terracotta","minecraft:light_gray_concrete","minecraft:light_gray_glazed_terracotta","minecraft:light_gray_shulker_box","minecraft:light_gray_terracotta","minecraft:light_weighted_pressure_plate","minecraft:lightning_rod","minecraft:lime_concrete","minecraft:lime_glazed_terracotta","minecraft:lime_shulker_box","minecraft:lime_terracotta","minecraft:lodestone","minecraft:magenta_concrete","minecraft:magenta_glazed_terracotta","minecraft:magenta_shulker_box","minecraft:magenta_terracotta","minecraft:magma_block","minecraft:medium_amethyst_bud","minecraft:mossy_cobblestone","minecraft:mossy_cobblestone_slab","minecraft:mossy_cobblestone_stairs","minecraft:mossy_cobblestone_wall","minecraft:mossy_stone_brick_slab","minecraft:mossy_stone_brick_stairs","minecraft:mossy_stone_brick_wall","minecraft:mossy_stone_bricks","minecraft:mud_brick_slab","minecraft:mud_brick_stairs","minecraft:mud_brick_wall","minecraft:mud_bricks","minecraft:nether_brick_fence","minecraft:nether_brick_slab","minecraft:nether_brick_stairs","minecraft:nether_brick_wall","minecraft:nether_bricks","minecraft:nether_gold_ore","minecraft:nether_quartz_ore","minecraft:netherite_block","minecraft:netherrack","minecraft:observer","minecraft:obsidian","minecraft:orange_concrete","minecraft:orange_glazed_terracotta","minecraft:orange_shulker_box","minecraft:orange_terracotta","minecraft:oxidized_copper","minecraft:oxidized_cut_copper","minecraft:oxidized_cut_copper_slab","minecraft:oxidized_cut_copper_stairs","minecraft:packed_ice","minecraft:packed_mud","minecraft:petrified_oak_slab","minecraft:pink_concrete","minecraft:pink_glazed_terracotta","minecraft:pink_shulker_box","minecraft:pink_terracotta","minecraft:piston","minecraft:piston_head","minecraft:pointed_dripstone","minecraft:polished_andesite","minecraft:polished_andesite_slab","minecraft:polished_andesite_stairs","minecraft:polished_basalt","minecraft:polished_blackstone","minecraft:polished_blackstone_brick_slab","minecraft:polished_blackstone_brick_stairs","minecraft:polished_blackstone_brick_wall","minecraft:polished_blackstone_bricks","minecraft:polished_blackstone_pressure_plate","minecraft:polished_blackstone_slab","minecraft:polished_blackstone_stairs","minecraft:polished_blackstone_wall","minecraft:polished_deepslate","minecraft:polished_deepslate_slab","minecraft:polished_deepslate_stairs","minecraft:polished_deepslate_wall","minecraft:polished_diorite","minecraft:polished_diorite_slab","minecraft:polished_diorite_stairs","minecraft:polished_granite","minecraft:polished_granite_slab","minecraft:polished_granite_stairs","minecraft:powder_snow_cauldron","minecraft:powered_rail","minecraft:prismarine","minecraft:prismarine_brick_slab","minecraft:prismarine_brick_stairs","minecraft:prismarine_bricks","minecraft:prismarine_slab","minecraft:prismarine_stairs","minecraft:prismarine_wall","minecraft:purple_concrete","minecraft:purple_glazed_terracotta","minecraft:purple_shulker_box","minecraft:purple_terracotta","minecraft:purpur_block","minecraft:purpur_pillar","minecraft:purpur_slab","minecraft:purpur_stairs","minecraft:quartz_block","minecraft:quartz_bricks","minecraft:quartz_pillar","minecraft:quartz_slab","minecraft:quartz_stairs","minecraft:rail","minecraft:raw_copper_block","minecraft:raw_gold_block","minecraft:raw_iron_block","minecraft:red_concrete","minecraft:red_glazed_terracotta","minecraft:red_nether_brick_slab","minecraft:red_nether_brick_stairs","minecraft:red_nether_brick_wall","minecraft:red_nether_bricks","minecraft:red_sandstone","minecraft:red_sandstone_slab","minecraft:red_sandstone_stairs","minecraft:red_sandstone_wall","minecraft:red_shulker_box","minecraft:red_terracotta","minecraft:redstone_block","minecraft:redstone_ore","minecraft:respawn_anchor","minecraft:sandstone","minecraft:sandstone_slab","minecraft:sandstone_stairs","minecraft:sandstone_wall","minecraft:shulker_box","minecraft:small_amethyst_bud","minecraft:smoker","minecraft:smooth_basalt","minecraft:smooth_quartz","minecraft:smooth_quartz_slab","minecraft:smooth_quartz_stairs","minecraft:smooth_red_sandstone","minecraft:smooth_red_sandstone_slab","minecraft:smooth_red_sandstone_stairs","minecraft:smooth_sandstone","minecraft:smooth_sandstone_slab","minecraft:smooth_sandstone_stairs","minecraft:smooth_stone","minecraft:smooth_stone_slab","minecraft:soul_lantern","minecraft:spawner","minecraft:sticky_piston","minecraft:stone","minecraft:stone_brick_slab","minecraft:stone_brick_stairs","minecraft:stone_brick_wall","minecraft:stone_bricks","minecraft:stone_button","minecraft:stone_pressure_plate","minecraft:stone_slab","minecraft:stone_stairs","minecraft:stonecutter","minecraft:terracotta","minecraft:tube_coral_block","minecraft:tuff","minecraft:warped_nylium","minecraft:water_cauldron","minecraft:waxed_copper_block","minecraft:waxed_cut_copper","minecraft:waxed_cut_copper_slab","minecraft:waxed_cut_copper_stairs","minecraft:waxed_exposed_copper","minecraft:waxed_exposed_cut_copper","minecraft:waxed_exposed_cut_copper_slab","minecraft:waxed_exposed_cut_copper_stairs","minecraft:waxed_oxidized_copper","minecraft:waxed_oxidized_cut_copper","minecraft:waxed_oxidized_cut_copper_slab","minecraft:waxed_oxidized_cut_copper_stairs","minecraft:waxed_weathered_copper","minecraft:waxed_weathered_cut_copper","minecraft:waxed_weathered_cut_copper_slab","minecraft:waxed_weathered_cut_copper_stairs","minecraft:weathered_copper","minecraft:weathered_cut_copper","minecraft:weathered_cut_copper_slab","minecraft:weathered_cut_copper_stairs","minecraft:white_concrete","minecraft:white_glazed_terracotta","minecraft:white_shulker_box","minecraft:white_terracotta","minecraft:yellow_concrete","minecraft:yellow_glazed_terracotta","minecraft:yellow_shulker_box","minecraft:yellow_terracotta"],"minecraft:mineable/shovel":["minecraft:black_concrete_powder","minecraft:blue_concrete_powder","minecraft:brown_concrete_powder","minecraft:clay","minecraft:coarse_dirt","minecraft:cyan_concrete_powder","minecraft:dirt","minecraft:dirt_path","minecraft:farmland","minecraft:grass_block","minecraft:gravel","minecraft:gray_concrete_powder","minecraft:green_concrete_powder","minecraft:light_blue_concrete_powder","minecraft:light_gray_concrete_powder","minecraft:lime_concrete_powder","minecraft:magenta_concrete_powder","minecraft:mud","minecraft:muddy_mangrove_roots","minecraft:mycelium","minecraft:orange_concrete_powder","minecraft:pink_concrete_powder","minecraft:podzol","minecraft:purple_concrete_powder","minecraft:red_concrete_powder","minecraft:red_sand","minecraft:rooted_dirt","minecraft:sand","minecraft:snow","minecraft:snow_block","minecraft:soul_sand","minecraft:soul_soil","minecraft:white_concrete_powder","minecraft:yellow_concrete_powder"],"minecraft:mooshrooms_spawnable_on":["minecraft:mycelium"],"minecraft:moss_replaceable":["minecraft:andesite","minecraft:cave_vines","minecraft:cave_vines_plant","minecraft:coarse_dirt","minecraft:deepslate","minecraft:diorite","minecraft:dirt","minecraft:granite","minecraft:grass_block","minecraft:moss_block","minecraft:mud","minecraft:muddy_mangrove_roots","minecraft:mycelium","minecraft:podzol","minecraft:rooted_dirt","minecraft:stone","minecraft:tuff"],"minecraft:mushroom_grow_block":["minecraft:crimson_nylium","minecraft:mycelium","minecraft:podzol","minecraft:warped_nylium"],"minecraft:needs_diamond_tool":["minecraft:ancient_debris","minecraft:crying_obsidian","minecraft:netherite_block","minecraft:obsidian","minecraft:respawn_anchor"],"minecraft:needs_iron_tool":["minecraft:deepslate_diamond_ore","minecraft:deepslate_emerald_ore","minecraft:deepslate_gold_ore","minecraft:deepslate_redstone_ore","minecraft:diamond_block","minecraft:diamond_ore","minecraft:emerald_block","minecraft:emerald_ore","minecraft:gold_block","minecraft:gold_ore","minecraft:raw_gold_block","minecraft:redstone_ore"],"minecraft:needs_stone_tool":["minecraft:copper_block","minecraft:copper_ore","minecraft:cut_copper","minecraft:cut_copper_slab","minecraft:cut_copper_stairs","minecraft:deepslate_copper_ore","minecraft:deepslate_iron_ore","minecraft:deepslate_lapis_ore","minecraft:exposed_copper","minecraft:exposed_cut_copper","minecraft:exposed_cut_copper_slab","minecraft:exposed_cut_copper_stairs","minecraft:iron_block","minecraft:iron_ore","minecraft:lapis_block","minecraft:lapis_ore","minecraft:lightning_rod","minecraft:oxidized_copper","minecraft:oxidized_cut_copper","minecraft:oxidized_cut_copper_slab","minecraft:oxidized_cut_copper_stairs","minecraft:raw_copper_block","minecraft:raw_iron_block","minecraft:waxed_copper_block","minecraft:waxed_cut_copper","minecraft:waxed_cut_copper_slab","minecraft:waxed_cut_copper_stairs","minecraft:waxed_exposed_copper","minecraft:waxed_exposed_cut_copper","minecraft:waxed_exposed_cut_copper_slab","minecraft:waxed_exposed_cut_copper_stairs","minecraft:waxed_oxidized_copper","minecraft:waxed_oxidized_cut_copper","minecraft:waxed_oxidized_cut_copper_slab","minecraft:waxed_oxidized_cut_copper_stairs","minecraft:waxed_weathered_copper","minecraft:waxed_weathered_cut_copper","minecraft:waxed_weathered_cut_copper_slab","minecraft:waxed_weathered_cut_copper_stairs","minecraft:weathered_copper","minecraft:weathered_cut_copper","minecraft:weathered_cut_copper_slab","minecraft:weathered_cut_copper_stairs"],"minecraft:nether_carver_replaceables":["minecraft:andesite","minecraft:basalt","minecraft:blackstone","minecraft:coarse_dirt","minecraft:crimson_nylium","minecraft:deepslate","minecraft:diorite","minecraft:dirt","minecraft:granite","minecraft:grass_block","minecraft:moss_block","minecraft:mud","minecraft:muddy_mangrove_roots","minecraft:mycelium","minecraft:nether_wart_block","minecraft:netherrack","minecraft:podzol","minecraft:rooted_dirt","minecraft:soul_sand","minecraft:soul_soil","minecraft:stone","minecraft:tuff","minecraft:warped_nylium","minecraft:warped_wart_block"],"minecraft:non_flammable_wood":["minecraft:crimson_button","minecraft:crimson_door","minecraft:crimson_fence","minecraft:crimson_fence_gate","minecraft:crimson_hyphae","minecraft:crimson_planks","minecraft:crimson_pressure_plate","minecraft:crimson_sign","minecraft:crimson_slab","minecraft:crimson_stairs","minecraft:crimson_stem","minecraft:crimson_trapdoor","minecraft:crimson_wall_sign","minecraft:stripped_crimson_hyphae","minecraft:stripped_crimson_stem","minecraft:stripped_warped_hyphae","minecraft:stripped_warped_stem","minecraft:warped_button","minecraft:warped_door","minecraft:warped_fence","minecraft:warped_fence_gate","minecraft:warped_hyphae","minecraft:warped_planks","minecraft:warped_pressure_plate","minecraft:warped_sign","minecraft:warped_slab","minecraft:warped_stairs","minecraft:warped_stem","minecraft:warped_trapdoor","minecraft:warped_wall_sign"],"minecraft:nylium":["minecraft:crimson_nylium","minecraft:warped_nylium"],"minecraft:oak_logs":["minecraft:oak_log","minecraft:oak_wood","minecraft:stripped_oak_log","minecraft:stripped_oak_wood"],"minecraft:occludes_vibration_signals":["minecraft:black_wool","minecraft:blue_wool","minecraft:brown_wool","minecraft:cyan_wool","minecraft:gray_wool","minecraft:green_wool","minecraft:light_blue_wool","minecraft:light_gray_wool","minecraft:lime_wool","minecraft:magenta_wool","minecraft:orange_wool","minecraft:pink_wool","minecraft:purple_wool","minecraft:red_wool","minecraft:white_wool","minecraft:yellow_wool"],"minecraft:overworld_carver_replaceables":["minecraft:andesite","minecraft:black_terracotta","minecraft:blue_terracotta","minecraft:brown_terracotta","minecraft:calcite","minecraft:coarse_dirt","minecraft:copper_ore","minecraft:cyan_terracotta","minecraft:deepslate","minecraft:deepslate_copper_ore","minecraft:deepslate_iron_ore","minecraft:diorite","minecraft:dirt","minecraft:granite","minecraft:grass_block","minecraft:gravel","minecraft:gray_terracotta","minecraft:green_terracotta","minecraft:iron_ore","minecraft:light_blue_terracotta","minecraft:light_gray_terracotta","minecraft:lime_terracotta","minecraft:magenta_terracotta","minecraft:moss_block","minecraft:mud","minecraft:muddy_mangrove_roots","minecraft:mycelium","minecraft:orange_terracotta","minecraft:packed_ice","minecraft:pink_terracotta","minecraft:podzol","minecraft:purple_terracotta","minecraft:raw_copper_block","minecraft:raw_iron_block","minecraft:red_sand","minecraft:red_sandstone","minecraft:red_terracotta","minecraft:rooted_dirt","minecraft:sand","minecraft:sandstone","minecraft:snow","minecraft:stone","minecraft:terracotta","minecraft:tuff","minecraft:water","minecraft:white_terracotta","minecraft:yellow_terracotta"],"minecraft:overworld_natural_logs":["minecraft:acacia_log","minecraft:birch_log","minecraft:dark_oak_log","minecraft:jungle_log","minecraft:mangrove_log","minecraft:oak_log","minecraft:spruce_log"],"minecraft:parrots_spawnable_on":["minecraft:acacia_leaves","minecraft:acacia_log","minecraft:acacia_wood","minecraft:air","minecraft:azalea_leaves","minecraft:birch_leaves","minecraft:birch_log","minecraft:birch_wood","minecraft:crimson_hyphae","minecraft:crimson_stem","minecraft:dark_oak_leaves","minecraft:dark_oak_log","minecraft:dark_oak_wood","minecraft:flowering_azalea_leaves","minecraft:grass_block","minecraft:jungle_leaves","minecraft:jungle_log","minecraft:jungle_wood","minecraft:mangrove_leaves","minecraft:mangrove_log","minecraft:mangrove_wood","minecraft:oak_leaves","minecraft:oak_log","minecraft:oak_wood","minecraft:spruce_leaves","minecraft:spruce_log","minecraft:spruce_wood","minecraft:stripped_acacia_log","minecraft:stripped_acacia_wood","minecraft:stripped_birch_log","minecraft:stripped_birch_wood","minecraft:stripped_crimson_hyphae","minecraft:stripped_crimson_stem","minecraft:stripped_dark_oak_log","minecraft:stripped_dark_oak_wood","minecraft:stripped_jungle_log","minecraft:stripped_jungle_wood","minecraft:stripped_mangrove_log","minecraft:stripped_mangrove_wood","minecraft:stripped_oak_log","minecraft:stripped_oak_wood","minecraft:stripped_spruce_log","minecraft:stripped_spruce_wood","minecraft:stripped_warped_hyphae","minecraft:stripped_warped_stem","minecraft:warped_hyphae","minecraft:warped_stem"],"minecraft:piglin_repellents":["minecraft:soul_campfire","minecraft:soul_fire","minecraft:soul_lantern","minecraft:soul_torch","minecraft:soul_wall_torch"],"minecraft:planks":["minecraft:acacia_planks","minecraft:birch_planks","minecraft:crimson_planks","minecraft:dark_oak_planks","minecraft:jungle_planks","minecraft:mangrove_planks","minecraft:oak_planks","minecraft:spruce_planks","minecraft:warped_planks"],"minecraft:polar_bears_spawnable_on_alternate":["minecraft:ice"],"minecraft:portals":["minecraft:end_gateway","minecraft:end_portal","minecraft:nether_portal"],"minecraft:pressure_plates":["minecraft:acacia_pressure_plate","minecraft:birch_pressure_plate","minecraft:crimson_pressure_plate","minecraft:dark_oak_pressure_plate","minecraft:heavy_weighted_pressure_plate","minecraft:jungle_pressure_plate","minecraft:light_weighted_pressure_plate","minecraft:mangrove_pressure_plate","minecraft:oak_pressure_plate","minecraft:polished_blackstone_pressure_plate","minecraft:spruce_pressure_plate","minecraft:stone_pressure_plate","minecraft:warped_pressure_plate"],"minecraft:prevent_mob_spawning_inside":["minecraft:activator_rail","minecraft:detector_rail","minecraft:powered_rail","minecraft:rail"],"minecraft:rabbits_spawnable_on":["minecraft:grass_block","minecraft:sand","minecraft:snow","minecraft:snow_block"],"minecraft:rails":["minecraft:activator_rail","minecraft:detector_rail","minecraft:powered_rail","minecraft:rail"],"minecraft:redstone_ores":["minecraft:deepslate_redstone_ore","minecraft:redstone_ore"],"minecraft:replaceable_plants":["minecraft:dead_bush","minecraft:fern","minecraft:glow_lichen","minecraft:grass","minecraft:hanging_roots","minecraft:large_fern","minecraft:lilac","minecraft:peony","minecraft:rose_bush","minecraft:sunflower","minecraft:tall_grass","minecraft:vine"],"minecraft:sand":["minecraft:red_sand","minecraft:sand"],"minecraft:saplings":["minecraft:acacia_sapling","minecraft:azalea","minecraft:birch_sapling","minecraft:dark_oak_sapling","minecraft:flowering_azalea","minecraft:jungle_sapling","minecraft:mangrove_propagule","minecraft:oak_sapling","minecraft:spruce_sapling"],"minecraft:sculk_replaceable":["minecraft:andesite","minecraft:basalt","minecraft:black_terracotta","minecraft:blackstone","minecraft:blue_terracotta","minecraft:brown_terracotta","minecraft:calcite","minecraft:clay","minecraft:coarse_dirt","minecraft:crimson_nylium","minecraft:cyan_terracotta","minecraft:deepslate","minecraft:diorite","minecraft:dirt","minecraft:dripstone_block","minecraft:end_stone","minecraft:granite","minecraft:grass_block","minecraft:gravel","minecraft:gray_terracotta","minecraft:green_terracotta","minecraft:light_blue_terracotta","minecraft:light_gray_terracotta","minecraft:lime_terracotta","minecraft:magenta_terracotta","minecraft:moss_block","minecraft:mud","minecraft:muddy_mangrove_roots","minecraft:mycelium","minecraft:netherrack","minecraft:orange_terracotta","minecraft:pink_terracotta","minecraft:podzol","minecraft:purple_terracotta","minecraft:red_sand","minecraft:red_sandstone","minecraft:red_terracotta","minecraft:rooted_dirt","minecraft:sand","minecraft:sandstone","minecraft:smooth_basalt","minecraft:soul_sand","minecraft:soul_soil","minecraft:stone","minecraft:terracotta","minecraft:tuff","minecraft:warped_nylium","minecraft:white_terracotta","minecraft:yellow_terracotta"],"minecraft:sculk_replaceable_world_gen":["minecraft:andesite","minecraft:basalt","minecraft:black_terracotta","minecraft:blackstone","minecraft:blue_terracotta","minecraft:brown_terracotta","minecraft:calcite","minecraft:clay","minecraft:coarse_dirt","minecraft:cobbled_deepslate","minecraft:cracked_deepslate_bricks","minecraft:cracked_deepslate_tiles","minecraft:crimson_nylium","minecraft:cyan_terracotta","minecraft:deepslate","minecraft:deepslate_bricks","minecraft:deepslate_tiles","minecraft:diorite","minecraft:dirt","minecraft:dripstone_block","minecraft:end_stone","minecraft:granite","minecraft:grass_block","minecraft:gravel","minecraft:gray_terracotta","minecraft:green_terracotta","minecraft:light_blue_terracotta","minecraft:light_gray_terracotta","minecraft:lime_terracotta","minecraft:magenta_terracotta","minecraft:moss_block","minecraft:mud","minecraft:muddy_mangrove_roots","minecraft:mycelium","minecraft:netherrack","minecraft:orange_terracotta","minecraft:pink_terracotta","minecraft:podzol","minecraft:polished_deepslate","minecraft:purple_terracotta","minecraft:red_sand","minecraft:red_sandstone","minecraft:red_terracotta","minecraft:rooted_dirt","minecraft:sand","minecraft:sandstone","minecraft:smooth_basalt","minecraft:soul_sand","minecraft:soul_soil","minecraft:stone","minecraft:terracotta","minecraft:tuff","minecraft:warped_nylium","minecraft:white_terracotta","minecraft:yellow_terracotta"],"minecraft:shulker_boxes":["minecraft:black_shulker_box","minecraft:blue_shulker_box","minecraft:brown_shulker_box","minecraft:cyan_shulker_box","minecraft:gray_shulker_box","minecraft:green_shulker_box","minecraft:light_blue_shulker_box","minecraft:light_gray_shulker_box","minecraft:lime_shulker_box","minecraft:magenta_shulker_box","minecraft:orange_shulker_box","minecraft:pink_shulker_box","minecraft:purple_shulker_box","minecraft:red_shulker_box","minecraft:shulker_box","minecraft:white_shulker_box","minecraft:yellow_shulker_box"],"minecraft:signs":["minecraft:acacia_sign","minecraft:acacia_wall_sign","minecraft:birch_sign","minecraft:birch_wall_sign","minecraft:crimson_sign","minecraft:crimson_wall_sign","minecraft:dark_oak_sign","minecraft:dark_oak_wall_sign","minecraft:jungle_sign","minecraft:jungle_wall_sign","minecraft:mangrove_sign","minecraft:mangrove_wall_sign","minecraft:oak_sign","minecraft:oak_wall_sign","minecraft:spruce_sign","minecraft:spruce_wall_sign","minecraft:warped_sign","minecraft:warped_wall_sign"],"minecraft:slabs":["minecraft:acacia_slab","minecraft:andesite_slab","minecraft:birch_slab","minecraft:blackstone_slab","minecraft:brick_slab","minecraft:cobbled_deepslate_slab","minecraft:cobblestone_slab","minecraft:crimson_slab","minecraft:cut_copper_slab","minecraft:cut_red_sandstone_slab","minecraft:cut_sandstone_slab","minecraft:dark_oak_slab","minecraft:dark_prismarine_slab","minecraft:deepslate_brick_slab","minecraft:deepslate_tile_slab","minecraft:diorite_slab","minecraft:end_stone_brick_slab","minecraft:exposed_cut_copper_slab","minecraft:granite_slab","minecraft:jungle_slab","minecraft:mangrove_slab","minecraft:mossy_cobblestone_slab","minecraft:mossy_stone_brick_slab","minecraft:mud_brick_slab","minecraft:nether_brick_slab","minecraft:oak_slab","minecraft:oxidized_cut_copper_slab","minecraft:petrified_oak_slab","minecraft:polished_andesite_slab","minecraft:polished_blackstone_brick_slab","minecraft:polished_blackstone_slab","minecraft:polished_deepslate_slab","minecraft:polished_diorite_slab","minecraft:polished_granite_slab","minecraft:prismarine_brick_slab","minecraft:prismarine_slab","minecraft:purpur_slab","minecraft:quartz_slab","minecraft:red_nether_brick_slab","minecraft:red_sandstone_slab","minecraft:sandstone_slab","minecraft:smooth_quartz_slab","minecraft:smooth_red_sandstone_slab","minecraft:smooth_sandstone_slab","minecraft:smooth_stone_slab","minecraft:spruce_slab","minecraft:stone_brick_slab","minecraft:stone_slab","minecraft:warped_slab","minecraft:waxed_cut_copper_slab","minecraft:waxed_exposed_cut_copper_slab","minecraft:waxed_oxidized_cut_copper_slab","minecraft:waxed_weathered_cut_copper_slab","minecraft:weathered_cut_copper_slab"],"minecraft:small_dripleaf_placeable":["minecraft:clay","minecraft:moss_block"],"minecraft:small_flowers":["minecraft:allium","minecraft:azure_bluet","minecraft:blue_orchid","minecraft:cornflower","minecraft:dandelion","minecraft:lily_of_the_valley","minecraft:orange_tulip","minecraft:oxeye_daisy","minecraft:pink_tulip","minecraft:poppy","minecraft:red_tulip","minecraft:white_tulip","minecraft:wither_rose"],"minecraft:snaps_goat_horn":["minecraft:acacia_log","minecraft:birch_log","minecraft:coal_ore","minecraft:copper_ore","minecraft:dark_oak_log","minecraft:emerald_ore","minecraft:iron_ore","minecraft:jungle_log","minecraft:mangrove_log","minecraft:oak_log","minecraft:packed_ice","minecraft:spruce_log","minecraft:stone"],"minecraft:snow":["minecraft:powder_snow","minecraft:snow","minecraft:snow_block"],"minecraft:snow_layer_can_survive_on":["minecraft:honey_block","minecraft:mud","minecraft:soul_sand"],"minecraft:snow_layer_cannot_survive_on":["minecraft:barrier","minecraft:ice","minecraft:packed_ice"],"minecraft:soul_fire_base_blocks":["minecraft:soul_sand","minecraft:soul_soil"],"minecraft:soul_speed_blocks":["minecraft:soul_sand","minecraft:soul_soil"],"minecraft:spruce_logs":["minecraft:spruce_log","minecraft:spruce_wood","minecraft:stripped_spruce_log","minecraft:stripped_spruce_wood"],"minecraft:stairs":["minecraft:acacia_stairs","minecraft:andesite_stairs","minecraft:birch_stairs","minecraft:blackstone_stairs","minecraft:brick_stairs","minecraft:cobbled_deepslate_stairs","minecraft:cobblestone_stairs","minecraft:crimson_stairs","minecraft:cut_copper_stairs","minecraft:dark_oak_stairs","minecraft:dark_prismarine_stairs","minecraft:deepslate_brick_stairs","minecraft:deepslate_tile_stairs","minecraft:diorite_stairs","minecraft:end_stone_brick_stairs","minecraft:exposed_cut_copper_stairs","minecraft:granite_stairs","minecraft:jungle_stairs","minecraft:mangrove_stairs","minecraft:mossy_cobblestone_stairs","minecraft:mossy_stone_brick_stairs","minecraft:mud_brick_stairs","minecraft:nether_brick_stairs","minecraft:oak_stairs","minecraft:oxidized_cut_copper_stairs","minecraft:polished_andesite_stairs","minecraft:polished_blackstone_brick_stairs","minecraft:polished_blackstone_stairs","minecraft:polished_deepslate_stairs","minecraft:polished_diorite_stairs","minecraft:polished_granite_stairs","minecraft:prismarine_brick_stairs","minecraft:prismarine_stairs","minecraft:purpur_stairs","minecraft:quartz_stairs","minecraft:red_nether_brick_stairs","minecraft:red_sandstone_stairs","minecraft:sandstone_stairs","minecraft:smooth_quartz_stairs","minecraft:smooth_red_sandstone_stairs","minecraft:smooth_sandstone_stairs","minecraft:spruce_stairs","minecraft:stone_brick_stairs","minecraft:stone_stairs","minecraft:warped_stairs","minecraft:waxed_cut_copper_stairs","minecraft:waxed_exposed_cut_copper_stairs","minecraft:waxed_oxidized_cut_copper_stairs","minecraft:waxed_weathered_cut_copper_stairs","minecraft:weathered_cut_copper_stairs"],"minecraft:standing_signs":["minecraft:acacia_sign","minecraft:birch_sign","minecraft:crimson_sign","minecraft:dark_oak_sign","minecraft:jungle_sign","minecraft:mangrove_sign","minecraft:oak_sign","minecraft:spruce_sign","minecraft:warped_sign"],"minecraft:stone_bricks":["minecraft:chiseled_stone_bricks","minecraft:cracked_stone_bricks","minecraft:mossy_stone_bricks","minecraft:stone_bricks"],"minecraft:stone_ore_replaceables":["minecraft:andesite","minecraft:diorite","minecraft:granite","minecraft:stone"],"minecraft:stone_pressure_plates":["minecraft:polished_blackstone_pressure_plate","minecraft:stone_pressure_plate"],"minecraft:strider_warm_blocks":["minecraft:lava"],"minecraft:tall_flowers":["minecraft:lilac","minecraft:peony","minecraft:rose_bush","minecraft:sunflower"],"minecraft:terracotta":["minecraft:black_terracotta","minecraft:blue_terracotta","minecraft:brown_terracotta","minecraft:cyan_terracotta","minecraft:gray_terracotta","minecraft:green_terracotta","minecraft:light_blue_terracotta","minecraft:light_gray_terracotta","minecraft:lime_terracotta","minecraft:magenta_terracotta","minecraft:orange_terracotta","minecraft:pink_terracotta","minecraft:purple_terracotta","minecraft:red_terracotta","minecraft:terracotta","minecraft:white_terracotta","minecraft:yellow_terracotta"],"minecraft:trapdoors":["minecraft:acacia_trapdoor","minecraft:birch_trapdoor","minecraft:crimson_trapdoor","minecraft:dark_oak_trapdoor","minecraft:iron_trapdoor","minecraft:jungle_trapdoor","minecraft:mangrove_trapdoor","minecraft:oak_trapdoor","minecraft:spruce_trapdoor","minecraft:warped_trapdoor"],"minecraft:underwater_bonemeals":["minecraft:brain_coral","minecraft:brain_coral_fan","minecraft:brain_coral_wall_fan","minecraft:bubble_coral","minecraft:bubble_coral_fan","minecraft:bubble_coral_wall_fan","minecraft:fire_coral","minecraft:fire_coral_fan","minecraft:fire_coral_wall_fan","minecraft:horn_coral","minecraft:horn_coral_fan","minecraft:horn_coral_wall_fan","minecraft:seagrass","minecraft:tube_coral","minecraft:tube_coral_fan","minecraft:tube_coral_wall_fan"],"minecraft:unstable_bottom_center":["minecraft:acacia_fence_gate","minecraft:birch_fence_gate","minecraft:crimson_fence_gate","minecraft:dark_oak_fence_gate","minecraft:jungle_fence_gate","minecraft:mangrove_fence_gate","minecraft:oak_fence_gate","minecraft:spruce_fence_gate","minecraft:warped_fence_gate"],"minecraft:valid_spawn":["minecraft:grass_block","minecraft:podzol"],"minecraft:wall_corals":["minecraft:brain_coral_wall_fan","minecraft:bubble_coral_wall_fan","minecraft:fire_coral_wall_fan","minecraft:horn_coral_wall_fan","minecraft:tube_coral_wall_fan"],"minecraft:wall_post_override":["minecraft:acacia_pressure_plate","minecraft:acacia_sign","minecraft:acacia_wall_sign","minecraft:birch_pressure_plate","minecraft:birch_sign","minecraft:birch_wall_sign","minecraft:black_banner","minecraft:black_wall_banner","minecraft:blue_banner","minecraft:blue_wall_banner","minecraft:brown_banner","minecraft:brown_wall_banner","minecraft:crimson_pressure_plate","minecraft:crimson_sign","minecraft:crimson_wall_sign","minecraft:cyan_banner","minecraft:cyan_wall_banner","minecraft:dark_oak_pressure_plate","minecraft:dark_oak_sign","minecraft:dark_oak_wall_sign","minecraft:gray_banner","minecraft:gray_wall_banner","minecraft:green_banner","minecraft:green_wall_banner","minecraft:heavy_weighted_pressure_plate","minecraft:jungle_pressure_plate","minecraft:jungle_sign","minecraft:jungle_wall_sign","minecraft:light_blue_banner","minecraft:light_blue_wall_banner","minecraft:light_gray_banner","minecraft:light_gray_wall_banner","minecraft:light_weighted_pressure_plate","minecraft:lime_banner","minecraft:lime_wall_banner","minecraft:magenta_banner","minecraft:magenta_wall_banner","minecraft:mangrove_pressure_plate","minecraft:mangrove_sign","minecraft:mangrove_wall_sign","minecraft:oak_pressure_plate","minecraft:oak_sign","minecraft:oak_wall_sign","minecraft:orange_banner","minecraft:orange_wall_banner","minecraft:pink_banner","minecraft:pink_wall_banner","minecraft:polished_blackstone_pressure_plate","minecraft:purple_banner","minecraft:purple_wall_banner","minecraft:red_banner","minecraft:red_wall_banner","minecraft:redstone_torch","minecraft:soul_torch","minecraft:spruce_pressure_plate","minecraft:spruce_sign","minecraft:spruce_wall_sign","minecraft:stone_pressure_plate","minecraft:torch","minecraft:tripwire","minecraft:warped_pressure_plate","minecraft:warped_sign","minecraft:warped_wall_sign","minecraft:white_banner","minecraft:white_wall_banner","minecraft:yellow_banner","minecraft:yellow_wall_banner"],"minecraft:wall_signs":["minecraft:acacia_wall_sign","minecraft:birch_wall_sign","minecraft:crimson_wall_sign","minecraft:dark_oak_wall_sign","minecraft:jungle_wall_sign","minecraft:mangrove_wall_sign","minecraft:oak_wall_sign","minecraft:spruce_wall_sign","minecraft:warped_wall_sign"],"minecraft:walls":["minecraft:andesite_wall","minecraft:blackstone_wall","minecraft:brick_wall","minecraft:cobbled_deepslate_wall","minecraft:cobblestone_wall","minecraft:deepslate_brick_wall","minecraft:deepslate_tile_wall","minecraft:diorite_wall","minecraft:end_stone_brick_wall","minecraft:granite_wall","minecraft:mossy_cobblestone_wall","minecraft:mossy_stone_brick_wall","minecraft:mud_brick_wall","minecraft:nether_brick_wall","minecraft:polished_blackstone_brick_wall","minecraft:polished_blackstone_wall","minecraft:polished_deepslate_wall","minecraft:prismarine_wall","minecraft:red_nether_brick_wall","minecraft:red_sandstone_wall","minecraft:sandstone_wall","minecraft:stone_brick_wall"],"minecraft:warped_stems":["minecraft:stripped_warped_hyphae","minecraft:stripped_warped_stem","minecraft:warped_hyphae","minecraft:warped_stem"],"minecraft:wart_blocks":["minecraft:nether_wart_block","minecraft:warped_wart_block"],"minecraft:wither_immune":["minecraft:barrier","minecraft:bedrock","minecraft:chain_command_block","minecraft:command_block","minecraft:end_gateway","minecraft:end_portal","minecraft:end_portal_frame","minecraft:jigsaw","minecraft:light","minecraft:moving_piston","minecraft:reinforced_deepslate","minecraft:repeating_command_block","minecraft:structure_block"],"minecraft:wither_summon_base_blocks":["minecraft:soul_sand","minecraft:soul_soil"],"minecraft:wolves_spawnable_on":["minecraft:grass_block","minecraft:snow","minecraft:snow_block"],"minecraft:wooden_buttons":["minecraft:acacia_button","minecraft:birch_button","minecraft:crimson_button","minecraft:dark_oak_button","minecraft:jungle_button","minecraft:mangrove_button","minecraft:oak_button","minecraft:spruce_button","minecraft:warped_button"],"minecraft:wooden_doors":["minecraft:acacia_door","minecraft:birch_door","minecraft:crimson_door","minecraft:dark_oak_door","minecraft:jungle_door","minecraft:mangrove_door","minecraft:oak_door","minecraft:spruce_door","minecraft:warped_door"],"minecraft:wooden_fences":["minecraft:acacia_fence","minecraft:birch_fence","minecraft:crimson_fence","minecraft:dark_oak_fence","minecraft:jungle_fence","minecraft:mangrove_fence","minecraft:oak_fence","minecraft:spruce_fence","minecraft:warped_fence"],"minecraft:wooden_pressure_plates":["minecraft:acacia_pressure_plate","minecraft:birch_pressure_plate","minecraft:crimson_pressure_plate","minecraft:dark_oak_pressure_plate","minecraft:jungle_pressure_plate","minecraft:mangrove_pressure_plate","minecraft:oak_pressure_plate","minecraft:spruce_pressure_plate","minecraft:warped_pressure_plate"],"minecraft:wooden_slabs":["minecraft:acacia_slab","minecraft:birch_slab","minecraft:crimson_slab","minecraft:dark_oak_slab","minecraft:jungle_slab","minecraft:mangrove_slab","minecraft:oak_slab","minecraft:spruce_slab","minecraft:warped_slab"],"minecraft:wooden_stairs":["minecraft:acacia_stairs","minecraft:birch_stairs","minecraft:crimson_stairs","minecraft:dark_oak_stairs","minecraft:jungle_stairs","minecraft:mangrove_stairs","minecraft:oak_stairs","minecraft:spruce_stairs","minecraft:warped_stairs"],"minecraft:wooden_trapdoors":["minecraft:acacia_trapdoor","minecraft:birch_trapdoor","minecraft:crimson_trapdoor","minecraft:dark_oak_trapdoor","minecraft:jungle_trapdoor","minecraft:mangrove_trapdoor","minecraft:oak_trapdoor","minecraft:spruce_trapdoor","minecraft:warped_trapdoor"],"minecraft:wool":["minecraft:black_wool","minecraft:blue_wool","minecraft:brown_wool","minecraft:cyan_wool","minecraft:gray_wool","minecraft:green_wool","minecraft:light_blue_wool","minecraft:light_gray_wool","minecraft:lime_wool","minecraft:magenta_wool","minecraft:orange_wool","minecraft:pink_wool","minecraft:purple_wool","minecraft:red_wool","minecraft:white_wool","minecraft:yellow_wool"],"minecraft:wool_carpets":["minecraft:black_carpet","minecraft:blue_carpet","minecraft:brown_carpet","minecraft:cyan_carpet","minecraft:gray_carpet","minecraft:green_carpet","minecraft:light_blue_carpet","minecraft:light_gray_carpet","minecraft:lime_carpet","minecraft:magenta_carpet","minecraft:orange_carpet","minecraft:pink_carpet","minecraft:purple_carpet","minecraft:red_carpet","minecraft:white_carpet","minecraft:yellow_carpet"]},"entities":["minecraft:allay","minecraft:area_effect_cloud","minecraft:armor_stand","minecraft:arrow","minecraft:axolotl","minecraft:bat","minecraft:bee","minecraft:blaze","minecraft:boat","minecraft:cat","minecraft:cave_spider","minecraft:chest_boat","minecraft:chest_minecart","minecraft:chicken","minecraft:cod","minecraft:command_block_minecart","minecraft:cow","minecraft:creeper","minecraft:dolphin","minecraft:donkey","minecraft:dragon_fireball","minecraft:drowned","minecraft:egg","minecraft:elder_guardian","minecraft:end_crystal","minecraft:ender_dragon","minecraft:ender_pearl","minecraft:enderman","minecraft:endermite","minecraft:evoker","minecraft:evoker_fangs","minecraft:experience_bottle","minecraft:experience_orb","minecraft:eye_of_ender","minecraft:falling_block","minecraft:fireball","minecraft:firework_rocket","minecraft:fishing_bobber","minecraft:fox","minecraft:frog","minecraft:furnace_minecart","minecraft:ghast","minecraft:giant","minecraft:glow_item_frame","minecraft:glow_squid","minecraft:goat","minecraft:guardian","minecraft:hoglin","minecraft:hopper_minecart","minecraft:horse","minecraft:husk","minecraft:illusioner","minecraft:iron_golem","minecraft:item","minecraft:item_frame","minecraft:leash_knot","minecraft:lightning_bolt","minecraft:llama","minecraft:llama_spit","minecraft:magma_cube","minecraft:marker","minecraft:minecart","minecraft:mooshroom","minecraft:mule","minecraft:ocelot","minecraft:painting","minecraft:panda","minecraft:parrot","minecraft:phantom","minecraft:pig","minecraft:piglin","minecraft:piglin_brute","minecraft:pillager","minecraft:player","minecraft:polar_bear","minecraft:potion","minecraft:pufferfish","minecraft:rabbit","minecraft:ravager","minecraft:salmon","minecraft:sheep","minecraft:shulker","minecraft:shulker_bullet","minecraft:silverfish","minecraft:skeleton","minecraft:skeleton_horse","minecraft:slime","minecraft:small_fireball","minecraft:snow_golem","minecraft:snowball","minecraft:spawner_minecart","minecraft:spectral_arrow","minecraft:spider","minecraft:squid","minecraft:stray","minecraft:strider","minecraft:tadpole","minecraft:tnt","minecraft:tnt_minecart","minecraft:trader_llama","minecraft:trident","minecraft:tropical_fish","minecraft:turtle","minecraft:vex","minecraft:villager","minecraft:vindicator","minecraft:wandering_trader","minecraft:warden","minecraft:witch","minecraft:wither","minecraft:wither_skeleton","minecraft:wither_skull","minecraft:wolf","minecraft:zoglin","minecraft:zombie","minecraft:zombie_horse","minecraft:zombie_villager","minecraft:zombified_piglin"],"entitytags":{"minecraft:arrows":["minecraft:arrow","minecraft:spectral_arrow"],"minecraft:axolotl_always_hostiles":["minecraft:drowned","minecraft:elder_guardian","minecraft:guardian"],"minecraft:axolotl_hunt_targets":["minecraft:cod","minecraft:glow_squid","minecraft:pufferfish","minecraft:salmon","minecraft:squid","minecraft:tadpole","minecraft:tropical_fish"],"minecraft:beehive_inhabitors":["minecraft:bee"],"minecraft:freeze_hurts_extra_types":["minecraft:blaze","minecraft:magma_cube","minecraft:strider"],"minecraft:freeze_immune_entity_types":["minecraft:polar_bear","minecraft:snow_golem","minecraft:stray","minecraft:wither"],"minecraft:frog_food":["minecraft:magma_cube","minecraft:slime"],"minecraft:impact_projectiles":["minecraft:arrow","minecraft:dragon_fireball","minecraft:egg","minecraft:fireball","minecraft:small_fireball","minecraft:snowball","minecraft:spectral_arrow","minecraft:trident","minecraft:wither_skull"],"minecraft:powder_snow_walkable_mobs":["minecraft:endermite","minecraft:fox","minecraft:rabbit","minecraft:silverfish"],"minecraft:raiders":["minecraft:evoker","minecraft:illusioner","minecraft:pillager","minecraft:ravager","minecraft:vindicator","minecraft:witch"],"minecraft:skeletons":["minecraft:skeleton","minecraft:stray","minecraft:wither_skeleton"]},"items":["minecraft:acacia_boat","minecraft:acacia_button","minecraft:acacia_chest_boat","minecraft:acacia_door","minecraft:acacia_fence","minecraft:acacia_fence_gate","minecraft:acacia_leaves","minecraft:acacia_log","minecraft:acacia_planks","minecraft:acacia_pressure_plate","minecraft:acacia_sapling","minecraft:acacia_sign","minecraft:acacia_slab","minecraft:acacia_stairs","minecraft:acacia_trapdoor","minecraft:acacia_wood","minecraft:activator_rail","minecraft:air","minecraft:allay_spawn_egg","minecraft:allium","minecraft:amethyst_block","minecraft:amethyst_cluster","minecraft:amethyst_shard","minecraft:ancient_debris","minecraft:andesite","minecraft:andesite_slab","minecraft:andesite_stairs","minecraft:andesite_wall","minecraft:anvil","minecraft:apple","minecraft:armor_stand","minecraft:arrow","minecraft:axolotl_bucket","minecraft:axolotl_spawn_egg","minecraft:azalea","minecraft:azalea_leaves","minecraft:azure_bluet","minecraft:baked_potato","minecraft:bamboo","minecraft:barrel","minecraft:barrier","minecraft:basalt","minecraft:bat_spawn_egg","minecraft:beacon","minecraft:bedrock","minecraft:bee_nest","minecraft:bee_spawn_egg","minecraft:beef","minecraft:beehive","minecraft:beetroot","minecraft:beetroot_seeds","minecraft:beetroot_soup","minecraft:bell","minecraft:big_dripleaf","minecraft:birch_boat","minecraft:birch_button","minecraft:birch_chest_boat","minecraft:birch_door","minecraft:birch_fence","minecraft:birch_fence_gate","minecraft:birch_leaves","minecraft:birch_log","minecraft:birch_planks","minecraft:birch_pressure_plate","minecraft:birch_sapling","minecraft:birch_sign","minecraft:birch_slab","minecraft:birch_stairs","minecraft:birch_trapdoor","minecraft:birch_wood","minecraft:black_banner","minecraft:black_bed","minecraft:black_candle","minecraft:black_carpet","minecraft:black_concrete","minecraft:black_concrete_powder","minecraft:black_dye","minecraft:black_glazed_terracotta","minecraft:black_shulker_box","minecraft:black_stained_glass","minecraft:black_stained_glass_pane","minecraft:black_terracotta","minecraft:black_wool","minecraft:blackstone","minecraft:blackstone_slab","minecraft:blackstone_stairs","minecraft:blackstone_wall","minecraft:blast_furnace","minecraft:blaze_powder","minecraft:blaze_rod","minecraft:blaze_spawn_egg","minecraft:blue_banner","minecraft:blue_bed","minecraft:blue_candle","minecraft:blue_carpet","minecraft:blue_concrete","minecraft:blue_concrete_powder","minecraft:blue_dye","minecraft:blue_glazed_terracotta","minecraft:blue_ice","minecraft:blue_orchid","minecraft:blue_shulker_box","minecraft:blue_stained_glass","minecraft:blue_stained_glass_pane","minecraft:blue_terracotta","minecraft:blue_wool","minecraft:bone","minecraft:bone_block","minecraft:bone_meal","minecraft:book","minecraft:bookshelf","minecraft:bow","minecraft:bowl","minecraft:brain_coral","minecraft:brain_coral_block","minecraft:brain_coral_fan","minecraft:bread","minecraft:brewing_stand","minecraft:brick","minecraft:brick_slab","minecraft:brick_stairs","minecraft:brick_wall","minecraft:bricks","minecraft:brown_banner","minecraft:brown_bed","minecraft:brown_candle","minecraft:brown_carpet","minecraft:brown_concrete","minecraft:brown_concrete_powder","minecraft:brown_dye","minecraft:brown_glazed_terracotta","minecraft:brown_mushroom","minecraft:brown_mushroom_block","minecraft:brown_shulker_box","minecraft:brown_stained_glass","minecraft:brown_stained_glass_pane","minecraft:brown_terracotta","minecraft:brown_wool","minecraft:bubble_coral","minecraft:bubble_coral_block","minecraft:bubble_coral_fan","minecraft:bucket","minecraft:budding_amethyst","minecraft:bundle","minecraft:cactus","minecraft:cake","minecraft:calcite","minecraft:campfire","minecraft:candle","minecraft:carrot","minecraft:carrot_on_a_stick","minecraft:cartography_table","minecraft:carved_pumpkin","minecraft:cat_spawn_egg","minecraft:cauldron","minecraft:cave_spider_spawn_egg","minecraft:chain","minecraft:chain_command_block","minecraft:chainmail_boots","minecraft:chainmail_chestplate","minecraft:chainmail_helmet","minecraft:chainmail_leggings","minecraft:charcoal","minecraft:chest","minecraft:chest_minecart","minecraft:chicken","minecraft:chicken_spawn_egg","minecraft:chipped_anvil","minecraft:chiseled_deepslate","minecraft:chiseled_nether_bricks","minecraft:chiseled_polished_blackstone","minecraft:chiseled_quartz_block","minecraft:chiseled_red_sandstone","minecraft:chiseled_sandstone","minecraft:chiseled_stone_bricks","minecraft:chorus_flower","minecraft:chorus_fruit","minecraft:chorus_plant","minecraft:clay","minecraft:clay_ball","minecraft:clock","minecraft:coal","minecraft:coal_block","minecraft:coal_ore","minecraft:coarse_dirt","minecraft:cobbled_deepslate","minecraft:cobbled_deepslate_slab","minecraft:cobbled_deepslate_stairs","minecraft:cobbled_deepslate_wall","minecraft:cobblestone","minecraft:cobblestone_slab","minecraft:cobblestone_stairs","minecraft:cobblestone_wall","minecraft:cobweb","minecraft:cocoa_beans","minecraft:cod","minecraft:cod_bucket","minecraft:cod_spawn_egg","minecraft:command_block","minecraft:command_block_minecart","minecraft:comparator","minecraft:compass","minecraft:composter","minecraft:conduit","minecraft:cooked_beef","minecraft:cooked_chicken","minecraft:cooked_cod","minecraft:cooked_mutton","minecraft:cooked_porkchop","minecraft:cooked_rabbit","minecraft:cooked_salmon","minecraft:cookie","minecraft:copper_block","minecraft:copper_ingot","minecraft:copper_ore","minecraft:cornflower","minecraft:cow_spawn_egg","minecraft:cracked_deepslate_bricks","minecraft:cracked_deepslate_tiles","minecraft:cracked_nether_bricks","minecraft:cracked_polished_blackstone_bricks","minecraft:cracked_stone_bricks","minecraft:crafting_table","minecraft:creeper_banner_pattern","minecraft:creeper_head","minecraft:creeper_spawn_egg","minecraft:crimson_button","minecraft:crimson_door","minecraft:crimson_fence","minecraft:crimson_fence_gate","minecraft:crimson_fungus","minecraft:crimson_hyphae","minecraft:crimson_nylium","minecraft:crimson_planks","minecraft:crimson_pressure_plate","minecraft:crimson_roots","minecraft:crimson_sign","minecraft:crimson_slab","minecraft:crimson_stairs","minecraft:crimson_stem","minecraft:crimson_trapdoor","minecraft:crossbow","minecraft:crying_obsidian","minecraft:cut_copper","minecraft:cut_copper_slab","minecraft:cut_copper_stairs","minecraft:cut_red_sandstone","minecraft:cut_red_sandstone_slab","minecraft:cut_sandstone","minecraft:cut_sandstone_slab","minecraft:cyan_banner","minecraft:cyan_bed","minecraft:cyan_candle","minecraft:cyan_carpet","minecraft:cyan_concrete","minecraft:cyan_concrete_powder","minecraft:cyan_dye","minecraft:cyan_glazed_terracotta","minecraft:cyan_shulker_box","minecraft:cyan_stained_glass","minecraft:cyan_stained_glass_pane","minecraft:cyan_terracotta","minecraft:cyan_wool","minecraft:damaged_anvil","minecraft:dandelion","minecraft:dark_oak_boat","minecraft:dark_oak_button","minecraft:dark_oak_chest_boat","minecraft:dark_oak_door","minecraft:dark_oak_fence","minecraft:dark_oak_fence_gate","minecraft:dark_oak_leaves","minecraft:dark_oak_log","minecraft:dark_oak_planks","minecraft:dark_oak_pressure_plate","minecraft:dark_oak_sapling","minecraft:dark_oak_sign","minecraft:dark_oak_slab","minecraft:dark_oak_stairs","minecraft:dark_oak_trapdoor","minecraft:dark_oak_wood","minecraft:dark_prismarine","minecraft:dark_prismarine_slab","minecraft:dark_prismarine_stairs","minecraft:daylight_detector","minecraft:dead_brain_coral","minecraft:dead_brain_coral_block","minecraft:dead_brain_coral_fan","minecraft:dead_bubble_coral","minecraft:dead_bubble_coral_block","minecraft:dead_bubble_coral_fan","minecraft:dead_bush","minecraft:dead_fire_coral","minecraft:dead_fire_coral_block","minecraft:dead_fire_coral_fan","minecraft:dead_horn_coral","minecraft:dead_horn_coral_block","minecraft:dead_horn_coral_fan","minecraft:dead_tube_coral","minecraft:dead_tube_coral_block","minecraft:dead_tube_coral_fan","minecraft:debug_stick","minecraft:deepslate","minecraft:deepslate_brick_slab","minecraft:deepslate_brick_stairs","minecraft:deepslate_brick_wall","minecraft:deepslate_bricks","minecraft:deepslate_coal_ore","minecraft:deepslate_copper_ore","minecraft:deepslate_diamond_ore","minecraft:deepslate_emerald_ore","minecraft:deepslate_gold_ore","minecraft:deepslate_iron_ore","minecraft:deepslate_lapis_ore","minecraft:deepslate_redstone_ore","minecraft:deepslate_tile_slab","minecraft:deepslate_tile_stairs","minecraft:deepslate_tile_wall","minecraft:deepslate_tiles","minecraft:detector_rail","minecraft:diamond","minecraft:diamond_axe","minecraft:diamond_block","minecraft:diamond_boots","minecraft:diamond_chestplate","minecraft:diamond_helmet","minecraft:diamond_hoe","minecraft:diamond_horse_armor","minecraft:diamond_leggings","minecraft:diamond_ore","minecraft:diamond_pickaxe","minecraft:diamond_shovel","minecraft:diamond_sword","minecraft:diorite","minecraft:diorite_slab","minecraft:diorite_stairs","minecraft:diorite_wall","minecraft:dirt","minecraft:dirt_path","minecraft:disc_fragment_5","minecraft:dispenser","minecraft:dolphin_spawn_egg","minecraft:donkey_spawn_egg","minecraft:dragon_breath","minecraft:dragon_egg","minecraft:dragon_head","minecraft:dried_kelp","minecraft:dried_kelp_block","minecraft:dripstone_block","minecraft:dropper","minecraft:drowned_spawn_egg","minecraft:echo_shard","minecraft:egg","minecraft:elder_guardian_spawn_egg","minecraft:elytra","minecraft:emerald","minecraft:emerald_block","minecraft:emerald_ore","minecraft:enchanted_book","minecraft:enchanted_golden_apple","minecraft:enchanting_table","minecraft:end_crystal","minecraft:end_portal_frame","minecraft:end_rod","minecraft:end_stone","minecraft:end_stone_brick_slab","minecraft:end_stone_brick_stairs","minecraft:end_stone_brick_wall","minecraft:end_stone_bricks","minecraft:ender_chest","minecraft:ender_eye","minecraft:ender_pearl","minecraft:enderman_spawn_egg","minecraft:endermite_spawn_egg","minecraft:evoker_spawn_egg","minecraft:experience_bottle","minecraft:exposed_copper","minecraft:exposed_cut_copper","minecraft:exposed_cut_copper_slab","minecraft:exposed_cut_copper_stairs","minecraft:farmland","minecraft:feather","minecraft:fermented_spider_eye","minecraft:fern","minecraft:filled_map","minecraft:fire_charge","minecraft:fire_coral","minecraft:fire_coral_block","minecraft:fire_coral_fan","minecraft:firework_rocket","minecraft:firework_star","minecraft:fishing_rod","minecraft:fletching_table","minecraft:flint","minecraft:flint_and_steel","minecraft:flower_banner_pattern","minecraft:flower_pot","minecraft:flowering_azalea","minecraft:flowering_azalea_leaves","minecraft:fox_spawn_egg","minecraft:frog_spawn_egg","minecraft:frogspawn","minecraft:furnace","minecraft:furnace_minecart","minecraft:ghast_spawn_egg","minecraft:ghast_tear","minecraft:gilded_blackstone","minecraft:glass","minecraft:glass_bottle","minecraft:glass_pane","minecraft:glistering_melon_slice","minecraft:globe_banner_pattern","minecraft:glow_berries","minecraft:glow_ink_sac","minecraft:glow_item_frame","minecraft:glow_lichen","minecraft:glow_squid_spawn_egg","minecraft:glowstone","minecraft:glowstone_dust","minecraft:goat_horn","minecraft:goat_spawn_egg","minecraft:gold_block","minecraft:gold_ingot","minecraft:gold_nugget","minecraft:gold_ore","minecraft:golden_apple","minecraft:golden_axe","minecraft:golden_boots","minecraft:golden_carrot","minecraft:golden_chestplate","minecraft:golden_helmet","minecraft:golden_hoe","minecraft:golden_horse_armor","minecraft:golden_leggings","minecraft:golden_pickaxe","minecraft:golden_shovel","minecraft:golden_sword","minecraft:granite","minecraft:granite_slab","minecraft:granite_stairs","minecraft:granite_wall","minecraft:grass","minecraft:grass_block","minecraft:gravel","minecraft:gray_banner","minecraft:gray_bed","minecraft:gray_candle","minecraft:gray_carpet","minecraft:gray_concrete","minecraft:gray_concrete_powder","minecraft:gray_dye","minecraft:gray_glazed_terracotta","minecraft:gray_shulker_box","minecraft:gray_stained_glass","minecraft:gray_stained_glass_pane","minecraft:gray_terracotta","minecraft:gray_wool","minecraft:green_banner","minecraft:green_bed","minecraft:green_candle","minecraft:green_carpet","minecraft:green_concrete","minecraft:green_concrete_powder","minecraft:green_dye","minecraft:green_glazed_terracotta","minecraft:green_shulker_box","minecraft:green_stained_glass","minecraft:green_stained_glass_pane","minecraft:green_terracotta","minecraft:green_wool","minecraft:grindstone","minecraft:guardian_spawn_egg","minecraft:gunpowder","minecraft:hanging_roots","minecraft:hay_block","minecraft:heart_of_the_sea","minecraft:heavy_weighted_pressure_plate","minecraft:hoglin_spawn_egg","minecraft:honey_block","minecraft:honey_bottle","minecraft:honeycomb","minecraft:honeycomb_block","minecraft:hopper","minecraft:hopper_minecart","minecraft:horn_coral","minecraft:horn_coral_block","minecraft:horn_coral_fan","minecraft:horse_spawn_egg","minecraft:husk_spawn_egg","minecraft:ice","minecraft:infested_chiseled_stone_bricks","minecraft:infested_cobblestone","minecraft:infested_cracked_stone_bricks","minecraft:infested_deepslate","minecraft:infested_mossy_stone_bricks","minecraft:infested_stone","minecraft:infested_stone_bricks","minecraft:ink_sac","minecraft:iron_axe","minecraft:iron_bars","minecraft:iron_block","minecraft:iron_boots","minecraft:iron_chestplate","minecraft:iron_door","minecraft:iron_helmet","minecraft:iron_hoe","minecraft:iron_horse_armor","minecraft:iron_ingot","minecraft:iron_leggings","minecraft:iron_nugget","minecraft:iron_ore","minecraft:iron_pickaxe","minecraft:iron_shovel","minecraft:iron_sword","minecraft:iron_trapdoor","minecraft:item_frame","minecraft:jack_o_lantern","minecraft:jigsaw","minecraft:jukebox","minecraft:jungle_boat","minecraft:jungle_button","minecraft:jungle_chest_boat","minecraft:jungle_door","minecraft:jungle_fence","minecraft:jungle_fence_gate","minecraft:jungle_leaves","minecraft:jungle_log","minecraft:jungle_planks","minecraft:jungle_pressure_plate","minecraft:jungle_sapling","minecraft:jungle_sign","minecraft:jungle_slab","minecraft:jungle_stairs","minecraft:jungle_trapdoor","minecraft:jungle_wood","minecraft:kelp","minecraft:knowledge_book","minecraft:ladder","minecraft:lantern","minecraft:lapis_block","minecraft:lapis_lazuli","minecraft:lapis_ore","minecraft:large_amethyst_bud","minecraft:large_fern","minecraft:lava_bucket","minecraft:lead","minecraft:leather","minecraft:leather_boots","minecraft:leather_chestplate","minecraft:leather_helmet","minecraft:leather_horse_armor","minecraft:leather_leggings","minecraft:lectern","minecraft:lever","minecraft:light","minecraft:light_blue_banner","minecraft:light_blue_bed","minecraft:light_blue_candle","minecraft:light_blue_carpet","minecraft:light_blue_concrete","minecraft:light_blue_concrete_powder","minecraft:light_blue_dye","minecraft:light_blue_glazed_terracotta","minecraft:light_blue_shulker_box","minecraft:light_blue_stained_glass","minecraft:light_blue_stained_glass_pane","minecraft:light_blue_terracotta","minecraft:light_blue_wool","minecraft:light_gray_banner","minecraft:light_gray_bed","minecraft:light_gray_candle","minecraft:light_gray_carpet","minecraft:light_gray_concrete","minecraft:light_gray_concrete_powder","minecraft:light_gray_dye","minecraft:light_gray_glazed_terracotta","minecraft:light_gray_shulker_box","minecraft:light_gray_stained_glass","minecraft:light_gray_stained_glass_pane","minecraft:light_gray_terracotta","minecraft:light_gray_wool","minecraft:light_weighted_pressure_plate","minecraft:lightning_rod","minecraft:lilac","minecraft:lily_of_the_valley","minecraft:lily_pad","minecraft:lime_banner","minecraft:lime_bed","minecraft:lime_candle","minecraft:lime_carpet","minecraft:lime_concrete","minecraft:lime_concrete_powder","minecraft:lime_dye","minecraft:lime_glazed_terracotta","minecraft:lime_shulker_box","minecraft:lime_stained_glass","minecraft:lime_stained_glass_pane","minecraft:lime_terracotta","minecraft:lime_wool","minecraft:lingering_potion","minecraft:llama_spawn_egg","minecraft:lodestone","minecraft:loom","minecraft:magenta_banner","minecraft:magenta_bed","minecraft:magenta_candle","minecraft:magenta_carpet","minecraft:magenta_concrete","minecraft:magenta_concrete_powder","minecraft:magenta_dye","minecraft:magenta_glazed_terracotta","minecraft:magenta_shulker_box","minecraft:magenta_stained_glass","minecraft:magenta_stained_glass_pane","minecraft:magenta_terracotta","minecraft:magenta_wool","minecraft:magma_block","minecraft:magma_cream","minecraft:magma_cube_spawn_egg","minecraft:mangrove_boat","minecraft:mangrove_button","minecraft:mangrove_chest_boat","minecraft:mangrove_door","minecraft:mangrove_fence","minecraft:mangrove_fence_gate","minecraft:mangrove_leaves","minecraft:mangrove_log","minecraft:mangrove_planks","minecraft:mangrove_pressure_plate","minecraft:mangrove_propagule","minecraft:mangrove_roots","minecraft:mangrove_sign","minecraft:mangrove_slab","minecraft:mangrove_stairs","minecraft:mangrove_trapdoor","minecraft:mangrove_wood","minecraft:map","minecraft:medium_amethyst_bud","minecraft:melon","minecraft:melon_seeds","minecraft:melon_slice","minecraft:milk_bucket","minecraft:minecart","minecraft:mojang_banner_pattern","minecraft:mooshroom_spawn_egg","minecraft:moss_block","minecraft:moss_carpet","minecraft:mossy_cobblestone","minecraft:mossy_cobblestone_slab","minecraft:mossy_cobblestone_stairs","minecraft:mossy_cobblestone_wall","minecraft:mossy_stone_brick_slab","minecraft:mossy_stone_brick_stairs","minecraft:mossy_stone_brick_wall","minecraft:mossy_stone_bricks","minecraft:mud","minecraft:mud_brick_slab","minecraft:mud_brick_stairs","minecraft:mud_brick_wall","minecraft:mud_bricks","minecraft:muddy_mangrove_roots","minecraft:mule_spawn_egg","minecraft:mushroom_stem","minecraft:mushroom_stew","minecraft:music_disc_11","minecraft:music_disc_13","minecraft:music_disc_5","minecraft:music_disc_blocks","minecraft:music_disc_cat","minecraft:music_disc_chirp","minecraft:music_disc_far","minecraft:music_disc_mall","minecraft:music_disc_mellohi","minecraft:music_disc_otherside","minecraft:music_disc_pigstep","minecraft:music_disc_stal","minecraft:music_disc_strad","minecraft:music_disc_wait","minecraft:music_disc_ward","minecraft:mutton","minecraft:mycelium","minecraft:name_tag","minecraft:nautilus_shell","minecraft:nether_brick","minecraft:nether_brick_fence","minecraft:nether_brick_slab","minecraft:nether_brick_stairs","minecraft:nether_brick_wall","minecraft:nether_bricks","minecraft:nether_gold_ore","minecraft:nether_quartz_ore","minecraft:nether_sprouts","minecraft:nether_star","minecraft:nether_wart","minecraft:nether_wart_block","minecraft:netherite_axe","minecraft:netherite_block","minecraft:netherite_boots","minecraft:netherite_chestplate","minecraft:netherite_helmet","minecraft:netherite_hoe","minecraft:netherite_ingot","minecraft:netherite_leggings","minecraft:netherite_pickaxe","minecraft:netherite_scrap","minecraft:netherite_shovel","minecraft:netherite_sword","minecraft:netherrack","minecraft:note_block","minecraft:oak_boat","minecraft:oak_button","minecraft:oak_chest_boat","minecraft:oak_door","minecraft:oak_fence","minecraft:oak_fence_gate","minecraft:oak_leaves","minecraft:oak_log","minecraft:oak_planks","minecraft:oak_pressure_plate","minecraft:oak_sapling","minecraft:oak_sign","minecraft:oak_slab","minecraft:oak_stairs","minecraft:oak_trapdoor","minecraft:oak_wood","minecraft:observer","minecraft:obsidian","minecraft:ocelot_spawn_egg","minecraft:ochre_froglight","minecraft:orange_banner","minecraft:orange_bed","minecraft:orange_candle","minecraft:orange_carpet","minecraft:orange_concrete","minecraft:orange_concrete_powder","minecraft:orange_dye","minecraft:orange_glazed_terracotta","minecraft:orange_shulker_box","minecraft:orange_stained_glass","minecraft:orange_stained_glass_pane","minecraft:orange_terracotta","minecraft:orange_tulip","minecraft:orange_wool","minecraft:oxeye_daisy","minecraft:oxidized_copper","minecraft:oxidized_cut_copper","minecraft:oxidized_cut_copper_slab","minecraft:oxidized_cut_copper_stairs","minecraft:packed_ice","minecraft:packed_mud","minecraft:painting","minecraft:panda_spawn_egg","minecraft:paper","minecraft:parrot_spawn_egg","minecraft:pearlescent_froglight","minecraft:peony","minecraft:petrified_oak_slab","minecraft:phantom_membrane","minecraft:phantom_spawn_egg","minecraft:pig_spawn_egg","minecraft:piglin_banner_pattern","minecraft:piglin_brute_spawn_egg","minecraft:piglin_spawn_egg","minecraft:pillager_spawn_egg","minecraft:pink_banner","minecraft:pink_bed","minecraft:pink_candle","minecraft:pink_carpet","minecraft:pink_concrete","minecraft:pink_concrete_powder","minecraft:pink_dye","minecraft:pink_glazed_terracotta","minecraft:pink_shulker_box","minecraft:pink_stained_glass","minecraft:pink_stained_glass_pane","minecraft:pink_terracotta","minecraft:pink_tulip","minecraft:pink_wool","minecraft:piston","minecraft:player_head","minecraft:podzol","minecraft:pointed_dripstone","minecraft:poisonous_potato","minecraft:polar_bear_spawn_egg","minecraft:polished_andesite","minecraft:polished_andesite_slab","minecraft:polished_andesite_stairs","minecraft:polished_basalt","minecraft:polished_blackstone","minecraft:polished_blackstone_brick_slab","minecraft:polished_blackstone_brick_stairs","minecraft:polished_blackstone_brick_wall","minecraft:polished_blackstone_bricks","minecraft:polished_blackstone_button","minecraft:polished_blackstone_pressure_plate","minecraft:polished_blackstone_slab","minecraft:polished_blackstone_stairs","minecraft:polished_blackstone_wall","minecraft:polished_deepslate","minecraft:polished_deepslate_slab","minecraft:polished_deepslate_stairs","minecraft:polished_deepslate_wall","minecraft:polished_diorite","minecraft:polished_diorite_slab","minecraft:polished_diorite_stairs","minecraft:polished_granite","minecraft:polished_granite_slab","minecraft:polished_granite_stairs","minecraft:popped_chorus_fruit","minecraft:poppy","minecraft:porkchop","minecraft:potato","minecraft:potion","minecraft:powder_snow_bucket","minecraft:powered_rail","minecraft:prismarine","minecraft:prismarine_brick_slab","minecraft:prismarine_brick_stairs","minecraft:prismarine_bricks","minecraft:prismarine_crystals","minecraft:prismarine_shard","minecraft:prismarine_slab","minecraft:prismarine_stairs","minecraft:prismarine_wall","minecraft:pufferfish","minecraft:pufferfish_bucket","minecraft:pufferfish_spawn_egg","minecraft:pumpkin","minecraft:pumpkin_pie","minecraft:pumpkin_seeds","minecraft:purple_banner","minecraft:purple_bed","minecraft:purple_candle","minecraft:purple_carpet","minecraft:purple_concrete","minecraft:purple_concrete_powder","minecraft:purple_dye","minecraft:purple_glazed_terracotta","minecraft:purple_shulker_box","minecraft:purple_stained_glass","minecraft:purple_stained_glass_pane","minecraft:purple_terracotta","minecraft:purple_wool","minecraft:purpur_block","minecraft:purpur_pillar","minecraft:purpur_slab","minecraft:purpur_stairs","minecraft:quartz","minecraft:quartz_block","minecraft:quartz_bricks","minecraft:quartz_pillar","minecraft:quartz_slab","minecraft:quartz_stairs","minecraft:rabbit","minecraft:rabbit_foot","minecraft:rabbit_hide","minecraft:rabbit_spawn_egg","minecraft:rabbit_stew","minecraft:rail","minecraft:ravager_spawn_egg","minecraft:raw_copper","minecraft:raw_copper_block","minecraft:raw_gold","minecraft:raw_gold_block","minecraft:raw_iron","minecraft:raw_iron_block","minecraft:recovery_compass","minecraft:red_banner","minecraft:red_bed","minecraft:red_candle","minecraft:red_carpet","minecraft:red_concrete","minecraft:red_concrete_powder","minecraft:red_dye","minecraft:red_glazed_terracotta","minecraft:red_mushroom","minecraft:red_mushroom_block","minecraft:red_nether_brick_slab","minecraft:red_nether_brick_stairs","minecraft:red_nether_brick_wall","minecraft:red_nether_bricks","minecraft:red_sand","minecraft:red_sandstone","minecraft:red_sandstone_slab","minecraft:red_sandstone_stairs","minecraft:red_sandstone_wall","minecraft:red_shulker_box","minecraft:red_stained_glass","minecraft:red_stained_glass_pane","minecraft:red_terracotta","minecraft:red_tulip","minecraft:red_wool","minecraft:redstone","minecraft:redstone_block","minecraft:redstone_lamp","minecraft:redstone_ore","minecraft:redstone_torch","minecraft:reinforced_deepslate","minecraft:repeater","minecraft:repeating_command_block","minecraft:respawn_anchor","minecraft:rooted_dirt","minecraft:rose_bush","minecraft:rotten_flesh","minecraft:saddle","minecraft:salmon","minecraft:salmon_bucket","minecraft:salmon_spawn_egg","minecraft:sand","minecraft:sandstone","minecraft:sandstone_slab","minecraft:sandstone_stairs","minecraft:sandstone_wall","minecraft:scaffolding","minecraft:sculk","minecraft:sculk_catalyst","minecraft:sculk_sensor","minecraft:sculk_shrieker","minecraft:sculk_vein","minecraft:scute","minecraft:sea_lantern","minecraft:sea_pickle","minecraft:seagrass","minecraft:shears","minecraft:sheep_spawn_egg","minecraft:shield","minecraft:shroomlight","minecraft:shulker_box","minecraft:shulker_shell","minecraft:shulker_spawn_egg","minecraft:silverfish_spawn_egg","minecraft:skeleton_horse_spawn_egg","minecraft:skeleton_skull","minecraft:skeleton_spawn_egg","minecraft:skull_banner_pattern","minecraft:slime_ball","minecraft:slime_block","minecraft:slime_spawn_egg","minecraft:small_amethyst_bud","minecraft:small_dripleaf","minecraft:smithing_table","minecraft:smoker","minecraft:smooth_basalt","minecraft:smooth_quartz","minecraft:smooth_quartz_slab","minecraft:smooth_quartz_stairs","minecraft:smooth_red_sandstone","minecraft:smooth_red_sandstone_slab","minecraft:smooth_red_sandstone_stairs","minecraft:smooth_sandstone","minecraft:smooth_sandstone_slab","minecraft:smooth_sandstone_stairs","minecraft:smooth_stone","minecraft:smooth_stone_slab","minecraft:snow","minecraft:snow_block","minecraft:snowball","minecraft:soul_campfire","minecraft:soul_lantern","minecraft:soul_sand","minecraft:soul_soil","minecraft:soul_torch","minecraft:spawner","minecraft:spectral_arrow","minecraft:spider_eye","minecraft:spider_spawn_egg","minecraft:splash_potion","minecraft:sponge","minecraft:spore_blossom","minecraft:spruce_boat","minecraft:spruce_button","minecraft:spruce_chest_boat","minecraft:spruce_door","minecraft:spruce_fence","minecraft:spruce_fence_gate","minecraft:spruce_leaves","minecraft:spruce_log","minecraft:spruce_planks","minecraft:spruce_pressure_plate","minecraft:spruce_sapling","minecraft:spruce_sign","minecraft:spruce_slab","minecraft:spruce_stairs","minecraft:spruce_trapdoor","minecraft:spruce_wood","minecraft:spyglass","minecraft:squid_spawn_egg","minecraft:stick","minecraft:sticky_piston","minecraft:stone","minecraft:stone_axe","minecraft:stone_brick_slab","minecraft:stone_brick_stairs","minecraft:stone_brick_wall","minecraft:stone_bricks","minecraft:stone_button","minecraft:stone_hoe","minecraft:stone_pickaxe","minecraft:stone_pressure_plate","minecraft:stone_shovel","minecraft:stone_slab","minecraft:stone_stairs","minecraft:stone_sword","minecraft:stonecutter","minecraft:stray_spawn_egg","minecraft:strider_spawn_egg","minecraft:string","minecraft:stripped_acacia_log","minecraft:stripped_acacia_wood","minecraft:stripped_birch_log","minecraft:stripped_birch_wood","minecraft:stripped_crimson_hyphae","minecraft:stripped_crimson_stem","minecraft:stripped_dark_oak_log","minecraft:stripped_dark_oak_wood","minecraft:stripped_jungle_log","minecraft:stripped_jungle_wood","minecraft:stripped_mangrove_log","minecraft:stripped_mangrove_wood","minecraft:stripped_oak_log","minecraft:stripped_oak_wood","minecraft:stripped_spruce_log","minecraft:stripped_spruce_wood","minecraft:stripped_warped_hyphae","minecraft:stripped_warped_stem","minecraft:structure_block","minecraft:structure_void","minecraft:sugar","minecraft:sugar_cane","minecraft:sunflower","minecraft:suspicious_stew","minecraft:sweet_berries","minecraft:tadpole_bucket","minecraft:tadpole_spawn_egg","minecraft:tall_grass","minecraft:target","minecraft:terracotta","minecraft:tinted_glass","minecraft:tipped_arrow","minecraft:tnt","minecraft:tnt_minecart","minecraft:torch","minecraft:totem_of_undying","minecraft:trader_llama_spawn_egg","minecraft:trapped_chest","minecraft:trident","minecraft:tripwire_hook","minecraft:tropical_fish","minecraft:tropical_fish_bucket","minecraft:tropical_fish_spawn_egg","minecraft:tube_coral","minecraft:tube_coral_block","minecraft:tube_coral_fan","minecraft:tuff","minecraft:turtle_egg","minecraft:turtle_helmet","minecraft:turtle_spawn_egg","minecraft:twisting_vines","minecraft:verdant_froglight","minecraft:vex_spawn_egg","minecraft:villager_spawn_egg","minecraft:vindicator_spawn_egg","minecraft:vine","minecraft:wandering_trader_spawn_egg","minecraft:warden_spawn_egg","minecraft:warped_button","minecraft:warped_door","minecraft:warped_fence","minecraft:warped_fence_gate","minecraft:warped_fungus","minecraft:warped_fungus_on_a_stick","minecraft:warped_hyphae","minecraft:warped_nylium","minecraft:warped_planks","minecraft:warped_pressure_plate","minecraft:warped_roots","minecraft:warped_sign","minecraft:warped_slab","minecraft:warped_stairs","minecraft:warped_stem","minecraft:warped_trapdoor","minecraft:warped_wart_block","minecraft:water_bucket","minecraft:waxed_copper_block","minecraft:waxed_cut_copper","minecraft:waxed_cut_copper_slab","minecraft:waxed_cut_copper_stairs","minecraft:waxed_exposed_copper","minecraft:waxed_exposed_cut_copper","minecraft:waxed_exposed_cut_copper_slab","minecraft:waxed_exposed_cut_copper_stairs","minecraft:waxed_oxidized_copper","minecraft:waxed_oxidized_cut_copper","minecraft:waxed_oxidized_cut_copper_slab","minecraft:waxed_oxidized_cut_copper_stairs","minecraft:waxed_weathered_copper","minecraft:waxed_weathered_cut_copper","minecraft:waxed_weathered_cut_copper_slab","minecraft:waxed_weathered_cut_copper_stairs","minecraft:weathered_copper","minecraft:weathered_cut_copper","minecraft:weathered_cut_copper_slab","minecraft:weathered_cut_copper_stairs","minecraft:weeping_vines","minecraft:wet_sponge","minecraft:wheat","minecraft:wheat_seeds","minecraft:white_banner","minecraft:white_bed","minecraft:white_candle","minecraft:white_carpet","minecraft:white_concrete","minecraft:white_concrete_powder","minecraft:white_dye","minecraft:white_glazed_terracotta","minecraft:white_shulker_box","minecraft:white_stained_glass","minecraft:white_stained_glass_pane","minecraft:white_terracotta","minecraft:white_tulip","minecraft:white_wool","minecraft:witch_spawn_egg","minecraft:wither_rose","minecraft:wither_skeleton_skull","minecraft:wither_skeleton_spawn_egg","minecraft:wolf_spawn_egg","minecraft:wooden_axe","minecraft:wooden_hoe","minecraft:wooden_pickaxe","minecraft:wooden_shovel","minecraft:wooden_sword","minecraft:writable_book","minecraft:written_book","minecraft:yellow_banner","minecraft:yellow_bed","minecraft:yellow_candle","minecraft:yellow_carpet","minecraft:yellow_concrete","minecraft:yellow_concrete_powder","minecraft:yellow_dye","minecraft:yellow_glazed_terracotta","minecraft:yellow_shulker_box","minecraft:yellow_stained_glass","minecraft:yellow_stained_glass_pane","minecraft:yellow_terracotta","minecraft:yellow_wool","minecraft:zoglin_spawn_egg","minecraft:zombie_head","minecraft:zombie_horse_spawn_egg","minecraft:zombie_spawn_egg","minecraft:zombie_villager_spawn_egg","minecraft:zombified_piglin_spawn_egg"],"itemtags":{"minecraft:acacia_logs":["minecraft:acacia_log","minecraft:acacia_wood","minecraft:stripped_acacia_log","minecraft:stripped_acacia_wood"],"minecraft:anvil":["minecraft:anvil","minecraft:chipped_anvil","minecraft:damaged_anvil"],"minecraft:arrows":["minecraft:arrow","minecraft:spectral_arrow","minecraft:tipped_arrow"],"minecraft:axolotl_tempt_items":["minecraft:tropical_fish_bucket"],"minecraft:banners":["minecraft:black_banner","minecraft:blue_banner","minecraft:brown_banner","minecraft:cyan_banner","minecraft:gray_banner","minecraft:green_banner","minecraft:light_blue_banner","minecraft:light_gray_banner","minecraft:lime_banner","minecraft:magenta_banner","minecraft:orange_banner","minecraft:pink_banner","minecraft:purple_banner","minecraft:red_banner","minecraft:white_banner","minecraft:yellow_banner"],"minecraft:beacon_payment_items":["minecraft:diamond","minecraft:emerald","minecraft:gold_ingot","minecraft:iron_ingot","minecraft:netherite_ingot"],"minecraft:beds":["minecraft:black_bed","minecraft:blue_bed","minecraft:brown_bed","minecraft:cyan_bed","minecraft:gray_bed","minecraft:green_bed","minecraft:light_blue_bed","minecraft:light_gray_bed","minecraft:lime_bed","minecraft:magenta_bed","minecraft:orange_bed","minecraft:pink_bed","minecraft:purple_bed","minecraft:red_bed","minecraft:white_bed","minecraft:yellow_bed"],"minecraft:birch_logs":["minecraft:birch_log","minecraft:birch_wood","minecraft:stripped_birch_log","minecraft:stripped_birch_wood"],"minecraft:boats":["minecraft:acacia_boat","minecraft:acacia_chest_boat","minecraft:birch_boat","minecraft:birch_chest_boat","minecraft:dark_oak_boat","minecraft:dark_oak_chest_boat","minecraft:jungle_boat","minecraft:jungle_chest_boat","minecraft:mangrove_boat","minecraft:mangrove_chest_boat","minecraft:oak_boat","minecraft:oak_chest_boat","minecraft:spruce_boat","minecraft:spruce_chest_boat"],"minecraft:buttons":["minecraft:acacia_button","minecraft:birch_button","minecraft:crimson_button","minecraft:dark_oak_button","minecraft:jungle_button","minecraft:mangrove_button","minecraft:oak_button","minecraft:polished_blackstone_button","minecraft:spruce_button","minecraft:stone_button","minecraft:warped_button"],"minecraft:candles":["minecraft:black_candle","minecraft:blue_candle","minecraft:brown_candle","minecraft:candle","minecraft:cyan_candle","minecraft:gray_candle","minecraft:green_candle","minecraft:light_blue_candle","minecraft:light_gray_candle","minecraft:lime_candle","minecraft:magenta_candle","minecraft:orange_candle","minecraft:pink_candle","minecraft:purple_candle","minecraft:red_candle","minecraft:white_candle","minecraft:yellow_candle"],"minecraft:chest_boats":["minecraft:acacia_chest_boat","minecraft:birch_chest_boat","minecraft:dark_oak_chest_boat","minecraft:jungle_chest_boat","minecraft:mangrove_chest_boat","minecraft:oak_chest_boat","minecraft:spruce_chest_boat"],"minecraft:cluster_max_harvestables":["minecraft:diamond_pickaxe","minecraft:golden_pickaxe","minecraft:iron_pickaxe","minecraft:netherite_pickaxe","minecraft:stone_pickaxe","minecraft:wooden_pickaxe"],"minecraft:coal_ores":["minecraft:coal_ore","minecraft:deepslate_coal_ore"],"minecraft:coals":["minecraft:charcoal","minecraft:coal"],"minecraft:compasses":["minecraft:compass","minecraft:recovery_compass"],"minecraft:completes_find_tree_tutorial":["minecraft:acacia_leaves","minecraft:acacia_log","minecraft:acacia_wood","minecraft:azalea_leaves","minecraft:birch_leaves","minecraft:birch_log","minecraft:birch_wood","minecraft:crimson_hyphae","minecraft:crimson_stem","minecraft:dark_oak_leaves","minecraft:dark_oak_log","minecraft:dark_oak_wood","minecraft:flowering_azalea_leaves","minecraft:jungle_leaves","minecraft:jungle_log","minecraft:jungle_wood","minecraft:mangrove_leaves","minecraft:mangrove_log","minecraft:mangrove_wood","minecraft:nether_wart_block","minecraft:oak_leaves","minecraft:oak_log","minecraft:oak_wood","minecraft:spruce_leaves","minecraft:spruce_log","minecraft:spruce_wood","minecraft:stripped_acacia_log","minecraft:stripped_acacia_wood","minecraft:stripped_birch_log","minecraft:stripped_birch_wood","minecraft:stripped_crimson_hyphae","minecraft:stripped_crimson_stem","minecraft:stripped_dark_oak_log","minecraft:stripped_dark_oak_wood","minecraft:stripped_jungle_log","minecraft:stripped_jungle_wood","minecraft:stripped_mangrove_log","minecraft:stripped_mangrove_wood","minecraft:stripped_oak_log","minecraft:stripped_oak_wood","minecraft:stripped_spruce_log","minecraft:stripped_spruce_wood","minecraft:stripped_warped_hyphae","minecraft:stripped_warped_stem","minecraft:warped_hyphae","minecraft:warped_stem","minecraft:warped_wart_block"],"minecraft:copper_ores":["minecraft:copper_ore","minecraft:deepslate_copper_ore"],"minecraft:creeper_drop_music_discs":["minecraft:music_disc_11","minecraft:music_disc_13","minecraft:music_disc_blocks","minecraft:music_disc_cat","minecraft:music_disc_chirp","minecraft:music_disc_far","minecraft:music_disc_mall","minecraft:music_disc_mellohi","minecraft:music_disc_stal","minecraft:music_disc_strad","minecraft:music_disc_wait","minecraft:music_disc_ward"],"minecraft:crimson_stems":["minecraft:crimson_hyphae","minecraft:crimson_stem","minecraft:stripped_crimson_hyphae","minecraft:stripped_crimson_stem"],"minecraft:dampens_vibrations":["minecraft:black_carpet","minecraft:black_wool","minecraft:blue_carpet","minecraft:blue_wool","minecraft:brown_carpet","minecraft:brown_wool","minecraft:cyan_carpet","minecraft:cyan_wool","minecraft:gray_carpet","minecraft:gray_wool","minecraft:green_carpet","minecraft:green_wool","minecraft:light_blue_carpet","minecraft:light_blue_wool","minecraft:light_gray_carpet","minecraft:light_gray_wool","minecraft:lime_carpet","minecraft:lime_wool","minecraft:magenta_carpet","minecraft:magenta_wool","minecraft:orange_carpet","minecraft:orange_wool","minecraft:pink_carpet","minecraft:pink_wool","minecraft:purple_carpet","minecraft:purple_wool","minecraft:red_carpet","minecraft:red_wool","minecraft:white_carpet","minecraft:white_wool","minecraft:yellow_carpet","minecraft:yellow_wool"],"minecraft:dark_oak_logs":["minecraft:dark_oak_log","minecraft:dark_oak_wood","minecraft:stripped_dark_oak_log","minecraft:stripped_dark_oak_wood"],"minecraft:diamond_ores":["minecraft:deepslate_diamond_ore","minecraft:diamond_ore"],"minecraft:dirt":["minecraft:coarse_dirt","minecraft:dirt","minecraft:grass_block","minecraft:moss_block","minecraft:mud","minecraft:muddy_mangrove_roots","minecraft:mycelium","minecraft:podzol","minecraft:rooted_dirt"],"minecraft:doors":["minecraft:acacia_door","minecraft:birch_door","minecraft:crimson_door","minecraft:dark_oak_door","minecraft:iron_door","minecraft:jungle_door","minecraft:mangrove_door","minecraft:oak_door","minecraft:spruce_door","minecraft:warped_door"],"minecraft:emerald_ores":["minecraft:deepslate_emerald_ore","minecraft:emerald_ore"],"minecraft:fences":["minecraft:acacia_fence","minecraft:birch_fence","minecraft:crimson_fence","minecraft:dark_oak_fence","minecraft:jungle_fence","minecraft:mangrove_fence","minecraft:nether_brick_fence","minecraft:oak_fence","minecraft:spruce_fence","minecraft:warped_fence"],"minecraft:fishes":["minecraft:cod","minecraft:cooked_cod","minecraft:cooked_salmon","minecraft:pufferfish","minecraft:salmon","minecraft:tropical_fish"],"minecraft:flowers":["minecraft:allium","minecraft:azure_bluet","minecraft:blue_orchid","minecraft:cornflower","minecraft:dandelion","minecraft:flowering_azalea","minecraft:flowering_azalea_leaves","minecraft:lilac","minecraft:lily_of_the_valley","minecraft:mangrove_propagule","minecraft:orange_tulip","minecraft:oxeye_daisy","minecraft:peony","minecraft:pink_tulip","minecraft:poppy","minecraft:red_tulip","minecraft:rose_bush","minecraft:sunflower","minecraft:white_tulip","minecraft:wither_rose"],"minecraft:fox_food":["minecraft:glow_berries","minecraft:sweet_berries"],"minecraft:freeze_immune_wearables":["minecraft:leather_boots","minecraft:leather_chestplate","minecraft:leather_helmet","minecraft:leather_horse_armor","minecraft:leather_leggings"],"minecraft:gold_ores":["minecraft:deepslate_gold_ore","minecraft:gold_ore","minecraft:nether_gold_ore"],"minecraft:ignored_by_piglin_babies":["minecraft:leather"],"minecraft:iron_ores":["minecraft:deepslate_iron_ore","minecraft:iron_ore"],"minecraft:jungle_logs":["minecraft:jungle_log","minecraft:jungle_wood","minecraft:stripped_jungle_log","minecraft:stripped_jungle_wood"],"minecraft:lapis_ores":["minecraft:deepslate_lapis_ore","minecraft:lapis_ore"],"minecraft:leaves":["minecraft:acacia_leaves","minecraft:azalea_leaves","minecraft:birch_leaves","minecraft:dark_oak_leaves","minecraft:flowering_azalea_leaves","minecraft:jungle_leaves","minecraft:mangrove_leaves","minecraft:oak_leaves","minecraft:spruce_leaves"],"minecraft:lectern_books":["minecraft:writable_book","minecraft:written_book"],"minecraft:logs":["minecraft:acacia_log","minecraft:acacia_wood","minecraft:birch_log","minecraft:birch_wood","minecraft:crimson_hyphae","minecraft:crimson_stem","minecraft:dark_oak_log","minecraft:dark_oak_wood","minecraft:jungle_log","minecraft:jungle_wood","minecraft:mangrove_log","minecraft:mangrove_wood","minecraft:oak_log","minecraft:oak_wood","minecraft:spruce_log","minecraft:spruce_wood","minecraft:stripped_acacia_log","minecraft:stripped_acacia_wood","minecraft:stripped_birch_log","minecraft:stripped_birch_wood","minecraft:stripped_crimson_hyphae","minecraft:stripped_crimson_stem","minecraft:stripped_dark_oak_log","minecraft:stripped_dark_oak_wood","minecraft:stripped_jungle_log","minecraft:stripped_jungle_wood","minecraft:stripped_mangrove_log","minecraft:stripped_mangrove_wood","minecraft:stripped_oak_log","minecraft:stripped_oak_wood","minecraft:stripped_spruce_log","minecraft:stripped_spruce_wood","minecraft:stripped_warped_hyphae","minecraft:stripped_warped_stem","minecraft:warped_hyphae","minecraft:warped_stem"],"minecraft:logs_that_burn":["minecraft:acacia_log","minecraft:acacia_wood","minecraft:birch_log","minecraft:birch_wood","minecraft:dark_oak_log","minecraft:dark_oak_wood","minecraft:jungle_log","minecraft:jungle_wood","minecraft:mangrove_log","minecraft:mangrove_wood","minecraft:oak_log","minecraft:oak_wood","minecraft:spruce_log","minecraft:spruce_wood","minecraft:stripped_acacia_log","minecraft:stripped_acacia_wood","minecraft:stripped_birch_log","minecraft:stripped_birch_wood","minecraft:stripped_dark_oak_log","minecraft:stripped_dark_oak_wood","minecraft:stripped_jungle_log","minecraft:stripped_jungle_wood","minecraft:stripped_mangrove_log","minecraft:stripped_mangrove_wood","minecraft:stripped_oak_log","minecraft:stripped_oak_wood","minecraft:stripped_spruce_log","minecraft:stripped_spruce_wood"],"minecraft:mangrove_logs":["minecraft:mangrove_log","minecraft:mangrove_wood","minecraft:stripped_mangrove_log","minecraft:stripped_mangrove_wood"],"minecraft:music_discs":["minecraft:music_disc_11","minecraft:music_disc_13","minecraft:music_disc_5","minecraft:music_disc_blocks","minecraft:music_disc_cat","minecraft:music_disc_chirp","minecraft:music_disc_far","minecraft:music_disc_mall","minecraft:music_disc_mellohi","minecraft:music_disc_otherside","minecraft:music_disc_pigstep","minecraft:music_disc_stal","minecraft:music_disc_strad","minecraft:music_disc_wait","minecraft:music_disc_ward"],"minecraft:non_flammable_wood":["minecraft:crimson_button","minecraft:crimson_door","minecraft:crimson_fence","minecraft:crimson_fence_gate","minecraft:crimson_hyphae","minecraft:crimson_planks","minecraft:crimson_pressure_plate","minecraft:crimson_sign","minecraft:crimson_slab","minecraft:crimson_stairs","minecraft:crimson_stem","minecraft:crimson_trapdoor","minecraft:stripped_crimson_hyphae","minecraft:stripped_crimson_stem","minecraft:stripped_warped_hyphae","minecraft:stripped_warped_stem","minecraft:warped_button","minecraft:warped_door","minecraft:warped_fence","minecraft:warped_fence_gate","minecraft:warped_hyphae","minecraft:warped_planks","minecraft:warped_pressure_plate","minecraft:warped_sign","minecraft:warped_slab","minecraft:warped_stairs","minecraft:warped_stem","minecraft:warped_trapdoor"],"minecraft:oak_logs":["minecraft:oak_log","minecraft:oak_wood","minecraft:stripped_oak_log","minecraft:stripped_oak_wood"],"minecraft:overworld_natural_logs":["minecraft:acacia_log","minecraft:birch_log","minecraft:dark_oak_log","minecraft:jungle_log","minecraft:mangrove_log","minecraft:oak_log","minecraft:spruce_log"],"minecraft:piglin_food":["minecraft:cooked_porkchop","minecraft:porkchop"],"minecraft:piglin_loved":["minecraft:bell","minecraft:clock","minecraft:deepslate_gold_ore","minecraft:enchanted_golden_apple","minecraft:gilded_blackstone","minecraft:glistering_melon_slice","minecraft:gold_block","minecraft:gold_ingot","minecraft:gold_ore","minecraft:golden_apple","minecraft:golden_axe","minecraft:golden_boots","minecraft:golden_carrot","minecraft:golden_chestplate","minecraft:golden_helmet","minecraft:golden_hoe","minecraft:golden_horse_armor","minecraft:golden_leggings","minecraft:golden_pickaxe","minecraft:golden_shovel","minecraft:golden_sword","minecraft:light_weighted_pressure_plate","minecraft:nether_gold_ore","minecraft:raw_gold","minecraft:raw_gold_block"],"minecraft:piglin_repellents":["minecraft:soul_campfire","minecraft:soul_lantern","minecraft:soul_torch"],"minecraft:planks":["minecraft:acacia_planks","minecraft:birch_planks","minecraft:crimson_planks","minecraft:dark_oak_planks","minecraft:jungle_planks","minecraft:mangrove_planks","minecraft:oak_planks","minecraft:spruce_planks","minecraft:warped_planks"],"minecraft:rails":["minecraft:activator_rail","minecraft:detector_rail","minecraft:powered_rail","minecraft:rail"],"minecraft:redstone_ores":["minecraft:deepslate_redstone_ore","minecraft:redstone_ore"],"minecraft:sand":["minecraft:red_sand","minecraft:sand"],"minecraft:saplings":["minecraft:acacia_sapling","minecraft:azalea","minecraft:birch_sapling","minecraft:dark_oak_sapling","minecraft:flowering_azalea","minecraft:jungle_sapling","minecraft:mangrove_propagule","minecraft:oak_sapling","minecraft:spruce_sapling"],"minecraft:signs":["minecraft:acacia_sign","minecraft:birch_sign","minecraft:crimson_sign","minecraft:dark_oak_sign","minecraft:jungle_sign","minecraft:mangrove_sign","minecraft:oak_sign","minecraft:spruce_sign","minecraft:warped_sign"],"minecraft:slabs":["minecraft:acacia_slab","minecraft:andesite_slab","minecraft:birch_slab","minecraft:blackstone_slab","minecraft:brick_slab","minecraft:cobbled_deepslate_slab","minecraft:cobblestone_slab","minecraft:crimson_slab","minecraft:cut_copper_slab","minecraft:cut_red_sandstone_slab","minecraft:cut_sandstone_slab","minecraft:dark_oak_slab","minecraft:dark_prismarine_slab","minecraft:deepslate_brick_slab","minecraft:deepslate_tile_slab","minecraft:diorite_slab","minecraft:end_stone_brick_slab","minecraft:exposed_cut_copper_slab","minecraft:granite_slab","minecraft:jungle_slab","minecraft:mangrove_slab","minecraft:mossy_cobblestone_slab","minecraft:mossy_stone_brick_slab","minecraft:mud_brick_slab","minecraft:nether_brick_slab","minecraft:oak_slab","minecraft:oxidized_cut_copper_slab","minecraft:petrified_oak_slab","minecraft:polished_andesite_slab","minecraft:polished_blackstone_brick_slab","minecraft:polished_blackstone_slab","minecraft:polished_deepslate_slab","minecraft:polished_diorite_slab","minecraft:polished_granite_slab","minecraft:prismarine_brick_slab","minecraft:prismarine_slab","minecraft:purpur_slab","minecraft:quartz_slab","minecraft:red_nether_brick_slab","minecraft:red_sandstone_slab","minecraft:sandstone_slab","minecraft:smooth_quartz_slab","minecraft:smooth_red_sandstone_slab","minecraft:smooth_sandstone_slab","minecraft:smooth_stone_slab","minecraft:spruce_slab","minecraft:stone_brick_slab","minecraft:stone_slab","minecraft:warped_slab","minecraft:waxed_cut_copper_slab","minecraft:waxed_exposed_cut_copper_slab","minecraft:waxed_oxidized_cut_copper_slab","minecraft:waxed_weathered_cut_copper_slab","minecraft:weathered_cut_copper_slab"],"minecraft:small_flowers":["minecraft:allium","minecraft:azure_bluet","minecraft:blue_orchid","minecraft:cornflower","minecraft:dandelion","minecraft:lily_of_the_valley","minecraft:orange_tulip","minecraft:oxeye_daisy","minecraft:pink_tulip","minecraft:poppy","minecraft:red_tulip","minecraft:white_tulip","minecraft:wither_rose"],"minecraft:soul_fire_base_blocks":["minecraft:soul_sand","minecraft:soul_soil"],"minecraft:spruce_logs":["minecraft:spruce_log","minecraft:spruce_wood","minecraft:stripped_spruce_log","minecraft:stripped_spruce_wood"],"minecraft:stairs":["minecraft:acacia_stairs","minecraft:andesite_stairs","minecraft:birch_stairs","minecraft:blackstone_stairs","minecraft:brick_stairs","minecraft:cobbled_deepslate_stairs","minecraft:cobblestone_stairs","minecraft:crimson_stairs","minecraft:cut_copper_stairs","minecraft:dark_oak_stairs","minecraft:dark_prismarine_stairs","minecraft:deepslate_brick_stairs","minecraft:deepslate_tile_stairs","minecraft:diorite_stairs","minecraft:end_stone_brick_stairs","minecraft:exposed_cut_copper_stairs","minecraft:granite_stairs","minecraft:jungle_stairs","minecraft:mangrove_stairs","minecraft:mossy_cobblestone_stairs","minecraft:mossy_stone_brick_stairs","minecraft:mud_brick_stairs","minecraft:nether_brick_stairs","minecraft:oak_stairs","minecraft:oxidized_cut_copper_stairs","minecraft:polished_andesite_stairs","minecraft:polished_blackstone_brick_stairs","minecraft:polished_blackstone_stairs","minecraft:polished_deepslate_stairs","minecraft:polished_diorite_stairs","minecraft:polished_granite_stairs","minecraft:prismarine_brick_stairs","minecraft:prismarine_stairs","minecraft:purpur_stairs","minecraft:quartz_stairs","minecraft:red_nether_brick_stairs","minecraft:red_sandstone_stairs","minecraft:sandstone_stairs","minecraft:smooth_quartz_stairs","minecraft:smooth_red_sandstone_stairs","minecraft:smooth_sandstone_stairs","minecraft:spruce_stairs","minecraft:stone_brick_stairs","minecraft:stone_stairs","minecraft:warped_stairs","minecraft:waxed_cut_copper_stairs","minecraft:waxed_exposed_cut_copper_stairs","minecraft:waxed_oxidized_cut_copper_stairs","minecraft:waxed_weathered_cut_copper_stairs","minecraft:weathered_cut_copper_stairs"],"minecraft:stone_bricks":["minecraft:chiseled_stone_bricks","minecraft:cracked_stone_bricks","minecraft:mossy_stone_bricks","minecraft:stone_bricks"],"minecraft:stone_crafting_materials":["minecraft:blackstone","minecraft:cobbled_deepslate","minecraft:cobblestone"],"minecraft:stone_tool_materials":["minecraft:blackstone","minecraft:cobbled_deepslate","minecraft:cobblestone"],"minecraft:tall_flowers":["minecraft:lilac","minecraft:peony","minecraft:rose_bush","minecraft:sunflower"],"minecraft:terracotta":["minecraft:black_terracotta","minecraft:blue_terracotta","minecraft:brown_terracotta","minecraft:cyan_terracotta","minecraft:gray_terracotta","minecraft:green_terracotta","minecraft:light_blue_terracotta","minecraft:light_gray_terracotta","minecraft:lime_terracotta","minecraft:magenta_terracotta","minecraft:orange_terracotta","minecraft:pink_terracotta","minecraft:purple_terracotta","minecraft:red_terracotta","minecraft:terracotta","minecraft:white_terracotta","minecraft:yellow_terracotta"],"minecraft:trapdoors":["minecraft:acacia_trapdoor","minecraft:birch_trapdoor","minecraft:crimson_trapdoor","minecraft:dark_oak_trapdoor","minecraft:iron_trapdoor","minecraft:jungle_trapdoor","minecraft:mangrove_trapdoor","minecraft:oak_trapdoor","minecraft:spruce_trapdoor","minecraft:warped_trapdoor"],"minecraft:walls":["minecraft:andesite_wall","minecraft:blackstone_wall","minecraft:brick_wall","minecraft:cobbled_deepslate_wall","minecraft:cobblestone_wall","minecraft:deepslate_brick_wall","minecraft:deepslate_tile_wall","minecraft:diorite_wall","minecraft:end_stone_brick_wall","minecraft:granite_wall","minecraft:mossy_cobblestone_wall","minecraft:mossy_stone_brick_wall","minecraft:mud_brick_wall","minecraft:nether_brick_wall","minecraft:polished_blackstone_brick_wall","minecraft:polished_blackstone_wall","minecraft:polished_deepslate_wall","minecraft:prismarine_wall","minecraft:red_nether_brick_wall","minecraft:red_sandstone_wall","minecraft:sandstone_wall","minecraft:stone_brick_wall"],"minecraft:warped_stems":["minecraft:stripped_warped_hyphae","minecraft:stripped_warped_stem","minecraft:warped_hyphae","minecraft:warped_stem"],"minecraft:wart_blocks":["minecraft:nether_wart_block","minecraft:warped_wart_block"],"minecraft:wooden_buttons":["minecraft:acacia_button","minecraft:birch_button","minecraft:crimson_button","minecraft:dark_oak_button","minecraft:jungle_button","minecraft:mangrove_button","minecraft:oak_button","minecraft:spruce_button","minecraft:warped_button"],"minecraft:wooden_doors":["minecraft:acacia_door","minecraft:birch_door","minecraft:crimson_door","minecraft:dark_oak_door","minecraft:jungle_door","minecraft:mangrove_door","minecraft:oak_door","minecraft:spruce_door","minecraft:warped_door"],"minecraft:wooden_fences":["minecraft:acacia_fence","minecraft:birch_fence","minecraft:crimson_fence","minecraft:dark_oak_fence","minecraft:jungle_fence","minecraft:mangrove_fence","minecraft:oak_fence","minecraft:spruce_fence","minecraft:warped_fence"],"minecraft:wooden_pressure_plates":["minecraft:acacia_pressure_plate","minecraft:birch_pressure_plate","minecraft:crimson_pressure_plate","minecraft:dark_oak_pressure_plate","minecraft:jungle_pressure_plate","minecraft:mangrove_pressure_plate","minecraft:oak_pressure_plate","minecraft:spruce_pressure_plate","minecraft:warped_pressure_plate"],"minecraft:wooden_slabs":["minecraft:acacia_slab","minecraft:birch_slab","minecraft:crimson_slab","minecraft:dark_oak_slab","minecraft:jungle_slab","minecraft:mangrove_slab","minecraft:oak_slab","minecraft:spruce_slab","minecraft:warped_slab"],"minecraft:wooden_stairs":["minecraft:acacia_stairs","minecraft:birch_stairs","minecraft:crimson_stairs","minecraft:dark_oak_stairs","minecraft:jungle_stairs","minecraft:mangrove_stairs","minecraft:oak_stairs","minecraft:spruce_stairs","minecraft:warped_stairs"],"minecraft:wooden_trapdoors":["minecraft:acacia_trapdoor","minecraft:birch_trapdoor","minecraft:crimson_trapdoor","minecraft:dark_oak_trapdoor","minecraft:jungle_trapdoor","minecraft:mangrove_trapdoor","minecraft:oak_trapdoor","minecraft:spruce_trapdoor","minecraft:warped_trapdoor"],"minecraft:wool":["minecraft:black_wool","minecraft:blue_wool","minecraft:brown_wool","minecraft:cyan_wool","minecraft:gray_wool","minecraft:green_wool","minecraft:light_blue_wool","minecraft:light_gray_wool","minecraft:lime_wool","minecraft:magenta_wool","minecraft:orange_wool","minecraft:pink_wool","minecraft:purple_wool","minecraft:red_wool","minecraft:white_wool","minecraft:yellow_wool"],"minecraft:wool_carpets":["minecraft:black_carpet","minecraft:blue_carpet","minecraft:brown_carpet","minecraft:cyan_carpet","minecraft:gray_carpet","minecraft:green_carpet","minecraft:light_blue_carpet","minecraft:light_gray_carpet","minecraft:lime_carpet","minecraft:magenta_carpet","minecraft:orange_carpet","minecraft:pink_carpet","minecraft:purple_carpet","minecraft:red_carpet","minecraft:white_carpet","minecraft:yellow_carpet"]}} \ No newline at end of file diff --git a/worldedit-core/src/main/java/com/sk89q/worldedit/extent/reorder/MultiStageReorder.java b/worldedit-core/src/main/java/com/sk89q/worldedit/extent/reorder/MultiStageReorder.java index 17c1b8dc60..9090b1c572 100644 --- a/worldedit-core/src/main/java/com/sk89q/worldedit/extent/reorder/MultiStageReorder.java +++ b/worldedit-core/src/main/java/com/sk89q/worldedit/extent/reorder/MultiStageReorder.java @@ -30,6 +30,7 @@ import com.sk89q.worldedit.util.collection.BlockMap; import com.sk89q.worldedit.world.block.BaseBlock; import com.sk89q.worldedit.world.block.BlockCategories; +import com.sk89q.worldedit.world.block.BlockCategory; import com.sk89q.worldedit.world.block.BlockState; import com.sk89q.worldedit.world.block.BlockStateHolder; import com.sk89q.worldedit.world.block.BlockType; @@ -60,7 +61,11 @@ public class MultiStageReorder extends AbstractBufferingExtent implements Reorde BlockCategories.BUTTONS.getAll().forEach(type -> priorityMap.put(type, PlacementPriority.LAST)); BlockCategories.ANVIL.getAll().forEach(type -> priorityMap.put(type, PlacementPriority.LAST)); BlockCategories.WOODEN_PRESSURE_PLATES.getAll().forEach(type -> priorityMap.put(type, PlacementPriority.LAST)); - BlockCategories.CARPETS.getAll().forEach(type -> priorityMap.put(type, PlacementPriority.LAST)); + // Keeping CARPETS for pre-1.19 compatibility + @SuppressWarnings("deprecation") + BlockCategory carpets = BlockCategories.CARPETS; + carpets.getAll().forEach(type -> priorityMap.put(type, PlacementPriority.LAST)); + BlockCategories.WOOL_CARPETS.getAll().forEach(type -> priorityMap.put(type, PlacementPriority.LAST)); BlockCategories.RAILS.getAll().forEach(type -> priorityMap.put(type, PlacementPriority.LAST)); BlockCategories.BEDS.getAll().forEach(type -> priorityMap.put(type, PlacementPriority.LAST)); BlockCategories.SMALL_FLOWERS.getAll().forEach(type -> priorityMap.put(type, PlacementPriority.LAST)); @@ -132,6 +137,7 @@ public class MultiStageReorder extends AbstractBufferingExtent implements Reorde BlockCategories.DOORS.getAll().forEach(type -> priorityMap.put(type, PlacementPriority.FINAL)); BlockCategories.BANNERS.getAll().forEach(type -> priorityMap.put(type, PlacementPriority.FINAL)); BlockCategories.SIGNS.getAll().forEach(type -> priorityMap.put(type, PlacementPriority.FINAL)); + // Keeping sign and wall_sign for 1.13 compatibility @SuppressWarnings("deprecation") BlockType sign = BlockTypes.SIGN; priorityMap.put(sign, PlacementPriority.FINAL); diff --git a/worldedit-core/src/main/java/com/sk89q/worldedit/internal/Constants.java b/worldedit-core/src/main/java/com/sk89q/worldedit/internal/Constants.java index 842e5b1bdc..c2492ff089 100644 --- a/worldedit-core/src/main/java/com/sk89q/worldedit/internal/Constants.java +++ b/worldedit-core/src/main/java/com/sk89q/worldedit/internal/Constants.java @@ -76,4 +76,9 @@ private Constants() { * The DataVersion for Minecraft 1.18 */ public static final int DATA_VERSION_MC_1_18 = 2860; + + /** + * The DataVersion for Minecraft 1.19 + */ + public static final int DATA_VERSION_MC_1_19 = 3105; } diff --git a/worldedit-core/src/main/java/com/sk89q/worldedit/world/biome/BiomeTypes.java b/worldedit-core/src/main/java/com/sk89q/worldedit/world/biome/BiomeTypes.java index fea11ab7d6..e1a0deee7f 100644 --- a/worldedit-core/src/main/java/com/sk89q/worldedit/world/biome/BiomeTypes.java +++ b/worldedit-core/src/main/java/com/sk89q/worldedit/world/biome/BiomeTypes.java @@ -29,25 +29,26 @@ @SuppressWarnings("unused") public final class BiomeTypes { @Nullable public static final BiomeType BADLANDS = get("minecraft:badlands"); - @Nullable public static final BiomeType BADLANDS_PLATEAU = get("minecraft:badlands_plateau"); + @Deprecated @Nullable public static final BiomeType BADLANDS_PLATEAU = get("minecraft:badlands_plateau"); @Nullable public static final BiomeType BAMBOO_JUNGLE = get("minecraft:bamboo_jungle"); - @Nullable public static final BiomeType BAMBOO_JUNGLE_HILLS = get("minecraft:bamboo_jungle_hills"); + @Deprecated @Nullable public static final BiomeType BAMBOO_JUNGLE_HILLS = get("minecraft:bamboo_jungle_hills"); @Nullable public static final BiomeType BASALT_DELTAS = get("minecraft:basalt_deltas"); @Nullable public static final BiomeType BEACH = get("minecraft:beach"); @Nullable public static final BiomeType BIRCH_FOREST = get("minecraft:birch_forest"); - @Nullable public static final BiomeType BIRCH_FOREST_HILLS = get("minecraft:birch_forest_hills"); + @Deprecated @Nullable public static final BiomeType BIRCH_FOREST_HILLS = get("minecraft:birch_forest_hills"); @Nullable public static final BiomeType COLD_OCEAN = get("minecraft:cold_ocean"); @Nullable public static final BiomeType CRIMSON_FOREST = get("minecraft:crimson_forest"); @Nullable public static final BiomeType DARK_FOREST = get("minecraft:dark_forest"); - @Nullable public static final BiomeType DARK_FOREST_HILLS = get("minecraft:dark_forest_hills"); + @Deprecated @Nullable public static final BiomeType DARK_FOREST_HILLS = get("minecraft:dark_forest_hills"); @Nullable public static final BiomeType DEEP_COLD_OCEAN = get("minecraft:deep_cold_ocean"); + @Nullable public static final BiomeType DEEP_DARK = get("minecraft:deep_dark"); @Nullable public static final BiomeType DEEP_FROZEN_OCEAN = get("minecraft:deep_frozen_ocean"); @Nullable public static final BiomeType DEEP_LUKEWARM_OCEAN = get("minecraft:deep_lukewarm_ocean"); @Nullable public static final BiomeType DEEP_OCEAN = get("minecraft:deep_ocean"); - @Nullable public static final BiomeType DEEP_WARM_OCEAN = get("minecraft:deep_warm_ocean"); + @Deprecated @Nullable public static final BiomeType DEEP_WARM_OCEAN = get("minecraft:deep_warm_ocean"); @Nullable public static final BiomeType DESERT = get("minecraft:desert"); - @Nullable public static final BiomeType DESERT_HILLS = get("minecraft:desert_hills"); - @Nullable public static final BiomeType DESERT_LAKES = get("minecraft:desert_lakes"); + @Deprecated @Nullable public static final BiomeType DESERT_HILLS = get("minecraft:desert_hills"); + @Deprecated @Nullable public static final BiomeType DESERT_LAKES = get("minecraft:desert_lakes"); @Nullable public static final BiomeType DRIPSTONE_CAVES = get("minecraft:dripstone_caves"); @Nullable public static final BiomeType END_BARRENS = get("minecraft:end_barrens"); @Nullable public static final BiomeType END_HIGHLANDS = get("minecraft:end_highlands"); @@ -56,60 +57,78 @@ public final class BiomeTypes { @Nullable public static final BiomeType FLOWER_FOREST = get("minecraft:flower_forest"); @Nullable public static final BiomeType FOREST = get("minecraft:forest"); @Nullable public static final BiomeType FROZEN_OCEAN = get("minecraft:frozen_ocean"); + @Nullable public static final BiomeType FROZEN_PEAKS = get("minecraft:frozen_peaks"); @Nullable public static final BiomeType FROZEN_RIVER = get("minecraft:frozen_river"); - @Nullable public static final BiomeType GIANT_SPRUCE_TAIGA = get("minecraft:giant_spruce_taiga"); - @Nullable public static final BiomeType GIANT_SPRUCE_TAIGA_HILLS = get("minecraft:giant_spruce_taiga_hills"); - @Nullable public static final BiomeType GIANT_TREE_TAIGA = get("minecraft:giant_tree_taiga"); - @Nullable public static final BiomeType GIANT_TREE_TAIGA_HILLS = get("minecraft:giant_tree_taiga_hills"); - @Nullable public static final BiomeType GRAVELLY_MOUNTAINS = get("minecraft:gravelly_mountains"); + @Deprecated @Nullable public static final BiomeType GIANT_SPRUCE_TAIGA = get("minecraft:giant_spruce_taiga"); + @Deprecated @Nullable public static final BiomeType GIANT_SPRUCE_TAIGA_HILLS = get("minecraft:giant_spruce_taiga_hills"); + @Deprecated @Nullable public static final BiomeType GIANT_TREE_TAIGA = get("minecraft:giant_tree_taiga"); + @Deprecated @Nullable public static final BiomeType GIANT_TREE_TAIGA_HILLS = get("minecraft:giant_tree_taiga_hills"); + @Deprecated @Nullable public static final BiomeType GRAVELLY_MOUNTAINS = get("minecraft:gravelly_mountains"); + @Nullable public static final BiomeType GROVE = get("minecraft:grove"); @Nullable public static final BiomeType ICE_SPIKES = get("minecraft:ice_spikes"); + @Nullable public static final BiomeType JAGGED_PEAKS = get("minecraft:jagged_peaks"); @Nullable public static final BiomeType JUNGLE = get("minecraft:jungle"); - @Nullable public static final BiomeType JUNGLE_EDGE = get("minecraft:jungle_edge"); - @Nullable public static final BiomeType JUNGLE_HILLS = get("minecraft:jungle_hills"); + @Deprecated @Nullable public static final BiomeType JUNGLE_EDGE = get("minecraft:jungle_edge"); + @Deprecated @Nullable public static final BiomeType JUNGLE_HILLS = get("minecraft:jungle_hills"); @Nullable public static final BiomeType LUKEWARM_OCEAN = get("minecraft:lukewarm_ocean"); @Nullable public static final BiomeType LUSH_CAVES = get("minecraft:lush_caves"); - @Nullable public static final BiomeType MODIFIED_BADLANDS_PLATEAU = get("minecraft:modified_badlands_plateau"); - @Nullable public static final BiomeType MODIFIED_GRAVELLY_MOUNTAINS = get("minecraft:modified_gravelly_mountains"); - @Nullable public static final BiomeType MODIFIED_JUNGLE = get("minecraft:modified_jungle"); - @Nullable public static final BiomeType MODIFIED_JUNGLE_EDGE = get("minecraft:modified_jungle_edge"); - @Nullable public static final BiomeType MODIFIED_WOODED_BADLANDS_PLATEAU = get("minecraft:modified_wooded_badlands_plateau"); - @Nullable public static final BiomeType MOUNTAIN_EDGE = get("minecraft:mountain_edge"); - @Nullable public static final BiomeType MOUNTAINS = get("minecraft:mountains"); - @Nullable public static final BiomeType MUSHROOM_FIELD_SHORE = get("minecraft:mushroom_field_shore"); + @Nullable public static final BiomeType MANGROVE_SWAMP = get("minecraft:mangrove_swamp"); + @Nullable public static final BiomeType MEADOW = get("minecraft:meadow"); + @Deprecated @Nullable public static final BiomeType MODIFIED_BADLANDS_PLATEAU = get("minecraft:modified_badlands_plateau"); + @Deprecated @Nullable public static final BiomeType MODIFIED_GRAVELLY_HILLS = get("minecraft:modified_gravelly_hills"); + @Deprecated @Nullable public static final BiomeType MODIFIED_JUNGLE = get("minecraft:modified_jungle"); + @Deprecated @Nullable public static final BiomeType MODIFIED_JUNGLE_EDGE = get("minecraft:modified_jungle_edge"); + @Deprecated @Nullable public static final BiomeType MODIFIED_WOODED_BADLANDS_PLATEAU = get("minecraft:modified_wooded_badlands_plateau"); + @Deprecated @Nullable public static final BiomeType MOUNTAIN_EDGE = get("minecraft:mountain_edge"); + @Deprecated @Nullable public static final BiomeType MOUNTAINS = get("minecraft:mountains"); + @Deprecated @Nullable public static final BiomeType MUSHROOM_FIELD_SHORE = get("minecraft:mushroom_field_shore"); @Nullable public static final BiomeType MUSHROOM_FIELDS = get("minecraft:mushroom_fields"); @Deprecated @Nullable public static final BiomeType NETHER = get("minecraft:nether"); @Nullable public static final BiomeType NETHER_WASTES = get("minecraft:nether_wastes"); @Nullable public static final BiomeType OCEAN = get("minecraft:ocean"); + @Nullable public static final BiomeType OLD_GROWTH_BIRCH_FOREST = get("minecraft:old_growth_birch_forest"); + @Nullable public static final BiomeType OLD_GROWTH_PINE_TAIGA = get("minecraft:old_growth_pine_taiga"); + @Nullable public static final BiomeType OLD_GROWTH_SPRUCE_TAIGA = get("minecraft:old_growth_spruce_taiga"); @Nullable public static final BiomeType PLAINS = get("minecraft:plains"); @Nullable public static final BiomeType RIVER = get("minecraft:river"); @Nullable public static final BiomeType SAVANNA = get("minecraft:savanna"); @Nullable public static final BiomeType SAVANNA_PLATEAU = get("minecraft:savanna_plateau"); - @Nullable public static final BiomeType SHATTERED_SAVANNA = get("minecraft:shattered_savanna"); - @Nullable public static final BiomeType SHATTERED_SAVANNA_PLATEAU = get("minecraft:shattered_savanna_plateau"); + @Deprecated @Nullable public static final BiomeType SHATTERED_SAVANNA = get("minecraft:shattered_savanna"); + @Deprecated @Nullable public static final BiomeType SHATTERED_SAVANNA_PLATEAU = get("minecraft:shattered_savanna_plateau"); @Nullable public static final BiomeType SMALL_END_ISLANDS = get("minecraft:small_end_islands"); @Nullable public static final BiomeType SNOWY_BEACH = get("minecraft:snowy_beach"); - @Nullable public static final BiomeType SNOWY_MOUNTAINS = get("minecraft:snowy_mountains"); + @Deprecated @Nullable public static final BiomeType SNOWY_MOUNTAINS = get("minecraft:snowy_mountains"); + @Nullable public static final BiomeType SNOWY_PLAINS = get("minecraft:snowy_plains"); + @Nullable public static final BiomeType SNOWY_SLOPES = get("minecraft:snowy_slopes"); @Nullable public static final BiomeType SNOWY_TAIGA = get("minecraft:snowy_taiga"); - @Nullable public static final BiomeType SNOWY_TAIGA_HILLS = get("minecraft:snowy_taiga_hills"); - @Nullable public static final BiomeType SNOWY_TAIGA_MOUNTAINS = get("minecraft:snowy_taiga_mountains"); - @Nullable public static final BiomeType SNOWY_TUNDRA = get("minecraft:snowy_tundra"); + @Deprecated @Nullable public static final BiomeType SNOWY_TAIGA_HILLS = get("minecraft:snowy_taiga_hills"); + @Deprecated @Nullable public static final BiomeType SNOWY_TAIGA_MOUNTAINS = get("minecraft:snowy_taiga_mountains"); + @Deprecated @Nullable public static final BiomeType SNOWY_TUNDRA = get("minecraft:snowy_tundra"); @Nullable public static final BiomeType SOUL_SAND_VALLEY = get("minecraft:soul_sand_valley"); - @Nullable public static final BiomeType STONE_SHORE = get("minecraft:stone_shore"); + @Nullable public static final BiomeType SPARSE_JUNGLE = get("minecraft:sparse_jungle"); + @Deprecated @Nullable public static final BiomeType STONE_SHORE = get("minecraft:stone_shore"); + @Nullable public static final BiomeType STONY_PEAKS = get("minecraft:stony_peaks"); + @Nullable public static final BiomeType STONY_SHORE = get("minecraft:stony_shore"); @Nullable public static final BiomeType SUNFLOWER_PLAINS = get("minecraft:sunflower_plains"); @Nullable public static final BiomeType SWAMP = get("minecraft:swamp"); - @Nullable public static final BiomeType SWAMP_HILLS = get("minecraft:swamp_hills"); + @Deprecated @Nullable public static final BiomeType SWAMP_HILLS = get("minecraft:swamp_hills"); @Nullable public static final BiomeType TAIGA = get("minecraft:taiga"); - @Nullable public static final BiomeType TAIGA_HILLS = get("minecraft:taiga_hills"); - @Nullable public static final BiomeType TAIGA_MOUNTAINS = get("minecraft:taiga_mountains"); - @Nullable public static final BiomeType TALL_BIRCH_FOREST = get("minecraft:tall_birch_forest"); - @Nullable public static final BiomeType TALL_BIRCH_HILLS = get("minecraft:tall_birch_hills"); + @Deprecated @Nullable public static final BiomeType TAIGA_HILLS = get("minecraft:taiga_hills"); + @Deprecated @Nullable public static final BiomeType TAIGA_MOUNTAINS = get("minecraft:taiga_mountains"); + @Deprecated @Nullable public static final BiomeType TALL_BIRCH_FOREST = get("minecraft:tall_birch_forest"); + @Deprecated @Nullable public static final BiomeType TALL_BIRCH_HILLS = get("minecraft:tall_birch_hills"); @Nullable public static final BiomeType THE_END = get("minecraft:the_end"); @Nullable public static final BiomeType THE_VOID = get("minecraft:the_void"); @Nullable public static final BiomeType WARM_OCEAN = get("minecraft:warm_ocean"); @Nullable public static final BiomeType WARPED_FOREST = get("minecraft:warped_forest"); - @Nullable public static final BiomeType WOODED_BADLANDS_PLATEAU = get("minecraft:wooded_badlands_plateau"); - @Nullable public static final BiomeType WOODED_HILLS = get("minecraft:wooded_hills"); - @Nullable public static final BiomeType WOODED_MOUNTAINS = get("minecraft:wooded_mountains"); + @Nullable public static final BiomeType WINDSWEPT_FOREST = get("minecraft:windswept_forest"); + @Nullable public static final BiomeType WINDSWEPT_GRAVELLY_HILLS = get("minecraft:windswept_gravelly_hills"); + @Nullable public static final BiomeType WINDSWEPT_HILLS = get("minecraft:windswept_hills"); + @Nullable public static final BiomeType WINDSWEPT_SAVANNA = get("minecraft:windswept_savanna"); + @Nullable public static final BiomeType WOODED_BADLANDS = get("minecraft:wooded_badlands"); + @Deprecated @Nullable public static final BiomeType WOODED_BADLANDS_PLATEAU = get("minecraft:wooded_badlands_plateau"); + @Deprecated @Nullable public static final BiomeType WOODED_HILLS = get("minecraft:wooded_hills"); + @Deprecated @Nullable public static final BiomeType WOODED_MOUNTAINS = get("minecraft:wooded_mountains"); private BiomeTypes() { } diff --git a/worldedit-core/src/main/java/com/sk89q/worldedit/world/block/BlockCategories.java b/worldedit-core/src/main/java/com/sk89q/worldedit/world/block/BlockCategories.java index a6e7ae4023..73efa61f24 100644 --- a/worldedit-core/src/main/java/com/sk89q/worldedit/world/block/BlockCategories.java +++ b/worldedit-core/src/main/java/com/sk89q/worldedit/world/block/BlockCategories.java @@ -27,7 +27,12 @@ @SuppressWarnings("unused") public final class BlockCategories { public static final BlockCategory ACACIA_LOGS = get("minecraft:acacia_logs"); + public static final BlockCategory ANCIENT_CITY_REPLACEABLE = get("minecraft:ancient_city_replaceable"); + public static final BlockCategory ANIMALS_SPAWNABLE_ON = get("minecraft:animals_spawnable_on"); public static final BlockCategory ANVIL = get("minecraft:anvil"); + public static final BlockCategory AXOLOTLS_SPAWNABLE_ON = get("minecraft:axolotls_spawnable_on"); + public static final BlockCategory AZALEA_GROWS_ON = get("minecraft:azalea_grows_on"); + public static final BlockCategory AZALEA_ROOT_REPLACEABLE = get("minecraft:azalea_root_replaceable"); public static final BlockCategory BAMBOO_PLANTABLE_ON = get("minecraft:bamboo_plantable_on"); public static final BlockCategory BANNERS = get("minecraft:banners"); public static final BlockCategory BASE_STONE_NETHER = get("minecraft:base_stone_nether"); @@ -36,16 +41,19 @@ public final class BlockCategories { public static final BlockCategory BEDS = get("minecraft:beds"); public static final BlockCategory BEE_GROWABLES = get("minecraft:bee_growables"); public static final BlockCategory BEEHIVES = get("minecraft:beehives"); + public static final BlockCategory BIG_DRIPLEAF_PLACEABLE = get("minecraft:big_dripleaf_placeable"); public static final BlockCategory BIRCH_LOGS = get("minecraft:birch_logs"); public static final BlockCategory BUTTONS = get("minecraft:buttons"); public static final BlockCategory CAMPFIRES = get("minecraft:campfires"); public static final BlockCategory CANDLE_CAKES = get("minecraft:candle_cakes"); public static final BlockCategory CANDLES = get("minecraft:candles"); - public static final BlockCategory CARPETS = get("minecraft:carpets"); + @Deprecated public static final BlockCategory CARPETS = get("minecraft:carpets"); public static final BlockCategory CAULDRONS = get("minecraft:cauldrons"); public static final BlockCategory CAVE_VINES = get("minecraft:cave_vines"); public static final BlockCategory CLIMBABLE = get("minecraft:climbable"); public static final BlockCategory COAL_ORES = get("minecraft:coal_ores"); + public static final BlockCategory COMPLETES_FIND_TREE_TUTORIAL = get("minecraft:completes_find_tree_tutorial"); + public static final BlockCategory CONVERTABLE_TO_MUD = get("minecraft:convertable_to_mud"); public static final BlockCategory COPPER_ORES = get("minecraft:copper_ores"); public static final BlockCategory CORAL_BLOCKS = get("minecraft:coral_blocks"); public static final BlockCategory CORAL_PLANTS = get("minecraft:coral_plants"); @@ -53,23 +61,31 @@ public final class BlockCategories { public static final BlockCategory CRIMSON_STEMS = get("minecraft:crimson_stems"); public static final BlockCategory CROPS = get("minecraft:crops"); public static final BlockCategory CRYSTAL_SOUND_BLOCKS = get("minecraft:crystal_sound_blocks"); + public static final BlockCategory DAMPENS_VIBRATIONS = get("minecraft:dampens_vibrations"); public static final BlockCategory DARK_OAK_LOGS = get("minecraft:dark_oak_logs"); + public static final BlockCategory DEAD_BUSH_MAY_PLACE_ON = get("minecraft:dead_bush_may_place_on"); public static final BlockCategory DEEPSLATE_ORE_REPLACEABLES = get("minecraft:deepslate_ore_replaceables"); public static final BlockCategory DIAMOND_ORES = get("minecraft:diamond_ores"); public static final BlockCategory DIRT = get("minecraft:dirt"); @Deprecated public static final BlockCategory DIRT_LIKE = get("minecraft:dirt_like"); public static final BlockCategory DOORS = get("minecraft:doors"); public static final BlockCategory DRAGON_IMMUNE = get("minecraft:dragon_immune"); + public static final BlockCategory DRAGON_TRANSPARENT = get("minecraft:dragon_transparent"); public static final BlockCategory DRIPSTONE_REPLACEABLE_BLOCKS = get("minecraft:dripstone_replaceable_blocks"); public static final BlockCategory EMERALD_ORES = get("minecraft:emerald_ores"); public static final BlockCategory ENDERMAN_HOLDABLE = get("minecraft:enderman_holdable"); + public static final BlockCategory FALL_DAMAGE_RESETTING = get("minecraft:fall_damage_resetting"); public static final BlockCategory FEATURES_CANNOT_REPLACE = get("minecraft:features_cannot_replace"); public static final BlockCategory FENCE_GATES = get("minecraft:fence_gates"); public static final BlockCategory FENCES = get("minecraft:fences"); public static final BlockCategory FIRE = get("minecraft:fire"); public static final BlockCategory FLOWER_POTS = get("minecraft:flower_pots"); public static final BlockCategory FLOWERS = get("minecraft:flowers"); + public static final BlockCategory FOXES_SPAWNABLE_ON = get("minecraft:foxes_spawnable_on"); + public static final BlockCategory FROG_PREFER_JUMP_TO = get("minecraft:frog_prefer_jump_to"); + public static final BlockCategory FROGS_SPAWNABLE_ON = get("minecraft:frogs_spawnable_on"); public static final BlockCategory GEODE_INVALID_BLOCKS = get("minecraft:geode_invalid_blocks"); + public static final BlockCategory GOATS_SPAWNABLE_ON = get("minecraft:goats_spawnable_on"); public static final BlockCategory GOLD_ORES = get("minecraft:gold_ores"); public static final BlockCategory GUARDED_BY_PIGLINS = get("minecraft:guarded_by_piglins"); public static final BlockCategory HOGLIN_REPELLENTS = get("minecraft:hoglin_repellents"); @@ -82,39 +98,56 @@ public final class BlockCategories { public static final BlockCategory IRON_ORES = get("minecraft:iron_ores"); public static final BlockCategory JUNGLE_LOGS = get("minecraft:jungle_logs"); public static final BlockCategory LAPIS_ORES = get("minecraft:lapis_ores"); - public static final BlockCategory LAVA_POOL_STONE_REPLACEABLES = get("minecraft:lava_pool_stone_replaceables"); + public static final BlockCategory LAVA_POOL_STONE_CANNOT_REPLACE = get("minecraft:lava_pool_stone_cannot_replace"); + @Deprecated public static final BlockCategory LAVA_POOL_STONE_REPLACEABLES = get("minecraft:lava_pool_stone_replaceables"); public static final BlockCategory LEAVES = get("minecraft:leaves"); public static final BlockCategory LOGS = get("minecraft:logs"); public static final BlockCategory LOGS_THAT_BURN = get("minecraft:logs_that_burn"); public static final BlockCategory LUSH_GROUND_REPLACEABLE = get("minecraft:lush_ground_replaceable"); + public static final BlockCategory MANGROVE_LOGS = get("minecraft:mangrove_logs"); + public static final BlockCategory MANGROVE_LOGS_CAN_GROW_THROUGH = get("minecraft:mangrove_logs_can_grow_through"); + public static final BlockCategory MANGROVE_ROOTS_CAN_GROW_THROUGH = get("minecraft:mangrove_roots_can_grow_through"); public static final BlockCategory MINEABLE_AXE = get("minecraft:mineable/axe"); public static final BlockCategory MINEABLE_HOE = get("minecraft:mineable/hoe"); public static final BlockCategory MINEABLE_PICKAXE = get("minecraft:mineable/pickaxe"); public static final BlockCategory MINEABLE_SHOVEL = get("minecraft:mineable/shovel"); + public static final BlockCategory MOOSHROOMS_SPAWNABLE_ON = get("minecraft:mooshrooms_spawnable_on"); public static final BlockCategory MOSS_REPLACEABLE = get("minecraft:moss_replaceable"); public static final BlockCategory MUSHROOM_GROW_BLOCK = get("minecraft:mushroom_grow_block"); public static final BlockCategory NEEDS_DIAMOND_TOOL = get("minecraft:needs_diamond_tool"); public static final BlockCategory NEEDS_IRON_TOOL = get("minecraft:needs_iron_tool"); public static final BlockCategory NEEDS_STONE_TOOL = get("minecraft:needs_stone_tool"); + public static final BlockCategory NETHER_CARVER_REPLACEABLES = get("minecraft:nether_carver_replaceables"); public static final BlockCategory NON_FLAMMABLE_WOOD = get("minecraft:non_flammable_wood"); public static final BlockCategory NYLIUM = get("minecraft:nylium"); public static final BlockCategory OAK_LOGS = get("minecraft:oak_logs"); public static final BlockCategory OCCLUDES_VIBRATION_SIGNALS = get("minecraft:occludes_vibration_signals"); + public static final BlockCategory OVERWORLD_CARVER_REPLACEABLES = get("minecraft:overworld_carver_replaceables"); + public static final BlockCategory OVERWORLD_NATURAL_LOGS = get("minecraft:overworld_natural_logs"); + public static final BlockCategory PARROTS_SPAWNABLE_ON = get("minecraft:parrots_spawnable_on"); public static final BlockCategory PIGLIN_REPELLENTS = get("minecraft:piglin_repellents"); public static final BlockCategory PLANKS = get("minecraft:planks"); + public static final BlockCategory POLAR_BEARS_SPAWNABLE_ON_ALTERNATE = get("minecraft:polar_bears_spawnable_on_alternate"); public static final BlockCategory PORTALS = get("minecraft:portals"); public static final BlockCategory PRESSURE_PLATES = get("minecraft:pressure_plates"); public static final BlockCategory PREVENT_MOB_SPAWNING_INSIDE = get("minecraft:prevent_mob_spawning_inside"); + public static final BlockCategory RABBITS_SPAWNABLE_ON = get("minecraft:rabbits_spawnable_on"); public static final BlockCategory RAILS = get("minecraft:rails"); public static final BlockCategory REDSTONE_ORES = get("minecraft:redstone_ores"); + public static final BlockCategory REPLACEABLE_PLANTS = get("minecraft:replaceable_plants"); public static final BlockCategory SAND = get("minecraft:sand"); public static final BlockCategory SAPLINGS = get("minecraft:saplings"); + public static final BlockCategory SCULK_REPLACEABLE = get("minecraft:sculk_replaceable"); + public static final BlockCategory SCULK_REPLACEABLE_WORLD_GEN = get("minecraft:sculk_replaceable_world_gen"); public static final BlockCategory SHULKER_BOXES = get("minecraft:shulker_boxes"); public static final BlockCategory SIGNS = get("minecraft:signs"); public static final BlockCategory SLABS = get("minecraft:slabs"); public static final BlockCategory SMALL_DRIPLEAF_PLACEABLE = get("minecraft:small_dripleaf_placeable"); public static final BlockCategory SMALL_FLOWERS = get("minecraft:small_flowers"); + public static final BlockCategory SNAPS_GOAT_HORN = get("minecraft:snaps_goat_horn"); public static final BlockCategory SNOW = get("minecraft:snow"); + public static final BlockCategory SNOW_LAYER_CAN_SURVIVE_ON = get("minecraft:snow_layer_can_survive_on"); + public static final BlockCategory SNOW_LAYER_CANNOT_SURVIVE_ON = get("minecraft:snow_layer_cannot_survive_on"); public static final BlockCategory SOUL_FIRE_BASE_BLOCKS = get("minecraft:soul_fire_base_blocks"); public static final BlockCategory SOUL_SPEED_BLOCKS = get("minecraft:soul_speed_blocks"); public static final BlockCategory SPRUCE_LOGS = get("minecraft:spruce_logs"); @@ -125,6 +158,7 @@ public final class BlockCategories { public static final BlockCategory STONE_PRESSURE_PLATES = get("minecraft:stone_pressure_plates"); public static final BlockCategory STRIDER_WARM_BLOCKS = get("minecraft:strider_warm_blocks"); public static final BlockCategory TALL_FLOWERS = get("minecraft:tall_flowers"); + public static final BlockCategory TERRACOTTA = get("minecraft:terracotta"); public static final BlockCategory TRAPDOORS = get("minecraft:trapdoors"); public static final BlockCategory UNDERWATER_BONEMEALS = get("minecraft:underwater_bonemeals"); public static final BlockCategory UNSTABLE_BOTTOM_CENTER = get("minecraft:unstable_bottom_center"); @@ -137,6 +171,7 @@ public final class BlockCategories { public static final BlockCategory WART_BLOCKS = get("minecraft:wart_blocks"); public static final BlockCategory WITHER_IMMUNE = get("minecraft:wither_immune"); public static final BlockCategory WITHER_SUMMON_BASE_BLOCKS = get("minecraft:wither_summon_base_blocks"); + public static final BlockCategory WOLVES_SPAWNABLE_ON = get("minecraft:wolves_spawnable_on"); public static final BlockCategory WOODEN_BUTTONS = get("minecraft:wooden_buttons"); public static final BlockCategory WOODEN_DOORS = get("minecraft:wooden_doors"); public static final BlockCategory WOODEN_FENCES = get("minecraft:wooden_fences"); @@ -145,6 +180,7 @@ public final class BlockCategories { public static final BlockCategory WOODEN_STAIRS = get("minecraft:wooden_stairs"); public static final BlockCategory WOODEN_TRAPDOORS = get("minecraft:wooden_trapdoors"); public static final BlockCategory WOOL = get("minecraft:wool"); + public static final BlockCategory WOOL_CARPETS = get("minecraft:wool_carpets"); private BlockCategories() { } diff --git a/worldedit-core/src/main/java/com/sk89q/worldedit/world/block/BlockTypes.java b/worldedit-core/src/main/java/com/sk89q/worldedit/world/block/BlockTypes.java index 3ebbf10d54..9a7a483e14 100644 --- a/worldedit-core/src/main/java/com/sk89q/worldedit/world/block/BlockTypes.java +++ b/worldedit-core/src/main/java/com/sk89q/worldedit/world/block/BlockTypes.java @@ -351,6 +351,7 @@ public final class BlockTypes { @Nullable public static final BlockType FLOWER_POT = get("minecraft:flower_pot"); @Nullable public static final BlockType FLOWERING_AZALEA = get("minecraft:flowering_azalea"); @Nullable public static final BlockType FLOWERING_AZALEA_LEAVES = get("minecraft:flowering_azalea_leaves"); + @Nullable public static final BlockType FROGSPAWN = get("minecraft:frogspawn"); @Nullable public static final BlockType FROSTED_ICE = get("minecraft:frosted_ice"); @Nullable public static final BlockType FURNACE = get("minecraft:furnace"); @Nullable public static final BlockType GILDED_BLACKSTONE = get("minecraft:gilded_blackstone"); @@ -515,6 +516,22 @@ public final class BlockTypes { @Nullable public static final BlockType MAGENTA_WALL_BANNER = get("minecraft:magenta_wall_banner"); @Nullable public static final BlockType MAGENTA_WOOL = get("minecraft:magenta_wool"); @Nullable public static final BlockType MAGMA_BLOCK = get("minecraft:magma_block"); + @Nullable public static final BlockType MANGROVE_BUTTON = get("minecraft:mangrove_button"); + @Nullable public static final BlockType MANGROVE_DOOR = get("minecraft:mangrove_door"); + @Nullable public static final BlockType MANGROVE_FENCE = get("minecraft:mangrove_fence"); + @Nullable public static final BlockType MANGROVE_FENCE_GATE = get("minecraft:mangrove_fence_gate"); + @Nullable public static final BlockType MANGROVE_LEAVES = get("minecraft:mangrove_leaves"); + @Nullable public static final BlockType MANGROVE_LOG = get("minecraft:mangrove_log"); + @Nullable public static final BlockType MANGROVE_PLANKS = get("minecraft:mangrove_planks"); + @Nullable public static final BlockType MANGROVE_PRESSURE_PLATE = get("minecraft:mangrove_pressure_plate"); + @Nullable public static final BlockType MANGROVE_PROPAGULE = get("minecraft:mangrove_propagule"); + @Nullable public static final BlockType MANGROVE_ROOTS = get("minecraft:mangrove_roots"); + @Nullable public static final BlockType MANGROVE_SIGN = get("minecraft:mangrove_sign"); + @Nullable public static final BlockType MANGROVE_SLAB = get("minecraft:mangrove_slab"); + @Nullable public static final BlockType MANGROVE_STAIRS = get("minecraft:mangrove_stairs"); + @Nullable public static final BlockType MANGROVE_TRAPDOOR = get("minecraft:mangrove_trapdoor"); + @Nullable public static final BlockType MANGROVE_WALL_SIGN = get("minecraft:mangrove_wall_sign"); + @Nullable public static final BlockType MANGROVE_WOOD = get("minecraft:mangrove_wood"); @Nullable public static final BlockType MEDIUM_AMETHYST_BUD = get("minecraft:medium_amethyst_bud"); @Nullable public static final BlockType MELON = get("minecraft:melon"); @Nullable public static final BlockType MELON_STEM = get("minecraft:melon_stem"); @@ -529,6 +546,12 @@ public final class BlockTypes { @Nullable public static final BlockType MOSSY_STONE_BRICK_WALL = get("minecraft:mossy_stone_brick_wall"); @Nullable public static final BlockType MOSSY_STONE_BRICKS = get("minecraft:mossy_stone_bricks"); @Nullable public static final BlockType MOVING_PISTON = get("minecraft:moving_piston"); + @Nullable public static final BlockType MUD = get("minecraft:mud"); + @Nullable public static final BlockType MUD_BRICK_SLAB = get("minecraft:mud_brick_slab"); + @Nullable public static final BlockType MUD_BRICK_STAIRS = get("minecraft:mud_brick_stairs"); + @Nullable public static final BlockType MUD_BRICK_WALL = get("minecraft:mud_brick_wall"); + @Nullable public static final BlockType MUD_BRICKS = get("minecraft:mud_bricks"); + @Nullable public static final BlockType MUDDY_MANGROVE_ROOTS = get("minecraft:muddy_mangrove_roots"); @Nullable public static final BlockType MUSHROOM_STEM = get("minecraft:mushroom_stem"); @Nullable public static final BlockType MYCELIUM = get("minecraft:mycelium"); @Nullable public static final BlockType NETHER_BRICK_FENCE = get("minecraft:nether_brick_fence"); @@ -562,6 +585,7 @@ public final class BlockTypes { @Nullable public static final BlockType OAK_WOOD = get("minecraft:oak_wood"); @Nullable public static final BlockType OBSERVER = get("minecraft:observer"); @Nullable public static final BlockType OBSIDIAN = get("minecraft:obsidian"); + @Nullable public static final BlockType OCHRE_FROGLIGHT = get("minecraft:ochre_froglight"); @Nullable public static final BlockType ORANGE_BANNER = get("minecraft:orange_banner"); @Nullable public static final BlockType ORANGE_BED = get("minecraft:orange_bed"); @Nullable public static final BlockType ORANGE_CANDLE = get("minecraft:orange_candle"); @@ -583,6 +607,8 @@ public final class BlockTypes { @Nullable public static final BlockType OXIDIZED_CUT_COPPER_SLAB = get("minecraft:oxidized_cut_copper_slab"); @Nullable public static final BlockType OXIDIZED_CUT_COPPER_STAIRS = get("minecraft:oxidized_cut_copper_stairs"); @Nullable public static final BlockType PACKED_ICE = get("minecraft:packed_ice"); + @Nullable public static final BlockType PACKED_MUD = get("minecraft:packed_mud"); + @Nullable public static final BlockType PEARLESCENT_FROGLIGHT = get("minecraft:pearlescent_froglight"); @Nullable public static final BlockType PEONY = get("minecraft:peony"); @Nullable public static final BlockType PETRIFIED_OAK_SLAB = get("minecraft:petrified_oak_slab"); @Nullable public static final BlockType PINK_BANNER = get("minecraft:pink_banner"); @@ -651,6 +677,7 @@ public final class BlockTypes { @Nullable public static final BlockType POTTED_FLOWERING_AZALEA_BUSH = get("minecraft:potted_flowering_azalea_bush"); @Nullable public static final BlockType POTTED_JUNGLE_SAPLING = get("minecraft:potted_jungle_sapling"); @Nullable public static final BlockType POTTED_LILY_OF_THE_VALLEY = get("minecraft:potted_lily_of_the_valley"); + @Nullable public static final BlockType POTTED_MANGROVE_PROPAGULE = get("minecraft:potted_mangrove_propagule"); @Nullable public static final BlockType POTTED_OAK_SAPLING = get("minecraft:potted_oak_sapling"); @Nullable public static final BlockType POTTED_ORANGE_TULIP = get("minecraft:potted_orange_tulip"); @Nullable public static final BlockType POTTED_OXEYE_DAISY = get("minecraft:potted_oxeye_daisy"); @@ -734,6 +761,7 @@ public final class BlockTypes { @Nullable public static final BlockType REDSTONE_TORCH = get("minecraft:redstone_torch"); @Nullable public static final BlockType REDSTONE_WALL_TORCH = get("minecraft:redstone_wall_torch"); @Nullable public static final BlockType REDSTONE_WIRE = get("minecraft:redstone_wire"); + @Nullable public static final BlockType REINFORCED_DEEPSLATE = get("minecraft:reinforced_deepslate"); @Nullable public static final BlockType REPEATER = get("minecraft:repeater"); @Nullable public static final BlockType REPEATING_COMMAND_BLOCK = get("minecraft:repeating_command_block"); @Nullable public static final BlockType RESPAWN_ANCHOR = get("minecraft:respawn_anchor"); @@ -745,7 +773,11 @@ public final class BlockTypes { @Nullable public static final BlockType SANDSTONE_STAIRS = get("minecraft:sandstone_stairs"); @Nullable public static final BlockType SANDSTONE_WALL = get("minecraft:sandstone_wall"); @Nullable public static final BlockType SCAFFOLDING = get("minecraft:scaffolding"); + @Nullable public static final BlockType SCULK = get("minecraft:sculk"); + @Nullable public static final BlockType SCULK_CATALYST = get("minecraft:sculk_catalyst"); @Nullable public static final BlockType SCULK_SENSOR = get("minecraft:sculk_sensor"); + @Nullable public static final BlockType SCULK_SHRIEKER = get("minecraft:sculk_shrieker"); + @Nullable public static final BlockType SCULK_VEIN = get("minecraft:sculk_vein"); @Nullable public static final BlockType SEA_LANTERN = get("minecraft:sea_lantern"); @Nullable public static final BlockType SEA_PICKLE = get("minecraft:sea_pickle"); @Nullable public static final BlockType SEAGRASS = get("minecraft:seagrass"); @@ -819,6 +851,8 @@ public final class BlockTypes { @Nullable public static final BlockType STRIPPED_DARK_OAK_WOOD = get("minecraft:stripped_dark_oak_wood"); @Nullable public static final BlockType STRIPPED_JUNGLE_LOG = get("minecraft:stripped_jungle_log"); @Nullable public static final BlockType STRIPPED_JUNGLE_WOOD = get("minecraft:stripped_jungle_wood"); + @Nullable public static final BlockType STRIPPED_MANGROVE_LOG = get("minecraft:stripped_mangrove_log"); + @Nullable public static final BlockType STRIPPED_MANGROVE_WOOD = get("minecraft:stripped_mangrove_wood"); @Nullable public static final BlockType STRIPPED_OAK_LOG = get("minecraft:stripped_oak_log"); @Nullable public static final BlockType STRIPPED_OAK_WOOD = get("minecraft:stripped_oak_wood"); @Nullable public static final BlockType STRIPPED_SPRUCE_LOG = get("minecraft:stripped_spruce_log"); @@ -848,6 +882,7 @@ public final class BlockTypes { @Nullable public static final BlockType TURTLE_EGG = get("minecraft:turtle_egg"); @Nullable public static final BlockType TWISTING_VINES = get("minecraft:twisting_vines"); @Nullable public static final BlockType TWISTING_VINES_PLANT = get("minecraft:twisting_vines_plant"); + @Nullable public static final BlockType VERDANT_FROGLIGHT = get("minecraft:verdant_froglight"); @Nullable public static final BlockType VINE = get("minecraft:vine"); @Nullable public static final BlockType VOID_AIR = get("minecraft:void_air"); @Deprecated @Nullable public static final BlockType WALL_SIGN = get("minecraft:wall_sign"); diff --git a/worldedit-core/src/main/java/com/sk89q/worldedit/world/entity/EntityTypes.java b/worldedit-core/src/main/java/com/sk89q/worldedit/world/entity/EntityTypes.java index df253c9758..4931db878b 100644 --- a/worldedit-core/src/main/java/com/sk89q/worldedit/world/entity/EntityTypes.java +++ b/worldedit-core/src/main/java/com/sk89q/worldedit/world/entity/EntityTypes.java @@ -28,6 +28,7 @@ */ @SuppressWarnings("unused") public final class EntityTypes { + @Nullable public static final EntityType ALLAY = get("minecraft:allay"); @Nullable public static final EntityType AREA_EFFECT_CLOUD = get("minecraft:area_effect_cloud"); @Nullable public static final EntityType ARMOR_STAND = get("minecraft:armor_stand"); @Nullable public static final EntityType ARROW = get("minecraft:arrow"); @@ -38,6 +39,7 @@ public final class EntityTypes { @Nullable public static final EntityType BOAT = get("minecraft:boat"); @Nullable public static final EntityType CAT = get("minecraft:cat"); @Nullable public static final EntityType CAVE_SPIDER = get("minecraft:cave_spider"); + @Nullable public static final EntityType CHEST_BOAT = get("minecraft:chest_boat"); @Nullable public static final EntityType CHEST_MINECART = get("minecraft:chest_minecart"); @Nullable public static final EntityType CHICKEN = get("minecraft:chicken"); @Nullable public static final EntityType COD = get("minecraft:cod"); @@ -65,6 +67,7 @@ public final class EntityTypes { @Nullable public static final EntityType FIREWORK_ROCKET = get("minecraft:firework_rocket"); @Nullable public static final EntityType FISHING_BOBBER = get("minecraft:fishing_bobber"); @Nullable public static final EntityType FOX = get("minecraft:fox"); + @Nullable public static final EntityType FROG = get("minecraft:frog"); @Nullable public static final EntityType FURNACE_MINECART = get("minecraft:furnace_minecart"); @Nullable public static final EntityType GHAST = get("minecraft:ghast"); @Nullable public static final EntityType GIANT = get("minecraft:giant"); @@ -121,6 +124,7 @@ public final class EntityTypes { @Nullable public static final EntityType SQUID = get("minecraft:squid"); @Nullable public static final EntityType STRAY = get("minecraft:stray"); @Nullable public static final EntityType STRIDER = get("minecraft:strider"); + @Nullable public static final EntityType TADPOLE = get("minecraft:tadpole"); @Nullable public static final EntityType TNT = get("minecraft:tnt"); @Nullable public static final EntityType TNT_MINECART = get("minecraft:tnt_minecart"); @Nullable public static final EntityType TRADER_LLAMA = get("minecraft:trader_llama"); @@ -131,6 +135,7 @@ public final class EntityTypes { @Nullable public static final EntityType VILLAGER = get("minecraft:villager"); @Nullable public static final EntityType VINDICATOR = get("minecraft:vindicator"); @Nullable public static final EntityType WANDERING_TRADER = get("minecraft:wandering_trader"); + @Nullable public static final EntityType WARDEN = get("minecraft:warden"); @Nullable public static final EntityType WITCH = get("minecraft:witch"); @Nullable public static final EntityType WITHER = get("minecraft:wither"); @Nullable public static final EntityType WITHER_SKELETON = get("minecraft:wither_skeleton"); diff --git a/worldedit-core/src/main/java/com/sk89q/worldedit/world/item/ItemCategories.java b/worldedit-core/src/main/java/com/sk89q/worldedit/world/item/ItemCategories.java index 3265bbdb2c..74300e1182 100644 --- a/worldedit-core/src/main/java/com/sk89q/worldedit/world/item/ItemCategories.java +++ b/worldedit-core/src/main/java/com/sk89q/worldedit/world/item/ItemCategories.java @@ -37,15 +37,20 @@ public final class ItemCategories { public static final ItemCategory BOATS = get("minecraft:boats"); public static final ItemCategory BUTTONS = get("minecraft:buttons"); public static final ItemCategory CANDLES = get("minecraft:candles"); - public static final ItemCategory CARPETS = get("minecraft:carpets"); + @Deprecated public static final ItemCategory CARPETS = get("minecraft:carpets"); + public static final ItemCategory CHEST_BOATS = get("minecraft:chest_boats"); public static final ItemCategory CLUSTER_MAX_HARVESTABLES = get("minecraft:cluster_max_harvestables"); public static final ItemCategory COAL_ORES = get("minecraft:coal_ores"); public static final ItemCategory COALS = get("minecraft:coals"); + public static final ItemCategory COMPASSES = get("minecraft:compasses"); + public static final ItemCategory COMPLETES_FIND_TREE_TUTORIAL = get("minecraft:completes_find_tree_tutorial"); public static final ItemCategory COPPER_ORES = get("minecraft:copper_ores"); public static final ItemCategory CREEPER_DROP_MUSIC_DISCS = get("minecraft:creeper_drop_music_discs"); public static final ItemCategory CRIMSON_STEMS = get("minecraft:crimson_stems"); + public static final ItemCategory DAMPENS_VIBRATIONS = get("minecraft:dampens_vibrations"); public static final ItemCategory DARK_OAK_LOGS = get("minecraft:dark_oak_logs"); public static final ItemCategory DIAMOND_ORES = get("minecraft:diamond_ores"); + public static final ItemCategory DIRT = get("minecraft:dirt"); public static final ItemCategory DOORS = get("minecraft:doors"); public static final ItemCategory EMERALD_ORES = get("minecraft:emerald_ores"); public static final ItemCategory FENCES = get("minecraft:fences"); @@ -63,10 +68,12 @@ public final class ItemCategories { public static final ItemCategory LECTERN_BOOKS = get("minecraft:lectern_books"); public static final ItemCategory LOGS = get("minecraft:logs"); public static final ItemCategory LOGS_THAT_BURN = get("minecraft:logs_that_burn"); + public static final ItemCategory MANGROVE_LOGS = get("minecraft:mangrove_logs"); public static final ItemCategory MUSIC_DISCS = get("minecraft:music_discs"); public static final ItemCategory NON_FLAMMABLE_WOOD = get("minecraft:non_flammable_wood"); public static final ItemCategory OAK_LOGS = get("minecraft:oak_logs"); - public static final ItemCategory OCCLUDES_VIBRATION_SIGNALS = get("minecraft:occludes_vibration_signals"); + @Deprecated public static final ItemCategory OCCLUDES_VIBRATION_SIGNALS = get("minecraft:occludes_vibration_signals"); + public static final ItemCategory OVERWORLD_NATURAL_LOGS = get("minecraft:overworld_natural_logs"); public static final ItemCategory PIGLIN_FOOD = get("minecraft:piglin_food"); public static final ItemCategory PIGLIN_LOVED = get("minecraft:piglin_loved"); public static final ItemCategory PIGLIN_REPELLENTS = get("minecraft:piglin_repellents"); @@ -85,9 +92,11 @@ public final class ItemCategories { public static final ItemCategory STONE_CRAFTING_MATERIALS = get("minecraft:stone_crafting_materials"); public static final ItemCategory STONE_TOOL_MATERIALS = get("minecraft:stone_tool_materials"); public static final ItemCategory TALL_FLOWERS = get("minecraft:tall_flowers"); + public static final ItemCategory TERRACOTTA = get("minecraft:terracotta"); public static final ItemCategory TRAPDOORS = get("minecraft:trapdoors"); public static final ItemCategory WALLS = get("minecraft:walls"); public static final ItemCategory WARPED_STEMS = get("minecraft:warped_stems"); + public static final ItemCategory WART_BLOCKS = get("minecraft:wart_blocks"); public static final ItemCategory WOODEN_BUTTONS = get("minecraft:wooden_buttons"); public static final ItemCategory WOODEN_DOORS = get("minecraft:wooden_doors"); public static final ItemCategory WOODEN_FENCES = get("minecraft:wooden_fences"); @@ -96,6 +105,7 @@ public final class ItemCategories { public static final ItemCategory WOODEN_STAIRS = get("minecraft:wooden_stairs"); public static final ItemCategory WOODEN_TRAPDOORS = get("minecraft:wooden_trapdoors"); public static final ItemCategory WOOL = get("minecraft:wool"); + public static final ItemCategory WOOL_CARPETS = get("minecraft:wool_carpets"); private ItemCategories() { } diff --git a/worldedit-core/src/main/java/com/sk89q/worldedit/world/item/ItemTypes.java b/worldedit-core/src/main/java/com/sk89q/worldedit/world/item/ItemTypes.java index d224b5048f..fc49ff68b8 100644 --- a/worldedit-core/src/main/java/com/sk89q/worldedit/world/item/ItemTypes.java +++ b/worldedit-core/src/main/java/com/sk89q/worldedit/world/item/ItemTypes.java @@ -30,6 +30,7 @@ public final class ItemTypes { @Nullable public static final ItemType ACACIA_BOAT = get("minecraft:acacia_boat"); @Nullable public static final ItemType ACACIA_BUTTON = get("minecraft:acacia_button"); + @Nullable public static final ItemType ACACIA_CHEST_BOAT = get("minecraft:acacia_chest_boat"); @Nullable public static final ItemType ACACIA_DOOR = get("minecraft:acacia_door"); @Nullable public static final ItemType ACACIA_FENCE = get("minecraft:acacia_fence"); @Nullable public static final ItemType ACACIA_FENCE_GATE = get("minecraft:acacia_fence_gate"); @@ -45,6 +46,7 @@ public final class ItemTypes { @Nullable public static final ItemType ACACIA_WOOD = get("minecraft:acacia_wood"); @Nullable public static final ItemType ACTIVATOR_RAIL = get("minecraft:activator_rail"); @Nullable public static final ItemType AIR = get("minecraft:air"); + @Nullable public static final ItemType ALLAY_SPAWN_EGG = get("minecraft:allay_spawn_egg"); @Nullable public static final ItemType ALLIUM = get("minecraft:allium"); @Nullable public static final ItemType AMETHYST_BLOCK = get("minecraft:amethyst_block"); @Nullable public static final ItemType AMETHYST_CLUSTER = get("minecraft:amethyst_cluster"); @@ -82,6 +84,7 @@ public final class ItemTypes { @Nullable public static final ItemType BIG_DRIPLEAF = get("minecraft:big_dripleaf"); @Nullable public static final ItemType BIRCH_BOAT = get("minecraft:birch_boat"); @Nullable public static final ItemType BIRCH_BUTTON = get("minecraft:birch_button"); + @Nullable public static final ItemType BIRCH_CHEST_BOAT = get("minecraft:birch_chest_boat"); @Nullable public static final ItemType BIRCH_DOOR = get("minecraft:birch_door"); @Nullable public static final ItemType BIRCH_FENCE = get("minecraft:birch_fence"); @Nullable public static final ItemType BIRCH_FENCE_GATE = get("minecraft:birch_fence_gate"); @@ -294,6 +297,7 @@ public final class ItemTypes { @Deprecated @Nullable public static final ItemType DANDELION_YELLOW = get("minecraft:dandelion_yellow"); @Nullable public static final ItemType DARK_OAK_BOAT = get("minecraft:dark_oak_boat"); @Nullable public static final ItemType DARK_OAK_BUTTON = get("minecraft:dark_oak_button"); + @Nullable public static final ItemType DARK_OAK_CHEST_BOAT = get("minecraft:dark_oak_chest_boat"); @Nullable public static final ItemType DARK_OAK_DOOR = get("minecraft:dark_oak_door"); @Nullable public static final ItemType DARK_OAK_FENCE = get("minecraft:dark_oak_fence"); @Nullable public static final ItemType DARK_OAK_FENCE_GATE = get("minecraft:dark_oak_fence_gate"); @@ -365,6 +369,7 @@ public final class ItemTypes { @Nullable public static final ItemType DIORITE_WALL = get("minecraft:diorite_wall"); @Nullable public static final ItemType DIRT = get("minecraft:dirt"); @Nullable public static final ItemType DIRT_PATH = get("minecraft:dirt_path"); + @Nullable public static final ItemType DISC_FRAGMENT_5 = get("minecraft:disc_fragment_5"); @Nullable public static final ItemType DISPENSER = get("minecraft:dispenser"); @Nullable public static final ItemType DOLPHIN_SPAWN_EGG = get("minecraft:dolphin_spawn_egg"); @Nullable public static final ItemType DONKEY_SPAWN_EGG = get("minecraft:donkey_spawn_egg"); @@ -376,6 +381,7 @@ public final class ItemTypes { @Nullable public static final ItemType DRIPSTONE_BLOCK = get("minecraft:dripstone_block"); @Nullable public static final ItemType DROPPER = get("minecraft:dropper"); @Nullable public static final ItemType DROWNED_SPAWN_EGG = get("minecraft:drowned_spawn_egg"); + @Nullable public static final ItemType ECHO_SHARD = get("minecraft:echo_shard"); @Nullable public static final ItemType EGG = get("minecraft:egg"); @Nullable public static final ItemType ELDER_GUARDIAN_SPAWN_EGG = get("minecraft:elder_guardian_spawn_egg"); @Nullable public static final ItemType ELYTRA = get("minecraft:elytra"); @@ -424,6 +430,8 @@ public final class ItemTypes { @Nullable public static final ItemType FLOWERING_AZALEA = get("minecraft:flowering_azalea"); @Nullable public static final ItemType FLOWERING_AZALEA_LEAVES = get("minecraft:flowering_azalea_leaves"); @Nullable public static final ItemType FOX_SPAWN_EGG = get("minecraft:fox_spawn_egg"); + @Nullable public static final ItemType FROG_SPAWN_EGG = get("minecraft:frog_spawn_egg"); + @Nullable public static final ItemType FROGSPAWN = get("minecraft:frogspawn"); @Nullable public static final ItemType FURNACE = get("minecraft:furnace"); @Nullable public static final ItemType FURNACE_MINECART = get("minecraft:furnace_minecart"); @Nullable public static final ItemType GHAST_SPAWN_EGG = get("minecraft:ghast_spawn_egg"); @@ -441,6 +449,7 @@ public final class ItemTypes { @Nullable public static final ItemType GLOW_SQUID_SPAWN_EGG = get("minecraft:glow_squid_spawn_egg"); @Nullable public static final ItemType GLOWSTONE = get("minecraft:glowstone"); @Nullable public static final ItemType GLOWSTONE_DUST = get("minecraft:glowstone_dust"); + @Nullable public static final ItemType GOAT_HORN = get("minecraft:goat_horn"); @Nullable public static final ItemType GOAT_SPAWN_EGG = get("minecraft:goat_spawn_egg"); @Nullable public static final ItemType GOLD_BLOCK = get("minecraft:gold_block"); @Nullable public static final ItemType GOLD_INGOT = get("minecraft:gold_ingot"); @@ -543,6 +552,7 @@ public final class ItemTypes { @Nullable public static final ItemType JUKEBOX = get("minecraft:jukebox"); @Nullable public static final ItemType JUNGLE_BOAT = get("minecraft:jungle_boat"); @Nullable public static final ItemType JUNGLE_BUTTON = get("minecraft:jungle_button"); + @Nullable public static final ItemType JUNGLE_CHEST_BOAT = get("minecraft:jungle_chest_boat"); @Nullable public static final ItemType JUNGLE_DOOR = get("minecraft:jungle_door"); @Nullable public static final ItemType JUNGLE_FENCE = get("minecraft:jungle_fence"); @Nullable public static final ItemType JUNGLE_FENCE_GATE = get("minecraft:jungle_fence_gate"); @@ -640,6 +650,23 @@ public final class ItemTypes { @Nullable public static final ItemType MAGMA_BLOCK = get("minecraft:magma_block"); @Nullable public static final ItemType MAGMA_CREAM = get("minecraft:magma_cream"); @Nullable public static final ItemType MAGMA_CUBE_SPAWN_EGG = get("minecraft:magma_cube_spawn_egg"); + @Nullable public static final ItemType MANGROVE_BOAT = get("minecraft:mangrove_boat"); + @Nullable public static final ItemType MANGROVE_BUTTON = get("minecraft:mangrove_button"); + @Nullable public static final ItemType MANGROVE_CHEST_BOAT = get("minecraft:mangrove_chest_boat"); + @Nullable public static final ItemType MANGROVE_DOOR = get("minecraft:mangrove_door"); + @Nullable public static final ItemType MANGROVE_FENCE = get("minecraft:mangrove_fence"); + @Nullable public static final ItemType MANGROVE_FENCE_GATE = get("minecraft:mangrove_fence_gate"); + @Nullable public static final ItemType MANGROVE_LEAVES = get("minecraft:mangrove_leaves"); + @Nullable public static final ItemType MANGROVE_LOG = get("minecraft:mangrove_log"); + @Nullable public static final ItemType MANGROVE_PLANKS = get("minecraft:mangrove_planks"); + @Nullable public static final ItemType MANGROVE_PRESSURE_PLATE = get("minecraft:mangrove_pressure_plate"); + @Nullable public static final ItemType MANGROVE_PROPAGULE = get("minecraft:mangrove_propagule"); + @Nullable public static final ItemType MANGROVE_ROOTS = get("minecraft:mangrove_roots"); + @Nullable public static final ItemType MANGROVE_SIGN = get("minecraft:mangrove_sign"); + @Nullable public static final ItemType MANGROVE_SLAB = get("minecraft:mangrove_slab"); + @Nullable public static final ItemType MANGROVE_STAIRS = get("minecraft:mangrove_stairs"); + @Nullable public static final ItemType MANGROVE_TRAPDOOR = get("minecraft:mangrove_trapdoor"); + @Nullable public static final ItemType MANGROVE_WOOD = get("minecraft:mangrove_wood"); @Nullable public static final ItemType MAP = get("minecraft:map"); @Nullable public static final ItemType MEDIUM_AMETHYST_BUD = get("minecraft:medium_amethyst_bud"); @Nullable public static final ItemType MELON = get("minecraft:melon"); @@ -659,17 +686,25 @@ public final class ItemTypes { @Nullable public static final ItemType MOSSY_STONE_BRICK_STAIRS = get("minecraft:mossy_stone_brick_stairs"); @Nullable public static final ItemType MOSSY_STONE_BRICK_WALL = get("minecraft:mossy_stone_brick_wall"); @Nullable public static final ItemType MOSSY_STONE_BRICKS = get("minecraft:mossy_stone_bricks"); + @Nullable public static final ItemType MUD = get("minecraft:mud"); + @Nullable public static final ItemType MUD_BRICK_SLAB = get("minecraft:mud_brick_slab"); + @Nullable public static final ItemType MUD_BRICK_STAIRS = get("minecraft:mud_brick_stairs"); + @Nullable public static final ItemType MUD_BRICK_WALL = get("minecraft:mud_brick_wall"); + @Nullable public static final ItemType MUD_BRICKS = get("minecraft:mud_bricks"); + @Nullable public static final ItemType MUDDY_MANGROVE_ROOTS = get("minecraft:muddy_mangrove_roots"); @Nullable public static final ItemType MULE_SPAWN_EGG = get("minecraft:mule_spawn_egg"); @Nullable public static final ItemType MUSHROOM_STEM = get("minecraft:mushroom_stem"); @Nullable public static final ItemType MUSHROOM_STEW = get("minecraft:mushroom_stew"); @Nullable public static final ItemType MUSIC_DISC_11 = get("minecraft:music_disc_11"); @Nullable public static final ItemType MUSIC_DISC_13 = get("minecraft:music_disc_13"); + @Nullable public static final ItemType MUSIC_DISC_5 = get("minecraft:music_disc_5"); @Nullable public static final ItemType MUSIC_DISC_BLOCKS = get("minecraft:music_disc_blocks"); @Nullable public static final ItemType MUSIC_DISC_CAT = get("minecraft:music_disc_cat"); @Nullable public static final ItemType MUSIC_DISC_CHIRP = get("minecraft:music_disc_chirp"); @Nullable public static final ItemType MUSIC_DISC_FAR = get("minecraft:music_disc_far"); @Nullable public static final ItemType MUSIC_DISC_MALL = get("minecraft:music_disc_mall"); @Nullable public static final ItemType MUSIC_DISC_MELLOHI = get("minecraft:music_disc_mellohi"); + @Nullable public static final ItemType MUSIC_DISC_OTHERSIDE = get("minecraft:music_disc_otherside"); @Nullable public static final ItemType MUSIC_DISC_PIGSTEP = get("minecraft:music_disc_pigstep"); @Nullable public static final ItemType MUSIC_DISC_STAL = get("minecraft:music_disc_stal"); @Nullable public static final ItemType MUSIC_DISC_STRAD = get("minecraft:music_disc_strad"); @@ -707,6 +742,7 @@ public final class ItemTypes { @Nullable public static final ItemType NOTE_BLOCK = get("minecraft:note_block"); @Nullable public static final ItemType OAK_BOAT = get("minecraft:oak_boat"); @Nullable public static final ItemType OAK_BUTTON = get("minecraft:oak_button"); + @Nullable public static final ItemType OAK_CHEST_BOAT = get("minecraft:oak_chest_boat"); @Nullable public static final ItemType OAK_DOOR = get("minecraft:oak_door"); @Nullable public static final ItemType OAK_FENCE = get("minecraft:oak_fence"); @Nullable public static final ItemType OAK_FENCE_GATE = get("minecraft:oak_fence_gate"); @@ -723,6 +759,7 @@ public final class ItemTypes { @Nullable public static final ItemType OBSERVER = get("minecraft:observer"); @Nullable public static final ItemType OBSIDIAN = get("minecraft:obsidian"); @Nullable public static final ItemType OCELOT_SPAWN_EGG = get("minecraft:ocelot_spawn_egg"); + @Nullable public static final ItemType OCHRE_FROGLIGHT = get("minecraft:ochre_froglight"); @Nullable public static final ItemType ORANGE_BANNER = get("minecraft:orange_banner"); @Nullable public static final ItemType ORANGE_BED = get("minecraft:orange_bed"); @Nullable public static final ItemType ORANGE_CANDLE = get("minecraft:orange_candle"); @@ -743,10 +780,12 @@ public final class ItemTypes { @Nullable public static final ItemType OXIDIZED_CUT_COPPER_SLAB = get("minecraft:oxidized_cut_copper_slab"); @Nullable public static final ItemType OXIDIZED_CUT_COPPER_STAIRS = get("minecraft:oxidized_cut_copper_stairs"); @Nullable public static final ItemType PACKED_ICE = get("minecraft:packed_ice"); + @Nullable public static final ItemType PACKED_MUD = get("minecraft:packed_mud"); @Nullable public static final ItemType PAINTING = get("minecraft:painting"); @Nullable public static final ItemType PANDA_SPAWN_EGG = get("minecraft:panda_spawn_egg"); @Nullable public static final ItemType PAPER = get("minecraft:paper"); @Nullable public static final ItemType PARROT_SPAWN_EGG = get("minecraft:parrot_spawn_egg"); + @Nullable public static final ItemType PEARLESCENT_FROGLIGHT = get("minecraft:pearlescent_froglight"); @Nullable public static final ItemType PEONY = get("minecraft:peony"); @Nullable public static final ItemType PETRIFIED_OAK_SLAB = get("minecraft:petrified_oak_slab"); @Nullable public static final ItemType PHANTOM_MEMBRANE = get("minecraft:phantom_membrane"); @@ -858,6 +897,7 @@ public final class ItemTypes { @Nullable public static final ItemType RAW_GOLD_BLOCK = get("minecraft:raw_gold_block"); @Nullable public static final ItemType RAW_IRON = get("minecraft:raw_iron"); @Nullable public static final ItemType RAW_IRON_BLOCK = get("minecraft:raw_iron_block"); + @Nullable public static final ItemType RECOVERY_COMPASS = get("minecraft:recovery_compass"); @Nullable public static final ItemType RED_BANNER = get("minecraft:red_banner"); @Nullable public static final ItemType RED_BED = get("minecraft:red_bed"); @Nullable public static final ItemType RED_CANDLE = get("minecraft:red_candle"); @@ -888,6 +928,7 @@ public final class ItemTypes { @Nullable public static final ItemType REDSTONE_LAMP = get("minecraft:redstone_lamp"); @Nullable public static final ItemType REDSTONE_ORE = get("minecraft:redstone_ore"); @Nullable public static final ItemType REDSTONE_TORCH = get("minecraft:redstone_torch"); + @Nullable public static final ItemType REINFORCED_DEEPSLATE = get("minecraft:reinforced_deepslate"); @Nullable public static final ItemType REPEATER = get("minecraft:repeater"); @Nullable public static final ItemType REPEATING_COMMAND_BLOCK = get("minecraft:repeating_command_block"); @Nullable public static final ItemType RESPAWN_ANCHOR = get("minecraft:respawn_anchor"); @@ -905,7 +946,11 @@ public final class ItemTypes { @Nullable public static final ItemType SANDSTONE_STAIRS = get("minecraft:sandstone_stairs"); @Nullable public static final ItemType SANDSTONE_WALL = get("minecraft:sandstone_wall"); @Nullable public static final ItemType SCAFFOLDING = get("minecraft:scaffolding"); + @Nullable public static final ItemType SCULK = get("minecraft:sculk"); + @Nullable public static final ItemType SCULK_CATALYST = get("minecraft:sculk_catalyst"); @Nullable public static final ItemType SCULK_SENSOR = get("minecraft:sculk_sensor"); + @Nullable public static final ItemType SCULK_SHRIEKER = get("minecraft:sculk_shrieker"); + @Nullable public static final ItemType SCULK_VEIN = get("minecraft:sculk_vein"); @Nullable public static final ItemType SCUTE = get("minecraft:scute"); @Nullable public static final ItemType SEA_LANTERN = get("minecraft:sea_lantern"); @Nullable public static final ItemType SEA_PICKLE = get("minecraft:sea_pickle"); @@ -959,6 +1004,7 @@ public final class ItemTypes { @Nullable public static final ItemType SPORE_BLOSSOM = get("minecraft:spore_blossom"); @Nullable public static final ItemType SPRUCE_BOAT = get("minecraft:spruce_boat"); @Nullable public static final ItemType SPRUCE_BUTTON = get("minecraft:spruce_button"); + @Nullable public static final ItemType SPRUCE_CHEST_BOAT = get("minecraft:spruce_chest_boat"); @Nullable public static final ItemType SPRUCE_DOOR = get("minecraft:spruce_door"); @Nullable public static final ItemType SPRUCE_FENCE = get("minecraft:spruce_fence"); @Nullable public static final ItemType SPRUCE_FENCE_GATE = get("minecraft:spruce_fence_gate"); @@ -1004,6 +1050,8 @@ public final class ItemTypes { @Nullable public static final ItemType STRIPPED_DARK_OAK_WOOD = get("minecraft:stripped_dark_oak_wood"); @Nullable public static final ItemType STRIPPED_JUNGLE_LOG = get("minecraft:stripped_jungle_log"); @Nullable public static final ItemType STRIPPED_JUNGLE_WOOD = get("minecraft:stripped_jungle_wood"); + @Nullable public static final ItemType STRIPPED_MANGROVE_LOG = get("minecraft:stripped_mangrove_log"); + @Nullable public static final ItemType STRIPPED_MANGROVE_WOOD = get("minecraft:stripped_mangrove_wood"); @Nullable public static final ItemType STRIPPED_OAK_LOG = get("minecraft:stripped_oak_log"); @Nullable public static final ItemType STRIPPED_OAK_WOOD = get("minecraft:stripped_oak_wood"); @Nullable public static final ItemType STRIPPED_SPRUCE_LOG = get("minecraft:stripped_spruce_log"); @@ -1017,6 +1065,8 @@ public final class ItemTypes { @Nullable public static final ItemType SUNFLOWER = get("minecraft:sunflower"); @Nullable public static final ItemType SUSPICIOUS_STEW = get("minecraft:suspicious_stew"); @Nullable public static final ItemType SWEET_BERRIES = get("minecraft:sweet_berries"); + @Nullable public static final ItemType TADPOLE_BUCKET = get("minecraft:tadpole_bucket"); + @Nullable public static final ItemType TADPOLE_SPAWN_EGG = get("minecraft:tadpole_spawn_egg"); @Nullable public static final ItemType TALL_GRASS = get("minecraft:tall_grass"); @Nullable public static final ItemType TARGET = get("minecraft:target"); @Nullable public static final ItemType TERRACOTTA = get("minecraft:terracotta"); @@ -1041,11 +1091,13 @@ public final class ItemTypes { @Nullable public static final ItemType TURTLE_HELMET = get("minecraft:turtle_helmet"); @Nullable public static final ItemType TURTLE_SPAWN_EGG = get("minecraft:turtle_spawn_egg"); @Nullable public static final ItemType TWISTING_VINES = get("minecraft:twisting_vines"); + @Nullable public static final ItemType VERDANT_FROGLIGHT = get("minecraft:verdant_froglight"); @Nullable public static final ItemType VEX_SPAWN_EGG = get("minecraft:vex_spawn_egg"); @Nullable public static final ItemType VILLAGER_SPAWN_EGG = get("minecraft:villager_spawn_egg"); @Nullable public static final ItemType VINDICATOR_SPAWN_EGG = get("minecraft:vindicator_spawn_egg"); @Nullable public static final ItemType VINE = get("minecraft:vine"); @Nullable public static final ItemType WANDERING_TRADER_SPAWN_EGG = get("minecraft:wandering_trader_spawn_egg"); + @Nullable public static final ItemType WARDEN_SPAWN_EGG = get("minecraft:warden_spawn_egg"); @Nullable public static final ItemType WARPED_BUTTON = get("minecraft:warped_button"); @Nullable public static final ItemType WARPED_DOOR = get("minecraft:warped_door"); @Nullable public static final ItemType WARPED_FENCE = get("minecraft:warped_fence"); diff --git a/worldedit-core/src/main/java/com/sk89q/worldedit/world/registry/BundledBlockData.java b/worldedit-core/src/main/java/com/sk89q/worldedit/world/registry/BundledBlockData.java index e3a7e1bce7..807ee83507 100644 --- a/worldedit-core/src/main/java/com/sk89q/worldedit/world/registry/BundledBlockData.java +++ b/worldedit-core/src/main/java/com/sk89q/worldedit/world/registry/BundledBlockData.java @@ -23,13 +23,9 @@ import com.google.gson.Gson; import com.google.gson.GsonBuilder; import com.google.gson.reflect.TypeToken; -import com.sk89q.worldedit.WorldEdit; -import com.sk89q.worldedit.extension.platform.Capability; -import com.sk89q.worldedit.internal.Constants; import com.sk89q.worldedit.internal.util.LogManagerCompat; import com.sk89q.worldedit.math.Vector3; import com.sk89q.worldedit.util.gson.VectorAdapter; -import com.sk89q.worldedit.util.io.ResourceLoader; import org.apache.logging.log4j.Logger; import java.io.IOException; @@ -55,7 +51,6 @@ public final class BundledBlockData { private static final Logger LOGGER = LogManagerCompat.getLogger(); private static BundledBlockData INSTANCE; - private final ResourceLoader resourceLoader; private final Map idMap = new HashMap<>(); @@ -63,8 +58,6 @@ public final class BundledBlockData { * Create a new instance. */ private BundledBlockData() { - this.resourceLoader = WorldEdit.getInstance().getPlatformManager().queryCapability(Capability.CONFIGURATION).getResourceLoader(); - try { loadFromResource(); } catch (Throwable e) { @@ -81,23 +74,7 @@ private void loadFromResource() throws IOException { GsonBuilder gsonBuilder = new GsonBuilder(); gsonBuilder.registerTypeAdapter(Vector3.class, new VectorAdapter()); Gson gson = gsonBuilder.create(); - URL url = null; - final int dataVersion = WorldEdit.getInstance().getPlatformManager().queryCapability(Capability.WORLD_EDITING).getDataVersion(); - if (dataVersion >= Constants.DATA_VERSION_MC_1_17) { - url = resourceLoader.getResource(BundledBlockData.class, "blocks.117.json"); - } else if (dataVersion >= Constants.DATA_VERSION_MC_1_16) { - url = resourceLoader.getResource(BundledBlockData.class, "blocks.116.json"); - } else if (dataVersion >= Constants.DATA_VERSION_MC_1_15) { - url = resourceLoader.getResource(BundledBlockData.class, "blocks.115.json"); - } else if (dataVersion >= Constants.DATA_VERSION_MC_1_14) { - url = resourceLoader.getResource(BundledBlockData.class, "blocks.114.json"); - } - if (url == null) { - url = resourceLoader.getResource(BundledBlockData.class, "blocks.json"); - } - if (url == null) { - throw new IOException("Could not find blocks.json"); - } + URL url = BundledRegistries.loadRegistry("blocks"); LOGGER.debug("Using {} for bundled block data.", url); String data = Resources.toString(url, Charset.defaultCharset()); List entries = gson.fromJson(data, new TypeToken>() {}.getType()); diff --git a/worldedit-core/src/main/java/com/sk89q/worldedit/world/registry/BundledItemData.java b/worldedit-core/src/main/java/com/sk89q/worldedit/world/registry/BundledItemData.java index f3ec57d0e8..1397d7c68a 100644 --- a/worldedit-core/src/main/java/com/sk89q/worldedit/world/registry/BundledItemData.java +++ b/worldedit-core/src/main/java/com/sk89q/worldedit/world/registry/BundledItemData.java @@ -23,13 +23,9 @@ import com.google.gson.Gson; import com.google.gson.GsonBuilder; import com.google.gson.reflect.TypeToken; -import com.sk89q.worldedit.WorldEdit; -import com.sk89q.worldedit.extension.platform.Capability; -import com.sk89q.worldedit.internal.Constants; import com.sk89q.worldedit.internal.util.LogManagerCompat; import com.sk89q.worldedit.math.Vector3; import com.sk89q.worldedit.util.gson.VectorAdapter; -import com.sk89q.worldedit.util.io.ResourceLoader; import org.apache.logging.log4j.Logger; import java.io.IOException; @@ -55,7 +51,6 @@ public final class BundledItemData { private static final Logger LOGGER = LogManagerCompat.getLogger(); private static BundledItemData INSTANCE; - private final ResourceLoader resourceLoader; private final Map idMap = new HashMap<>(); @@ -63,8 +58,6 @@ public final class BundledItemData { * Create a new instance. */ private BundledItemData() { - this.resourceLoader = WorldEdit.getInstance().getPlatformManager().queryCapability(Capability.CONFIGURATION).getResourceLoader(); - try { loadFromResource(); } catch (Throwable e) { @@ -81,23 +74,7 @@ private void loadFromResource() throws IOException { GsonBuilder gsonBuilder = new GsonBuilder(); gsonBuilder.registerTypeAdapter(Vector3.class, new VectorAdapter()); Gson gson = gsonBuilder.create(); - URL url = null; - final int dataVersion = WorldEdit.getInstance().getPlatformManager().queryCapability(Capability.WORLD_EDITING).getDataVersion(); - if (dataVersion >= Constants.DATA_VERSION_MC_1_17) { - url = resourceLoader.getResource(BundledBlockData.class, "items.117.json"); - } else if (dataVersion >= Constants.DATA_VERSION_MC_1_16) { - url = resourceLoader.getResource(BundledBlockData.class, "items.116.json"); - } else if (dataVersion >= Constants.DATA_VERSION_MC_1_15) { - url = resourceLoader.getResource(BundledBlockData.class, "items.115.json"); - } else if (dataVersion >= Constants.DATA_VERSION_MC_1_14) { - url = resourceLoader.getResource(BundledBlockData.class, "items.114.json"); - } - if (url == null) { - url = resourceLoader.getResource(BundledBlockData.class, "items.json"); - } - if (url == null) { - throw new IOException("Could not find items.json"); - } + URL url = BundledRegistries.loadRegistry("items"); LOGGER.debug("Using {} for bundled item data.", url); String data = Resources.toString(url, Charset.defaultCharset()); List entries = gson.fromJson(data, new TypeToken>() {}.getType()); diff --git a/worldedit-core/src/main/java/com/sk89q/worldedit/world/registry/BundledRegistries.java b/worldedit-core/src/main/java/com/sk89q/worldedit/world/registry/BundledRegistries.java index 9b9bd53544..0f15594647 100644 --- a/worldedit-core/src/main/java/com/sk89q/worldedit/world/registry/BundledRegistries.java +++ b/worldedit-core/src/main/java/com/sk89q/worldedit/world/registry/BundledRegistries.java @@ -19,6 +19,18 @@ package com.sk89q.worldedit.world.registry; +import com.google.common.collect.ImmutableRangeMap; +import com.google.common.collect.Range; +import com.google.common.collect.RangeMap; +import com.google.common.collect.TreeRangeMap; +import com.sk89q.worldedit.WorldEdit; +import com.sk89q.worldedit.extension.platform.Capability; +import com.sk89q.worldedit.internal.Constants; +import com.sk89q.worldedit.util.io.ResourceLoader; + +import java.io.IOException; +import java.net.URL; + /** * An implementation of {@link Registries} that converts legacy numeric IDs and * a contains a built-in block and item database. @@ -26,6 +38,36 @@ public class BundledRegistries implements Registries { private static final BundledRegistries INSTANCE = new BundledRegistries(); + + private static final RangeMap VERSION_MAP; + + static { + TreeRangeMap versionMap = TreeRangeMap.create(); + versionMap.put(Range.atLeast(Constants.DATA_VERSION_MC_1_14), "114"); + versionMap.put(Range.atLeast(Constants.DATA_VERSION_MC_1_15), "115"); + versionMap.put(Range.atLeast(Constants.DATA_VERSION_MC_1_16), "116"); + versionMap.put(Range.atLeast(Constants.DATA_VERSION_MC_1_17), "117"); + // 1.18 did have one item change, but we didn't get it. It's fine. + versionMap.put(Range.atLeast(Constants.DATA_VERSION_MC_1_19), "119"); + VERSION_MAP = ImmutableRangeMap.copyOf(versionMap); + } + + static URL loadRegistry(String name) throws IOException { + ResourceLoader resourceLoader = WorldEdit.getInstance().getPlatformManager().queryCapability(Capability.CONFIGURATION) + .getResourceLoader(); + int dataVersion = WorldEdit.getInstance().getPlatformManager().queryCapability(Capability.WORLD_EDITING) + .getDataVersion(); + String version = VERSION_MAP.get(dataVersion); + URL url = resourceLoader.getResource(BundledRegistries.class, name + "." + version + ".json"); + if (url == null) { + url = resourceLoader.getResource(BundledRegistries.class, name + ".json"); + } + if (url == null) { + throw new IOException("Could not find " + name + ".json"); + } + return url; + } + private final BundledBlockRegistry blockRegistry = new BundledBlockRegistry(); private final BundledItemRegistry itemRegistry = new BundledItemRegistry(); private final NullEntityRegistry entityRegistry = new NullEntityRegistry(); diff --git a/worldedit-core/src/main/resources/com/sk89q/worldedit/world/registry/blocks.119.json b/worldedit-core/src/main/resources/com/sk89q/worldedit/world/registry/blocks.119.json new file mode 100644 index 0000000000..688a8c97d1 --- /dev/null +++ b/worldedit-core/src/main/resources/com/sk89q/worldedit/world/registry/blocks.119.json @@ -0,0 +1 @@ +[{"id":"minecraft:acacia_button","localizedName":"Acacia Button","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":false,"opaque":false,"powerSource":true,"replacedDuringPlacement":false,"resistance":0.5,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:acacia_door","localizedName":"Acacia Door","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":false,"hardness":3.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":3.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:acacia_fence","localizedName":"Acacia Fence","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":false,"hardness":2.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":3.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:acacia_fence_gate","localizedName":"Acacia Fence Gate","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":false,"hardness":2.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":3.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:acacia_leaves","localizedName":"Acacia Leaves","material":{"burnable":true,"fragileWhenPushed":true,"fullCube":true,"hardness":0.2,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#007c00","movementBlocker":true,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.2,"slipperiness":0.6,"solid":true,"ticksRandomly":true,"toolRequired":false,"unpushable":false}},{"id":"minecraft:acacia_log","localizedName":"Acacia Log","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":true,"hardness":2.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":2.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:acacia_planks","localizedName":"Acacia Planks","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":true,"hardness":2.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":3.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:acacia_pressure_plate","localizedName":"Acacia Pressure Plate","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":false,"hardness":0.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":true,"replacedDuringPlacement":false,"resistance":0.5,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:acacia_sapling","localizedName":"Acacia Sapling","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#007c00","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.0,"slipperiness":0.6,"solid":false,"ticksRandomly":true,"toolRequired":false,"unpushable":false}},{"id":"minecraft:acacia_sign","localizedName":"Acacia Sign","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":false,"hardness":1.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":1.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:acacia_slab","localizedName":"Acacia Slab","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":false,"hardness":2.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":3.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:acacia_stairs","localizedName":"Acacia Stairs","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":true,"hardness":2.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":3.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:acacia_trapdoor","localizedName":"Acacia Trapdoor","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":false,"hardness":3.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":3.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:acacia_wall_sign","localizedName":"Acacia Sign","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":false,"hardness":1.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":1.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:acacia_wood","localizedName":"Acacia Wood","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":true,"hardness":2.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":2.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:activator_rail","localizedName":"Activator Rail","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0.7,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.7,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:air","localizedName":"Air","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":0.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":true,"resistance":0.0,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:allium","localizedName":"Allium","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#007c00","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.0,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:amethyst_block","localizedName":"Block of Amethyst","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":1.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#7f3fb2","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":1.5,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:amethyst_cluster","localizedName":"Amethyst Cluster","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":1.5,"hasContainer":false,"lightValue":5,"liquid":false,"mapColor":"#7f3fb2","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":1.5,"slipperiness":0.6,"solid":true,"ticksRandomly":true,"toolRequired":false,"unpushable":false}},{"id":"minecraft:ancient_debris","localizedName":"Ancient Debris","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":30.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#a7a7a7","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":1200.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:andesite","localizedName":"Andesite","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":1.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:andesite_slab","localizedName":"Andesite Slab","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":1.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:andesite_stairs","localizedName":"Andesite Stairs","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":1.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:andesite_wall","localizedName":"Andesite Wall","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":1.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:anvil","localizedName":"Anvil","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":5.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#a7a7a7","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":1200.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":true}},{"id":"minecraft:attached_melon_stem","localizedName":"Attached Melon Stem","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#007c00","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.0,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:attached_pumpkin_stem","localizedName":"Attached Pumpkin Stem","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#007c00","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.0,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:azalea","localizedName":"Azalea","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":true,"hardness":0.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#007c00","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.0,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:azalea_leaves","localizedName":"Azalea Leaves","material":{"burnable":true,"fragileWhenPushed":true,"fullCube":true,"hardness":0.2,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#007c00","movementBlocker":true,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.2,"slipperiness":0.6,"solid":true,"ticksRandomly":true,"toolRequired":false,"unpushable":false}},{"id":"minecraft:azure_bluet","localizedName":"Azure Bluet","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#007c00","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.0,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:bamboo","localizedName":"Bamboo","material":{"burnable":true,"fragileWhenPushed":true,"fullCube":false,"hardness":1.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":1.0,"slipperiness":0.6,"solid":true,"ticksRandomly":true,"toolRequired":false,"unpushable":false}},{"id":"minecraft:bamboo_sapling","localizedName":"Bamboo Shoot","material":{"burnable":true,"fragileWhenPushed":true,"fullCube":false,"hardness":1.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":false,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":1.0,"slipperiness":0.6,"solid":true,"ticksRandomly":true,"toolRequired":false,"unpushable":false}},{"id":"minecraft:barrel","localizedName":"Barrel","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":true,"hardness":2.5,"hasContainer":true,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":2.5,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:barrier","localizedName":"Barrier","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":-1.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":3600000.8,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":true}},{"id":"minecraft:basalt","localizedName":"Basalt","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":1.25,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":4.2,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:beacon","localizedName":"Beacon","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":3.0,"hasContainer":false,"lightValue":15,"liquid":false,"mapColor":"#000000","movementBlocker":true,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":3.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:bedrock","localizedName":"Bedrock","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":-1.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":3600000.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:bee_nest","localizedName":"Bee Nest","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":true,"hardness":0.3,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.3,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:beehive","localizedName":"Beehive","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":true,"hardness":0.6,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.6,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:beetroots","localizedName":"Beetroots","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#007c00","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.0,"slipperiness":0.6,"solid":false,"ticksRandomly":true,"toolRequired":false,"unpushable":false}},{"id":"minecraft:bell","localizedName":"Bell","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":5.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#a7a7a7","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":5.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:big_dripleaf","localizedName":"Big Dripleaf","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0.1,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#007c00","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.1,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:big_dripleaf_stem","localizedName":"Big Dripleaf Stem","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0.1,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#007c00","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.1,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:birch_button","localizedName":"Birch Button","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":false,"opaque":false,"powerSource":true,"replacedDuringPlacement":false,"resistance":0.5,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:birch_door","localizedName":"Birch Door","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":false,"hardness":3.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":3.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:birch_fence","localizedName":"Birch Fence","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":false,"hardness":2.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":3.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:birch_fence_gate","localizedName":"Birch Fence Gate","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":false,"hardness":2.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":3.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:birch_leaves","localizedName":"Birch Leaves","material":{"burnable":true,"fragileWhenPushed":true,"fullCube":true,"hardness":0.2,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#007c00","movementBlocker":true,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.2,"slipperiness":0.6,"solid":true,"ticksRandomly":true,"toolRequired":false,"unpushable":false}},{"id":"minecraft:birch_log","localizedName":"Birch Log","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":true,"hardness":2.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":2.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:birch_planks","localizedName":"Birch Planks","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":true,"hardness":2.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":3.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:birch_pressure_plate","localizedName":"Birch Pressure Plate","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":false,"hardness":0.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":true,"replacedDuringPlacement":false,"resistance":0.5,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:birch_sapling","localizedName":"Birch Sapling","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#007c00","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.0,"slipperiness":0.6,"solid":false,"ticksRandomly":true,"toolRequired":false,"unpushable":false}},{"id":"minecraft:birch_sign","localizedName":"Birch Sign","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":false,"hardness":1.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":1.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:birch_slab","localizedName":"Birch Slab","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":false,"hardness":2.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":3.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:birch_stairs","localizedName":"Birch Stairs","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":true,"hardness":2.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":3.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:birch_trapdoor","localizedName":"Birch Trapdoor","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":false,"hardness":3.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":3.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:birch_wall_sign","localizedName":"Birch Sign","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":false,"hardness":1.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":1.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:birch_wood","localizedName":"Birch Wood","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":true,"hardness":2.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":2.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:black_banner","localizedName":"Black Banner","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":false,"hardness":1.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":1.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:black_bed","localizedName":"Black Bed","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":false,"hardness":0.2,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#c7c7c7","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.2,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:black_candle","localizedName":"Black Candle","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0.1,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.1,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:black_candle_cake","localizedName":"Cake with Black Candle","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.5,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:black_carpet","localizedName":"Black Carpet","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":false,"hardness":0.1,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#c7c7c7","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.1,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:black_concrete","localizedName":"Black Concrete","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":1.8,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":1.8,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:black_concrete_powder","localizedName":"Black Concrete Powder","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":0.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#f7e9a3","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.5,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:black_glazed_terracotta","localizedName":"Black Glazed Terracotta","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":1.4,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":1.4,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:black_shulker_box","localizedName":"Black Shulker Box","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":2.0,"hasContainer":true,"lightValue":0,"liquid":false,"mapColor":"#7f3fb2","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":2.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:black_stained_glass","localizedName":"Black Stained Glass","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":0.3,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":true,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.3,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:black_stained_glass_pane","localizedName":"Black Stained Glass Pane","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":0.3,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":true,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.3,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:black_terracotta","localizedName":"Black Terracotta","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":1.25,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":4.2,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:black_wall_banner","localizedName":"Black Banner","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":false,"hardness":1.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":1.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:black_wool","localizedName":"Black Wool","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":true,"hardness":0.8,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#c7c7c7","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.8,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:blackstone","localizedName":"Blackstone","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":1.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:blackstone_slab","localizedName":"Blackstone Slab","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":2.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:blackstone_stairs","localizedName":"Blackstone Stairs","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":1.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:blackstone_wall","localizedName":"Blackstone Wall","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":1.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:blast_furnace","localizedName":"Blast Furnace","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":3.5,"hasContainer":true,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":3.5,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:blue_banner","localizedName":"Blue Banner","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":false,"hardness":1.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":1.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:blue_bed","localizedName":"Blue Bed","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":false,"hardness":0.2,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#c7c7c7","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.2,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:blue_candle","localizedName":"Blue Candle","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0.1,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.1,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:blue_candle_cake","localizedName":"Cake with Blue Candle","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.5,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:blue_carpet","localizedName":"Blue Carpet","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":false,"hardness":0.1,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#c7c7c7","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.1,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:blue_concrete","localizedName":"Blue Concrete","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":1.8,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":1.8,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:blue_concrete_powder","localizedName":"Blue Concrete Powder","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":0.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#f7e9a3","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.5,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:blue_glazed_terracotta","localizedName":"Blue Glazed Terracotta","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":1.4,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":1.4,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:blue_ice","localizedName":"Blue Ice","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":2.8,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#a0a0ff","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":2.8,"slipperiness":0.989,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:blue_orchid","localizedName":"Blue Orchid","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#007c00","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.0,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:blue_shulker_box","localizedName":"Blue Shulker Box","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":2.0,"hasContainer":true,"lightValue":0,"liquid":false,"mapColor":"#7f3fb2","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":2.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:blue_stained_glass","localizedName":"Blue Stained Glass","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":0.3,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":true,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.3,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:blue_stained_glass_pane","localizedName":"Blue Stained Glass Pane","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":0.3,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":true,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.3,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:blue_terracotta","localizedName":"Blue Terracotta","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":1.25,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":4.2,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:blue_wall_banner","localizedName":"Blue Banner","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":false,"hardness":1.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":1.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:blue_wool","localizedName":"Blue Wool","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":true,"hardness":0.8,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#c7c7c7","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.8,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:bone_block","localizedName":"Bone Block","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":2.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":2.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:bookshelf","localizedName":"Bookshelf","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":true,"hardness":1.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":1.5,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:brain_coral","localizedName":"Brain Coral","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#4040ff","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.0,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:brain_coral_block","localizedName":"Brain Coral Block","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":1.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:brain_coral_fan","localizedName":"Brain Coral Fan","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#4040ff","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.0,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:brain_coral_wall_fan","localizedName":"Brain Coral Wall Fan","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#4040ff","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.0,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:brewing_stand","localizedName":"Brewing Stand","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":0.5,"hasContainer":true,"lightValue":1,"liquid":false,"mapColor":"#a7a7a7","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.5,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:brick_slab","localizedName":"Brick Slab","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":2.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:brick_stairs","localizedName":"Brick Stairs","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":2.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:brick_wall","localizedName":"Brick Wall","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":2.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:bricks","localizedName":"Bricks","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":2.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:brown_banner","localizedName":"Brown Banner","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":false,"hardness":1.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":1.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:brown_bed","localizedName":"Brown Bed","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":false,"hardness":0.2,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#c7c7c7","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.2,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:brown_candle","localizedName":"Brown Candle","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0.1,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.1,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:brown_candle_cake","localizedName":"Cake with Brown Candle","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.5,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:brown_carpet","localizedName":"Brown Carpet","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":false,"hardness":0.1,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#c7c7c7","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.1,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:brown_concrete","localizedName":"Brown Concrete","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":1.8,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":1.8,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:brown_concrete_powder","localizedName":"Brown Concrete Powder","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":0.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#f7e9a3","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.5,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:brown_glazed_terracotta","localizedName":"Brown Glazed Terracotta","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":1.4,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":1.4,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:brown_mushroom","localizedName":"Brown Mushroom","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0.0,"hasContainer":false,"lightValue":1,"liquid":false,"mapColor":"#007c00","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.0,"slipperiness":0.6,"solid":false,"ticksRandomly":true,"toolRequired":false,"unpushable":false}},{"id":"minecraft:brown_mushroom_block","localizedName":"Brown Mushroom Block","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":true,"hardness":0.2,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.2,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:brown_shulker_box","localizedName":"Brown Shulker Box","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":2.0,"hasContainer":true,"lightValue":0,"liquid":false,"mapColor":"#7f3fb2","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":2.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:brown_stained_glass","localizedName":"Brown Stained Glass","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":0.3,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":true,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.3,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:brown_stained_glass_pane","localizedName":"Brown Stained Glass Pane","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":0.3,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":true,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.3,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:brown_terracotta","localizedName":"Brown Terracotta","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":1.25,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":4.2,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:brown_wall_banner","localizedName":"Brown Banner","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":false,"hardness":1.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":1.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:brown_wool","localizedName":"Brown Wool","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":true,"hardness":0.8,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#c7c7c7","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.8,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:bubble_column","localizedName":"Bubble Column","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0.0,"hasContainer":false,"lightValue":0,"liquid":true,"mapColor":"#4040ff","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":true,"resistance":0.0,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:bubble_coral","localizedName":"Bubble Coral","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#4040ff","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.0,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:bubble_coral_block","localizedName":"Bubble Coral Block","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":1.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:bubble_coral_fan","localizedName":"Bubble Coral Fan","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#4040ff","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.0,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:bubble_coral_wall_fan","localizedName":"Bubble Coral Wall Fan","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#4040ff","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.0,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:budding_amethyst","localizedName":"Budding Amethyst","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":1.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#7f3fb2","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":1.5,"slipperiness":0.6,"solid":true,"ticksRandomly":true,"toolRequired":true,"unpushable":false}},{"id":"minecraft:cactus","localizedName":"Cactus","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0.4,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#007c00","movementBlocker":true,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.4,"slipperiness":0.6,"solid":true,"ticksRandomly":true,"toolRequired":false,"unpushable":false}},{"id":"minecraft:cake","localizedName":"Cake","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.5,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:calcite","localizedName":"Calcite","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":0.75,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.75,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:campfire","localizedName":"Campfire","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":false,"hardness":2.0,"hasContainer":true,"lightValue":15,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":2.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:candle","localizedName":"Candle","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0.1,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.1,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:candle_cake","localizedName":"Cake with Candle","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.5,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:carrots","localizedName":"Carrots","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#007c00","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.0,"slipperiness":0.6,"solid":false,"ticksRandomly":true,"toolRequired":false,"unpushable":false}},{"id":"minecraft:cartography_table","localizedName":"Cartography Table","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":true,"hardness":2.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":2.5,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:carved_pumpkin","localizedName":"Carved Pumpkin","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":true,"hardness":1.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#007c00","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":1.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:cauldron","localizedName":"Cauldron","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":2.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#a7a7a7","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":2.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:cave_air","localizedName":"Cave Air","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":0.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":true,"resistance":0.0,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:cave_vines","localizedName":"Cave Vines","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#007c00","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.0,"slipperiness":0.6,"solid":false,"ticksRandomly":true,"toolRequired":false,"unpushable":false}},{"id":"minecraft:cave_vines_plant","localizedName":"Cave Vines Plant","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#007c00","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.0,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:chain","localizedName":"Chain","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":5.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#a7a7a7","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:chain_command_block","localizedName":"Chain Command Block","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":-1.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#a7a7a7","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":3600000.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:chest","localizedName":"Chest","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":false,"hardness":2.5,"hasContainer":true,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":2.5,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:chipped_anvil","localizedName":"Chipped Anvil","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":5.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#a7a7a7","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":1200.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":true}},{"id":"minecraft:chiseled_deepslate","localizedName":"Chiseled Deepslate","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":3.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:chiseled_nether_bricks","localizedName":"Chiseled Nether Bricks","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":2.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:chiseled_polished_blackstone","localizedName":"Chiseled Polished Blackstone","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":1.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:chiseled_quartz_block","localizedName":"Chiseled Quartz Block","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":0.8,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.8,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:chiseled_red_sandstone","localizedName":"Chiseled Red Sandstone","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":0.8,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.8,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:chiseled_sandstone","localizedName":"Chiseled Sandstone","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":0.8,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.8,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:chiseled_stone_bricks","localizedName":"Chiseled Stone Bricks","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":1.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:chorus_flower","localizedName":"Chorus Flower","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":true,"hardness":0.4,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#007c00","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.4,"slipperiness":0.6,"solid":false,"ticksRandomly":true,"toolRequired":false,"unpushable":false}},{"id":"minecraft:chorus_plant","localizedName":"Chorus Plant","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0.4,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#007c00","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.4,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:clay","localizedName":"Clay","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":0.6,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#a4a8b8","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.6,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:coal_block","localizedName":"Block of Coal","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":5.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:coal_ore","localizedName":"Coal Ore","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":3.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":3.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:coarse_dirt","localizedName":"Coarse Dirt","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":0.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#976d4d","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.5,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:cobbled_deepslate","localizedName":"Cobbled Deepslate","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":3.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:cobbled_deepslate_slab","localizedName":"Cobbled Deepslate Slab","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":3.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:cobbled_deepslate_stairs","localizedName":"Cobbled Deepslate Stairs","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":3.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:cobbled_deepslate_wall","localizedName":"Cobbled Deepslate Wall","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":3.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:cobblestone","localizedName":"Cobblestone","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":2.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:cobblestone_slab","localizedName":"Cobblestone Slab","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":2.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:cobblestone_stairs","localizedName":"Cobblestone Stairs","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":2.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:cobblestone_wall","localizedName":"Cobblestone Wall","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":2.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:cobweb","localizedName":"Cobweb","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":4.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#c7c7c7","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":4.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:cocoa","localizedName":"Cocoa","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0.2,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#007c00","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":3.0,"slipperiness":0.6,"solid":false,"ticksRandomly":true,"toolRequired":false,"unpushable":false}},{"id":"minecraft:command_block","localizedName":"Command Block","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":-1.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#a7a7a7","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":3600000.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:comparator","localizedName":"Redstone Comparator","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":false,"opaque":false,"powerSource":true,"replacedDuringPlacement":false,"resistance":0.0,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:composter","localizedName":"Composter","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":true,"hardness":0.6,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.6,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:conduit","localizedName":"Conduit","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":3.0,"hasContainer":false,"lightValue":15,"liquid":false,"mapColor":"#000000","movementBlocker":true,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":3.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:copper_block","localizedName":"Block of Copper","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":3.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#a7a7a7","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6.0,"slipperiness":0.6,"solid":true,"ticksRandomly":true,"toolRequired":true,"unpushable":false}},{"id":"minecraft:copper_ore","localizedName":"Copper Ore","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":3.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":3.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:cornflower","localizedName":"Cornflower","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#007c00","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.0,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:cracked_deepslate_bricks","localizedName":"Cracked Deepslate Bricks","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":3.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:cracked_deepslate_tiles","localizedName":"Cracked Deepslate Tiles","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":3.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:cracked_nether_bricks","localizedName":"Cracked Nether Bricks","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":2.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:cracked_polished_blackstone_bricks","localizedName":"Cracked Polished Blackstone Bricks","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":1.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:cracked_stone_bricks","localizedName":"Cracked Stone Bricks","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":1.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:crafting_table","localizedName":"Crafting Table","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":true,"hardness":2.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":2.5,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:creeper_head","localizedName":"Creeper Head","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":1.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":1.0,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:creeper_wall_head","localizedName":"Creeper Head","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":1.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":1.0,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:crimson_button","localizedName":"Crimson Button","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":false,"opaque":false,"powerSource":true,"replacedDuringPlacement":false,"resistance":0.5,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:crimson_door","localizedName":"Crimson Door","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":3.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":3.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:crimson_fence","localizedName":"Crimson Fence","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":2.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":3.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:crimson_fence_gate","localizedName":"Crimson Fence Gate","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":2.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":3.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:crimson_fungus","localizedName":"Crimson Fungus","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#007c00","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.0,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:crimson_hyphae","localizedName":"Crimson Hyphae","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":2.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":2.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:crimson_nylium","localizedName":"Crimson Nylium","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":0.4,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.4,"slipperiness":0.6,"solid":true,"ticksRandomly":true,"toolRequired":true,"unpushable":false}},{"id":"minecraft:crimson_planks","localizedName":"Crimson Planks","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":2.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":3.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:crimson_pressure_plate","localizedName":"Crimson Pressure Plate","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":0.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":true,"replacedDuringPlacement":false,"resistance":0.5,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:crimson_roots","localizedName":"Crimson Roots","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#007c00","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":true,"resistance":0.0,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:crimson_sign","localizedName":"Crimson Sign","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":1.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":1.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:crimson_slab","localizedName":"Crimson Slab","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":2.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":3.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:crimson_stairs","localizedName":"Crimson Stairs","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":2.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":3.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:crimson_stem","localizedName":"Crimson Stem","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":2.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":2.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:crimson_trapdoor","localizedName":"Crimson Trapdoor","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":3.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":3.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:crimson_wall_sign","localizedName":"Crimson Sign","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":1.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":1.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:crying_obsidian","localizedName":"Crying Obsidian","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":50.0,"hasContainer":false,"lightValue":10,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":1200.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:cut_copper","localizedName":"Cut Copper","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":3.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#a7a7a7","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6.0,"slipperiness":0.6,"solid":true,"ticksRandomly":true,"toolRequired":true,"unpushable":false}},{"id":"minecraft:cut_copper_slab","localizedName":"Cut Copper Slab","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":3.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#a7a7a7","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6.0,"slipperiness":0.6,"solid":true,"ticksRandomly":true,"toolRequired":true,"unpushable":false}},{"id":"minecraft:cut_copper_stairs","localizedName":"Cut Copper Stairs","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":3.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#a7a7a7","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6.0,"slipperiness":0.6,"solid":true,"ticksRandomly":true,"toolRequired":true,"unpushable":false}},{"id":"minecraft:cut_red_sandstone","localizedName":"Cut Red Sandstone","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":0.8,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.8,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:cut_red_sandstone_slab","localizedName":"Cut Red Sandstone Slab","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":2.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:cut_sandstone","localizedName":"Cut Sandstone","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":0.8,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.8,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:cut_sandstone_slab","localizedName":"Cut Sandstone Slab","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":2.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:cyan_banner","localizedName":"Cyan Banner","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":false,"hardness":1.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":1.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:cyan_bed","localizedName":"Cyan Bed","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":false,"hardness":0.2,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#c7c7c7","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.2,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:cyan_candle","localizedName":"Cyan Candle","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0.1,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.1,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:cyan_candle_cake","localizedName":"Cake with Cyan Candle","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.5,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:cyan_carpet","localizedName":"Cyan Carpet","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":false,"hardness":0.1,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#c7c7c7","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.1,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:cyan_concrete","localizedName":"Cyan Concrete","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":1.8,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":1.8,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:cyan_concrete_powder","localizedName":"Cyan Concrete Powder","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":0.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#f7e9a3","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.5,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:cyan_glazed_terracotta","localizedName":"Cyan Glazed Terracotta","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":1.4,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":1.4,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:cyan_shulker_box","localizedName":"Cyan Shulker Box","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":2.0,"hasContainer":true,"lightValue":0,"liquid":false,"mapColor":"#7f3fb2","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":2.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:cyan_stained_glass","localizedName":"Cyan Stained Glass","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":0.3,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":true,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.3,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:cyan_stained_glass_pane","localizedName":"Cyan Stained Glass Pane","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":0.3,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":true,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.3,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:cyan_terracotta","localizedName":"Cyan Terracotta","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":1.25,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":4.2,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:cyan_wall_banner","localizedName":"Cyan Banner","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":false,"hardness":1.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":1.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:cyan_wool","localizedName":"Cyan Wool","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":true,"hardness":0.8,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#c7c7c7","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.8,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:damaged_anvil","localizedName":"Damaged Anvil","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":5.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#a7a7a7","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":1200.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":true}},{"id":"minecraft:dandelion","localizedName":"Dandelion","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#007c00","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.0,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:dark_oak_button","localizedName":"Dark Oak Button","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":false,"opaque":false,"powerSource":true,"replacedDuringPlacement":false,"resistance":0.5,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:dark_oak_door","localizedName":"Dark Oak Door","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":false,"hardness":3.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":3.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:dark_oak_fence","localizedName":"Dark Oak Fence","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":false,"hardness":2.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":3.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:dark_oak_fence_gate","localizedName":"Dark Oak Fence Gate","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":false,"hardness":2.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":3.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:dark_oak_leaves","localizedName":"Dark Oak Leaves","material":{"burnable":true,"fragileWhenPushed":true,"fullCube":true,"hardness":0.2,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#007c00","movementBlocker":true,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.2,"slipperiness":0.6,"solid":true,"ticksRandomly":true,"toolRequired":false,"unpushable":false}},{"id":"minecraft:dark_oak_log","localizedName":"Dark Oak Log","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":true,"hardness":2.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":2.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:dark_oak_planks","localizedName":"Dark Oak Planks","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":true,"hardness":2.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":3.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:dark_oak_pressure_plate","localizedName":"Dark Oak Pressure Plate","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":false,"hardness":0.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":true,"replacedDuringPlacement":false,"resistance":0.5,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:dark_oak_sapling","localizedName":"Dark Oak Sapling","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#007c00","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.0,"slipperiness":0.6,"solid":false,"ticksRandomly":true,"toolRequired":false,"unpushable":false}},{"id":"minecraft:dark_oak_sign","localizedName":"Dark Oak Sign","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":false,"hardness":1.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":1.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:dark_oak_slab","localizedName":"Dark Oak Slab","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":false,"hardness":2.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":3.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:dark_oak_stairs","localizedName":"Dark Oak Stairs","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":true,"hardness":2.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":3.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:dark_oak_trapdoor","localizedName":"Dark Oak Trapdoor","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":false,"hardness":3.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":3.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:dark_oak_wall_sign","localizedName":"Dark Oak Sign","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":false,"hardness":1.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":1.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:dark_oak_wood","localizedName":"Dark Oak Wood","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":true,"hardness":2.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":2.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:dark_prismarine","localizedName":"Dark Prismarine","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":1.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:dark_prismarine_slab","localizedName":"Dark Prismarine Slab","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":1.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:dark_prismarine_stairs","localizedName":"Dark Prismarine Stairs","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":1.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:daylight_detector","localizedName":"Daylight Detector","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":false,"hardness":0.2,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":true,"replacedDuringPlacement":false,"resistance":0.2,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:dead_brain_coral","localizedName":"Dead Brain Coral","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":0.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:dead_brain_coral_block","localizedName":"Dead Brain Coral Block","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":1.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:dead_brain_coral_fan","localizedName":"Dead Brain Coral Fan","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":0.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:dead_brain_coral_wall_fan","localizedName":"Dead Brain Coral Wall Fan","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":0.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:dead_bubble_coral","localizedName":"Dead Bubble Coral","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":0.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:dead_bubble_coral_block","localizedName":"Dead Bubble Coral Block","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":1.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:dead_bubble_coral_fan","localizedName":"Dead Bubble Coral Fan","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":0.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:dead_bubble_coral_wall_fan","localizedName":"Dead Bubble Coral Wall Fan","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":0.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:dead_bush","localizedName":"Dead Bush","material":{"burnable":true,"fragileWhenPushed":true,"fullCube":false,"hardness":0.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#007c00","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":true,"resistance":0.0,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:dead_fire_coral","localizedName":"Dead Fire Coral","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":0.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:dead_fire_coral_block","localizedName":"Dead Fire Coral Block","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":1.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:dead_fire_coral_fan","localizedName":"Dead Fire Coral Fan","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":0.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:dead_fire_coral_wall_fan","localizedName":"Dead Fire Coral Wall Fan","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":0.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:dead_horn_coral","localizedName":"Dead Horn Coral","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":0.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:dead_horn_coral_block","localizedName":"Dead Horn Coral Block","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":1.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:dead_horn_coral_fan","localizedName":"Dead Horn Coral Fan","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":0.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:dead_horn_coral_wall_fan","localizedName":"Dead Horn Coral Wall Fan","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":0.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:dead_tube_coral","localizedName":"Dead Tube Coral","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":0.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:dead_tube_coral_block","localizedName":"Dead Tube Coral Block","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":1.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:dead_tube_coral_fan","localizedName":"Dead Tube Coral Fan","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":0.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:dead_tube_coral_wall_fan","localizedName":"Dead Tube Coral Wall Fan","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":0.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:deepslate","localizedName":"Deepslate","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":3.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:deepslate_brick_slab","localizedName":"Deepslate Brick Slab","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":3.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:deepslate_brick_stairs","localizedName":"Deepslate Brick Stairs","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":3.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:deepslate_brick_wall","localizedName":"Deepslate Brick Wall","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":3.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:deepslate_bricks","localizedName":"Deepslate Bricks","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":3.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:deepslate_coal_ore","localizedName":"Deepslate Coal Ore","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":4.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":3.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:deepslate_copper_ore","localizedName":"Deepslate Copper Ore","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":4.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":3.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:deepslate_diamond_ore","localizedName":"Deepslate Diamond Ore","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":4.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":3.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:deepslate_emerald_ore","localizedName":"Deepslate Emerald Ore","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":4.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":3.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:deepslate_gold_ore","localizedName":"Deepslate Gold Ore","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":4.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":3.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:deepslate_iron_ore","localizedName":"Deepslate Iron Ore","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":4.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":3.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:deepslate_lapis_ore","localizedName":"Deepslate Lapis Lazuli Ore","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":4.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":3.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:deepslate_redstone_ore","localizedName":"Deepslate Redstone Ore","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":4.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":3.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:deepslate_tile_slab","localizedName":"Deepslate Tile Slab","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":3.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:deepslate_tile_stairs","localizedName":"Deepslate Tile Stairs","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":3.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:deepslate_tile_wall","localizedName":"Deepslate Tile Wall","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":3.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:deepslate_tiles","localizedName":"Deepslate Tiles","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":3.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:detector_rail","localizedName":"Detector Rail","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0.7,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":false,"opaque":false,"powerSource":true,"replacedDuringPlacement":false,"resistance":0.7,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:diamond_block","localizedName":"Block of Diamond","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":5.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#a7a7a7","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:diamond_ore","localizedName":"Diamond Ore","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":3.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":3.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:diorite","localizedName":"Diorite","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":1.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:diorite_slab","localizedName":"Diorite Slab","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":1.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:diorite_stairs","localizedName":"Diorite Stairs","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":1.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:diorite_wall","localizedName":"Diorite Wall","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":1.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:dirt","localizedName":"Dirt","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":0.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#976d4d","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.5,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:dirt_path","localizedName":"Dirt Path","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":0.65,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#976d4d","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.65,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:dispenser","localizedName":"Dispenser","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":3.5,"hasContainer":true,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":3.5,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:dragon_egg","localizedName":"Dragon Egg","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":3.0,"hasContainer":false,"lightValue":1,"liquid":false,"mapColor":"#007c00","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":9.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:dragon_head","localizedName":"Dragon Head","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":1.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":1.0,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:dragon_wall_head","localizedName":"Dragon Head","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":1.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":1.0,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:dried_kelp_block","localizedName":"Dried Kelp Block","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":0.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#7fb238","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":2.5,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:dripstone_block","localizedName":"Dripstone Block","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":1.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":1.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:dropper","localizedName":"Dropper","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":3.5,"hasContainer":true,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":3.5,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:emerald_block","localizedName":"Block of Emerald","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":5.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#a7a7a7","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:emerald_ore","localizedName":"Emerald Ore","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":3.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":3.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:enchanting_table","localizedName":"Enchanting Table","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":5.0,"hasContainer":false,"lightValue":7,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":1200.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:end_gateway","localizedName":"End Gateway","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":-1.0,"hasContainer":false,"lightValue":15,"liquid":false,"mapColor":"#000000","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":3600000.0,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":true}},{"id":"minecraft:end_portal","localizedName":"End Portal","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":-1.0,"hasContainer":false,"lightValue":15,"liquid":false,"mapColor":"#000000","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":3600000.0,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":true}},{"id":"minecraft:end_portal_frame","localizedName":"End Portal Frame","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":-1.0,"hasContainer":false,"lightValue":1,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":3600000.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:end_rod","localizedName":"End Rod","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0.0,"hasContainer":false,"lightValue":14,"liquid":false,"mapColor":"#000000","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.0,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:end_stone","localizedName":"End Stone","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":3.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":9.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:end_stone_brick_slab","localizedName":"End Stone Brick Slab","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":3.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":9.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:end_stone_brick_stairs","localizedName":"End Stone Brick Stairs","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":3.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":9.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:end_stone_brick_wall","localizedName":"End Stone Brick Wall","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":3.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":9.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:end_stone_bricks","localizedName":"End Stone Bricks","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":3.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":9.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:ender_chest","localizedName":"Ender Chest","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":22.5,"hasContainer":false,"lightValue":7,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":600.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:exposed_copper","localizedName":"Exposed Copper","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":3.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#a7a7a7","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6.0,"slipperiness":0.6,"solid":true,"ticksRandomly":true,"toolRequired":true,"unpushable":false}},{"id":"minecraft:exposed_cut_copper","localizedName":"Exposed Cut Copper","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":3.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#a7a7a7","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6.0,"slipperiness":0.6,"solid":true,"ticksRandomly":true,"toolRequired":true,"unpushable":false}},{"id":"minecraft:exposed_cut_copper_slab","localizedName":"Exposed Cut Copper Slab","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":3.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#a7a7a7","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6.0,"slipperiness":0.6,"solid":true,"ticksRandomly":true,"toolRequired":true,"unpushable":false}},{"id":"minecraft:exposed_cut_copper_stairs","localizedName":"Exposed Cut Copper Stairs","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":3.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#a7a7a7","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6.0,"slipperiness":0.6,"solid":true,"ticksRandomly":true,"toolRequired":true,"unpushable":false}},{"id":"minecraft:farmland","localizedName":"Farmland","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":0.6,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#976d4d","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.6,"slipperiness":0.6,"solid":true,"ticksRandomly":true,"toolRequired":false,"unpushable":false}},{"id":"minecraft:fern","localizedName":"Fern","material":{"burnable":true,"fragileWhenPushed":true,"fullCube":false,"hardness":0.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#007c00","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":true,"resistance":0.0,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:fire","localizedName":"Fire","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0.0,"hasContainer":false,"lightValue":15,"liquid":false,"mapColor":"#000000","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":true,"resistance":0.0,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:fire_coral","localizedName":"Fire Coral","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#4040ff","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.0,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:fire_coral_block","localizedName":"Fire Coral Block","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":1.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:fire_coral_fan","localizedName":"Fire Coral Fan","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#4040ff","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.0,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:fire_coral_wall_fan","localizedName":"Fire Coral Wall Fan","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#4040ff","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.0,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:fletching_table","localizedName":"Fletching Table","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":true,"hardness":2.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":2.5,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:flower_pot","localizedName":"Flower Pot","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.0,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:flowering_azalea","localizedName":"Flowering Azalea","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":true,"hardness":0.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#007c00","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.0,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:flowering_azalea_leaves","localizedName":"Flowering Azalea Leaves","material":{"burnable":true,"fragileWhenPushed":true,"fullCube":true,"hardness":0.2,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#007c00","movementBlocker":true,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.2,"slipperiness":0.6,"solid":true,"ticksRandomly":true,"toolRequired":false,"unpushable":false}},{"id":"minecraft:frogspawn","localizedName":"Frogspawn","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#4040ff","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.0,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:frosted_ice","localizedName":"Frosted Ice","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":0.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#a0a0ff","movementBlocker":true,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.5,"slipperiness":0.98,"solid":true,"ticksRandomly":true,"toolRequired":false,"unpushable":false}},{"id":"minecraft:furnace","localizedName":"Furnace","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":3.5,"hasContainer":true,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":3.5,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:gilded_blackstone","localizedName":"Gilded Blackstone","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":1.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:glass","localizedName":"Glass","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":0.3,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":true,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.3,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:glass_pane","localizedName":"Glass Pane","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":0.3,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":true,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.3,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:glow_lichen","localizedName":"Glow Lichen","material":{"burnable":true,"fragileWhenPushed":true,"fullCube":false,"hardness":0.2,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#007c00","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":true,"resistance":0.2,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:glowstone","localizedName":"Glowstone","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":0.3,"hasContainer":false,"lightValue":15,"liquid":false,"mapColor":"#000000","movementBlocker":true,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.3,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:gold_block","localizedName":"Block of Gold","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":3.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#a7a7a7","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:gold_ore","localizedName":"Gold Ore","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":3.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":3.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:granite","localizedName":"Granite","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":1.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:granite_slab","localizedName":"Granite Slab","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":1.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:granite_stairs","localizedName":"Granite Stairs","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":1.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:granite_wall","localizedName":"Granite Wall","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":1.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:grass","localizedName":"Grass","material":{"burnable":true,"fragileWhenPushed":true,"fullCube":false,"hardness":0.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#007c00","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":true,"resistance":0.0,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:grass_block","localizedName":"Grass Block","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":0.6,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#7fb238","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.6,"slipperiness":0.6,"solid":true,"ticksRandomly":true,"toolRequired":false,"unpushable":false}},{"id":"minecraft:gravel","localizedName":"Gravel","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":0.6,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#f7e9a3","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.6,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:gray_banner","localizedName":"Gray Banner","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":false,"hardness":1.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":1.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:gray_bed","localizedName":"Gray Bed","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":false,"hardness":0.2,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#c7c7c7","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.2,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:gray_candle","localizedName":"Gray Candle","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0.1,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.1,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:gray_candle_cake","localizedName":"Cake with Gray Candle","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.5,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:gray_carpet","localizedName":"Gray Carpet","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":false,"hardness":0.1,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#c7c7c7","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.1,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:gray_concrete","localizedName":"Gray Concrete","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":1.8,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":1.8,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:gray_concrete_powder","localizedName":"Gray Concrete Powder","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":0.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#f7e9a3","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.5,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:gray_glazed_terracotta","localizedName":"Gray Glazed Terracotta","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":1.4,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":1.4,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:gray_shulker_box","localizedName":"Gray Shulker Box","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":2.0,"hasContainer":true,"lightValue":0,"liquid":false,"mapColor":"#7f3fb2","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":2.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:gray_stained_glass","localizedName":"Gray Stained Glass","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":0.3,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":true,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.3,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:gray_stained_glass_pane","localizedName":"Gray Stained Glass Pane","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":0.3,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":true,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.3,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:gray_terracotta","localizedName":"Gray Terracotta","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":1.25,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":4.2,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:gray_wall_banner","localizedName":"Gray Banner","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":false,"hardness":1.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":1.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:gray_wool","localizedName":"Gray Wool","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":true,"hardness":0.8,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#c7c7c7","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.8,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:green_banner","localizedName":"Green Banner","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":false,"hardness":1.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":1.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:green_bed","localizedName":"Green Bed","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":false,"hardness":0.2,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#c7c7c7","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.2,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:green_candle","localizedName":"Green Candle","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0.1,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.1,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:green_candle_cake","localizedName":"Cake with Green Candle","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.5,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:green_carpet","localizedName":"Green Carpet","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":false,"hardness":0.1,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#c7c7c7","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.1,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:green_concrete","localizedName":"Green Concrete","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":1.8,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":1.8,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:green_concrete_powder","localizedName":"Green Concrete Powder","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":0.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#f7e9a3","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.5,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:green_glazed_terracotta","localizedName":"Green Glazed Terracotta","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":1.4,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":1.4,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:green_shulker_box","localizedName":"Green Shulker Box","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":2.0,"hasContainer":true,"lightValue":0,"liquid":false,"mapColor":"#7f3fb2","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":2.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:green_stained_glass","localizedName":"Green Stained Glass","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":0.3,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":true,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.3,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:green_stained_glass_pane","localizedName":"Green Stained Glass Pane","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":0.3,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":true,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.3,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:green_terracotta","localizedName":"Green Terracotta","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":1.25,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":4.2,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:green_wall_banner","localizedName":"Green Banner","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":false,"hardness":1.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":1.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:green_wool","localizedName":"Green Wool","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":true,"hardness":0.8,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#c7c7c7","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.8,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:grindstone","localizedName":"Grindstone","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":2.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#a7a7a7","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":true}},{"id":"minecraft:hanging_roots","localizedName":"Hanging Roots","material":{"burnable":true,"fragileWhenPushed":true,"fullCube":false,"hardness":0.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#007c00","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":true,"resistance":0.0,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:hay_block","localizedName":"Hay Bale","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":0.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#7fb238","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.5,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:heavy_weighted_pressure_plate","localizedName":"Heavy Weighted Pressure Plate","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":0.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#a7a7a7","movementBlocker":true,"opaque":true,"powerSource":true,"replacedDuringPlacement":false,"resistance":0.5,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:honey_block","localizedName":"Honey Block","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":0.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#a4a8b8","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:honeycomb_block","localizedName":"Honeycomb Block","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":0.6,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#a4a8b8","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.6,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:hopper","localizedName":"Hopper","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":3.0,"hasContainer":true,"lightValue":0,"liquid":false,"mapColor":"#a7a7a7","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":4.8,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:horn_coral","localizedName":"Horn Coral","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#4040ff","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.0,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:horn_coral_block","localizedName":"Horn Coral Block","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":1.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:horn_coral_fan","localizedName":"Horn Coral Fan","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#4040ff","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.0,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:horn_coral_wall_fan","localizedName":"Horn Coral Wall Fan","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#4040ff","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.0,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:ice","localizedName":"Ice","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":0.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#a0a0ff","movementBlocker":true,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.5,"slipperiness":0.98,"solid":true,"ticksRandomly":true,"toolRequired":false,"unpushable":false}},{"id":"minecraft:infested_chiseled_stone_bricks","localizedName":"Infested Chiseled Stone Bricks","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":0.75,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#a4a8b8","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.75,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:infested_cobblestone","localizedName":"Infested Cobblestone","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":1.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#a4a8b8","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.75,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:infested_cracked_stone_bricks","localizedName":"Infested Cracked Stone Bricks","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":0.75,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#a4a8b8","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.75,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:infested_deepslate","localizedName":"Infested Deepslate","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":1.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#a4a8b8","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.75,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:infested_mossy_stone_bricks","localizedName":"Infested Mossy Stone Bricks","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":0.75,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#a4a8b8","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.75,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:infested_stone","localizedName":"Infested Stone","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":0.75,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#a4a8b8","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.75,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:infested_stone_bricks","localizedName":"Infested Stone Bricks","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":0.75,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#a4a8b8","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.75,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:iron_bars","localizedName":"Iron Bars","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":5.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#a7a7a7","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:iron_block","localizedName":"Block of Iron","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":5.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#a7a7a7","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:iron_door","localizedName":"Iron Door","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":5.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#a7a7a7","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":5.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:iron_ore","localizedName":"Iron Ore","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":3.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":3.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:iron_trapdoor","localizedName":"Iron Trapdoor","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":5.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#a7a7a7","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":5.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:jack_o_lantern","localizedName":"Jack o\u0027Lantern","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":true,"hardness":1.0,"hasContainer":false,"lightValue":15,"liquid":false,"mapColor":"#007c00","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":1.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:jigsaw","localizedName":"Jigsaw Block","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":-1.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#a7a7a7","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":3600000.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:jukebox","localizedName":"Jukebox","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":true,"hardness":2.0,"hasContainer":true,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:jungle_button","localizedName":"Jungle Button","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":false,"opaque":false,"powerSource":true,"replacedDuringPlacement":false,"resistance":0.5,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:jungle_door","localizedName":"Jungle Door","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":false,"hardness":3.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":3.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:jungle_fence","localizedName":"Jungle Fence","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":false,"hardness":2.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":3.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:jungle_fence_gate","localizedName":"Jungle Fence Gate","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":false,"hardness":2.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":3.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:jungle_leaves","localizedName":"Jungle Leaves","material":{"burnable":true,"fragileWhenPushed":true,"fullCube":true,"hardness":0.2,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#007c00","movementBlocker":true,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.2,"slipperiness":0.6,"solid":true,"ticksRandomly":true,"toolRequired":false,"unpushable":false}},{"id":"minecraft:jungle_log","localizedName":"Jungle Log","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":true,"hardness":2.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":2.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:jungle_planks","localizedName":"Jungle Planks","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":true,"hardness":2.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":3.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:jungle_pressure_plate","localizedName":"Jungle Pressure Plate","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":false,"hardness":0.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":true,"replacedDuringPlacement":false,"resistance":0.5,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:jungle_sapling","localizedName":"Jungle Sapling","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#007c00","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.0,"slipperiness":0.6,"solid":false,"ticksRandomly":true,"toolRequired":false,"unpushable":false}},{"id":"minecraft:jungle_sign","localizedName":"Jungle Sign","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":false,"hardness":1.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":1.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:jungle_slab","localizedName":"Jungle Slab","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":false,"hardness":2.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":3.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:jungle_stairs","localizedName":"Jungle Stairs","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":true,"hardness":2.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":3.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:jungle_trapdoor","localizedName":"Jungle Trapdoor","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":false,"hardness":3.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":3.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:jungle_wall_sign","localizedName":"Jungle Sign","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":false,"hardness":1.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":1.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:jungle_wood","localizedName":"Jungle Wood","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":true,"hardness":2.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":2.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:kelp","localizedName":"Kelp","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#4040ff","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.0,"slipperiness":0.6,"solid":false,"ticksRandomly":true,"toolRequired":false,"unpushable":false}},{"id":"minecraft:kelp_plant","localizedName":"Kelp Plant","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#4040ff","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.0,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:ladder","localizedName":"Ladder","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0.4,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.4,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:lantern","localizedName":"Lantern","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":3.5,"hasContainer":false,"lightValue":15,"liquid":false,"mapColor":"#a7a7a7","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":3.5,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:lapis_block","localizedName":"Block of Lapis Lazuli","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":3.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#a7a7a7","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":3.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:lapis_ore","localizedName":"Lapis Lazuli Ore","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":3.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":3.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:large_amethyst_bud","localizedName":"Large Amethyst Bud","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":1.5,"hasContainer":false,"lightValue":4,"liquid":false,"mapColor":"#7f3fb2","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":1.5,"slipperiness":0.6,"solid":true,"ticksRandomly":true,"toolRequired":false,"unpushable":false}},{"id":"minecraft:large_fern","localizedName":"Large Fern","material":{"burnable":true,"fragileWhenPushed":true,"fullCube":false,"hardness":0.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#007c00","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":true,"resistance":0.0,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:lava","localizedName":"Lava","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":100.0,"hasContainer":false,"lightValue":15,"liquid":true,"mapColor":"#ff0000","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":true,"resistance":100.0,"slipperiness":0.6,"solid":false,"ticksRandomly":true,"toolRequired":false,"unpushable":false}},{"id":"minecraft:lava_cauldron","localizedName":"Lava Cauldron","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":2.0,"hasContainer":false,"lightValue":15,"liquid":false,"mapColor":"#a7a7a7","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":2.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:lectern","localizedName":"Lectern","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":false,"hardness":2.5,"hasContainer":true,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":true,"replacedDuringPlacement":false,"resistance":2.5,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:lever","localizedName":"Lever","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":false,"opaque":false,"powerSource":true,"replacedDuringPlacement":false,"resistance":0.5,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:light","localizedName":"Light","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":-1.0,"hasContainer":false,"lightValue":15,"liquid":false,"mapColor":"#000000","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":true,"resistance":3600000.8,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:light_blue_banner","localizedName":"Light Blue Banner","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":false,"hardness":1.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":1.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:light_blue_bed","localizedName":"Light Blue Bed","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":false,"hardness":0.2,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#c7c7c7","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.2,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:light_blue_candle","localizedName":"Light Blue Candle","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0.1,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.1,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:light_blue_candle_cake","localizedName":"Cake with Light Blue Candle","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.5,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:light_blue_carpet","localizedName":"Light Blue Carpet","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":false,"hardness":0.1,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#c7c7c7","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.1,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:light_blue_concrete","localizedName":"Light Blue Concrete","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":1.8,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":1.8,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:light_blue_concrete_powder","localizedName":"Light Blue Concrete Powder","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":0.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#f7e9a3","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.5,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:light_blue_glazed_terracotta","localizedName":"Light Blue Glazed Terracotta","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":1.4,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":1.4,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:light_blue_shulker_box","localizedName":"Light Blue Shulker Box","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":2.0,"hasContainer":true,"lightValue":0,"liquid":false,"mapColor":"#7f3fb2","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":2.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:light_blue_stained_glass","localizedName":"Light Blue Stained Glass","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":0.3,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":true,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.3,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:light_blue_stained_glass_pane","localizedName":"Light Blue Stained Glass Pane","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":0.3,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":true,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.3,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:light_blue_terracotta","localizedName":"Light Blue Terracotta","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":1.25,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":4.2,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:light_blue_wall_banner","localizedName":"Light Blue Banner","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":false,"hardness":1.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":1.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:light_blue_wool","localizedName":"Light Blue Wool","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":true,"hardness":0.8,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#c7c7c7","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.8,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:light_gray_banner","localizedName":"Light Gray Banner","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":false,"hardness":1.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":1.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:light_gray_bed","localizedName":"Light Gray Bed","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":false,"hardness":0.2,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#c7c7c7","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.2,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:light_gray_candle","localizedName":"Light Gray Candle","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0.1,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.1,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:light_gray_candle_cake","localizedName":"Cake with Light Gray Candle","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.5,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:light_gray_carpet","localizedName":"Light Gray Carpet","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":false,"hardness":0.1,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#c7c7c7","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.1,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:light_gray_concrete","localizedName":"Light Gray Concrete","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":1.8,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":1.8,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:light_gray_concrete_powder","localizedName":"Light Gray Concrete Powder","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":0.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#f7e9a3","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.5,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:light_gray_glazed_terracotta","localizedName":"Light Gray Glazed Terracotta","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":1.4,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":1.4,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:light_gray_shulker_box","localizedName":"Light Gray Shulker Box","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":2.0,"hasContainer":true,"lightValue":0,"liquid":false,"mapColor":"#7f3fb2","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":2.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:light_gray_stained_glass","localizedName":"Light Gray Stained Glass","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":0.3,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":true,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.3,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:light_gray_stained_glass_pane","localizedName":"Light Gray Stained Glass Pane","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":0.3,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":true,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.3,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:light_gray_terracotta","localizedName":"Light Gray Terracotta","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":1.25,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":4.2,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:light_gray_wall_banner","localizedName":"Light Gray Banner","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":false,"hardness":1.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":1.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:light_gray_wool","localizedName":"Light Gray Wool","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":true,"hardness":0.8,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#c7c7c7","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.8,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:light_weighted_pressure_plate","localizedName":"Light Weighted Pressure Plate","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":0.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#a7a7a7","movementBlocker":true,"opaque":true,"powerSource":true,"replacedDuringPlacement":false,"resistance":0.5,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:lightning_rod","localizedName":"Lightning Rod","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":3.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#a7a7a7","movementBlocker":true,"opaque":true,"powerSource":true,"replacedDuringPlacement":false,"resistance":6.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:lilac","localizedName":"Lilac","material":{"burnable":true,"fragileWhenPushed":true,"fullCube":false,"hardness":0.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#007c00","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":true,"resistance":0.0,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:lily_of_the_valley","localizedName":"Lily of the Valley","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#007c00","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.0,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:lily_pad","localizedName":"Lily Pad","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#007c00","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.0,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:lime_banner","localizedName":"Lime Banner","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":false,"hardness":1.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":1.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:lime_bed","localizedName":"Lime Bed","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":false,"hardness":0.2,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#c7c7c7","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.2,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:lime_candle","localizedName":"Lime Candle","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0.1,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.1,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:lime_candle_cake","localizedName":"Cake with Lime Candle","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.5,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:lime_carpet","localizedName":"Lime Carpet","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":false,"hardness":0.1,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#c7c7c7","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.1,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:lime_concrete","localizedName":"Lime Concrete","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":1.8,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":1.8,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:lime_concrete_powder","localizedName":"Lime Concrete Powder","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":0.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#f7e9a3","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.5,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:lime_glazed_terracotta","localizedName":"Lime Glazed Terracotta","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":1.4,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":1.4,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:lime_shulker_box","localizedName":"Lime Shulker Box","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":2.0,"hasContainer":true,"lightValue":0,"liquid":false,"mapColor":"#7f3fb2","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":2.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:lime_stained_glass","localizedName":"Lime Stained Glass","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":0.3,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":true,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.3,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:lime_stained_glass_pane","localizedName":"Lime Stained Glass Pane","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":0.3,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":true,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.3,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:lime_terracotta","localizedName":"Lime Terracotta","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":1.25,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":4.2,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:lime_wall_banner","localizedName":"Lime Banner","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":false,"hardness":1.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":1.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:lime_wool","localizedName":"Lime Wool","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":true,"hardness":0.8,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#c7c7c7","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.8,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:lodestone","localizedName":"Lodestone","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":3.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#a7a7a7","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":3.5,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":true}},{"id":"minecraft:loom","localizedName":"Loom","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":true,"hardness":2.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":2.5,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:magenta_banner","localizedName":"Magenta Banner","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":false,"hardness":1.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":1.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:magenta_bed","localizedName":"Magenta Bed","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":false,"hardness":0.2,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#c7c7c7","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.2,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:magenta_candle","localizedName":"Magenta Candle","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0.1,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.1,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:magenta_candle_cake","localizedName":"Cake with Magenta Candle","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.5,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:magenta_carpet","localizedName":"Magenta Carpet","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":false,"hardness":0.1,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#c7c7c7","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.1,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:magenta_concrete","localizedName":"Magenta Concrete","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":1.8,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":1.8,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:magenta_concrete_powder","localizedName":"Magenta Concrete Powder","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":0.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#f7e9a3","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.5,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:magenta_glazed_terracotta","localizedName":"Magenta Glazed Terracotta","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":1.4,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":1.4,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:magenta_shulker_box","localizedName":"Magenta Shulker Box","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":2.0,"hasContainer":true,"lightValue":0,"liquid":false,"mapColor":"#7f3fb2","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":2.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:magenta_stained_glass","localizedName":"Magenta Stained Glass","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":0.3,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":true,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.3,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:magenta_stained_glass_pane","localizedName":"Magenta Stained Glass Pane","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":0.3,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":true,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.3,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:magenta_terracotta","localizedName":"Magenta Terracotta","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":1.25,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":4.2,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:magenta_wall_banner","localizedName":"Magenta Banner","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":false,"hardness":1.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":1.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:magenta_wool","localizedName":"Magenta Wool","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":true,"hardness":0.8,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#c7c7c7","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.8,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:magma_block","localizedName":"Magma Block","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":0.5,"hasContainer":false,"lightValue":3,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.5,"slipperiness":0.6,"solid":true,"ticksRandomly":true,"toolRequired":true,"unpushable":false}},{"id":"minecraft:mangrove_button","localizedName":"Mangrove Button","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":false,"opaque":false,"powerSource":true,"replacedDuringPlacement":false,"resistance":0.5,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:mangrove_door","localizedName":"Mangrove Door","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":false,"hardness":3.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":3.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:mangrove_fence","localizedName":"Mangrove Fence","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":false,"hardness":2.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":3.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:mangrove_fence_gate","localizedName":"Mangrove Fence Gate","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":false,"hardness":2.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":3.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:mangrove_leaves","localizedName":"Mangrove Leaves","material":{"burnable":true,"fragileWhenPushed":true,"fullCube":true,"hardness":0.2,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#007c00","movementBlocker":true,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.2,"slipperiness":0.6,"solid":true,"ticksRandomly":true,"toolRequired":false,"unpushable":false}},{"id":"minecraft:mangrove_log","localizedName":"Mangrove Log","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":true,"hardness":2.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":2.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:mangrove_planks","localizedName":"Mangrove Planks","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":true,"hardness":2.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":3.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:mangrove_pressure_plate","localizedName":"Mangrove Pressure Plate","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":false,"hardness":0.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":true,"replacedDuringPlacement":false,"resistance":0.5,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:mangrove_propagule","localizedName":"Mangrove Propagule","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#007c00","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.0,"slipperiness":0.6,"solid":false,"ticksRandomly":true,"toolRequired":false,"unpushable":false}},{"id":"minecraft:mangrove_roots","localizedName":"Mangrove Roots","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":true,"hardness":0.7,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.7,"slipperiness":0.6,"solid":true,"ticksRandomly":true,"toolRequired":false,"unpushable":false}},{"id":"minecraft:mangrove_sign","localizedName":"Mangrove Sign","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":false,"hardness":1.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":1.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:mangrove_slab","localizedName":"Mangrove Slab","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":false,"hardness":2.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":3.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:mangrove_stairs","localizedName":"Mangrove Stairs","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":true,"hardness":2.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":3.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:mangrove_trapdoor","localizedName":"Mangrove Trapdoor","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":false,"hardness":3.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":3.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:mangrove_wall_sign","localizedName":"Mangrove Sign","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":false,"hardness":1.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":1.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:mangrove_wood","localizedName":"Mangrove Wood","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":true,"hardness":2.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":2.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:medium_amethyst_bud","localizedName":"Medium Amethyst Bud","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":1.5,"hasContainer":false,"lightValue":2,"liquid":false,"mapColor":"#7f3fb2","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":1.5,"slipperiness":0.6,"solid":true,"ticksRandomly":true,"toolRequired":false,"unpushable":false}},{"id":"minecraft:melon","localizedName":"Melon","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":true,"hardness":1.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#007c00","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":1.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:melon_stem","localizedName":"Melon Stem","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#007c00","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.0,"slipperiness":0.6,"solid":false,"ticksRandomly":true,"toolRequired":false,"unpushable":false}},{"id":"minecraft:moss_block","localizedName":"Moss Block","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":true,"hardness":0.1,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#007c00","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.1,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:moss_carpet","localizedName":"Moss Carpet","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0.1,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#007c00","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.1,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:mossy_cobblestone","localizedName":"Mossy Cobblestone","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":2.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:mossy_cobblestone_slab","localizedName":"Mossy Cobblestone Slab","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":2.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:mossy_cobblestone_stairs","localizedName":"Mossy Cobblestone Stairs","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":2.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:mossy_cobblestone_wall","localizedName":"Mossy Cobblestone Wall","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":2.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:mossy_stone_brick_slab","localizedName":"Mossy Stone Brick Slab","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":1.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:mossy_stone_brick_stairs","localizedName":"Mossy Stone Brick Stairs","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":1.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:mossy_stone_brick_wall","localizedName":"Mossy Stone Brick Wall","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":1.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:mossy_stone_bricks","localizedName":"Mossy Stone Bricks","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":1.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:moving_piston","localizedName":"Moving Piston","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":-1.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":true}},{"id":"minecraft:mud","localizedName":"Mud","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":0.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#976d4d","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.5,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:mud_brick_slab","localizedName":"Mud Brick Slab","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":1.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":3.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:mud_brick_stairs","localizedName":"Mud Brick Stairs","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":1.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":3.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:mud_brick_wall","localizedName":"Mud Brick Wall","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":1.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":3.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:mud_bricks","localizedName":"Mud Bricks","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":1.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":3.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:muddy_mangrove_roots","localizedName":"Muddy Mangrove Roots","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":0.7,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#976d4d","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.7,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:mushroom_stem","localizedName":"Mushroom Stem","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":true,"hardness":0.2,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.2,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:mycelium","localizedName":"Mycelium","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":0.6,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#7fb238","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.6,"slipperiness":0.6,"solid":true,"ticksRandomly":true,"toolRequired":false,"unpushable":false}},{"id":"minecraft:nether_brick_fence","localizedName":"Nether Brick Fence","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":2.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:nether_brick_slab","localizedName":"Nether Brick Slab","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":2.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:nether_brick_stairs","localizedName":"Nether Brick Stairs","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":2.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:nether_brick_wall","localizedName":"Nether Brick Wall","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":2.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:nether_bricks","localizedName":"Nether Bricks","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":2.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:nether_gold_ore","localizedName":"Nether Gold Ore","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":3.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":3.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:nether_portal","localizedName":"Nether Portal","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":-1.0,"hasContainer":false,"lightValue":11,"liquid":false,"mapColor":"#000000","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.0,"slipperiness":0.6,"solid":false,"ticksRandomly":true,"toolRequired":false,"unpushable":true}},{"id":"minecraft:nether_quartz_ore","localizedName":"Nether Quartz Ore","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":3.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":3.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:nether_sprouts","localizedName":"Nether Sprouts","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#007c00","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":true,"resistance":0.0,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:nether_wart","localizedName":"Nether Wart","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#007c00","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.0,"slipperiness":0.6,"solid":false,"ticksRandomly":true,"toolRequired":false,"unpushable":false}},{"id":"minecraft:nether_wart_block","localizedName":"Nether Wart Block","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":1.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#7fb238","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":1.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:netherite_block","localizedName":"Block of Netherite","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":50.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#a7a7a7","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":1200.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:netherrack","localizedName":"Netherrack","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":0.4,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.4,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:note_block","localizedName":"Note Block","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":true,"hardness":0.8,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.8,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:oak_button","localizedName":"Oak Button","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":false,"opaque":false,"powerSource":true,"replacedDuringPlacement":false,"resistance":0.5,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:oak_door","localizedName":"Oak Door","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":false,"hardness":3.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":3.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:oak_fence","localizedName":"Oak Fence","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":false,"hardness":2.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":3.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:oak_fence_gate","localizedName":"Oak Fence Gate","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":false,"hardness":2.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":3.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:oak_leaves","localizedName":"Oak Leaves","material":{"burnable":true,"fragileWhenPushed":true,"fullCube":true,"hardness":0.2,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#007c00","movementBlocker":true,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.2,"slipperiness":0.6,"solid":true,"ticksRandomly":true,"toolRequired":false,"unpushable":false}},{"id":"minecraft:oak_log","localizedName":"Oak Log","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":true,"hardness":2.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":2.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:oak_planks","localizedName":"Oak Planks","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":true,"hardness":2.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":3.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:oak_pressure_plate","localizedName":"Oak Pressure Plate","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":false,"hardness":0.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":true,"replacedDuringPlacement":false,"resistance":0.5,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:oak_sapling","localizedName":"Oak Sapling","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#007c00","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.0,"slipperiness":0.6,"solid":false,"ticksRandomly":true,"toolRequired":false,"unpushable":false}},{"id":"minecraft:oak_sign","localizedName":"Oak Sign","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":false,"hardness":1.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":1.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:oak_slab","localizedName":"Oak Slab","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":false,"hardness":2.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":3.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:oak_stairs","localizedName":"Oak Stairs","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":true,"hardness":2.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":3.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:oak_trapdoor","localizedName":"Oak Trapdoor","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":false,"hardness":3.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":3.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:oak_wall_sign","localizedName":"Oak Sign","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":false,"hardness":1.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":1.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:oak_wood","localizedName":"Oak Wood","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":true,"hardness":2.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":2.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:observer","localizedName":"Observer","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":3.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":true,"replacedDuringPlacement":false,"resistance":3.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:obsidian","localizedName":"Obsidian","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":50.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":1200.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:ochre_froglight","localizedName":"Ochre Froglight","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":0.3,"hasContainer":false,"lightValue":15,"liquid":false,"mapColor":"#000000","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.3,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:orange_banner","localizedName":"Orange Banner","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":false,"hardness":1.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":1.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:orange_bed","localizedName":"Orange Bed","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":false,"hardness":0.2,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#c7c7c7","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.2,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:orange_candle","localizedName":"Orange Candle","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0.1,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.1,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:orange_candle_cake","localizedName":"Cake with Orange Candle","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.5,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:orange_carpet","localizedName":"Orange Carpet","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":false,"hardness":0.1,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#c7c7c7","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.1,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:orange_concrete","localizedName":"Orange Concrete","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":1.8,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":1.8,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:orange_concrete_powder","localizedName":"Orange Concrete Powder","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":0.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#f7e9a3","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.5,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:orange_glazed_terracotta","localizedName":"Orange Glazed Terracotta","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":1.4,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":1.4,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:orange_shulker_box","localizedName":"Orange Shulker Box","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":2.0,"hasContainer":true,"lightValue":0,"liquid":false,"mapColor":"#7f3fb2","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":2.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:orange_stained_glass","localizedName":"Orange Stained Glass","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":0.3,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":true,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.3,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:orange_stained_glass_pane","localizedName":"Orange Stained Glass Pane","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":0.3,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":true,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.3,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:orange_terracotta","localizedName":"Orange Terracotta","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":1.25,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":4.2,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:orange_tulip","localizedName":"Orange Tulip","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#007c00","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.0,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:orange_wall_banner","localizedName":"Orange Banner","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":false,"hardness":1.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":1.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:orange_wool","localizedName":"Orange Wool","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":true,"hardness":0.8,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#c7c7c7","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.8,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:oxeye_daisy","localizedName":"Oxeye Daisy","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#007c00","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.0,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:oxidized_copper","localizedName":"Oxidized Copper","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":3.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#a7a7a7","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:oxidized_cut_copper","localizedName":"Oxidized Cut Copper","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":3.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#a7a7a7","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:oxidized_cut_copper_slab","localizedName":"Oxidized Cut Copper Slab","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":3.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#a7a7a7","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:oxidized_cut_copper_stairs","localizedName":"Oxidized Cut Copper Stairs","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":3.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#a7a7a7","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:packed_ice","localizedName":"Packed Ice","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":0.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#a0a0ff","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.5,"slipperiness":0.98,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:packed_mud","localizedName":"Packed Mud","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":1.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#976d4d","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":3.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:pearlescent_froglight","localizedName":"Pearlescent Froglight","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":0.3,"hasContainer":false,"lightValue":15,"liquid":false,"mapColor":"#000000","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.3,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:peony","localizedName":"Peony","material":{"burnable":true,"fragileWhenPushed":true,"fullCube":false,"hardness":0.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#007c00","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":true,"resistance":0.0,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:petrified_oak_slab","localizedName":"Petrified Oak Slab","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":2.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:pink_banner","localizedName":"Pink Banner","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":false,"hardness":1.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":1.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:pink_bed","localizedName":"Pink Bed","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":false,"hardness":0.2,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#c7c7c7","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.2,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:pink_candle","localizedName":"Pink Candle","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0.1,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.1,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:pink_candle_cake","localizedName":"Cake with Pink Candle","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.5,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:pink_carpet","localizedName":"Pink Carpet","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":false,"hardness":0.1,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#c7c7c7","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.1,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:pink_concrete","localizedName":"Pink Concrete","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":1.8,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":1.8,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:pink_concrete_powder","localizedName":"Pink Concrete Powder","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":0.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#f7e9a3","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.5,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:pink_glazed_terracotta","localizedName":"Pink Glazed Terracotta","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":1.4,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":1.4,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:pink_shulker_box","localizedName":"Pink Shulker Box","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":2.0,"hasContainer":true,"lightValue":0,"liquid":false,"mapColor":"#7f3fb2","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":2.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:pink_stained_glass","localizedName":"Pink Stained Glass","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":0.3,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":true,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.3,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:pink_stained_glass_pane","localizedName":"Pink Stained Glass Pane","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":0.3,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":true,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.3,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:pink_terracotta","localizedName":"Pink Terracotta","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":1.25,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":4.2,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:pink_tulip","localizedName":"Pink Tulip","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#007c00","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.0,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:pink_wall_banner","localizedName":"Pink Banner","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":false,"hardness":1.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":1.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:pink_wool","localizedName":"Pink Wool","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":true,"hardness":0.8,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#c7c7c7","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.8,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:piston","localizedName":"Piston","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":1.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":1.5,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":true}},{"id":"minecraft:piston_head","localizedName":"Piston Head","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":1.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":1.5,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":true}},{"id":"minecraft:player_head","localizedName":"Player Head","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":1.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":1.0,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:player_wall_head","localizedName":"Player Head","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":1.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":1.0,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:podzol","localizedName":"Podzol","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":0.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#976d4d","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.5,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:pointed_dripstone","localizedName":"Pointed Dripstone","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":1.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":3.0,"slipperiness":0.6,"solid":true,"ticksRandomly":true,"toolRequired":false,"unpushable":false}},{"id":"minecraft:polished_andesite","localizedName":"Polished Andesite","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":1.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:polished_andesite_slab","localizedName":"Polished Andesite Slab","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":1.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:polished_andesite_stairs","localizedName":"Polished Andesite Stairs","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":1.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:polished_basalt","localizedName":"Polished Basalt","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":1.25,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":4.2,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:polished_blackstone","localizedName":"Polished Blackstone","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":2.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:polished_blackstone_brick_slab","localizedName":"Polished Blackstone Brick Slab","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":2.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:polished_blackstone_brick_stairs","localizedName":"Polished Blackstone Brick Stairs","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":1.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:polished_blackstone_brick_wall","localizedName":"Polished Blackstone Brick Wall","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":1.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:polished_blackstone_bricks","localizedName":"Polished Blackstone Bricks","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":1.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:polished_blackstone_button","localizedName":"Polished Blackstone Button","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":false,"opaque":false,"powerSource":true,"replacedDuringPlacement":false,"resistance":0.5,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:polished_blackstone_pressure_plate","localizedName":"Polished Blackstone Pressure Plate","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":0.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":true,"replacedDuringPlacement":false,"resistance":0.5,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:polished_blackstone_slab","localizedName":"Polished Blackstone Slab","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":2.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:polished_blackstone_stairs","localizedName":"Polished Blackstone Stairs","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":2.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:polished_blackstone_wall","localizedName":"Polished Blackstone Wall","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":2.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:polished_deepslate","localizedName":"Polished Deepslate","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":3.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:polished_deepslate_slab","localizedName":"Polished Deepslate Slab","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":3.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:polished_deepslate_stairs","localizedName":"Polished Deepslate Stairs","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":3.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:polished_deepslate_wall","localizedName":"Polished Deepslate Wall","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":3.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:polished_diorite","localizedName":"Polished Diorite","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":1.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:polished_diorite_slab","localizedName":"Polished Diorite Slab","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":1.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:polished_diorite_stairs","localizedName":"Polished Diorite Stairs","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":1.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:polished_granite","localizedName":"Polished Granite","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":1.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:polished_granite_slab","localizedName":"Polished Granite Slab","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":1.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:polished_granite_stairs","localizedName":"Polished Granite Stairs","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":1.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:poppy","localizedName":"Poppy","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#007c00","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.0,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:potatoes","localizedName":"Potatoes","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#007c00","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.0,"slipperiness":0.6,"solid":false,"ticksRandomly":true,"toolRequired":false,"unpushable":false}},{"id":"minecraft:potted_acacia_sapling","localizedName":"Potted Acacia Sapling","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.0,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:potted_allium","localizedName":"Potted Allium","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.0,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:potted_azalea_bush","localizedName":"Potted Azalea","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.0,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:potted_azure_bluet","localizedName":"Potted Azure Bluet","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.0,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:potted_bamboo","localizedName":"Potted Bamboo","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.0,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:potted_birch_sapling","localizedName":"Potted Birch Sapling","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.0,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:potted_blue_orchid","localizedName":"Potted Blue Orchid","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.0,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:potted_brown_mushroom","localizedName":"Potted Brown Mushroom","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.0,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:potted_cactus","localizedName":"Potted Cactus","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.0,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:potted_cornflower","localizedName":"Potted Cornflower","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.0,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:potted_crimson_fungus","localizedName":"Potted Crimson Fungus","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.0,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:potted_crimson_roots","localizedName":"Potted Crimson Roots","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.0,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:potted_dandelion","localizedName":"Potted Dandelion","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.0,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:potted_dark_oak_sapling","localizedName":"Potted Dark Oak Sapling","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.0,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:potted_dead_bush","localizedName":"Potted Dead Bush","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.0,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:potted_fern","localizedName":"Potted Fern","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.0,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:potted_flowering_azalea_bush","localizedName":"Potted Flowering Azalea","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.0,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:potted_jungle_sapling","localizedName":"Potted Jungle Sapling","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.0,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:potted_lily_of_the_valley","localizedName":"Potted Lily of the Valley","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.0,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:potted_mangrove_propagule","localizedName":"Potted Mangrove Propagule","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.0,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:potted_oak_sapling","localizedName":"Potted Oak Sapling","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.0,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:potted_orange_tulip","localizedName":"Potted Orange Tulip","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.0,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:potted_oxeye_daisy","localizedName":"Potted Oxeye Daisy","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.0,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:potted_pink_tulip","localizedName":"Potted Pink Tulip","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.0,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:potted_poppy","localizedName":"Potted Poppy","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.0,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:potted_red_mushroom","localizedName":"Potted Red Mushroom","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.0,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:potted_red_tulip","localizedName":"Potted Red Tulip","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.0,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:potted_spruce_sapling","localizedName":"Potted Spruce Sapling","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.0,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:potted_warped_fungus","localizedName":"Potted Warped Fungus","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.0,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:potted_warped_roots","localizedName":"Potted Warped Roots","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.0,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:potted_white_tulip","localizedName":"Potted White Tulip","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.0,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:potted_wither_rose","localizedName":"Potted Wither Rose","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.0,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:powder_snow","localizedName":"Powder Snow","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":0.25,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#ffffff","movementBlocker":false,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.25,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:powder_snow_cauldron","localizedName":"Powder Snow Cauldron","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":2.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#a7a7a7","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":2.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:powered_rail","localizedName":"Powered Rail","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0.7,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.7,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:prismarine","localizedName":"Prismarine","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":1.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:prismarine_brick_slab","localizedName":"Prismarine Brick Slab","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":1.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:prismarine_brick_stairs","localizedName":"Prismarine Brick Stairs","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":1.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:prismarine_bricks","localizedName":"Prismarine Bricks","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":1.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:prismarine_slab","localizedName":"Prismarine Slab","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":1.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:prismarine_stairs","localizedName":"Prismarine Stairs","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":1.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:prismarine_wall","localizedName":"Prismarine Wall","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":1.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:pumpkin","localizedName":"Pumpkin","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":true,"hardness":1.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#007c00","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":1.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:pumpkin_stem","localizedName":"Pumpkin Stem","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#007c00","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.0,"slipperiness":0.6,"solid":false,"ticksRandomly":true,"toolRequired":false,"unpushable":false}},{"id":"minecraft:purple_banner","localizedName":"Purple Banner","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":false,"hardness":1.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":1.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:purple_bed","localizedName":"Purple Bed","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":false,"hardness":0.2,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#c7c7c7","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.2,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:purple_candle","localizedName":"Purple Candle","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0.1,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.1,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:purple_candle_cake","localizedName":"Cake with Purple Candle","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.5,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:purple_carpet","localizedName":"Purple Carpet","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":false,"hardness":0.1,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#c7c7c7","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.1,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:purple_concrete","localizedName":"Purple Concrete","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":1.8,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":1.8,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:purple_concrete_powder","localizedName":"Purple Concrete Powder","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":0.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#f7e9a3","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.5,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:purple_glazed_terracotta","localizedName":"Purple Glazed Terracotta","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":1.4,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":1.4,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:purple_shulker_box","localizedName":"Purple Shulker Box","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":2.0,"hasContainer":true,"lightValue":0,"liquid":false,"mapColor":"#7f3fb2","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":2.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:purple_stained_glass","localizedName":"Purple Stained Glass","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":0.3,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":true,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.3,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:purple_stained_glass_pane","localizedName":"Purple Stained Glass Pane","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":0.3,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":true,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.3,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:purple_terracotta","localizedName":"Purple Terracotta","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":1.25,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":4.2,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:purple_wall_banner","localizedName":"Purple Banner","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":false,"hardness":1.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":1.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:purple_wool","localizedName":"Purple Wool","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":true,"hardness":0.8,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#c7c7c7","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.8,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:purpur_block","localizedName":"Purpur Block","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":1.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:purpur_pillar","localizedName":"Purpur Pillar","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":1.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:purpur_slab","localizedName":"Purpur Slab","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":2.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:purpur_stairs","localizedName":"Purpur Stairs","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":1.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:quartz_block","localizedName":"Block of Quartz","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":0.8,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.8,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:quartz_bricks","localizedName":"Quartz Bricks","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":0.8,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.8,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:quartz_pillar","localizedName":"Quartz Pillar","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":0.8,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.8,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:quartz_slab","localizedName":"Quartz Slab","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":2.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:quartz_stairs","localizedName":"Quartz Stairs","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":0.8,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.8,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:rail","localizedName":"Rail","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0.7,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.7,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:raw_copper_block","localizedName":"Block of Raw Copper","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":5.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:raw_gold_block","localizedName":"Block of Raw Gold","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":5.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:raw_iron_block","localizedName":"Block of Raw Iron","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":5.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:red_banner","localizedName":"Red Banner","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":false,"hardness":1.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":1.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:red_bed","localizedName":"Red Bed","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":false,"hardness":0.2,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#c7c7c7","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.2,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:red_candle","localizedName":"Red Candle","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0.1,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.1,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:red_candle_cake","localizedName":"Cake with Red Candle","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.5,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:red_carpet","localizedName":"Red Carpet","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":false,"hardness":0.1,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#c7c7c7","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.1,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:red_concrete","localizedName":"Red Concrete","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":1.8,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":1.8,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:red_concrete_powder","localizedName":"Red Concrete Powder","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":0.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#f7e9a3","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.5,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:red_glazed_terracotta","localizedName":"Red Glazed Terracotta","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":1.4,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":1.4,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:red_mushroom","localizedName":"Red Mushroom","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#007c00","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.0,"slipperiness":0.6,"solid":false,"ticksRandomly":true,"toolRequired":false,"unpushable":false}},{"id":"minecraft:red_mushroom_block","localizedName":"Red Mushroom Block","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":true,"hardness":0.2,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.2,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:red_nether_brick_slab","localizedName":"Red Nether Brick Slab","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":2.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:red_nether_brick_stairs","localizedName":"Red Nether Brick Stairs","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":2.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:red_nether_brick_wall","localizedName":"Red Nether Brick Wall","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":2.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:red_nether_bricks","localizedName":"Red Nether Bricks","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":2.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:red_sand","localizedName":"Red Sand","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":0.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#f7e9a3","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.5,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:red_sandstone","localizedName":"Red Sandstone","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":0.8,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.8,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:red_sandstone_slab","localizedName":"Red Sandstone Slab","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":2.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:red_sandstone_stairs","localizedName":"Red Sandstone Stairs","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":0.8,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.8,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:red_sandstone_wall","localizedName":"Red Sandstone Wall","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":0.8,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.8,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:red_shulker_box","localizedName":"Red Shulker Box","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":2.0,"hasContainer":true,"lightValue":0,"liquid":false,"mapColor":"#7f3fb2","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":2.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:red_stained_glass","localizedName":"Red Stained Glass","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":0.3,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":true,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.3,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:red_stained_glass_pane","localizedName":"Red Stained Glass Pane","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":0.3,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":true,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.3,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:red_terracotta","localizedName":"Red Terracotta","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":1.25,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":4.2,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:red_tulip","localizedName":"Red Tulip","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#007c00","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.0,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:red_wall_banner","localizedName":"Red Banner","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":false,"hardness":1.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":1.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:red_wool","localizedName":"Red Wool","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":true,"hardness":0.8,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#c7c7c7","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.8,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:redstone_block","localizedName":"Block of Redstone","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":5.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#a7a7a7","movementBlocker":true,"opaque":true,"powerSource":true,"replacedDuringPlacement":false,"resistance":6.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:redstone_lamp","localizedName":"Redstone Lamp","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":0.3,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.3,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:redstone_ore","localizedName":"Redstone Ore","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":3.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":3.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:redstone_torch","localizedName":"Redstone Torch","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0.0,"hasContainer":false,"lightValue":7,"liquid":false,"mapColor":"#000000","movementBlocker":false,"opaque":false,"powerSource":true,"replacedDuringPlacement":false,"resistance":0.0,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:redstone_wall_torch","localizedName":"Redstone Torch","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0.0,"hasContainer":false,"lightValue":7,"liquid":false,"mapColor":"#000000","movementBlocker":false,"opaque":false,"powerSource":true,"replacedDuringPlacement":false,"resistance":0.0,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:redstone_wire","localizedName":"Redstone Wire","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":false,"opaque":false,"powerSource":true,"replacedDuringPlacement":false,"resistance":0.0,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:reinforced_deepslate","localizedName":"Reinforced Deepslate","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":55.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":1200.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:repeater","localizedName":"Redstone Repeater","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":false,"opaque":false,"powerSource":true,"replacedDuringPlacement":false,"resistance":0.0,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:repeating_command_block","localizedName":"Repeating Command Block","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":-1.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#a7a7a7","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":3600000.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:respawn_anchor","localizedName":"Respawn Anchor","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":50.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":1200.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:rooted_dirt","localizedName":"Rooted Dirt","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":0.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#976d4d","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.5,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:rose_bush","localizedName":"Rose Bush","material":{"burnable":true,"fragileWhenPushed":true,"fullCube":false,"hardness":0.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#007c00","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":true,"resistance":0.0,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:sand","localizedName":"Sand","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":0.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#f7e9a3","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.5,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:sandstone","localizedName":"Sandstone","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":0.8,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.8,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:sandstone_slab","localizedName":"Sandstone Slab","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":2.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:sandstone_stairs","localizedName":"Sandstone Stairs","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":0.8,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.8,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:sandstone_wall","localizedName":"Sandstone Wall","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":0.8,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.8,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:scaffolding","localizedName":"Scaffolding","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":true,"hardness":0.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.0,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:sculk","localizedName":"Sculk","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":0.2,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#191919","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.2,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:sculk_catalyst","localizedName":"Sculk Catalyst","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":3.0,"hasContainer":false,"lightValue":6,"liquid":false,"mapColor":"#191919","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":3.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:sculk_sensor","localizedName":"Sculk Sensor","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":1.5,"hasContainer":false,"lightValue":1,"liquid":false,"mapColor":"#191919","movementBlocker":true,"opaque":true,"powerSource":true,"replacedDuringPlacement":false,"resistance":1.5,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:sculk_shrieker","localizedName":"Sculk Shrieker","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":3.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#191919","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":3.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:sculk_vein","localizedName":"Sculk Vein","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":0.2,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#191919","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.2,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:sea_lantern","localizedName":"Sea Lantern","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":0.3,"hasContainer":false,"lightValue":15,"liquid":false,"mapColor":"#000000","movementBlocker":true,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.3,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:sea_pickle","localizedName":"Sea Pickle","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0.0,"hasContainer":false,"lightValue":6,"liquid":false,"mapColor":"#4040ff","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.0,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:seagrass","localizedName":"Seagrass","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#4040ff","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":true,"resistance":0.0,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:shroomlight","localizedName":"Shroomlight","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":1.0,"hasContainer":false,"lightValue":15,"liquid":false,"mapColor":"#7fb238","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":1.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:shulker_box","localizedName":"Shulker Box","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":2.0,"hasContainer":true,"lightValue":0,"liquid":false,"mapColor":"#7f3fb2","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":2.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:skeleton_skull","localizedName":"Skeleton Skull","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":1.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":1.0,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:skeleton_wall_skull","localizedName":"Skeleton Skull","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":1.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":1.0,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:slime_block","localizedName":"Slime Block","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":0.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#a4a8b8","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.0,"slipperiness":0.8,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:small_amethyst_bud","localizedName":"Small Amethyst Bud","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":1.5,"hasContainer":false,"lightValue":1,"liquid":false,"mapColor":"#7f3fb2","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":1.5,"slipperiness":0.6,"solid":true,"ticksRandomly":true,"toolRequired":false,"unpushable":false}},{"id":"minecraft:small_dripleaf","localizedName":"Small Dripleaf","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#007c00","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.0,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:smithing_table","localizedName":"Smithing Table","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":true,"hardness":2.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":2.5,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:smoker","localizedName":"Smoker","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":3.5,"hasContainer":true,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":3.5,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:smooth_basalt","localizedName":"Smooth Basalt","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":1.25,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":4.2,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:smooth_quartz","localizedName":"Smooth Quartz Block","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":2.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:smooth_quartz_slab","localizedName":"Smooth Quartz Slab","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":2.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:smooth_quartz_stairs","localizedName":"Smooth Quartz Stairs","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":2.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:smooth_red_sandstone","localizedName":"Smooth Red Sandstone","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":2.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:smooth_red_sandstone_slab","localizedName":"Smooth Red Sandstone Slab","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":2.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:smooth_red_sandstone_stairs","localizedName":"Smooth Red Sandstone Stairs","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":2.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:smooth_sandstone","localizedName":"Smooth Sandstone","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":2.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:smooth_sandstone_slab","localizedName":"Smooth Sandstone Slab","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":2.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:smooth_sandstone_stairs","localizedName":"Smooth Sandstone Stairs","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":2.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:smooth_stone","localizedName":"Smooth Stone","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":2.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:smooth_stone_slab","localizedName":"Smooth Stone Slab","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":2.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:snow","localizedName":"Snow","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0.1,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#ffffff","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":true,"resistance":0.1,"slipperiness":0.6,"solid":false,"ticksRandomly":true,"toolRequired":true,"unpushable":false}},{"id":"minecraft:snow_block","localizedName":"Snow Block","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":0.2,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#ffffff","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.2,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:soul_campfire","localizedName":"Soul Campfire","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":false,"hardness":2.0,"hasContainer":true,"lightValue":10,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":2.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:soul_fire","localizedName":"Soul Fire","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0.0,"hasContainer":false,"lightValue":10,"liquid":false,"mapColor":"#000000","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":true,"resistance":0.0,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:soul_lantern","localizedName":"Soul Lantern","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":3.5,"hasContainer":false,"lightValue":10,"liquid":false,"mapColor":"#a7a7a7","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":3.5,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:soul_sand","localizedName":"Soul Sand","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":0.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#f7e9a3","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.5,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:soul_soil","localizedName":"Soul Soil","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":0.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#976d4d","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.5,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:soul_torch","localizedName":"Soul Torch","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0.0,"hasContainer":false,"lightValue":10,"liquid":false,"mapColor":"#000000","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.0,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:soul_wall_torch","localizedName":"Soul Torch","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0.0,"hasContainer":false,"lightValue":10,"liquid":false,"mapColor":"#000000","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.0,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:spawner","localizedName":"Spawner","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":5.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":5.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:sponge","localizedName":"Sponge","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":0.6,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#e5e533","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.6,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:spore_blossom","localizedName":"Spore Blossom","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#007c00","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.0,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:spruce_button","localizedName":"Spruce Button","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":false,"opaque":false,"powerSource":true,"replacedDuringPlacement":false,"resistance":0.5,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:spruce_door","localizedName":"Spruce Door","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":false,"hardness":3.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":3.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:spruce_fence","localizedName":"Spruce Fence","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":false,"hardness":2.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":3.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:spruce_fence_gate","localizedName":"Spruce Fence Gate","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":false,"hardness":2.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":3.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:spruce_leaves","localizedName":"Spruce Leaves","material":{"burnable":true,"fragileWhenPushed":true,"fullCube":true,"hardness":0.2,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#007c00","movementBlocker":true,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.2,"slipperiness":0.6,"solid":true,"ticksRandomly":true,"toolRequired":false,"unpushable":false}},{"id":"minecraft:spruce_log","localizedName":"Spruce Log","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":true,"hardness":2.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":2.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:spruce_planks","localizedName":"Spruce Planks","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":true,"hardness":2.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":3.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:spruce_pressure_plate","localizedName":"Spruce Pressure Plate","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":false,"hardness":0.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":true,"replacedDuringPlacement":false,"resistance":0.5,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:spruce_sapling","localizedName":"Spruce Sapling","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#007c00","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.0,"slipperiness":0.6,"solid":false,"ticksRandomly":true,"toolRequired":false,"unpushable":false}},{"id":"minecraft:spruce_sign","localizedName":"Spruce Sign","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":false,"hardness":1.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":1.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:spruce_slab","localizedName":"Spruce Slab","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":false,"hardness":2.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":3.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:spruce_stairs","localizedName":"Spruce Stairs","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":true,"hardness":2.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":3.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:spruce_trapdoor","localizedName":"Spruce Trapdoor","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":false,"hardness":3.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":3.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:spruce_wall_sign","localizedName":"Spruce Sign","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":false,"hardness":1.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":1.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:spruce_wood","localizedName":"Spruce Wood","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":true,"hardness":2.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":2.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:sticky_piston","localizedName":"Sticky Piston","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":1.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":1.5,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":true}},{"id":"minecraft:stone","localizedName":"Stone","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":1.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:stone_brick_slab","localizedName":"Stone Brick Slab","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":2.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:stone_brick_stairs","localizedName":"Stone Brick Stairs","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":1.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:stone_brick_wall","localizedName":"Stone Brick Wall","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":1.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:stone_bricks","localizedName":"Stone Bricks","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":1.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:stone_button","localizedName":"Stone Button","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":false,"opaque":false,"powerSource":true,"replacedDuringPlacement":false,"resistance":0.5,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:stone_pressure_plate","localizedName":"Stone Pressure Plate","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":0.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":true,"replacedDuringPlacement":false,"resistance":0.5,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:stone_slab","localizedName":"Stone Slab","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":2.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:stone_stairs","localizedName":"Stone Stairs","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":1.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:stonecutter","localizedName":"Stonecutter","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":3.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":3.5,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:stripped_acacia_log","localizedName":"Stripped Acacia Log","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":true,"hardness":2.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":2.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:stripped_acacia_wood","localizedName":"Stripped Acacia Wood","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":true,"hardness":2.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":2.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:stripped_birch_log","localizedName":"Stripped Birch Log","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":true,"hardness":2.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":2.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:stripped_birch_wood","localizedName":"Stripped Birch Wood","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":true,"hardness":2.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":2.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:stripped_crimson_hyphae","localizedName":"Stripped Crimson Hyphae","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":2.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":2.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:stripped_crimson_stem","localizedName":"Stripped Crimson Stem","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":2.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":2.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:stripped_dark_oak_log","localizedName":"Stripped Dark Oak Log","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":true,"hardness":2.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":2.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:stripped_dark_oak_wood","localizedName":"Stripped Dark Oak Wood","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":true,"hardness":2.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":2.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:stripped_jungle_log","localizedName":"Stripped Jungle Log","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":true,"hardness":2.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":2.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:stripped_jungle_wood","localizedName":"Stripped Jungle Wood","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":true,"hardness":2.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":2.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:stripped_mangrove_log","localizedName":"Stripped Mangrove Log","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":true,"hardness":2.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":2.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:stripped_mangrove_wood","localizedName":"Stripped Mangrove Wood","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":true,"hardness":2.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":2.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:stripped_oak_log","localizedName":"Stripped Oak Log","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":true,"hardness":2.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":2.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:stripped_oak_wood","localizedName":"Stripped Oak Wood","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":true,"hardness":2.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":2.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:stripped_spruce_log","localizedName":"Stripped Spruce Log","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":true,"hardness":2.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":2.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:stripped_spruce_wood","localizedName":"Stripped Spruce Wood","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":true,"hardness":2.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":2.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:stripped_warped_hyphae","localizedName":"Stripped Warped Hyphae","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":2.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":2.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:stripped_warped_stem","localizedName":"Stripped Warped Stem","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":2.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":2.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:structure_block","localizedName":"Structure Block","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":-1.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#a7a7a7","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":3600000.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:structure_void","localizedName":"Structure Void","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":0.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":true,"resistance":0.0,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:sugar_cane","localizedName":"Sugar Cane","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#007c00","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.0,"slipperiness":0.6,"solid":false,"ticksRandomly":true,"toolRequired":false,"unpushable":false}},{"id":"minecraft:sunflower","localizedName":"Sunflower","material":{"burnable":true,"fragileWhenPushed":true,"fullCube":false,"hardness":0.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#007c00","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":true,"resistance":0.0,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:sweet_berry_bush","localizedName":"Sweet Berry Bush","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#007c00","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.0,"slipperiness":0.6,"solid":false,"ticksRandomly":true,"toolRequired":false,"unpushable":false}},{"id":"minecraft:tall_grass","localizedName":"Tall Grass","material":{"burnable":true,"fragileWhenPushed":true,"fullCube":false,"hardness":0.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#007c00","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":true,"resistance":0.0,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:tall_seagrass","localizedName":"Tall Seagrass","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#4040ff","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":true,"resistance":0.0,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:target","localizedName":"Target","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":0.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#7fb238","movementBlocker":true,"opaque":true,"powerSource":true,"replacedDuringPlacement":false,"resistance":0.5,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:terracotta","localizedName":"Terracotta","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":1.25,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":4.2,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:tinted_glass","localizedName":"Tinted Glass","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":0.3,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":true,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.3,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:tnt","localizedName":"TNT","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":true,"hardness":0.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#ff0000","movementBlocker":true,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:torch","localizedName":"Torch","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0.0,"hasContainer":false,"lightValue":14,"liquid":false,"mapColor":"#000000","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.0,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:trapped_chest","localizedName":"Trapped Chest","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":false,"hardness":2.5,"hasContainer":true,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":true,"replacedDuringPlacement":false,"resistance":2.5,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:tripwire","localizedName":"Tripwire","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.0,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:tripwire_hook","localizedName":"Tripwire Hook","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":false,"opaque":false,"powerSource":true,"replacedDuringPlacement":false,"resistance":0.0,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:tube_coral","localizedName":"Tube Coral","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#4040ff","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.0,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:tube_coral_block","localizedName":"Tube Coral Block","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":1.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:tube_coral_fan","localizedName":"Tube Coral Fan","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#4040ff","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.0,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:tube_coral_wall_fan","localizedName":"Tube Coral Wall Fan","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#4040ff","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.0,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:tuff","localizedName":"Tuff","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":1.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:turtle_egg","localizedName":"Turtle Egg","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#007c00","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.5,"slipperiness":0.6,"solid":true,"ticksRandomly":true,"toolRequired":false,"unpushable":false}},{"id":"minecraft:twisting_vines","localizedName":"Twisting Vines","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#007c00","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.0,"slipperiness":0.6,"solid":false,"ticksRandomly":true,"toolRequired":false,"unpushable":false}},{"id":"minecraft:twisting_vines_plant","localizedName":"Twisting Vines Plant","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#007c00","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.0,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:verdant_froglight","localizedName":"Verdant Froglight","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":0.3,"hasContainer":false,"lightValue":15,"liquid":false,"mapColor":"#000000","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.3,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:vine","localizedName":"Vines","material":{"burnable":true,"fragileWhenPushed":true,"fullCube":false,"hardness":0.2,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#007c00","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":true,"resistance":0.2,"slipperiness":0.6,"solid":false,"ticksRandomly":true,"toolRequired":false,"unpushable":false}},{"id":"minecraft:void_air","localizedName":"Void Air","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":0.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":true,"resistance":0.0,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:wall_torch","localizedName":"Torch","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0.0,"hasContainer":false,"lightValue":14,"liquid":false,"mapColor":"#000000","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.0,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:warped_button","localizedName":"Warped Button","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":false,"opaque":false,"powerSource":true,"replacedDuringPlacement":false,"resistance":0.5,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:warped_door","localizedName":"Warped Door","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":3.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":3.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:warped_fence","localizedName":"Warped Fence","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":2.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":3.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:warped_fence_gate","localizedName":"Warped Fence Gate","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":2.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":3.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:warped_fungus","localizedName":"Warped Fungus","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#007c00","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.0,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:warped_hyphae","localizedName":"Warped Hyphae","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":2.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":2.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:warped_nylium","localizedName":"Warped Nylium","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":0.4,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.4,"slipperiness":0.6,"solid":true,"ticksRandomly":true,"toolRequired":true,"unpushable":false}},{"id":"minecraft:warped_planks","localizedName":"Warped Planks","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":2.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":3.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:warped_pressure_plate","localizedName":"Warped Pressure Plate","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":0.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":true,"replacedDuringPlacement":false,"resistance":0.5,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:warped_roots","localizedName":"Warped Roots","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#007c00","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":true,"resistance":0.0,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:warped_sign","localizedName":"Warped Sign","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":1.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":1.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:warped_slab","localizedName":"Warped Slab","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":2.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":3.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:warped_stairs","localizedName":"Warped Stairs","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":2.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":3.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:warped_stem","localizedName":"Warped Stem","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":2.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":2.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:warped_trapdoor","localizedName":"Warped Trapdoor","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":3.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":3.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:warped_wall_sign","localizedName":"Warped Sign","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":1.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":1.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:warped_wart_block","localizedName":"Warped Wart Block","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":1.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#7fb238","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":1.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:water","localizedName":"Water","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":100.0,"hasContainer":false,"lightValue":0,"liquid":true,"mapColor":"#4040ff","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":true,"resistance":100.0,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:water_cauldron","localizedName":"Water Cauldron","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":2.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#a7a7a7","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":2.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:waxed_copper_block","localizedName":"Waxed Block of Copper","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":3.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#a7a7a7","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:waxed_cut_copper","localizedName":"Waxed Cut Copper","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":3.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#a7a7a7","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:waxed_cut_copper_slab","localizedName":"Waxed Cut Copper Slab","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":3.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#a7a7a7","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:waxed_cut_copper_stairs","localizedName":"Waxed Cut Copper Stairs","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":3.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#a7a7a7","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:waxed_exposed_copper","localizedName":"Waxed Exposed Copper","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":3.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#a7a7a7","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:waxed_exposed_cut_copper","localizedName":"Waxed Exposed Cut Copper","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":3.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#a7a7a7","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:waxed_exposed_cut_copper_slab","localizedName":"Waxed Exposed Cut Copper Slab","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":3.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#a7a7a7","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:waxed_exposed_cut_copper_stairs","localizedName":"Waxed Exposed Cut Copper Stairs","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":3.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#a7a7a7","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:waxed_oxidized_copper","localizedName":"Waxed Oxidized Copper","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":3.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#a7a7a7","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:waxed_oxidized_cut_copper","localizedName":"Waxed Oxidized Cut Copper","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":3.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#a7a7a7","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:waxed_oxidized_cut_copper_slab","localizedName":"Waxed Oxidized Cut Copper Slab","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":3.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#a7a7a7","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:waxed_oxidized_cut_copper_stairs","localizedName":"Waxed Oxidized Cut Copper Stairs","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":3.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#a7a7a7","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:waxed_weathered_copper","localizedName":"Waxed Weathered Copper","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":3.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#a7a7a7","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:waxed_weathered_cut_copper","localizedName":"Waxed Weathered Cut Copper","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":3.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#a7a7a7","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:waxed_weathered_cut_copper_slab","localizedName":"Waxed Weathered Cut Copper Slab","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":3.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#a7a7a7","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:waxed_weathered_cut_copper_stairs","localizedName":"Waxed Weathered Cut Copper Stairs","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":3.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#a7a7a7","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:weathered_copper","localizedName":"Weathered Copper","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":3.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#a7a7a7","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6.0,"slipperiness":0.6,"solid":true,"ticksRandomly":true,"toolRequired":true,"unpushable":false}},{"id":"minecraft:weathered_cut_copper","localizedName":"Weathered Cut Copper","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":3.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#a7a7a7","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6.0,"slipperiness":0.6,"solid":true,"ticksRandomly":true,"toolRequired":true,"unpushable":false}},{"id":"minecraft:weathered_cut_copper_slab","localizedName":"Weathered Cut Copper Slab","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":3.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#a7a7a7","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6.0,"slipperiness":0.6,"solid":true,"ticksRandomly":true,"toolRequired":true,"unpushable":false}},{"id":"minecraft:weathered_cut_copper_stairs","localizedName":"Weathered Cut Copper Stairs","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":3.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#a7a7a7","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6.0,"slipperiness":0.6,"solid":true,"ticksRandomly":true,"toolRequired":true,"unpushable":false}},{"id":"minecraft:weeping_vines","localizedName":"Weeping Vines","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#007c00","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.0,"slipperiness":0.6,"solid":false,"ticksRandomly":true,"toolRequired":false,"unpushable":false}},{"id":"minecraft:weeping_vines_plant","localizedName":"Weeping Vines Plant","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#007c00","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.0,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:wet_sponge","localizedName":"Wet Sponge","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":0.6,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#e5e533","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.6,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:wheat","localizedName":"Wheat Crops","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#007c00","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.0,"slipperiness":0.6,"solid":false,"ticksRandomly":true,"toolRequired":false,"unpushable":false}},{"id":"minecraft:white_banner","localizedName":"White Banner","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":false,"hardness":1.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":1.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:white_bed","localizedName":"White Bed","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":false,"hardness":0.2,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#c7c7c7","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.2,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:white_candle","localizedName":"White Candle","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0.1,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.1,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:white_candle_cake","localizedName":"Cake with White Candle","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.5,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:white_carpet","localizedName":"White Carpet","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":false,"hardness":0.1,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#c7c7c7","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.1,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:white_concrete","localizedName":"White Concrete","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":1.8,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":1.8,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:white_concrete_powder","localizedName":"White Concrete Powder","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":0.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#f7e9a3","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.5,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:white_glazed_terracotta","localizedName":"White Glazed Terracotta","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":1.4,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":1.4,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:white_shulker_box","localizedName":"White Shulker Box","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":2.0,"hasContainer":true,"lightValue":0,"liquid":false,"mapColor":"#7f3fb2","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":2.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:white_stained_glass","localizedName":"White Stained Glass","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":0.3,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":true,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.3,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:white_stained_glass_pane","localizedName":"White Stained Glass Pane","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":0.3,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":true,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.3,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:white_terracotta","localizedName":"White Terracotta","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":1.25,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":4.2,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:white_tulip","localizedName":"White Tulip","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#007c00","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.0,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:white_wall_banner","localizedName":"White Banner","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":false,"hardness":1.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":1.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:white_wool","localizedName":"White Wool","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":true,"hardness":0.8,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#c7c7c7","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.8,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:wither_rose","localizedName":"Wither Rose","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#007c00","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.0,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:wither_skeleton_skull","localizedName":"Wither Skeleton Skull","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":1.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":1.0,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:wither_skeleton_wall_skull","localizedName":"Wither Skeleton Skull","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":1.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":1.0,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:yellow_banner","localizedName":"Yellow Banner","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":false,"hardness":1.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":1.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:yellow_bed","localizedName":"Yellow Bed","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":false,"hardness":0.2,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#c7c7c7","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.2,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:yellow_candle","localizedName":"Yellow Candle","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0.1,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.1,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:yellow_candle_cake","localizedName":"Cake with Yellow Candle","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.5,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:yellow_carpet","localizedName":"Yellow Carpet","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":false,"hardness":0.1,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#c7c7c7","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.1,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:yellow_concrete","localizedName":"Yellow Concrete","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":1.8,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":1.8,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:yellow_concrete_powder","localizedName":"Yellow Concrete Powder","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":0.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#f7e9a3","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.5,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:yellow_glazed_terracotta","localizedName":"Yellow Glazed Terracotta","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":1.4,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":1.4,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:yellow_shulker_box","localizedName":"Yellow Shulker Box","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":2.0,"hasContainer":true,"lightValue":0,"liquid":false,"mapColor":"#7f3fb2","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":2.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:yellow_stained_glass","localizedName":"Yellow Stained Glass","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":0.3,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":true,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.3,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:yellow_stained_glass_pane","localizedName":"Yellow Stained Glass Pane","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":0.3,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":true,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.3,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:yellow_terracotta","localizedName":"Yellow Terracotta","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":1.25,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":4.2,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:yellow_wall_banner","localizedName":"Yellow Banner","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":false,"hardness":1.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":1.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:yellow_wool","localizedName":"Yellow Wool","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":true,"hardness":0.8,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#c7c7c7","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.8,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:zombie_head","localizedName":"Zombie Head","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":1.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":1.0,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:zombie_wall_head","localizedName":"Zombie Head","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":1.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":1.0,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}}] diff --git a/worldedit-core/src/main/resources/com/sk89q/worldedit/world/registry/blocks.json b/worldedit-core/src/main/resources/com/sk89q/worldedit/world/registry/blocks.json index 931919de87..bb9137e82f 100644 --- a/worldedit-core/src/main/resources/com/sk89q/worldedit/world/registry/blocks.json +++ b/worldedit-core/src/main/resources/com/sk89q/worldedit/world/registry/blocks.json @@ -1 +1 @@ -[{"id":"minecraft:acacia_button","localizedName":"Acacia Button","material":{"powerSource":true,"lightValue":0,"hardness":0.5,"resistance":0.5,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:acacia_door","localizedName":"Acacia Door","material":{"powerSource":false,"lightValue":0,"hardness":3,"resistance":3,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:acacia_fence","localizedName":"Acacia Fence","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":3,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:acacia_fence_gate","localizedName":"Acacia Fence Gate","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":3,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:acacia_leaves","localizedName":"Acacia Leaves","material":{"powerSource":false,"lightValue":0,"hardness":0.2,"resistance":0.2,"ticksRandomly":true,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#007c00","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:acacia_log","localizedName":"Acacia Log","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":2,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:acacia_planks","localizedName":"Acacia Planks","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":3,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:acacia_pressure_plate","localizedName":"Acacia Pressure Plate","material":{"powerSource":true,"lightValue":0,"hardness":0.5,"resistance":0.5,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:acacia_sapling","localizedName":"Acacia Sapling","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":true,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#007c00","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:acacia_slab","localizedName":"Acacia Slab","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":3,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:acacia_stairs","localizedName":"Acacia Stairs","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":3,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:acacia_trapdoor","localizedName":"Acacia Trapdoor","material":{"powerSource":false,"lightValue":0,"hardness":3,"resistance":3,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:acacia_wood","localizedName":"Acacia Wood","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":2,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:activator_rail","localizedName":"Activator Rail","material":{"powerSource":false,"lightValue":0,"hardness":0.7,"resistance":0.7,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:air","localizedName":"Air","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":true,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:allium","localizedName":"Allium","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#007c00","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:andesite","localizedName":"Andesite","material":{"powerSource":false,"lightValue":0,"hardness":1.5,"resistance":6,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:anvil","localizedName":"Anvil","material":{"powerSource":false,"lightValue":0,"hardness":5,"resistance":1200,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":true,"mapColor":"#a7a7a7","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:attached_melon_stem","localizedName":"Attached Melon Stem","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#007c00","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:attached_pumpkin_stem","localizedName":"Attached Pumpkin Stem","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#007c00","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:azure_bluet","localizedName":"Azure Bluet","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#007c00","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:barrier","localizedName":"Barrier","material":{"powerSource":false,"lightValue":0,"hardness":-1,"resistance":3600000.8,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":true,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:beacon","localizedName":"Beacon","material":{"powerSource":false,"lightValue":15,"hardness":3,"resistance":3,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":true}},{"id":"minecraft:bedrock","localizedName":"Bedrock","material":{"powerSource":false,"lightValue":0,"hardness":-1,"resistance":3600000,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:beetroots","localizedName":"Beetroots","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":true,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#007c00","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:birch_button","localizedName":"Birch Button","material":{"powerSource":true,"lightValue":0,"hardness":0.5,"resistance":0.5,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:birch_door","localizedName":"Birch Door","material":{"powerSource":false,"lightValue":0,"hardness":3,"resistance":3,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:birch_fence","localizedName":"Birch Fence","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":3,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:birch_fence_gate","localizedName":"Birch Fence Gate","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":3,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:birch_leaves","localizedName":"Birch Leaves","material":{"powerSource":false,"lightValue":0,"hardness":0.2,"resistance":0.2,"ticksRandomly":true,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#007c00","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:birch_log","localizedName":"Birch Log","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":2,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:birch_planks","localizedName":"Birch Planks","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":3,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:birch_pressure_plate","localizedName":"Birch Pressure Plate","material":{"powerSource":true,"lightValue":0,"hardness":0.5,"resistance":0.5,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:birch_sapling","localizedName":"Birch Sapling","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":true,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#007c00","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:birch_slab","localizedName":"Birch Slab","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":3,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:birch_stairs","localizedName":"Birch Stairs","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":3,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:birch_trapdoor","localizedName":"Birch Trapdoor","material":{"powerSource":false,"lightValue":0,"hardness":3,"resistance":3,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:birch_wood","localizedName":"Birch Wood","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":2,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:black_banner","localizedName":"Black Banner","material":{"powerSource":false,"lightValue":0,"hardness":1,"resistance":1,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":true}},{"id":"minecraft:black_bed","localizedName":"Black Bed","material":{"powerSource":false,"lightValue":0,"hardness":0.2,"resistance":0.2,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#c7c7c7","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:black_carpet","localizedName":"Black Carpet","material":{"powerSource":false,"lightValue":0,"hardness":0.1,"resistance":0.1,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":true,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#c7c7c7","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:black_concrete","localizedName":"Black Concrete","material":{"powerSource":false,"lightValue":0,"hardness":1.8,"resistance":1.8,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:black_concrete_powder","localizedName":"Black Concrete Powder","material":{"powerSource":false,"lightValue":0,"hardness":0.5,"resistance":0.5,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#f7e9a3","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:black_glazed_terracotta","localizedName":"Black Glazed Terracotta","material":{"powerSource":false,"lightValue":0,"hardness":1.4,"resistance":1.4,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:black_shulker_box","localizedName":"Black Shulker Box","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":2,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":true,"hasContainer":true}},{"id":"minecraft:black_stained_glass","localizedName":"Black Stained Glass","material":{"powerSource":false,"lightValue":0,"hardness":0.3,"resistance":0.3,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:black_stained_glass_pane","localizedName":"Black Stained Glass Pane","material":{"powerSource":false,"lightValue":0,"hardness":0.3,"resistance":0.3,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:black_terracotta","localizedName":"Black Terracotta","material":{"powerSource":false,"lightValue":0,"hardness":1.25,"resistance":4.2,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:black_wall_banner","localizedName":"Air","material":{"powerSource":false,"lightValue":0,"hardness":1,"resistance":1,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":true}},{"id":"minecraft:black_wool","localizedName":"Black Wool","material":{"powerSource":false,"lightValue":0,"hardness":0.8,"resistance":0.8,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#c7c7c7","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:blue_banner","localizedName":"Blue Banner","material":{"powerSource":false,"lightValue":0,"hardness":1,"resistance":1,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":true}},{"id":"minecraft:blue_bed","localizedName":"Blue Bed","material":{"powerSource":false,"lightValue":0,"hardness":0.2,"resistance":0.2,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#c7c7c7","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:blue_carpet","localizedName":"Blue Carpet","material":{"powerSource":false,"lightValue":0,"hardness":0.1,"resistance":0.1,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":true,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#c7c7c7","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:blue_concrete","localizedName":"Blue Concrete","material":{"powerSource":false,"lightValue":0,"hardness":1.8,"resistance":1.8,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:blue_concrete_powder","localizedName":"Blue Concrete Powder","material":{"powerSource":false,"lightValue":0,"hardness":0.5,"resistance":0.5,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#f7e9a3","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:blue_glazed_terracotta","localizedName":"Blue Glazed Terracotta","material":{"powerSource":false,"lightValue":0,"hardness":1.4,"resistance":1.4,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:blue_ice","localizedName":"Blue Ice","material":{"powerSource":false,"lightValue":0,"hardness":2.8,"resistance":2.8,"ticksRandomly":false,"fullCube":true,"slipperiness":0.989,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#a0a0ff","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:blue_orchid","localizedName":"Blue Orchid","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#007c00","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:blue_shulker_box","localizedName":"Blue Shulker Box","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":2,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":true,"hasContainer":true}},{"id":"minecraft:blue_stained_glass","localizedName":"Blue Stained Glass","material":{"powerSource":false,"lightValue":0,"hardness":0.3,"resistance":0.3,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:blue_stained_glass_pane","localizedName":"Blue Stained Glass Pane","material":{"powerSource":false,"lightValue":0,"hardness":0.3,"resistance":0.3,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:blue_terracotta","localizedName":"Blue Terracotta","material":{"powerSource":false,"lightValue":0,"hardness":1.25,"resistance":4.2,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:blue_wall_banner","localizedName":"Air","material":{"powerSource":false,"lightValue":0,"hardness":1,"resistance":1,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":true}},{"id":"minecraft:blue_wool","localizedName":"Blue Wool","material":{"powerSource":false,"lightValue":0,"hardness":0.8,"resistance":0.8,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#c7c7c7","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:bone_block","localizedName":"Bone Block","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":2,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:bookshelf","localizedName":"Bookshelf","material":{"powerSource":false,"lightValue":0,"hardness":1.5,"resistance":1.5,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:brain_coral","localizedName":"Brain Coral","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#4040ff","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:brain_coral_block","localizedName":"Brain Coral Block","material":{"powerSource":false,"lightValue":0,"hardness":1.5,"resistance":6,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:brain_coral_fan","localizedName":"Brain Coral Fan","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#4040ff","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:brain_coral_wall_fan","localizedName":"Brain Coral Wall Fan","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#4040ff","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:brewing_stand","localizedName":"Brewing Stand","material":{"powerSource":false,"lightValue":1,"hardness":0.5,"resistance":0.5,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#a7a7a7","isTranslucent":false,"hasContainer":true}},{"id":"minecraft:brick_slab","localizedName":"Brick Slab","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":6,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:brick_stairs","localizedName":"Brick Stairs","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":6,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:bricks","localizedName":"Bricks","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":6,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:brown_banner","localizedName":"Brown Banner","material":{"powerSource":false,"lightValue":0,"hardness":1,"resistance":1,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":true}},{"id":"minecraft:brown_bed","localizedName":"Brown Bed","material":{"powerSource":false,"lightValue":0,"hardness":0.2,"resistance":0.2,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#c7c7c7","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:brown_carpet","localizedName":"Brown Carpet","material":{"powerSource":false,"lightValue":0,"hardness":0.1,"resistance":0.1,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":true,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#c7c7c7","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:brown_concrete","localizedName":"Brown Concrete","material":{"powerSource":false,"lightValue":0,"hardness":1.8,"resistance":1.8,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:brown_concrete_powder","localizedName":"Brown Concrete Powder","material":{"powerSource":false,"lightValue":0,"hardness":0.5,"resistance":0.5,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#f7e9a3","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:brown_glazed_terracotta","localizedName":"Brown Glazed Terracotta","material":{"powerSource":false,"lightValue":0,"hardness":1.4,"resistance":1.4,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:brown_mushroom","localizedName":"Brown Mushroom","material":{"powerSource":false,"lightValue":1,"hardness":0,"resistance":0,"ticksRandomly":true,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#007c00","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:brown_mushroom_block","localizedName":"Brown Mushroom Block","material":{"powerSource":false,"lightValue":0,"hardness":0.2,"resistance":0.2,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:brown_shulker_box","localizedName":"Brown Shulker Box","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":2,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":true,"hasContainer":true}},{"id":"minecraft:brown_stained_glass","localizedName":"Brown Stained Glass","material":{"powerSource":false,"lightValue":0,"hardness":0.3,"resistance":0.3,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:brown_stained_glass_pane","localizedName":"Brown Stained Glass Pane","material":{"powerSource":false,"lightValue":0,"hardness":0.3,"resistance":0.3,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:brown_terracotta","localizedName":"Brown Terracotta","material":{"powerSource":false,"lightValue":0,"hardness":1.25,"resistance":4.2,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:brown_wall_banner","localizedName":"Air","material":{"powerSource":false,"lightValue":0,"hardness":1,"resistance":1,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":true}},{"id":"minecraft:brown_wool","localizedName":"Brown Wool","material":{"powerSource":false,"lightValue":0,"hardness":0.8,"resistance":0.8,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#c7c7c7","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:bubble_column","localizedName":"Bubble Column","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":true,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":true,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#4040ff","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:bubble_coral","localizedName":"Bubble Coral","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#4040ff","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:bubble_coral_block","localizedName":"Bubble Coral Block","material":{"powerSource":false,"lightValue":0,"hardness":1.5,"resistance":6,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:bubble_coral_fan","localizedName":"Bubble Coral Fan","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#4040ff","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:bubble_coral_wall_fan","localizedName":"Bubble Coral Wall Fan","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#4040ff","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:cactus","localizedName":"Cactus","material":{"powerSource":false,"lightValue":0,"hardness":0.4,"resistance":0.4,"ticksRandomly":true,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#007c00","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:cake","localizedName":"Cake","material":{"powerSource":false,"lightValue":0,"hardness":0.5,"resistance":0.5,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:carrots","localizedName":"Carrots","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":true,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#007c00","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:carved_pumpkin","localizedName":"Carved Pumpkin","material":{"powerSource":false,"lightValue":0,"hardness":1,"resistance":1,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#007c00","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:cauldron","localizedName":"Cauldron","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":2,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#a7a7a7","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:cave_air","localizedName":"Cave Air","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":true,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:chain_command_block","localizedName":"Chain Command Block","material":{"powerSource":false,"lightValue":0,"hardness":-1,"resistance":3600000,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#a7a7a7","isTranslucent":false,"hasContainer":true}},{"id":"minecraft:chest","localizedName":"Chest","material":{"powerSource":false,"lightValue":0,"hardness":2.5,"resistance":2.5,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":true}},{"id":"minecraft:chipped_anvil","localizedName":"Chipped Anvil","material":{"powerSource":false,"lightValue":0,"hardness":5,"resistance":1200,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":true,"mapColor":"#a7a7a7","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:chiseled_quartz_block","localizedName":"Chiseled Quartz Block","material":{"powerSource":false,"lightValue":0,"hardness":0.8,"resistance":0.8,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:chiseled_red_sandstone","localizedName":"Chiseled Red Sandstone","material":{"powerSource":false,"lightValue":0,"hardness":0.8,"resistance":0.8,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:chiseled_sandstone","localizedName":"Chiseled Sandstone","material":{"powerSource":false,"lightValue":0,"hardness":0.8,"resistance":0.8,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:chiseled_stone_bricks","localizedName":"Chiseled Stone Bricks","material":{"powerSource":false,"lightValue":0,"hardness":1.5,"resistance":6,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:chorus_flower","localizedName":"Chorus Flower","material":{"powerSource":false,"lightValue":0,"hardness":0.4,"resistance":0.4,"ticksRandomly":true,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#007c00","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:chorus_plant","localizedName":"Chorus Plant","material":{"powerSource":false,"lightValue":0,"hardness":0.4,"resistance":0.4,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#007c00","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:clay","localizedName":"Clay","material":{"powerSource":false,"lightValue":0,"hardness":0.6,"resistance":0.6,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#a4a8b8","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:coal_block","localizedName":"Block of Coal","material":{"powerSource":false,"lightValue":0,"hardness":5,"resistance":6,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:coal_ore","localizedName":"Coal Ore","material":{"powerSource":false,"lightValue":0,"hardness":3,"resistance":3,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:coarse_dirt","localizedName":"Coarse Dirt","material":{"powerSource":false,"lightValue":0,"hardness":0.5,"resistance":0.5,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#976d4d","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:cobblestone","localizedName":"Cobblestone","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":6,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:cobblestone_slab","localizedName":"Cobblestone Slab","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":6,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:cobblestone_stairs","localizedName":"Cobblestone Stairs","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":6,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:cobblestone_wall","localizedName":"Cobblestone Wall","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":6,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:cobweb","localizedName":"Cobweb","material":{"powerSource":false,"lightValue":0,"hardness":4,"resistance":4,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#c7c7c7","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:cocoa","localizedName":"Cocoa","material":{"powerSource":false,"lightValue":0,"hardness":0.2,"resistance":3,"ticksRandomly":true,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#007c00","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:command_block","localizedName":"Command Block","material":{"powerSource":false,"lightValue":0,"hardness":-1,"resistance":3600000,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#a7a7a7","isTranslucent":false,"hasContainer":true}},{"id":"minecraft:comparator","localizedName":"Redstone Comparator","material":{"powerSource":true,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:conduit","localizedName":"Conduit","material":{"powerSource":false,"lightValue":15,"hardness":3,"resistance":3,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":true}},{"id":"minecraft:cracked_stone_bricks","localizedName":"Cracked Stone Bricks","material":{"powerSource":false,"lightValue":0,"hardness":1.5,"resistance":6,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:crafting_table","localizedName":"Crafting Table","material":{"powerSource":false,"lightValue":0,"hardness":2.5,"resistance":2.5,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:creeper_head","localizedName":"Creeper Head","material":{"powerSource":false,"lightValue":0,"hardness":1,"resistance":1,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":true}},{"id":"minecraft:creeper_wall_head","localizedName":"Air","material":{"powerSource":false,"lightValue":0,"hardness":1,"resistance":1,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":true}},{"id":"minecraft:cut_red_sandstone","localizedName":"Cut Red Sandstone","material":{"powerSource":false,"lightValue":0,"hardness":0.8,"resistance":0.8,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:cut_sandstone","localizedName":"Cut Sandstone","material":{"powerSource":false,"lightValue":0,"hardness":0.8,"resistance":0.8,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:cyan_banner","localizedName":"Cyan Banner","material":{"powerSource":false,"lightValue":0,"hardness":1,"resistance":1,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":true}},{"id":"minecraft:cyan_bed","localizedName":"Cyan Bed","material":{"powerSource":false,"lightValue":0,"hardness":0.2,"resistance":0.2,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#c7c7c7","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:cyan_carpet","localizedName":"Cyan Carpet","material":{"powerSource":false,"lightValue":0,"hardness":0.1,"resistance":0.1,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":true,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#c7c7c7","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:cyan_concrete","localizedName":"Cyan Concrete","material":{"powerSource":false,"lightValue":0,"hardness":1.8,"resistance":1.8,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:cyan_concrete_powder","localizedName":"Cyan Concrete Powder","material":{"powerSource":false,"lightValue":0,"hardness":0.5,"resistance":0.5,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#f7e9a3","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:cyan_glazed_terracotta","localizedName":"Cyan Glazed Terracotta","material":{"powerSource":false,"lightValue":0,"hardness":1.4,"resistance":1.4,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:cyan_shulker_box","localizedName":"Cyan Shulker Box","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":2,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":true,"hasContainer":true}},{"id":"minecraft:cyan_stained_glass","localizedName":"Cyan Stained Glass","material":{"powerSource":false,"lightValue":0,"hardness":0.3,"resistance":0.3,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:cyan_stained_glass_pane","localizedName":"Cyan Stained Glass Pane","material":{"powerSource":false,"lightValue":0,"hardness":0.3,"resistance":0.3,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:cyan_terracotta","localizedName":"Cyan Terracotta","material":{"powerSource":false,"lightValue":0,"hardness":1.25,"resistance":4.2,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:cyan_wall_banner","localizedName":"Air","material":{"powerSource":false,"lightValue":0,"hardness":1,"resistance":1,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":true}},{"id":"minecraft:cyan_wool","localizedName":"Cyan Wool","material":{"powerSource":false,"lightValue":0,"hardness":0.8,"resistance":0.8,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#c7c7c7","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:damaged_anvil","localizedName":"Damaged Anvil","material":{"powerSource":false,"lightValue":0,"hardness":5,"resistance":1200,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":true,"mapColor":"#a7a7a7","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:dandelion","localizedName":"Dandelion","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#007c00","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:dark_oak_button","localizedName":"Dark Oak Button","material":{"powerSource":true,"lightValue":0,"hardness":0.5,"resistance":0.5,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:dark_oak_door","localizedName":"Dark Oak Door","material":{"powerSource":false,"lightValue":0,"hardness":3,"resistance":3,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:dark_oak_fence","localizedName":"Dark Oak Fence","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":3,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:dark_oak_fence_gate","localizedName":"Dark Oak Fence Gate","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":3,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:dark_oak_leaves","localizedName":"Dark Oak Leaves","material":{"powerSource":false,"lightValue":0,"hardness":0.2,"resistance":0.2,"ticksRandomly":true,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#007c00","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:dark_oak_log","localizedName":"Dark Oak Log","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":2,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:dark_oak_planks","localizedName":"Dark Oak Planks","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":3,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:dark_oak_pressure_plate","localizedName":"Dark Oak Pressure Plate","material":{"powerSource":true,"lightValue":0,"hardness":0.5,"resistance":0.5,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:dark_oak_sapling","localizedName":"Dark Oak Sapling","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":true,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#007c00","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:dark_oak_slab","localizedName":"Dark Oak Slab","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":3,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:dark_oak_stairs","localizedName":"Dark Oak Stairs","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":3,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:dark_oak_trapdoor","localizedName":"Dark Oak Trapdoor","material":{"powerSource":false,"lightValue":0,"hardness":3,"resistance":3,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:dark_oak_wood","localizedName":"Dark Oak Wood","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":2,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:dark_prismarine","localizedName":"Dark Prismarine","material":{"powerSource":false,"lightValue":0,"hardness":1.5,"resistance":6,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:dark_prismarine_slab","localizedName":"Dark Prismarine Slab","material":{"powerSource":false,"lightValue":0,"hardness":1.5,"resistance":6,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:dark_prismarine_stairs","localizedName":"Dark Prismarine Stairs","material":{"powerSource":false,"lightValue":0,"hardness":1.5,"resistance":6,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:daylight_detector","localizedName":"Daylight Detector","material":{"powerSource":true,"lightValue":0,"hardness":0.2,"resistance":0.2,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":true}},{"id":"minecraft:dead_brain_coral","localizedName":"Dead Brain Coral","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:dead_brain_coral_block","localizedName":"Dead Brain Coral Block","material":{"powerSource":false,"lightValue":0,"hardness":1.5,"resistance":6,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:dead_brain_coral_fan","localizedName":"Dead Brain Coral Fan","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:dead_brain_coral_wall_fan","localizedName":"Dead Brain Coral Wall Fan","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:dead_bubble_coral","localizedName":"Dead Bubble Coral","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:dead_bubble_coral_block","localizedName":"Dead Bubble Coral Block","material":{"powerSource":false,"lightValue":0,"hardness":1.5,"resistance":6,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:dead_bubble_coral_fan","localizedName":"Dead Bubble Coral Fan","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:dead_bubble_coral_wall_fan","localizedName":"Dead Bubble Coral Wall Fan","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:dead_bush","localizedName":"Dead Bush","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":true,"opaque":false,"replacedDuringPlacement":true,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#007c00","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:dead_fire_coral","localizedName":"Dead Fire Coral","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:dead_fire_coral_block","localizedName":"Dead Fire Coral Block","material":{"powerSource":false,"lightValue":0,"hardness":1.5,"resistance":6,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:dead_fire_coral_fan","localizedName":"Dead Fire Coral Fan","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:dead_fire_coral_wall_fan","localizedName":"Dead Fire Coral Wall Fan","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:dead_horn_coral","localizedName":"Dead Horn Coral","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:dead_horn_coral_block","localizedName":"Dead Horn Coral Block","material":{"powerSource":false,"lightValue":0,"hardness":1.5,"resistance":6,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:dead_horn_coral_fan","localizedName":"Dead Horn Coral Fan","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:dead_horn_coral_wall_fan","localizedName":"Dead Horn Coral Wall Fan","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:dead_tube_coral","localizedName":"Dead Tube Coral","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:dead_tube_coral_block","localizedName":"Dead Tube Coral Block","material":{"powerSource":false,"lightValue":0,"hardness":1.5,"resistance":6,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:dead_tube_coral_fan","localizedName":"Dead Tube Coral Fan","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:dead_tube_coral_wall_fan","localizedName":"Dead Tube Coral Wall Fan","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:detector_rail","localizedName":"Detector Rail","material":{"powerSource":true,"lightValue":0,"hardness":0.7,"resistance":0.7,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:diamond_block","localizedName":"Block of Diamond","material":{"powerSource":false,"lightValue":0,"hardness":5,"resistance":6,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#a7a7a7","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:diamond_ore","localizedName":"Diamond Ore","material":{"powerSource":false,"lightValue":0,"hardness":3,"resistance":3,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:diorite","localizedName":"Diorite","material":{"powerSource":false,"lightValue":0,"hardness":1.5,"resistance":6,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:dirt","localizedName":"Dirt","material":{"powerSource":false,"lightValue":0,"hardness":0.5,"resistance":0.5,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#976d4d","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:dispenser","localizedName":"Dispenser","material":{"powerSource":false,"lightValue":0,"hardness":3.5,"resistance":3.5,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":true}},{"id":"minecraft:dragon_egg","localizedName":"Dragon Egg","material":{"powerSource":false,"lightValue":1,"hardness":3,"resistance":9,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#007c00","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:dragon_head","localizedName":"Dragon Head","material":{"powerSource":false,"lightValue":0,"hardness":1,"resistance":1,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":true}},{"id":"minecraft:dragon_wall_head","localizedName":"Air","material":{"powerSource":false,"lightValue":0,"hardness":1,"resistance":1,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":true}},{"id":"minecraft:dried_kelp_block","localizedName":"Dried Kelp Block","material":{"powerSource":false,"lightValue":0,"hardness":0.5,"resistance":2.5,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#7fb238","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:dropper","localizedName":"Dropper","material":{"powerSource":false,"lightValue":0,"hardness":3.5,"resistance":3.5,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":true}},{"id":"minecraft:emerald_block","localizedName":"Block of Emerald","material":{"powerSource":false,"lightValue":0,"hardness":5,"resistance":6,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#a7a7a7","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:emerald_ore","localizedName":"Emerald Ore","material":{"powerSource":false,"lightValue":0,"hardness":3,"resistance":3,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:enchanting_table","localizedName":"Enchanting Table","material":{"powerSource":false,"lightValue":0,"hardness":5,"resistance":1200,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":true}},{"id":"minecraft:end_gateway","localizedName":"End Gateway","material":{"powerSource":false,"lightValue":15,"hardness":-1,"resistance":3600000,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":true,"mapColor":"#000000","isTranslucent":false,"hasContainer":true}},{"id":"minecraft:end_portal","localizedName":"End Portal","material":{"powerSource":false,"lightValue":15,"hardness":-1,"resistance":3600000,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":true,"mapColor":"#000000","isTranslucent":false,"hasContainer":true}},{"id":"minecraft:end_portal_frame","localizedName":"End Portal Frame","material":{"powerSource":false,"lightValue":1,"hardness":-1,"resistance":3600000,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:end_rod","localizedName":"End Rod","material":{"powerSource":false,"lightValue":14,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:end_stone","localizedName":"End Stone","material":{"powerSource":false,"lightValue":0,"hardness":3,"resistance":9,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:end_stone_bricks","localizedName":"End Stone Bricks","material":{"powerSource":false,"lightValue":0,"hardness":0.8,"resistance":0.8,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:ender_chest","localizedName":"Ender Chest","material":{"powerSource":false,"lightValue":7,"hardness":22.5,"resistance":600,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":true}},{"id":"minecraft:farmland","localizedName":"Farmland","material":{"powerSource":false,"lightValue":0,"hardness":0.6,"resistance":0.6,"ticksRandomly":true,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#976d4d","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:fern","localizedName":"Fern","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":true,"opaque":false,"replacedDuringPlacement":true,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#007c00","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:fire","localizedName":"Fire","material":{"powerSource":false,"lightValue":15,"hardness":0,"resistance":0,"ticksRandomly":true,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":true,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:fire_coral","localizedName":"Fire Coral","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#4040ff","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:fire_coral_block","localizedName":"Fire Coral Block","material":{"powerSource":false,"lightValue":0,"hardness":1.5,"resistance":6,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:fire_coral_fan","localizedName":"Fire Coral Fan","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#4040ff","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:fire_coral_wall_fan","localizedName":"Fire Coral Wall Fan","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#4040ff","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:flower_pot","localizedName":"Flower Pot","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:frosted_ice","localizedName":"Frosted Ice","material":{"powerSource":false,"lightValue":0,"hardness":0.5,"resistance":0.5,"ticksRandomly":true,"fullCube":true,"slipperiness":0.98,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#a0a0ff","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:furnace","localizedName":"Furnace","material":{"powerSource":false,"lightValue":0,"hardness":3.5,"resistance":3.5,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":true}},{"id":"minecraft:glass","localizedName":"Glass","material":{"powerSource":false,"lightValue":0,"hardness":0.3,"resistance":0.3,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:glass_pane","localizedName":"Glass Pane","material":{"powerSource":false,"lightValue":0,"hardness":0.3,"resistance":0.3,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:glowstone","localizedName":"Glowstone","material":{"powerSource":false,"lightValue":15,"hardness":0.3,"resistance":0.3,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:gold_block","localizedName":"Block of Gold","material":{"powerSource":false,"lightValue":0,"hardness":3,"resistance":6,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#a7a7a7","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:gold_ore","localizedName":"Gold Ore","material":{"powerSource":false,"lightValue":0,"hardness":3,"resistance":3,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:granite","localizedName":"Granite","material":{"powerSource":false,"lightValue":0,"hardness":1.5,"resistance":6,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:grass","localizedName":"Grass","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":true,"opaque":false,"replacedDuringPlacement":true,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#007c00","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:grass_block","localizedName":"Grass Block","material":{"powerSource":false,"lightValue":0,"hardness":0.6,"resistance":0.6,"ticksRandomly":true,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#7fb238","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:grass_path","localizedName":"Grass Path","material":{"powerSource":false,"lightValue":0,"hardness":0.65,"resistance":0.65,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#976d4d","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:gravel","localizedName":"Gravel","material":{"powerSource":false,"lightValue":0,"hardness":0.6,"resistance":0.6,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#f7e9a3","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:gray_banner","localizedName":"Gray Banner","material":{"powerSource":false,"lightValue":0,"hardness":1,"resistance":1,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":true}},{"id":"minecraft:gray_bed","localizedName":"Gray Bed","material":{"powerSource":false,"lightValue":0,"hardness":0.2,"resistance":0.2,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#c7c7c7","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:gray_carpet","localizedName":"Gray Carpet","material":{"powerSource":false,"lightValue":0,"hardness":0.1,"resistance":0.1,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":true,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#c7c7c7","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:gray_concrete","localizedName":"Gray Concrete","material":{"powerSource":false,"lightValue":0,"hardness":1.8,"resistance":1.8,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:gray_concrete_powder","localizedName":"Gray Concrete Powder","material":{"powerSource":false,"lightValue":0,"hardness":0.5,"resistance":0.5,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#f7e9a3","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:gray_glazed_terracotta","localizedName":"Gray Glazed Terracotta","material":{"powerSource":false,"lightValue":0,"hardness":1.4,"resistance":1.4,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:gray_shulker_box","localizedName":"Gray Shulker Box","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":2,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":true,"hasContainer":true}},{"id":"minecraft:gray_stained_glass","localizedName":"Gray Stained Glass","material":{"powerSource":false,"lightValue":0,"hardness":0.3,"resistance":0.3,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:gray_stained_glass_pane","localizedName":"Gray Stained Glass Pane","material":{"powerSource":false,"lightValue":0,"hardness":0.3,"resistance":0.3,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:gray_terracotta","localizedName":"Gray Terracotta","material":{"powerSource":false,"lightValue":0,"hardness":1.25,"resistance":4.2,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:gray_wall_banner","localizedName":"Air","material":{"powerSource":false,"lightValue":0,"hardness":1,"resistance":1,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":true}},{"id":"minecraft:gray_wool","localizedName":"Gray Wool","material":{"powerSource":false,"lightValue":0,"hardness":0.8,"resistance":0.8,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#c7c7c7","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:green_banner","localizedName":"Green Banner","material":{"powerSource":false,"lightValue":0,"hardness":1,"resistance":1,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":true}},{"id":"minecraft:green_bed","localizedName":"Green Bed","material":{"powerSource":false,"lightValue":0,"hardness":0.2,"resistance":0.2,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#c7c7c7","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:green_carpet","localizedName":"Green Carpet","material":{"powerSource":false,"lightValue":0,"hardness":0.1,"resistance":0.1,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":true,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#c7c7c7","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:green_concrete","localizedName":"Green Concrete","material":{"powerSource":false,"lightValue":0,"hardness":1.8,"resistance":1.8,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:green_concrete_powder","localizedName":"Green Concrete Powder","material":{"powerSource":false,"lightValue":0,"hardness":0.5,"resistance":0.5,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#f7e9a3","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:green_glazed_terracotta","localizedName":"Green Glazed Terracotta","material":{"powerSource":false,"lightValue":0,"hardness":1.4,"resistance":1.4,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:green_shulker_box","localizedName":"Green Shulker Box","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":2,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":true,"hasContainer":true}},{"id":"minecraft:green_stained_glass","localizedName":"Green Stained Glass","material":{"powerSource":false,"lightValue":0,"hardness":0.3,"resistance":0.3,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:green_stained_glass_pane","localizedName":"Green Stained Glass Pane","material":{"powerSource":false,"lightValue":0,"hardness":0.3,"resistance":0.3,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:green_terracotta","localizedName":"Green Terracotta","material":{"powerSource":false,"lightValue":0,"hardness":1.25,"resistance":4.2,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:green_wall_banner","localizedName":"Air","material":{"powerSource":false,"lightValue":0,"hardness":1,"resistance":1,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":true}},{"id":"minecraft:green_wool","localizedName":"Green Wool","material":{"powerSource":false,"lightValue":0,"hardness":0.8,"resistance":0.8,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#c7c7c7","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:hay_block","localizedName":"Hay Bale","material":{"powerSource":false,"lightValue":0,"hardness":0.5,"resistance":0.5,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#7fb238","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:heavy_weighted_pressure_plate","localizedName":"Heavy Weighted Pressure Plate","material":{"powerSource":true,"lightValue":0,"hardness":0.5,"resistance":0.5,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#a7a7a7","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:hopper","localizedName":"Hopper","material":{"powerSource":false,"lightValue":0,"hardness":3,"resistance":4.8,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#a7a7a7","isTranslucent":false,"hasContainer":true}},{"id":"minecraft:horn_coral","localizedName":"Horn Coral","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#4040ff","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:horn_coral_block","localizedName":"Horn Coral Block","material":{"powerSource":false,"lightValue":0,"hardness":1.5,"resistance":6,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:horn_coral_fan","localizedName":"Horn Coral Fan","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#4040ff","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:horn_coral_wall_fan","localizedName":"Horn Coral Wall Fan","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#4040ff","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:ice","localizedName":"Ice","material":{"powerSource":false,"lightValue":0,"hardness":0.5,"resistance":0.5,"ticksRandomly":true,"fullCube":true,"slipperiness":0.98,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#a0a0ff","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:infested_chiseled_stone_bricks","localizedName":"Infested Chiseled Stone Bricks","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0.75,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#a4a8b8","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:infested_cobblestone","localizedName":"Infested Cobblestone","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0.75,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#a4a8b8","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:infested_cracked_stone_bricks","localizedName":"Infested Cracked Stone Bricks","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0.75,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#a4a8b8","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:infested_mossy_stone_bricks","localizedName":"Infested Mossy Stone Bricks","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0.75,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#a4a8b8","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:infested_stone","localizedName":"Infested Stone","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0.75,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#a4a8b8","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:infested_stone_bricks","localizedName":"Infested Stone Bricks","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0.75,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#a4a8b8","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:iron_bars","localizedName":"Iron Bars","material":{"powerSource":false,"lightValue":0,"hardness":5,"resistance":6,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#a7a7a7","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:iron_block","localizedName":"Block of Iron","material":{"powerSource":false,"lightValue":0,"hardness":5,"resistance":6,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#a7a7a7","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:iron_door","localizedName":"Iron Door","material":{"powerSource":false,"lightValue":0,"hardness":5,"resistance":5,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#a7a7a7","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:iron_ore","localizedName":"Iron Ore","material":{"powerSource":false,"lightValue":0,"hardness":3,"resistance":3,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:iron_trapdoor","localizedName":"Iron Trapdoor","material":{"powerSource":false,"lightValue":0,"hardness":5,"resistance":5,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#a7a7a7","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:jack_o_lantern","localizedName":"Jack o'Lantern","material":{"powerSource":false,"lightValue":15,"hardness":1,"resistance":1,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#007c00","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:jukebox","localizedName":"Jukebox","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":6,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":true}},{"id":"minecraft:jungle_button","localizedName":"Jungle Button","material":{"powerSource":true,"lightValue":0,"hardness":0.5,"resistance":0.5,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:jungle_door","localizedName":"Jungle Door","material":{"powerSource":false,"lightValue":0,"hardness":3,"resistance":3,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:jungle_fence","localizedName":"Jungle Fence","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":3,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:jungle_fence_gate","localizedName":"Jungle Fence Gate","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":3,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:jungle_leaves","localizedName":"Jungle Leaves","material":{"powerSource":false,"lightValue":0,"hardness":0.2,"resistance":0.2,"ticksRandomly":true,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#007c00","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:jungle_log","localizedName":"Jungle Log","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":2,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:jungle_planks","localizedName":"Jungle Planks","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":3,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:jungle_pressure_plate","localizedName":"Jungle Pressure Plate","material":{"powerSource":true,"lightValue":0,"hardness":0.5,"resistance":0.5,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:jungle_sapling","localizedName":"Jungle Sapling","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":true,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#007c00","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:jungle_slab","localizedName":"Jungle Slab","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":3,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:jungle_stairs","localizedName":"Jungle Stairs","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":3,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:jungle_trapdoor","localizedName":"Jungle Trapdoor","material":{"powerSource":false,"lightValue":0,"hardness":3,"resistance":3,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:jungle_wood","localizedName":"Jungle Wood","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":2,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:kelp","localizedName":"Kelp","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":true,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#4040ff","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:kelp_plant","localizedName":"Kelp Plant","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#4040ff","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:ladder","localizedName":"Ladder","material":{"powerSource":false,"lightValue":0,"hardness":0.4,"resistance":0.4,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:lapis_block","localizedName":"Lapis Lazuli Block","material":{"powerSource":false,"lightValue":0,"hardness":3,"resistance":3,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#a7a7a7","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:lapis_ore","localizedName":"Lapis Lazuli Ore","material":{"powerSource":false,"lightValue":0,"hardness":3,"resistance":3,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:large_fern","localizedName":"Large Fern","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":true,"opaque":false,"replacedDuringPlacement":true,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#007c00","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:lava","localizedName":"Lava","material":{"powerSource":false,"lightValue":15,"hardness":100,"resistance":100,"ticksRandomly":true,"fullCube":false,"slipperiness":0.6,"liquid":true,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":true,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#ff0000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:lever","localizedName":"Lever","material":{"powerSource":true,"lightValue":0,"hardness":0.5,"resistance":0.5,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:light_blue_banner","localizedName":"Light Blue Banner","material":{"powerSource":false,"lightValue":0,"hardness":1,"resistance":1,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":true}},{"id":"minecraft:light_blue_bed","localizedName":"Light Blue Bed","material":{"powerSource":false,"lightValue":0,"hardness":0.2,"resistance":0.2,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#c7c7c7","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:light_blue_carpet","localizedName":"Light Blue Carpet","material":{"powerSource":false,"lightValue":0,"hardness":0.1,"resistance":0.1,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":true,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#c7c7c7","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:light_blue_concrete","localizedName":"Light Blue Concrete","material":{"powerSource":false,"lightValue":0,"hardness":1.8,"resistance":1.8,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:light_blue_concrete_powder","localizedName":"Light Blue Concrete Powder","material":{"powerSource":false,"lightValue":0,"hardness":0.5,"resistance":0.5,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#f7e9a3","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:light_blue_glazed_terracotta","localizedName":"Light Blue Glazed Terracotta","material":{"powerSource":false,"lightValue":0,"hardness":1.4,"resistance":1.4,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:light_blue_shulker_box","localizedName":"Light Blue Shulker Box","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":2,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":true,"hasContainer":true}},{"id":"minecraft:light_blue_stained_glass","localizedName":"Light Blue Stained Glass","material":{"powerSource":false,"lightValue":0,"hardness":0.3,"resistance":0.3,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:light_blue_stained_glass_pane","localizedName":"Light Blue Stained Glass Pane","material":{"powerSource":false,"lightValue":0,"hardness":0.3,"resistance":0.3,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:light_blue_terracotta","localizedName":"Light Blue Terracotta","material":{"powerSource":false,"lightValue":0,"hardness":1.25,"resistance":4.2,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:light_blue_wall_banner","localizedName":"Air","material":{"powerSource":false,"lightValue":0,"hardness":1,"resistance":1,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":true}},{"id":"minecraft:light_blue_wool","localizedName":"Light Blue Wool","material":{"powerSource":false,"lightValue":0,"hardness":0.8,"resistance":0.8,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#c7c7c7","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:light_gray_banner","localizedName":"Light Gray Banner","material":{"powerSource":false,"lightValue":0,"hardness":1,"resistance":1,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":true}},{"id":"minecraft:light_gray_bed","localizedName":"Light Gray Bed","material":{"powerSource":false,"lightValue":0,"hardness":0.2,"resistance":0.2,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#c7c7c7","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:light_gray_carpet","localizedName":"Light Gray Carpet","material":{"powerSource":false,"lightValue":0,"hardness":0.1,"resistance":0.1,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":true,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#c7c7c7","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:light_gray_concrete","localizedName":"Light Gray Concrete","material":{"powerSource":false,"lightValue":0,"hardness":1.8,"resistance":1.8,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:light_gray_concrete_powder","localizedName":"Light Gray Concrete Powder","material":{"powerSource":false,"lightValue":0,"hardness":0.5,"resistance":0.5,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#f7e9a3","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:light_gray_glazed_terracotta","localizedName":"Light Gray Glazed Terracotta","material":{"powerSource":false,"lightValue":0,"hardness":1.4,"resistance":1.4,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:light_gray_shulker_box","localizedName":"Light Gray Shulker Box","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":2,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":true,"hasContainer":true}},{"id":"minecraft:light_gray_stained_glass","localizedName":"Light Gray Stained Glass","material":{"powerSource":false,"lightValue":0,"hardness":0.3,"resistance":0.3,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:light_gray_stained_glass_pane","localizedName":"Light Gray Stained Glass Pane","material":{"powerSource":false,"lightValue":0,"hardness":0.3,"resistance":0.3,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:light_gray_terracotta","localizedName":"Light Gray Terracotta","material":{"powerSource":false,"lightValue":0,"hardness":1.25,"resistance":4.2,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:light_gray_wall_banner","localizedName":"Air","material":{"powerSource":false,"lightValue":0,"hardness":1,"resistance":1,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":true}},{"id":"minecraft:light_gray_wool","localizedName":"Light Gray Wool","material":{"powerSource":false,"lightValue":0,"hardness":0.8,"resistance":0.8,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#c7c7c7","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:light_weighted_pressure_plate","localizedName":"Light Weighted Pressure Plate","material":{"powerSource":true,"lightValue":0,"hardness":0.5,"resistance":0.5,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#a7a7a7","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:lilac","localizedName":"Lilac","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":true,"opaque":false,"replacedDuringPlacement":true,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#007c00","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:lily_pad","localizedName":"Lily Pad","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#007c00","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:lime_banner","localizedName":"Lime Banner","material":{"powerSource":false,"lightValue":0,"hardness":1,"resistance":1,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":true}},{"id":"minecraft:lime_bed","localizedName":"Lime Bed","material":{"powerSource":false,"lightValue":0,"hardness":0.2,"resistance":0.2,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#c7c7c7","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:lime_carpet","localizedName":"Lime Carpet","material":{"powerSource":false,"lightValue":0,"hardness":0.1,"resistance":0.1,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":true,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#c7c7c7","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:lime_concrete","localizedName":"Lime Concrete","material":{"powerSource":false,"lightValue":0,"hardness":1.8,"resistance":1.8,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:lime_concrete_powder","localizedName":"Lime Concrete Powder","material":{"powerSource":false,"lightValue":0,"hardness":0.5,"resistance":0.5,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#f7e9a3","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:lime_glazed_terracotta","localizedName":"Lime Glazed Terracotta","material":{"powerSource":false,"lightValue":0,"hardness":1.4,"resistance":1.4,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:lime_shulker_box","localizedName":"Lime Shulker Box","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":2,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":true,"hasContainer":true}},{"id":"minecraft:lime_stained_glass","localizedName":"Lime Stained Glass","material":{"powerSource":false,"lightValue":0,"hardness":0.3,"resistance":0.3,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:lime_stained_glass_pane","localizedName":"Lime Stained Glass Pane","material":{"powerSource":false,"lightValue":0,"hardness":0.3,"resistance":0.3,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:lime_terracotta","localizedName":"Lime Terracotta","material":{"powerSource":false,"lightValue":0,"hardness":1.25,"resistance":4.2,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:lime_wall_banner","localizedName":"Air","material":{"powerSource":false,"lightValue":0,"hardness":1,"resistance":1,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":true}},{"id":"minecraft:lime_wool","localizedName":"Lime Wool","material":{"powerSource":false,"lightValue":0,"hardness":0.8,"resistance":0.8,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#c7c7c7","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:magenta_banner","localizedName":"Magenta Banner","material":{"powerSource":false,"lightValue":0,"hardness":1,"resistance":1,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":true}},{"id":"minecraft:magenta_bed","localizedName":"Magenta Bed","material":{"powerSource":false,"lightValue":0,"hardness":0.2,"resistance":0.2,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#c7c7c7","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:magenta_carpet","localizedName":"Magenta Carpet","material":{"powerSource":false,"lightValue":0,"hardness":0.1,"resistance":0.1,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":true,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#c7c7c7","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:magenta_concrete","localizedName":"Magenta Concrete","material":{"powerSource":false,"lightValue":0,"hardness":1.8,"resistance":1.8,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:magenta_concrete_powder","localizedName":"Magenta Concrete Powder","material":{"powerSource":false,"lightValue":0,"hardness":0.5,"resistance":0.5,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#f7e9a3","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:magenta_glazed_terracotta","localizedName":"Magenta Glazed Terracotta","material":{"powerSource":false,"lightValue":0,"hardness":1.4,"resistance":1.4,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:magenta_shulker_box","localizedName":"Magenta Shulker Box","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":2,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":true,"hasContainer":true}},{"id":"minecraft:magenta_stained_glass","localizedName":"Magenta Stained Glass","material":{"powerSource":false,"lightValue":0,"hardness":0.3,"resistance":0.3,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:magenta_stained_glass_pane","localizedName":"Magenta Stained Glass Pane","material":{"powerSource":false,"lightValue":0,"hardness":0.3,"resistance":0.3,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:magenta_terracotta","localizedName":"Magenta Terracotta","material":{"powerSource":false,"lightValue":0,"hardness":1.25,"resistance":4.2,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:magenta_wall_banner","localizedName":"Air","material":{"powerSource":false,"lightValue":0,"hardness":1,"resistance":1,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":true}},{"id":"minecraft:magenta_wool","localizedName":"Magenta Wool","material":{"powerSource":false,"lightValue":0,"hardness":0.8,"resistance":0.8,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#c7c7c7","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:magma_block","localizedName":"Magma Block","material":{"powerSource":false,"lightValue":3,"hardness":0.5,"resistance":0.5,"ticksRandomly":true,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:melon","localizedName":"Melon","material":{"powerSource":false,"lightValue":0,"hardness":1,"resistance":1,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#007c00","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:melon_stem","localizedName":"Melon Stem","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":true,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#007c00","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:mossy_cobblestone","localizedName":"Mossy Cobblestone","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":6,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:mossy_cobblestone_wall","localizedName":"Mossy Cobblestone Wall","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":6,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:mossy_stone_bricks","localizedName":"Mossy Stone Bricks","material":{"powerSource":false,"lightValue":0,"hardness":1.5,"resistance":6,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:moving_piston","localizedName":"Moving Piston","material":{"powerSource":false,"lightValue":0,"hardness":-1,"resistance":0,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":true,"mapColor":"#707070","isTranslucent":true,"hasContainer":true}},{"id":"minecraft:mushroom_stem","localizedName":"Mushroom Stem","material":{"powerSource":false,"lightValue":0,"hardness":0.2,"resistance":0.2,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:mycelium","localizedName":"Mycelium","material":{"powerSource":false,"lightValue":0,"hardness":0.6,"resistance":0.6,"ticksRandomly":true,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#7fb238","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:nether_brick_fence","localizedName":"Nether Brick Fence","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":6,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:nether_brick_slab","localizedName":"Nether Brick Slab","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":6,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:nether_brick_stairs","localizedName":"Nether Brick Stairs","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":6,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:nether_bricks","localizedName":"Nether Bricks","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":6,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:nether_portal","localizedName":"Nether Portal","material":{"powerSource":false,"lightValue":11,"hardness":-1,"resistance":0,"ticksRandomly":true,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":true,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:nether_quartz_ore","localizedName":"Nether Quartz Ore","material":{"powerSource":false,"lightValue":0,"hardness":3,"resistance":3,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:nether_wart","localizedName":"Nether Wart","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":true,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#007c00","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:nether_wart_block","localizedName":"Nether Wart Block","material":{"powerSource":false,"lightValue":0,"hardness":1,"resistance":1,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#7fb238","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:netherrack","localizedName":"Netherrack","material":{"powerSource":false,"lightValue":0,"hardness":0.4,"resistance":0.4,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:note_block","localizedName":"Note Block","material":{"powerSource":false,"lightValue":0,"hardness":0.8,"resistance":0.8,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:oak_button","localizedName":"Oak Button","material":{"powerSource":true,"lightValue":0,"hardness":0.5,"resistance":0.5,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:oak_door","localizedName":"Oak Door","material":{"powerSource":false,"lightValue":0,"hardness":3,"resistance":3,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:oak_fence","localizedName":"Oak Fence","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":3,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:oak_fence_gate","localizedName":"Oak Fence Gate","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":3,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:oak_leaves","localizedName":"Oak Leaves","material":{"powerSource":false,"lightValue":0,"hardness":0.2,"resistance":0.2,"ticksRandomly":true,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#007c00","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:oak_log","localizedName":"Oak Log","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":2,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:oak_planks","localizedName":"Oak Planks","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":3,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:oak_pressure_plate","localizedName":"Oak Pressure Plate","material":{"powerSource":true,"lightValue":0,"hardness":0.5,"resistance":0.5,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:oak_sapling","localizedName":"Oak Sapling","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":true,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#007c00","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:oak_slab","localizedName":"Oak Slab","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":3,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:oak_stairs","localizedName":"Oak Stairs","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":3,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:oak_trapdoor","localizedName":"Oak Trapdoor","material":{"powerSource":false,"lightValue":0,"hardness":3,"resistance":3,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:oak_wood","localizedName":"Oak Wood","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":2,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:observer","localizedName":"Observer","material":{"powerSource":true,"lightValue":0,"hardness":3,"resistance":3,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:obsidian","localizedName":"Obsidian","material":{"powerSource":false,"lightValue":0,"hardness":50,"resistance":1200,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:orange_banner","localizedName":"Orange Banner","material":{"powerSource":false,"lightValue":0,"hardness":1,"resistance":1,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":true}},{"id":"minecraft:orange_bed","localizedName":"Orange Bed","material":{"powerSource":false,"lightValue":0,"hardness":0.2,"resistance":0.2,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#c7c7c7","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:orange_carpet","localizedName":"Orange Carpet","material":{"powerSource":false,"lightValue":0,"hardness":0.1,"resistance":0.1,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":true,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#c7c7c7","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:orange_concrete","localizedName":"Orange Concrete","material":{"powerSource":false,"lightValue":0,"hardness":1.8,"resistance":1.8,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:orange_concrete_powder","localizedName":"Orange Concrete Powder","material":{"powerSource":false,"lightValue":0,"hardness":0.5,"resistance":0.5,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#f7e9a3","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:orange_glazed_terracotta","localizedName":"Orange Glazed Terracotta","material":{"powerSource":false,"lightValue":0,"hardness":1.4,"resistance":1.4,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:orange_shulker_box","localizedName":"Orange Shulker Box","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":2,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":true,"hasContainer":true}},{"id":"minecraft:orange_stained_glass","localizedName":"Orange Stained Glass","material":{"powerSource":false,"lightValue":0,"hardness":0.3,"resistance":0.3,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:orange_stained_glass_pane","localizedName":"Orange Stained Glass Pane","material":{"powerSource":false,"lightValue":0,"hardness":0.3,"resistance":0.3,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:orange_terracotta","localizedName":"Orange Terracotta","material":{"powerSource":false,"lightValue":0,"hardness":1.25,"resistance":4.2,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:orange_tulip","localizedName":"Orange Tulip","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#007c00","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:orange_wall_banner","localizedName":"Air","material":{"powerSource":false,"lightValue":0,"hardness":1,"resistance":1,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":true}},{"id":"minecraft:orange_wool","localizedName":"Orange Wool","material":{"powerSource":false,"lightValue":0,"hardness":0.8,"resistance":0.8,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#c7c7c7","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:oxeye_daisy","localizedName":"Oxeye Daisy","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#007c00","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:packed_ice","localizedName":"Packed Ice","material":{"powerSource":false,"lightValue":0,"hardness":0.5,"resistance":0.5,"ticksRandomly":false,"fullCube":true,"slipperiness":0.98,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#a0a0ff","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:peony","localizedName":"Peony","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":true,"opaque":false,"replacedDuringPlacement":true,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#007c00","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:petrified_oak_slab","localizedName":"Petrified Oak Slab","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":6,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:pink_banner","localizedName":"Pink Banner","material":{"powerSource":false,"lightValue":0,"hardness":1,"resistance":1,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":true}},{"id":"minecraft:pink_bed","localizedName":"Pink Bed","material":{"powerSource":false,"lightValue":0,"hardness":0.2,"resistance":0.2,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#c7c7c7","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:pink_carpet","localizedName":"Pink Carpet","material":{"powerSource":false,"lightValue":0,"hardness":0.1,"resistance":0.1,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":true,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#c7c7c7","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:pink_concrete","localizedName":"Pink Concrete","material":{"powerSource":false,"lightValue":0,"hardness":1.8,"resistance":1.8,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:pink_concrete_powder","localizedName":"Pink Concrete Powder","material":{"powerSource":false,"lightValue":0,"hardness":0.5,"resistance":0.5,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#f7e9a3","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:pink_glazed_terracotta","localizedName":"Pink Glazed Terracotta","material":{"powerSource":false,"lightValue":0,"hardness":1.4,"resistance":1.4,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:pink_shulker_box","localizedName":"Pink Shulker Box","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":2,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":true,"hasContainer":true}},{"id":"minecraft:pink_stained_glass","localizedName":"Pink Stained Glass","material":{"powerSource":false,"lightValue":0,"hardness":0.3,"resistance":0.3,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:pink_stained_glass_pane","localizedName":"Pink Stained Glass Pane","material":{"powerSource":false,"lightValue":0,"hardness":0.3,"resistance":0.3,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:pink_terracotta","localizedName":"Pink Terracotta","material":{"powerSource":false,"lightValue":0,"hardness":1.25,"resistance":4.2,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:pink_tulip","localizedName":"Pink Tulip","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#007c00","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:pink_wall_banner","localizedName":"Air","material":{"powerSource":false,"lightValue":0,"hardness":1,"resistance":1,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":true}},{"id":"minecraft:pink_wool","localizedName":"Pink Wool","material":{"powerSource":false,"lightValue":0,"hardness":0.8,"resistance":0.8,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#c7c7c7","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:piston","localizedName":"Piston","material":{"powerSource":false,"lightValue":0,"hardness":0.5,"resistance":0.5,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":true,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:piston_head","localizedName":"Piston Head","material":{"powerSource":false,"lightValue":0,"hardness":0.5,"resistance":0.5,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":true,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:player_head","localizedName":"Player Head","material":{"powerSource":false,"lightValue":0,"hardness":1,"resistance":1,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":true}},{"id":"minecraft:player_wall_head","localizedName":"Air","material":{"powerSource":false,"lightValue":0,"hardness":1,"resistance":1,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":true}},{"id":"minecraft:podzol","localizedName":"Podzol","material":{"powerSource":false,"lightValue":0,"hardness":0.5,"resistance":0.5,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#976d4d","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:polished_andesite","localizedName":"Polished Andesite","material":{"powerSource":false,"lightValue":0,"hardness":1.5,"resistance":6,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:polished_diorite","localizedName":"Polished Diorite","material":{"powerSource":false,"lightValue":0,"hardness":1.5,"resistance":6,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:polished_granite","localizedName":"Polished Granite","material":{"powerSource":false,"lightValue":0,"hardness":1.5,"resistance":6,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:poppy","localizedName":"Poppy","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#007c00","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:potatoes","localizedName":"Potatoes","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":true,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#007c00","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:potted_acacia_sapling","localizedName":"Potted Acacia Sapling","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:potted_allium","localizedName":"Potted Allium","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:potted_azure_bluet","localizedName":"Potted Azure Bluet","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:potted_birch_sapling","localizedName":"Potted Birch Sapling","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:potted_blue_orchid","localizedName":"Potted Blue Orchid","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:potted_brown_mushroom","localizedName":"Potted Brown Mushroom","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:potted_cactus","localizedName":"Potted Cactus","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:potted_dandelion","localizedName":"Potted Dandelion","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:potted_dark_oak_sapling","localizedName":"Potted Dark Oak Sapling","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:potted_dead_bush","localizedName":"Potted Dead Bush","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:potted_fern","localizedName":"Potted Fern","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:potted_jungle_sapling","localizedName":"Potted Jungle Sapling","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:potted_oak_sapling","localizedName":"Potted Oak Sapling","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:potted_orange_tulip","localizedName":"Potted Orange Tulip","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:potted_oxeye_daisy","localizedName":"Potted Oxeye Daisy","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:potted_pink_tulip","localizedName":"Potted Pink Tulip","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:potted_poppy","localizedName":"Potted Poppy","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:potted_red_mushroom","localizedName":"Potted Red Mushroom","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:potted_red_tulip","localizedName":"Potted Red Tulip","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:potted_spruce_sapling","localizedName":"Potted Spruce Sapling","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:potted_white_tulip","localizedName":"Potted White Tulip","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:powered_rail","localizedName":"Powered Rail","material":{"powerSource":false,"lightValue":0,"hardness":0.7,"resistance":0.7,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:prismarine","localizedName":"Prismarine","material":{"powerSource":false,"lightValue":0,"hardness":1.5,"resistance":6,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:prismarine_brick_slab","localizedName":"Prismarine Brick Slab","material":{"powerSource":false,"lightValue":0,"hardness":1.5,"resistance":6,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:prismarine_brick_stairs","localizedName":"Prismarine Brick Stairs","material":{"powerSource":false,"lightValue":0,"hardness":1.5,"resistance":6,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:prismarine_bricks","localizedName":"Prismarine Bricks","material":{"powerSource":false,"lightValue":0,"hardness":1.5,"resistance":6,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:prismarine_slab","localizedName":"Prismarine Slab","material":{"powerSource":false,"lightValue":0,"hardness":1.5,"resistance":6,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:prismarine_stairs","localizedName":"Prismarine Stairs","material":{"powerSource":false,"lightValue":0,"hardness":1.5,"resistance":6,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:pumpkin","localizedName":"Pumpkin","material":{"powerSource":false,"lightValue":0,"hardness":1,"resistance":1,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#007c00","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:pumpkin_stem","localizedName":"Pumpkin Stem","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":true,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#007c00","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:purple_banner","localizedName":"Purple Banner","material":{"powerSource":false,"lightValue":0,"hardness":1,"resistance":1,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":true}},{"id":"minecraft:purple_bed","localizedName":"Purple Bed","material":{"powerSource":false,"lightValue":0,"hardness":0.2,"resistance":0.2,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#c7c7c7","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:purple_carpet","localizedName":"Purple Carpet","material":{"powerSource":false,"lightValue":0,"hardness":0.1,"resistance":0.1,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":true,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#c7c7c7","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:purple_concrete","localizedName":"Purple Concrete","material":{"powerSource":false,"lightValue":0,"hardness":1.8,"resistance":1.8,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:purple_concrete_powder","localizedName":"Purple Concrete Powder","material":{"powerSource":false,"lightValue":0,"hardness":0.5,"resistance":0.5,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#f7e9a3","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:purple_glazed_terracotta","localizedName":"Purple Glazed Terracotta","material":{"powerSource":false,"lightValue":0,"hardness":1.4,"resistance":1.4,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:purple_shulker_box","localizedName":"Purple Shulker Box","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":2,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":true,"hasContainer":true}},{"id":"minecraft:purple_stained_glass","localizedName":"Purple Stained Glass","material":{"powerSource":false,"lightValue":0,"hardness":0.3,"resistance":0.3,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:purple_stained_glass_pane","localizedName":"Purple Stained Glass Pane","material":{"powerSource":false,"lightValue":0,"hardness":0.3,"resistance":0.3,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:purple_terracotta","localizedName":"Purple Terracotta","material":{"powerSource":false,"lightValue":0,"hardness":1.25,"resistance":4.2,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:purple_wall_banner","localizedName":"Air","material":{"powerSource":false,"lightValue":0,"hardness":1,"resistance":1,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":true}},{"id":"minecraft:purple_wool","localizedName":"Purple Wool","material":{"powerSource":false,"lightValue":0,"hardness":0.8,"resistance":0.8,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#c7c7c7","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:purpur_block","localizedName":"Purpur Block","material":{"powerSource":false,"lightValue":0,"hardness":1.5,"resistance":6,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:purpur_pillar","localizedName":"Purpur Pillar","material":{"powerSource":false,"lightValue":0,"hardness":1.5,"resistance":6,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:purpur_slab","localizedName":"Purpur Slab","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":6,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:purpur_stairs","localizedName":"Purpur Stairs","material":{"powerSource":false,"lightValue":0,"hardness":1.5,"resistance":6,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:quartz_block","localizedName":"Block of Quartz","material":{"powerSource":false,"lightValue":0,"hardness":0.8,"resistance":0.8,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:quartz_pillar","localizedName":"Quartz Pillar","material":{"powerSource":false,"lightValue":0,"hardness":0.8,"resistance":0.8,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:quartz_slab","localizedName":"Quartz Slab","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":6,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:quartz_stairs","localizedName":"Quartz Stairs","material":{"powerSource":false,"lightValue":0,"hardness":0.8,"resistance":0.8,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:rail","localizedName":"Rail","material":{"powerSource":false,"lightValue":0,"hardness":0.7,"resistance":0.7,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:red_banner","localizedName":"Red Banner","material":{"powerSource":false,"lightValue":0,"hardness":1,"resistance":1,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":true}},{"id":"minecraft:red_bed","localizedName":"Red Bed","material":{"powerSource":false,"lightValue":0,"hardness":0.2,"resistance":0.2,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#c7c7c7","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:red_carpet","localizedName":"Red Carpet","material":{"powerSource":false,"lightValue":0,"hardness":0.1,"resistance":0.1,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":true,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#c7c7c7","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:red_concrete","localizedName":"Red Concrete","material":{"powerSource":false,"lightValue":0,"hardness":1.8,"resistance":1.8,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:red_concrete_powder","localizedName":"Red Concrete Powder","material":{"powerSource":false,"lightValue":0,"hardness":0.5,"resistance":0.5,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#f7e9a3","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:red_glazed_terracotta","localizedName":"Red Glazed Terracotta","material":{"powerSource":false,"lightValue":0,"hardness":1.4,"resistance":1.4,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:red_mushroom","localizedName":"Red Mushroom","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":true,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#007c00","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:red_mushroom_block","localizedName":"Red Mushroom Block","material":{"powerSource":false,"lightValue":0,"hardness":0.2,"resistance":0.2,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:red_nether_bricks","localizedName":"Red Nether Bricks","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":6,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:red_sand","localizedName":"Red Sand","material":{"powerSource":false,"lightValue":0,"hardness":0.5,"resistance":0.5,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#f7e9a3","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:red_sandstone","localizedName":"Red Sandstone","material":{"powerSource":false,"lightValue":0,"hardness":0.8,"resistance":0.8,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:red_sandstone_slab","localizedName":"Red Sandstone Slab","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":6,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:red_sandstone_stairs","localizedName":"Red Sandstone Stairs","material":{"powerSource":false,"lightValue":0,"hardness":0.8,"resistance":0.8,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:red_shulker_box","localizedName":"Red Shulker Box","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":2,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":true,"hasContainer":true}},{"id":"minecraft:red_stained_glass","localizedName":"Red Stained Glass","material":{"powerSource":false,"lightValue":0,"hardness":0.3,"resistance":0.3,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:red_stained_glass_pane","localizedName":"Red Stained Glass Pane","material":{"powerSource":false,"lightValue":0,"hardness":0.3,"resistance":0.3,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:red_terracotta","localizedName":"Red Terracotta","material":{"powerSource":false,"lightValue":0,"hardness":1.25,"resistance":4.2,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:red_tulip","localizedName":"Red Tulip","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#007c00","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:red_wall_banner","localizedName":"Air","material":{"powerSource":false,"lightValue":0,"hardness":1,"resistance":1,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":true}},{"id":"minecraft:red_wool","localizedName":"Red Wool","material":{"powerSource":false,"lightValue":0,"hardness":0.8,"resistance":0.8,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#c7c7c7","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:redstone_block","localizedName":"Block of Redstone","material":{"powerSource":true,"lightValue":0,"hardness":5,"resistance":6,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#a7a7a7","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:redstone_lamp","localizedName":"Redstone Lamp","material":{"powerSource":false,"lightValue":0,"hardness":0.3,"resistance":0.3,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:redstone_ore","localizedName":"Redstone Ore","material":{"powerSource":false,"lightValue":0,"hardness":3,"resistance":3,"ticksRandomly":true,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:redstone_torch","localizedName":"Redstone Torch","material":{"powerSource":true,"lightValue":7,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:redstone_wall_torch","localizedName":"Air","material":{"powerSource":true,"lightValue":7,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:redstone_wire","localizedName":"Redstone Dust","material":{"powerSource":true,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:repeater","localizedName":"Redstone Repeater","material":{"powerSource":true,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:repeating_command_block","localizedName":"Repeating Command Block","material":{"powerSource":false,"lightValue":0,"hardness":-1,"resistance":3600000,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#a7a7a7","isTranslucent":false,"hasContainer":true}},{"id":"minecraft:rose_bush","localizedName":"Rose Bush","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":true,"opaque":false,"replacedDuringPlacement":true,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#007c00","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:sand","localizedName":"Sand","material":{"powerSource":false,"lightValue":0,"hardness":0.5,"resistance":0.5,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#f7e9a3","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:sandstone","localizedName":"Sandstone","material":{"powerSource":false,"lightValue":0,"hardness":0.8,"resistance":0.8,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:sandstone_slab","localizedName":"Sandstone Slab","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":6,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:sandstone_stairs","localizedName":"Sandstone Stairs","material":{"powerSource":false,"lightValue":0,"hardness":0.8,"resistance":0.8,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:sea_lantern","localizedName":"Sea Lantern","material":{"powerSource":false,"lightValue":15,"hardness":0.3,"resistance":0.3,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:sea_pickle","localizedName":"Sea Pickle","material":{"powerSource":false,"lightValue":6,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#4040ff","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:seagrass","localizedName":"Seagrass","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":true,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#4040ff","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:shulker_box","localizedName":"Shulker Box","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":2,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":true,"hasContainer":true}},{"id":"minecraft:sign","localizedName":"Sign","material":{"powerSource":false,"lightValue":0,"hardness":1,"resistance":1,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":true}},{"id":"minecraft:skeleton_skull","localizedName":"Skeleton Skull","material":{"powerSource":false,"lightValue":0,"hardness":1,"resistance":1,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":true}},{"id":"minecraft:skeleton_wall_skull","localizedName":"Air","material":{"powerSource":false,"lightValue":0,"hardness":1,"resistance":1,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":true}},{"id":"minecraft:slime_block","localizedName":"Slime Block","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":true,"slipperiness":0.8,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#a4a8b8","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:smooth_quartz","localizedName":"Smooth Quartz","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":6,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:smooth_red_sandstone","localizedName":"Smooth Red Sandstone","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":6,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:smooth_sandstone","localizedName":"Smooth Sandstone","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":6,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:smooth_stone","localizedName":"Smooth Stone","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":6,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:snow","localizedName":"Snow","material":{"powerSource":false,"lightValue":0,"hardness":0.1,"resistance":0.1,"ticksRandomly":true,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":true,"toolRequired":true,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#ffffff","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:snow_block","localizedName":"Snow Block","material":{"powerSource":false,"lightValue":0,"hardness":0.2,"resistance":0.2,"ticksRandomly":true,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#ffffff","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:soul_sand","localizedName":"Soul Sand","material":{"powerSource":false,"lightValue":0,"hardness":0.5,"resistance":0.5,"ticksRandomly":true,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#f7e9a3","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:spawner","localizedName":"Spawner","material":{"powerSource":false,"lightValue":0,"hardness":5,"resistance":5,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":true}},{"id":"minecraft:sponge","localizedName":"Sponge","material":{"powerSource":false,"lightValue":0,"hardness":0.6,"resistance":0.6,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#e5e533","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:spruce_button","localizedName":"Spruce Button","material":{"powerSource":true,"lightValue":0,"hardness":0.5,"resistance":0.5,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:spruce_door","localizedName":"Spruce Door","material":{"powerSource":false,"lightValue":0,"hardness":3,"resistance":3,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:spruce_fence","localizedName":"Spruce Fence","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":3,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:spruce_fence_gate","localizedName":"Spruce Fence Gate","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":3,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:spruce_leaves","localizedName":"Spruce Leaves","material":{"powerSource":false,"lightValue":0,"hardness":0.2,"resistance":0.2,"ticksRandomly":true,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#007c00","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:spruce_log","localizedName":"Spruce Log","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":2,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:spruce_planks","localizedName":"Spruce Planks","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":3,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:spruce_pressure_plate","localizedName":"Spruce Pressure Plate","material":{"powerSource":true,"lightValue":0,"hardness":0.5,"resistance":0.5,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:spruce_sapling","localizedName":"Spruce Sapling","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":true,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#007c00","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:spruce_slab","localizedName":"Spruce Slab","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":3,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:spruce_stairs","localizedName":"Spruce Stairs","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":3,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:spruce_trapdoor","localizedName":"Spruce Trapdoor","material":{"powerSource":false,"lightValue":0,"hardness":3,"resistance":3,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:spruce_wood","localizedName":"Spruce Wood","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":2,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:sticky_piston","localizedName":"Sticky Piston","material":{"powerSource":false,"lightValue":0,"hardness":0.5,"resistance":0.5,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":true,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:stone","localizedName":"Stone","material":{"powerSource":false,"lightValue":0,"hardness":1.5,"resistance":6,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:stone_brick_slab","localizedName":"Stone Brick Slab","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":6,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:stone_brick_stairs","localizedName":"Stone Brick Stairs","material":{"powerSource":false,"lightValue":0,"hardness":1.5,"resistance":6,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:stone_bricks","localizedName":"Stone Bricks","material":{"powerSource":false,"lightValue":0,"hardness":1.5,"resistance":6,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:stone_button","localizedName":"Stone Button","material":{"powerSource":true,"lightValue":0,"hardness":0.5,"resistance":0.5,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:stone_pressure_plate","localizedName":"Stone Pressure Plate","material":{"powerSource":true,"lightValue":0,"hardness":0.5,"resistance":0.5,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:stone_slab","localizedName":"Stone Slab","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":6,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:stripped_acacia_log","localizedName":"Stripped Acacia Log","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":2,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:stripped_acacia_wood","localizedName":"Stripped Acacia Wood","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":2,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:stripped_birch_log","localizedName":"Stripped Birch Log","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":2,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:stripped_birch_wood","localizedName":"Stripped Birch Wood","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":2,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:stripped_dark_oak_log","localizedName":"Stripped Dark Oak Log","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":2,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:stripped_dark_oak_wood","localizedName":"Stripped Dark Oak Wood","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":2,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:stripped_jungle_log","localizedName":"Stripped Jungle Log","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":2,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:stripped_jungle_wood","localizedName":"Stripped Jungle Wood","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":2,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:stripped_oak_log","localizedName":"Stripped Oak Log","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":2,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:stripped_oak_wood","localizedName":"Stripped Oak Wood","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":2,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:stripped_spruce_log","localizedName":"Stripped Spruce Log","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":2,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:stripped_spruce_wood","localizedName":"Stripped Spruce Wood","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":2,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:structure_block","localizedName":"Structure Block","material":{"powerSource":false,"lightValue":0,"hardness":-1,"resistance":3600000,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#a7a7a7","isTranslucent":false,"hasContainer":true}},{"id":"minecraft:structure_void","localizedName":"Structure Void","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":true,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:sugar_cane","localizedName":"Sugar Cane","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":true,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#007c00","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:sunflower","localizedName":"Sunflower","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":true,"opaque":false,"replacedDuringPlacement":true,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#007c00","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:tall_grass","localizedName":"Tall Grass","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":true,"opaque":false,"replacedDuringPlacement":true,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#007c00","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:tall_seagrass","localizedName":"Tall Seagrass","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":true,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#4040ff","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:terracotta","localizedName":"Terracotta","material":{"powerSource":false,"lightValue":0,"hardness":1.25,"resistance":4.2,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:tnt","localizedName":"TNT","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#ff0000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:torch","localizedName":"Torch","material":{"powerSource":false,"lightValue":14,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:trapped_chest","localizedName":"Trapped Chest","material":{"powerSource":true,"lightValue":0,"hardness":2.5,"resistance":2.5,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":true}},{"id":"minecraft:tripwire","localizedName":"Tripwire","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:tripwire_hook","localizedName":"Tripwire Hook","material":{"powerSource":true,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:tube_coral","localizedName":"Tube Coral","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#4040ff","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:tube_coral_block","localizedName":"Tube Coral Block","material":{"powerSource":false,"lightValue":0,"hardness":1.5,"resistance":6,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:tube_coral_fan","localizedName":"Tube Coral Fan","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#4040ff","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:tube_coral_wall_fan","localizedName":"Tube Coral Wall Fan","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#4040ff","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:turtle_egg","localizedName":"Turtle Egg","material":{"powerSource":false,"lightValue":0,"hardness":0.5,"resistance":0.5,"ticksRandomly":true,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#007c00","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:vine","localizedName":"Vines","material":{"powerSource":false,"lightValue":0,"hardness":0.2,"resistance":0.2,"ticksRandomly":true,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":true,"opaque":false,"replacedDuringPlacement":true,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#007c00","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:void_air","localizedName":"Void Air","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":true,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:wall_sign","localizedName":"Air","material":{"powerSource":false,"lightValue":0,"hardness":1,"resistance":1,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":true}},{"id":"minecraft:wall_torch","localizedName":"Air","material":{"powerSource":false,"lightValue":14,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:water","localizedName":"Water","material":{"powerSource":false,"lightValue":0,"hardness":100,"resistance":100,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":true,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":true,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#4040ff","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:wet_sponge","localizedName":"Wet Sponge","material":{"powerSource":false,"lightValue":0,"hardness":0.6,"resistance":0.6,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#e5e533","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:wheat","localizedName":"Wheat Crops","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":true,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#007c00","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:white_banner","localizedName":"White Banner","material":{"powerSource":false,"lightValue":0,"hardness":1,"resistance":1,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":true}},{"id":"minecraft:white_bed","localizedName":"White Bed","material":{"powerSource":false,"lightValue":0,"hardness":0.2,"resistance":0.2,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#c7c7c7","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:white_carpet","localizedName":"White Carpet","material":{"powerSource":false,"lightValue":0,"hardness":0.1,"resistance":0.1,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":true,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#c7c7c7","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:white_concrete","localizedName":"White Concrete","material":{"powerSource":false,"lightValue":0,"hardness":1.8,"resistance":1.8,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:white_concrete_powder","localizedName":"White Concrete Powder","material":{"powerSource":false,"lightValue":0,"hardness":0.5,"resistance":0.5,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#f7e9a3","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:white_glazed_terracotta","localizedName":"White Glazed Terracotta","material":{"powerSource":false,"lightValue":0,"hardness":1.4,"resistance":1.4,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:white_shulker_box","localizedName":"White Shulker Box","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":2,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":true,"hasContainer":true}},{"id":"minecraft:white_stained_glass","localizedName":"White Stained Glass","material":{"powerSource":false,"lightValue":0,"hardness":0.3,"resistance":0.3,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:white_stained_glass_pane","localizedName":"White Stained Glass Pane","material":{"powerSource":false,"lightValue":0,"hardness":0.3,"resistance":0.3,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:white_terracotta","localizedName":"White Terracotta","material":{"powerSource":false,"lightValue":0,"hardness":1.25,"resistance":4.2,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:white_tulip","localizedName":"White Tulip","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#007c00","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:white_wall_banner","localizedName":"Air","material":{"powerSource":false,"lightValue":0,"hardness":1,"resistance":1,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":true}},{"id":"minecraft:white_wool","localizedName":"White Wool","material":{"powerSource":false,"lightValue":0,"hardness":0.8,"resistance":0.8,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#c7c7c7","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:wither_skeleton_skull","localizedName":"Wither Skeleton Skull","material":{"powerSource":false,"lightValue":0,"hardness":1,"resistance":1,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":true}},{"id":"minecraft:wither_skeleton_wall_skull","localizedName":"Air","material":{"powerSource":false,"lightValue":0,"hardness":1,"resistance":1,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":true}},{"id":"minecraft:yellow_banner","localizedName":"Yellow Banner","material":{"powerSource":false,"lightValue":0,"hardness":1,"resistance":1,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":true}},{"id":"minecraft:yellow_bed","localizedName":"Yellow Bed","material":{"powerSource":false,"lightValue":0,"hardness":0.2,"resistance":0.2,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#c7c7c7","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:yellow_carpet","localizedName":"Yellow Carpet","material":{"powerSource":false,"lightValue":0,"hardness":0.1,"resistance":0.1,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":true,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#c7c7c7","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:yellow_concrete","localizedName":"Yellow Concrete","material":{"powerSource":false,"lightValue":0,"hardness":1.8,"resistance":1.8,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:yellow_concrete_powder","localizedName":"Yellow Concrete Powder","material":{"powerSource":false,"lightValue":0,"hardness":0.5,"resistance":0.5,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#f7e9a3","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:yellow_glazed_terracotta","localizedName":"Yellow Glazed Terracotta","material":{"powerSource":false,"lightValue":0,"hardness":1.4,"resistance":1.4,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:yellow_shulker_box","localizedName":"Yellow Shulker Box","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":2,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":true,"hasContainer":true}},{"id":"minecraft:yellow_stained_glass","localizedName":"Yellow Stained Glass","material":{"powerSource":false,"lightValue":0,"hardness":0.3,"resistance":0.3,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:yellow_stained_glass_pane","localizedName":"Yellow Stained Glass Pane","material":{"powerSource":false,"lightValue":0,"hardness":0.3,"resistance":0.3,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:yellow_terracotta","localizedName":"Yellow Terracotta","material":{"powerSource":false,"lightValue":0,"hardness":1.25,"resistance":4.2,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:yellow_wall_banner","localizedName":"Air","material":{"powerSource":false,"lightValue":0,"hardness":1,"resistance":1,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":true}},{"id":"minecraft:yellow_wool","localizedName":"Yellow Wool","material":{"powerSource":false,"lightValue":0,"hardness":0.8,"resistance":0.8,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#c7c7c7","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:zombie_head","localizedName":"Zombie Head","material":{"powerSource":false,"lightValue":0,"hardness":1,"resistance":1,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":true}},{"id":"minecraft:zombie_wall_head","localizedName":"Air","material":{"powerSource":false,"lightValue":0,"hardness":1,"resistance":1,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":true}}] \ No newline at end of file +[{"id":"minecraft:acacia_button","localizedName":"Acacia Button","material":{"powerSource":true,"lightValue":0,"hardness":0.5,"resistance":0.5,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:acacia_door","localizedName":"Acacia Door","material":{"powerSource":false,"lightValue":0,"hardness":3,"resistance":3,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:acacia_fence","localizedName":"Acacia Fence","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":3,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:acacia_fence_gate","localizedName":"Acacia Fence Gate","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":3,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:acacia_leaves","localizedName":"Acacia Leaves","material":{"powerSource":false,"lightValue":0,"hardness":0.2,"resistance":0.2,"ticksRandomly":true,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#007c00","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:acacia_log","localizedName":"Acacia Log","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":2,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:acacia_planks","localizedName":"Acacia Planks","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":3,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:acacia_pressure_plate","localizedName":"Acacia Pressure Plate","material":{"powerSource":true,"lightValue":0,"hardness":0.5,"resistance":0.5,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:acacia_sapling","localizedName":"Acacia Sapling","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":true,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#007c00","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:acacia_slab","localizedName":"Acacia Slab","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":3,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:acacia_stairs","localizedName":"Acacia Stairs","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":3,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:acacia_trapdoor","localizedName":"Acacia Trapdoor","material":{"powerSource":false,"lightValue":0,"hardness":3,"resistance":3,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:acacia_wood","localizedName":"Acacia Wood","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":2,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:activator_rail","localizedName":"Activator Rail","material":{"powerSource":false,"lightValue":0,"hardness":0.7,"resistance":0.7,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:air","localizedName":"Air","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":true,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:allium","localizedName":"Allium","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#007c00","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:andesite","localizedName":"Andesite","material":{"powerSource":false,"lightValue":0,"hardness":1.5,"resistance":6,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:anvil","localizedName":"Anvil","material":{"powerSource":false,"lightValue":0,"hardness":5,"resistance":1200,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":true,"mapColor":"#a7a7a7","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:attached_melon_stem","localizedName":"Attached Melon Stem","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#007c00","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:attached_pumpkin_stem","localizedName":"Attached Pumpkin Stem","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#007c00","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:azure_bluet","localizedName":"Azure Bluet","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#007c00","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:barrier","localizedName":"Barrier","material":{"powerSource":false,"lightValue":0,"hardness":-1,"resistance":3600000.8,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":true,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:beacon","localizedName":"Beacon","material":{"powerSource":false,"lightValue":15,"hardness":3,"resistance":3,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":true}},{"id":"minecraft:bedrock","localizedName":"Bedrock","material":{"powerSource":false,"lightValue":0,"hardness":-1,"resistance":3600000,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:beetroots","localizedName":"Beetroots","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":true,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#007c00","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:birch_button","localizedName":"Birch Button","material":{"powerSource":true,"lightValue":0,"hardness":0.5,"resistance":0.5,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:birch_door","localizedName":"Birch Door","material":{"powerSource":false,"lightValue":0,"hardness":3,"resistance":3,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:birch_fence","localizedName":"Birch Fence","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":3,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:birch_fence_gate","localizedName":"Birch Fence Gate","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":3,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:birch_leaves","localizedName":"Birch Leaves","material":{"powerSource":false,"lightValue":0,"hardness":0.2,"resistance":0.2,"ticksRandomly":true,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#007c00","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:birch_log","localizedName":"Birch Log","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":2,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:birch_planks","localizedName":"Birch Planks","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":3,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:birch_pressure_plate","localizedName":"Birch Pressure Plate","material":{"powerSource":true,"lightValue":0,"hardness":0.5,"resistance":0.5,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:birch_sapling","localizedName":"Birch Sapling","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":true,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#007c00","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:birch_slab","localizedName":"Birch Slab","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":3,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:birch_stairs","localizedName":"Birch Stairs","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":3,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:birch_trapdoor","localizedName":"Birch Trapdoor","material":{"powerSource":false,"lightValue":0,"hardness":3,"resistance":3,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:birch_wood","localizedName":"Birch Wood","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":2,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:black_banner","localizedName":"Black Banner","material":{"powerSource":false,"lightValue":0,"hardness":1,"resistance":1,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":true}},{"id":"minecraft:black_bed","localizedName":"Black Bed","material":{"powerSource":false,"lightValue":0,"hardness":0.2,"resistance":0.2,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#c7c7c7","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:black_carpet","localizedName":"Black Carpet","material":{"powerSource":false,"lightValue":0,"hardness":0.1,"resistance":0.1,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":true,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#c7c7c7","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:black_concrete","localizedName":"Black Concrete","material":{"powerSource":false,"lightValue":0,"hardness":1.8,"resistance":1.8,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:black_concrete_powder","localizedName":"Black Concrete Powder","material":{"powerSource":false,"lightValue":0,"hardness":0.5,"resistance":0.5,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#f7e9a3","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:black_glazed_terracotta","localizedName":"Black Glazed Terracotta","material":{"powerSource":false,"lightValue":0,"hardness":1.4,"resistance":1.4,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:black_shulker_box","localizedName":"Black Shulker Box","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":2,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":true,"hasContainer":true}},{"id":"minecraft:black_stained_glass","localizedName":"Black Stained Glass","material":{"powerSource":false,"lightValue":0,"hardness":0.3,"resistance":0.3,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:black_stained_glass_pane","localizedName":"Black Stained Glass Pane","material":{"powerSource":false,"lightValue":0,"hardness":0.3,"resistance":0.3,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:black_terracotta","localizedName":"Black Terracotta","material":{"powerSource":false,"lightValue":0,"hardness":1.25,"resistance":4.2,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:black_wall_banner","localizedName":"Air","material":{"powerSource":false,"lightValue":0,"hardness":1,"resistance":1,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":true}},{"id":"minecraft:black_wool","localizedName":"Black Wool","material":{"powerSource":false,"lightValue":0,"hardness":0.8,"resistance":0.8,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#c7c7c7","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:blue_banner","localizedName":"Blue Banner","material":{"powerSource":false,"lightValue":0,"hardness":1,"resistance":1,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":true}},{"id":"minecraft:blue_bed","localizedName":"Blue Bed","material":{"powerSource":false,"lightValue":0,"hardness":0.2,"resistance":0.2,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#c7c7c7","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:blue_carpet","localizedName":"Blue Carpet","material":{"powerSource":false,"lightValue":0,"hardness":0.1,"resistance":0.1,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":true,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#c7c7c7","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:blue_concrete","localizedName":"Blue Concrete","material":{"powerSource":false,"lightValue":0,"hardness":1.8,"resistance":1.8,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:blue_concrete_powder","localizedName":"Blue Concrete Powder","material":{"powerSource":false,"lightValue":0,"hardness":0.5,"resistance":0.5,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#f7e9a3","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:blue_glazed_terracotta","localizedName":"Blue Glazed Terracotta","material":{"powerSource":false,"lightValue":0,"hardness":1.4,"resistance":1.4,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:blue_ice","localizedName":"Blue Ice","material":{"powerSource":false,"lightValue":0,"hardness":2.8,"resistance":2.8,"ticksRandomly":false,"fullCube":true,"slipperiness":0.989,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#a0a0ff","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:blue_orchid","localizedName":"Blue Orchid","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#007c00","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:blue_shulker_box","localizedName":"Blue Shulker Box","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":2,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":true,"hasContainer":true}},{"id":"minecraft:blue_stained_glass","localizedName":"Blue Stained Glass","material":{"powerSource":false,"lightValue":0,"hardness":0.3,"resistance":0.3,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:blue_stained_glass_pane","localizedName":"Blue Stained Glass Pane","material":{"powerSource":false,"lightValue":0,"hardness":0.3,"resistance":0.3,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:blue_terracotta","localizedName":"Blue Terracotta","material":{"powerSource":false,"lightValue":0,"hardness":1.25,"resistance":4.2,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:blue_wall_banner","localizedName":"Air","material":{"powerSource":false,"lightValue":0,"hardness":1,"resistance":1,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":true}},{"id":"minecraft:blue_wool","localizedName":"Blue Wool","material":{"powerSource":false,"lightValue":0,"hardness":0.8,"resistance":0.8,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#c7c7c7","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:bone_block","localizedName":"Bone Block","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":2,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:bookshelf","localizedName":"Bookshelf","material":{"powerSource":false,"lightValue":0,"hardness":1.5,"resistance":1.5,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:brain_coral","localizedName":"Brain Coral","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#4040ff","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:brain_coral_block","localizedName":"Brain Coral Block","material":{"powerSource":false,"lightValue":0,"hardness":1.5,"resistance":6,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:brain_coral_fan","localizedName":"Brain Coral Fan","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#4040ff","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:brain_coral_wall_fan","localizedName":"Brain Coral Wall Fan","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#4040ff","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:brewing_stand","localizedName":"Brewing Stand","material":{"powerSource":false,"lightValue":1,"hardness":0.5,"resistance":0.5,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#a7a7a7","isTranslucent":false,"hasContainer":true}},{"id":"minecraft:brick_slab","localizedName":"Brick Slab","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":6,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:brick_stairs","localizedName":"Brick Stairs","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":6,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:bricks","localizedName":"Bricks","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":6,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:brown_banner","localizedName":"Brown Banner","material":{"powerSource":false,"lightValue":0,"hardness":1,"resistance":1,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":true}},{"id":"minecraft:brown_bed","localizedName":"Brown Bed","material":{"powerSource":false,"lightValue":0,"hardness":0.2,"resistance":0.2,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#c7c7c7","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:brown_carpet","localizedName":"Brown Carpet","material":{"powerSource":false,"lightValue":0,"hardness":0.1,"resistance":0.1,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":true,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#c7c7c7","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:brown_concrete","localizedName":"Brown Concrete","material":{"powerSource":false,"lightValue":0,"hardness":1.8,"resistance":1.8,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:brown_concrete_powder","localizedName":"Brown Concrete Powder","material":{"powerSource":false,"lightValue":0,"hardness":0.5,"resistance":0.5,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#f7e9a3","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:brown_glazed_terracotta","localizedName":"Brown Glazed Terracotta","material":{"powerSource":false,"lightValue":0,"hardness":1.4,"resistance":1.4,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:brown_mushroom","localizedName":"Brown Mushroom","material":{"powerSource":false,"lightValue":1,"hardness":0,"resistance":0,"ticksRandomly":true,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#007c00","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:brown_mushroom_block","localizedName":"Brown Mushroom Block","material":{"powerSource":false,"lightValue":0,"hardness":0.2,"resistance":0.2,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:brown_shulker_box","localizedName":"Brown Shulker Box","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":2,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":true,"hasContainer":true}},{"id":"minecraft:brown_stained_glass","localizedName":"Brown Stained Glass","material":{"powerSource":false,"lightValue":0,"hardness":0.3,"resistance":0.3,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:brown_stained_glass_pane","localizedName":"Brown Stained Glass Pane","material":{"powerSource":false,"lightValue":0,"hardness":0.3,"resistance":0.3,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:brown_terracotta","localizedName":"Brown Terracotta","material":{"powerSource":false,"lightValue":0,"hardness":1.25,"resistance":4.2,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:brown_wall_banner","localizedName":"Air","material":{"powerSource":false,"lightValue":0,"hardness":1,"resistance":1,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":true}},{"id":"minecraft:brown_wool","localizedName":"Brown Wool","material":{"powerSource":false,"lightValue":0,"hardness":0.8,"resistance":0.8,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#c7c7c7","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:bubble_column","localizedName":"Bubble Column","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":true,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":true,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#4040ff","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:bubble_coral","localizedName":"Bubble Coral","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#4040ff","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:bubble_coral_block","localizedName":"Bubble Coral Block","material":{"powerSource":false,"lightValue":0,"hardness":1.5,"resistance":6,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:bubble_coral_fan","localizedName":"Bubble Coral Fan","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#4040ff","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:bubble_coral_wall_fan","localizedName":"Bubble Coral Wall Fan","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#4040ff","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:cactus","localizedName":"Cactus","material":{"powerSource":false,"lightValue":0,"hardness":0.4,"resistance":0.4,"ticksRandomly":true,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#007c00","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:cake","localizedName":"Cake","material":{"powerSource":false,"lightValue":0,"hardness":0.5,"resistance":0.5,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:carrots","localizedName":"Carrots","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":true,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#007c00","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:carved_pumpkin","localizedName":"Carved Pumpkin","material":{"powerSource":false,"lightValue":0,"hardness":1,"resistance":1,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#007c00","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:cauldron","localizedName":"Cauldron","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":2,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#a7a7a7","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:cave_air","localizedName":"Cave Air","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":true,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:chain_command_block","localizedName":"Chain Command Block","material":{"powerSource":false,"lightValue":0,"hardness":-1,"resistance":3600000,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#a7a7a7","isTranslucent":false,"hasContainer":true}},{"id":"minecraft:chest","localizedName":"Chest","material":{"powerSource":false,"lightValue":0,"hardness":2.5,"resistance":2.5,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":true}},{"id":"minecraft:chipped_anvil","localizedName":"Chipped Anvil","material":{"powerSource":false,"lightValue":0,"hardness":5,"resistance":1200,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":true,"mapColor":"#a7a7a7","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:chiseled_quartz_block","localizedName":"Chiseled Quartz Block","material":{"powerSource":false,"lightValue":0,"hardness":0.8,"resistance":0.8,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:chiseled_red_sandstone","localizedName":"Chiseled Red Sandstone","material":{"powerSource":false,"lightValue":0,"hardness":0.8,"resistance":0.8,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:chiseled_sandstone","localizedName":"Chiseled Sandstone","material":{"powerSource":false,"lightValue":0,"hardness":0.8,"resistance":0.8,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:chiseled_stone_bricks","localizedName":"Chiseled Stone Bricks","material":{"powerSource":false,"lightValue":0,"hardness":1.5,"resistance":6,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:chorus_flower","localizedName":"Chorus Flower","material":{"powerSource":false,"lightValue":0,"hardness":0.4,"resistance":0.4,"ticksRandomly":true,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#007c00","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:chorus_plant","localizedName":"Chorus Plant","material":{"powerSource":false,"lightValue":0,"hardness":0.4,"resistance":0.4,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#007c00","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:clay","localizedName":"Clay","material":{"powerSource":false,"lightValue":0,"hardness":0.6,"resistance":0.6,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#a4a8b8","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:coal_block","localizedName":"Block of Coal","material":{"powerSource":false,"lightValue":0,"hardness":5,"resistance":6,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:coal_ore","localizedName":"Coal Ore","material":{"powerSource":false,"lightValue":0,"hardness":3,"resistance":3,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:coarse_dirt","localizedName":"Coarse Dirt","material":{"powerSource":false,"lightValue":0,"hardness":0.5,"resistance":0.5,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#976d4d","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:cobblestone","localizedName":"Cobblestone","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":6,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:cobblestone_slab","localizedName":"Cobblestone Slab","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":6,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:cobblestone_stairs","localizedName":"Cobblestone Stairs","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":6,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:cobblestone_wall","localizedName":"Cobblestone Wall","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":6,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:cobweb","localizedName":"Cobweb","material":{"powerSource":false,"lightValue":0,"hardness":4,"resistance":4,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#c7c7c7","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:cocoa","localizedName":"Cocoa","material":{"powerSource":false,"lightValue":0,"hardness":0.2,"resistance":3,"ticksRandomly":true,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#007c00","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:command_block","localizedName":"Command Block","material":{"powerSource":false,"lightValue":0,"hardness":-1,"resistance":3600000,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#a7a7a7","isTranslucent":false,"hasContainer":true}},{"id":"minecraft:comparator","localizedName":"Redstone Comparator","material":{"powerSource":true,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:conduit","localizedName":"Conduit","material":{"powerSource":false,"lightValue":15,"hardness":3,"resistance":3,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":true}},{"id":"minecraft:cracked_stone_bricks","localizedName":"Cracked Stone Bricks","material":{"powerSource":false,"lightValue":0,"hardness":1.5,"resistance":6,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:crafting_table","localizedName":"Crafting Table","material":{"powerSource":false,"lightValue":0,"hardness":2.5,"resistance":2.5,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:creeper_head","localizedName":"Creeper Head","material":{"powerSource":false,"lightValue":0,"hardness":1,"resistance":1,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":true}},{"id":"minecraft:creeper_wall_head","localizedName":"Air","material":{"powerSource":false,"lightValue":0,"hardness":1,"resistance":1,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":true}},{"id":"minecraft:cut_red_sandstone","localizedName":"Cut Red Sandstone","material":{"powerSource":false,"lightValue":0,"hardness":0.8,"resistance":0.8,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:cut_sandstone","localizedName":"Cut Sandstone","material":{"powerSource":false,"lightValue":0,"hardness":0.8,"resistance":0.8,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:cyan_banner","localizedName":"Cyan Banner","material":{"powerSource":false,"lightValue":0,"hardness":1,"resistance":1,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":true}},{"id":"minecraft:cyan_bed","localizedName":"Cyan Bed","material":{"powerSource":false,"lightValue":0,"hardness":0.2,"resistance":0.2,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#c7c7c7","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:cyan_carpet","localizedName":"Cyan Carpet","material":{"powerSource":false,"lightValue":0,"hardness":0.1,"resistance":0.1,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":true,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#c7c7c7","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:cyan_concrete","localizedName":"Cyan Concrete","material":{"powerSource":false,"lightValue":0,"hardness":1.8,"resistance":1.8,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:cyan_concrete_powder","localizedName":"Cyan Concrete Powder","material":{"powerSource":false,"lightValue":0,"hardness":0.5,"resistance":0.5,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#f7e9a3","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:cyan_glazed_terracotta","localizedName":"Cyan Glazed Terracotta","material":{"powerSource":false,"lightValue":0,"hardness":1.4,"resistance":1.4,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:cyan_shulker_box","localizedName":"Cyan Shulker Box","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":2,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":true,"hasContainer":true}},{"id":"minecraft:cyan_stained_glass","localizedName":"Cyan Stained Glass","material":{"powerSource":false,"lightValue":0,"hardness":0.3,"resistance":0.3,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:cyan_stained_glass_pane","localizedName":"Cyan Stained Glass Pane","material":{"powerSource":false,"lightValue":0,"hardness":0.3,"resistance":0.3,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:cyan_terracotta","localizedName":"Cyan Terracotta","material":{"powerSource":false,"lightValue":0,"hardness":1.25,"resistance":4.2,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:cyan_wall_banner","localizedName":"Air","material":{"powerSource":false,"lightValue":0,"hardness":1,"resistance":1,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":true}},{"id":"minecraft:cyan_wool","localizedName":"Cyan Wool","material":{"powerSource":false,"lightValue":0,"hardness":0.8,"resistance":0.8,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#c7c7c7","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:damaged_anvil","localizedName":"Damaged Anvil","material":{"powerSource":false,"lightValue":0,"hardness":5,"resistance":1200,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":true,"mapColor":"#a7a7a7","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:dandelion","localizedName":"Dandelion","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#007c00","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:dark_oak_button","localizedName":"Dark Oak Button","material":{"powerSource":true,"lightValue":0,"hardness":0.5,"resistance":0.5,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:dark_oak_door","localizedName":"Dark Oak Door","material":{"powerSource":false,"lightValue":0,"hardness":3,"resistance":3,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:dark_oak_fence","localizedName":"Dark Oak Fence","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":3,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:dark_oak_fence_gate","localizedName":"Dark Oak Fence Gate","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":3,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:dark_oak_leaves","localizedName":"Dark Oak Leaves","material":{"powerSource":false,"lightValue":0,"hardness":0.2,"resistance":0.2,"ticksRandomly":true,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#007c00","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:dark_oak_log","localizedName":"Dark Oak Log","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":2,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:dark_oak_planks","localizedName":"Dark Oak Planks","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":3,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:dark_oak_pressure_plate","localizedName":"Dark Oak Pressure Plate","material":{"powerSource":true,"lightValue":0,"hardness":0.5,"resistance":0.5,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:dark_oak_sapling","localizedName":"Dark Oak Sapling","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":true,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#007c00","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:dark_oak_slab","localizedName":"Dark Oak Slab","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":3,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:dark_oak_stairs","localizedName":"Dark Oak Stairs","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":3,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:dark_oak_trapdoor","localizedName":"Dark Oak Trapdoor","material":{"powerSource":false,"lightValue":0,"hardness":3,"resistance":3,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:dark_oak_wood","localizedName":"Dark Oak Wood","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":2,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:dark_prismarine","localizedName":"Dark Prismarine","material":{"powerSource":false,"lightValue":0,"hardness":1.5,"resistance":6,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:dark_prismarine_slab","localizedName":"Dark Prismarine Slab","material":{"powerSource":false,"lightValue":0,"hardness":1.5,"resistance":6,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:dark_prismarine_stairs","localizedName":"Dark Prismarine Stairs","material":{"powerSource":false,"lightValue":0,"hardness":1.5,"resistance":6,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:daylight_detector","localizedName":"Daylight Detector","material":{"powerSource":true,"lightValue":0,"hardness":0.2,"resistance":0.2,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":true}},{"id":"minecraft:dead_brain_coral","localizedName":"Dead Brain Coral","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:dead_brain_coral_block","localizedName":"Dead Brain Coral Block","material":{"powerSource":false,"lightValue":0,"hardness":1.5,"resistance":6,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:dead_brain_coral_fan","localizedName":"Dead Brain Coral Fan","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:dead_brain_coral_wall_fan","localizedName":"Dead Brain Coral Wall Fan","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:dead_bubble_coral","localizedName":"Dead Bubble Coral","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:dead_bubble_coral_block","localizedName":"Dead Bubble Coral Block","material":{"powerSource":false,"lightValue":0,"hardness":1.5,"resistance":6,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:dead_bubble_coral_fan","localizedName":"Dead Bubble Coral Fan","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:dead_bubble_coral_wall_fan","localizedName":"Dead Bubble Coral Wall Fan","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:dead_bush","localizedName":"Dead Bush","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":true,"opaque":false,"replacedDuringPlacement":true,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#007c00","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:dead_fire_coral","localizedName":"Dead Fire Coral","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:dead_fire_coral_block","localizedName":"Dead Fire Coral Block","material":{"powerSource":false,"lightValue":0,"hardness":1.5,"resistance":6,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:dead_fire_coral_fan","localizedName":"Dead Fire Coral Fan","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:dead_fire_coral_wall_fan","localizedName":"Dead Fire Coral Wall Fan","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:dead_horn_coral","localizedName":"Dead Horn Coral","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:dead_horn_coral_block","localizedName":"Dead Horn Coral Block","material":{"powerSource":false,"lightValue":0,"hardness":1.5,"resistance":6,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:dead_horn_coral_fan","localizedName":"Dead Horn Coral Fan","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:dead_horn_coral_wall_fan","localizedName":"Dead Horn Coral Wall Fan","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:dead_tube_coral","localizedName":"Dead Tube Coral","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:dead_tube_coral_block","localizedName":"Dead Tube Coral Block","material":{"powerSource":false,"lightValue":0,"hardness":1.5,"resistance":6,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:dead_tube_coral_fan","localizedName":"Dead Tube Coral Fan","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:dead_tube_coral_wall_fan","localizedName":"Dead Tube Coral Wall Fan","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:detector_rail","localizedName":"Detector Rail","material":{"powerSource":true,"lightValue":0,"hardness":0.7,"resistance":0.7,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:diamond_block","localizedName":"Block of Diamond","material":{"powerSource":false,"lightValue":0,"hardness":5,"resistance":6,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#a7a7a7","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:diamond_ore","localizedName":"Diamond Ore","material":{"powerSource":false,"lightValue":0,"hardness":3,"resistance":3,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:diorite","localizedName":"Diorite","material":{"powerSource":false,"lightValue":0,"hardness":1.5,"resistance":6,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:dirt","localizedName":"Dirt","material":{"powerSource":false,"lightValue":0,"hardness":0.5,"resistance":0.5,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#976d4d","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:dispenser","localizedName":"Dispenser","material":{"powerSource":false,"lightValue":0,"hardness":3.5,"resistance":3.5,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":true}},{"id":"minecraft:dragon_egg","localizedName":"Dragon Egg","material":{"powerSource":false,"lightValue":1,"hardness":3,"resistance":9,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#007c00","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:dragon_head","localizedName":"Dragon Head","material":{"powerSource":false,"lightValue":0,"hardness":1,"resistance":1,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":true}},{"id":"minecraft:dragon_wall_head","localizedName":"Air","material":{"powerSource":false,"lightValue":0,"hardness":1,"resistance":1,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":true}},{"id":"minecraft:dried_kelp_block","localizedName":"Dried Kelp Block","material":{"powerSource":false,"lightValue":0,"hardness":0.5,"resistance":2.5,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#7fb238","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:dropper","localizedName":"Dropper","material":{"powerSource":false,"lightValue":0,"hardness":3.5,"resistance":3.5,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":true}},{"id":"minecraft:emerald_block","localizedName":"Block of Emerald","material":{"powerSource":false,"lightValue":0,"hardness":5,"resistance":6,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#a7a7a7","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:emerald_ore","localizedName":"Emerald Ore","material":{"powerSource":false,"lightValue":0,"hardness":3,"resistance":3,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:enchanting_table","localizedName":"Enchanting Table","material":{"powerSource":false,"lightValue":0,"hardness":5,"resistance":1200,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":true}},{"id":"minecraft:end_gateway","localizedName":"End Gateway","material":{"powerSource":false,"lightValue":15,"hardness":-1,"resistance":3600000,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":true,"mapColor":"#000000","isTranslucent":false,"hasContainer":true}},{"id":"minecraft:end_portal","localizedName":"End Portal","material":{"powerSource":false,"lightValue":15,"hardness":-1,"resistance":3600000,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":true,"mapColor":"#000000","isTranslucent":false,"hasContainer":true}},{"id":"minecraft:end_portal_frame","localizedName":"End Portal Frame","material":{"powerSource":false,"lightValue":1,"hardness":-1,"resistance":3600000,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:end_rod","localizedName":"End Rod","material":{"powerSource":false,"lightValue":14,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:end_stone","localizedName":"End Stone","material":{"powerSource":false,"lightValue":0,"hardness":3,"resistance":9,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:end_stone_bricks","localizedName":"End Stone Bricks","material":{"powerSource":false,"lightValue":0,"hardness":0.8,"resistance":0.8,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:ender_chest","localizedName":"Ender Chest","material":{"powerSource":false,"lightValue":7,"hardness":22.5,"resistance":600,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":true}},{"id":"minecraft:farmland","localizedName":"Farmland","material":{"powerSource":false,"lightValue":0,"hardness":0.6,"resistance":0.6,"ticksRandomly":true,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#976d4d","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:fern","localizedName":"Fern","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":true,"opaque":false,"replacedDuringPlacement":true,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#007c00","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:fire","localizedName":"Fire","material":{"powerSource":false,"lightValue":15,"hardness":0,"resistance":0,"ticksRandomly":true,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":true,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:fire_coral","localizedName":"Fire Coral","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#4040ff","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:fire_coral_block","localizedName":"Fire Coral Block","material":{"powerSource":false,"lightValue":0,"hardness":1.5,"resistance":6,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:fire_coral_fan","localizedName":"Fire Coral Fan","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#4040ff","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:fire_coral_wall_fan","localizedName":"Fire Coral Wall Fan","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#4040ff","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:flower_pot","localizedName":"Flower Pot","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:frosted_ice","localizedName":"Frosted Ice","material":{"powerSource":false,"lightValue":0,"hardness":0.5,"resistance":0.5,"ticksRandomly":true,"fullCube":true,"slipperiness":0.98,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#a0a0ff","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:furnace","localizedName":"Furnace","material":{"powerSource":false,"lightValue":0,"hardness":3.5,"resistance":3.5,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":true}},{"id":"minecraft:glass","localizedName":"Glass","material":{"powerSource":false,"lightValue":0,"hardness":0.3,"resistance":0.3,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:glass_pane","localizedName":"Glass Pane","material":{"powerSource":false,"lightValue":0,"hardness":0.3,"resistance":0.3,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:glowstone","localizedName":"Glowstone","material":{"powerSource":false,"lightValue":15,"hardness":0.3,"resistance":0.3,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:gold_block","localizedName":"Block of Gold","material":{"powerSource":false,"lightValue":0,"hardness":3,"resistance":6,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#a7a7a7","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:gold_ore","localizedName":"Gold Ore","material":{"powerSource":false,"lightValue":0,"hardness":3,"resistance":3,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:granite","localizedName":"Granite","material":{"powerSource":false,"lightValue":0,"hardness":1.5,"resistance":6,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:grass","localizedName":"Grass","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":true,"opaque":false,"replacedDuringPlacement":true,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#007c00","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:grass_block","localizedName":"Grass Block","material":{"powerSource":false,"lightValue":0,"hardness":0.6,"resistance":0.6,"ticksRandomly":true,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#7fb238","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:grass_path","localizedName":"Grass Path","material":{"powerSource":false,"lightValue":0,"hardness":0.65,"resistance":0.65,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#976d4d","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:gravel","localizedName":"Gravel","material":{"powerSource":false,"lightValue":0,"hardness":0.6,"resistance":0.6,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#f7e9a3","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:gray_banner","localizedName":"Gray Banner","material":{"powerSource":false,"lightValue":0,"hardness":1,"resistance":1,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":true}},{"id":"minecraft:gray_bed","localizedName":"Gray Bed","material":{"powerSource":false,"lightValue":0,"hardness":0.2,"resistance":0.2,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#c7c7c7","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:gray_carpet","localizedName":"Gray Carpet","material":{"powerSource":false,"lightValue":0,"hardness":0.1,"resistance":0.1,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":true,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#c7c7c7","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:gray_concrete","localizedName":"Gray Concrete","material":{"powerSource":false,"lightValue":0,"hardness":1.8,"resistance":1.8,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:gray_concrete_powder","localizedName":"Gray Concrete Powder","material":{"powerSource":false,"lightValue":0,"hardness":0.5,"resistance":0.5,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#f7e9a3","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:gray_glazed_terracotta","localizedName":"Gray Glazed Terracotta","material":{"powerSource":false,"lightValue":0,"hardness":1.4,"resistance":1.4,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:gray_shulker_box","localizedName":"Gray Shulker Box","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":2,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":true,"hasContainer":true}},{"id":"minecraft:gray_stained_glass","localizedName":"Gray Stained Glass","material":{"powerSource":false,"lightValue":0,"hardness":0.3,"resistance":0.3,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:gray_stained_glass_pane","localizedName":"Gray Stained Glass Pane","material":{"powerSource":false,"lightValue":0,"hardness":0.3,"resistance":0.3,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:gray_terracotta","localizedName":"Gray Terracotta","material":{"powerSource":false,"lightValue":0,"hardness":1.25,"resistance":4.2,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:gray_wall_banner","localizedName":"Air","material":{"powerSource":false,"lightValue":0,"hardness":1,"resistance":1,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":true}},{"id":"minecraft:gray_wool","localizedName":"Gray Wool","material":{"powerSource":false,"lightValue":0,"hardness":0.8,"resistance":0.8,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#c7c7c7","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:green_banner","localizedName":"Green Banner","material":{"powerSource":false,"lightValue":0,"hardness":1,"resistance":1,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":true}},{"id":"minecraft:green_bed","localizedName":"Green Bed","material":{"powerSource":false,"lightValue":0,"hardness":0.2,"resistance":0.2,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#c7c7c7","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:green_carpet","localizedName":"Green Carpet","material":{"powerSource":false,"lightValue":0,"hardness":0.1,"resistance":0.1,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":true,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#c7c7c7","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:green_concrete","localizedName":"Green Concrete","material":{"powerSource":false,"lightValue":0,"hardness":1.8,"resistance":1.8,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:green_concrete_powder","localizedName":"Green Concrete Powder","material":{"powerSource":false,"lightValue":0,"hardness":0.5,"resistance":0.5,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#f7e9a3","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:green_glazed_terracotta","localizedName":"Green Glazed Terracotta","material":{"powerSource":false,"lightValue":0,"hardness":1.4,"resistance":1.4,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:green_shulker_box","localizedName":"Green Shulker Box","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":2,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":true,"hasContainer":true}},{"id":"minecraft:green_stained_glass","localizedName":"Green Stained Glass","material":{"powerSource":false,"lightValue":0,"hardness":0.3,"resistance":0.3,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:green_stained_glass_pane","localizedName":"Green Stained Glass Pane","material":{"powerSource":false,"lightValue":0,"hardness":0.3,"resistance":0.3,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:green_terracotta","localizedName":"Green Terracotta","material":{"powerSource":false,"lightValue":0,"hardness":1.25,"resistance":4.2,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:green_wall_banner","localizedName":"Air","material":{"powerSource":false,"lightValue":0,"hardness":1,"resistance":1,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":true}},{"id":"minecraft:green_wool","localizedName":"Green Wool","material":{"powerSource":false,"lightValue":0,"hardness":0.8,"resistance":0.8,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#c7c7c7","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:hay_block","localizedName":"Hay Bale","material":{"powerSource":false,"lightValue":0,"hardness":0.5,"resistance":0.5,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#7fb238","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:heavy_weighted_pressure_plate","localizedName":"Heavy Weighted Pressure Plate","material":{"powerSource":true,"lightValue":0,"hardness":0.5,"resistance":0.5,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#a7a7a7","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:hopper","localizedName":"Hopper","material":{"powerSource":false,"lightValue":0,"hardness":3,"resistance":4.8,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#a7a7a7","isTranslucent":false,"hasContainer":true}},{"id":"minecraft:horn_coral","localizedName":"Horn Coral","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#4040ff","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:horn_coral_block","localizedName":"Horn Coral Block","material":{"powerSource":false,"lightValue":0,"hardness":1.5,"resistance":6,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:horn_coral_fan","localizedName":"Horn Coral Fan","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#4040ff","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:horn_coral_wall_fan","localizedName":"Horn Coral Wall Fan","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#4040ff","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:ice","localizedName":"Ice","material":{"powerSource":false,"lightValue":0,"hardness":0.5,"resistance":0.5,"ticksRandomly":true,"fullCube":true,"slipperiness":0.98,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#a0a0ff","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:infested_chiseled_stone_bricks","localizedName":"Infested Chiseled Stone Bricks","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0.75,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#a4a8b8","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:infested_cobblestone","localizedName":"Infested Cobblestone","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0.75,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#a4a8b8","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:infested_cracked_stone_bricks","localizedName":"Infested Cracked Stone Bricks","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0.75,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#a4a8b8","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:infested_mossy_stone_bricks","localizedName":"Infested Mossy Stone Bricks","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0.75,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#a4a8b8","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:infested_stone","localizedName":"Infested Stone","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0.75,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#a4a8b8","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:infested_stone_bricks","localizedName":"Infested Stone Bricks","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0.75,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#a4a8b8","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:iron_bars","localizedName":"Iron Bars","material":{"powerSource":false,"lightValue":0,"hardness":5,"resistance":6,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#a7a7a7","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:iron_block","localizedName":"Block of Iron","material":{"powerSource":false,"lightValue":0,"hardness":5,"resistance":6,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#a7a7a7","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:iron_door","localizedName":"Iron Door","material":{"powerSource":false,"lightValue":0,"hardness":5,"resistance":5,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#a7a7a7","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:iron_ore","localizedName":"Iron Ore","material":{"powerSource":false,"lightValue":0,"hardness":3,"resistance":3,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:iron_trapdoor","localizedName":"Iron Trapdoor","material":{"powerSource":false,"lightValue":0,"hardness":5,"resistance":5,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#a7a7a7","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:jack_o_lantern","localizedName":"Jack o'Lantern","material":{"powerSource":false,"lightValue":15,"hardness":1,"resistance":1,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#007c00","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:jukebox","localizedName":"Jukebox","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":6,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":true}},{"id":"minecraft:jungle_button","localizedName":"Jungle Button","material":{"powerSource":true,"lightValue":0,"hardness":0.5,"resistance":0.5,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:jungle_door","localizedName":"Jungle Door","material":{"powerSource":false,"lightValue":0,"hardness":3,"resistance":3,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:jungle_fence","localizedName":"Jungle Fence","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":3,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:jungle_fence_gate","localizedName":"Jungle Fence Gate","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":3,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:jungle_leaves","localizedName":"Jungle Leaves","material":{"powerSource":false,"lightValue":0,"hardness":0.2,"resistance":0.2,"ticksRandomly":true,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#007c00","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:jungle_log","localizedName":"Jungle Log","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":2,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:jungle_planks","localizedName":"Jungle Planks","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":3,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:jungle_pressure_plate","localizedName":"Jungle Pressure Plate","material":{"powerSource":true,"lightValue":0,"hardness":0.5,"resistance":0.5,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:jungle_sapling","localizedName":"Jungle Sapling","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":true,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#007c00","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:jungle_slab","localizedName":"Jungle Slab","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":3,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:jungle_stairs","localizedName":"Jungle Stairs","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":3,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:jungle_trapdoor","localizedName":"Jungle Trapdoor","material":{"powerSource":false,"lightValue":0,"hardness":3,"resistance":3,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:jungle_wood","localizedName":"Jungle Wood","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":2,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:kelp","localizedName":"Kelp","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":true,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#4040ff","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:kelp_plant","localizedName":"Kelp Plant","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#4040ff","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:ladder","localizedName":"Ladder","material":{"powerSource":false,"lightValue":0,"hardness":0.4,"resistance":0.4,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:lapis_block","localizedName":"Lapis Lazuli Block","material":{"powerSource":false,"lightValue":0,"hardness":3,"resistance":3,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#a7a7a7","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:lapis_ore","localizedName":"Lapis Lazuli Ore","material":{"powerSource":false,"lightValue":0,"hardness":3,"resistance":3,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:large_fern","localizedName":"Large Fern","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":true,"opaque":false,"replacedDuringPlacement":true,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#007c00","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:lava","localizedName":"Lava","material":{"powerSource":false,"lightValue":15,"hardness":100,"resistance":100,"ticksRandomly":true,"fullCube":false,"slipperiness":0.6,"liquid":true,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":true,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#ff0000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:lever","localizedName":"Lever","material":{"powerSource":true,"lightValue":0,"hardness":0.5,"resistance":0.5,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:light_blue_banner","localizedName":"Light Blue Banner","material":{"powerSource":false,"lightValue":0,"hardness":1,"resistance":1,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":true}},{"id":"minecraft:light_blue_bed","localizedName":"Light Blue Bed","material":{"powerSource":false,"lightValue":0,"hardness":0.2,"resistance":0.2,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#c7c7c7","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:light_blue_carpet","localizedName":"Light Blue Carpet","material":{"powerSource":false,"lightValue":0,"hardness":0.1,"resistance":0.1,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":true,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#c7c7c7","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:light_blue_concrete","localizedName":"Light Blue Concrete","material":{"powerSource":false,"lightValue":0,"hardness":1.8,"resistance":1.8,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:light_blue_concrete_powder","localizedName":"Light Blue Concrete Powder","material":{"powerSource":false,"lightValue":0,"hardness":0.5,"resistance":0.5,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#f7e9a3","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:light_blue_glazed_terracotta","localizedName":"Light Blue Glazed Terracotta","material":{"powerSource":false,"lightValue":0,"hardness":1.4,"resistance":1.4,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:light_blue_shulker_box","localizedName":"Light Blue Shulker Box","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":2,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":true,"hasContainer":true}},{"id":"minecraft:light_blue_stained_glass","localizedName":"Light Blue Stained Glass","material":{"powerSource":false,"lightValue":0,"hardness":0.3,"resistance":0.3,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:light_blue_stained_glass_pane","localizedName":"Light Blue Stained Glass Pane","material":{"powerSource":false,"lightValue":0,"hardness":0.3,"resistance":0.3,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:light_blue_terracotta","localizedName":"Light Blue Terracotta","material":{"powerSource":false,"lightValue":0,"hardness":1.25,"resistance":4.2,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:light_blue_wall_banner","localizedName":"Air","material":{"powerSource":false,"lightValue":0,"hardness":1,"resistance":1,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":true}},{"id":"minecraft:light_blue_wool","localizedName":"Light Blue Wool","material":{"powerSource":false,"lightValue":0,"hardness":0.8,"resistance":0.8,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#c7c7c7","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:light_gray_banner","localizedName":"Light Gray Banner","material":{"powerSource":false,"lightValue":0,"hardness":1,"resistance":1,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":true}},{"id":"minecraft:light_gray_bed","localizedName":"Light Gray Bed","material":{"powerSource":false,"lightValue":0,"hardness":0.2,"resistance":0.2,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#c7c7c7","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:light_gray_carpet","localizedName":"Light Gray Carpet","material":{"powerSource":false,"lightValue":0,"hardness":0.1,"resistance":0.1,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":true,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#c7c7c7","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:light_gray_concrete","localizedName":"Light Gray Concrete","material":{"powerSource":false,"lightValue":0,"hardness":1.8,"resistance":1.8,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:light_gray_concrete_powder","localizedName":"Light Gray Concrete Powder","material":{"powerSource":false,"lightValue":0,"hardness":0.5,"resistance":0.5,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#f7e9a3","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:light_gray_glazed_terracotta","localizedName":"Light Gray Glazed Terracotta","material":{"powerSource":false,"lightValue":0,"hardness":1.4,"resistance":1.4,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:light_gray_shulker_box","localizedName":"Light Gray Shulker Box","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":2,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":true,"hasContainer":true}},{"id":"minecraft:light_gray_stained_glass","localizedName":"Light Gray Stained Glass","material":{"powerSource":false,"lightValue":0,"hardness":0.3,"resistance":0.3,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:light_gray_stained_glass_pane","localizedName":"Light Gray Stained Glass Pane","material":{"powerSource":false,"lightValue":0,"hardness":0.3,"resistance":0.3,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:light_gray_terracotta","localizedName":"Light Gray Terracotta","material":{"powerSource":false,"lightValue":0,"hardness":1.25,"resistance":4.2,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:light_gray_wall_banner","localizedName":"Air","material":{"powerSource":false,"lightValue":0,"hardness":1,"resistance":1,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":true}},{"id":"minecraft:light_gray_wool","localizedName":"Light Gray Wool","material":{"powerSource":false,"lightValue":0,"hardness":0.8,"resistance":0.8,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#c7c7c7","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:light_weighted_pressure_plate","localizedName":"Light Weighted Pressure Plate","material":{"powerSource":true,"lightValue":0,"hardness":0.5,"resistance":0.5,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#a7a7a7","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:lilac","localizedName":"Lilac","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":true,"opaque":false,"replacedDuringPlacement":true,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#007c00","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:lily_pad","localizedName":"Lily Pad","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#007c00","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:lime_banner","localizedName":"Lime Banner","material":{"powerSource":false,"lightValue":0,"hardness":1,"resistance":1,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":true}},{"id":"minecraft:lime_bed","localizedName":"Lime Bed","material":{"powerSource":false,"lightValue":0,"hardness":0.2,"resistance":0.2,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#c7c7c7","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:lime_carpet","localizedName":"Lime Carpet","material":{"powerSource":false,"lightValue":0,"hardness":0.1,"resistance":0.1,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":true,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#c7c7c7","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:lime_concrete","localizedName":"Lime Concrete","material":{"powerSource":false,"lightValue":0,"hardness":1.8,"resistance":1.8,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:lime_concrete_powder","localizedName":"Lime Concrete Powder","material":{"powerSource":false,"lightValue":0,"hardness":0.5,"resistance":0.5,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#f7e9a3","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:lime_glazed_terracotta","localizedName":"Lime Glazed Terracotta","material":{"powerSource":false,"lightValue":0,"hardness":1.4,"resistance":1.4,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:lime_shulker_box","localizedName":"Lime Shulker Box","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":2,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":true,"hasContainer":true}},{"id":"minecraft:lime_stained_glass","localizedName":"Lime Stained Glass","material":{"powerSource":false,"lightValue":0,"hardness":0.3,"resistance":0.3,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:lime_stained_glass_pane","localizedName":"Lime Stained Glass Pane","material":{"powerSource":false,"lightValue":0,"hardness":0.3,"resistance":0.3,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:lime_terracotta","localizedName":"Lime Terracotta","material":{"powerSource":false,"lightValue":0,"hardness":1.25,"resistance":4.2,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:lime_wall_banner","localizedName":"Air","material":{"powerSource":false,"lightValue":0,"hardness":1,"resistance":1,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":true}},{"id":"minecraft:lime_wool","localizedName":"Lime Wool","material":{"powerSource":false,"lightValue":0,"hardness":0.8,"resistance":0.8,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#c7c7c7","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:magenta_banner","localizedName":"Magenta Banner","material":{"powerSource":false,"lightValue":0,"hardness":1,"resistance":1,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":true}},{"id":"minecraft:magenta_bed","localizedName":"Magenta Bed","material":{"powerSource":false,"lightValue":0,"hardness":0.2,"resistance":0.2,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#c7c7c7","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:magenta_carpet","localizedName":"Magenta Carpet","material":{"powerSource":false,"lightValue":0,"hardness":0.1,"resistance":0.1,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":true,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#c7c7c7","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:magenta_concrete","localizedName":"Magenta Concrete","material":{"powerSource":false,"lightValue":0,"hardness":1.8,"resistance":1.8,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:magenta_concrete_powder","localizedName":"Magenta Concrete Powder","material":{"powerSource":false,"lightValue":0,"hardness":0.5,"resistance":0.5,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#f7e9a3","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:magenta_glazed_terracotta","localizedName":"Magenta Glazed Terracotta","material":{"powerSource":false,"lightValue":0,"hardness":1.4,"resistance":1.4,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:magenta_shulker_box","localizedName":"Magenta Shulker Box","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":2,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":true,"hasContainer":true}},{"id":"minecraft:magenta_stained_glass","localizedName":"Magenta Stained Glass","material":{"powerSource":false,"lightValue":0,"hardness":0.3,"resistance":0.3,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:magenta_stained_glass_pane","localizedName":"Magenta Stained Glass Pane","material":{"powerSource":false,"lightValue":0,"hardness":0.3,"resistance":0.3,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:magenta_terracotta","localizedName":"Magenta Terracotta","material":{"powerSource":false,"lightValue":0,"hardness":1.25,"resistance":4.2,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:magenta_wall_banner","localizedName":"Air","material":{"powerSource":false,"lightValue":0,"hardness":1,"resistance":1,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":true}},{"id":"minecraft:magenta_wool","localizedName":"Magenta Wool","material":{"powerSource":false,"lightValue":0,"hardness":0.8,"resistance":0.8,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#c7c7c7","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:magma_block","localizedName":"Magma Block","material":{"powerSource":false,"lightValue":3,"hardness":0.5,"resistance":0.5,"ticksRandomly":true,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:melon","localizedName":"Melon","material":{"powerSource":false,"lightValue":0,"hardness":1,"resistance":1,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#007c00","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:melon_stem","localizedName":"Melon Stem","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":true,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#007c00","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:mossy_cobblestone","localizedName":"Mossy Cobblestone","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":6,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:mossy_cobblestone_wall","localizedName":"Mossy Cobblestone Wall","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":6,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:mossy_stone_bricks","localizedName":"Mossy Stone Bricks","material":{"powerSource":false,"lightValue":0,"hardness":1.5,"resistance":6,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:moving_piston","localizedName":"Moving Piston","material":{"powerSource":false,"lightValue":0,"hardness":-1,"resistance":0,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":true,"mapColor":"#707070","isTranslucent":true,"hasContainer":true}},{"id":"minecraft:mushroom_stem","localizedName":"Mushroom Stem","material":{"powerSource":false,"lightValue":0,"hardness":0.2,"resistance":0.2,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:mycelium","localizedName":"Mycelium","material":{"powerSource":false,"lightValue":0,"hardness":0.6,"resistance":0.6,"ticksRandomly":true,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#7fb238","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:nether_brick_fence","localizedName":"Nether Brick Fence","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":6,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:nether_brick_slab","localizedName":"Nether Brick Slab","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":6,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:nether_brick_stairs","localizedName":"Nether Brick Stairs","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":6,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:nether_bricks","localizedName":"Nether Bricks","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":6,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:nether_portal","localizedName":"Nether Portal","material":{"powerSource":false,"lightValue":11,"hardness":-1,"resistance":0,"ticksRandomly":true,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":true,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:nether_quartz_ore","localizedName":"Nether Quartz Ore","material":{"powerSource":false,"lightValue":0,"hardness":3,"resistance":3,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:nether_wart","localizedName":"Nether Wart","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":true,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#007c00","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:nether_wart_block","localizedName":"Nether Wart Block","material":{"powerSource":false,"lightValue":0,"hardness":1,"resistance":1,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#7fb238","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:netherrack","localizedName":"Netherrack","material":{"powerSource":false,"lightValue":0,"hardness":0.4,"resistance":0.4,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:note_block","localizedName":"Note Block","material":{"powerSource":false,"lightValue":0,"hardness":0.8,"resistance":0.8,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:oak_button","localizedName":"Oak Button","material":{"powerSource":true,"lightValue":0,"hardness":0.5,"resistance":0.5,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:oak_door","localizedName":"Oak Door","material":{"powerSource":false,"lightValue":0,"hardness":3,"resistance":3,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:oak_fence","localizedName":"Oak Fence","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":3,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:oak_fence_gate","localizedName":"Oak Fence Gate","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":3,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:oak_leaves","localizedName":"Oak Leaves","material":{"powerSource":false,"lightValue":0,"hardness":0.2,"resistance":0.2,"ticksRandomly":true,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#007c00","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:oak_log","localizedName":"Oak Log","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":2,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:oak_planks","localizedName":"Oak Planks","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":3,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:oak_pressure_plate","localizedName":"Oak Pressure Plate","material":{"powerSource":true,"lightValue":0,"hardness":0.5,"resistance":0.5,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:oak_sapling","localizedName":"Oak Sapling","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":true,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#007c00","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:oak_slab","localizedName":"Oak Slab","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":3,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:oak_stairs","localizedName":"Oak Stairs","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":3,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:oak_trapdoor","localizedName":"Oak Trapdoor","material":{"powerSource":false,"lightValue":0,"hardness":3,"resistance":3,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:oak_wood","localizedName":"Oak Wood","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":2,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:observer","localizedName":"Observer","material":{"powerSource":true,"lightValue":0,"hardness":3,"resistance":3,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:obsidian","localizedName":"Obsidian","material":{"powerSource":false,"lightValue":0,"hardness":50,"resistance":1200,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:orange_banner","localizedName":"Orange Banner","material":{"powerSource":false,"lightValue":0,"hardness":1,"resistance":1,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":true}},{"id":"minecraft:orange_bed","localizedName":"Orange Bed","material":{"powerSource":false,"lightValue":0,"hardness":0.2,"resistance":0.2,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#c7c7c7","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:orange_carpet","localizedName":"Orange Carpet","material":{"powerSource":false,"lightValue":0,"hardness":0.1,"resistance":0.1,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":true,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#c7c7c7","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:orange_concrete","localizedName":"Orange Concrete","material":{"powerSource":false,"lightValue":0,"hardness":1.8,"resistance":1.8,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:orange_concrete_powder","localizedName":"Orange Concrete Powder","material":{"powerSource":false,"lightValue":0,"hardness":0.5,"resistance":0.5,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#f7e9a3","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:orange_glazed_terracotta","localizedName":"Orange Glazed Terracotta","material":{"powerSource":false,"lightValue":0,"hardness":1.4,"resistance":1.4,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:orange_shulker_box","localizedName":"Orange Shulker Box","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":2,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":true,"hasContainer":true}},{"id":"minecraft:orange_stained_glass","localizedName":"Orange Stained Glass","material":{"powerSource":false,"lightValue":0,"hardness":0.3,"resistance":0.3,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:orange_stained_glass_pane","localizedName":"Orange Stained Glass Pane","material":{"powerSource":false,"lightValue":0,"hardness":0.3,"resistance":0.3,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:orange_terracotta","localizedName":"Orange Terracotta","material":{"powerSource":false,"lightValue":0,"hardness":1.25,"resistance":4.2,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:orange_tulip","localizedName":"Orange Tulip","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#007c00","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:orange_wall_banner","localizedName":"Air","material":{"powerSource":false,"lightValue":0,"hardness":1,"resistance":1,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":true}},{"id":"minecraft:orange_wool","localizedName":"Orange Wool","material":{"powerSource":false,"lightValue":0,"hardness":0.8,"resistance":0.8,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#c7c7c7","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:oxeye_daisy","localizedName":"Oxeye Daisy","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#007c00","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:packed_ice","localizedName":"Packed Ice","material":{"powerSource":false,"lightValue":0,"hardness":0.5,"resistance":0.5,"ticksRandomly":false,"fullCube":true,"slipperiness":0.98,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#a0a0ff","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:peony","localizedName":"Peony","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":true,"opaque":false,"replacedDuringPlacement":true,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#007c00","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:petrified_oak_slab","localizedName":"Petrified Oak Slab","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":6,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:pink_banner","localizedName":"Pink Banner","material":{"powerSource":false,"lightValue":0,"hardness":1,"resistance":1,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":true}},{"id":"minecraft:pink_bed","localizedName":"Pink Bed","material":{"powerSource":false,"lightValue":0,"hardness":0.2,"resistance":0.2,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#c7c7c7","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:pink_carpet","localizedName":"Pink Carpet","material":{"powerSource":false,"lightValue":0,"hardness":0.1,"resistance":0.1,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":true,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#c7c7c7","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:pink_concrete","localizedName":"Pink Concrete","material":{"powerSource":false,"lightValue":0,"hardness":1.8,"resistance":1.8,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:pink_concrete_powder","localizedName":"Pink Concrete Powder","material":{"powerSource":false,"lightValue":0,"hardness":0.5,"resistance":0.5,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#f7e9a3","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:pink_glazed_terracotta","localizedName":"Pink Glazed Terracotta","material":{"powerSource":false,"lightValue":0,"hardness":1.4,"resistance":1.4,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:pink_shulker_box","localizedName":"Pink Shulker Box","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":2,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":true,"hasContainer":true}},{"id":"minecraft:pink_stained_glass","localizedName":"Pink Stained Glass","material":{"powerSource":false,"lightValue":0,"hardness":0.3,"resistance":0.3,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:pink_stained_glass_pane","localizedName":"Pink Stained Glass Pane","material":{"powerSource":false,"lightValue":0,"hardness":0.3,"resistance":0.3,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:pink_terracotta","localizedName":"Pink Terracotta","material":{"powerSource":false,"lightValue":0,"hardness":1.25,"resistance":4.2,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:pink_tulip","localizedName":"Pink Tulip","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#007c00","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:pink_wall_banner","localizedName":"Air","material":{"powerSource":false,"lightValue":0,"hardness":1,"resistance":1,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":true}},{"id":"minecraft:pink_wool","localizedName":"Pink Wool","material":{"powerSource":false,"lightValue":0,"hardness":0.8,"resistance":0.8,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#c7c7c7","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:piston","localizedName":"Piston","material":{"powerSource":false,"lightValue":0,"hardness":0.5,"resistance":0.5,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":true,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:piston_head","localizedName":"Piston Head","material":{"powerSource":false,"lightValue":0,"hardness":0.5,"resistance":0.5,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":true,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:player_head","localizedName":"Player Head","material":{"powerSource":false,"lightValue":0,"hardness":1,"resistance":1,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":true}},{"id":"minecraft:player_wall_head","localizedName":"Air","material":{"powerSource":false,"lightValue":0,"hardness":1,"resistance":1,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":true}},{"id":"minecraft:podzol","localizedName":"Podzol","material":{"powerSource":false,"lightValue":0,"hardness":0.5,"resistance":0.5,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#976d4d","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:polished_andesite","localizedName":"Polished Andesite","material":{"powerSource":false,"lightValue":0,"hardness":1.5,"resistance":6,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:polished_diorite","localizedName":"Polished Diorite","material":{"powerSource":false,"lightValue":0,"hardness":1.5,"resistance":6,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:polished_granite","localizedName":"Polished Granite","material":{"powerSource":false,"lightValue":0,"hardness":1.5,"resistance":6,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:poppy","localizedName":"Poppy","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#007c00","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:potatoes","localizedName":"Potatoes","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":true,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#007c00","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:potted_acacia_sapling","localizedName":"Potted Acacia Sapling","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:potted_allium","localizedName":"Potted Allium","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:potted_azure_bluet","localizedName":"Potted Azure Bluet","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:potted_birch_sapling","localizedName":"Potted Birch Sapling","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:potted_blue_orchid","localizedName":"Potted Blue Orchid","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:potted_brown_mushroom","localizedName":"Potted Brown Mushroom","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:potted_cactus","localizedName":"Potted Cactus","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:potted_dandelion","localizedName":"Potted Dandelion","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:potted_dark_oak_sapling","localizedName":"Potted Dark Oak Sapling","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:potted_dead_bush","localizedName":"Potted Dead Bush","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:potted_fern","localizedName":"Potted Fern","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:potted_jungle_sapling","localizedName":"Potted Jungle Sapling","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:potted_oak_sapling","localizedName":"Potted Oak Sapling","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:potted_orange_tulip","localizedName":"Potted Orange Tulip","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:potted_oxeye_daisy","localizedName":"Potted Oxeye Daisy","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:potted_pink_tulip","localizedName":"Potted Pink Tulip","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:potted_poppy","localizedName":"Potted Poppy","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:potted_red_mushroom","localizedName":"Potted Red Mushroom","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:potted_red_tulip","localizedName":"Potted Red Tulip","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:potted_spruce_sapling","localizedName":"Potted Spruce Sapling","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:potted_white_tulip","localizedName":"Potted White Tulip","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:powered_rail","localizedName":"Powered Rail","material":{"powerSource":false,"lightValue":0,"hardness":0.7,"resistance":0.7,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:prismarine","localizedName":"Prismarine","material":{"powerSource":false,"lightValue":0,"hardness":1.5,"resistance":6,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:prismarine_brick_slab","localizedName":"Prismarine Brick Slab","material":{"powerSource":false,"lightValue":0,"hardness":1.5,"resistance":6,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:prismarine_brick_stairs","localizedName":"Prismarine Brick Stairs","material":{"powerSource":false,"lightValue":0,"hardness":1.5,"resistance":6,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:prismarine_bricks","localizedName":"Prismarine Bricks","material":{"powerSource":false,"lightValue":0,"hardness":1.5,"resistance":6,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:prismarine_slab","localizedName":"Prismarine Slab","material":{"powerSource":false,"lightValue":0,"hardness":1.5,"resistance":6,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:prismarine_stairs","localizedName":"Prismarine Stairs","material":{"powerSource":false,"lightValue":0,"hardness":1.5,"resistance":6,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:pumpkin","localizedName":"Pumpkin","material":{"powerSource":false,"lightValue":0,"hardness":1,"resistance":1,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#007c00","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:pumpkin_stem","localizedName":"Pumpkin Stem","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":true,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#007c00","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:purple_banner","localizedName":"Purple Banner","material":{"powerSource":false,"lightValue":0,"hardness":1,"resistance":1,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":true}},{"id":"minecraft:purple_bed","localizedName":"Purple Bed","material":{"powerSource":false,"lightValue":0,"hardness":0.2,"resistance":0.2,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#c7c7c7","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:purple_carpet","localizedName":"Purple Carpet","material":{"powerSource":false,"lightValue":0,"hardness":0.1,"resistance":0.1,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":true,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#c7c7c7","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:purple_concrete","localizedName":"Purple Concrete","material":{"powerSource":false,"lightValue":0,"hardness":1.8,"resistance":1.8,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:purple_concrete_powder","localizedName":"Purple Concrete Powder","material":{"powerSource":false,"lightValue":0,"hardness":0.5,"resistance":0.5,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#f7e9a3","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:purple_glazed_terracotta","localizedName":"Purple Glazed Terracotta","material":{"powerSource":false,"lightValue":0,"hardness":1.4,"resistance":1.4,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:purple_shulker_box","localizedName":"Purple Shulker Box","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":2,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":true,"hasContainer":true}},{"id":"minecraft:purple_stained_glass","localizedName":"Purple Stained Glass","material":{"powerSource":false,"lightValue":0,"hardness":0.3,"resistance":0.3,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:purple_stained_glass_pane","localizedName":"Purple Stained Glass Pane","material":{"powerSource":false,"lightValue":0,"hardness":0.3,"resistance":0.3,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:purple_terracotta","localizedName":"Purple Terracotta","material":{"powerSource":false,"lightValue":0,"hardness":1.25,"resistance":4.2,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:purple_wall_banner","localizedName":"Air","material":{"powerSource":false,"lightValue":0,"hardness":1,"resistance":1,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":true}},{"id":"minecraft:purple_wool","localizedName":"Purple Wool","material":{"powerSource":false,"lightValue":0,"hardness":0.8,"resistance":0.8,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#c7c7c7","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:purpur_block","localizedName":"Purpur Block","material":{"powerSource":false,"lightValue":0,"hardness":1.5,"resistance":6,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:purpur_pillar","localizedName":"Purpur Pillar","material":{"powerSource":false,"lightValue":0,"hardness":1.5,"resistance":6,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:purpur_slab","localizedName":"Purpur Slab","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":6,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:purpur_stairs","localizedName":"Purpur Stairs","material":{"powerSource":false,"lightValue":0,"hardness":1.5,"resistance":6,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:quartz_block","localizedName":"Block of Quartz","material":{"powerSource":false,"lightValue":0,"hardness":0.8,"resistance":0.8,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:quartz_pillar","localizedName":"Quartz Pillar","material":{"powerSource":false,"lightValue":0,"hardness":0.8,"resistance":0.8,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:quartz_slab","localizedName":"Quartz Slab","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":6,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:quartz_stairs","localizedName":"Quartz Stairs","material":{"powerSource":false,"lightValue":0,"hardness":0.8,"resistance":0.8,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:rail","localizedName":"Rail","material":{"powerSource":false,"lightValue":0,"hardness":0.7,"resistance":0.7,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:red_banner","localizedName":"Red Banner","material":{"powerSource":false,"lightValue":0,"hardness":1,"resistance":1,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":true}},{"id":"minecraft:red_bed","localizedName":"Red Bed","material":{"powerSource":false,"lightValue":0,"hardness":0.2,"resistance":0.2,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#c7c7c7","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:red_carpet","localizedName":"Red Carpet","material":{"powerSource":false,"lightValue":0,"hardness":0.1,"resistance":0.1,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":true,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#c7c7c7","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:red_concrete","localizedName":"Red Concrete","material":{"powerSource":false,"lightValue":0,"hardness":1.8,"resistance":1.8,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:red_concrete_powder","localizedName":"Red Concrete Powder","material":{"powerSource":false,"lightValue":0,"hardness":0.5,"resistance":0.5,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#f7e9a3","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:red_glazed_terracotta","localizedName":"Red Glazed Terracotta","material":{"powerSource":false,"lightValue":0,"hardness":1.4,"resistance":1.4,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:red_mushroom","localizedName":"Red Mushroom","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":true,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#007c00","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:red_mushroom_block","localizedName":"Red Mushroom Block","material":{"powerSource":false,"lightValue":0,"hardness":0.2,"resistance":0.2,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:red_nether_bricks","localizedName":"Red Nether Bricks","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":6,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:red_sand","localizedName":"Red Sand","material":{"powerSource":false,"lightValue":0,"hardness":0.5,"resistance":0.5,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#f7e9a3","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:red_sandstone","localizedName":"Red Sandstone","material":{"powerSource":false,"lightValue":0,"hardness":0.8,"resistance":0.8,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:red_sandstone_slab","localizedName":"Red Sandstone Slab","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":6,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:red_sandstone_stairs","localizedName":"Red Sandstone Stairs","material":{"powerSource":false,"lightValue":0,"hardness":0.8,"resistance":0.8,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:red_shulker_box","localizedName":"Red Shulker Box","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":2,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":true,"hasContainer":true}},{"id":"minecraft:red_stained_glass","localizedName":"Red Stained Glass","material":{"powerSource":false,"lightValue":0,"hardness":0.3,"resistance":0.3,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:red_stained_glass_pane","localizedName":"Red Stained Glass Pane","material":{"powerSource":false,"lightValue":0,"hardness":0.3,"resistance":0.3,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:red_terracotta","localizedName":"Red Terracotta","material":{"powerSource":false,"lightValue":0,"hardness":1.25,"resistance":4.2,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:red_tulip","localizedName":"Red Tulip","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#007c00","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:red_wall_banner","localizedName":"Air","material":{"powerSource":false,"lightValue":0,"hardness":1,"resistance":1,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":true}},{"id":"minecraft:red_wool","localizedName":"Red Wool","material":{"powerSource":false,"lightValue":0,"hardness":0.8,"resistance":0.8,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#c7c7c7","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:redstone_block","localizedName":"Block of Redstone","material":{"powerSource":true,"lightValue":0,"hardness":5,"resistance":6,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#a7a7a7","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:redstone_lamp","localizedName":"Redstone Lamp","material":{"powerSource":false,"lightValue":0,"hardness":0.3,"resistance":0.3,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:redstone_ore","localizedName":"Redstone Ore","material":{"powerSource":false,"lightValue":0,"hardness":3,"resistance":3,"ticksRandomly":true,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:redstone_torch","localizedName":"Redstone Torch","material":{"powerSource":true,"lightValue":7,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:redstone_wall_torch","localizedName":"Air","material":{"powerSource":true,"lightValue":7,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:redstone_wire","localizedName":"Redstone Dust","material":{"powerSource":true,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:repeater","localizedName":"Redstone Repeater","material":{"powerSource":true,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:repeating_command_block","localizedName":"Repeating Command Block","material":{"powerSource":false,"lightValue":0,"hardness":-1,"resistance":3600000,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#a7a7a7","isTranslucent":false,"hasContainer":true}},{"id":"minecraft:rose_bush","localizedName":"Rose Bush","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":true,"opaque":false,"replacedDuringPlacement":true,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#007c00","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:sand","localizedName":"Sand","material":{"powerSource":false,"lightValue":0,"hardness":0.5,"resistance":0.5,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#f7e9a3","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:sandstone","localizedName":"Sandstone","material":{"powerSource":false,"lightValue":0,"hardness":0.8,"resistance":0.8,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:sandstone_slab","localizedName":"Sandstone Slab","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":6,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:sandstone_stairs","localizedName":"Sandstone Stairs","material":{"powerSource":false,"lightValue":0,"hardness":0.8,"resistance":0.8,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:sea_lantern","localizedName":"Sea Lantern","material":{"powerSource":false,"lightValue":15,"hardness":0.3,"resistance":0.3,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:sea_pickle","localizedName":"Sea Pickle","material":{"powerSource":false,"lightValue":6,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#4040ff","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:seagrass","localizedName":"Seagrass","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":true,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#4040ff","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:shulker_box","localizedName":"Shulker Box","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":2,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":true,"hasContainer":true}},{"id":"minecraft:sign","localizedName":"Sign","material":{"powerSource":false,"lightValue":0,"hardness":1,"resistance":1,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":true}},{"id":"minecraft:skeleton_skull","localizedName":"Skeleton Skull","material":{"powerSource":false,"lightValue":0,"hardness":1,"resistance":1,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":true}},{"id":"minecraft:skeleton_wall_skull","localizedName":"Air","material":{"powerSource":false,"lightValue":0,"hardness":1,"resistance":1,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":true}},{"id":"minecraft:slime_block","localizedName":"Slime Block","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":true,"slipperiness":0.8,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#a4a8b8","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:smooth_quartz","localizedName":"Smooth Quartz","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":6,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:smooth_red_sandstone","localizedName":"Smooth Red Sandstone","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":6,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:smooth_sandstone","localizedName":"Smooth Sandstone","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":6,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:smooth_stone","localizedName":"Smooth Stone","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":6,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:snow","localizedName":"Snow","material":{"powerSource":false,"lightValue":0,"hardness":0.1,"resistance":0.1,"ticksRandomly":true,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":true,"toolRequired":true,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#ffffff","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:snow_block","localizedName":"Snow Block","material":{"powerSource":false,"lightValue":0,"hardness":0.2,"resistance":0.2,"ticksRandomly":true,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#ffffff","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:soul_sand","localizedName":"Soul Sand","material":{"powerSource":false,"lightValue":0,"hardness":0.5,"resistance":0.5,"ticksRandomly":true,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#f7e9a3","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:spawner","localizedName":"Spawner","material":{"powerSource":false,"lightValue":0,"hardness":5,"resistance":5,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":true}},{"id":"minecraft:sponge","localizedName":"Sponge","material":{"powerSource":false,"lightValue":0,"hardness":0.6,"resistance":0.6,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#e5e533","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:spruce_button","localizedName":"Spruce Button","material":{"powerSource":true,"lightValue":0,"hardness":0.5,"resistance":0.5,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:spruce_door","localizedName":"Spruce Door","material":{"powerSource":false,"lightValue":0,"hardness":3,"resistance":3,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:spruce_fence","localizedName":"Spruce Fence","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":3,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:spruce_fence_gate","localizedName":"Spruce Fence Gate","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":3,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:spruce_leaves","localizedName":"Spruce Leaves","material":{"powerSource":false,"lightValue":0,"hardness":0.2,"resistance":0.2,"ticksRandomly":true,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#007c00","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:spruce_log","localizedName":"Spruce Log","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":2,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:spruce_planks","localizedName":"Spruce Planks","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":3,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:spruce_pressure_plate","localizedName":"Spruce Pressure Plate","material":{"powerSource":true,"lightValue":0,"hardness":0.5,"resistance":0.5,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:spruce_sapling","localizedName":"Spruce Sapling","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":true,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#007c00","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:spruce_slab","localizedName":"Spruce Slab","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":3,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:spruce_stairs","localizedName":"Spruce Stairs","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":3,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:spruce_trapdoor","localizedName":"Spruce Trapdoor","material":{"powerSource":false,"lightValue":0,"hardness":3,"resistance":3,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:spruce_wood","localizedName":"Spruce Wood","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":2,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:sticky_piston","localizedName":"Sticky Piston","material":{"powerSource":false,"lightValue":0,"hardness":0.5,"resistance":0.5,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":true,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:stone","localizedName":"Stone","material":{"powerSource":false,"lightValue":0,"hardness":1.5,"resistance":6,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:stone_brick_slab","localizedName":"Stone Brick Slab","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":6,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:stone_brick_stairs","localizedName":"Stone Brick Stairs","material":{"powerSource":false,"lightValue":0,"hardness":1.5,"resistance":6,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:stone_bricks","localizedName":"Stone Bricks","material":{"powerSource":false,"lightValue":0,"hardness":1.5,"resistance":6,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:stone_button","localizedName":"Stone Button","material":{"powerSource":true,"lightValue":0,"hardness":0.5,"resistance":0.5,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:stone_pressure_plate","localizedName":"Stone Pressure Plate","material":{"powerSource":true,"lightValue":0,"hardness":0.5,"resistance":0.5,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:stone_slab","localizedName":"Stone Slab","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":6,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:stripped_acacia_log","localizedName":"Stripped Acacia Log","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":2,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:stripped_acacia_wood","localizedName":"Stripped Acacia Wood","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":2,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:stripped_birch_log","localizedName":"Stripped Birch Log","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":2,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:stripped_birch_wood","localizedName":"Stripped Birch Wood","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":2,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:stripped_dark_oak_log","localizedName":"Stripped Dark Oak Log","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":2,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:stripped_dark_oak_wood","localizedName":"Stripped Dark Oak Wood","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":2,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:stripped_jungle_log","localizedName":"Stripped Jungle Log","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":2,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:stripped_jungle_wood","localizedName":"Stripped Jungle Wood","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":2,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:stripped_oak_log","localizedName":"Stripped Oak Log","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":2,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:stripped_oak_wood","localizedName":"Stripped Oak Wood","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":2,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:stripped_spruce_log","localizedName":"Stripped Spruce Log","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":2,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:stripped_spruce_wood","localizedName":"Stripped Spruce Wood","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":2,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:structure_block","localizedName":"Structure Block","material":{"powerSource":false,"lightValue":0,"hardness":-1,"resistance":3600000,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#a7a7a7","isTranslucent":false,"hasContainer":true}},{"id":"minecraft:structure_void","localizedName":"Structure Void","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":true,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:sugar_cane","localizedName":"Sugar Cane","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":true,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#007c00","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:sunflower","localizedName":"Sunflower","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":true,"opaque":false,"replacedDuringPlacement":true,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#007c00","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:tall_grass","localizedName":"Tall Grass","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":true,"opaque":false,"replacedDuringPlacement":true,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#007c00","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:tall_seagrass","localizedName":"Tall Seagrass","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":true,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#4040ff","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:terracotta","localizedName":"Terracotta","material":{"powerSource":false,"lightValue":0,"hardness":1.25,"resistance":4.2,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:tnt","localizedName":"TNT","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#ff0000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:torch","localizedName":"Torch","material":{"powerSource":false,"lightValue":14,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:trapped_chest","localizedName":"Trapped Chest","material":{"powerSource":true,"lightValue":0,"hardness":2.5,"resistance":2.5,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":true}},{"id":"minecraft:tripwire","localizedName":"Tripwire","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:tripwire_hook","localizedName":"Tripwire Hook","material":{"powerSource":true,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:tube_coral","localizedName":"Tube Coral","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#4040ff","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:tube_coral_block","localizedName":"Tube Coral Block","material":{"powerSource":false,"lightValue":0,"hardness":1.5,"resistance":6,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:tube_coral_fan","localizedName":"Tube Coral Fan","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#4040ff","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:tube_coral_wall_fan","localizedName":"Tube Coral Wall Fan","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#4040ff","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:turtle_egg","localizedName":"Turtle Egg","material":{"powerSource":false,"lightValue":0,"hardness":0.5,"resistance":0.5,"ticksRandomly":true,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#007c00","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:vine","localizedName":"Vines","material":{"powerSource":false,"lightValue":0,"hardness":0.2,"resistance":0.2,"ticksRandomly":true,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":true,"opaque":false,"replacedDuringPlacement":true,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#007c00","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:void_air","localizedName":"Void Air","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":true,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:wall_sign","localizedName":"Air","material":{"powerSource":false,"lightValue":0,"hardness":1,"resistance":1,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":true}},{"id":"minecraft:wall_torch","localizedName":"Air","material":{"powerSource":false,"lightValue":14,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:water","localizedName":"Water","material":{"powerSource":false,"lightValue":0,"hardness":100,"resistance":100,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":true,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":true,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#4040ff","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:wet_sponge","localizedName":"Wet Sponge","material":{"powerSource":false,"lightValue":0,"hardness":0.6,"resistance":0.6,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#e5e533","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:wheat","localizedName":"Wheat Crops","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":true,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#007c00","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:white_banner","localizedName":"White Banner","material":{"powerSource":false,"lightValue":0,"hardness":1,"resistance":1,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":true}},{"id":"minecraft:white_bed","localizedName":"White Bed","material":{"powerSource":false,"lightValue":0,"hardness":0.2,"resistance":0.2,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#c7c7c7","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:white_carpet","localizedName":"White Carpet","material":{"powerSource":false,"lightValue":0,"hardness":0.1,"resistance":0.1,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":true,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#c7c7c7","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:white_concrete","localizedName":"White Concrete","material":{"powerSource":false,"lightValue":0,"hardness":1.8,"resistance":1.8,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:white_concrete_powder","localizedName":"White Concrete Powder","material":{"powerSource":false,"lightValue":0,"hardness":0.5,"resistance":0.5,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#f7e9a3","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:white_glazed_terracotta","localizedName":"White Glazed Terracotta","material":{"powerSource":false,"lightValue":0,"hardness":1.4,"resistance":1.4,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:white_shulker_box","localizedName":"White Shulker Box","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":2,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":true,"hasContainer":true}},{"id":"minecraft:white_stained_glass","localizedName":"White Stained Glass","material":{"powerSource":false,"lightValue":0,"hardness":0.3,"resistance":0.3,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:white_stained_glass_pane","localizedName":"White Stained Glass Pane","material":{"powerSource":false,"lightValue":0,"hardness":0.3,"resistance":0.3,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:white_terracotta","localizedName":"White Terracotta","material":{"powerSource":false,"lightValue":0,"hardness":1.25,"resistance":4.2,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:white_tulip","localizedName":"White Tulip","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#007c00","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:white_wall_banner","localizedName":"Air","material":{"powerSource":false,"lightValue":0,"hardness":1,"resistance":1,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":true}},{"id":"minecraft:white_wool","localizedName":"White Wool","material":{"powerSource":false,"lightValue":0,"hardness":0.8,"resistance":0.8,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#c7c7c7","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:wither_skeleton_skull","localizedName":"Wither Skeleton Skull","material":{"powerSource":false,"lightValue":0,"hardness":1,"resistance":1,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":true}},{"id":"minecraft:wither_skeleton_wall_skull","localizedName":"Air","material":{"powerSource":false,"lightValue":0,"hardness":1,"resistance":1,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":true}},{"id":"minecraft:yellow_banner","localizedName":"Yellow Banner","material":{"powerSource":false,"lightValue":0,"hardness":1,"resistance":1,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":true}},{"id":"minecraft:yellow_bed","localizedName":"Yellow Bed","material":{"powerSource":false,"lightValue":0,"hardness":0.2,"resistance":0.2,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#c7c7c7","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:yellow_carpet","localizedName":"Yellow Carpet","material":{"powerSource":false,"lightValue":0,"hardness":0.1,"resistance":0.1,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":true,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#c7c7c7","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:yellow_concrete","localizedName":"Yellow Concrete","material":{"powerSource":false,"lightValue":0,"hardness":1.8,"resistance":1.8,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:yellow_concrete_powder","localizedName":"Yellow Concrete Powder","material":{"powerSource":false,"lightValue":0,"hardness":0.5,"resistance":0.5,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#f7e9a3","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:yellow_glazed_terracotta","localizedName":"Yellow Glazed Terracotta","material":{"powerSource":false,"lightValue":0,"hardness":1.4,"resistance":1.4,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:yellow_shulker_box","localizedName":"Yellow Shulker Box","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":2,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":true,"hasContainer":true}},{"id":"minecraft:yellow_stained_glass","localizedName":"Yellow Stained Glass","material":{"powerSource":false,"lightValue":0,"hardness":0.3,"resistance":0.3,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:yellow_stained_glass_pane","localizedName":"Yellow Stained Glass Pane","material":{"powerSource":false,"lightValue":0,"hardness":0.3,"resistance":0.3,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:yellow_terracotta","localizedName":"Yellow Terracotta","material":{"powerSource":false,"lightValue":0,"hardness":1.25,"resistance":4.2,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:yellow_wall_banner","localizedName":"Air","material":{"powerSource":false,"lightValue":0,"hardness":1,"resistance":1,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":true}},{"id":"minecraft:yellow_wool","localizedName":"Yellow Wool","material":{"powerSource":false,"lightValue":0,"hardness":0.8,"resistance":0.8,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#c7c7c7","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:zombie_head","localizedName":"Zombie Head","material":{"powerSource":false,"lightValue":0,"hardness":1,"resistance":1,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":true}},{"id":"minecraft:zombie_wall_head","localizedName":"Air","material":{"powerSource":false,"lightValue":0,"hardness":1,"resistance":1,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":true}}] diff --git a/worldedit-core/src/main/resources/com/sk89q/worldedit/world/registry/items.119.json b/worldedit-core/src/main/resources/com/sk89q/worldedit/world/registry/items.119.json new file mode 100644 index 0000000000..4166656e38 --- /dev/null +++ b/worldedit-core/src/main/resources/com/sk89q/worldedit/world/registry/items.119.json @@ -0,0 +1 @@ +[{"id":"minecraft:acacia_boat","localizedName":"Acacia Boat","maxDamage":0,"maxStackSize":1,"unlocalizedName":"item.minecraft.acacia_boat"},{"id":"minecraft:acacia_button","localizedName":"Acacia Button","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.acacia_button"},{"id":"minecraft:acacia_chest_boat","localizedName":"Acacia Boat with Chest","maxDamage":0,"maxStackSize":1,"unlocalizedName":"item.minecraft.acacia_chest_boat"},{"id":"minecraft:acacia_door","localizedName":"Acacia Door","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.acacia_door"},{"id":"minecraft:acacia_fence","localizedName":"Acacia Fence","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.acacia_fence"},{"id":"minecraft:acacia_fence_gate","localizedName":"Acacia Fence Gate","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.acacia_fence_gate"},{"id":"minecraft:acacia_leaves","localizedName":"Acacia Leaves","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.acacia_leaves"},{"id":"minecraft:acacia_log","localizedName":"Acacia Log","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.acacia_log"},{"id":"minecraft:acacia_planks","localizedName":"Acacia Planks","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.acacia_planks"},{"id":"minecraft:acacia_pressure_plate","localizedName":"Acacia Pressure Plate","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.acacia_pressure_plate"},{"id":"minecraft:acacia_sapling","localizedName":"Acacia Sapling","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.acacia_sapling"},{"id":"minecraft:acacia_sign","localizedName":"Acacia Sign","maxDamage":0,"maxStackSize":16,"unlocalizedName":"block.minecraft.acacia_sign"},{"id":"minecraft:acacia_slab","localizedName":"Acacia Slab","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.acacia_slab"},{"id":"minecraft:acacia_stairs","localizedName":"Acacia Stairs","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.acacia_stairs"},{"id":"minecraft:acacia_trapdoor","localizedName":"Acacia Trapdoor","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.acacia_trapdoor"},{"id":"minecraft:acacia_wood","localizedName":"Acacia Wood","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.acacia_wood"},{"id":"minecraft:activator_rail","localizedName":"Activator Rail","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.activator_rail"},{"id":"minecraft:air","localizedName":"Air","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.air"},{"id":"minecraft:allay_spawn_egg","localizedName":"Allay Spawn Egg","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.allay_spawn_egg"},{"id":"minecraft:allium","localizedName":"Allium","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.allium"},{"id":"minecraft:amethyst_block","localizedName":"Block of Amethyst","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.amethyst_block"},{"id":"minecraft:amethyst_cluster","localizedName":"Amethyst Cluster","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.amethyst_cluster"},{"id":"minecraft:amethyst_shard","localizedName":"Amethyst Shard","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.amethyst_shard"},{"id":"minecraft:ancient_debris","localizedName":"Ancient Debris","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.ancient_debris"},{"id":"minecraft:andesite","localizedName":"Andesite","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.andesite"},{"id":"minecraft:andesite_slab","localizedName":"Andesite Slab","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.andesite_slab"},{"id":"minecraft:andesite_stairs","localizedName":"Andesite Stairs","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.andesite_stairs"},{"id":"minecraft:andesite_wall","localizedName":"Andesite Wall","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.andesite_wall"},{"id":"minecraft:anvil","localizedName":"Anvil","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.anvil"},{"id":"minecraft:apple","localizedName":"Apple","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.apple"},{"id":"minecraft:armor_stand","localizedName":"Armor Stand","maxDamage":0,"maxStackSize":16,"unlocalizedName":"item.minecraft.armor_stand"},{"id":"minecraft:arrow","localizedName":"Arrow","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.arrow"},{"id":"minecraft:axolotl_bucket","localizedName":"Bucket of Axolotl","maxDamage":0,"maxStackSize":1,"unlocalizedName":"item.minecraft.axolotl_bucket"},{"id":"minecraft:axolotl_spawn_egg","localizedName":"Axolotl Spawn Egg","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.axolotl_spawn_egg"},{"id":"minecraft:azalea","localizedName":"Azalea","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.azalea"},{"id":"minecraft:azalea_leaves","localizedName":"Azalea Leaves","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.azalea_leaves"},{"id":"minecraft:azure_bluet","localizedName":"Azure Bluet","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.azure_bluet"},{"id":"minecraft:baked_potato","localizedName":"Baked Potato","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.baked_potato"},{"id":"minecraft:bamboo","localizedName":"Bamboo","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.bamboo"},{"id":"minecraft:barrel","localizedName":"Barrel","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.barrel"},{"id":"minecraft:barrier","localizedName":"Barrier","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.barrier"},{"id":"minecraft:basalt","localizedName":"Basalt","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.basalt"},{"id":"minecraft:bat_spawn_egg","localizedName":"Bat Spawn Egg","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.bat_spawn_egg"},{"id":"minecraft:beacon","localizedName":"Beacon","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.beacon"},{"id":"minecraft:bedrock","localizedName":"Bedrock","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.bedrock"},{"id":"minecraft:bee_nest","localizedName":"Bee Nest","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.bee_nest"},{"id":"minecraft:bee_spawn_egg","localizedName":"Bee Spawn Egg","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.bee_spawn_egg"},{"id":"minecraft:beef","localizedName":"Raw Beef","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.beef"},{"id":"minecraft:beehive","localizedName":"Beehive","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.beehive"},{"id":"minecraft:beetroot","localizedName":"Beetroot","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.beetroot"},{"id":"minecraft:beetroot_seeds","localizedName":"Beetroot Seeds","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.beetroot_seeds"},{"id":"minecraft:beetroot_soup","localizedName":"Beetroot Soup","maxDamage":0,"maxStackSize":1,"unlocalizedName":"item.minecraft.beetroot_soup"},{"id":"minecraft:bell","localizedName":"Bell","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.bell"},{"id":"minecraft:big_dripleaf","localizedName":"Big Dripleaf","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.big_dripleaf"},{"id":"minecraft:birch_boat","localizedName":"Birch Boat","maxDamage":0,"maxStackSize":1,"unlocalizedName":"item.minecraft.birch_boat"},{"id":"minecraft:birch_button","localizedName":"Birch Button","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.birch_button"},{"id":"minecraft:birch_chest_boat","localizedName":"Birch Boat with Chest","maxDamage":0,"maxStackSize":1,"unlocalizedName":"item.minecraft.birch_chest_boat"},{"id":"minecraft:birch_door","localizedName":"Birch Door","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.birch_door"},{"id":"minecraft:birch_fence","localizedName":"Birch Fence","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.birch_fence"},{"id":"minecraft:birch_fence_gate","localizedName":"Birch Fence Gate","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.birch_fence_gate"},{"id":"minecraft:birch_leaves","localizedName":"Birch Leaves","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.birch_leaves"},{"id":"minecraft:birch_log","localizedName":"Birch Log","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.birch_log"},{"id":"minecraft:birch_planks","localizedName":"Birch Planks","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.birch_planks"},{"id":"minecraft:birch_pressure_plate","localizedName":"Birch Pressure Plate","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.birch_pressure_plate"},{"id":"minecraft:birch_sapling","localizedName":"Birch Sapling","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.birch_sapling"},{"id":"minecraft:birch_sign","localizedName":"Birch Sign","maxDamage":0,"maxStackSize":16,"unlocalizedName":"block.minecraft.birch_sign"},{"id":"minecraft:birch_slab","localizedName":"Birch Slab","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.birch_slab"},{"id":"minecraft:birch_stairs","localizedName":"Birch Stairs","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.birch_stairs"},{"id":"minecraft:birch_trapdoor","localizedName":"Birch Trapdoor","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.birch_trapdoor"},{"id":"minecraft:birch_wood","localizedName":"Birch Wood","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.birch_wood"},{"id":"minecraft:black_banner","localizedName":"Black Banner","maxDamage":0,"maxStackSize":16,"unlocalizedName":"block.minecraft.black_banner"},{"id":"minecraft:black_bed","localizedName":"Black Bed","maxDamage":0,"maxStackSize":1,"unlocalizedName":"block.minecraft.black_bed"},{"id":"minecraft:black_candle","localizedName":"Black Candle","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.black_candle"},{"id":"minecraft:black_carpet","localizedName":"Black Carpet","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.black_carpet"},{"id":"minecraft:black_concrete","localizedName":"Black Concrete","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.black_concrete"},{"id":"minecraft:black_concrete_powder","localizedName":"Black Concrete Powder","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.black_concrete_powder"},{"id":"minecraft:black_dye","localizedName":"Black Dye","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.black_dye"},{"id":"minecraft:black_glazed_terracotta","localizedName":"Black Glazed Terracotta","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.black_glazed_terracotta"},{"id":"minecraft:black_shulker_box","localizedName":"Black Shulker Box","maxDamage":0,"maxStackSize":1,"unlocalizedName":"block.minecraft.black_shulker_box"},{"id":"minecraft:black_stained_glass","localizedName":"Black Stained Glass","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.black_stained_glass"},{"id":"minecraft:black_stained_glass_pane","localizedName":"Black Stained Glass Pane","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.black_stained_glass_pane"},{"id":"minecraft:black_terracotta","localizedName":"Black Terracotta","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.black_terracotta"},{"id":"minecraft:black_wool","localizedName":"Black Wool","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.black_wool"},{"id":"minecraft:blackstone","localizedName":"Blackstone","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.blackstone"},{"id":"minecraft:blackstone_slab","localizedName":"Blackstone Slab","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.blackstone_slab"},{"id":"minecraft:blackstone_stairs","localizedName":"Blackstone Stairs","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.blackstone_stairs"},{"id":"minecraft:blackstone_wall","localizedName":"Blackstone Wall","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.blackstone_wall"},{"id":"minecraft:blast_furnace","localizedName":"Blast Furnace","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.blast_furnace"},{"id":"minecraft:blaze_powder","localizedName":"Blaze Powder","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.blaze_powder"},{"id":"minecraft:blaze_rod","localizedName":"Blaze Rod","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.blaze_rod"},{"id":"minecraft:blaze_spawn_egg","localizedName":"Blaze Spawn Egg","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.blaze_spawn_egg"},{"id":"minecraft:blue_banner","localizedName":"Blue Banner","maxDamage":0,"maxStackSize":16,"unlocalizedName":"block.minecraft.blue_banner"},{"id":"minecraft:blue_bed","localizedName":"Blue Bed","maxDamage":0,"maxStackSize":1,"unlocalizedName":"block.minecraft.blue_bed"},{"id":"minecraft:blue_candle","localizedName":"Blue Candle","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.blue_candle"},{"id":"minecraft:blue_carpet","localizedName":"Blue Carpet","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.blue_carpet"},{"id":"minecraft:blue_concrete","localizedName":"Blue Concrete","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.blue_concrete"},{"id":"minecraft:blue_concrete_powder","localizedName":"Blue Concrete Powder","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.blue_concrete_powder"},{"id":"minecraft:blue_dye","localizedName":"Blue Dye","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.blue_dye"},{"id":"minecraft:blue_glazed_terracotta","localizedName":"Blue Glazed Terracotta","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.blue_glazed_terracotta"},{"id":"minecraft:blue_ice","localizedName":"Blue Ice","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.blue_ice"},{"id":"minecraft:blue_orchid","localizedName":"Blue Orchid","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.blue_orchid"},{"id":"minecraft:blue_shulker_box","localizedName":"Blue Shulker Box","maxDamage":0,"maxStackSize":1,"unlocalizedName":"block.minecraft.blue_shulker_box"},{"id":"minecraft:blue_stained_glass","localizedName":"Blue Stained Glass","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.blue_stained_glass"},{"id":"minecraft:blue_stained_glass_pane","localizedName":"Blue Stained Glass Pane","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.blue_stained_glass_pane"},{"id":"minecraft:blue_terracotta","localizedName":"Blue Terracotta","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.blue_terracotta"},{"id":"minecraft:blue_wool","localizedName":"Blue Wool","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.blue_wool"},{"id":"minecraft:bone","localizedName":"Bone","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.bone"},{"id":"minecraft:bone_block","localizedName":"Bone Block","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.bone_block"},{"id":"minecraft:bone_meal","localizedName":"Bone Meal","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.bone_meal"},{"id":"minecraft:book","localizedName":"Book","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.book"},{"id":"minecraft:bookshelf","localizedName":"Bookshelf","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.bookshelf"},{"id":"minecraft:bow","localizedName":"Bow","maxDamage":384,"maxStackSize":1,"unlocalizedName":"item.minecraft.bow"},{"id":"minecraft:bowl","localizedName":"Bowl","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.bowl"},{"id":"minecraft:brain_coral","localizedName":"Brain Coral","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.brain_coral"},{"id":"minecraft:brain_coral_block","localizedName":"Brain Coral Block","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.brain_coral_block"},{"id":"minecraft:brain_coral_fan","localizedName":"Brain Coral Fan","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.brain_coral_fan"},{"id":"minecraft:bread","localizedName":"Bread","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.bread"},{"id":"minecraft:brewing_stand","localizedName":"Brewing Stand","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.brewing_stand"},{"id":"minecraft:brick","localizedName":"Brick","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.brick"},{"id":"minecraft:brick_slab","localizedName":"Brick Slab","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.brick_slab"},{"id":"minecraft:brick_stairs","localizedName":"Brick Stairs","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.brick_stairs"},{"id":"minecraft:brick_wall","localizedName":"Brick Wall","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.brick_wall"},{"id":"minecraft:bricks","localizedName":"Bricks","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.bricks"},{"id":"minecraft:brown_banner","localizedName":"Brown Banner","maxDamage":0,"maxStackSize":16,"unlocalizedName":"block.minecraft.brown_banner"},{"id":"minecraft:brown_bed","localizedName":"Brown Bed","maxDamage":0,"maxStackSize":1,"unlocalizedName":"block.minecraft.brown_bed"},{"id":"minecraft:brown_candle","localizedName":"Brown Candle","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.brown_candle"},{"id":"minecraft:brown_carpet","localizedName":"Brown Carpet","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.brown_carpet"},{"id":"minecraft:brown_concrete","localizedName":"Brown Concrete","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.brown_concrete"},{"id":"minecraft:brown_concrete_powder","localizedName":"Brown Concrete Powder","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.brown_concrete_powder"},{"id":"minecraft:brown_dye","localizedName":"Brown Dye","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.brown_dye"},{"id":"minecraft:brown_glazed_terracotta","localizedName":"Brown Glazed Terracotta","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.brown_glazed_terracotta"},{"id":"minecraft:brown_mushroom","localizedName":"Brown Mushroom","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.brown_mushroom"},{"id":"minecraft:brown_mushroom_block","localizedName":"Brown Mushroom Block","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.brown_mushroom_block"},{"id":"minecraft:brown_shulker_box","localizedName":"Brown Shulker Box","maxDamage":0,"maxStackSize":1,"unlocalizedName":"block.minecraft.brown_shulker_box"},{"id":"minecraft:brown_stained_glass","localizedName":"Brown Stained Glass","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.brown_stained_glass"},{"id":"minecraft:brown_stained_glass_pane","localizedName":"Brown Stained Glass Pane","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.brown_stained_glass_pane"},{"id":"minecraft:brown_terracotta","localizedName":"Brown Terracotta","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.brown_terracotta"},{"id":"minecraft:brown_wool","localizedName":"Brown Wool","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.brown_wool"},{"id":"minecraft:bubble_coral","localizedName":"Bubble Coral","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.bubble_coral"},{"id":"minecraft:bubble_coral_block","localizedName":"Bubble Coral Block","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.bubble_coral_block"},{"id":"minecraft:bubble_coral_fan","localizedName":"Bubble Coral Fan","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.bubble_coral_fan"},{"id":"minecraft:bucket","localizedName":"Bucket","maxDamage":0,"maxStackSize":16,"unlocalizedName":"item.minecraft.bucket"},{"id":"minecraft:budding_amethyst","localizedName":"Budding Amethyst","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.budding_amethyst"},{"id":"minecraft:bundle","localizedName":"Bundle","maxDamage":0,"maxStackSize":1,"unlocalizedName":"item.minecraft.bundle"},{"id":"minecraft:cactus","localizedName":"Cactus","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.cactus"},{"id":"minecraft:cake","localizedName":"Cake","maxDamage":0,"maxStackSize":1,"unlocalizedName":"block.minecraft.cake"},{"id":"minecraft:calcite","localizedName":"Calcite","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.calcite"},{"id":"minecraft:campfire","localizedName":"Campfire","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.campfire"},{"id":"minecraft:candle","localizedName":"Candle","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.candle"},{"id":"minecraft:carrot","localizedName":"Carrot","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.carrot"},{"id":"minecraft:carrot_on_a_stick","localizedName":"Carrot on a Stick","maxDamage":25,"maxStackSize":1,"unlocalizedName":"item.minecraft.carrot_on_a_stick"},{"id":"minecraft:cartography_table","localizedName":"Cartography Table","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.cartography_table"},{"id":"minecraft:carved_pumpkin","localizedName":"Carved Pumpkin","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.carved_pumpkin"},{"id":"minecraft:cat_spawn_egg","localizedName":"Cat Spawn Egg","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.cat_spawn_egg"},{"id":"minecraft:cauldron","localizedName":"Cauldron","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.cauldron"},{"id":"minecraft:cave_spider_spawn_egg","localizedName":"Cave Spider Spawn Egg","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.cave_spider_spawn_egg"},{"id":"minecraft:chain","localizedName":"Chain","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.chain"},{"id":"minecraft:chain_command_block","localizedName":"Chain Command Block","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.chain_command_block"},{"id":"minecraft:chainmail_boots","localizedName":"Chainmail Boots","maxDamage":195,"maxStackSize":1,"unlocalizedName":"item.minecraft.chainmail_boots"},{"id":"minecraft:chainmail_chestplate","localizedName":"Chainmail Chestplate","maxDamage":240,"maxStackSize":1,"unlocalizedName":"item.minecraft.chainmail_chestplate"},{"id":"minecraft:chainmail_helmet","localizedName":"Chainmail Helmet","maxDamage":165,"maxStackSize":1,"unlocalizedName":"item.minecraft.chainmail_helmet"},{"id":"minecraft:chainmail_leggings","localizedName":"Chainmail Leggings","maxDamage":225,"maxStackSize":1,"unlocalizedName":"item.minecraft.chainmail_leggings"},{"id":"minecraft:charcoal","localizedName":"Charcoal","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.charcoal"},{"id":"minecraft:chest","localizedName":"Chest","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.chest"},{"id":"minecraft:chest_minecart","localizedName":"Minecart with Chest","maxDamage":0,"maxStackSize":1,"unlocalizedName":"item.minecraft.chest_minecart"},{"id":"minecraft:chicken","localizedName":"Raw Chicken","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.chicken"},{"id":"minecraft:chicken_spawn_egg","localizedName":"Chicken Spawn Egg","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.chicken_spawn_egg"},{"id":"minecraft:chipped_anvil","localizedName":"Chipped Anvil","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.chipped_anvil"},{"id":"minecraft:chiseled_deepslate","localizedName":"Chiseled Deepslate","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.chiseled_deepslate"},{"id":"minecraft:chiseled_nether_bricks","localizedName":"Chiseled Nether Bricks","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.chiseled_nether_bricks"},{"id":"minecraft:chiseled_polished_blackstone","localizedName":"Chiseled Polished Blackstone","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.chiseled_polished_blackstone"},{"id":"minecraft:chiseled_quartz_block","localizedName":"Chiseled Quartz Block","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.chiseled_quartz_block"},{"id":"minecraft:chiseled_red_sandstone","localizedName":"Chiseled Red Sandstone","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.chiseled_red_sandstone"},{"id":"minecraft:chiseled_sandstone","localizedName":"Chiseled Sandstone","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.chiseled_sandstone"},{"id":"minecraft:chiseled_stone_bricks","localizedName":"Chiseled Stone Bricks","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.chiseled_stone_bricks"},{"id":"minecraft:chorus_flower","localizedName":"Chorus Flower","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.chorus_flower"},{"id":"minecraft:chorus_fruit","localizedName":"Chorus Fruit","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.chorus_fruit"},{"id":"minecraft:chorus_plant","localizedName":"Chorus Plant","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.chorus_plant"},{"id":"minecraft:clay","localizedName":"Clay","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.clay"},{"id":"minecraft:clay_ball","localizedName":"Clay Ball","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.clay_ball"},{"id":"minecraft:clock","localizedName":"Clock","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.clock"},{"id":"minecraft:coal","localizedName":"Coal","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.coal"},{"id":"minecraft:coal_block","localizedName":"Block of Coal","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.coal_block"},{"id":"minecraft:coal_ore","localizedName":"Coal Ore","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.coal_ore"},{"id":"minecraft:coarse_dirt","localizedName":"Coarse Dirt","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.coarse_dirt"},{"id":"minecraft:cobbled_deepslate","localizedName":"Cobbled Deepslate","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.cobbled_deepslate"},{"id":"minecraft:cobbled_deepslate_slab","localizedName":"Cobbled Deepslate Slab","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.cobbled_deepslate_slab"},{"id":"minecraft:cobbled_deepslate_stairs","localizedName":"Cobbled Deepslate Stairs","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.cobbled_deepslate_stairs"},{"id":"minecraft:cobbled_deepslate_wall","localizedName":"Cobbled Deepslate Wall","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.cobbled_deepslate_wall"},{"id":"minecraft:cobblestone","localizedName":"Cobblestone","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.cobblestone"},{"id":"minecraft:cobblestone_slab","localizedName":"Cobblestone Slab","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.cobblestone_slab"},{"id":"minecraft:cobblestone_stairs","localizedName":"Cobblestone Stairs","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.cobblestone_stairs"},{"id":"minecraft:cobblestone_wall","localizedName":"Cobblestone Wall","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.cobblestone_wall"},{"id":"minecraft:cobweb","localizedName":"Cobweb","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.cobweb"},{"id":"minecraft:cocoa_beans","localizedName":"Cocoa Beans","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.cocoa_beans"},{"id":"minecraft:cod","localizedName":"Raw Cod","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.cod"},{"id":"minecraft:cod_bucket","localizedName":"Bucket of Cod","maxDamage":0,"maxStackSize":1,"unlocalizedName":"item.minecraft.cod_bucket"},{"id":"minecraft:cod_spawn_egg","localizedName":"Cod Spawn Egg","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.cod_spawn_egg"},{"id":"minecraft:command_block","localizedName":"Command Block","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.command_block"},{"id":"minecraft:command_block_minecart","localizedName":"Minecart with Command Block","maxDamage":0,"maxStackSize":1,"unlocalizedName":"item.minecraft.command_block_minecart"},{"id":"minecraft:comparator","localizedName":"Redstone Comparator","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.comparator"},{"id":"minecraft:compass","localizedName":"Compass","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.compass"},{"id":"minecraft:composter","localizedName":"Composter","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.composter"},{"id":"minecraft:conduit","localizedName":"Conduit","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.conduit"},{"id":"minecraft:cooked_beef","localizedName":"Steak","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.cooked_beef"},{"id":"minecraft:cooked_chicken","localizedName":"Cooked Chicken","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.cooked_chicken"},{"id":"minecraft:cooked_cod","localizedName":"Cooked Cod","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.cooked_cod"},{"id":"minecraft:cooked_mutton","localizedName":"Cooked Mutton","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.cooked_mutton"},{"id":"minecraft:cooked_porkchop","localizedName":"Cooked Porkchop","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.cooked_porkchop"},{"id":"minecraft:cooked_rabbit","localizedName":"Cooked Rabbit","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.cooked_rabbit"},{"id":"minecraft:cooked_salmon","localizedName":"Cooked Salmon","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.cooked_salmon"},{"id":"minecraft:cookie","localizedName":"Cookie","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.cookie"},{"id":"minecraft:copper_block","localizedName":"Block of Copper","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.copper_block"},{"id":"minecraft:copper_ingot","localizedName":"Copper Ingot","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.copper_ingot"},{"id":"minecraft:copper_ore","localizedName":"Copper Ore","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.copper_ore"},{"id":"minecraft:cornflower","localizedName":"Cornflower","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.cornflower"},{"id":"minecraft:cow_spawn_egg","localizedName":"Cow Spawn Egg","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.cow_spawn_egg"},{"id":"minecraft:cracked_deepslate_bricks","localizedName":"Cracked Deepslate Bricks","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.cracked_deepslate_bricks"},{"id":"minecraft:cracked_deepslate_tiles","localizedName":"Cracked Deepslate Tiles","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.cracked_deepslate_tiles"},{"id":"minecraft:cracked_nether_bricks","localizedName":"Cracked Nether Bricks","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.cracked_nether_bricks"},{"id":"minecraft:cracked_polished_blackstone_bricks","localizedName":"Cracked Polished Blackstone Bricks","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.cracked_polished_blackstone_bricks"},{"id":"minecraft:cracked_stone_bricks","localizedName":"Cracked Stone Bricks","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.cracked_stone_bricks"},{"id":"minecraft:crafting_table","localizedName":"Crafting Table","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.crafting_table"},{"id":"minecraft:creeper_banner_pattern","localizedName":"Banner Pattern","maxDamage":0,"maxStackSize":1,"unlocalizedName":"item.minecraft.creeper_banner_pattern"},{"id":"minecraft:creeper_head","localizedName":"Creeper Head","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.creeper_head"},{"id":"minecraft:creeper_spawn_egg","localizedName":"Creeper Spawn Egg","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.creeper_spawn_egg"},{"id":"minecraft:crimson_button","localizedName":"Crimson Button","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.crimson_button"},{"id":"minecraft:crimson_door","localizedName":"Crimson Door","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.crimson_door"},{"id":"minecraft:crimson_fence","localizedName":"Crimson Fence","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.crimson_fence"},{"id":"minecraft:crimson_fence_gate","localizedName":"Crimson Fence Gate","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.crimson_fence_gate"},{"id":"minecraft:crimson_fungus","localizedName":"Crimson Fungus","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.crimson_fungus"},{"id":"minecraft:crimson_hyphae","localizedName":"Crimson Hyphae","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.crimson_hyphae"},{"id":"minecraft:crimson_nylium","localizedName":"Crimson Nylium","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.crimson_nylium"},{"id":"minecraft:crimson_planks","localizedName":"Crimson Planks","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.crimson_planks"},{"id":"minecraft:crimson_pressure_plate","localizedName":"Crimson Pressure Plate","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.crimson_pressure_plate"},{"id":"minecraft:crimson_roots","localizedName":"Crimson Roots","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.crimson_roots"},{"id":"minecraft:crimson_sign","localizedName":"Crimson Sign","maxDamage":0,"maxStackSize":16,"unlocalizedName":"block.minecraft.crimson_sign"},{"id":"minecraft:crimson_slab","localizedName":"Crimson Slab","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.crimson_slab"},{"id":"minecraft:crimson_stairs","localizedName":"Crimson Stairs","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.crimson_stairs"},{"id":"minecraft:crimson_stem","localizedName":"Crimson Stem","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.crimson_stem"},{"id":"minecraft:crimson_trapdoor","localizedName":"Crimson Trapdoor","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.crimson_trapdoor"},{"id":"minecraft:crossbow","localizedName":"Crossbow","maxDamage":465,"maxStackSize":1,"unlocalizedName":"item.minecraft.crossbow"},{"id":"minecraft:crying_obsidian","localizedName":"Crying Obsidian","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.crying_obsidian"},{"id":"minecraft:cut_copper","localizedName":"Cut Copper","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.cut_copper"},{"id":"minecraft:cut_copper_slab","localizedName":"Cut Copper Slab","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.cut_copper_slab"},{"id":"minecraft:cut_copper_stairs","localizedName":"Cut Copper Stairs","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.cut_copper_stairs"},{"id":"minecraft:cut_red_sandstone","localizedName":"Cut Red Sandstone","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.cut_red_sandstone"},{"id":"minecraft:cut_red_sandstone_slab","localizedName":"Cut Red Sandstone Slab","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.cut_red_sandstone_slab"},{"id":"minecraft:cut_sandstone","localizedName":"Cut Sandstone","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.cut_sandstone"},{"id":"minecraft:cut_sandstone_slab","localizedName":"Cut Sandstone Slab","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.cut_sandstone_slab"},{"id":"minecraft:cyan_banner","localizedName":"Cyan Banner","maxDamage":0,"maxStackSize":16,"unlocalizedName":"block.minecraft.cyan_banner"},{"id":"minecraft:cyan_bed","localizedName":"Cyan Bed","maxDamage":0,"maxStackSize":1,"unlocalizedName":"block.minecraft.cyan_bed"},{"id":"minecraft:cyan_candle","localizedName":"Cyan Candle","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.cyan_candle"},{"id":"minecraft:cyan_carpet","localizedName":"Cyan Carpet","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.cyan_carpet"},{"id":"minecraft:cyan_concrete","localizedName":"Cyan Concrete","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.cyan_concrete"},{"id":"minecraft:cyan_concrete_powder","localizedName":"Cyan Concrete Powder","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.cyan_concrete_powder"},{"id":"minecraft:cyan_dye","localizedName":"Cyan Dye","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.cyan_dye"},{"id":"minecraft:cyan_glazed_terracotta","localizedName":"Cyan Glazed Terracotta","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.cyan_glazed_terracotta"},{"id":"minecraft:cyan_shulker_box","localizedName":"Cyan Shulker Box","maxDamage":0,"maxStackSize":1,"unlocalizedName":"block.minecraft.cyan_shulker_box"},{"id":"minecraft:cyan_stained_glass","localizedName":"Cyan Stained Glass","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.cyan_stained_glass"},{"id":"minecraft:cyan_stained_glass_pane","localizedName":"Cyan Stained Glass Pane","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.cyan_stained_glass_pane"},{"id":"minecraft:cyan_terracotta","localizedName":"Cyan Terracotta","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.cyan_terracotta"},{"id":"minecraft:cyan_wool","localizedName":"Cyan Wool","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.cyan_wool"},{"id":"minecraft:damaged_anvil","localizedName":"Damaged Anvil","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.damaged_anvil"},{"id":"minecraft:dandelion","localizedName":"Dandelion","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.dandelion"},{"id":"minecraft:dark_oak_boat","localizedName":"Dark Oak Boat","maxDamage":0,"maxStackSize":1,"unlocalizedName":"item.minecraft.dark_oak_boat"},{"id":"minecraft:dark_oak_button","localizedName":"Dark Oak Button","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.dark_oak_button"},{"id":"minecraft:dark_oak_chest_boat","localizedName":"Dark Oak Boat with Chest","maxDamage":0,"maxStackSize":1,"unlocalizedName":"item.minecraft.dark_oak_chest_boat"},{"id":"minecraft:dark_oak_door","localizedName":"Dark Oak Door","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.dark_oak_door"},{"id":"minecraft:dark_oak_fence","localizedName":"Dark Oak Fence","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.dark_oak_fence"},{"id":"minecraft:dark_oak_fence_gate","localizedName":"Dark Oak Fence Gate","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.dark_oak_fence_gate"},{"id":"minecraft:dark_oak_leaves","localizedName":"Dark Oak Leaves","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.dark_oak_leaves"},{"id":"minecraft:dark_oak_log","localizedName":"Dark Oak Log","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.dark_oak_log"},{"id":"minecraft:dark_oak_planks","localizedName":"Dark Oak Planks","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.dark_oak_planks"},{"id":"minecraft:dark_oak_pressure_plate","localizedName":"Dark Oak Pressure Plate","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.dark_oak_pressure_plate"},{"id":"minecraft:dark_oak_sapling","localizedName":"Dark Oak Sapling","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.dark_oak_sapling"},{"id":"minecraft:dark_oak_sign","localizedName":"Dark Oak Sign","maxDamage":0,"maxStackSize":16,"unlocalizedName":"block.minecraft.dark_oak_sign"},{"id":"minecraft:dark_oak_slab","localizedName":"Dark Oak Slab","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.dark_oak_slab"},{"id":"minecraft:dark_oak_stairs","localizedName":"Dark Oak Stairs","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.dark_oak_stairs"},{"id":"minecraft:dark_oak_trapdoor","localizedName":"Dark Oak Trapdoor","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.dark_oak_trapdoor"},{"id":"minecraft:dark_oak_wood","localizedName":"Dark Oak Wood","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.dark_oak_wood"},{"id":"minecraft:dark_prismarine","localizedName":"Dark Prismarine","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.dark_prismarine"},{"id":"minecraft:dark_prismarine_slab","localizedName":"Dark Prismarine Slab","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.dark_prismarine_slab"},{"id":"minecraft:dark_prismarine_stairs","localizedName":"Dark Prismarine Stairs","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.dark_prismarine_stairs"},{"id":"minecraft:daylight_detector","localizedName":"Daylight Detector","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.daylight_detector"},{"id":"minecraft:dead_brain_coral","localizedName":"Dead Brain Coral","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.dead_brain_coral"},{"id":"minecraft:dead_brain_coral_block","localizedName":"Dead Brain Coral Block","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.dead_brain_coral_block"},{"id":"minecraft:dead_brain_coral_fan","localizedName":"Dead Brain Coral Fan","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.dead_brain_coral_fan"},{"id":"minecraft:dead_bubble_coral","localizedName":"Dead Bubble Coral","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.dead_bubble_coral"},{"id":"minecraft:dead_bubble_coral_block","localizedName":"Dead Bubble Coral Block","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.dead_bubble_coral_block"},{"id":"minecraft:dead_bubble_coral_fan","localizedName":"Dead Bubble Coral Fan","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.dead_bubble_coral_fan"},{"id":"minecraft:dead_bush","localizedName":"Dead Bush","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.dead_bush"},{"id":"minecraft:dead_fire_coral","localizedName":"Dead Fire Coral","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.dead_fire_coral"},{"id":"minecraft:dead_fire_coral_block","localizedName":"Dead Fire Coral Block","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.dead_fire_coral_block"},{"id":"minecraft:dead_fire_coral_fan","localizedName":"Dead Fire Coral Fan","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.dead_fire_coral_fan"},{"id":"minecraft:dead_horn_coral","localizedName":"Dead Horn Coral","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.dead_horn_coral"},{"id":"minecraft:dead_horn_coral_block","localizedName":"Dead Horn Coral Block","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.dead_horn_coral_block"},{"id":"minecraft:dead_horn_coral_fan","localizedName":"Dead Horn Coral Fan","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.dead_horn_coral_fan"},{"id":"minecraft:dead_tube_coral","localizedName":"Dead Tube Coral","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.dead_tube_coral"},{"id":"minecraft:dead_tube_coral_block","localizedName":"Dead Tube Coral Block","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.dead_tube_coral_block"},{"id":"minecraft:dead_tube_coral_fan","localizedName":"Dead Tube Coral Fan","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.dead_tube_coral_fan"},{"id":"minecraft:debug_stick","localizedName":"Debug Stick","maxDamage":0,"maxStackSize":1,"unlocalizedName":"item.minecraft.debug_stick"},{"id":"minecraft:deepslate","localizedName":"Deepslate","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.deepslate"},{"id":"minecraft:deepslate_brick_slab","localizedName":"Deepslate Brick Slab","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.deepslate_brick_slab"},{"id":"minecraft:deepslate_brick_stairs","localizedName":"Deepslate Brick Stairs","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.deepslate_brick_stairs"},{"id":"minecraft:deepslate_brick_wall","localizedName":"Deepslate Brick Wall","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.deepslate_brick_wall"},{"id":"minecraft:deepslate_bricks","localizedName":"Deepslate Bricks","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.deepslate_bricks"},{"id":"minecraft:deepslate_coal_ore","localizedName":"Deepslate Coal Ore","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.deepslate_coal_ore"},{"id":"minecraft:deepslate_copper_ore","localizedName":"Deepslate Copper Ore","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.deepslate_copper_ore"},{"id":"minecraft:deepslate_diamond_ore","localizedName":"Deepslate Diamond Ore","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.deepslate_diamond_ore"},{"id":"minecraft:deepslate_emerald_ore","localizedName":"Deepslate Emerald Ore","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.deepslate_emerald_ore"},{"id":"minecraft:deepslate_gold_ore","localizedName":"Deepslate Gold Ore","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.deepslate_gold_ore"},{"id":"minecraft:deepslate_iron_ore","localizedName":"Deepslate Iron Ore","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.deepslate_iron_ore"},{"id":"minecraft:deepslate_lapis_ore","localizedName":"Deepslate Lapis Lazuli Ore","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.deepslate_lapis_ore"},{"id":"minecraft:deepslate_redstone_ore","localizedName":"Deepslate Redstone Ore","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.deepslate_redstone_ore"},{"id":"minecraft:deepslate_tile_slab","localizedName":"Deepslate Tile Slab","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.deepslate_tile_slab"},{"id":"minecraft:deepslate_tile_stairs","localizedName":"Deepslate Tile Stairs","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.deepslate_tile_stairs"},{"id":"minecraft:deepslate_tile_wall","localizedName":"Deepslate Tile Wall","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.deepslate_tile_wall"},{"id":"minecraft:deepslate_tiles","localizedName":"Deepslate Tiles","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.deepslate_tiles"},{"id":"minecraft:detector_rail","localizedName":"Detector Rail","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.detector_rail"},{"id":"minecraft:diamond","localizedName":"Diamond","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.diamond"},{"id":"minecraft:diamond_axe","localizedName":"Diamond Axe","maxDamage":1561,"maxStackSize":1,"unlocalizedName":"item.minecraft.diamond_axe"},{"id":"minecraft:diamond_block","localizedName":"Block of Diamond","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.diamond_block"},{"id":"minecraft:diamond_boots","localizedName":"Diamond Boots","maxDamage":429,"maxStackSize":1,"unlocalizedName":"item.minecraft.diamond_boots"},{"id":"minecraft:diamond_chestplate","localizedName":"Diamond Chestplate","maxDamage":528,"maxStackSize":1,"unlocalizedName":"item.minecraft.diamond_chestplate"},{"id":"minecraft:diamond_helmet","localizedName":"Diamond Helmet","maxDamage":363,"maxStackSize":1,"unlocalizedName":"item.minecraft.diamond_helmet"},{"id":"minecraft:diamond_hoe","localizedName":"Diamond Hoe","maxDamage":1561,"maxStackSize":1,"unlocalizedName":"item.minecraft.diamond_hoe"},{"id":"minecraft:diamond_horse_armor","localizedName":"Diamond Horse Armor","maxDamage":0,"maxStackSize":1,"unlocalizedName":"item.minecraft.diamond_horse_armor"},{"id":"minecraft:diamond_leggings","localizedName":"Diamond Leggings","maxDamage":495,"maxStackSize":1,"unlocalizedName":"item.minecraft.diamond_leggings"},{"id":"minecraft:diamond_ore","localizedName":"Diamond Ore","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.diamond_ore"},{"id":"minecraft:diamond_pickaxe","localizedName":"Diamond Pickaxe","maxDamage":1561,"maxStackSize":1,"unlocalizedName":"item.minecraft.diamond_pickaxe"},{"id":"minecraft:diamond_shovel","localizedName":"Diamond Shovel","maxDamage":1561,"maxStackSize":1,"unlocalizedName":"item.minecraft.diamond_shovel"},{"id":"minecraft:diamond_sword","localizedName":"Diamond Sword","maxDamage":1561,"maxStackSize":1,"unlocalizedName":"item.minecraft.diamond_sword"},{"id":"minecraft:diorite","localizedName":"Diorite","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.diorite"},{"id":"minecraft:diorite_slab","localizedName":"Diorite Slab","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.diorite_slab"},{"id":"minecraft:diorite_stairs","localizedName":"Diorite Stairs","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.diorite_stairs"},{"id":"minecraft:diorite_wall","localizedName":"Diorite Wall","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.diorite_wall"},{"id":"minecraft:dirt","localizedName":"Dirt","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.dirt"},{"id":"minecraft:dirt_path","localizedName":"Dirt Path","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.dirt_path"},{"id":"minecraft:disc_fragment_5","localizedName":"Disc Fragment","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.disc_fragment_5"},{"id":"minecraft:dispenser","localizedName":"Dispenser","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.dispenser"},{"id":"minecraft:dolphin_spawn_egg","localizedName":"Dolphin Spawn Egg","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.dolphin_spawn_egg"},{"id":"minecraft:donkey_spawn_egg","localizedName":"Donkey Spawn Egg","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.donkey_spawn_egg"},{"id":"minecraft:dragon_breath","localizedName":"Dragon\u0027s Breath","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.dragon_breath"},{"id":"minecraft:dragon_egg","localizedName":"Dragon Egg","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.dragon_egg"},{"id":"minecraft:dragon_head","localizedName":"Dragon Head","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.dragon_head"},{"id":"minecraft:dried_kelp","localizedName":"Dried Kelp","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.dried_kelp"},{"id":"minecraft:dried_kelp_block","localizedName":"Dried Kelp Block","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.dried_kelp_block"},{"id":"minecraft:dripstone_block","localizedName":"Dripstone Block","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.dripstone_block"},{"id":"minecraft:dropper","localizedName":"Dropper","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.dropper"},{"id":"minecraft:drowned_spawn_egg","localizedName":"Drowned Spawn Egg","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.drowned_spawn_egg"},{"id":"minecraft:echo_shard","localizedName":"Echo Shard","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.echo_shard"},{"id":"minecraft:egg","localizedName":"Egg","maxDamage":0,"maxStackSize":16,"unlocalizedName":"item.minecraft.egg"},{"id":"minecraft:elder_guardian_spawn_egg","localizedName":"Elder Guardian Spawn Egg","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.elder_guardian_spawn_egg"},{"id":"minecraft:elytra","localizedName":"Elytra","maxDamage":432,"maxStackSize":1,"unlocalizedName":"item.minecraft.elytra"},{"id":"minecraft:emerald","localizedName":"Emerald","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.emerald"},{"id":"minecraft:emerald_block","localizedName":"Block of Emerald","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.emerald_block"},{"id":"minecraft:emerald_ore","localizedName":"Emerald Ore","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.emerald_ore"},{"id":"minecraft:enchanted_book","localizedName":"Enchanted Book","maxDamage":0,"maxStackSize":1,"unlocalizedName":"item.minecraft.enchanted_book"},{"id":"minecraft:enchanted_golden_apple","localizedName":"Enchanted Golden Apple","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.enchanted_golden_apple"},{"id":"minecraft:enchanting_table","localizedName":"Enchanting Table","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.enchanting_table"},{"id":"minecraft:end_crystal","localizedName":"End Crystal","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.end_crystal"},{"id":"minecraft:end_portal_frame","localizedName":"End Portal Frame","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.end_portal_frame"},{"id":"minecraft:end_rod","localizedName":"End Rod","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.end_rod"},{"id":"minecraft:end_stone","localizedName":"End Stone","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.end_stone"},{"id":"minecraft:end_stone_brick_slab","localizedName":"End Stone Brick Slab","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.end_stone_brick_slab"},{"id":"minecraft:end_stone_brick_stairs","localizedName":"End Stone Brick Stairs","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.end_stone_brick_stairs"},{"id":"minecraft:end_stone_brick_wall","localizedName":"End Stone Brick Wall","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.end_stone_brick_wall"},{"id":"minecraft:end_stone_bricks","localizedName":"End Stone Bricks","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.end_stone_bricks"},{"id":"minecraft:ender_chest","localizedName":"Ender Chest","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.ender_chest"},{"id":"minecraft:ender_eye","localizedName":"Eye of Ender","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.ender_eye"},{"id":"minecraft:ender_pearl","localizedName":"Ender Pearl","maxDamage":0,"maxStackSize":16,"unlocalizedName":"item.minecraft.ender_pearl"},{"id":"minecraft:enderman_spawn_egg","localizedName":"Enderman Spawn Egg","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.enderman_spawn_egg"},{"id":"minecraft:endermite_spawn_egg","localizedName":"Endermite Spawn Egg","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.endermite_spawn_egg"},{"id":"minecraft:evoker_spawn_egg","localizedName":"Evoker Spawn Egg","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.evoker_spawn_egg"},{"id":"minecraft:experience_bottle","localizedName":"Bottle o\u0027 Enchanting","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.experience_bottle"},{"id":"minecraft:exposed_copper","localizedName":"Exposed Copper","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.exposed_copper"},{"id":"minecraft:exposed_cut_copper","localizedName":"Exposed Cut Copper","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.exposed_cut_copper"},{"id":"minecraft:exposed_cut_copper_slab","localizedName":"Exposed Cut Copper Slab","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.exposed_cut_copper_slab"},{"id":"minecraft:exposed_cut_copper_stairs","localizedName":"Exposed Cut Copper Stairs","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.exposed_cut_copper_stairs"},{"id":"minecraft:farmland","localizedName":"Farmland","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.farmland"},{"id":"minecraft:feather","localizedName":"Feather","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.feather"},{"id":"minecraft:fermented_spider_eye","localizedName":"Fermented Spider Eye","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.fermented_spider_eye"},{"id":"minecraft:fern","localizedName":"Fern","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.fern"},{"id":"minecraft:filled_map","localizedName":"Map","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.filled_map"},{"id":"minecraft:fire_charge","localizedName":"Fire Charge","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.fire_charge"},{"id":"minecraft:fire_coral","localizedName":"Fire Coral","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.fire_coral"},{"id":"minecraft:fire_coral_block","localizedName":"Fire Coral Block","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.fire_coral_block"},{"id":"minecraft:fire_coral_fan","localizedName":"Fire Coral Fan","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.fire_coral_fan"},{"id":"minecraft:firework_rocket","localizedName":"Firework Rocket","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.firework_rocket"},{"id":"minecraft:firework_star","localizedName":"Firework Star","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.firework_star"},{"id":"minecraft:fishing_rod","localizedName":"Fishing Rod","maxDamage":64,"maxStackSize":1,"unlocalizedName":"item.minecraft.fishing_rod"},{"id":"minecraft:fletching_table","localizedName":"Fletching Table","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.fletching_table"},{"id":"minecraft:flint","localizedName":"Flint","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.flint"},{"id":"minecraft:flint_and_steel","localizedName":"Flint and Steel","maxDamage":64,"maxStackSize":1,"unlocalizedName":"item.minecraft.flint_and_steel"},{"id":"minecraft:flower_banner_pattern","localizedName":"Banner Pattern","maxDamage":0,"maxStackSize":1,"unlocalizedName":"item.minecraft.flower_banner_pattern"},{"id":"minecraft:flower_pot","localizedName":"Flower Pot","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.flower_pot"},{"id":"minecraft:flowering_azalea","localizedName":"Flowering Azalea","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.flowering_azalea"},{"id":"minecraft:flowering_azalea_leaves","localizedName":"Flowering Azalea Leaves","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.flowering_azalea_leaves"},{"id":"minecraft:fox_spawn_egg","localizedName":"Fox Spawn Egg","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.fox_spawn_egg"},{"id":"minecraft:frog_spawn_egg","localizedName":"Frog Spawn Egg","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.frog_spawn_egg"},{"id":"minecraft:frogspawn","localizedName":"Frogspawn","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.frogspawn"},{"id":"minecraft:furnace","localizedName":"Furnace","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.furnace"},{"id":"minecraft:furnace_minecart","localizedName":"Minecart with Furnace","maxDamage":0,"maxStackSize":1,"unlocalizedName":"item.minecraft.furnace_minecart"},{"id":"minecraft:ghast_spawn_egg","localizedName":"Ghast Spawn Egg","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.ghast_spawn_egg"},{"id":"minecraft:ghast_tear","localizedName":"Ghast Tear","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.ghast_tear"},{"id":"minecraft:gilded_blackstone","localizedName":"Gilded Blackstone","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.gilded_blackstone"},{"id":"minecraft:glass","localizedName":"Glass","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.glass"},{"id":"minecraft:glass_bottle","localizedName":"Glass Bottle","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.glass_bottle"},{"id":"minecraft:glass_pane","localizedName":"Glass Pane","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.glass_pane"},{"id":"minecraft:glistering_melon_slice","localizedName":"Glistering Melon Slice","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.glistering_melon_slice"},{"id":"minecraft:globe_banner_pattern","localizedName":"Banner Pattern","maxDamage":0,"maxStackSize":1,"unlocalizedName":"item.minecraft.globe_banner_pattern"},{"id":"minecraft:glow_berries","localizedName":"Glow Berries","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.glow_berries"},{"id":"minecraft:glow_ink_sac","localizedName":"Glow Ink Sac","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.glow_ink_sac"},{"id":"minecraft:glow_item_frame","localizedName":"Glow Item Frame","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.glow_item_frame"},{"id":"minecraft:glow_lichen","localizedName":"Glow Lichen","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.glow_lichen"},{"id":"minecraft:glow_squid_spawn_egg","localizedName":"Glow Squid Spawn Egg","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.glow_squid_spawn_egg"},{"id":"minecraft:glowstone","localizedName":"Glowstone","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.glowstone"},{"id":"minecraft:glowstone_dust","localizedName":"Glowstone Dust","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.glowstone_dust"},{"id":"minecraft:goat_horn","localizedName":"Goat Horn","maxDamage":0,"maxStackSize":1,"unlocalizedName":"item.minecraft.goat_horn"},{"id":"minecraft:goat_spawn_egg","localizedName":"Goat Spawn Egg","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.goat_spawn_egg"},{"id":"minecraft:gold_block","localizedName":"Block of Gold","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.gold_block"},{"id":"minecraft:gold_ingot","localizedName":"Gold Ingot","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.gold_ingot"},{"id":"minecraft:gold_nugget","localizedName":"Gold Nugget","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.gold_nugget"},{"id":"minecraft:gold_ore","localizedName":"Gold Ore","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.gold_ore"},{"id":"minecraft:golden_apple","localizedName":"Golden Apple","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.golden_apple"},{"id":"minecraft:golden_axe","localizedName":"Golden Axe","maxDamage":32,"maxStackSize":1,"unlocalizedName":"item.minecraft.golden_axe"},{"id":"minecraft:golden_boots","localizedName":"Golden Boots","maxDamage":91,"maxStackSize":1,"unlocalizedName":"item.minecraft.golden_boots"},{"id":"minecraft:golden_carrot","localizedName":"Golden Carrot","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.golden_carrot"},{"id":"minecraft:golden_chestplate","localizedName":"Golden Chestplate","maxDamage":112,"maxStackSize":1,"unlocalizedName":"item.minecraft.golden_chestplate"},{"id":"minecraft:golden_helmet","localizedName":"Golden Helmet","maxDamage":77,"maxStackSize":1,"unlocalizedName":"item.minecraft.golden_helmet"},{"id":"minecraft:golden_hoe","localizedName":"Golden Hoe","maxDamage":32,"maxStackSize":1,"unlocalizedName":"item.minecraft.golden_hoe"},{"id":"minecraft:golden_horse_armor","localizedName":"Golden Horse Armor","maxDamage":0,"maxStackSize":1,"unlocalizedName":"item.minecraft.golden_horse_armor"},{"id":"minecraft:golden_leggings","localizedName":"Golden Leggings","maxDamage":105,"maxStackSize":1,"unlocalizedName":"item.minecraft.golden_leggings"},{"id":"minecraft:golden_pickaxe","localizedName":"Golden Pickaxe","maxDamage":32,"maxStackSize":1,"unlocalizedName":"item.minecraft.golden_pickaxe"},{"id":"minecraft:golden_shovel","localizedName":"Golden Shovel","maxDamage":32,"maxStackSize":1,"unlocalizedName":"item.minecraft.golden_shovel"},{"id":"minecraft:golden_sword","localizedName":"Golden Sword","maxDamage":32,"maxStackSize":1,"unlocalizedName":"item.minecraft.golden_sword"},{"id":"minecraft:granite","localizedName":"Granite","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.granite"},{"id":"minecraft:granite_slab","localizedName":"Granite Slab","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.granite_slab"},{"id":"minecraft:granite_stairs","localizedName":"Granite Stairs","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.granite_stairs"},{"id":"minecraft:granite_wall","localizedName":"Granite Wall","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.granite_wall"},{"id":"minecraft:grass","localizedName":"Grass","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.grass"},{"id":"minecraft:grass_block","localizedName":"Grass Block","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.grass_block"},{"id":"minecraft:gravel","localizedName":"Gravel","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.gravel"},{"id":"minecraft:gray_banner","localizedName":"Gray Banner","maxDamage":0,"maxStackSize":16,"unlocalizedName":"block.minecraft.gray_banner"},{"id":"minecraft:gray_bed","localizedName":"Gray Bed","maxDamage":0,"maxStackSize":1,"unlocalizedName":"block.minecraft.gray_bed"},{"id":"minecraft:gray_candle","localizedName":"Gray Candle","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.gray_candle"},{"id":"minecraft:gray_carpet","localizedName":"Gray Carpet","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.gray_carpet"},{"id":"minecraft:gray_concrete","localizedName":"Gray Concrete","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.gray_concrete"},{"id":"minecraft:gray_concrete_powder","localizedName":"Gray Concrete Powder","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.gray_concrete_powder"},{"id":"minecraft:gray_dye","localizedName":"Gray Dye","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.gray_dye"},{"id":"minecraft:gray_glazed_terracotta","localizedName":"Gray Glazed Terracotta","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.gray_glazed_terracotta"},{"id":"minecraft:gray_shulker_box","localizedName":"Gray Shulker Box","maxDamage":0,"maxStackSize":1,"unlocalizedName":"block.minecraft.gray_shulker_box"},{"id":"minecraft:gray_stained_glass","localizedName":"Gray Stained Glass","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.gray_stained_glass"},{"id":"minecraft:gray_stained_glass_pane","localizedName":"Gray Stained Glass Pane","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.gray_stained_glass_pane"},{"id":"minecraft:gray_terracotta","localizedName":"Gray Terracotta","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.gray_terracotta"},{"id":"minecraft:gray_wool","localizedName":"Gray Wool","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.gray_wool"},{"id":"minecraft:green_banner","localizedName":"Green Banner","maxDamage":0,"maxStackSize":16,"unlocalizedName":"block.minecraft.green_banner"},{"id":"minecraft:green_bed","localizedName":"Green Bed","maxDamage":0,"maxStackSize":1,"unlocalizedName":"block.minecraft.green_bed"},{"id":"minecraft:green_candle","localizedName":"Green Candle","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.green_candle"},{"id":"minecraft:green_carpet","localizedName":"Green Carpet","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.green_carpet"},{"id":"minecraft:green_concrete","localizedName":"Green Concrete","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.green_concrete"},{"id":"minecraft:green_concrete_powder","localizedName":"Green Concrete Powder","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.green_concrete_powder"},{"id":"minecraft:green_dye","localizedName":"Green Dye","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.green_dye"},{"id":"minecraft:green_glazed_terracotta","localizedName":"Green Glazed Terracotta","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.green_glazed_terracotta"},{"id":"minecraft:green_shulker_box","localizedName":"Green Shulker Box","maxDamage":0,"maxStackSize":1,"unlocalizedName":"block.minecraft.green_shulker_box"},{"id":"minecraft:green_stained_glass","localizedName":"Green Stained Glass","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.green_stained_glass"},{"id":"minecraft:green_stained_glass_pane","localizedName":"Green Stained Glass Pane","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.green_stained_glass_pane"},{"id":"minecraft:green_terracotta","localizedName":"Green Terracotta","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.green_terracotta"},{"id":"minecraft:green_wool","localizedName":"Green Wool","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.green_wool"},{"id":"minecraft:grindstone","localizedName":"Grindstone","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.grindstone"},{"id":"minecraft:guardian_spawn_egg","localizedName":"Guardian Spawn Egg","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.guardian_spawn_egg"},{"id":"minecraft:gunpowder","localizedName":"Gunpowder","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.gunpowder"},{"id":"minecraft:hanging_roots","localizedName":"Hanging Roots","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.hanging_roots"},{"id":"minecraft:hay_block","localizedName":"Hay Bale","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.hay_block"},{"id":"minecraft:heart_of_the_sea","localizedName":"Heart of the Sea","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.heart_of_the_sea"},{"id":"minecraft:heavy_weighted_pressure_plate","localizedName":"Heavy Weighted Pressure Plate","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.heavy_weighted_pressure_plate"},{"id":"minecraft:hoglin_spawn_egg","localizedName":"Hoglin Spawn Egg","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.hoglin_spawn_egg"},{"id":"minecraft:honey_block","localizedName":"Honey Block","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.honey_block"},{"id":"minecraft:honey_bottle","localizedName":"Honey Bottle","maxDamage":0,"maxStackSize":16,"unlocalizedName":"item.minecraft.honey_bottle"},{"id":"minecraft:honeycomb","localizedName":"Honeycomb","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.honeycomb"},{"id":"minecraft:honeycomb_block","localizedName":"Honeycomb Block","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.honeycomb_block"},{"id":"minecraft:hopper","localizedName":"Hopper","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.hopper"},{"id":"minecraft:hopper_minecart","localizedName":"Minecart with Hopper","maxDamage":0,"maxStackSize":1,"unlocalizedName":"item.minecraft.hopper_minecart"},{"id":"minecraft:horn_coral","localizedName":"Horn Coral","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.horn_coral"},{"id":"minecraft:horn_coral_block","localizedName":"Horn Coral Block","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.horn_coral_block"},{"id":"minecraft:horn_coral_fan","localizedName":"Horn Coral Fan","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.horn_coral_fan"},{"id":"minecraft:horse_spawn_egg","localizedName":"Horse Spawn Egg","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.horse_spawn_egg"},{"id":"minecraft:husk_spawn_egg","localizedName":"Husk Spawn Egg","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.husk_spawn_egg"},{"id":"minecraft:ice","localizedName":"Ice","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.ice"},{"id":"minecraft:infested_chiseled_stone_bricks","localizedName":"Infested Chiseled Stone Bricks","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.infested_chiseled_stone_bricks"},{"id":"minecraft:infested_cobblestone","localizedName":"Infested Cobblestone","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.infested_cobblestone"},{"id":"minecraft:infested_cracked_stone_bricks","localizedName":"Infested Cracked Stone Bricks","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.infested_cracked_stone_bricks"},{"id":"minecraft:infested_deepslate","localizedName":"Infested Deepslate","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.infested_deepslate"},{"id":"minecraft:infested_mossy_stone_bricks","localizedName":"Infested Mossy Stone Bricks","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.infested_mossy_stone_bricks"},{"id":"minecraft:infested_stone","localizedName":"Infested Stone","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.infested_stone"},{"id":"minecraft:infested_stone_bricks","localizedName":"Infested Stone Bricks","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.infested_stone_bricks"},{"id":"minecraft:ink_sac","localizedName":"Ink Sac","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.ink_sac"},{"id":"minecraft:iron_axe","localizedName":"Iron Axe","maxDamage":250,"maxStackSize":1,"unlocalizedName":"item.minecraft.iron_axe"},{"id":"minecraft:iron_bars","localizedName":"Iron Bars","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.iron_bars"},{"id":"minecraft:iron_block","localizedName":"Block of Iron","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.iron_block"},{"id":"minecraft:iron_boots","localizedName":"Iron Boots","maxDamage":195,"maxStackSize":1,"unlocalizedName":"item.minecraft.iron_boots"},{"id":"minecraft:iron_chestplate","localizedName":"Iron Chestplate","maxDamage":240,"maxStackSize":1,"unlocalizedName":"item.minecraft.iron_chestplate"},{"id":"minecraft:iron_door","localizedName":"Iron Door","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.iron_door"},{"id":"minecraft:iron_helmet","localizedName":"Iron Helmet","maxDamage":165,"maxStackSize":1,"unlocalizedName":"item.minecraft.iron_helmet"},{"id":"minecraft:iron_hoe","localizedName":"Iron Hoe","maxDamage":250,"maxStackSize":1,"unlocalizedName":"item.minecraft.iron_hoe"},{"id":"minecraft:iron_horse_armor","localizedName":"Iron Horse Armor","maxDamage":0,"maxStackSize":1,"unlocalizedName":"item.minecraft.iron_horse_armor"},{"id":"minecraft:iron_ingot","localizedName":"Iron Ingot","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.iron_ingot"},{"id":"minecraft:iron_leggings","localizedName":"Iron Leggings","maxDamage":225,"maxStackSize":1,"unlocalizedName":"item.minecraft.iron_leggings"},{"id":"minecraft:iron_nugget","localizedName":"Iron Nugget","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.iron_nugget"},{"id":"minecraft:iron_ore","localizedName":"Iron Ore","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.iron_ore"},{"id":"minecraft:iron_pickaxe","localizedName":"Iron Pickaxe","maxDamage":250,"maxStackSize":1,"unlocalizedName":"item.minecraft.iron_pickaxe"},{"id":"minecraft:iron_shovel","localizedName":"Iron Shovel","maxDamage":250,"maxStackSize":1,"unlocalizedName":"item.minecraft.iron_shovel"},{"id":"minecraft:iron_sword","localizedName":"Iron Sword","maxDamage":250,"maxStackSize":1,"unlocalizedName":"item.minecraft.iron_sword"},{"id":"minecraft:iron_trapdoor","localizedName":"Iron Trapdoor","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.iron_trapdoor"},{"id":"minecraft:item_frame","localizedName":"Item Frame","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.item_frame"},{"id":"minecraft:jack_o_lantern","localizedName":"Jack o\u0027Lantern","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.jack_o_lantern"},{"id":"minecraft:jigsaw","localizedName":"Jigsaw Block","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.jigsaw"},{"id":"minecraft:jukebox","localizedName":"Jukebox","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.jukebox"},{"id":"minecraft:jungle_boat","localizedName":"Jungle Boat","maxDamage":0,"maxStackSize":1,"unlocalizedName":"item.minecraft.jungle_boat"},{"id":"minecraft:jungle_button","localizedName":"Jungle Button","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.jungle_button"},{"id":"minecraft:jungle_chest_boat","localizedName":"Jungle Boat with Chest","maxDamage":0,"maxStackSize":1,"unlocalizedName":"item.minecraft.jungle_chest_boat"},{"id":"minecraft:jungle_door","localizedName":"Jungle Door","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.jungle_door"},{"id":"minecraft:jungle_fence","localizedName":"Jungle Fence","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.jungle_fence"},{"id":"minecraft:jungle_fence_gate","localizedName":"Jungle Fence Gate","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.jungle_fence_gate"},{"id":"minecraft:jungle_leaves","localizedName":"Jungle Leaves","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.jungle_leaves"},{"id":"minecraft:jungle_log","localizedName":"Jungle Log","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.jungle_log"},{"id":"minecraft:jungle_planks","localizedName":"Jungle Planks","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.jungle_planks"},{"id":"minecraft:jungle_pressure_plate","localizedName":"Jungle Pressure Plate","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.jungle_pressure_plate"},{"id":"minecraft:jungle_sapling","localizedName":"Jungle Sapling","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.jungle_sapling"},{"id":"minecraft:jungle_sign","localizedName":"Jungle Sign","maxDamage":0,"maxStackSize":16,"unlocalizedName":"block.minecraft.jungle_sign"},{"id":"minecraft:jungle_slab","localizedName":"Jungle Slab","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.jungle_slab"},{"id":"minecraft:jungle_stairs","localizedName":"Jungle Stairs","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.jungle_stairs"},{"id":"minecraft:jungle_trapdoor","localizedName":"Jungle Trapdoor","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.jungle_trapdoor"},{"id":"minecraft:jungle_wood","localizedName":"Jungle Wood","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.jungle_wood"},{"id":"minecraft:kelp","localizedName":"Kelp","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.kelp"},{"id":"minecraft:knowledge_book","localizedName":"Knowledge Book","maxDamage":0,"maxStackSize":1,"unlocalizedName":"item.minecraft.knowledge_book"},{"id":"minecraft:ladder","localizedName":"Ladder","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.ladder"},{"id":"minecraft:lantern","localizedName":"Lantern","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.lantern"},{"id":"minecraft:lapis_block","localizedName":"Block of Lapis Lazuli","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.lapis_block"},{"id":"minecraft:lapis_lazuli","localizedName":"Lapis Lazuli","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.lapis_lazuli"},{"id":"minecraft:lapis_ore","localizedName":"Lapis Lazuli Ore","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.lapis_ore"},{"id":"minecraft:large_amethyst_bud","localizedName":"Large Amethyst Bud","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.large_amethyst_bud"},{"id":"minecraft:large_fern","localizedName":"Large Fern","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.large_fern"},{"id":"minecraft:lava_bucket","localizedName":"Lava Bucket","maxDamage":0,"maxStackSize":1,"unlocalizedName":"item.minecraft.lava_bucket"},{"id":"minecraft:lead","localizedName":"Lead","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.lead"},{"id":"minecraft:leather","localizedName":"Leather","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.leather"},{"id":"minecraft:leather_boots","localizedName":"Leather Boots","maxDamage":65,"maxStackSize":1,"unlocalizedName":"item.minecraft.leather_boots"},{"id":"minecraft:leather_chestplate","localizedName":"Leather Tunic","maxDamage":80,"maxStackSize":1,"unlocalizedName":"item.minecraft.leather_chestplate"},{"id":"minecraft:leather_helmet","localizedName":"Leather Cap","maxDamage":55,"maxStackSize":1,"unlocalizedName":"item.minecraft.leather_helmet"},{"id":"minecraft:leather_horse_armor","localizedName":"Leather Horse Armor","maxDamage":0,"maxStackSize":1,"unlocalizedName":"item.minecraft.leather_horse_armor"},{"id":"minecraft:leather_leggings","localizedName":"Leather Pants","maxDamage":75,"maxStackSize":1,"unlocalizedName":"item.minecraft.leather_leggings"},{"id":"minecraft:lectern","localizedName":"Lectern","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.lectern"},{"id":"minecraft:lever","localizedName":"Lever","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.lever"},{"id":"minecraft:light","localizedName":"Light","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.light"},{"id":"minecraft:light_blue_banner","localizedName":"Light Blue Banner","maxDamage":0,"maxStackSize":16,"unlocalizedName":"block.minecraft.light_blue_banner"},{"id":"minecraft:light_blue_bed","localizedName":"Light Blue Bed","maxDamage":0,"maxStackSize":1,"unlocalizedName":"block.minecraft.light_blue_bed"},{"id":"minecraft:light_blue_candle","localizedName":"Light Blue Candle","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.light_blue_candle"},{"id":"minecraft:light_blue_carpet","localizedName":"Light Blue Carpet","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.light_blue_carpet"},{"id":"minecraft:light_blue_concrete","localizedName":"Light Blue Concrete","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.light_blue_concrete"},{"id":"minecraft:light_blue_concrete_powder","localizedName":"Light Blue Concrete Powder","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.light_blue_concrete_powder"},{"id":"minecraft:light_blue_dye","localizedName":"Light Blue Dye","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.light_blue_dye"},{"id":"minecraft:light_blue_glazed_terracotta","localizedName":"Light Blue Glazed Terracotta","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.light_blue_glazed_terracotta"},{"id":"minecraft:light_blue_shulker_box","localizedName":"Light Blue Shulker Box","maxDamage":0,"maxStackSize":1,"unlocalizedName":"block.minecraft.light_blue_shulker_box"},{"id":"minecraft:light_blue_stained_glass","localizedName":"Light Blue Stained Glass","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.light_blue_stained_glass"},{"id":"minecraft:light_blue_stained_glass_pane","localizedName":"Light Blue Stained Glass Pane","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.light_blue_stained_glass_pane"},{"id":"minecraft:light_blue_terracotta","localizedName":"Light Blue Terracotta","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.light_blue_terracotta"},{"id":"minecraft:light_blue_wool","localizedName":"Light Blue Wool","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.light_blue_wool"},{"id":"minecraft:light_gray_banner","localizedName":"Light Gray Banner","maxDamage":0,"maxStackSize":16,"unlocalizedName":"block.minecraft.light_gray_banner"},{"id":"minecraft:light_gray_bed","localizedName":"Light Gray Bed","maxDamage":0,"maxStackSize":1,"unlocalizedName":"block.minecraft.light_gray_bed"},{"id":"minecraft:light_gray_candle","localizedName":"Light Gray Candle","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.light_gray_candle"},{"id":"minecraft:light_gray_carpet","localizedName":"Light Gray Carpet","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.light_gray_carpet"},{"id":"minecraft:light_gray_concrete","localizedName":"Light Gray Concrete","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.light_gray_concrete"},{"id":"minecraft:light_gray_concrete_powder","localizedName":"Light Gray Concrete Powder","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.light_gray_concrete_powder"},{"id":"minecraft:light_gray_dye","localizedName":"Light Gray Dye","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.light_gray_dye"},{"id":"minecraft:light_gray_glazed_terracotta","localizedName":"Light Gray Glazed Terracotta","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.light_gray_glazed_terracotta"},{"id":"minecraft:light_gray_shulker_box","localizedName":"Light Gray Shulker Box","maxDamage":0,"maxStackSize":1,"unlocalizedName":"block.minecraft.light_gray_shulker_box"},{"id":"minecraft:light_gray_stained_glass","localizedName":"Light Gray Stained Glass","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.light_gray_stained_glass"},{"id":"minecraft:light_gray_stained_glass_pane","localizedName":"Light Gray Stained Glass Pane","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.light_gray_stained_glass_pane"},{"id":"minecraft:light_gray_terracotta","localizedName":"Light Gray Terracotta","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.light_gray_terracotta"},{"id":"minecraft:light_gray_wool","localizedName":"Light Gray Wool","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.light_gray_wool"},{"id":"minecraft:light_weighted_pressure_plate","localizedName":"Light Weighted Pressure Plate","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.light_weighted_pressure_plate"},{"id":"minecraft:lightning_rod","localizedName":"Lightning Rod","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.lightning_rod"},{"id":"minecraft:lilac","localizedName":"Lilac","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.lilac"},{"id":"minecraft:lily_of_the_valley","localizedName":"Lily of the Valley","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.lily_of_the_valley"},{"id":"minecraft:lily_pad","localizedName":"Lily Pad","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.lily_pad"},{"id":"minecraft:lime_banner","localizedName":"Lime Banner","maxDamage":0,"maxStackSize":16,"unlocalizedName":"block.minecraft.lime_banner"},{"id":"minecraft:lime_bed","localizedName":"Lime Bed","maxDamage":0,"maxStackSize":1,"unlocalizedName":"block.minecraft.lime_bed"},{"id":"minecraft:lime_candle","localizedName":"Lime Candle","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.lime_candle"},{"id":"minecraft:lime_carpet","localizedName":"Lime Carpet","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.lime_carpet"},{"id":"minecraft:lime_concrete","localizedName":"Lime Concrete","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.lime_concrete"},{"id":"minecraft:lime_concrete_powder","localizedName":"Lime Concrete Powder","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.lime_concrete_powder"},{"id":"minecraft:lime_dye","localizedName":"Lime Dye","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.lime_dye"},{"id":"minecraft:lime_glazed_terracotta","localizedName":"Lime Glazed Terracotta","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.lime_glazed_terracotta"},{"id":"minecraft:lime_shulker_box","localizedName":"Lime Shulker Box","maxDamage":0,"maxStackSize":1,"unlocalizedName":"block.minecraft.lime_shulker_box"},{"id":"minecraft:lime_stained_glass","localizedName":"Lime Stained Glass","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.lime_stained_glass"},{"id":"minecraft:lime_stained_glass_pane","localizedName":"Lime Stained Glass Pane","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.lime_stained_glass_pane"},{"id":"minecraft:lime_terracotta","localizedName":"Lime Terracotta","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.lime_terracotta"},{"id":"minecraft:lime_wool","localizedName":"Lime Wool","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.lime_wool"},{"id":"minecraft:lingering_potion","localizedName":"Lingering Water Bottle","maxDamage":0,"maxStackSize":1,"unlocalizedName":"item.minecraft.lingering_potion.effect.water"},{"id":"minecraft:llama_spawn_egg","localizedName":"Llama Spawn Egg","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.llama_spawn_egg"},{"id":"minecraft:lodestone","localizedName":"Lodestone","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.lodestone"},{"id":"minecraft:loom","localizedName":"Loom","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.loom"},{"id":"minecraft:magenta_banner","localizedName":"Magenta Banner","maxDamage":0,"maxStackSize":16,"unlocalizedName":"block.minecraft.magenta_banner"},{"id":"minecraft:magenta_bed","localizedName":"Magenta Bed","maxDamage":0,"maxStackSize":1,"unlocalizedName":"block.minecraft.magenta_bed"},{"id":"minecraft:magenta_candle","localizedName":"Magenta Candle","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.magenta_candle"},{"id":"minecraft:magenta_carpet","localizedName":"Magenta Carpet","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.magenta_carpet"},{"id":"minecraft:magenta_concrete","localizedName":"Magenta Concrete","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.magenta_concrete"},{"id":"minecraft:magenta_concrete_powder","localizedName":"Magenta Concrete Powder","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.magenta_concrete_powder"},{"id":"minecraft:magenta_dye","localizedName":"Magenta Dye","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.magenta_dye"},{"id":"minecraft:magenta_glazed_terracotta","localizedName":"Magenta Glazed Terracotta","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.magenta_glazed_terracotta"},{"id":"minecraft:magenta_shulker_box","localizedName":"Magenta Shulker Box","maxDamage":0,"maxStackSize":1,"unlocalizedName":"block.minecraft.magenta_shulker_box"},{"id":"minecraft:magenta_stained_glass","localizedName":"Magenta Stained Glass","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.magenta_stained_glass"},{"id":"minecraft:magenta_stained_glass_pane","localizedName":"Magenta Stained Glass Pane","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.magenta_stained_glass_pane"},{"id":"minecraft:magenta_terracotta","localizedName":"Magenta Terracotta","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.magenta_terracotta"},{"id":"minecraft:magenta_wool","localizedName":"Magenta Wool","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.magenta_wool"},{"id":"minecraft:magma_block","localizedName":"Magma Block","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.magma_block"},{"id":"minecraft:magma_cream","localizedName":"Magma Cream","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.magma_cream"},{"id":"minecraft:magma_cube_spawn_egg","localizedName":"Magma Cube Spawn Egg","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.magma_cube_spawn_egg"},{"id":"minecraft:mangrove_boat","localizedName":"Mangrove Boat","maxDamage":0,"maxStackSize":1,"unlocalizedName":"item.minecraft.mangrove_boat"},{"id":"minecraft:mangrove_button","localizedName":"Mangrove Button","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.mangrove_button"},{"id":"minecraft:mangrove_chest_boat","localizedName":"Mangrove Boat with Chest","maxDamage":0,"maxStackSize":1,"unlocalizedName":"item.minecraft.mangrove_chest_boat"},{"id":"minecraft:mangrove_door","localizedName":"Mangrove Door","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.mangrove_door"},{"id":"minecraft:mangrove_fence","localizedName":"Mangrove Fence","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.mangrove_fence"},{"id":"minecraft:mangrove_fence_gate","localizedName":"Mangrove Fence Gate","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.mangrove_fence_gate"},{"id":"minecraft:mangrove_leaves","localizedName":"Mangrove Leaves","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.mangrove_leaves"},{"id":"minecraft:mangrove_log","localizedName":"Mangrove Log","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.mangrove_log"},{"id":"minecraft:mangrove_planks","localizedName":"Mangrove Planks","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.mangrove_planks"},{"id":"minecraft:mangrove_pressure_plate","localizedName":"Mangrove Pressure Plate","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.mangrove_pressure_plate"},{"id":"minecraft:mangrove_propagule","localizedName":"Mangrove Propagule","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.mangrove_propagule"},{"id":"minecraft:mangrove_roots","localizedName":"Mangrove Roots","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.mangrove_roots"},{"id":"minecraft:mangrove_sign","localizedName":"Mangrove Sign","maxDamage":0,"maxStackSize":16,"unlocalizedName":"block.minecraft.mangrove_sign"},{"id":"minecraft:mangrove_slab","localizedName":"Mangrove Slab","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.mangrove_slab"},{"id":"minecraft:mangrove_stairs","localizedName":"Mangrove Stairs","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.mangrove_stairs"},{"id":"minecraft:mangrove_trapdoor","localizedName":"Mangrove Trapdoor","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.mangrove_trapdoor"},{"id":"minecraft:mangrove_wood","localizedName":"Mangrove Wood","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.mangrove_wood"},{"id":"minecraft:map","localizedName":"Empty Map","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.map"},{"id":"minecraft:medium_amethyst_bud","localizedName":"Medium Amethyst Bud","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.medium_amethyst_bud"},{"id":"minecraft:melon","localizedName":"Melon","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.melon"},{"id":"minecraft:melon_seeds","localizedName":"Melon Seeds","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.melon_seeds"},{"id":"minecraft:melon_slice","localizedName":"Melon Slice","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.melon_slice"},{"id":"minecraft:milk_bucket","localizedName":"Milk Bucket","maxDamage":0,"maxStackSize":1,"unlocalizedName":"item.minecraft.milk_bucket"},{"id":"minecraft:minecart","localizedName":"Minecart","maxDamage":0,"maxStackSize":1,"unlocalizedName":"item.minecraft.minecart"},{"id":"minecraft:mojang_banner_pattern","localizedName":"Banner Pattern","maxDamage":0,"maxStackSize":1,"unlocalizedName":"item.minecraft.mojang_banner_pattern"},{"id":"minecraft:mooshroom_spawn_egg","localizedName":"Mooshroom Spawn Egg","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.mooshroom_spawn_egg"},{"id":"minecraft:moss_block","localizedName":"Moss Block","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.moss_block"},{"id":"minecraft:moss_carpet","localizedName":"Moss Carpet","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.moss_carpet"},{"id":"minecraft:mossy_cobblestone","localizedName":"Mossy Cobblestone","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.mossy_cobblestone"},{"id":"minecraft:mossy_cobblestone_slab","localizedName":"Mossy Cobblestone Slab","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.mossy_cobblestone_slab"},{"id":"minecraft:mossy_cobblestone_stairs","localizedName":"Mossy Cobblestone Stairs","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.mossy_cobblestone_stairs"},{"id":"minecraft:mossy_cobblestone_wall","localizedName":"Mossy Cobblestone Wall","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.mossy_cobblestone_wall"},{"id":"minecraft:mossy_stone_brick_slab","localizedName":"Mossy Stone Brick Slab","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.mossy_stone_brick_slab"},{"id":"minecraft:mossy_stone_brick_stairs","localizedName":"Mossy Stone Brick Stairs","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.mossy_stone_brick_stairs"},{"id":"minecraft:mossy_stone_brick_wall","localizedName":"Mossy Stone Brick Wall","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.mossy_stone_brick_wall"},{"id":"minecraft:mossy_stone_bricks","localizedName":"Mossy Stone Bricks","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.mossy_stone_bricks"},{"id":"minecraft:mud","localizedName":"Mud","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.mud"},{"id":"minecraft:mud_brick_slab","localizedName":"Mud Brick Slab","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.mud_brick_slab"},{"id":"minecraft:mud_brick_stairs","localizedName":"Mud Brick Stairs","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.mud_brick_stairs"},{"id":"minecraft:mud_brick_wall","localizedName":"Mud Brick Wall","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.mud_brick_wall"},{"id":"minecraft:mud_bricks","localizedName":"Mud Bricks","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.mud_bricks"},{"id":"minecraft:muddy_mangrove_roots","localizedName":"Muddy Mangrove Roots","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.muddy_mangrove_roots"},{"id":"minecraft:mule_spawn_egg","localizedName":"Mule Spawn Egg","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.mule_spawn_egg"},{"id":"minecraft:mushroom_stem","localizedName":"Mushroom Stem","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.mushroom_stem"},{"id":"minecraft:mushroom_stew","localizedName":"Mushroom Stew","maxDamage":0,"maxStackSize":1,"unlocalizedName":"item.minecraft.mushroom_stew"},{"id":"minecraft:music_disc_11","localizedName":"Music Disc","maxDamage":0,"maxStackSize":1,"unlocalizedName":"item.minecraft.music_disc_11"},{"id":"minecraft:music_disc_13","localizedName":"Music Disc","maxDamage":0,"maxStackSize":1,"unlocalizedName":"item.minecraft.music_disc_13"},{"id":"minecraft:music_disc_5","localizedName":"Music Disc","maxDamage":0,"maxStackSize":1,"unlocalizedName":"item.minecraft.music_disc_5"},{"id":"minecraft:music_disc_blocks","localizedName":"Music Disc","maxDamage":0,"maxStackSize":1,"unlocalizedName":"item.minecraft.music_disc_blocks"},{"id":"minecraft:music_disc_cat","localizedName":"Music Disc","maxDamage":0,"maxStackSize":1,"unlocalizedName":"item.minecraft.music_disc_cat"},{"id":"minecraft:music_disc_chirp","localizedName":"Music Disc","maxDamage":0,"maxStackSize":1,"unlocalizedName":"item.minecraft.music_disc_chirp"},{"id":"minecraft:music_disc_far","localizedName":"Music Disc","maxDamage":0,"maxStackSize":1,"unlocalizedName":"item.minecraft.music_disc_far"},{"id":"minecraft:music_disc_mall","localizedName":"Music Disc","maxDamage":0,"maxStackSize":1,"unlocalizedName":"item.minecraft.music_disc_mall"},{"id":"minecraft:music_disc_mellohi","localizedName":"Music Disc","maxDamage":0,"maxStackSize":1,"unlocalizedName":"item.minecraft.music_disc_mellohi"},{"id":"minecraft:music_disc_otherside","localizedName":"Music Disc","maxDamage":0,"maxStackSize":1,"unlocalizedName":"item.minecraft.music_disc_otherside"},{"id":"minecraft:music_disc_pigstep","localizedName":"Music Disc","maxDamage":0,"maxStackSize":1,"unlocalizedName":"item.minecraft.music_disc_pigstep"},{"id":"minecraft:music_disc_stal","localizedName":"Music Disc","maxDamage":0,"maxStackSize":1,"unlocalizedName":"item.minecraft.music_disc_stal"},{"id":"minecraft:music_disc_strad","localizedName":"Music Disc","maxDamage":0,"maxStackSize":1,"unlocalizedName":"item.minecraft.music_disc_strad"},{"id":"minecraft:music_disc_wait","localizedName":"Music Disc","maxDamage":0,"maxStackSize":1,"unlocalizedName":"item.minecraft.music_disc_wait"},{"id":"minecraft:music_disc_ward","localizedName":"Music Disc","maxDamage":0,"maxStackSize":1,"unlocalizedName":"item.minecraft.music_disc_ward"},{"id":"minecraft:mutton","localizedName":"Raw Mutton","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.mutton"},{"id":"minecraft:mycelium","localizedName":"Mycelium","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.mycelium"},{"id":"minecraft:name_tag","localizedName":"Name Tag","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.name_tag"},{"id":"minecraft:nautilus_shell","localizedName":"Nautilus Shell","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.nautilus_shell"},{"id":"minecraft:nether_brick","localizedName":"Nether Brick","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.nether_brick"},{"id":"minecraft:nether_brick_fence","localizedName":"Nether Brick Fence","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.nether_brick_fence"},{"id":"minecraft:nether_brick_slab","localizedName":"Nether Brick Slab","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.nether_brick_slab"},{"id":"minecraft:nether_brick_stairs","localizedName":"Nether Brick Stairs","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.nether_brick_stairs"},{"id":"minecraft:nether_brick_wall","localizedName":"Nether Brick Wall","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.nether_brick_wall"},{"id":"minecraft:nether_bricks","localizedName":"Nether Bricks","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.nether_bricks"},{"id":"minecraft:nether_gold_ore","localizedName":"Nether Gold Ore","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.nether_gold_ore"},{"id":"minecraft:nether_quartz_ore","localizedName":"Nether Quartz Ore","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.nether_quartz_ore"},{"id":"minecraft:nether_sprouts","localizedName":"Nether Sprouts","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.nether_sprouts"},{"id":"minecraft:nether_star","localizedName":"Nether Star","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.nether_star"},{"id":"minecraft:nether_wart","localizedName":"Nether Wart","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.nether_wart"},{"id":"minecraft:nether_wart_block","localizedName":"Nether Wart Block","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.nether_wart_block"},{"id":"minecraft:netherite_axe","localizedName":"Netherite Axe","maxDamage":2031,"maxStackSize":1,"unlocalizedName":"item.minecraft.netherite_axe"},{"id":"minecraft:netherite_block","localizedName":"Block of Netherite","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.netherite_block"},{"id":"minecraft:netherite_boots","localizedName":"Netherite Boots","maxDamage":481,"maxStackSize":1,"unlocalizedName":"item.minecraft.netherite_boots"},{"id":"minecraft:netherite_chestplate","localizedName":"Netherite Chestplate","maxDamage":592,"maxStackSize":1,"unlocalizedName":"item.minecraft.netherite_chestplate"},{"id":"minecraft:netherite_helmet","localizedName":"Netherite Helmet","maxDamage":407,"maxStackSize":1,"unlocalizedName":"item.minecraft.netherite_helmet"},{"id":"minecraft:netherite_hoe","localizedName":"Netherite Hoe","maxDamage":2031,"maxStackSize":1,"unlocalizedName":"item.minecraft.netherite_hoe"},{"id":"minecraft:netherite_ingot","localizedName":"Netherite Ingot","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.netherite_ingot"},{"id":"minecraft:netherite_leggings","localizedName":"Netherite Leggings","maxDamage":555,"maxStackSize":1,"unlocalizedName":"item.minecraft.netherite_leggings"},{"id":"minecraft:netherite_pickaxe","localizedName":"Netherite Pickaxe","maxDamage":2031,"maxStackSize":1,"unlocalizedName":"item.minecraft.netherite_pickaxe"},{"id":"minecraft:netherite_scrap","localizedName":"Netherite Scrap","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.netherite_scrap"},{"id":"minecraft:netherite_shovel","localizedName":"Netherite Shovel","maxDamage":2031,"maxStackSize":1,"unlocalizedName":"item.minecraft.netherite_shovel"},{"id":"minecraft:netherite_sword","localizedName":"Netherite Sword","maxDamage":2031,"maxStackSize":1,"unlocalizedName":"item.minecraft.netherite_sword"},{"id":"minecraft:netherrack","localizedName":"Netherrack","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.netherrack"},{"id":"minecraft:note_block","localizedName":"Note Block","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.note_block"},{"id":"minecraft:oak_boat","localizedName":"Oak Boat","maxDamage":0,"maxStackSize":1,"unlocalizedName":"item.minecraft.oak_boat"},{"id":"minecraft:oak_button","localizedName":"Oak Button","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.oak_button"},{"id":"minecraft:oak_chest_boat","localizedName":"Oak Boat with Chest","maxDamage":0,"maxStackSize":1,"unlocalizedName":"item.minecraft.oak_chest_boat"},{"id":"minecraft:oak_door","localizedName":"Oak Door","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.oak_door"},{"id":"minecraft:oak_fence","localizedName":"Oak Fence","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.oak_fence"},{"id":"minecraft:oak_fence_gate","localizedName":"Oak Fence Gate","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.oak_fence_gate"},{"id":"minecraft:oak_leaves","localizedName":"Oak Leaves","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.oak_leaves"},{"id":"minecraft:oak_log","localizedName":"Oak Log","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.oak_log"},{"id":"minecraft:oak_planks","localizedName":"Oak Planks","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.oak_planks"},{"id":"minecraft:oak_pressure_plate","localizedName":"Oak Pressure Plate","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.oak_pressure_plate"},{"id":"minecraft:oak_sapling","localizedName":"Oak Sapling","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.oak_sapling"},{"id":"minecraft:oak_sign","localizedName":"Oak Sign","maxDamage":0,"maxStackSize":16,"unlocalizedName":"block.minecraft.oak_sign"},{"id":"minecraft:oak_slab","localizedName":"Oak Slab","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.oak_slab"},{"id":"minecraft:oak_stairs","localizedName":"Oak Stairs","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.oak_stairs"},{"id":"minecraft:oak_trapdoor","localizedName":"Oak Trapdoor","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.oak_trapdoor"},{"id":"minecraft:oak_wood","localizedName":"Oak Wood","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.oak_wood"},{"id":"minecraft:observer","localizedName":"Observer","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.observer"},{"id":"minecraft:obsidian","localizedName":"Obsidian","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.obsidian"},{"id":"minecraft:ocelot_spawn_egg","localizedName":"Ocelot Spawn Egg","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.ocelot_spawn_egg"},{"id":"minecraft:ochre_froglight","localizedName":"Ochre Froglight","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.ochre_froglight"},{"id":"minecraft:orange_banner","localizedName":"Orange Banner","maxDamage":0,"maxStackSize":16,"unlocalizedName":"block.minecraft.orange_banner"},{"id":"minecraft:orange_bed","localizedName":"Orange Bed","maxDamage":0,"maxStackSize":1,"unlocalizedName":"block.minecraft.orange_bed"},{"id":"minecraft:orange_candle","localizedName":"Orange Candle","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.orange_candle"},{"id":"minecraft:orange_carpet","localizedName":"Orange Carpet","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.orange_carpet"},{"id":"minecraft:orange_concrete","localizedName":"Orange Concrete","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.orange_concrete"},{"id":"minecraft:orange_concrete_powder","localizedName":"Orange Concrete Powder","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.orange_concrete_powder"},{"id":"minecraft:orange_dye","localizedName":"Orange Dye","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.orange_dye"},{"id":"minecraft:orange_glazed_terracotta","localizedName":"Orange Glazed Terracotta","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.orange_glazed_terracotta"},{"id":"minecraft:orange_shulker_box","localizedName":"Orange Shulker Box","maxDamage":0,"maxStackSize":1,"unlocalizedName":"block.minecraft.orange_shulker_box"},{"id":"minecraft:orange_stained_glass","localizedName":"Orange Stained Glass","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.orange_stained_glass"},{"id":"minecraft:orange_stained_glass_pane","localizedName":"Orange Stained Glass Pane","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.orange_stained_glass_pane"},{"id":"minecraft:orange_terracotta","localizedName":"Orange Terracotta","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.orange_terracotta"},{"id":"minecraft:orange_tulip","localizedName":"Orange Tulip","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.orange_tulip"},{"id":"minecraft:orange_wool","localizedName":"Orange Wool","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.orange_wool"},{"id":"minecraft:oxeye_daisy","localizedName":"Oxeye Daisy","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.oxeye_daisy"},{"id":"minecraft:oxidized_copper","localizedName":"Oxidized Copper","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.oxidized_copper"},{"id":"minecraft:oxidized_cut_copper","localizedName":"Oxidized Cut Copper","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.oxidized_cut_copper"},{"id":"minecraft:oxidized_cut_copper_slab","localizedName":"Oxidized Cut Copper Slab","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.oxidized_cut_copper_slab"},{"id":"minecraft:oxidized_cut_copper_stairs","localizedName":"Oxidized Cut Copper Stairs","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.oxidized_cut_copper_stairs"},{"id":"minecraft:packed_ice","localizedName":"Packed Ice","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.packed_ice"},{"id":"minecraft:packed_mud","localizedName":"Packed Mud","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.packed_mud"},{"id":"minecraft:painting","localizedName":"Painting","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.painting"},{"id":"minecraft:panda_spawn_egg","localizedName":"Panda Spawn Egg","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.panda_spawn_egg"},{"id":"minecraft:paper","localizedName":"Paper","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.paper"},{"id":"minecraft:parrot_spawn_egg","localizedName":"Parrot Spawn Egg","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.parrot_spawn_egg"},{"id":"minecraft:pearlescent_froglight","localizedName":"Pearlescent Froglight","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.pearlescent_froglight"},{"id":"minecraft:peony","localizedName":"Peony","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.peony"},{"id":"minecraft:petrified_oak_slab","localizedName":"Petrified Oak Slab","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.petrified_oak_slab"},{"id":"minecraft:phantom_membrane","localizedName":"Phantom Membrane","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.phantom_membrane"},{"id":"minecraft:phantom_spawn_egg","localizedName":"Phantom Spawn Egg","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.phantom_spawn_egg"},{"id":"minecraft:pig_spawn_egg","localizedName":"Pig Spawn Egg","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.pig_spawn_egg"},{"id":"minecraft:piglin_banner_pattern","localizedName":"Banner Pattern","maxDamage":0,"maxStackSize":1,"unlocalizedName":"item.minecraft.piglin_banner_pattern"},{"id":"minecraft:piglin_brute_spawn_egg","localizedName":"Piglin Brute Spawn Egg","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.piglin_brute_spawn_egg"},{"id":"minecraft:piglin_spawn_egg","localizedName":"Piglin Spawn Egg","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.piglin_spawn_egg"},{"id":"minecraft:pillager_spawn_egg","localizedName":"Pillager Spawn Egg","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.pillager_spawn_egg"},{"id":"minecraft:pink_banner","localizedName":"Pink Banner","maxDamage":0,"maxStackSize":16,"unlocalizedName":"block.minecraft.pink_banner"},{"id":"minecraft:pink_bed","localizedName":"Pink Bed","maxDamage":0,"maxStackSize":1,"unlocalizedName":"block.minecraft.pink_bed"},{"id":"minecraft:pink_candle","localizedName":"Pink Candle","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.pink_candle"},{"id":"minecraft:pink_carpet","localizedName":"Pink Carpet","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.pink_carpet"},{"id":"minecraft:pink_concrete","localizedName":"Pink Concrete","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.pink_concrete"},{"id":"minecraft:pink_concrete_powder","localizedName":"Pink Concrete Powder","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.pink_concrete_powder"},{"id":"minecraft:pink_dye","localizedName":"Pink Dye","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.pink_dye"},{"id":"minecraft:pink_glazed_terracotta","localizedName":"Pink Glazed Terracotta","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.pink_glazed_terracotta"},{"id":"minecraft:pink_shulker_box","localizedName":"Pink Shulker Box","maxDamage":0,"maxStackSize":1,"unlocalizedName":"block.minecraft.pink_shulker_box"},{"id":"minecraft:pink_stained_glass","localizedName":"Pink Stained Glass","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.pink_stained_glass"},{"id":"minecraft:pink_stained_glass_pane","localizedName":"Pink Stained Glass Pane","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.pink_stained_glass_pane"},{"id":"minecraft:pink_terracotta","localizedName":"Pink Terracotta","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.pink_terracotta"},{"id":"minecraft:pink_tulip","localizedName":"Pink Tulip","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.pink_tulip"},{"id":"minecraft:pink_wool","localizedName":"Pink Wool","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.pink_wool"},{"id":"minecraft:piston","localizedName":"Piston","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.piston"},{"id":"minecraft:player_head","localizedName":"Player Head","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.player_head"},{"id":"minecraft:podzol","localizedName":"Podzol","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.podzol"},{"id":"minecraft:pointed_dripstone","localizedName":"Pointed Dripstone","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.pointed_dripstone"},{"id":"minecraft:poisonous_potato","localizedName":"Poisonous Potato","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.poisonous_potato"},{"id":"minecraft:polar_bear_spawn_egg","localizedName":"Polar Bear Spawn Egg","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.polar_bear_spawn_egg"},{"id":"minecraft:polished_andesite","localizedName":"Polished Andesite","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.polished_andesite"},{"id":"minecraft:polished_andesite_slab","localizedName":"Polished Andesite Slab","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.polished_andesite_slab"},{"id":"minecraft:polished_andesite_stairs","localizedName":"Polished Andesite Stairs","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.polished_andesite_stairs"},{"id":"minecraft:polished_basalt","localizedName":"Polished Basalt","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.polished_basalt"},{"id":"minecraft:polished_blackstone","localizedName":"Polished Blackstone","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.polished_blackstone"},{"id":"minecraft:polished_blackstone_brick_slab","localizedName":"Polished Blackstone Brick Slab","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.polished_blackstone_brick_slab"},{"id":"minecraft:polished_blackstone_brick_stairs","localizedName":"Polished Blackstone Brick Stairs","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.polished_blackstone_brick_stairs"},{"id":"minecraft:polished_blackstone_brick_wall","localizedName":"Polished Blackstone Brick Wall","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.polished_blackstone_brick_wall"},{"id":"minecraft:polished_blackstone_bricks","localizedName":"Polished Blackstone Bricks","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.polished_blackstone_bricks"},{"id":"minecraft:polished_blackstone_button","localizedName":"Polished Blackstone Button","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.polished_blackstone_button"},{"id":"minecraft:polished_blackstone_pressure_plate","localizedName":"Polished Blackstone Pressure Plate","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.polished_blackstone_pressure_plate"},{"id":"minecraft:polished_blackstone_slab","localizedName":"Polished Blackstone Slab","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.polished_blackstone_slab"},{"id":"minecraft:polished_blackstone_stairs","localizedName":"Polished Blackstone Stairs","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.polished_blackstone_stairs"},{"id":"minecraft:polished_blackstone_wall","localizedName":"Polished Blackstone Wall","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.polished_blackstone_wall"},{"id":"minecraft:polished_deepslate","localizedName":"Polished Deepslate","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.polished_deepslate"},{"id":"minecraft:polished_deepslate_slab","localizedName":"Polished Deepslate Slab","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.polished_deepslate_slab"},{"id":"minecraft:polished_deepslate_stairs","localizedName":"Polished Deepslate Stairs","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.polished_deepslate_stairs"},{"id":"minecraft:polished_deepslate_wall","localizedName":"Polished Deepslate Wall","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.polished_deepslate_wall"},{"id":"minecraft:polished_diorite","localizedName":"Polished Diorite","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.polished_diorite"},{"id":"minecraft:polished_diorite_slab","localizedName":"Polished Diorite Slab","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.polished_diorite_slab"},{"id":"minecraft:polished_diorite_stairs","localizedName":"Polished Diorite Stairs","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.polished_diorite_stairs"},{"id":"minecraft:polished_granite","localizedName":"Polished Granite","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.polished_granite"},{"id":"minecraft:polished_granite_slab","localizedName":"Polished Granite Slab","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.polished_granite_slab"},{"id":"minecraft:polished_granite_stairs","localizedName":"Polished Granite Stairs","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.polished_granite_stairs"},{"id":"minecraft:popped_chorus_fruit","localizedName":"Popped Chorus Fruit","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.popped_chorus_fruit"},{"id":"minecraft:poppy","localizedName":"Poppy","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.poppy"},{"id":"minecraft:porkchop","localizedName":"Raw Porkchop","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.porkchop"},{"id":"minecraft:potato","localizedName":"Potato","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.potato"},{"id":"minecraft:potion","localizedName":"Water Bottle","maxDamage":0,"maxStackSize":1,"unlocalizedName":"item.minecraft.potion.effect.water"},{"id":"minecraft:powder_snow_bucket","localizedName":"Powder Snow Bucket","maxDamage":0,"maxStackSize":1,"unlocalizedName":"item.minecraft.powder_snow_bucket"},{"id":"minecraft:powered_rail","localizedName":"Powered Rail","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.powered_rail"},{"id":"minecraft:prismarine","localizedName":"Prismarine","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.prismarine"},{"id":"minecraft:prismarine_brick_slab","localizedName":"Prismarine Brick Slab","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.prismarine_brick_slab"},{"id":"minecraft:prismarine_brick_stairs","localizedName":"Prismarine Brick Stairs","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.prismarine_brick_stairs"},{"id":"minecraft:prismarine_bricks","localizedName":"Prismarine Bricks","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.prismarine_bricks"},{"id":"minecraft:prismarine_crystals","localizedName":"Prismarine Crystals","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.prismarine_crystals"},{"id":"minecraft:prismarine_shard","localizedName":"Prismarine Shard","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.prismarine_shard"},{"id":"minecraft:prismarine_slab","localizedName":"Prismarine Slab","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.prismarine_slab"},{"id":"minecraft:prismarine_stairs","localizedName":"Prismarine Stairs","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.prismarine_stairs"},{"id":"minecraft:prismarine_wall","localizedName":"Prismarine Wall","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.prismarine_wall"},{"id":"minecraft:pufferfish","localizedName":"Pufferfish","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.pufferfish"},{"id":"minecraft:pufferfish_bucket","localizedName":"Bucket of Pufferfish","maxDamage":0,"maxStackSize":1,"unlocalizedName":"item.minecraft.pufferfish_bucket"},{"id":"minecraft:pufferfish_spawn_egg","localizedName":"Pufferfish Spawn Egg","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.pufferfish_spawn_egg"},{"id":"minecraft:pumpkin","localizedName":"Pumpkin","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.pumpkin"},{"id":"minecraft:pumpkin_pie","localizedName":"Pumpkin Pie","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.pumpkin_pie"},{"id":"minecraft:pumpkin_seeds","localizedName":"Pumpkin Seeds","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.pumpkin_seeds"},{"id":"minecraft:purple_banner","localizedName":"Purple Banner","maxDamage":0,"maxStackSize":16,"unlocalizedName":"block.minecraft.purple_banner"},{"id":"minecraft:purple_bed","localizedName":"Purple Bed","maxDamage":0,"maxStackSize":1,"unlocalizedName":"block.minecraft.purple_bed"},{"id":"minecraft:purple_candle","localizedName":"Purple Candle","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.purple_candle"},{"id":"minecraft:purple_carpet","localizedName":"Purple Carpet","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.purple_carpet"},{"id":"minecraft:purple_concrete","localizedName":"Purple Concrete","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.purple_concrete"},{"id":"minecraft:purple_concrete_powder","localizedName":"Purple Concrete Powder","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.purple_concrete_powder"},{"id":"minecraft:purple_dye","localizedName":"Purple Dye","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.purple_dye"},{"id":"minecraft:purple_glazed_terracotta","localizedName":"Purple Glazed Terracotta","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.purple_glazed_terracotta"},{"id":"minecraft:purple_shulker_box","localizedName":"Purple Shulker Box","maxDamage":0,"maxStackSize":1,"unlocalizedName":"block.minecraft.purple_shulker_box"},{"id":"minecraft:purple_stained_glass","localizedName":"Purple Stained Glass","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.purple_stained_glass"},{"id":"minecraft:purple_stained_glass_pane","localizedName":"Purple Stained Glass Pane","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.purple_stained_glass_pane"},{"id":"minecraft:purple_terracotta","localizedName":"Purple Terracotta","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.purple_terracotta"},{"id":"minecraft:purple_wool","localizedName":"Purple Wool","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.purple_wool"},{"id":"minecraft:purpur_block","localizedName":"Purpur Block","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.purpur_block"},{"id":"minecraft:purpur_pillar","localizedName":"Purpur Pillar","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.purpur_pillar"},{"id":"minecraft:purpur_slab","localizedName":"Purpur Slab","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.purpur_slab"},{"id":"minecraft:purpur_stairs","localizedName":"Purpur Stairs","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.purpur_stairs"},{"id":"minecraft:quartz","localizedName":"Nether Quartz","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.quartz"},{"id":"minecraft:quartz_block","localizedName":"Block of Quartz","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.quartz_block"},{"id":"minecraft:quartz_bricks","localizedName":"Quartz Bricks","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.quartz_bricks"},{"id":"minecraft:quartz_pillar","localizedName":"Quartz Pillar","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.quartz_pillar"},{"id":"minecraft:quartz_slab","localizedName":"Quartz Slab","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.quartz_slab"},{"id":"minecraft:quartz_stairs","localizedName":"Quartz Stairs","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.quartz_stairs"},{"id":"minecraft:rabbit","localizedName":"Raw Rabbit","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.rabbit"},{"id":"minecraft:rabbit_foot","localizedName":"Rabbit\u0027s Foot","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.rabbit_foot"},{"id":"minecraft:rabbit_hide","localizedName":"Rabbit Hide","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.rabbit_hide"},{"id":"minecraft:rabbit_spawn_egg","localizedName":"Rabbit Spawn Egg","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.rabbit_spawn_egg"},{"id":"minecraft:rabbit_stew","localizedName":"Rabbit Stew","maxDamage":0,"maxStackSize":1,"unlocalizedName":"item.minecraft.rabbit_stew"},{"id":"minecraft:rail","localizedName":"Rail","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.rail"},{"id":"minecraft:ravager_spawn_egg","localizedName":"Ravager Spawn Egg","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.ravager_spawn_egg"},{"id":"minecraft:raw_copper","localizedName":"Raw Copper","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.raw_copper"},{"id":"minecraft:raw_copper_block","localizedName":"Block of Raw Copper","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.raw_copper_block"},{"id":"minecraft:raw_gold","localizedName":"Raw Gold","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.raw_gold"},{"id":"minecraft:raw_gold_block","localizedName":"Block of Raw Gold","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.raw_gold_block"},{"id":"minecraft:raw_iron","localizedName":"Raw Iron","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.raw_iron"},{"id":"minecraft:raw_iron_block","localizedName":"Block of Raw Iron","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.raw_iron_block"},{"id":"minecraft:recovery_compass","localizedName":"Recovery Compass","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.recovery_compass"},{"id":"minecraft:red_banner","localizedName":"Red Banner","maxDamage":0,"maxStackSize":16,"unlocalizedName":"block.minecraft.red_banner"},{"id":"minecraft:red_bed","localizedName":"Red Bed","maxDamage":0,"maxStackSize":1,"unlocalizedName":"block.minecraft.red_bed"},{"id":"minecraft:red_candle","localizedName":"Red Candle","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.red_candle"},{"id":"minecraft:red_carpet","localizedName":"Red Carpet","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.red_carpet"},{"id":"minecraft:red_concrete","localizedName":"Red Concrete","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.red_concrete"},{"id":"minecraft:red_concrete_powder","localizedName":"Red Concrete Powder","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.red_concrete_powder"},{"id":"minecraft:red_dye","localizedName":"Red Dye","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.red_dye"},{"id":"minecraft:red_glazed_terracotta","localizedName":"Red Glazed Terracotta","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.red_glazed_terracotta"},{"id":"minecraft:red_mushroom","localizedName":"Red Mushroom","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.red_mushroom"},{"id":"minecraft:red_mushroom_block","localizedName":"Red Mushroom Block","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.red_mushroom_block"},{"id":"minecraft:red_nether_brick_slab","localizedName":"Red Nether Brick Slab","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.red_nether_brick_slab"},{"id":"minecraft:red_nether_brick_stairs","localizedName":"Red Nether Brick Stairs","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.red_nether_brick_stairs"},{"id":"minecraft:red_nether_brick_wall","localizedName":"Red Nether Brick Wall","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.red_nether_brick_wall"},{"id":"minecraft:red_nether_bricks","localizedName":"Red Nether Bricks","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.red_nether_bricks"},{"id":"minecraft:red_sand","localizedName":"Red Sand","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.red_sand"},{"id":"minecraft:red_sandstone","localizedName":"Red Sandstone","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.red_sandstone"},{"id":"minecraft:red_sandstone_slab","localizedName":"Red Sandstone Slab","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.red_sandstone_slab"},{"id":"minecraft:red_sandstone_stairs","localizedName":"Red Sandstone Stairs","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.red_sandstone_stairs"},{"id":"minecraft:red_sandstone_wall","localizedName":"Red Sandstone Wall","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.red_sandstone_wall"},{"id":"minecraft:red_shulker_box","localizedName":"Red Shulker Box","maxDamage":0,"maxStackSize":1,"unlocalizedName":"block.minecraft.red_shulker_box"},{"id":"minecraft:red_stained_glass","localizedName":"Red Stained Glass","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.red_stained_glass"},{"id":"minecraft:red_stained_glass_pane","localizedName":"Red Stained Glass Pane","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.red_stained_glass_pane"},{"id":"minecraft:red_terracotta","localizedName":"Red Terracotta","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.red_terracotta"},{"id":"minecraft:red_tulip","localizedName":"Red Tulip","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.red_tulip"},{"id":"minecraft:red_wool","localizedName":"Red Wool","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.red_wool"},{"id":"minecraft:redstone","localizedName":"Redstone Dust","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.redstone"},{"id":"minecraft:redstone_block","localizedName":"Block of Redstone","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.redstone_block"},{"id":"minecraft:redstone_lamp","localizedName":"Redstone Lamp","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.redstone_lamp"},{"id":"minecraft:redstone_ore","localizedName":"Redstone Ore","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.redstone_ore"},{"id":"minecraft:redstone_torch","localizedName":"Redstone Torch","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.redstone_torch"},{"id":"minecraft:reinforced_deepslate","localizedName":"Reinforced Deepslate","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.reinforced_deepslate"},{"id":"minecraft:repeater","localizedName":"Redstone Repeater","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.repeater"},{"id":"minecraft:repeating_command_block","localizedName":"Repeating Command Block","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.repeating_command_block"},{"id":"minecraft:respawn_anchor","localizedName":"Respawn Anchor","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.respawn_anchor"},{"id":"minecraft:rooted_dirt","localizedName":"Rooted Dirt","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.rooted_dirt"},{"id":"minecraft:rose_bush","localizedName":"Rose Bush","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.rose_bush"},{"id":"minecraft:rotten_flesh","localizedName":"Rotten Flesh","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.rotten_flesh"},{"id":"minecraft:saddle","localizedName":"Saddle","maxDamage":0,"maxStackSize":1,"unlocalizedName":"item.minecraft.saddle"},{"id":"minecraft:salmon","localizedName":"Raw Salmon","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.salmon"},{"id":"minecraft:salmon_bucket","localizedName":"Bucket of Salmon","maxDamage":0,"maxStackSize":1,"unlocalizedName":"item.minecraft.salmon_bucket"},{"id":"minecraft:salmon_spawn_egg","localizedName":"Salmon Spawn Egg","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.salmon_spawn_egg"},{"id":"minecraft:sand","localizedName":"Sand","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.sand"},{"id":"minecraft:sandstone","localizedName":"Sandstone","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.sandstone"},{"id":"minecraft:sandstone_slab","localizedName":"Sandstone Slab","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.sandstone_slab"},{"id":"minecraft:sandstone_stairs","localizedName":"Sandstone Stairs","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.sandstone_stairs"},{"id":"minecraft:sandstone_wall","localizedName":"Sandstone Wall","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.sandstone_wall"},{"id":"minecraft:scaffolding","localizedName":"Scaffolding","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.scaffolding"},{"id":"minecraft:sculk","localizedName":"Sculk","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.sculk"},{"id":"minecraft:sculk_catalyst","localizedName":"Sculk Catalyst","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.sculk_catalyst"},{"id":"minecraft:sculk_sensor","localizedName":"Sculk Sensor","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.sculk_sensor"},{"id":"minecraft:sculk_shrieker","localizedName":"Sculk Shrieker","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.sculk_shrieker"},{"id":"minecraft:sculk_vein","localizedName":"Sculk Vein","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.sculk_vein"},{"id":"minecraft:scute","localizedName":"Scute","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.scute"},{"id":"minecraft:sea_lantern","localizedName":"Sea Lantern","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.sea_lantern"},{"id":"minecraft:sea_pickle","localizedName":"Sea Pickle","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.sea_pickle"},{"id":"minecraft:seagrass","localizedName":"Seagrass","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.seagrass"},{"id":"minecraft:shears","localizedName":"Shears","maxDamage":238,"maxStackSize":1,"unlocalizedName":"item.minecraft.shears"},{"id":"minecraft:sheep_spawn_egg","localizedName":"Sheep Spawn Egg","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.sheep_spawn_egg"},{"id":"minecraft:shield","localizedName":"Shield","maxDamage":336,"maxStackSize":1,"unlocalizedName":"item.minecraft.shield"},{"id":"minecraft:shroomlight","localizedName":"Shroomlight","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.shroomlight"},{"id":"minecraft:shulker_box","localizedName":"Shulker Box","maxDamage":0,"maxStackSize":1,"unlocalizedName":"block.minecraft.shulker_box"},{"id":"minecraft:shulker_shell","localizedName":"Shulker Shell","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.shulker_shell"},{"id":"minecraft:shulker_spawn_egg","localizedName":"Shulker Spawn Egg","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.shulker_spawn_egg"},{"id":"minecraft:silverfish_spawn_egg","localizedName":"Silverfish Spawn Egg","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.silverfish_spawn_egg"},{"id":"minecraft:skeleton_horse_spawn_egg","localizedName":"Skeleton Horse Spawn Egg","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.skeleton_horse_spawn_egg"},{"id":"minecraft:skeleton_skull","localizedName":"Skeleton Skull","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.skeleton_skull"},{"id":"minecraft:skeleton_spawn_egg","localizedName":"Skeleton Spawn Egg","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.skeleton_spawn_egg"},{"id":"minecraft:skull_banner_pattern","localizedName":"Banner Pattern","maxDamage":0,"maxStackSize":1,"unlocalizedName":"item.minecraft.skull_banner_pattern"},{"id":"minecraft:slime_ball","localizedName":"Slimeball","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.slime_ball"},{"id":"minecraft:slime_block","localizedName":"Slime Block","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.slime_block"},{"id":"minecraft:slime_spawn_egg","localizedName":"Slime Spawn Egg","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.slime_spawn_egg"},{"id":"minecraft:small_amethyst_bud","localizedName":"Small Amethyst Bud","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.small_amethyst_bud"},{"id":"minecraft:small_dripleaf","localizedName":"Small Dripleaf","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.small_dripleaf"},{"id":"minecraft:smithing_table","localizedName":"Smithing Table","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.smithing_table"},{"id":"minecraft:smoker","localizedName":"Smoker","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.smoker"},{"id":"minecraft:smooth_basalt","localizedName":"Smooth Basalt","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.smooth_basalt"},{"id":"minecraft:smooth_quartz","localizedName":"Smooth Quartz Block","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.smooth_quartz"},{"id":"minecraft:smooth_quartz_slab","localizedName":"Smooth Quartz Slab","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.smooth_quartz_slab"},{"id":"minecraft:smooth_quartz_stairs","localizedName":"Smooth Quartz Stairs","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.smooth_quartz_stairs"},{"id":"minecraft:smooth_red_sandstone","localizedName":"Smooth Red Sandstone","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.smooth_red_sandstone"},{"id":"minecraft:smooth_red_sandstone_slab","localizedName":"Smooth Red Sandstone Slab","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.smooth_red_sandstone_slab"},{"id":"minecraft:smooth_red_sandstone_stairs","localizedName":"Smooth Red Sandstone Stairs","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.smooth_red_sandstone_stairs"},{"id":"minecraft:smooth_sandstone","localizedName":"Smooth Sandstone","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.smooth_sandstone"},{"id":"minecraft:smooth_sandstone_slab","localizedName":"Smooth Sandstone Slab","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.smooth_sandstone_slab"},{"id":"minecraft:smooth_sandstone_stairs","localizedName":"Smooth Sandstone Stairs","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.smooth_sandstone_stairs"},{"id":"minecraft:smooth_stone","localizedName":"Smooth Stone","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.smooth_stone"},{"id":"minecraft:smooth_stone_slab","localizedName":"Smooth Stone Slab","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.smooth_stone_slab"},{"id":"minecraft:snow","localizedName":"Snow","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.snow"},{"id":"minecraft:snow_block","localizedName":"Snow Block","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.snow_block"},{"id":"minecraft:snowball","localizedName":"Snowball","maxDamage":0,"maxStackSize":16,"unlocalizedName":"item.minecraft.snowball"},{"id":"minecraft:soul_campfire","localizedName":"Soul Campfire","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.soul_campfire"},{"id":"minecraft:soul_lantern","localizedName":"Soul Lantern","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.soul_lantern"},{"id":"minecraft:soul_sand","localizedName":"Soul Sand","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.soul_sand"},{"id":"minecraft:soul_soil","localizedName":"Soul Soil","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.soul_soil"},{"id":"minecraft:soul_torch","localizedName":"Soul Torch","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.soul_torch"},{"id":"minecraft:spawner","localizedName":"Spawner","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.spawner"},{"id":"minecraft:spectral_arrow","localizedName":"Spectral Arrow","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.spectral_arrow"},{"id":"minecraft:spider_eye","localizedName":"Spider Eye","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.spider_eye"},{"id":"minecraft:spider_spawn_egg","localizedName":"Spider Spawn Egg","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.spider_spawn_egg"},{"id":"minecraft:splash_potion","localizedName":"Splash Water Bottle","maxDamage":0,"maxStackSize":1,"unlocalizedName":"item.minecraft.splash_potion.effect.water"},{"id":"minecraft:sponge","localizedName":"Sponge","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.sponge"},{"id":"minecraft:spore_blossom","localizedName":"Spore Blossom","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.spore_blossom"},{"id":"minecraft:spruce_boat","localizedName":"Spruce Boat","maxDamage":0,"maxStackSize":1,"unlocalizedName":"item.minecraft.spruce_boat"},{"id":"minecraft:spruce_button","localizedName":"Spruce Button","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.spruce_button"},{"id":"minecraft:spruce_chest_boat","localizedName":"Spruce Boat with Chest","maxDamage":0,"maxStackSize":1,"unlocalizedName":"item.minecraft.spruce_chest_boat"},{"id":"minecraft:spruce_door","localizedName":"Spruce Door","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.spruce_door"},{"id":"minecraft:spruce_fence","localizedName":"Spruce Fence","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.spruce_fence"},{"id":"minecraft:spruce_fence_gate","localizedName":"Spruce Fence Gate","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.spruce_fence_gate"},{"id":"minecraft:spruce_leaves","localizedName":"Spruce Leaves","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.spruce_leaves"},{"id":"minecraft:spruce_log","localizedName":"Spruce Log","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.spruce_log"},{"id":"minecraft:spruce_planks","localizedName":"Spruce Planks","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.spruce_planks"},{"id":"minecraft:spruce_pressure_plate","localizedName":"Spruce Pressure Plate","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.spruce_pressure_plate"},{"id":"minecraft:spruce_sapling","localizedName":"Spruce Sapling","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.spruce_sapling"},{"id":"minecraft:spruce_sign","localizedName":"Spruce Sign","maxDamage":0,"maxStackSize":16,"unlocalizedName":"block.minecraft.spruce_sign"},{"id":"minecraft:spruce_slab","localizedName":"Spruce Slab","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.spruce_slab"},{"id":"minecraft:spruce_stairs","localizedName":"Spruce Stairs","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.spruce_stairs"},{"id":"minecraft:spruce_trapdoor","localizedName":"Spruce Trapdoor","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.spruce_trapdoor"},{"id":"minecraft:spruce_wood","localizedName":"Spruce Wood","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.spruce_wood"},{"id":"minecraft:spyglass","localizedName":"Spyglass","maxDamage":0,"maxStackSize":1,"unlocalizedName":"item.minecraft.spyglass"},{"id":"minecraft:squid_spawn_egg","localizedName":"Squid Spawn Egg","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.squid_spawn_egg"},{"id":"minecraft:stick","localizedName":"Stick","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.stick"},{"id":"minecraft:sticky_piston","localizedName":"Sticky Piston","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.sticky_piston"},{"id":"minecraft:stone","localizedName":"Stone","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.stone"},{"id":"minecraft:stone_axe","localizedName":"Stone Axe","maxDamage":131,"maxStackSize":1,"unlocalizedName":"item.minecraft.stone_axe"},{"id":"minecraft:stone_brick_slab","localizedName":"Stone Brick Slab","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.stone_brick_slab"},{"id":"minecraft:stone_brick_stairs","localizedName":"Stone Brick Stairs","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.stone_brick_stairs"},{"id":"minecraft:stone_brick_wall","localizedName":"Stone Brick Wall","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.stone_brick_wall"},{"id":"minecraft:stone_bricks","localizedName":"Stone Bricks","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.stone_bricks"},{"id":"minecraft:stone_button","localizedName":"Stone Button","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.stone_button"},{"id":"minecraft:stone_hoe","localizedName":"Stone Hoe","maxDamage":131,"maxStackSize":1,"unlocalizedName":"item.minecraft.stone_hoe"},{"id":"minecraft:stone_pickaxe","localizedName":"Stone Pickaxe","maxDamage":131,"maxStackSize":1,"unlocalizedName":"item.minecraft.stone_pickaxe"},{"id":"minecraft:stone_pressure_plate","localizedName":"Stone Pressure Plate","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.stone_pressure_plate"},{"id":"minecraft:stone_shovel","localizedName":"Stone Shovel","maxDamage":131,"maxStackSize":1,"unlocalizedName":"item.minecraft.stone_shovel"},{"id":"minecraft:stone_slab","localizedName":"Stone Slab","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.stone_slab"},{"id":"minecraft:stone_stairs","localizedName":"Stone Stairs","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.stone_stairs"},{"id":"minecraft:stone_sword","localizedName":"Stone Sword","maxDamage":131,"maxStackSize":1,"unlocalizedName":"item.minecraft.stone_sword"},{"id":"minecraft:stonecutter","localizedName":"Stonecutter","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.stonecutter"},{"id":"minecraft:stray_spawn_egg","localizedName":"Stray Spawn Egg","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.stray_spawn_egg"},{"id":"minecraft:strider_spawn_egg","localizedName":"Strider Spawn Egg","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.strider_spawn_egg"},{"id":"minecraft:string","localizedName":"String","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.string"},{"id":"minecraft:stripped_acacia_log","localizedName":"Stripped Acacia Log","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.stripped_acacia_log"},{"id":"minecraft:stripped_acacia_wood","localizedName":"Stripped Acacia Wood","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.stripped_acacia_wood"},{"id":"minecraft:stripped_birch_log","localizedName":"Stripped Birch Log","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.stripped_birch_log"},{"id":"minecraft:stripped_birch_wood","localizedName":"Stripped Birch Wood","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.stripped_birch_wood"},{"id":"minecraft:stripped_crimson_hyphae","localizedName":"Stripped Crimson Hyphae","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.stripped_crimson_hyphae"},{"id":"minecraft:stripped_crimson_stem","localizedName":"Stripped Crimson Stem","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.stripped_crimson_stem"},{"id":"minecraft:stripped_dark_oak_log","localizedName":"Stripped Dark Oak Log","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.stripped_dark_oak_log"},{"id":"minecraft:stripped_dark_oak_wood","localizedName":"Stripped Dark Oak Wood","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.stripped_dark_oak_wood"},{"id":"minecraft:stripped_jungle_log","localizedName":"Stripped Jungle Log","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.stripped_jungle_log"},{"id":"minecraft:stripped_jungle_wood","localizedName":"Stripped Jungle Wood","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.stripped_jungle_wood"},{"id":"minecraft:stripped_mangrove_log","localizedName":"Stripped Mangrove Log","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.stripped_mangrove_log"},{"id":"minecraft:stripped_mangrove_wood","localizedName":"Stripped Mangrove Wood","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.stripped_mangrove_wood"},{"id":"minecraft:stripped_oak_log","localizedName":"Stripped Oak Log","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.stripped_oak_log"},{"id":"minecraft:stripped_oak_wood","localizedName":"Stripped Oak Wood","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.stripped_oak_wood"},{"id":"minecraft:stripped_spruce_log","localizedName":"Stripped Spruce Log","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.stripped_spruce_log"},{"id":"minecraft:stripped_spruce_wood","localizedName":"Stripped Spruce Wood","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.stripped_spruce_wood"},{"id":"minecraft:stripped_warped_hyphae","localizedName":"Stripped Warped Hyphae","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.stripped_warped_hyphae"},{"id":"minecraft:stripped_warped_stem","localizedName":"Stripped Warped Stem","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.stripped_warped_stem"},{"id":"minecraft:structure_block","localizedName":"Structure Block","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.structure_block"},{"id":"minecraft:structure_void","localizedName":"Structure Void","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.structure_void"},{"id":"minecraft:sugar","localizedName":"Sugar","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.sugar"},{"id":"minecraft:sugar_cane","localizedName":"Sugar Cane","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.sugar_cane"},{"id":"minecraft:sunflower","localizedName":"Sunflower","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.sunflower"},{"id":"minecraft:suspicious_stew","localizedName":"Suspicious Stew","maxDamage":0,"maxStackSize":1,"unlocalizedName":"item.minecraft.suspicious_stew"},{"id":"minecraft:sweet_berries","localizedName":"Sweet Berries","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.sweet_berries"},{"id":"minecraft:tadpole_bucket","localizedName":"Bucket of Tadpole","maxDamage":0,"maxStackSize":1,"unlocalizedName":"item.minecraft.tadpole_bucket"},{"id":"minecraft:tadpole_spawn_egg","localizedName":"Tadpole Spawn Egg","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.tadpole_spawn_egg"},{"id":"minecraft:tall_grass","localizedName":"Tall Grass","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.tall_grass"},{"id":"minecraft:target","localizedName":"Target","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.target"},{"id":"minecraft:terracotta","localizedName":"Terracotta","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.terracotta"},{"id":"minecraft:tinted_glass","localizedName":"Tinted Glass","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.tinted_glass"},{"id":"minecraft:tipped_arrow","localizedName":"Arrow of Poison","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.tipped_arrow.effect.poison"},{"id":"minecraft:tnt","localizedName":"TNT","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.tnt"},{"id":"minecraft:tnt_minecart","localizedName":"Minecart with TNT","maxDamage":0,"maxStackSize":1,"unlocalizedName":"item.minecraft.tnt_minecart"},{"id":"minecraft:torch","localizedName":"Torch","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.torch"},{"id":"minecraft:totem_of_undying","localizedName":"Totem of Undying","maxDamage":0,"maxStackSize":1,"unlocalizedName":"item.minecraft.totem_of_undying"},{"id":"minecraft:trader_llama_spawn_egg","localizedName":"Trader Llama Spawn Egg","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.trader_llama_spawn_egg"},{"id":"minecraft:trapped_chest","localizedName":"Trapped Chest","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.trapped_chest"},{"id":"minecraft:trident","localizedName":"Trident","maxDamage":250,"maxStackSize":1,"unlocalizedName":"item.minecraft.trident"},{"id":"minecraft:tripwire_hook","localizedName":"Tripwire Hook","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.tripwire_hook"},{"id":"minecraft:tropical_fish","localizedName":"Tropical Fish","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.tropical_fish"},{"id":"minecraft:tropical_fish_bucket","localizedName":"Bucket of Tropical Fish","maxDamage":0,"maxStackSize":1,"unlocalizedName":"item.minecraft.tropical_fish_bucket"},{"id":"minecraft:tropical_fish_spawn_egg","localizedName":"Tropical Fish Spawn Egg","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.tropical_fish_spawn_egg"},{"id":"minecraft:tube_coral","localizedName":"Tube Coral","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.tube_coral"},{"id":"minecraft:tube_coral_block","localizedName":"Tube Coral Block","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.tube_coral_block"},{"id":"minecraft:tube_coral_fan","localizedName":"Tube Coral Fan","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.tube_coral_fan"},{"id":"minecraft:tuff","localizedName":"Tuff","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.tuff"},{"id":"minecraft:turtle_egg","localizedName":"Turtle Egg","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.turtle_egg"},{"id":"minecraft:turtle_helmet","localizedName":"Turtle Shell","maxDamage":275,"maxStackSize":1,"unlocalizedName":"item.minecraft.turtle_helmet"},{"id":"minecraft:turtle_spawn_egg","localizedName":"Turtle Spawn Egg","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.turtle_spawn_egg"},{"id":"minecraft:twisting_vines","localizedName":"Twisting Vines","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.twisting_vines"},{"id":"minecraft:verdant_froglight","localizedName":"Verdant Froglight","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.verdant_froglight"},{"id":"minecraft:vex_spawn_egg","localizedName":"Vex Spawn Egg","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.vex_spawn_egg"},{"id":"minecraft:villager_spawn_egg","localizedName":"Villager Spawn Egg","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.villager_spawn_egg"},{"id":"minecraft:vindicator_spawn_egg","localizedName":"Vindicator Spawn Egg","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.vindicator_spawn_egg"},{"id":"minecraft:vine","localizedName":"Vines","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.vine"},{"id":"minecraft:wandering_trader_spawn_egg","localizedName":"Wandering Trader Spawn Egg","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.wandering_trader_spawn_egg"},{"id":"minecraft:warden_spawn_egg","localizedName":"Warden Spawn Egg","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.warden_spawn_egg"},{"id":"minecraft:warped_button","localizedName":"Warped Button","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.warped_button"},{"id":"minecraft:warped_door","localizedName":"Warped Door","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.warped_door"},{"id":"minecraft:warped_fence","localizedName":"Warped Fence","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.warped_fence"},{"id":"minecraft:warped_fence_gate","localizedName":"Warped Fence Gate","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.warped_fence_gate"},{"id":"minecraft:warped_fungus","localizedName":"Warped Fungus","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.warped_fungus"},{"id":"minecraft:warped_fungus_on_a_stick","localizedName":"Warped Fungus on a Stick","maxDamage":100,"maxStackSize":1,"unlocalizedName":"item.minecraft.warped_fungus_on_a_stick"},{"id":"minecraft:warped_hyphae","localizedName":"Warped Hyphae","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.warped_hyphae"},{"id":"minecraft:warped_nylium","localizedName":"Warped Nylium","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.warped_nylium"},{"id":"minecraft:warped_planks","localizedName":"Warped Planks","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.warped_planks"},{"id":"minecraft:warped_pressure_plate","localizedName":"Warped Pressure Plate","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.warped_pressure_plate"},{"id":"minecraft:warped_roots","localizedName":"Warped Roots","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.warped_roots"},{"id":"minecraft:warped_sign","localizedName":"Warped Sign","maxDamage":0,"maxStackSize":16,"unlocalizedName":"block.minecraft.warped_sign"},{"id":"minecraft:warped_slab","localizedName":"Warped Slab","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.warped_slab"},{"id":"minecraft:warped_stairs","localizedName":"Warped Stairs","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.warped_stairs"},{"id":"minecraft:warped_stem","localizedName":"Warped Stem","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.warped_stem"},{"id":"minecraft:warped_trapdoor","localizedName":"Warped Trapdoor","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.warped_trapdoor"},{"id":"minecraft:warped_wart_block","localizedName":"Warped Wart Block","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.warped_wart_block"},{"id":"minecraft:water_bucket","localizedName":"Water Bucket","maxDamage":0,"maxStackSize":1,"unlocalizedName":"item.minecraft.water_bucket"},{"id":"minecraft:waxed_copper_block","localizedName":"Waxed Block of Copper","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.waxed_copper_block"},{"id":"minecraft:waxed_cut_copper","localizedName":"Waxed Cut Copper","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.waxed_cut_copper"},{"id":"minecraft:waxed_cut_copper_slab","localizedName":"Waxed Cut Copper Slab","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.waxed_cut_copper_slab"},{"id":"minecraft:waxed_cut_copper_stairs","localizedName":"Waxed Cut Copper Stairs","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.waxed_cut_copper_stairs"},{"id":"minecraft:waxed_exposed_copper","localizedName":"Waxed Exposed Copper","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.waxed_exposed_copper"},{"id":"minecraft:waxed_exposed_cut_copper","localizedName":"Waxed Exposed Cut Copper","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.waxed_exposed_cut_copper"},{"id":"minecraft:waxed_exposed_cut_copper_slab","localizedName":"Waxed Exposed Cut Copper Slab","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.waxed_exposed_cut_copper_slab"},{"id":"minecraft:waxed_exposed_cut_copper_stairs","localizedName":"Waxed Exposed Cut Copper Stairs","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.waxed_exposed_cut_copper_stairs"},{"id":"minecraft:waxed_oxidized_copper","localizedName":"Waxed Oxidized Copper","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.waxed_oxidized_copper"},{"id":"minecraft:waxed_oxidized_cut_copper","localizedName":"Waxed Oxidized Cut Copper","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.waxed_oxidized_cut_copper"},{"id":"minecraft:waxed_oxidized_cut_copper_slab","localizedName":"Waxed Oxidized Cut Copper Slab","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.waxed_oxidized_cut_copper_slab"},{"id":"minecraft:waxed_oxidized_cut_copper_stairs","localizedName":"Waxed Oxidized Cut Copper Stairs","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.waxed_oxidized_cut_copper_stairs"},{"id":"minecraft:waxed_weathered_copper","localizedName":"Waxed Weathered Copper","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.waxed_weathered_copper"},{"id":"minecraft:waxed_weathered_cut_copper","localizedName":"Waxed Weathered Cut Copper","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.waxed_weathered_cut_copper"},{"id":"minecraft:waxed_weathered_cut_copper_slab","localizedName":"Waxed Weathered Cut Copper Slab","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.waxed_weathered_cut_copper_slab"},{"id":"minecraft:waxed_weathered_cut_copper_stairs","localizedName":"Waxed Weathered Cut Copper Stairs","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.waxed_weathered_cut_copper_stairs"},{"id":"minecraft:weathered_copper","localizedName":"Weathered Copper","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.weathered_copper"},{"id":"minecraft:weathered_cut_copper","localizedName":"Weathered Cut Copper","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.weathered_cut_copper"},{"id":"minecraft:weathered_cut_copper_slab","localizedName":"Weathered Cut Copper Slab","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.weathered_cut_copper_slab"},{"id":"minecraft:weathered_cut_copper_stairs","localizedName":"Weathered Cut Copper Stairs","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.weathered_cut_copper_stairs"},{"id":"minecraft:weeping_vines","localizedName":"Weeping Vines","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.weeping_vines"},{"id":"minecraft:wet_sponge","localizedName":"Wet Sponge","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.wet_sponge"},{"id":"minecraft:wheat","localizedName":"Wheat","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.wheat"},{"id":"minecraft:wheat_seeds","localizedName":"Wheat Seeds","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.wheat_seeds"},{"id":"minecraft:white_banner","localizedName":"White Banner","maxDamage":0,"maxStackSize":16,"unlocalizedName":"block.minecraft.white_banner"},{"id":"minecraft:white_bed","localizedName":"White Bed","maxDamage":0,"maxStackSize":1,"unlocalizedName":"block.minecraft.white_bed"},{"id":"minecraft:white_candle","localizedName":"White Candle","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.white_candle"},{"id":"minecraft:white_carpet","localizedName":"White Carpet","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.white_carpet"},{"id":"minecraft:white_concrete","localizedName":"White Concrete","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.white_concrete"},{"id":"minecraft:white_concrete_powder","localizedName":"White Concrete Powder","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.white_concrete_powder"},{"id":"minecraft:white_dye","localizedName":"White Dye","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.white_dye"},{"id":"minecraft:white_glazed_terracotta","localizedName":"White Glazed Terracotta","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.white_glazed_terracotta"},{"id":"minecraft:white_shulker_box","localizedName":"White Shulker Box","maxDamage":0,"maxStackSize":1,"unlocalizedName":"block.minecraft.white_shulker_box"},{"id":"minecraft:white_stained_glass","localizedName":"White Stained Glass","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.white_stained_glass"},{"id":"minecraft:white_stained_glass_pane","localizedName":"White Stained Glass Pane","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.white_stained_glass_pane"},{"id":"minecraft:white_terracotta","localizedName":"White Terracotta","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.white_terracotta"},{"id":"minecraft:white_tulip","localizedName":"White Tulip","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.white_tulip"},{"id":"minecraft:white_wool","localizedName":"White Wool","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.white_wool"},{"id":"minecraft:witch_spawn_egg","localizedName":"Witch Spawn Egg","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.witch_spawn_egg"},{"id":"minecraft:wither_rose","localizedName":"Wither Rose","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.wither_rose"},{"id":"minecraft:wither_skeleton_skull","localizedName":"Wither Skeleton Skull","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.wither_skeleton_skull"},{"id":"minecraft:wither_skeleton_spawn_egg","localizedName":"Wither Skeleton Spawn Egg","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.wither_skeleton_spawn_egg"},{"id":"minecraft:wolf_spawn_egg","localizedName":"Wolf Spawn Egg","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.wolf_spawn_egg"},{"id":"minecraft:wooden_axe","localizedName":"Wooden Axe","maxDamage":59,"maxStackSize":1,"unlocalizedName":"item.minecraft.wooden_axe"},{"id":"minecraft:wooden_hoe","localizedName":"Wooden Hoe","maxDamage":59,"maxStackSize":1,"unlocalizedName":"item.minecraft.wooden_hoe"},{"id":"minecraft:wooden_pickaxe","localizedName":"Wooden Pickaxe","maxDamage":59,"maxStackSize":1,"unlocalizedName":"item.minecraft.wooden_pickaxe"},{"id":"minecraft:wooden_shovel","localizedName":"Wooden Shovel","maxDamage":59,"maxStackSize":1,"unlocalizedName":"item.minecraft.wooden_shovel"},{"id":"minecraft:wooden_sword","localizedName":"Wooden Sword","maxDamage":59,"maxStackSize":1,"unlocalizedName":"item.minecraft.wooden_sword"},{"id":"minecraft:writable_book","localizedName":"Book and Quill","maxDamage":0,"maxStackSize":1,"unlocalizedName":"item.minecraft.writable_book"},{"id":"minecraft:written_book","localizedName":"Written Book","maxDamage":0,"maxStackSize":16,"unlocalizedName":"item.minecraft.written_book"},{"id":"minecraft:yellow_banner","localizedName":"Yellow Banner","maxDamage":0,"maxStackSize":16,"unlocalizedName":"block.minecraft.yellow_banner"},{"id":"minecraft:yellow_bed","localizedName":"Yellow Bed","maxDamage":0,"maxStackSize":1,"unlocalizedName":"block.minecraft.yellow_bed"},{"id":"minecraft:yellow_candle","localizedName":"Yellow Candle","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.yellow_candle"},{"id":"minecraft:yellow_carpet","localizedName":"Yellow Carpet","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.yellow_carpet"},{"id":"minecraft:yellow_concrete","localizedName":"Yellow Concrete","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.yellow_concrete"},{"id":"minecraft:yellow_concrete_powder","localizedName":"Yellow Concrete Powder","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.yellow_concrete_powder"},{"id":"minecraft:yellow_dye","localizedName":"Yellow Dye","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.yellow_dye"},{"id":"minecraft:yellow_glazed_terracotta","localizedName":"Yellow Glazed Terracotta","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.yellow_glazed_terracotta"},{"id":"minecraft:yellow_shulker_box","localizedName":"Yellow Shulker Box","maxDamage":0,"maxStackSize":1,"unlocalizedName":"block.minecraft.yellow_shulker_box"},{"id":"minecraft:yellow_stained_glass","localizedName":"Yellow Stained Glass","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.yellow_stained_glass"},{"id":"minecraft:yellow_stained_glass_pane","localizedName":"Yellow Stained Glass Pane","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.yellow_stained_glass_pane"},{"id":"minecraft:yellow_terracotta","localizedName":"Yellow Terracotta","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.yellow_terracotta"},{"id":"minecraft:yellow_wool","localizedName":"Yellow Wool","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.yellow_wool"},{"id":"minecraft:zoglin_spawn_egg","localizedName":"Zoglin Spawn Egg","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.zoglin_spawn_egg"},{"id":"minecraft:zombie_head","localizedName":"Zombie Head","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.zombie_head"},{"id":"minecraft:zombie_horse_spawn_egg","localizedName":"Zombie Horse Spawn Egg","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.zombie_horse_spawn_egg"},{"id":"minecraft:zombie_spawn_egg","localizedName":"Zombie Spawn Egg","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.zombie_spawn_egg"},{"id":"minecraft:zombie_villager_spawn_egg","localizedName":"Zombie Villager Spawn Egg","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.zombie_villager_spawn_egg"},{"id":"minecraft:zombified_piglin_spawn_egg","localizedName":"Zombified Piglin Spawn Egg","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.zombified_piglin_spawn_egg"}] From 7df4d984ffcd61da3a9085f4a98b9e899d38c502 Mon Sep 17 00:00:00 2001 From: Octavia Togami Date: Thu, 9 Jun 2022 17:21:11 -0700 Subject: [PATCH 54/55] [Bukkit] 1.19 Removed 1.18, 1.18.2 is still present --- settings.gradle.kts | 7 ++-- .../PaperweightWorldNativeAccess.java | 6 ++++ .../build.gradle.kts | 2 +- .../impl/v1_19_R1}/PaperweightAdapter.java | 36 ++++++++++--------- .../v1_19_R1}/PaperweightDataConverters.java | 30 ++++++++-------- .../impl/v1_19_R1}/PaperweightFakePlayer.java | 8 ++--- .../PaperweightWorldNativeAccess.java | 8 +++-- worldedit-bukkit/build.gradle.kts | 3 +- .../bukkit/BukkitBlockCategoryRegistry.java | 5 ++- 9 files changed, 58 insertions(+), 47 deletions(-) rename worldedit-bukkit/adapters/{adapter-1.18 => adapter-1.19}/build.gradle.kts (75%) rename worldedit-bukkit/adapters/{adapter-1.18/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/v1_18_R1 => adapter-1.19/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/v1_19_R1}/PaperweightAdapter.java (97%) rename worldedit-bukkit/adapters/{adapter-1.18/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/v1_18_R1 => adapter-1.19/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/v1_19_R1}/PaperweightDataConverters.java (99%) rename worldedit-bukkit/adapters/{adapter-1.18/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/v1_18_R1 => adapter-1.19/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/v1_19_R1}/PaperweightFakePlayer.java (92%) rename worldedit-bukkit/adapters/{adapter-1.18/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/v1_18_R1 => adapter-1.19/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/v1_19_R1}/PaperweightWorldNativeAccess.java (96%) diff --git a/settings.gradle.kts b/settings.gradle.kts index 4c765cf979..f63b90c5c9 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -2,10 +2,9 @@ rootProject.name = "worldedit" include("worldedit-libs") -include("worldedit-bukkit:adapters:adapter-legacy") -include("worldedit-bukkit:adapters:adapter-1.17.1") -include("worldedit-bukkit:adapters:adapter-1.18") -include("worldedit-bukkit:adapters:adapter-1.18.2") +listOf("legacy", "1.17.1", "1.18.2", "1.19").forEach { + include("worldedit-bukkit:adapters:adapter-$it") +} listOf("bukkit", "core", "sponge", "fabric", "forge", "cli").forEach { include("worldedit-libs:$it") diff --git a/worldedit-bukkit/adapters/adapter-1.18.2/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/v1_18_R2/PaperweightWorldNativeAccess.java b/worldedit-bukkit/adapters/adapter-1.18.2/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/v1_18_R2/PaperweightWorldNativeAccess.java index aa80f500e7..769b889887 100644 --- a/worldedit-bukkit/adapters/adapter-1.18.2/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/v1_18_R2/PaperweightWorldNativeAccess.java +++ b/worldedit-bukkit/adapters/adapter-1.18.2/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/v1_18_R2/PaperweightWorldNativeAccess.java @@ -153,6 +153,12 @@ public void notifyNeighbors(BlockPos pos, net.minecraft.world.level.block.state. } } + @Override + public void updateBlock(BlockPos pos, net.minecraft.world.level.block.state.BlockState oldState, net.minecraft.world.level.block.state.BlockState newState) { + ServerLevel world = getWorld(); + newState.onPlace(world, pos, oldState, false); + } + private void fireNeighborChanged(BlockPos pos, ServerLevel world, Block block, BlockPos neighborPos) { world.getBlockState(neighborPos).neighborChanged(world, neighborPos, block, pos, false); } diff --git a/worldedit-bukkit/adapters/adapter-1.18/build.gradle.kts b/worldedit-bukkit/adapters/adapter-1.19/build.gradle.kts similarity index 75% rename from worldedit-bukkit/adapters/adapter-1.18/build.gradle.kts rename to worldedit-bukkit/adapters/adapter-1.19/build.gradle.kts index 3ccca4fe4f..ae4c6a2373 100644 --- a/worldedit-bukkit/adapters/adapter-1.18/build.gradle.kts +++ b/worldedit-bukkit/adapters/adapter-1.19/build.gradle.kts @@ -2,5 +2,5 @@ applyPaperweightAdapterConfiguration() dependencies { // https://papermc.io/repo/service/rest/repository/browse/maven-public/io/papermc/paper/dev-bundle/ - paperDevBundle("1.18.1-R0.1-20211221.093324-19") + paperDevBundle("1.19-R0.1-20220609.175204-1") } diff --git a/worldedit-bukkit/adapters/adapter-1.18/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/v1_18_R1/PaperweightAdapter.java b/worldedit-bukkit/adapters/adapter-1.19/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/v1_19_R1/PaperweightAdapter.java similarity index 97% rename from worldedit-bukkit/adapters/adapter-1.18/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/v1_18_R1/PaperweightAdapter.java rename to worldedit-bukkit/adapters/adapter-1.19/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/v1_19_R1/PaperweightAdapter.java index b9399ca98b..181e609021 100644 --- a/worldedit-bukkit/adapters/adapter-1.18/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/v1_18_R1/PaperweightAdapter.java +++ b/worldedit-bukkit/adapters/adapter-1.19/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/v1_19_R1/PaperweightAdapter.java @@ -17,7 +17,7 @@ * along with this program. If not, see . */ -package com.sk89q.worldedit.bukkit.adapter.impl.v1_18_R1; +package com.sk89q.worldedit.bukkit.adapter.impl.v1_19_R1; import com.google.common.cache.CacheBuilder; import com.google.common.cache.CacheLoader; @@ -122,13 +122,13 @@ import org.bukkit.Location; import org.bukkit.World.Environment; import org.bukkit.block.data.BlockData; -import org.bukkit.craftbukkit.v1_18_R1.CraftServer; -import org.bukkit.craftbukkit.v1_18_R1.CraftWorld; -import org.bukkit.craftbukkit.v1_18_R1.block.data.CraftBlockData; -import org.bukkit.craftbukkit.v1_18_R1.entity.CraftEntity; -import org.bukkit.craftbukkit.v1_18_R1.entity.CraftPlayer; -import org.bukkit.craftbukkit.v1_18_R1.inventory.CraftItemStack; -import org.bukkit.craftbukkit.v1_18_R1.util.CraftMagicNumbers; +import org.bukkit.craftbukkit.v1_19_R1.CraftServer; +import org.bukkit.craftbukkit.v1_19_R1.CraftWorld; +import org.bukkit.craftbukkit.v1_19_R1.block.data.CraftBlockData; +import org.bukkit.craftbukkit.v1_19_R1.entity.CraftEntity; +import org.bukkit.craftbukkit.v1_19_R1.entity.CraftPlayer; +import org.bukkit.craftbukkit.v1_19_R1.inventory.CraftItemStack; +import org.bukkit.craftbukkit.v1_19_R1.util.CraftMagicNumbers; import org.bukkit.entity.Player; import org.bukkit.event.entity.CreatureSpawnEvent.SpawnReason; import org.bukkit.generator.ChunkGenerator; @@ -153,7 +153,6 @@ import java.util.TreeMap; import java.util.concurrent.CompletableFuture; import java.util.concurrent.ExecutionException; -import java.util.concurrent.ForkJoinPool; import java.util.logging.Level; import java.util.logging.Logger; import java.util.stream.Collectors; @@ -180,8 +179,8 @@ public PaperweightAdapter() throws NoSuchFieldException, NoSuchMethodException { CraftServer.class.cast(Bukkit.getServer()); int dataVersion = CraftMagicNumbers.INSTANCE.getDataVersion(); - if (dataVersion != 2860 && dataVersion != 2865) { - throw new UnsupportedClassVersionError("Not 1.18(.1)!"); + if (dataVersion != 3105) { + throw new UnsupportedClassVersionError("Not 1.19!"); } serverWorldsField = CraftServer.class.getDeclaredField("worlds"); @@ -194,11 +193,11 @@ public PaperweightAdapter() throws NoSuchFieldException, NoSuchMethodException { getChunkFutureMethod.setAccessible(true); chunkProviderExecutorField = ServerChunkCache.class.getDeclaredField( - Refraction.pickName("mainThreadProcessor", "h") + Refraction.pickName("mainThreadProcessor", "g") ); chunkProviderExecutorField.setAccessible(true); - new PaperweightDataConverters(CraftMagicNumbers.INSTANCE.getDataVersion(), this).build(ForkJoinPool.commonPool()); + new PaperweightDataConverters(CraftMagicNumbers.INSTANCE.getDataVersion(), this).buildUnoptimized(); Watchdog watchdog; try { @@ -647,14 +646,17 @@ private void doRegen(org.bukkit.World bukkitWorld, Region region, Extent extent, originalWorld.getServer().executor, session, newWorldData, originalWorld.dimension(), - originalWorld.dimensionType(), + new LevelStem( + originalWorld.dimensionTypeRegistration(), + newOpts.dimensions().get(worldDimKey).generator() + ), new NoOpWorldLoadListener(), - newOpts.dimensions().get(worldDimKey).generator(), originalWorld.isDebug(), seed, ImmutableList.of(), false, - env, gen, + env, + gen, bukkitWorld.getBiomeProvider() ); try { @@ -721,7 +723,7 @@ private void regenForWorld(Region region, Extent extent, ServerLevel serverWorld } extent.setBlock(vec, state.toBaseBlock()); if (options.shouldRegenBiomes()) { - Biome origBiome = chunk.getNoiseBiome(vec.getX(), vec.getY(), vec.getZ()); + Biome origBiome = chunk.getNoiseBiome(vec.getX(), vec.getY(), vec.getZ()).value(); BiomeType adaptedBiome = adapt(serverWorld, origBiome); if (adaptedBiome != null) { extent.setBiome(vec, adaptedBiome); diff --git a/worldedit-bukkit/adapters/adapter-1.18/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/v1_18_R1/PaperweightDataConverters.java b/worldedit-bukkit/adapters/adapter-1.19/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/v1_19_R1/PaperweightDataConverters.java similarity index 99% rename from worldedit-bukkit/adapters/adapter-1.18/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/v1_18_R1/PaperweightDataConverters.java rename to worldedit-bukkit/adapters/adapter-1.19/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/v1_19_R1/PaperweightDataConverters.java index 7d5c4ad799..85602c2503 100644 --- a/worldedit-bukkit/adapters/adapter-1.18/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/v1_18_R1/PaperweightDataConverters.java +++ b/worldedit-bukkit/adapters/adapter-1.19/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/v1_19_R1/PaperweightDataConverters.java @@ -17,7 +17,7 @@ * along with this program. If not, see . */ -package com.sk89q.worldedit.bukkit.adapter.impl.v1_18_R1; +package com.sk89q.worldedit.bukkit.adapter.impl.v1_19_R1; import com.google.common.collect.Lists; import com.google.common.collect.Maps; @@ -39,7 +39,6 @@ import net.minecraft.nbt.NbtOps; import net.minecraft.network.chat.Component; import net.minecraft.network.chat.MutableComponent; -import net.minecraft.network.chat.TextComponent; import net.minecraft.resources.ResourceLocation; import net.minecraft.util.GsonHelper; import net.minecraft.util.StringUtil; @@ -214,10 +213,15 @@ public TypeReference getDFUType() { // Called after fixers are built and ready for FIXING @Override - public DataFixer build(final Executor executor) { + public DataFixer buildUnoptimized() { return this.fixer = new WrappedDataFixer(DataFixers.getDataFixer()); } + @Override + public DataFixer buildOptimized(Executor executor) { + return buildUnoptimized(); + } + @SuppressWarnings("unchecked") private class WrappedDataFixer implements DataFixer { private final DataFixer realFixer; @@ -804,8 +808,6 @@ public net.minecraft.nbt.CompoundTag inspect(net.minecraft.nbt.CompoundTag cmp, private static class DataInspectorEntity implements DataInspector { - private static final Logger a = LogManager.getLogger(PaperweightDataConverters.class); - DataInspectorEntity() { } @@ -1889,12 +1891,12 @@ public net.minecraft.nbt.CompoundTag convert(net.minecraft.nbt.CompoundTag cmp) if (!"null".equals(s) && !StringUtil.isNullOrEmpty(s)) { if ((s.charAt(0) != 34 || s.charAt(s.length() - 1) != 34) && (s.charAt(0) != 123 || s.charAt(s.length() - 1) != 125)) { - object = new TextComponent(s); + object = Component.literal(s); } else { try { object = GsonHelper.fromJson(DataConverterSignText.a, s, Component.class, true); if (object == null) { - object = new TextComponent(""); + object = Component.literal(""); } } catch (JsonParseException jsonparseexception) { ; @@ -1917,11 +1919,11 @@ public net.minecraft.nbt.CompoundTag convert(net.minecraft.nbt.CompoundTag cmp) } if (object == null) { - object = new TextComponent(s); + object = Component.literal(s); } } } else { - object = new TextComponent(""); + object = Component.literal(""); } nbttaglist.set(i, net.minecraft.nbt.StringTag.valueOf(Component.Serializer.toJson(object))); @@ -2501,7 +2503,7 @@ private static class DataConverterSignText implements DataConverter { public static final Gson a = new GsonBuilder().registerTypeAdapter(Component.class, new JsonDeserializer() { MutableComponent a(JsonElement jsonelement, Type type, JsonDeserializationContext jsondeserializationcontext) throws JsonParseException { if (jsonelement.isJsonPrimitive()) { - return new TextComponent(jsonelement.getAsString()); + return Component.literal(jsonelement.getAsString()); } else if (jsonelement.isJsonArray()) { JsonArray jsonarray = jsonelement.getAsJsonArray(); MutableComponent ichatbasecomponent = null; @@ -2553,12 +2555,12 @@ private void convert(net.minecraft.nbt.CompoundTag nbttagcompound, String s) { if (!"null".equals(s1) && !StringUtil.isNullOrEmpty(s1)) { if ((s1.charAt(0) != 34 || s1.charAt(s1.length() - 1) != 34) && (s1.charAt(0) != 123 || s1.charAt(s1.length() - 1) != 125)) { - object = new TextComponent(s1); + object = Component.literal(s1); } else { try { object = GsonHelper.fromJson(DataConverterSignText.a, s1, Component.class, true); if (object == null) { - object = new TextComponent(""); + object = Component.literal(""); } } catch (JsonParseException jsonparseexception) { ; @@ -2581,11 +2583,11 @@ private void convert(net.minecraft.nbt.CompoundTag nbttagcompound, String s) { } if (object == null) { - object = new TextComponent(s1); + object = Component.literal(s1); } } } else { - object = new TextComponent(""); + object = Component.literal(""); } nbttagcompound.putString(s, Component.Serializer.toJson(object)); diff --git a/worldedit-bukkit/adapters/adapter-1.18/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/v1_18_R1/PaperweightFakePlayer.java b/worldedit-bukkit/adapters/adapter-1.19/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/v1_19_R1/PaperweightFakePlayer.java similarity index 92% rename from worldedit-bukkit/adapters/adapter-1.18/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/v1_18_R1/PaperweightFakePlayer.java rename to worldedit-bukkit/adapters/adapter-1.19/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/v1_19_R1/PaperweightFakePlayer.java index 427c57a598..fb791f3e5c 100644 --- a/worldedit-bukkit/adapters/adapter-1.18/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/v1_18_R1/PaperweightFakePlayer.java +++ b/worldedit-bukkit/adapters/adapter-1.19/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/v1_19_R1/PaperweightFakePlayer.java @@ -17,7 +17,7 @@ * along with this program. If not, see . */ -package com.sk89q.worldedit.bukkit.adapter.impl.v1_18_R1; +package com.sk89q.worldedit.bukkit.adapter.impl.v1_19_R1; import com.mojang.authlib.GameProfile; import net.minecraft.network.chat.ChatType; @@ -41,7 +41,7 @@ class PaperweightFakePlayer extends ServerPlayer { private static final Vec3 ORIGIN = new Vec3(0.0D, 0.0D, 0.0D); PaperweightFakePlayer(ServerLevel world) { - super(world.getServer(), world, FAKE_WORLDEDIT_PROFILE); + super(world.getServer(), world, FAKE_WORLDEDIT_PROFILE, null); } @Override @@ -75,10 +75,6 @@ public void updateOptions(ServerboundClientInformationPacket packet) { public void displayClientMessage(Component message, boolean actionBar) { } - @Override - public void sendMessage(Component message, ChatType type, UUID sender) { - } - @Override public void awardStat(Stat stat, int amount) { } diff --git a/worldedit-bukkit/adapters/adapter-1.18/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/v1_18_R1/PaperweightWorldNativeAccess.java b/worldedit-bukkit/adapters/adapter-1.19/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/v1_19_R1/PaperweightWorldNativeAccess.java similarity index 96% rename from worldedit-bukkit/adapters/adapter-1.18/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/v1_18_R1/PaperweightWorldNativeAccess.java rename to worldedit-bukkit/adapters/adapter-1.19/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/v1_19_R1/PaperweightWorldNativeAccess.java index 4401143606..faf0cf8487 100644 --- a/worldedit-bukkit/adapters/adapter-1.18/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/v1_18_R1/PaperweightWorldNativeAccess.java +++ b/worldedit-bukkit/adapters/adapter-1.19/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/v1_19_R1/PaperweightWorldNativeAccess.java @@ -17,7 +17,7 @@ * along with this program. If not, see . */ -package com.sk89q.worldedit.bukkit.adapter.impl.v1_18_R1; +package com.sk89q.worldedit.bukkit.adapter.impl.v1_19_R1; import com.sk89q.jnbt.CompoundTag; import com.sk89q.worldedit.bukkit.BukkitAdapter; @@ -33,8 +33,8 @@ import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.entity.BlockEntity; import net.minecraft.world.level.chunk.LevelChunk; -import org.bukkit.craftbukkit.v1_18_R1.CraftWorld; -import org.bukkit.craftbukkit.v1_18_R1.block.data.CraftBlockData; +import org.bukkit.craftbukkit.v1_19_R1.CraftWorld; +import org.bukkit.craftbukkit.v1_19_R1.block.data.CraftBlockData; import org.bukkit.event.block.BlockPhysicsEvent; import java.lang.ref.WeakReference; @@ -159,6 +159,8 @@ public void updateBlock(BlockPos pos, net.minecraft.world.level.block.state.Bloc newState.onPlace(world, pos, oldState, false); } + // Not sure why neighborChanged is deprecated + @SuppressWarnings("deprecation") private void fireNeighborChanged(BlockPos pos, ServerLevel world, Block block, BlockPos neighborPos) { world.getBlockState(neighborPos).neighborChanged(world, neighborPos, block, pos, false); } diff --git a/worldedit-bukkit/build.gradle.kts b/worldedit-bukkit/build.gradle.kts index 9f8205a970..ea39552eee 100644 --- a/worldedit-bukkit/build.gradle.kts +++ b/worldedit-bukkit/build.gradle.kts @@ -47,7 +47,8 @@ dependencies { "compileOnly"("org.jetbrains:annotations:20.1.0") "compileOnly"("io.papermc.paper:paper-api:1.17-R0.1-SNAPSHOT") { - exclude(group = "org.slf4j", module = "slf4j-api") + exclude("org.slf4j", "slf4j-api") + exclude("junit", "junit") } "implementation"("io.papermc:paperlib:1.0.7") "compileOnly"("com.sk89q:dummypermscompat:1.10") diff --git a/worldedit-bukkit/src/main/java/com/sk89q/worldedit/bukkit/BukkitBlockCategoryRegistry.java b/worldedit-bukkit/src/main/java/com/sk89q/worldedit/bukkit/BukkitBlockCategoryRegistry.java index 34d2476096..20dede378e 100644 --- a/worldedit-bukkit/src/main/java/com/sk89q/worldedit/bukkit/BukkitBlockCategoryRegistry.java +++ b/worldedit-bukkit/src/main/java/com/sk89q/worldedit/bukkit/BukkitBlockCategoryRegistry.java @@ -26,6 +26,7 @@ import org.bukkit.NamespacedKey; import org.bukkit.Tag; +import java.util.Collections; import java.util.Set; import java.util.stream.Collectors; @@ -44,7 +45,9 @@ public Set getCategorisedByName(String category) { String key = split.length > 1 ? split[1] : category; @SuppressWarnings("deprecation") Tag tag = Bukkit.getTag(Tag.REGISTRY_BLOCKS, new NamespacedKey(namespace, key), Material.class); - checkNotNull(tag); + if (tag == null) { + return Collections.emptySet(); + } return getFromBukkitTag(tag); } } From 3433e40d51753ea1e95911df42bdf4d2726f9488 Mon Sep 17 00:00:00 2001 From: Octavia Togami Date: Fri, 10 Jun 2022 17:07:24 -0700 Subject: [PATCH 55/55] Fix CB watchdog, fail early if it breaks --- .../bukkit/adapter/impl/v1_19_R1/PaperweightAdapter.java | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/worldedit-bukkit/adapters/adapter-1.19/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/v1_19_R1/PaperweightAdapter.java b/worldedit-bukkit/adapters/adapter-1.19/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/v1_19_R1/PaperweightAdapter.java index 181e609021..3056c309ae 100644 --- a/worldedit-bukkit/adapters/adapter-1.19/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/v1_19_R1/PaperweightAdapter.java +++ b/worldedit-bukkit/adapters/adapter-1.19/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/v1_19_R1/PaperweightAdapter.java @@ -963,8 +963,11 @@ private static class MojangWatchdog implements Watchdog { MojangWatchdog(DedicatedServer server) throws NoSuchFieldException { this.server = server; Field tickField = MinecraftServer.class.getDeclaredField( - Refraction.pickName("nextTickTime", "ao") + Refraction.pickName("nextTickTime", "ag") ); + if (tickField.getType() != long.class) { + throw new IllegalStateException("nextTickTime is not a long field, mapping is likely incorrect"); + } tickField.setAccessible(true); this.tickField = tickField; }